Plasma Engine  2.0
Loading...
Searching...
No Matches
plGameApplication Class Reference

The base class for all typical game applications made with plEngine. More...

#include <GameApplication.h>

Inheritance diagram for plGameApplication:

Public Types

using SUPER = plGameApplicationBase
 
- Public Types inherited from plGameApplicationBase
using SUPER = plApplication
 
- Public Types inherited from plApplication
enum class  Execution { Continue , Quit }
 Defines the possible return values for the plApplication::Run() function. More...
 

Public Member Functions

 plGameApplication (const char *szAppName, const char *szProjectPath)
 szProjectPath may be nullptr, if FindProjectDirectory() is overridden.
 
virtual plString FindProjectDirectory () const override
 Implementation of plGameApplicationBase::FindProjectDirectory to define the 'project' special data directory.
 
void ReinitializeInputConfig ()
 Used at runtime (by the editor) to reload input maps. Forwards to Init_ConfigureInput()
 
plStringView GetAppProjectPath () const
 Returns the project path that was given to the constructor (or modified by an overridden implementation).
 
- Public Member Functions inherited from plGameApplicationBase
 plGameApplicationBase (plStringView sAppName)
 
void TakeProfilingCapture ()
 Does a profiling capture and writes it to disk at ':appdata'.
 
void TakeScreenshot ()
 Schedules a screenshot to be taken at the end of the frame.
 
void CaptureFrame ()
 Schedules a frame capture if the corresponding plugin is loaded.
 
void SetContinuousFrameCapture (bool bEnable)
 Controls if frame captures are taken continuously (without being persisted) or only on-demand.
 
bool GetContinousFrameCapture () const
 
virtual plResult GetAbsFrameCaptureOutputPath (plStringBuilder &ref_sOutputPath)
 Get the absolute base output path for frame captures.
 
plResult ActivateGameState (plWorld *pWorld=nullptr, const plTransform *pStartPosition=nullptr)
 Creates and activates the game state for this application.
 
void DeactivateGameState ()
 Deactivates and destroys the active game state.
 
plGameStateBaseGetActiveGameState () const
 Returns the currently active game state. Could be nullptr.
 
plGameStateBaseGetActiveGameStateLinkedToWorld (const plWorld *pWorld) const
 Returns the currently active game state IF it was created for the given world.
 
const plPlatformProfileGetPlatformProfile () const
 Returns the plPlatformProfile that has been loaded for this application.
 
virtual plApplication::Execution Run () override
 Main run function which is called periodically. This function must be overridden.
 
void RunOneFrame ()
 
plTime GetFrameTime () const
 
- Public Member Functions inherited from plApplication
 plApplication (plStringView sAppName)
 Constructor.
 
virtual ~plApplication ()
 Virtual destructor.
 
void SetApplicationName (plStringView sAppName)
 Changes the application name.
 
const plStringGetApplicationName () const
 Returns the application name.
 
virtual void AfterHighLevelSystemsShutdown ()
 Called after plStartup::ShutdownHighLevelSystems() has been executed.
 
virtual void AfterCoreSystemsShutdown ()
 This function is called after plStartup::ShutdownCoreSystems() has been called.
 
virtual void BeforeEnterBackground ()
 This function is called when an application is moved to the background.
 
virtual void BeforeEnterForeground ()
 This function is called whenever an application is resumed from background mode.
 
void SetReturnCode (plInt32 iReturnCode)
 Sets the value that the application will return to the OS. You can call this function at any point during execution to update the return value of the application. Default is zero.
 
plInt32 GetReturnCode () const
 Returns the currently set value that the application will return to the OS.
 
virtual const char * TranslateReturnCode () const
 If the return code is not zero, this function might be called to get a string to print the error code in human readable form.
 
void SetCommandLineArguments (plUInt32 uiArgumentCount, const char **pArguments)
 Will set the command line arguments that were passed to the app by the OS. This is automatically called by PL_APPLICATION_ENTRY_POINT() and PL_CONSOLEAPP_ENTRY_POINT().
 
plUInt32 GetArgumentCount () const
 Returns the number of command line arguments that were passed to the application.
 
const char * GetArgument (plUInt32 uiArgument) const
 Returns one of the command line arguments that was passed to the application.
 
const char ** GetArgumentsArray () const
 Returns the complete array of command line arguments that were passed to the application.
 
void EnableMemoryLeakReporting (bool bEnable)
 
bool IsMemoryLeakReportingEnabled () const
 
virtual void RequestQuit ()
 Calling this function requests that the application quits after the current invocation of Run() finishes.
 
PL_ALWAYS_INLINE bool WasQuitRequested () const
 Returns whether RequestQuit() was called.
 

Static Public Member Functions

static plGameApplicationGetGameApplicationInstance ()
 Returns the plGameApplication singleton.
 
static plStringView GetActiveRenderer ()
 Returns the active renderer of the current app. Either the default or overridden via -render command line flag.
 
static void SetOverrideDefaultDeviceCreator (plDelegate< plGALDevice *(const plGALDeviceCreationDescription &)> creator)
 When the graphics device is created, by default the game application will pick a platform specific implementation. This function allows to override that by setting a custom function that creates a graphics device.
 
- Static Public Member Functions inherited from plGameApplicationBase
static plGameApplicationBaseGetGameApplicationBaseInstance ()
 Returns the plGameApplicationBase singleton.
 
- Static Public Member Functions inherited from plApplication
static plApplicationGetApplicationInstance ()
 Returns the one instance of plApplication that is available.
 

Static Public Attributes

static plCVarBool cvar_AppVSync
 
static plCVarBool cvar_AppShowFPS
 
static plCVarBool cvar_AppShowInfo
 

Protected Member Functions

virtual void Init_ConfigureInput () override
 
virtual void Init_ConfigureAssetManagement () override
 
virtual void Init_LoadRequiredPlugins () override
 
virtual void Init_SetupDefaultResources () override
 
virtual void Init_SetupGraphicsDevice () override
 
virtual void Deinit_ShutdownGraphicsDevice () override
 
virtual bool IsGameUpdateEnabled () const override
 
virtual bool Run_ProcessApplicationInput () override
 
virtual void Run_AcquireImage () override
 This function can be used to acquire a new window from a swap-chain or do any other update operations on windows before the multi-threaded rendering and update phase starts.
 
virtual void Run_WorldUpdateAndRender () override
 
virtual void Run_PresentImage () override
 This function can be used to present the final image to a window. It is run at the end of the rendering phase. It can also be used to inspect the swap-chain e.g. for screenshot purposes before presenting.
 
virtual void Run_FinishFrame () override
 
void RenderFps ()
 
void RenderInfo ()
 
void RenderConsole ()
 
void UpdateWorldsAndExtractViews ()
 
- Protected Member Functions inherited from plGameApplicationBase
virtual void BeforeHighLevelSystemsShutdown () override
 This function is called after the application main loop has run for the last time, before engine deinitialization.
 
virtual void BeforeCoreSystemsShutdown () override
 This function is called after the application main loop has run for the last time, before engine deinitialization.
 
virtual void Deinit_UnloadPlugins ()
 
virtual void Deinit_ShutdownLogging ()
 
virtual void StoreScreenshot (plImage &&image, plStringView sContext={})
 Called with the result from taking a screenshot. The default implementation writes the image to disk at ':appdata/Screenshots'.
 
void ExecuteTakeScreenshot (plWindowOutputTargetBase *pOutputTarget, plStringView sContext={})
 
void ExecuteFrameCapture (plWindowHandle targetWindowHandle, plStringView sContext={})
 
virtual plUniquePtr< plGameStateBaseCreateGameState (plWorld *pWorld)
 Creates a game state for the application to use.
 
virtual void ActivateGameStateAtStartup ()
 Allows to override whether a game state is created and activated at application startup.
 
virtual plResult BeforeCoreSystemsStartup () override
 This function is called before any kind of engine initialization is done.
 
virtual void AfterCoreSystemsStartup () override
 This function is called after basic engine initialization has been done.
 
virtual plString GetBaseDataDirectoryPath () const
 Returns the target of the 'base' data directory.
 
virtual plString GetProjectDataDirectoryPath () const
 Returns the target of the 'project' data directory.
 
virtual void ExecuteBaseInitFunctions ()
 Executes all 'BaseInit_' functions. Typically done very early, before core system startup.
 
virtual void BaseInit_ConfigureLogging ()
 
virtual void ExecuteInitFunctions ()
 Executes all 'Init_' functions. Typically done after core system startup.
 
virtual void Init_PlatformProfile_SetPreferred ()
 
virtual void Init_ConfigureTelemetry ()
 
virtual void Init_FileSystem_SetSpecialDirs ()
 
virtual void Init_FileSystem_ConfigureDataDirs ()
 
virtual void Init_LoadWorldModuleConfig ()
 
virtual void Init_LoadProjectPlugins ()
 
virtual void Init_PlatformProfile_LoadForRuntime ()
 
virtual void Init_ConfigureTags ()
 
virtual void Init_ConfigureCVars ()
 
virtual void Run_InputUpdate ()
 
virtual void Run_BeforeWorldUpdate ()
 
virtual void Run_AfterWorldUpdate ()
 
virtual void Run_UpdatePlugins ()
 
void UpdateFrameTime ()
 

Protected Attributes

plString m_sAppProjectPath
 Stores what is given to the constructor.
 
bool m_bIgnoreErrors = false
 
plSharedPtr< plDelegateTask< void > > m_pUpdateTask
 
bool m_bShowConsole = false
 
plUniquePtr< plQuakeConsolem_pConsole
 
- Protected Attributes inherited from plGameApplicationBase
bool m_bTakeScreenshot = false
 
plConsoleFunction< void()> m_ConFunc_TakeScreenshot
 expose TakeScreenshot() as a console function
 
bool m_bContinuousFrameCapture = false
 
bool m_bCaptureFrame = false
 
plConsoleFunction< void()> m_ConFunc_CaptureFrame
 expose CaptureFrame() as a console function
 
plUniquePtr< plGameStateBasem_pGameState
 
plWorldm_pWorldLinkedWithGameState = nullptr
 
plPlatformProfile m_PlatformProfile
 
plEventSubscriptionID m_LogToConsoleID = 0
 
plEventSubscriptionID m_LogToVsID = 0
 
plEvent< const plGameApplicationStaticEvent & > m_StaticEvents
 
plTime m_FrameTime
 
- Protected Attributes inherited from plApplication
bool m_bWasQuitRequested = false
 

Static Protected Attributes

static plGameApplications_pGameApplicationInstance = nullptr
 
static plDelegate< plGALDevice *(const plGALDeviceCreationDescription &)> s_DefaultDeviceCreator
 
- Static Protected Attributes inherited from plGameApplicationBase
static plGameApplicationBases_pGameApplicationBaseInstance = nullptr
 

Additional Inherited Members

- Public Attributes inherited from plGameApplicationBase
plCopyOnBroadcastEvent< const plGameApplicationExecutionEvent & > m_ExecutionEvents
 

Detailed Description

The base class for all typical game applications made with plEngine.

While plApplication is an abstraction for the operating system entry point, plGameApplication extends this to implement startup and tear down functionality of a typical game that uses the standard functionality of plEngine.

plGameApplication implements a lot of functionality needed by most games, such as setting up data directories, loading plugins, configuring the input system, etc.

For every such step a virtual function is called, allowing to override steps in custom applications.

The default implementation tries to do as much of this in a data-driven way. E.g. plugin and data directory configurations are read from DDL files. These can be configured by hand or using plEditor.

You are NOT supposed to implement game functionality by deriving from plGameApplication. Instead see plGameState.

plGameApplication will create exactly one plGameState by looping over all available plGameState types (through reflection) and picking the one whose DeterminePriority function returns the highest priority. That game state will live throughout the entire application life-time and will be stepped every frame.

Member Function Documentation

◆ Deinit_ShutdownGraphicsDevice()

void plGameApplication::Deinit_ShutdownGraphicsDevice ( )
overrideprotectedvirtual

Implements plGameApplicationBase.

◆ FindProjectDirectory()

plString plGameApplication::FindProjectDirectory ( ) const
overridevirtual

Implementation of plGameApplicationBase::FindProjectDirectory to define the 'project' special data directory.

The default implementation will try to resolve m_sAppProjectPath to an absolute path. m_sAppProjectPath can be absolute itself, relative to ">sdk/" or relative to plOSFile::GetApplicationDirectory(). m_sAppProjectPath must be set either via the plGameApplication constructor or manually set before project.

Alternatively, plGameApplication::FindProjectDirectory() must be overwritten.

Implements plGameApplicationBase.

Reimplemented in plEngineProcessGameApplication.

◆ Init_ConfigureAssetManagement()

void plGameApplication::Init_ConfigureAssetManagement ( )
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Init_ConfigureInput()

void plGameApplication::Init_ConfigureInput ( )
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Init_LoadRequiredPlugins()

void plGameApplication::Init_LoadRequiredPlugins ( )
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Init_SetupDefaultResources()

void plGameApplication::Init_SetupDefaultResources ( )
overrideprotectedvirtual
Todo
Loading Cubemap Texture

Reimplemented from plGameApplicationBase.

◆ Init_SetupGraphicsDevice()

void plGameApplication::Init_SetupGraphicsDevice ( )
overrideprotectedvirtual

Implements plGameApplicationBase.

◆ IsGameUpdateEnabled()

bool plGameApplication::IsGameUpdateEnabled ( ) const
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Run_AcquireImage()

void plGameApplication::Run_AcquireImage ( )
overrideprotectedvirtual

This function can be used to acquire a new window from a swap-chain or do any other update operations on windows before the multi-threaded rendering and update phase starts.

Reimplemented from plGameApplicationBase.

◆ Run_FinishFrame()

void plGameApplication::Run_FinishFrame ( )
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Run_PresentImage()

void plGameApplication::Run_PresentImage ( )
overrideprotectedvirtual

This function can be used to present the final image to a window. It is run at the end of the rendering phase. It can also be used to inspect the swap-chain e.g. for screenshot purposes before presenting.

Reimplemented from plGameApplicationBase.

◆ Run_ProcessApplicationInput()

bool plGameApplication::Run_ProcessApplicationInput ( )
overrideprotectedvirtual

Reimplemented from plGameApplicationBase.

◆ Run_WorldUpdateAndRender()

void plGameApplication::Run_WorldUpdateAndRender ( )
overrideprotectedvirtual

Implements plGameApplicationBase.


The documentation for this class was generated from the following files: