aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Game/je_scene.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-23 12:23:58 +0800
committerchai <chaifix@163.com>2018-10-23 12:23:58 +0800
commit40fc27154fe754181934dc7ee31375e6bdfb33fc (patch)
tree897ad98d759bc308ef66561181ba88b85f2ccd47 /src/libjin/Game/je_scene.h
parent1480c9445100075c9e1a894eb07c0ef727b509a1 (diff)
*merge from minimal
Diffstat (limited to 'src/libjin/Game/je_scene.h')
-rw-r--r--src/libjin/Game/je_scene.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/libjin/Game/je_scene.h b/src/libjin/Game/je_scene.h
new file mode 100644
index 0000000..f510a1f
--- /dev/null
+++ b/src/libjin/Game/je_scene.h
@@ -0,0 +1,73 @@
+#ifndef __JE_GAME_SCENE_H
+#define __JE_GAME_SCENE_H
+
+#include "../core/je_configuration.h"
+#if defined(jin_game)
+
+#include <map>
+#include <list>
+
+#include "je_entity.h"
+
+namespace JinEngine
+{
+ namespace Game
+ {
+
+ ///
+ /// Handle all entities.
+ ///
+ class Scene
+ {
+ public:
+ ///
+ ///
+ ///
+ void addEntity(Entity* entity);
+
+ ///
+ ///
+ ///
+ EntityList& getEntitiesByTag(uint64 tag);
+
+ ///
+ ///
+ ///
+ EntityList& getEntitiesByLayer(uint32 layer);
+
+ ///
+ ///
+ ///
+ void setEntitiesActiveByTag(uint64 tag);
+
+ ///
+ ///
+ ///
+ void setEntitiesActiveByLayer(uint32 layer);
+
+ ///
+ ///
+ ///
+ void removeEntitiesByLayer(uint32 layer);
+
+ ///
+ ///
+ ///
+ void removeEntitiesByTag(uint64 tag);
+
+ protected:
+ // all entities
+ EntitySet entities;
+ // all entities grouped by layer, render order
+ std::map<uint32, EntityList> layers;
+ // all entities grouped by tag
+ std::map<uint64, EntityList> tags;
+
+ };
+
+ } // namespace Game
+} // namespace JinEngine
+
+#endif // jin_game
+
+#endif \ No newline at end of file