absence_thelab
annotate src/demosystem/demosys.h @ 0:1cffe3409164
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 23 Oct 2014 01:46:07 +0300 |
parents | |
children |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef _DEMOSYS_H_ |
nuclear@0 | 2 #define _DEMOSYS_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include <list> |
nuclear@0 | 5 #include "typedefs.h" |
nuclear@0 | 6 #include "timing.h" |
nuclear@0 | 7 |
nuclear@0 | 8 #ifdef NUC3D_API_OPENGL |
nuclear@0 | 9 #include "n3dgl/nuc3dhw.h" |
nuclear@0 | 10 #else |
nuclear@0 | 11 #include "3deng/3deng.h" |
nuclear@0 | 12 #endif |
nuclear@0 | 13 |
nuclear@0 | 14 enum {TIMETYPE_ABSOLUTE, TIMETYPE_RELATIVE}; |
nuclear@0 | 15 enum RenderMode {RenderModeNormal, RenderModeTexture}; |
nuclear@0 | 16 |
nuclear@0 | 17 // ----- Abstract Base Class Part ----- |
nuclear@0 | 18 class Part { |
nuclear@0 | 19 protected: |
nuclear@0 | 20 GraphicsContext *gc; |
nuclear@0 | 21 Scene *scene; // REMOVE |
nuclear@0 | 22 |
nuclear@0 | 23 dword StartTime, EndTime, Duration; // in milliseconds |
nuclear@0 | 24 Timer timer; // local part timer |
nuclear@0 | 25 |
nuclear@0 | 26 Texture *RenderTexture; |
nuclear@0 | 27 RenderMode rmode; |
nuclear@0 | 28 |
nuclear@0 | 29 bool paused; |
nuclear@0 | 30 |
nuclear@0 | 31 public: |
nuclear@0 | 32 |
nuclear@0 | 33 Part(); |
nuclear@0 | 34 |
nuclear@0 | 35 virtual void SetGraphicsContext(GraphicsContext *gc); |
nuclear@0 | 36 virtual GraphicsContext *GetGraphicsContext(); |
nuclear@0 | 37 |
nuclear@0 | 38 virtual void SetTimingAbs(dword start, dword end); |
nuclear@0 | 39 virtual void SetTimingRel(dword start, dword dur); |
nuclear@0 | 40 virtual void Pause(); |
nuclear@0 | 41 virtual void Resume(); |
nuclear@0 | 42 |
nuclear@0 | 43 virtual dword GetStartTime() const; |
nuclear@0 | 44 virtual dword GetEndTime() const; |
nuclear@0 | 45 virtual dword GetDuration() const; |
nuclear@0 | 46 virtual dword GetTimePosition() const; |
nuclear@0 | 47 virtual float GetParametricPosition() const; |
nuclear@0 | 48 |
nuclear@0 | 49 virtual void SetRenderMode(RenderMode rmode); |
nuclear@0 | 50 virtual void SetRenderTexture(Texture *tex); |
nuclear@0 | 51 |
nuclear@0 | 52 virtual RenderMode GetRenderMode() const; |
nuclear@0 | 53 virtual Texture *GetRenderTexture() const; |
nuclear@0 | 54 |
nuclear@0 | 55 virtual void Launch(); |
nuclear@0 | 56 virtual void ShutDown(); |
nuclear@0 | 57 virtual void MainLoop() = 0; |
nuclear@0 | 58 |
nuclear@0 | 59 virtual Scene *GetScene(); |
nuclear@0 | 60 }; |
nuclear@0 | 61 |
nuclear@0 | 62 enum DemoState {DemoStateRunning, DemoStateStopped, DemoStatePaused}; |
nuclear@0 | 63 |
nuclear@0 | 64 class DemoSystem { |
nuclear@0 | 65 private: |
nuclear@0 | 66 GraphicsContext *gc; |
nuclear@0 | 67 |
nuclear@0 | 68 std::list<Part*> parts; // list of all parts |
nuclear@0 | 69 std::list<Part*> active; // currently running |
nuclear@0 | 70 std::list<Part*> inactive; // waiting to run |
nuclear@0 | 71 |
nuclear@0 | 72 Timer timer; // global demo timer |
nuclear@0 | 73 DemoState state; |
nuclear@0 | 74 |
nuclear@0 | 75 public: |
nuclear@0 | 76 |
nuclear@0 | 77 DemoSystem(GraphicsContext *gc); |
nuclear@0 | 78 |
nuclear@0 | 79 void AddPart(Part *part); |
nuclear@0 | 80 Part *GetActivePart(); |
nuclear@0 | 81 |
nuclear@0 | 82 void Run(); |
nuclear@0 | 83 void Pause(); |
nuclear@0 | 84 void Resume(); |
nuclear@0 | 85 void Stop(); |
nuclear@0 | 86 |
nuclear@0 | 87 void Update(); |
nuclear@0 | 88 |
nuclear@0 | 89 int LoadTiming(const char *filename); |
nuclear@0 | 90 }; |
nuclear@0 | 91 |
nuclear@0 | 92 |
nuclear@0 | 93 /////////////// exceptions ////////////// |
nuclear@0 | 94 class InvalidParam{}; |
nuclear@0 | 95 |
nuclear@0 | 96 |
nuclear@0 | 97 #endif //_DEMOSYS_H_ |