Scene.pkg 9.4 KB

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