00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __JSPRIVATE_H_
00012 #define __JSPRIVATE_H_
00013
00014 #include "../../core/src/scene.h"
00015
00016 namespace VRUT
00017 {
00018 struct JSEventStruct;
00019 struct JSMemoryStruct;
00020
00022 struct PrivateData
00023 {
00024 enum JSPD_TYPE {
00025 JSPD_SCENE = 23,
00026 JSPD_NODE,
00027 JSPD_MATRIX,
00028 JSPD_VECTOR,
00029 JSPD_EVENT,
00030 JSPD_MEMORY,
00031 JSPD_CHUNK
00032 };
00033
00034 virtual JSPD_TYPE GetType() const = 0;
00035
00036 virtual ~PrivateData() {}
00037 };
00038
00040 struct SceneData : public PrivateData
00041 {
00042 protected:
00043 SCENE_ID sceneID;
00044 public:
00045 SceneData(SCENE_ID id) : sceneID(id) {}
00046 SCENE_ID GetSceneID() { return sceneID; }
00047 virtual JSPD_TYPE GetType() const { return JSPD_SCENE; }
00048 };
00049
00051 struct NodeData : public SceneData
00052 {
00053 private:
00054 NODE_ID nodeID;
00055
00056 public:
00057 NodeData(SCENE_ID sid, NODE_ID nid) : SceneData(sid), nodeID(nid) {}
00058 NODE_ID GetNodeID() { return nodeID; }
00059 JSPD_TYPE GetType() const { return JSPD_NODE; }
00060 };
00061
00063 struct MatrixData : public PrivateData
00064 {
00065 MATRIX m;
00066 MatrixData() {}
00067 MatrixData(const MATRIX &_m) : m(_m) {}
00068 MatrixData(const float *_m) : m(_m) {}
00069 JSPD_TYPE GetType() const { return JSPD_MATRIX; }
00070 };
00071
00073 struct VectorData : public PrivateData
00074 {
00075 VECTOR3 v;
00076 VectorData() {}
00077 VectorData(const VECTOR3 &_v) : v(_v) {}
00078 VectorData(const float *_v) : v(_v) {}
00079 JSPD_TYPE GetType() const { return JSPD_VECTOR; }
00080 };
00081
00083 struct EventData : public PrivateData
00084 {
00085 wxCommandEvent *evt;
00086 JSEventStruct *info;
00087 EventData() : evt(NULL) {}
00088 EventData(Event::EVENT_TYPE type, JSEventStruct *i) : info(i)
00089 {
00090 evt = new wxCommandEvent(type);
00091 }
00092 EventData(wxCommandEvent *e, JSEventStruct *i) : evt(e), info(i) {}
00093 virtual ~EventData() { delete evt; }
00094 JSPD_TYPE GetType() const { return JSPD_EVENT; }
00095 };
00096
00098 struct MemoryData : public PrivateData
00099 {
00100 void *memAddr;
00101 MemoryData(void *addr) : memAddr(addr) {}
00102 virtual JSPD_TYPE GetType() const { return JSPD_MEMORY; }
00103 };
00104
00106 struct ChunkData : public MemoryData
00107 {
00108 void *chunkAddr;
00109 JSMemoryStruct *info;
00110 ChunkData(void *mAddr, void * chAddr, JSMemoryStruct *i)
00111 : MemoryData(mAddr), chunkAddr(chAddr), info(i) {}
00112 JSPD_TYPE GetType() const { return JSPD_CHUNK; }
00113 };
00114 }
00115
00116 #endif