Fission FSN
Loading...
Searching...
No Matches
fsCAppCoreMain.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCAppCoreMain.h
4*
5* Purpose: Main for an app
6*
7*********************************************************************/
8
9#ifndef fsCAppCoreMainhdr
10#define fsCAppCoreMainhdr
11
12#include <memory>
13
14#include <fsCore/fsBaseTypes.h>
15#include <fsCore/fsStr.h>
16
18
19class fsINode;
20class fsStr;
21class fsIScene;
22class fsIDisplay;
23class fsCEntity;
26class fsCResourceName;
27class fsCAppSettings;
28class fsIHardware;
31class fsCScreenFade;
32class fsCAppTimer;
34class fsICursor;
35class fsRect;
36struct fsVec2d;
37struct fsPoint;
38
39#if defined fsReview
40 class gfCNagManager;
41#endif
42
44{
45public:
46
47#if defined fsScreenTextureEffect
48 fsCRenderTexture* mLevelRenderTarget = nullptr; // not smart pointer due to include cycles?
49 #ifdef fsDEBUG
50 fsBool mTargetClearedThisFrame = false;
51 #endif
52#endif
53
54
55 static const fsStr mRootEntityName;
56
57#if defined fsScreenTextureEffect
58 void renderTargetResize();
59 void renderTargetShadersCreate(const fsStr& pVertex, const fsStr& pFragment);
60 void renderTargetScreenEffectParamsSet(const fsPoint& pFocusPos, fsF32 pRadius);
61 void renderTargetScreenEffectParamsClear();
62 void renderTargetCaptureRegionSaveRequest(const fsRect& pCaptureRect, const fsPoint& pOutputDimensions, const fsCResourceName& pFilename);
63 void renderTargetCaptureFocusRegionSaveRequest(const fsPoint& pFocusPos, fsF32 pRadius, const fsPoint& pOutputDimensions, const fsCResourceName& pFilename);
64 #if defined fsScreenShot
65 void screenshotRequest(const fsStr& pSceneName);
66 #endif
67#endif
68
69 void setRenderToTexture();
71
72#if defined fsReview
73 gfCNagManager* nagManagerGet() const;
74#endif
75
77 void stateSave();
78
79 void fadeIn();
80 void fadeOut();
81 void fadeCheatModeSet(fsBool pSet);
82
87 fsIHardware* hardwareGet() const;
88
89 fsBool update(fsS32 pDeltaMs);
90 void render();
91
93 static void create();
94 static void destroy();
95
97 void timeStepSet(fsF32 pVal);
98
99 fsCEntity* sceneRootGet() const;
100 fsIScene* sceneGet() const;
102 fsIDisplay* displayGet() const;
103 fsCEntity* appOverlayEntityNamed(const fsStr& pName) const;
104
105 void quitTheAppSet(fsBool pQuit);
106
107 void childAddToAppScene(fsINode* pChild);
108 void childAddToAppOverlay(fsINode* pChild);
109 void cursorPosSet(const fsVec2d& pPos);
112
113protected:
114
115 virtual void profileManagerCreateDo();
116
117 void componentFactorySet(std::shared_ptr<fsCComponentFactory>);
118 void entityFactorySet(std::shared_ptr<fsCEntityFactory> pEntityFactory);
119
120 virtual void factoriesCreateDo();
121
123
125
126 virtual void preInitialiseDo() {}
127
128 virtual void initialiseDo() {}
129
130 virtual void postInitialiseDo();
131
132 virtual void preUninitialiseDo() {}
133
134 virtual void uninitialiseDo() {}
135
136 virtual void postUninitialiseDo() {}
137
138 virtual void updateDo(fsS32 pDeltaMs);
139
140 virtual void stateSaveDo() {}
141
143 virtual fsBool launcherRunningDo() { return false; }
144
145 void initialise();
146 void uninitialise();
147
148 void appSceneCreate();
149
150 virtual void debugGuiCreate(){};
151
152 // Delete copy operations
155 // Declare move operations
158
160 virtual ~fsCAppCoreMain();
161
163
164private:
165
167
168 void profileManagerCreate();
169
170 void screenFadeCreate();
171
172 void factoriesCreate();
173
174 void messageDispatchersDestroy();
175 void messageDispatchersCreate();
176
177 void preInitialise();
178 void postInitialise();
179
180 void preUninitialise();
181 void postUninitialise();
182
183 void renderTargetCreate();
184 void renderTargetCaptureRequestExecute();
185
186 fsCScreenFade* mScreenFade; // ptr as added to display and will be cleaned up
187
188 fsIDisplay* mAppDisplay;
189 fsIScene* mAppScene;
190 fsIScene* mAppOverlayScene;
191 fsICursor* mCursor;
192
193 fsStr mLocaleStr;
194
195 fsBool mQuitTheApp;
196
197#if defined fsReview
198 std::shared_ptr<gfCNagManager> mNagManager;
199#endif
200
201 std::shared_ptr<fsCEntityFactory> mEntityFactory;
202 std::shared_ptr<fsCComponentFactory> mComponentFactory;
203
204 std::unique_ptr<fsCAppSettings> mAppSettings;
205 std::unique_ptr<fsIHardware> mHardware;
206
207 std::unique_ptr<fsCParticleDataManager> mParticleManager;
208 std::unique_ptr<fsCAnimationDataManager> mAnimationManager;
209
210 std::unique_ptr<fsCAppTimer> mApptimer;
211 std::unique_ptr<fsCLocaleOptions> mLocale;
212 std::unique_ptr<fsSPendingRenderTargetCaptureRequest> mPendingRenderTargetCaptureRequest;
213
214};
215
216#endif
Definition fsCAnimationDataManager.h:27
fsCAnimationDataManager * animationManagerGet() const
Definition fsCAppCoreMain.cpp:226
virtual void profileManagerCreateDo()
Definition fsCAppCoreMain.cpp:434
static void destroy()
Definition fsCAppCoreMain.cpp:609
fsCAppCoreMain(fsCAppCoreMain &&)
fsCParticleDataManager * particleDataManagerGet() const
Definition fsCAppCoreMain.cpp:231
fsIScene * appOverlaySceneGet() const
Definition fsCAppCoreMain.cpp:283
void stateSave()
Definition fsCAppCoreMain.cpp:194
void childAddToAppOverlay(fsINode *pChild)
Definition fsCAppCoreMain.cpp:635
void fadeCheatModeSet(fsBool pSet)
Definition fsCAppCoreMain.cpp:199
static fsCAppCoreMain * mInstance
Definition fsCAppCoreMain.h:162
void timeStepSet(fsF32 pVal)
Definition fsCAppCoreMain.cpp:293
void fadeOut()
Definition fsCAppCoreMain.cpp:209
fsCLocaleOptions * localeGet()
Definition fsCAppCoreMain.cpp:189
virtual void postUninitialiseDo()
Definition fsCAppCoreMain.h:136
fsCEntityFactory * entityFactoryGet() const
Definition fsCAppCoreMain.cpp:263
static fsCAppCoreMain * instanceGet()
Definition fsCAppCoreMain.cpp:604
fsCAppCoreMain(const fsCAppCoreMain &)=delete
void fadeIn()
Definition fsCAppCoreMain.cpp:204
fsCAppCoreMain & operator=(fsCAppCoreMain &&)
virtual ~fsCAppCoreMain()
Definition fsCAppCoreMain.cpp:720
static const fsStr mRootEntityName
Definition fsCAppCoreMain.h:57
fsCEntity * sceneRootGet() const
Definition fsCAppCoreMain.cpp:273
virtual void preInitialiseDo()
Definition fsCAppCoreMain.h:126
void cursorPosSet(const fsVec2d &pPos)
Definition fsCAppCoreMain.cpp:645
fsF32 timeStepGet()
Definition fsCAppCoreMain.cpp:288
fsCComponentFactory * componentFactoryGet() const
Definition fsCAppCoreMain.cpp:252
virtual void updateDo(fsS32 pDeltaMs)
Definition fsCAppCoreMain.cpp:683
virtual void messageDispatchersDestroyDo()
Definition fsCAppCoreMain.h:122
fsCAppSettings * settingsGet() const
Definition fsCAppCoreMain.cpp:241
virtual void stateSaveDo()
Definition fsCAppCoreMain.h:140
virtual void messageDispatchersCreateDo()
Definition fsCAppCoreMain.h:124
fsBool update(fsS32 pDeltaMs)
Definition fsCAppCoreMain.cpp:653
void uninitialise()
Definition fsCAppCoreMain.cpp:527
virtual fsBool launcherRunningDo()
Definition fsCAppCoreMain.h:143
virtual void factoriesCreateDo()
Definition fsCAppCoreMain.cpp:522
static void create()
Definition fsCAppCoreMain.cpp:592
void setRenderToTexture()
Definition fsCAppCoreMain.cpp:161
fsCAppCoreMain & operator=(const fsCAppCoreMain &)=delete
void appSceneCreate()
Definition fsCAppCoreMain.cpp:459
fsCEntity * appOverlayEntityNamed(const fsStr &pName) const
Definition fsCAppCoreMain.cpp:640
fsS32 appRunningTimeGet() const
Definition fsCAppCoreMain.cpp:214
void childAddToAppScene(fsINode *pChild)
Definition fsCAppCoreMain.cpp:630
fsIScene * sceneGet() const
Definition fsCAppCoreMain.cpp:278
void initialise()
Definition fsCAppCoreMain.cpp:308
virtual void postInitialiseDo()
Definition fsCAppCoreMain.cpp:493
void quitTheAppSet(fsBool pQuit)
Definition fsCAppCoreMain.cpp:625
fsCAppCoreMain()
Definition fsCAppCoreMain.cpp:702
virtual void initialiseDo()
Definition fsCAppCoreMain.h:128
virtual void uninitialiseDo()
Definition fsCAppCoreMain.h:134
virtual void preUninitialiseDo()
Definition fsCAppCoreMain.h:132
fsIDisplay * displayGet() const
Definition fsCAppCoreMain.cpp:268
void entityFactorySet(std::shared_ptr< fsCEntityFactory > pEntityFactory)
Definition fsCAppCoreMain.cpp:257
fsIHardware * hardwareGet() const
Definition fsCAppCoreMain.cpp:236
void componentFactorySet(std::shared_ptr< fsCComponentFactory >)
Definition fsCAppCoreMain.cpp:246
void clearRenderToTexture()
Definition fsCAppCoreMain.cpp:172
fsBool launcherRunning()
Definition fsCAppCoreMain.cpp:299
virtual void debugGuiCreate()
Definition fsCAppCoreMain.h:150
void render()
Definition fsCAppCoreMain.cpp:687
Definition fsCAppSettings.h:22
Definition fsCAppTimer.h:15
Definition fsCComponentFactory.h:26
Definition fsCEntityFactory.h:25
Definition fsCEntity.h:39
Definition fsCLocaleOptions.h:20
Definition fsCParticleDataManager.h:25
Definition fsCRenderTexture.h:24
Definition fsCResourceName.h:32
Definition fsCScreenFade.h:25
Definition fsICursor.h:20
Definition fsIDisplay.h:31
Definition fsIHardware.h:25
Definition fsINode.h:30
Definition fsIScene.h:18
Definition fsRect.h:16
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