/* Author: Josh Holtrop * DornerWorks screensaver * A slightly more interesting screensaver mode involving * colliding DW logos contained in a cube that spins while * gravity randomly changes direction */ #ifndef TUMBLING_LOGOS_H #define TUMBLING_LOGOS_H #include "SSMain.h" #include "SSMode.h" #include "LogoBox.h" #include #include #define TUMBLE_BOX_CELLS 4 class TumblingLogos : public SSMode { public: TumblingLogos(SSMain * _SSMain); ~TumblingLogos(); void update(); protected: void createWorld(); void worldStep(); void changeGravity(); friend void TumblingLogos_collide_callback(void * data, dGeomID o1, dGeomID o2); dWorldID m_world; dSpaceID m_space; double m_logoSize; double m_boxSize; dJointGroupID m_contactJointGroup; std::vector m_logos; Uint32 m_lastGravityChangeTime; Uint32 m_lastElapsed; }; #endif