00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __SCRIPTSCENE_H_
00013 #define __SCRIPTSCENE_H_
00014
00015 #include <map>
00016
00017 #include "scriptscenemanager.h"
00018
00019 #ifdef __WINDOWS__
00020 #pragma warning(disable:4290)
00021 #endif
00022
00023 namespace VRUT
00024 {
00025 class ScriptSceneManager;
00026 class ScriptNode;
00027
00029 class ScriptScene
00030 {
00031 private:
00033 class NodeIdent
00034 {
00035 public:
00036 SCENE_ID sceneID;
00037 NODE_ID nodeID;
00038
00039 NodeIdent(SCENE_ID sid, NODE_ID nid) : sceneID(sid), nodeID(nid) {}
00040 bool operator==(const NodeIdent & ident) const
00041 {
00042 return (sceneID == ident.sceneID && nodeID == ident.nodeID);
00043 }
00044
00045 bool operator<(const NodeIdent & ident) const
00046 {
00047 if (sceneID == ident.sceneID)
00048 return nodeID < ident.nodeID;
00049 else
00050 return sceneID < ident.sceneID;
00051 }
00052 };
00053
00055 ScriptSceneManager *ssm;
00056
00058 Kernel *kernel;
00059
00061 SCENE_ID sceneID;
00062
00064 std::map<NodeIdent, ScriptNode *> nodes;
00065
00067 Scene *getScene() throw(SceneScriptException);
00068
00070 ScriptNode *getScriptNode(NODE_ID nedeID) throw(SceneScriptException);
00071
00073 void deleteScriptNode(NODE_ID nodeID);
00074
00075 public:
00076 ScriptScene(ScriptSceneManager *_ssm, SCENE_ID id) : ssm(_ssm), kernel(_ssm->kernel), sceneID(id) {}
00077
00078 ~ScriptScene();
00079
00080 NODE_ID GetRootID() throw(SceneScriptException)
00081 {
00082 return getScene()->GetRootID();
00083 }
00084
00085 ScriptNode *GetNode(NODE_ID nodeID) throw(SceneScriptException)
00086 {
00087 return getScriptNode(nodeID);
00088 }
00089
00090 NODE_ID GetNodeID(const wxString &uid) throw(SceneScriptException)
00091 {
00092 return getScene()->GetNodeID(uid);
00093 }
00094
00095 void GetNodeIDs(std::vector< NODE_ID > *nodes) throw(SceneScriptException)
00096 {
00097 getScene()->GetNodeIDs(nodes);
00098 }
00099
00100 void SetTransformation(NODE_ID nodeID, const MATRIX &m) throw(SceneScriptException)
00101 {
00102 getScene()->SetTransformation(nodeID, m);
00103 }
00104
00105 void Transform(NODE_ID nodeID, const MATRIX &matrix) throw(SceneScriptException)
00106 {
00107 getScene()->Transform(nodeID, matrix);
00108 }
00109
00110 void UpdateTransformation(NODE_ID nodeID) throw(SceneScriptException)
00111 {
00112 getScene()->UpdateTransformation(nodeID);
00113 }
00114
00115 void TranslateAbs(NODE_ID nodeID, const VECTOR3 &transl) throw(SceneScriptException)
00116 {
00117 getScene()->TranslateAbs(nodeID, transl);
00118 }
00119
00120 friend class ScriptNode;
00121 };
00122 }
00123
00124 #endif