Fission FSN
Loading...
Searching...
No Matches
fsIScene.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsIScene.h
4*
5* Purpose: Interface for a scene - container for retained
6* mode rendering i.e. scene sprites and text scene
7* sprites
8*
9*********************************************************************/
10
11#ifndef fsIScenehdr
12#define fsIScenehdr
13
14#include "fsINode.h"
15#include "src/fsCEntity.h"
16
17class fsIScene : public fsCEntity
18{
19public:
20
21 static fsIScene* create(const fsStr& pSceneName);
22
23 template <typename TInterface>
24 std::vector<fsCEntity*> entitiesWithComponentsOfFamilyType() const;
25
26 template <typename TInterface>
28
29 fsCEntity* entityNamed(const fsStr& pName) const;
30 fsBool emptyGet() const;
31
32 void link(fsINode* pChild);
33
34 virtual ~fsIScene();
35
36protected:
37
38 fsIScene(const fsStr& pSceneName);
39
40 virtual void linkDo(fsINode* const pChild)
41 {
42 }
43
44private:
45};
46
47
48template <typename TInterface>
49std::vector<fsCEntity*> fsIScene::entitiesWithComponentsOfFamilyType() const
50{
51 std::vector<fsCEntity*> ents;
52
53 for (fsINode* child : mChildren)
54 {
55 if (fsCEntity* childEnt = dynamic_cast<fsCEntity*>(child))
56 {
57 auto ret = childEnt->childEntitiesWithComponentsOfFamilyType<TInterface>();
58 ents.insert(ents.end(), ret.begin(), ret.end());
59 }
60 }
61 return ents;
62}
63
64template <typename TInterface>
66{
67 for (fsINode* child : mChildren)
68 {
69 if (fsCEntity* childEnt = dynamic_cast<fsCEntity*>(child))
70 {
71 if (auto matchEnt = childEnt->firstChildEntityWithComponentsOfFamilyType<TInterface>())
72 {
73 return matchEnt;
74 }
75 }
76 }
77 return nullptr;
78}
79
80#endif
fsCEntity(const fsStr &pName)
Definition fsCEntity.cpp:335
fsINode(const fsStr &pName)
Definition fsINode.cpp:657
std::vector< fsINode * > mChildren
Definition fsINode.h:117
virtual void linkDo(fsINode *const pChild)
Definition fsIScene.h:40
virtual ~fsIScene()
Definition fsIScene.cpp:47
fsCEntity * firstEntityWithComponentsOfFamilyType() const
Definition fsIScene.h:65
void link(fsINode *pChild)
Definition fsIScene.cpp:32
static fsIScene * create(const fsStr &pSceneName)
Definition fsIScene.cpp:37
fsCEntity * entityNamed(const fsStr &pName) const
Definition fsIScene.cpp:22
fsIScene(const fsStr &pSceneName)
Definition fsIScene.cpp:42
fsBool emptyGet() const
Definition fsIScene.cpp:27
std::vector< fsCEntity * > entitiesWithComponentsOfFamilyType() const
Definition fsIScene.h:49
Definition fsStr.h:23
bool fsBool
Definition fsBaseTypes.h:26