Fission FSN
Loading...
Searching...
No Matches
fsINode.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 25/2/2014 11:36
4*
5* File: fsINode.h
6*
7* Author: Mick Waites
8*
9* Purpose: The base of all "things" in the app. Contains the
10* hierarchy system and a 2D affine transformation
11* matrix for hierarchy based rendering.
12*
13*********************************************************************/
14
15#ifndef fsINodehdr
16#define fsINodehdr
17
18#include <vector>
19
20#include <fsCore/fsStr.h>
22#include <fsCore/fsVec2d.h>
23#include <fsCore/fsPoint.h>
24
26class fsIScene;
27class fsISerialisable;
28
30{
31 friend class fsCEntity;
33
34public:
35
36 static void staticVectorsCreate();
37 static void staticVectorsDestroy();
38 static void flaggedNodesDestroy();
39 static void newNodesParent();
40
41 fsBool matrixDirtyGet() const;
42 void destroy();
43
45 void init();
46
47 fsBool screenCoordConvertToLocal(const fsVec2d& pScreenPos, fsVec2d& pLocalPos);
48 void posSet(const fsVec2d& pPos);
49 fsVec2d posGet() const;
50 fsVec2d posRelativeToAncestorGet(const fsINode* pAncestor) const;
52
53 void scaleSet(fsVec2d const& pScale);
54 fsVec2d const& scaleGet() const;
55
56 void angleSet(fsF32 pAngleRadians);
57 void targetAngleSet(fsF32 pRadians, fsF32 pRadiansPerSec);
58 fsF32 angleGet() const;
59
60 void visibleSet(fsBool pVisible);
61 fsBool visibleGet() const;
62 void skipMeSet(fsBool pVisible);
63 fsBool skipMeGet() const;
64
65 const fsStr& nameGet() const;
66 void nameSet(const fsStr& pName);
67
68 const fsAffineMtx2d& localMatrixGet() const;
69 const fsAffineMtx2d& renderMatrixGet() const;
70
71 void childAdd(fsINode* pChild);
72 void childRemove(fsINode* pChild);
73
74 fsINode *parentGet() const;
75 fsINode *childFind(const fsStr& pName, fsBool pCaseless = false) const;
76
79
80 void postLink();
82 void update(fsS32 pDeltaMs);
83 void render();
84 void reset();
85
86 void hierarchyDumpToLog() const;
87
88 void serialise(fsStr& pSaveStr);
89 void deserialise(fsStr& pLoadStr);
90 void s32Serialise(fsS32 pVal);
92 void boolSerialise(fsBool pVal);
94 void strSerialise(const fsStr& pVal);
96 void pointSerialise(const fsPoint& pVal);
98
99 void matrixUpdate();
100
101 fsINode(const fsStr& pName);
102
103protected:
104 virtual ~fsINode();
105
107 virtual void initDo() {}
108 virtual void updateDo(fsS32 pDeltaMs) {}
109 virtual void renderDo() {}
110 virtual void updatedMatrixProcess() {}
111 virtual void resetDo() {}
112 virtual void serialiseDo() {}
113 virtual void deserialiseDo() {}
114 virtual void postLoad() {}
115 virtual void postLinkDo(){}
116
117 std::vector<fsINode*> mChildren;
119
121
124
126
130
132
136
140
142
143private:
144
145 fsBool destroyingGet() const;
146
147 void rotationDirectionCalculate();
148 void rotationUpdate(fsS32 pDeltaMs);
149
150 void hierarchyDumpToLog(fsS32 pDepth) const;
151
152 static std::vector<fsINode*>* mNodesToDestroy;
153 static std::vector<std::pair<fsINode*, fsINode*>>* mNodesToParent;
154};
155
156#endif
Definition fsAffineMtx2d.h:27
Definition fsCVariableTable.h:27
fsBool mInChildUpdate
Definition fsINode.h:125
void pushToBackOfSiblings()
Definition fsINode.cpp:621
virtual void postLoad()
Definition fsINode.h:114
fsVec2d posRelativeToAncestorGet(const fsINode *pAncestor) const
Definition fsINode.cpp:292
virtual ~fsINode()
Definition fsINode.cpp:675
fsF32 mRotationDir
Definition fsINode.h:138
void visibleSet(fsBool pVisible)
Definition fsINode.cpp:416
fsBool skipMeGet() const
Definition fsINode.cpp:406
void render()
Definition fsINode.cpp:502
fsF32 mTargetAngle
Definition fsINode.h:137
void strSerialise(const fsStr &pVal)
Definition fsINode.cpp:48
void destroy()
Definition fsINode.cpp:132
fsVec2d mPos
Definition fsINode.h:133
fsVec2d screenPositionGet() const
Definition fsINode.cpp:309
virtual void renderDo()
Definition fsINode.h:109
void update(fsS32 pDeltaMs)
Definition fsINode.cpp:486
fsBool boolDeserialise()
Definition fsINode.cpp:43
void childAdd(fsINode *pChild)
Definition fsINode.cpp:525
fsAffineMtx2d mLocalMtx
Definition fsINode.h:122
fsINode(const fsStr &pName)
Definition fsINode.cpp:657
fsBool screenCoordConvertToLocal(const fsVec2d &pScreenPos, fsVec2d &pLocalPos)
Definition fsINode.cpp:243
friend class fsCEntity
Definition fsINode.h:31
void nameSet(const fsStr &pName)
Definition fsINode.cpp:435
static void newNodesParent()
Definition fsINode.cpp:192
static void flaggedNodesDestroy()
Definition fsINode.cpp:151
const fsAffineMtx2d & renderMatrixGet() const
Definition fsINode.cpp:445
fsStr mName
Definition fsINode.h:120
static void staticVectorsDestroy()
Definition fsINode.cpp:122
fsINode * mParent
Definition fsINode.h:118
void targetAngleSet(fsF32 pRadians, fsF32 pRadiansPerSec)
Definition fsINode.cpp:342
virtual void serialiseDo()
Definition fsINode.h:112
void scaleSet(fsVec2d const &pScale)
Definition fsINode.cpp:317
friend class gfCDebugJustCollectablesView
Definition fsINode.h:32
fsISerialisable * mSerialisableController
Definition fsINode.h:141
void angleSet(fsF32 pAngleRadians)
Definition fsINode.cpp:332
virtual void initialiseFromVariableTableDo(const fsCVariableTable &pVars)
Definition fsINode.h:106
void postLink()
Definition fsINode.cpp:18
void deserialise(fsStr &pLoadStr)
Definition fsINode.cpp:99
void s32Serialise(fsS32 pVal)
Definition fsINode.cpp:28
void boolSerialise(fsBool pVal)
Definition fsINode.cpp:38
const fsStr & nameGet() const
Definition fsINode.cpp:430
fsPoint pointDeserialise()
Definition fsINode.cpp:63
fsINode * childFind(const fsStr &pName, fsBool pCaseless=false) const
Definition fsINode.cpp:570
fsF32 mAngle
Definition fsINode.h:135
fsINode * parentGet() const
Definition fsINode.cpp:565
fsVec2d posGet() const
Definition fsINode.cpp:283
virtual void updatedMatrixProcess()
Definition fsINode.h:110
virtual void deserialiseDo()
Definition fsINode.h:113
fsVec2d const & scaleGet() const
Definition fsINode.cpp:327
void bringToFrontOfSiblings()
Definition fsINode.cpp:611
fsBool mRenderChildrenRegardless
Definition fsINode.h:128
fsBool visibleGet() const
Definition fsINode.cpp:421
fsBool mSkipMe
Definition fsINode.h:129
virtual void updateDo(fsS32 pDeltaMs)
Definition fsINode.h:108
virtual void initDo()
Definition fsINode.h:107
void matrixUpdateIfDirty()
Definition fsINode.cpp:450
fsStr strDeserialise()
Definition fsINode.cpp:53
void hierarchyDumpToLog() const
Definition fsINode.cpp:632
void initialiseFromVariableTable(const fsCVariableTable &pVars)
Definition fsINode.cpp:215
std::vector< fsINode * > mChildren
Definition fsINode.h:117
fsS32 s32Deserialise()
Definition fsINode.cpp:33
static void staticVectorsCreate()
Definition fsINode.cpp:115
fsF32 mRotationSpeed
Definition fsINode.h:139
fsVec2d mScale
Definition fsINode.h:134
const fsAffineMtx2d & localMatrixGet() const
Definition fsINode.cpp:440
void childRemove(fsINode *pChild)
Definition fsINode.cpp:549
void reset()
Definition fsINode.cpp:68
fsBool matrixDirtyGet() const
Definition fsINode.cpp:23
fsBool mVisible
Definition fsINode.h:127
fsBool mMtxDirty
Definition fsINode.h:131
void serialise(fsStr &pSaveStr)
Definition fsINode.cpp:82
void skipMeSet(fsBool pVisible)
Definition fsINode.cpp:411
fsF32 angleGet() const
Definition fsINode.cpp:401
virtual void resetDo()
Definition fsINode.h:111
virtual void postLinkDo()
Definition fsINode.h:115
void posSet(const fsVec2d &pPos)
Definition fsINode.cpp:266
void init()
Definition fsINode.cpp:233
void pointSerialise(const fsPoint &pVal)
Definition fsINode.cpp:58
fsAffineMtx2d mRenderMtx
Definition fsINode.h:123
void matrixUpdate()
Definition fsINode.cpp:466
Definition fsIScene.h:18
Definition fsISerialisable.h:17
Definition fsStr.h:23
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsPoint.h:17
Definition fsVec2d.h:16