Scene.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include "console/engineAPI.h"
  3. #ifndef _NETOBJECT_H_
  4. #include "sim/netObject.h"
  5. #endif
  6. #ifndef _ITICKABLE_H_
  7. #include "core/iTickable.h"
  8. #endif
  9. #include "scene/sceneObject.h"
  10. /// Scene
  11. /// This object is effectively a smart container to hold and manage any relevent scene objects and data
  12. /// used to run things.
  13. class Scene : public NetObject, public virtual ITickable
  14. {
  15. typedef NetObject Parent;
  16. bool mIsSubScene;
  17. Scene* mParentScene;
  18. Vector<Scene*> mSubScenes;
  19. Vector<SceneObject*> mPermanentObjects;
  20. Vector<SceneObject*> mDynamicObjects;
  21. S32 mSceneId;
  22. bool mIsEditing;
  23. bool mIsDirty;
  24. protected:
  25. static Scene * smRootScene;
  26. DECLARE_CONOBJECT(Scene);
  27. public:
  28. Scene();
  29. ~Scene();
  30. static void initPersistFields();
  31. virtual bool onAdd();
  32. virtual void onRemove();
  33. virtual void interpolateTick(F32 delta);
  34. virtual void processTick();
  35. virtual void advanceTime(F32 timeDelta);
  36. virtual void addObject(SimObject* object);
  37. virtual void removeObject(SimObject* object);
  38. void addDynamicObject(SceneObject* object);
  39. void removeDynamicObject(SceneObject* object);
  40. //
  41. //Networking
  42. U32 packUpdate(NetConnection *conn, U32 mask, BitStream *stream);
  43. void unpackUpdate(NetConnection *conn, BitStream *stream);
  44. //
  45. Vector<SceneObject*> getObjectsByClass(String className);
  46. static Scene *getRootScene()
  47. {
  48. if (Scene::smSceneList.empty())
  49. return nullptr;
  50. return Scene::smSceneList[0];
  51. }
  52. static Vector<Scene*> smSceneList;
  53. };