well, it was not inspired by your clock...
I already worked some time on it, before you started your thread...
the demo and source is just my very first attempt and it's a remake so it doesn't depend on other Extensions (what the final version does), so anybody can use it...
when I release the final clock, you'll see how many work was involved !!!
just some keywords:
use real time/date or game time/date
sync clocks with another clock
use different fonts for any digital representation
use textures for all gui clock elements (body and needles)
show digital clock as 12h or 24h clock
shows day name of any date you set
completely serialized (load/saveScene and load/saveGUI)
(argh, date reminds me to implement one final feature: negative years shall be shown with "bc", currently they are just negative)
and here the lists of all (public) functions so you can have an overview...
GUI-Clock:
Code: Select all
virtual void setBodyTexture(video::ITexture* texture);
virtual void setNeedleTexture(video::ITexture* txtH, video::ITexture* txtM, video::ITexture* txtS);
virtual void setSize(core::dimension2d<s32> size);
virtual void setPosition(core::position2d<s32> pos);
virtual void setRect(core::rect<s32> rect);
virtual void setTime(u32 h, u32 m, u32 s);
virtual bool getGameTimeIsAM();
virtual void setShowAnalogSeconds(bool showS);
virtual bool getShowAnalogSeconds();
virtual void setShowDigitalSeconds(bool showS);
virtual bool getShowDigitalSeconds();
virtual void setUseRealTime(bool useRT);
virtual bool getUseRealTime();
virtual void setIs12hClock(bool use12h);
virtual bool getIs12hClock();
virtual void setAutoUpdate(bool doAU);
virtual bool getAutoUpdate();
virtual void setGameDate(s32 y, u32 m, u32 d);
virtual void setGameDateYear(s32 y);
virtual s32 getGameDateYear();
virtual void setGameDateMonth(u32 m);
virtual u32 getGameDateMonth();
//
virtual s32 getWeekDay(s32 y, u32 m, u32 d);
virtual core::stringc getWeekDayName(s32 y, u32 m, u32 d);
virtual core::stringw getWeekDayNameW(s32 y, u32 m, u32 d);
//
virtual core::stringc getGameDateMonthS();
virtual core::stringw getGameDateMonthW();
virtual void setGameDateMonthDay(u32 d);
virtual u32 getGameDateMonthDay();
virtual u32 getGameDateWeekDay();
virtual core::stringc getGameDateWeekDayS();
virtual core::stringw getGameDateWeekDayW();
virtual core::stringc getGameDateString();
virtual core::stringw getGameDateStringW();
//
virtual void movePositionDateTo(core::position2di p);
virtual void setDateFonts(IGUIFont* f1, IGUIFont* f2, IGUIFont* f3, IGUIFont* f4);
//
virtual void setShow_DayName(bool s);
virtual bool getShow_DayName();
virtual void setFont_DayName(IGUIFont* f);
virtual IGUIFont* getFont_DayName();
virtual void setPosition_DayName(core::position2di p);
virtual core::position2di getPosition_DayName();
virtual void setColor_DayName(video::SColor c);
virtual video::SColor getColor_DayName();
//
virtual void setShow_Day(bool s);
virtual bool getShow_Day();
virtual void setFont_Day(IGUIFont* f);
virtual IGUIFont* getFont_Day();
virtual void setPosition_Day(core::position2di p);
virtual core::position2di getPosition_Day();
virtual void setColor_Day(video::SColor c);
virtual video::SColor getColor_Day();
//
virtual void setShow_Month(bool s);
virtual bool getShow_Month();
virtual void setFont_Month(IGUIFont* f);
virtual IGUIFont* getFont_Month();
virtual void setPosition_Month(core::position2di p);
virtual core::position2di getPosition_Month();
virtual void setColor_Month(video::SColor c);
virtual video::SColor getColor_Month();
//
virtual void setShow_Year(bool s);
virtual bool getShow_Year();
virtual void setFont_Year(IGUIFont* f);
virtual IGUIFont* getFont_Year();
virtual void setPosition_Year(core::position2di p);
virtual core::position2di getPosition_Year();
virtual void setColor_Year(video::SColor c);
virtual video::SColor getColor_Year();
//
virtual void setSecondsForDay(f32 secs);
virtual f32 getSecondsForDay();
virtual void setMinutesForDay(f32 mins);
virtual f32 getMinutesForDay();
virtual void setHoursForDay(f32 hrs);
virtual f32 getHoursForDay();
virtual void setSecondsForHour(f32 secs);
virtual f32 getSecondsForHour();
virtual void setSecondsForMinute(f32 secs);
virtual f32 getSecondsForMinute();
virtual void setUpdatesPerSecond(f32 upd);
virtual f32 getUpdatesPerSecond();
virtual void setSyncClock(IGUIClock* clock);
virtual void setSyncClock(scene::IClockSceneNode* clock);
virtual IGUIClock* getSyncGUIClock();
virtual scene::IClockSceneNode* getSyncSceneClock();
virtual u32 getGameTimeHours();
virtual u32 getGameTimeMinutes();
virtual u32 getGameTimeSeconds();
virtual f32 getGameTimeHoursFloat();
virtual f32 getGameTimeMinutesFloat();
virtual f32 getGameTimeSecondsFloat();
virtual core::stringc getGameTimeString();
virtual core::stringw getGameTimeStringW();
//
virtual void setIsPaused(bool p);
virtual bool getIsPaused();
virtual void setSmoothMovement(bool sm);
virtual bool getSmoothMovement();
virtual void setShowAnalog(bool s);
virtual bool getShowAnalog();
virtual void setShowDigital(bool s);
virtual bool getShowDigital();
virtual void setShowDigital_AMPM(bool s);
virtual bool getShowDigital_AMPM();
//
virtual void setFontDigital(IGUIFont* f);
virtual IGUIFont* getFontDigital();
virtual void setFontDigital_AMPM(IGUIFont* f);
virtual IGUIFont* getFontDigital_AMPM();
virtual void setPositionDigit_AMPM(core::position2di p);
virtual core::position2di getPositionDigit_AMPM();
virtual void setColorDigit_AMPM(video::SColor c);
virtual video::SColor getColorDigit_AMPM();
virtual void setDigitalBlinkSeconds(bool b);
virtual bool getDigitalBlinkSeconds();
virtual void movePositionDigitsTo(core::position2di p);
virtual void setPositionDigits(core::position2di pH, core::position2di pM, core::position2di pS, core::position2di pA);
virtual void setPositionDigit_H(core::position2di p);
virtual core::position2di getPositionDigit_H();
virtual void setPositionDigit_M(core::position2di p);
virtual core::position2di getPositionDigit_M();
virtual void setPositionDigit_S(core::position2di p);
virtual core::position2di getPositionDigit_S();
virtual void setColorDigits(video::SColor c);
virtual void setColorDigits(video::SColor cH, video::SColor cM, video::SColor cS);
virtual void setColorDigit_H(video::SColor c);
virtual video::SColor getColorDigit_H();
virtual void setColorDigit_M(video::SColor c);
virtual video::SColor getColorDigit_M();
virtual void setColorDigit_S(video::SColor c);
virtual video::SColor getColorDigit_S();
virtual void setRealTimeOffsetHours(s32 h);
virtual s32 getRealTimeOffsetHours();
//
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const;
virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options);
Scene-Clock:
Code: Select all
virtual void setNodes(ISceneNode* nB, ISceneNode* nH, ISceneNode* nM, ISceneNode* nS, bool removeCurrentFromScene=true);
virtual void setNodeBody(ISceneNode* nB, bool removeCurrentFromScene=true);
virtual void setNodeHour(ISceneNode* nH, bool removeCurrentFromScene=true);
virtual void setNodeMinute(ISceneNode* nM, bool removeCurrentFromScene=true);
virtual void setNodeSecond(ISceneNode* nS, bool removeCurrentFromScene=true);
virtual void setNodes(IAnimatedMesh* mB, IAnimatedMesh* mH, IAnimatedMesh* mM, IAnimatedMesh* mS, bool removeCurrentFromScene=true);
virtual void setNodeBody(IAnimatedMesh* mB, bool removeCurrentFromScene=true);
virtual void setNodeHour(IAnimatedMesh* mH, bool removeCurrentFromScene=true);
virtual void setNodeMinute(IAnimatedMesh* mM, bool removeCurrentFromScene=true);
virtual void setNodeSecond(IAnimatedMesh* mS, bool removeCurrentFromScene=true);
virtual ISceneNode* getNodeBody();
virtual ISceneNode* getNodeHour();
virtual ISceneNode* getNodeMinute();
virtual ISceneNode* getNodeSecond();
//
virtual void setRotationAxis(core::vector3df ra);
virtual core::vector3df getRotationAxis();
virtual void setTime(u32 h, u32 m, u32 s);
virtual void setUseRealTime(bool useRT);
virtual bool getUseRealTime();
virtual void setIsPaused(bool p);
virtual bool getIsPaused();
virtual void setIs12hClock(bool use12h);
virtual bool getIs12hClock();
virtual void setRealTimeOffsetH(s32 h);
virtual s32 getRealTimeOffsetH();
virtual void setAutoUpdate(bool doAU);
virtual bool getAutoUpdate();
virtual void setSecondsForDay(f32 secs);
virtual f32 getSecondsForDay();
virtual void setMinutesForDay(f32 mins);
virtual f32 getMinutesForDay();
virtual void setHoursForDay(f32 hrs);
virtual f32 getHoursForDay();
virtual void setSecondsForHour(f32 secs);
virtual f32 getSecondsForHour();
virtual void setSecondsForMinute(f32 secs);
virtual f32 getSecondsForMinute();
virtual void setUpdatesPerSecond(f32 upd);
virtual f32 getUpdatesPerSecond();
virtual void setSyncClock(IClockSceneNode* clock);
virtual void setSyncClock(gui::IGUIClock* clock);
virtual IClockSceneNode* getSyncSceneClock();
virtual gui::IGUIClock* getSyncGUIClock();
virtual u32 getGameTimeHours();
virtual u32 getGameTimeMinutes();
virtual u32 getGameTimeSeconds();
virtual f32 getGameTimeHoursFloat();
virtual f32 getGameTimeMinutesFloat();
virtual f32 getGameTimeSecondsFloat();
//
virtual s32 getWeekDay(s32 y, u32 m, u32 d);
virtual core::stringc getWeekDayName(s32 y, u32 m, u32 d);
virtual core::stringw getWeekDayNameW(s32 y, u32 m, u32 d);
//
virtual bool getGameTimeIsAM();
virtual core::stringc getGameTimeString(bool showSeconds);
virtual core::stringw getGameTimeStringW(bool showSeconds);
virtual ESCENE_NODE_TYPE getType() const;
virtual void setSmoothMovement(bool sm);
virtual bool getSmoothMovement();
virtual void setGameDate(s32 y, u32 m, u32 d);
virtual void setGameDateYear(s32 y);
virtual s32 getGameDateYear();
virtual void setGameDateMonth(u32 m);
virtual u32 getGameDateMonth();
virtual core::stringc getGameDateMonthS();
virtual core::stringw getGameDateMonthW();
virtual void setGameDateMonthDay(u32 d);
virtual u32 getGameDateMonthDay();
virtual u32 getGameDateWeekDay();
virtual core::stringc getGameDateWeekDayS();
virtual core::stringw getGameDateWeekDayW();
virtual core::stringc getGameDateString();
virtual core::stringw getGameDateStringW();
//
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const;
virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0);