3#include <Core/Configuration/PlatformProfile.h>
4#include <Core/Console/ConsoleFunction.h>
5#include <Core/GameApplication/WindowOutputTargetBase.h>
6#include <Core/GameState/GameStateBase.h>
7#include <Core/System/Window.h>
8#include <Foundation/Application/Application.h>
9#include <Foundation/Types/UniquePtr.h>
22 AfterGameStateActivated,
23 BeforeGameStateDeactivated
74 void TakeProfilingCapture();
79 void TakeScreenshot();
87 bool m_bTakeScreenshot =
false;
109 void SetContinuousFrameCapture(
bool bEnable);
110 bool GetContinousFrameCapture()
const;
116 void ExecuteFrameCapture(plWindowHandle targetWindowHandle,
plStringView sContext = {});
118 bool m_bContinuousFrameCapture =
false;
119 bool m_bCaptureFrame =
false;
144 void DeactivateGameState();
168 virtual void ActivateGameStateAtStartup();
171 plWorld* m_pWorldLinkedWithGameState =
nullptr;
202 virtual plString GetBaseDataDirectoryPath()
const;
208 virtual plString GetProjectDataDirectoryPath()
const;
211 virtual void ExecuteBaseInitFunctions();
212 virtual void BaseInit_ConfigureLogging();
214 plEventSubscriptionID m_LogToConsoleID = 0;
215 plEventSubscriptionID m_LogToVsID = 0;
218 virtual void ExecuteInitFunctions();
219 virtual void Init_PlatformProfile_SetPreferred();
220 virtual void Init_ConfigureTelemetry();
221 virtual void Init_FileSystem_SetSpecialDirs();
222 virtual void Init_LoadRequiredPlugins();
223 virtual void Init_ConfigureAssetManagement();
224 virtual void Init_FileSystem_ConfigureDataDirs();
225 virtual void Init_LoadWorldModuleConfig();
226 virtual void Init_LoadProjectPlugins();
227 virtual void Init_PlatformProfile_LoadForRuntime();
228 virtual void Init_ConfigureInput();
229 virtual void Init_ConfigureTags();
230 virtual void Init_ConfigureCVars();
231 virtual void Init_SetupGraphicsDevice() = 0;
232 virtual void Init_SetupDefaultResources();
243 virtual void Deinit_ShutdownGraphicsDevice() = 0;
244 virtual void Deinit_UnloadPlugins();
245 virtual void Deinit_ShutdownLogging();
258 plTime GetFrameTime()
const {
return m_FrameTime; }
261 virtual bool IsGameUpdateEnabled()
const {
return true; }
263 virtual void Run_InputUpdate();
264 virtual bool Run_ProcessApplicationInput();
266 virtual void Run_AcquireImage();
267 virtual void Run_WorldUpdateAndRender() = 0;
268 virtual void Run_BeforeWorldUpdate();
269 virtual void Run_AfterWorldUpdate();
270 virtual void Run_UpdatePlugins();
272 virtual void Run_PresentImage();
273 virtual void Run_FinishFrame();
275 void UpdateFrameTime();
Base class to be used by applications based on plEngine.
Definition Application.h:66
Execution
Defines the possible return values for the plApplication::Run() function.
Definition Application.h:72
virtual void BeforeCoreSystemsShutdown()
This function is called after the application main loop has run for the last time,...
Definition Application.h:120
virtual void AfterCoreSystemsStartup()
This function is called after basic engine initialization has been done.
Definition Application.h:101
plApplication(plStringView sAppName)
Constructor.
Definition Application.cpp:11
virtual Execution Run()=0
Main run function which is called periodically. This function must be overridden.
virtual void BeforeHighLevelSystemsShutdown()
This function is called after the application main loop has run for the last time,...
Definition Application.h:110
virtual plResult BeforeCoreSystemsStartup()
This function is called before any kind of engine initialization is done.
Definition Application.cpp:25
Implements the functionality of plConsoleFunctionBase for functions with different parameter types....
Definition ConsoleFunction.h:76
Definition GameApplicationBase.h:51
plConsoleFunction< void()> m_ConFunc_TakeScreenshot
expose TakeScreenshot() as a console function
Definition GameApplicationBase.h:90
virtual plString FindProjectDirectory() const =0
Returns the target of the 'project' special data directory.
plConsoleFunction< void()> m_ConFunc_CaptureFrame
expose CaptureFrame() as a console function
Definition GameApplicationBase.h:122
const plPlatformProfile & GetPlatformProfile() const
Returns the plPlatformProfile that has been loaded for this application.
Definition GameApplicationBase.h:178
static plGameApplicationBase * GetGameApplicationBaseInstance()
Returns the plGameApplicationBase singleton.
Definition GameApplicationBase.h:63
plGameStateBase * GetActiveGameState() const
Returns the currently active game state. Could be nullptr.
Definition GameApplicationBase.h:147
plGameState is the base class to build custom game logic upon. It works closely together with plGameA...
Definition GameStateBase.h:38
A class containing image data and associated meta data.
Definition Image.h:103
plStringBuilder is a class that is meant for creating and modifying strings.
Definition StringBuilder.h:35
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
A Unique ptr manages an object and destroys that object when it goes out of scope....
Definition UniquePtr.h:10
Base class of all window classes that have a client area and a native window handle.
Definition Window.h:134
Base class for window output targets.
Definition WindowOutputTargetBase.h:16
A world encapsulates a scene graph of game objects and various component managers and their component...
Definition World.h:22
Definition GameApplicationBase.h:32
Definition GameApplicationBase.h:19
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12
Parameters for creating a window, such as position and resolution.
Definition Window.h:180