Scene.pkg 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. $#include "Scene/Scene.h"
  2. static const unsigned FIRST_REPLICATED_ID;
  3. static const unsigned LAST_REPLICATED_ID;
  4. static const unsigned FIRST_LOCAL_ID;
  5. static const unsigned LAST_LOCAL_ID;
  6. enum LoadMode
  7. {
  8. LOAD_RESOURCES_ONLY = 0,
  9. LOAD_SCENE,
  10. LOAD_SCENE_AND_RESOURCES
  11. };
  12. class Scene : public Node
  13. {
  14. Scene();
  15. virtual ~Scene();
  16. tolua_outside bool SceneLoad @ Load(File* source);
  17. tolua_outside bool SceneSave @ Save(File* dest) const;
  18. tolua_outside bool SceneLoad @ Load(const String fileName);
  19. tolua_outside bool SceneSave @ Save(const String fileName) const;
  20. tolua_outside bool SceneLoadXML @ LoadXML(File* source);
  21. tolua_outside bool SceneSaveXML @ SaveXML(File* dest, const String indentation = "\t") const;
  22. tolua_outside bool SceneLoadXML @ LoadXML(const String fileName);
  23. tolua_outside bool SceneSaveXML @ SaveXML(const String fileName, const String indentation = "\t") const;
  24. tolua_outside bool SceneLoadJSON @ LoadJSON(File* source);
  25. tolua_outside bool SceneSaveJSON @ SaveJSON(File* dest, const String indentation = "\t") const;
  26. tolua_outside bool SceneLoadJSON @ LoadJSON(const String fileName);
  27. tolua_outside bool SceneSaveJSON @ SaveJSON(const String fileName, const String indentation = "\t") const;
  28. tolua_outside Node* SceneInstantiate @ Instantiate(File* source, const Vector3& position, const Quaternion& rotation, CreateMode mode = REPLICATED);
  29. tolua_outside Node* SceneInstantiate @ Instantiate(const String fileName, const Vector3& position, const Quaternion& rotation, CreateMode mode = REPLICATED);
  30. tolua_outside Node* SceneInstantiateXML @ InstantiateXML(File* source, const Vector3& position, const Quaternion& rotation, CreateMode mode = REPLICATED);
  31. tolua_outside Node* SceneInstantiateXML @ InstantiateXML(const String fileName, const Vector3& position, const Quaternion& rotation, CreateMode mode = REPLICATED);
  32. bool LoadAsync(File* file, LoadMode mode = LOAD_SCENE_AND_RESOURCES);
  33. bool LoadAsyncXML(File* file, LoadMode mode = LOAD_SCENE_AND_RESOURCES);
  34. tolua_outside bool SceneLoadAsync @ LoadAsync(const String fileName, LoadMode mode = LOAD_SCENE_AND_RESOURCES);
  35. tolua_outside bool SceneLoadAsyncXML @ LoadAsyncXML(const String fileName, LoadMode mode = LOAD_SCENE_AND_RESOURCES);
  36. void StopAsyncLoading();
  37. void Clear(bool clearReplicated = true, bool clearLocal = true);
  38. void SetUpdateEnabled(bool enable);
  39. void SetTimeScale(float scale);
  40. void SetElapsedTime(float time);
  41. void SetSmoothingConstant(float constant);
  42. void SetSnapThreshold(float threshold);
  43. void SetAsyncLoadingMs(int ms);
  44. Node* GetNode(unsigned id) const;
  45. //Component* GetComponent(unsigned id) const;
  46. bool IsUpdateEnabled() const;
  47. bool IsAsyncLoading() const;
  48. float GetAsyncProgress() const;
  49. LoadMode GetAsyncLoadMode() const;
  50. const String GetFileName() const;
  51. unsigned GetChecksum() const;
  52. float GetTimeScale() const;
  53. float GetElapsedTime() const;
  54. float GetSmoothingConstant() const;
  55. float GetSnapThreshold() const;
  56. int GetAsyncLoadingMs() const;
  57. const String GetVarName(StringHash hash) const;
  58. void Update(float timeStep);
  59. void BeginThreadedUpdate();
  60. void EndThreadedUpdate();
  61. void DelayedMarkedDirty(Component* component);
  62. bool IsThreadedUpdate() const;
  63. unsigned GetFreeNodeID(CreateMode mode);
  64. unsigned GetFreeComponentID(CreateMode mode);
  65. void NodeAdded(Node* node);
  66. void NodeRemoved(Node* node);
  67. void ComponentAdded(Component* component);
  68. void ComponentRemoved(Component* component);
  69. void SetVarNamesAttr(const String value);
  70. String GetVarNamesAttr() const;
  71. void PrepareNetworkUpdate();
  72. void CleanupConnection(Connection* connection);
  73. void MarkNetworkUpdate(Node* node);
  74. void MarkNetworkUpdate(Component* component);
  75. void MarkReplicationDirty(Node* node);
  76. // bool GetNodesWithTag(PODVector<Node*>& dest, const String& tag) const;
  77. tolua_outside const PODVector<Node*>& SceneGetNodesWithTag @ GetNodesWithTag( const String& tag) const;
  78. tolua_property__is_set bool updateEnabled;
  79. tolua_readonly tolua_property__is_set bool asyncLoading;
  80. tolua_readonly tolua_property__get_set float asyncProgress;
  81. tolua_readonly tolua_property__get_set LoadMode asyncLoadMode;
  82. tolua_property__get_set const String fileName;
  83. tolua_readonly tolua_property__get_set unsigned checksum;
  84. tolua_property__get_set float timeScale;
  85. tolua_property__get_set float elapsedTime;
  86. tolua_property__get_set float smoothingConstant;
  87. tolua_property__get_set float snapThreshold;
  88. tolua_property__get_set int asyncLoadingMs;
  89. tolua_readonly tolua_property__is_set bool threadedUpdate;
  90. tolua_property__get_set String varNamesAttr;
  91. };
  92. ${
  93. #define TOLUA_DISABLE_tolua_SceneLuaAPI_Scene_new00
  94. static int tolua_SceneLuaAPI_Scene_new00(lua_State* tolua_S)
  95. {
  96. return ToluaNewObject<Scene>(tolua_S);
  97. }
  98. #define TOLUA_DISABLE_tolua_SceneLuaAPI_Scene_new00_local
  99. static int tolua_SceneLuaAPI_Scene_new00_local(lua_State* tolua_S)
  100. {
  101. return ToluaNewObjectGC<Scene>(tolua_S);
  102. }
  103. static bool SceneLoad(Scene* scene, File* file)
  104. {
  105. return file ? scene->Load(*file) : false;
  106. }
  107. static bool SceneSave(const Scene* scene, File* file)
  108. {
  109. return file ? scene->Save(*file) : false;
  110. }
  111. static bool SceneLoad(Scene* scene, const String& fileName)
  112. {
  113. File file(scene->GetContext(), fileName, FILE_READ);
  114. return file.IsOpen() && scene->Load(file);
  115. }
  116. static bool SceneSave(const Scene* scene, const String& fileName)
  117. {
  118. File file(scene->GetContext(), fileName, FILE_WRITE);
  119. return file.IsOpen() && scene->Save(file);
  120. }
  121. static bool SceneLoadXML(Scene* scene, File* file)
  122. {
  123. return file ? scene->LoadXML(*file) : false;
  124. }
  125. static bool SceneSaveXML(const Scene* scene, File* file, const String& indentation)
  126. {
  127. return file ? scene->SaveXML(*file, indentation) : false;
  128. }
  129. static bool SceneLoadXML(Scene* scene, const String& fileName)
  130. {
  131. File file(scene->GetContext(), fileName, FILE_READ);
  132. return file.IsOpen() && scene->LoadXML(file);
  133. }
  134. static const PODVector<Node*>& SceneGetNodesWithTag(const Scene* scene, const String& tag)
  135. {
  136. static PODVector<Node*> result;
  137. result.Clear();
  138. scene->GetNodesWithTag(result, tag);
  139. return result;
  140. }
  141. static bool SceneSaveXML(const Scene* scene, const String& fileName, const String& indentation)
  142. {
  143. File file(scene->GetContext(), fileName, FILE_WRITE);
  144. if (!file.IsOpen())
  145. return false;
  146. return scene->SaveXML(file, indentation);
  147. }
  148. static bool SceneLoadJSON(Scene* scene, File* file)
  149. {
  150. return file ? scene->LoadJSON(*file) : false;
  151. }
  152. static bool SceneSaveJSON(const Scene* scene, File* file, const String& indentation)
  153. {
  154. return file ? scene->SaveJSON(*file, indentation) : false;
  155. }
  156. static bool SceneLoadJSON(Scene* scene, const String& fileName)
  157. {
  158. File file(scene->GetContext(), fileName, FILE_READ);
  159. return file.IsOpen() && scene->LoadJSON(file);
  160. }
  161. static bool SceneSaveJSON(const Scene* scene, const String& fileName, const String& indentation)
  162. {
  163. File file(scene->GetContext(), fileName, FILE_WRITE);
  164. if (!file.IsOpen())
  165. return false;
  166. return scene->SaveJSON(file, indentation);
  167. }
  168. static bool SceneLoadAsync(Scene* scene, const String& fileName, LoadMode mode)
  169. {
  170. SharedPtr<File> file(new File(scene->GetContext(), fileName, FILE_READ));
  171. return file->IsOpen() && scene->LoadAsync(file, mode);
  172. }
  173. static bool SceneLoadAsyncXML(Scene* scene, const String& fileName, LoadMode mode)
  174. {
  175. SharedPtr<File> file(new File(scene->GetContext(), fileName, FILE_READ));
  176. return file->IsOpen() && scene->LoadAsyncXML(file, mode);
  177. }
  178. static Node* SceneInstantiate(Scene* scene, File* file, const Vector3& position, const Quaternion& rotation, CreateMode mode)
  179. {
  180. return file ? scene->Instantiate(*file, position, rotation, mode) : 0;
  181. }
  182. static Node* SceneInstantiate(Scene* scene, const String& fileName, const Vector3& position, const Quaternion& rotation, CreateMode mode)
  183. {
  184. File file(scene->GetContext(), fileName, FILE_READ);
  185. return file.IsOpen() ? scene->Instantiate(file, position, rotation, mode) : 0;
  186. }
  187. static Node* SceneInstantiateXML(Scene* scene, File* file, const Vector3& position, const Quaternion& rotation, CreateMode mode)
  188. {
  189. return file ? scene->InstantiateXML(*file, position, rotation, mode) : 0;
  190. }
  191. static Node* SceneInstantiateXML(Scene* scene, const String& fileName, const Vector3& position, const Quaternion& rotation, CreateMode mode)
  192. {
  193. File file(scene->GetContext(), fileName, FILE_READ);
  194. return file.IsOpen() ? scene->InstantiateXML(file, position, rotation, mode) : 0;
  195. }
  196. $}