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 // An auto test is driving - fades and waits meant for a watching player shorten.
82 void autoTestSpeedUpSet(fsBool pSet);
83 fsBool autoTestSpeedUpGet() const { return mAutoTestSpeedUp; }
84
89 fsIHardware* hardwareGet() const;
90
91 fsBool update(fsS32 pDeltaMs);
92 void render();
93
95 static void create();
96 static void destroy();
97
99 void timeStepSet(fsF32 pVal);
100
101 fsCEntity* sceneRootGet() const;
102 fsIScene* sceneGet() const;
104 fsIDisplay* displayGet() const;
105 fsCEntity* appOverlayEntityNamed(const fsStr& pName) const;
106
107 void quitTheAppSet(fsBool pQuit);
108
109 void childAddToAppScene(fsINode* pChild);
110 void childAddToAppOverlay(fsINode* pChild);
111 void splashScreenShow();
112 void cursorPosSet(const fsVec2d& pPos);
115
116protected:
117
118 virtual void profileManagerCreateDo();
119
120 void componentFactorySet(std::shared_ptr<fsCComponentFactory>);
121 void entityFactorySet(std::shared_ptr<fsCEntityFactory> pEntityFactory);
122
123 virtual void factoriesCreateDo();
124
126
128
129 virtual void preInitialiseDo() {}
130
131 virtual void initialiseDo() {}
132
133 virtual void postInitialiseDo();
134
135 virtual void preUninitialiseDo() {}
136
137 virtual void uninitialiseDo() {}
138
139 virtual void postUninitialiseDo() {}
140
141 virtual void updateDo(fsS32 pDeltaMs);
142
143 virtual void stateSaveDo() {}
144
146 virtual fsBool launcherRunningDo() { return false; }
147
148 void initialise();
149 void uninitialise();
150
151 void appSceneCreate();
152
153 virtual void debugGuiCreate(){};
154
155 // Delete copy operations
158 // Declare move operations
161
163 virtual ~fsCAppCoreMain();
164
166
167private:
168
170
171 void profileManagerCreate();
172
173 void screenFadeCreate();
174
175 void factoriesCreate();
176
177 void messageDispatchersDestroy();
178 void messageDispatchersCreate();
179
180 void preInitialise();
181 void postInitialise();
182
183 void preUninitialise();
184 void postUninitialise();
185
186 void renderTargetCreate();
187 void renderTargetCaptureRequestExecute();
188
189 fsCScreenFade* mScreenFade; // ptr as added to display and will be cleaned up
190 fsBool mAutoTestSpeedUp;
191
192 fsIDisplay* mAppDisplay;
193 fsIScene* mAppScene;
194 fsIScene* mAppOverlayScene;
195 fsICursor* mCursor;
196
197 fsStr mLocaleStr;
198
199 fsBool mQuitTheApp;
200
201#if defined fsReview
202 std::shared_ptr<gfCNagManager> mNagManager;
203#endif
204
205 std::shared_ptr<fsCEntityFactory> mEntityFactory;
206 std::shared_ptr<fsCComponentFactory> mComponentFactory;
207
208 std::unique_ptr<fsCAppSettings> mAppSettings;
209 std::unique_ptr<fsIHardware> mHardware;
210
211 std::unique_ptr<fsCParticleDataManager> mParticleManager;
212 std::unique_ptr<fsCAnimationDataManager> mAnimationManager;
213
214 std::unique_ptr<fsCAppTimer> mApptimer;
215 std::unique_ptr<fsCLocaleOptions> mLocale;
216 std::unique_ptr<fsSPendingRenderTargetCaptureRequest> mPendingRenderTargetCaptureRequest;
217
218};
219
220#endif
Definition fsCAnimationDataManager.h:29
Definition fsCAppCoreMain.h:44
void splashScreenShow()
Definition fsCAppCoreMain.cpp:643
fsCAnimationDataManager * animationManagerGet() const
Definition fsCAppCoreMain.cpp:227
virtual void profileManagerCreateDo()
Definition fsCAppCoreMain.cpp:435
static void destroy()
Definition fsCAppCoreMain.cpp:612
fsCAppCoreMain(fsCAppCoreMain &&)
fsCParticleDataManager * particleDataManagerGet() const
Definition fsCAppCoreMain.cpp:232
fsIScene * appOverlaySceneGet() const
Definition fsCAppCoreMain.cpp:284
void stateSave()
Definition fsCAppCoreMain.cpp:194
void childAddToAppOverlay(fsINode *pChild)
Definition fsCAppCoreMain.cpp:638
void autoTestSpeedUpSet(fsBool pSet)
Definition fsCAppCoreMain.cpp:199
static fsCAppCoreMain * mInstance
Definition fsCAppCoreMain.h:165
void timeStepSet(fsF32 pVal)
Definition fsCAppCoreMain.cpp:294
void fadeOut()
Definition fsCAppCoreMain.cpp:210
fsCLocaleOptions * localeGet()
Definition fsCAppCoreMain.cpp:189
virtual void postUninitialiseDo()
Definition fsCAppCoreMain.h:139
fsCEntityFactory * entityFactoryGet() const
Definition fsCAppCoreMain.cpp:264
static fsCAppCoreMain * instanceGet()
Definition fsCAppCoreMain.cpp:607
fsCAppCoreMain(const fsCAppCoreMain &)=delete
void fadeIn()
Definition fsCAppCoreMain.cpp:205
fsCAppCoreMain & operator=(fsCAppCoreMain &&)
virtual ~fsCAppCoreMain()
Definition fsCAppCoreMain.cpp:731
fsBool autoTestSpeedUpGet() const
Definition fsCAppCoreMain.h:83
static const fsStr mRootEntityName
Definition fsCAppCoreMain.h:57
fsCEntity * sceneRootGet() const
Definition fsCAppCoreMain.cpp:274
virtual void preInitialiseDo()
Definition fsCAppCoreMain.h:129
void cursorPosSet(const fsVec2d &pPos)
Definition fsCAppCoreMain.cpp:655
fsF32 timeStepGet()
Definition fsCAppCoreMain.cpp:289
fsCComponentFactory * componentFactoryGet() const
Definition fsCAppCoreMain.cpp:253
virtual void updateDo(fsS32 pDeltaMs)
Definition fsCAppCoreMain.cpp:693
virtual void messageDispatchersDestroyDo()
Definition fsCAppCoreMain.h:125
fsCAppSettings * settingsGet() const
Definition fsCAppCoreMain.cpp:242
virtual void stateSaveDo()
Definition fsCAppCoreMain.h:143
virtual void messageDispatchersCreateDo()
Definition fsCAppCoreMain.h:127
fsBool update(fsS32 pDeltaMs)
Definition fsCAppCoreMain.cpp:663
void uninitialise()
Definition fsCAppCoreMain.cpp:526
virtual fsBool launcherRunningDo()
Definition fsCAppCoreMain.h:146
virtual void factoriesCreateDo()
Definition fsCAppCoreMain.cpp:521
static void create()
Definition fsCAppCoreMain.cpp:595
void setRenderToTexture()
Definition fsCAppCoreMain.cpp:161
fsCAppCoreMain & operator=(const fsCAppCoreMain &)=delete
void appSceneCreate()
Definition fsCAppCoreMain.cpp:460
fsCEntity * appOverlayEntityNamed(const fsStr &pName) const
Definition fsCAppCoreMain.cpp:650
fsS32 appRunningTimeGet() const
Definition fsCAppCoreMain.cpp:215
void childAddToAppScene(fsINode *pChild)
Definition fsCAppCoreMain.cpp:633
fsIScene * sceneGet() const
Definition fsCAppCoreMain.cpp:279
void initialise()
Definition fsCAppCoreMain.cpp:309
virtual void postInitialiseDo()
Definition fsCAppCoreMain.cpp:494
void quitTheAppSet(fsBool pQuit)
Definition fsCAppCoreMain.cpp:628
fsCAppCoreMain()
Definition fsCAppCoreMain.cpp:712
virtual void initialiseDo()
Definition fsCAppCoreMain.h:131
virtual void uninitialiseDo()
Definition fsCAppCoreMain.h:137
virtual void preUninitialiseDo()
Definition fsCAppCoreMain.h:135
fsIDisplay * displayGet() const
Definition fsCAppCoreMain.cpp:269
void entityFactorySet(std::shared_ptr< fsCEntityFactory > pEntityFactory)
Definition fsCAppCoreMain.cpp:258
fsIHardware * hardwareGet() const
Definition fsCAppCoreMain.cpp:237
void componentFactorySet(std::shared_ptr< fsCComponentFactory >)
Definition fsCAppCoreMain.cpp:247
void clearRenderToTexture()
Definition fsCAppCoreMain.cpp:172
fsBool launcherRunning()
Definition fsCAppCoreMain.cpp:300
virtual void debugGuiCreate()
Definition fsCAppCoreMain.h:153
void render()
Definition fsCAppCoreMain.cpp:697
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