Scene.pkg 9.2 KB

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