Drag[en]gine Game Engine  1.21
deEngine Class Reference

Drag[en]gine Game Engine Class. More...

#include <deEngine.h>

Public Member Functions

Constructors and Destructors
 deEngine (deOS *os, deVirtualFileSystem *fileSystem=NULL)
 Create game engine instance. More...
 
 ~deEngine ()
 
Management
decPRNGGetPRNG ()
 Default pseudo rundom number generator. More...
 
System Accessors
deModuleSystemGetModuleSystem () const
 
int GetSystemCount () const
 
deBaseSystemGetSystemAt (int index) const
 
deGraphicSystemGetGraphicSystem () const
 
deInputSystemGetInputSystem () const
 
dePhysicsSystemGetPhysicsSystem () const
 
deScriptingSystemGetScriptingSystem () const
 
deCrashRecoverySystemGetCrashRecoverySystem () const
 
deAnimatorSystemGetAnimatorSystem () const
 
deAudioSystemGetAudioSystem () const
 
deNetworkSystemGetNetworkSystem () const
 
deAISystemGetAISystem () const
 
deSynthesizerSystemGetSynthesizerSystem () const
 
deVRSystemGetVRSystem () const
 
void LoadModules ()
 Scan module directory and loads all modules in there. More...
 
Crash Recovery System (CRS)

Signals to the game engine unexpected errors in one of the engine systems. During the next update cycle the engine will enter CRS mode to handle the errors.

deErrorTraceGetErrorTrace () const
 Error trace object. More...
 
bool GetScriptFailed () const
 Scripting system failed. More...
 
void SignalScriptFailed ()
 Signals that the scripting system failed. More...
 
bool GetSystemFailed () const
 Determines if some other system failed. More...
 
void SignalSystemFailed ()
 Signals that some other system failed. More...
 
void ResetFailureFlags ()
 Reset failure flags. More...
 
deLoggerGetLogger () const
 Logger. More...
 
void SetLogger (deLogger *logger)
 Set logger. More...
 
Resource Manager Accessors

Retrieves various resource managers. You can either retrieve them by index or by specifying the resource type you are looking for. Furthermore there are convenience functions to safely access a resource manager of the given type.

int GetResourceManagerCount () const
 
deResourceManagerGetResourceManagerAt (int index) const
 
deResourceManagerGetResourceManagerFor (int resourceType) const
 
deAnimationManagerGetAnimationManager () const
 
deAnimatorManagerGetAnimatorManager () const
 
deAnimatorInstanceManagerGetAnimatorInstanceManager () const
 
deArchiveManagerGetArchiveManager () const
 
deBillboardManagerGetBillboardManager () const
 
deCanvasManagerGetCanvasManager () const
 
deCameraManagerGetCameraManager () const
 
deCaptureCanvasManagerGetCaptureCanvasManager () const
 
deColliderManagerGetColliderManager () const
 
deComponentManagerGetComponentManager () const
 
deConnectionManagerGetConnectionManager () const
 
deDebugDrawerManagerGetDebugDrawerManager () const
 
deDecalManagerGetDecalManager () const
 
deDynamicSkinManagerGetDynamicSkinManager () const
 
deEffectManagerGetEffectManager () const
 
deEnvMapProbeManagerGetEnvMapProbeManager () const
 
deFontManagerGetFontManager () const
 
deForceFieldManagerGetForceFieldManager () const
 
deHeightTerrainManagerGetHeightTerrainManager () const
 
deImageManagerGetImageManager () const
 
deLanguagePackManagerGetLanguagePackManager () const
 
deLightManagerGetLightManager () const
 
deLumimeterManagerGetLumimeterManager () const
 
deMicrophoneManagerGetMicrophoneManager () const
 
deModelManagerGetModelManager () const
 
deNavigationBlockerManagerGetNavigationBlockerManager () const
 
deNavigationSpaceManagerGetNavigationSpaceManager () const
 
deNavigatorManagerGetNavigatorManager () const
 
deNetworkStateManagerGetNetworkStateManager () const
 
deOcclusionMeshManagerGetOcclusionMeshManager () const
 
deParticleEmitterManagerGetParticleEmitterManager () const
 
deParticleEmitterInstanceManagerGetParticleEmitterInstanceManager () const
 
dePropFieldManagerGetPropFieldManager () const
 
deRenderWindowManagerGetRenderWindowManager () const
 
deRigManagerGetRigManager () const
 
deServerManagerGetServerManager () const
 
deSkinManagerGetSkinManager () const
 
deSkyManagerGetSkyManager () const
 
deSkyInstanceManagerGetSkyInstanceManager () const
 
deSmokeEmitterManagerGetSmokeEmitterManager () const
 
deSoundManagerGetSoundManager () const
 
deSoundLevelMeterManagerGetSoundLevelMeterManager () const
 
deSpeakerManagerGetSpeakerManager () const
 
deSynthesizerManagerGetSynthesizerManager () const
 
deSynthesizerInstanceManagerGetSynthesizerInstanceManager () const
 
deTouchSensorManagerGetTouchSensorManager () const
 
deVideoManagerGetVideoManager () const
 
deVideoPlayerManagerGetVideoPlayerManager () const
 
deWorldManagerGetWorldManager () const
 
deParallelProcessingGetParallelProcessing ()
 Parallel processing. More...
 
const deParallelProcessingGetParallelProcessing () const
 
deResourceLoaderGetResourceLoader () const
 Resource loader. More...
 
void RemoveLeakingResources ()
 Remove all resources and report them. More...
 
File System Management
const decStringGetDataDir () const
 Game data directory. More...
 
void SetDataDir (const char *dataDir)
 Set game data directory. More...
 
const decStringGetCacheAppID () const
 Unique catch directory identifier for the application. More...
 
void SetCacheAppID (const char *cacheAppID)
 Set unique catch directory identifier for the application. More...
 
deVirtualFileSystemGetVirtualFileSystem () const
 Virtual file system used by the game engine. More...
 
const decStringGetPathOverlay () const
 Overlay directory. More...
 
void SetPathOverlay (const char *path)
 Set overlay directory. More...
 
const decStringGetPathCapture () const
 Capture directory. More...
 
void SetPathCapture (const char *path)
 Set capture directory. More...
 
const decStringGetPathConfig () const
 Config directory. More...
 
void SetPathConfig (const char *path)
 Set config directory. More...
 
Frame Information
float GetElapsedTime () const
 Time elapsed since the last frame update in seconds. More...
 
void SetElapsedTime (float elapsed)
 Set the time elapsed since the last frame update in seconds. More...
 
int GetFPSRate () const
 Frame-per-second rate averaged over the last couple of frames. More...
 
Operating System Bindings
deCmdLineArgsGetArguments () const
 Command line arguments. More...
 
deOSGetOS () const
 Operating system object. More...
 
deVirtualFileSystemGetOSFileSystem () const
 OS file system or NULL if not used. More...
 
bool GetQuitRequest () const
 Determine if the engine received a quit request. More...
 
void Quit ()
 Requests the engine to quit before the next frame update cycle. More...
 
void ResetQuitRequest ()
 Reset quit request. More...
 

Game Engine Run Time

bool Run (const char *scriptDirectory, const char *gameObject)
 Run game engine. More...
 
bool Run (const char *scriptDirectory, const char *scriptVersion, const char *gameObject)
 Run game engine. More...
 
void ResetTimers ()
 Reset elapsed time counter. More...
 
void UpdateElapsedTime ()
 Update elapsed time since the last frame update using the internal timer. More...
 
void RunSingleFrame ()
 Run single frame update. More...
 

Detailed Description

Drag[en]gine Game Engine Class.

Manages the runtime of the entire game engine. Create one instance of this class for each game running. The class is safe to be used in multiple instances but this behaviour can be restricted by single type modules grabbing certain devices.

To launch successfully a game with this engine create first one instance of this class. Then set your game specific information to the shared data directory of the engine and your game data directory. You are now ready to launch the game by calling the run function. You need to specify the script directory inside your data directory where the scripting module has to look for your game scripts. The run function catches exceptions itself hence there is no need to enclose it in a try-catch block.

If you plan to use the library in slave mode hence only for rendering and you provide the run loop then you can do parts of the run() function yourself. Be carefull though as wrong setting will result in crashes. Wrapping all in an try-catch clause should be enough for testing to be safe.

Constructor & Destructor Documentation

◆ deEngine()

deEngine::deEngine ( deOS os,
deVirtualFileSystem fileSystem = NULL 
)

Create game engine instance.

OS file system is used if the engine installation is located outside the simple confines of an installation directory. If not NULL the file system has to provide the following structure:

  • /engine : read-only container with engine module libraries and definitions
  • /share : read-only container with shared engine and module files
  • /config : read-write container with engine and module config files
Parameters
[in]osOS object to use. Deleted during destructor.
[in]fileSystemOS file system or NULL if not used.

◆ ~deEngine()

deEngine::~deEngine ( )

Member Function Documentation

◆ GetAISystem()

deAISystem* deEngine::GetAISystem ( ) const

◆ GetAnimationManager()

deAnimationManager* deEngine::GetAnimationManager ( ) const

◆ GetAnimatorInstanceManager()

deAnimatorInstanceManager* deEngine::GetAnimatorInstanceManager ( ) const

◆ GetAnimatorManager()

deAnimatorManager* deEngine::GetAnimatorManager ( ) const

◆ GetAnimatorSystem()

deAnimatorSystem* deEngine::GetAnimatorSystem ( ) const

◆ GetArchiveManager()

deArchiveManager* deEngine::GetArchiveManager ( ) const

◆ GetArguments()

deCmdLineArgs* deEngine::GetArguments ( ) const
inline

Command line arguments.

◆ GetAudioSystem()

deAudioSystem* deEngine::GetAudioSystem ( ) const

◆ GetBillboardManager()

deBillboardManager* deEngine::GetBillboardManager ( ) const

◆ GetCacheAppID()

const decString& deEngine::GetCacheAppID ( ) const
inline

Unique catch directory identifier for the application.

If the path is empty no application specific cache will be provided.

◆ GetCameraManager()

deCameraManager* deEngine::GetCameraManager ( ) const

◆ GetCanvasManager()

deCanvasManager* deEngine::GetCanvasManager ( ) const

◆ GetCaptureCanvasManager()

deCaptureCanvasManager* deEngine::GetCaptureCanvasManager ( ) const

◆ GetColliderManager()

deColliderManager* deEngine::GetColliderManager ( ) const

◆ GetComponentManager()

deComponentManager* deEngine::GetComponentManager ( ) const

◆ GetConnectionManager()

deConnectionManager* deEngine::GetConnectionManager ( ) const

◆ GetCrashRecoverySystem()

deCrashRecoverySystem* deEngine::GetCrashRecoverySystem ( ) const

◆ GetDataDir()

const decString& deEngine::GetDataDir ( ) const
inline

Game data directory.

This directory is considered the virtual root directory of your gama data. All files handled with the file manager retrieved through GetFileManager are relative to this directory. The game engine uses this file manager to locate all resource files. Also the scripting system expects script files to be somewhere inside this directory.

◆ GetDebugDrawerManager()

deDebugDrawerManager* deEngine::GetDebugDrawerManager ( ) const

◆ GetDecalManager()

deDecalManager* deEngine::GetDecalManager ( ) const

◆ GetDynamicSkinManager()

deDynamicSkinManager* deEngine::GetDynamicSkinManager ( ) const

◆ GetEffectManager()

deEffectManager* deEngine::GetEffectManager ( ) const

◆ GetElapsedTime()

float deEngine::GetElapsedTime ( ) const
inline

Time elapsed since the last frame update in seconds.

◆ GetEnvMapProbeManager()

deEnvMapProbeManager* deEngine::GetEnvMapProbeManager ( ) const

◆ GetErrorTrace()

deErrorTrace* deEngine::GetErrorTrace ( ) const
inline

Error trace object.

◆ GetFontManager()

deFontManager* deEngine::GetFontManager ( ) const

◆ GetForceFieldManager()

deForceFieldManager* deEngine::GetForceFieldManager ( ) const

◆ GetFPSRate()

int deEngine::GetFPSRate ( ) const

Frame-per-second rate averaged over the last couple of frames.

◆ GetGraphicSystem()

deGraphicSystem* deEngine::GetGraphicSystem ( ) const

◆ GetHeightTerrainManager()

deHeightTerrainManager* deEngine::GetHeightTerrainManager ( ) const

◆ GetImageManager()

deImageManager* deEngine::GetImageManager ( ) const

◆ GetInputSystem()

deInputSystem* deEngine::GetInputSystem ( ) const

◆ GetLanguagePackManager()

deLanguagePackManager* deEngine::GetLanguagePackManager ( ) const

◆ GetLightManager()

deLightManager* deEngine::GetLightManager ( ) const

◆ GetLogger()

deLogger* deEngine::GetLogger ( ) const
inline

Logger.

◆ GetLumimeterManager()

deLumimeterManager* deEngine::GetLumimeterManager ( ) const

◆ GetMicrophoneManager()

deMicrophoneManager* deEngine::GetMicrophoneManager ( ) const

◆ GetModelManager()

deModelManager* deEngine::GetModelManager ( ) const

◆ GetModuleSystem()

deModuleSystem* deEngine::GetModuleSystem ( ) const
inline

◆ GetNavigationBlockerManager()

deNavigationBlockerManager* deEngine::GetNavigationBlockerManager ( ) const

◆ GetNavigationSpaceManager()

deNavigationSpaceManager* deEngine::GetNavigationSpaceManager ( ) const

◆ GetNavigatorManager()

deNavigatorManager* deEngine::GetNavigatorManager ( ) const

◆ GetNetworkStateManager()

deNetworkStateManager* deEngine::GetNetworkStateManager ( ) const

◆ GetNetworkSystem()

deNetworkSystem* deEngine::GetNetworkSystem ( ) const

◆ GetOcclusionMeshManager()

deOcclusionMeshManager* deEngine::GetOcclusionMeshManager ( ) const

◆ GetOS()

deOS* deEngine::GetOS ( ) const
inline

Operating system object.

◆ GetOSFileSystem()

deVirtualFileSystem* deEngine::GetOSFileSystem ( ) const
inline

OS file system or NULL if not used.

OS file system is used if the engine installation is located outside the simple confines of an installation directory.

Warning
Do not make this file system available to game scripts. Faulty or malicious applications could damage the system or the content of the file system.

◆ GetParallelProcessing() [1/2]

deParallelProcessing& deEngine::GetParallelProcessing ( )
inline

Parallel processing.

◆ GetParallelProcessing() [2/2]

const deParallelProcessing& deEngine::GetParallelProcessing ( ) const
inline

◆ GetParticleEmitterInstanceManager()

deParticleEmitterInstanceManager* deEngine::GetParticleEmitterInstanceManager ( ) const

◆ GetParticleEmitterManager()

deParticleEmitterManager* deEngine::GetParticleEmitterManager ( ) const

◆ GetPathCapture()

const decString& deEngine::GetPathCapture ( ) const
inline

Capture directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which capture data is stored or an empty string if not available.

◆ GetPathConfig()

const decString& deEngine::GetPathConfig ( ) const
inline

Config directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which config data is stored or an empty string if not available.

◆ GetPathOverlay()

const decString& deEngine::GetPathOverlay ( ) const
inline

Overlay directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which overlay data is stored or an empty string if not available.

◆ GetPhysicsSystem()

dePhysicsSystem* deEngine::GetPhysicsSystem ( ) const

◆ GetPRNG()

decPRNG& deEngine::GetPRNG ( )
inline

Default pseudo rundom number generator.

◆ GetPropFieldManager()

dePropFieldManager* deEngine::GetPropFieldManager ( ) const

◆ GetQuitRequest()

bool deEngine::GetQuitRequest ( ) const
inline

Determine if the engine received a quit request.

◆ GetRenderWindowManager()

deRenderWindowManager* deEngine::GetRenderWindowManager ( ) const

◆ GetResourceLoader()

deResourceLoader* deEngine::GetResourceLoader ( ) const
inline

Resource loader.

◆ GetResourceManagerAt()

deResourceManager* deEngine::GetResourceManagerAt ( int  index) const

◆ GetResourceManagerCount()

int deEngine::GetResourceManagerCount ( ) const

◆ GetResourceManagerFor()

deResourceManager* deEngine::GetResourceManagerFor ( int  resourceType) const

◆ GetRigManager()

deRigManager* deEngine::GetRigManager ( ) const

◆ GetScriptFailed()

bool deEngine::GetScriptFailed ( ) const
inline

Scripting system failed.

◆ GetScriptingSystem()

deScriptingSystem* deEngine::GetScriptingSystem ( ) const

◆ GetServerManager()

deServerManager* deEngine::GetServerManager ( ) const

◆ GetSkinManager()

deSkinManager* deEngine::GetSkinManager ( ) const

◆ GetSkyInstanceManager()

deSkyInstanceManager* deEngine::GetSkyInstanceManager ( ) const

◆ GetSkyManager()

deSkyManager* deEngine::GetSkyManager ( ) const

◆ GetSmokeEmitterManager()

deSmokeEmitterManager* deEngine::GetSmokeEmitterManager ( ) const

◆ GetSoundLevelMeterManager()

deSoundLevelMeterManager* deEngine::GetSoundLevelMeterManager ( ) const

◆ GetSoundManager()

deSoundManager* deEngine::GetSoundManager ( ) const

◆ GetSpeakerManager()

deSpeakerManager* deEngine::GetSpeakerManager ( ) const

◆ GetSynthesizerInstanceManager()

deSynthesizerInstanceManager* deEngine::GetSynthesizerInstanceManager ( ) const

◆ GetSynthesizerManager()

deSynthesizerManager* deEngine::GetSynthesizerManager ( ) const

◆ GetSynthesizerSystem()

deSynthesizerSystem* deEngine::GetSynthesizerSystem ( ) const

◆ GetSystemAt()

deBaseSystem* deEngine::GetSystemAt ( int  index) const

◆ GetSystemCount()

int deEngine::GetSystemCount ( ) const

◆ GetSystemFailed()

bool deEngine::GetSystemFailed ( ) const
inline

Determines if some other system failed.

◆ GetTouchSensorManager()

deTouchSensorManager* deEngine::GetTouchSensorManager ( ) const

◆ GetVideoManager()

deVideoManager* deEngine::GetVideoManager ( ) const

◆ GetVideoPlayerManager()

deVideoPlayerManager* deEngine::GetVideoPlayerManager ( ) const

◆ GetVirtualFileSystem()

deVirtualFileSystem* deEngine::GetVirtualFileSystem ( ) const
inline

Virtual file system used by the game engine.

◆ GetVRSystem()

deVRSystem* deEngine::GetVRSystem ( ) const

◆ GetWorldManager()

deWorldManager* deEngine::GetWorldManager ( ) const

◆ LoadModules()

void deEngine::LoadModules ( )

Scan module directory and loads all modules in there.

◆ Quit()

void deEngine::Quit ( )

Requests the engine to quit before the next frame update cycle.

◆ RemoveLeakingResources()

void deEngine::RemoveLeakingResources ( )

Remove all resources and report them.

This function is used to check if a game left behind unreleased resources and to release the. This ensures a new game can use the same engine without potential left behind resources of the previous game to pollute the memory. Leaving behind resources after the game finished is a bug and thus this function lists all culprit resources as good as possible. The engine call this method before releasing all the resource managers.

◆ ResetFailureFlags()

void deEngine::ResetFailureFlags ( )

Reset failure flags.

◆ ResetQuitRequest()

void deEngine::ResetQuitRequest ( )

Reset quit request.

◆ ResetTimers()

void deEngine::ResetTimers ( )

Reset elapsed time counter.

This is usefull after lengthy time operations like loading a game. Without this call the reported amount of seconds elapsed since the last frame update can grow tremendously huge resulting in strange movements in the first frame after the player takes control.

◆ Run() [1/2]

bool deEngine::Run ( const char *  scriptDirectory,
const char *  gameObject 
)

◆ Run() [2/2]

bool deEngine::Run ( const char *  scriptDirectory,
const char *  scriptVersion,
const char *  gameObject 
)

Run game engine.

Calling this function the control is handed over to the game engine. The scripts in the specified directory ( relative to the data directory ) are parsed and executed. This function returns control to you after a quit-request has been issued or an unrecoverable error has occurred. The return value indicates if the game engine exited under normal circumstances or due to a severe error. This function already handles exceptions so there is no need to enclose it in a try-catch block.

Parameters
scriptDirDirectory relative to data directory containing the script files for your game.
scriptVersionScript version the application has been written against.
gameObjectInitial game object to create. Script module specific value. Usually a class or function name to use to create the game object
Returns
true if the game engine exited under normal circumstances or false if an unrecoverable error occurred

◆ RunSingleFrame()

void deEngine::RunSingleFrame ( )

Run single frame update.

Used by launchers taking control of the entire engine run-time instead of handing it off using the Run function. In particular this does (in this order):

  • Send input events to the active scripting module.
  • Update the engine resource loader.
  • Call OnFrameUpdate function on the active scripting module.
  • Process audio using the active audio module.
  • Process networking using the active network module.
  • Call BeginFrame on the active graphic module.
  • Call EndFrame on the active graphic module.

On errors the processing exits the function immediately. Check if GetScriptFailed or GetSystemFailed returns true and enter error handling if this is the case. UpdateElapsedTime or SetElapsedTime has to be called before calling this function.

Note
The frame rate is capped at 200 Hz to avoid very small time steps in case the main thread components run fast. This frame rate limit is indepedent of frame rate limits imposed by engine modules.

◆ SetCacheAppID()

void deEngine::SetCacheAppID ( const char *  cacheAppID)

Set unique catch directory identifier for the application.

If the path is empty no application specific cache will be provided.

◆ SetDataDir()

void deEngine::SetDataDir ( const char *  dataDir)

Set game data directory.

This directory is considered the virtual root directory of your gama data. All files handled with the file manager retrieved through GetFileManager are relative to this directory. The game engine uses this file manager to locate all resource files. Also the scripting system expects script files to be somewhere inside this directory.

◆ SetElapsedTime()

void deEngine::SetElapsedTime ( float  elapsed)

Set the time elapsed since the last frame update in seconds.

Can be called instead of UpdateElapsedTime to explicitely set the elapsed time. Resets the elapsed time timer and updates the FPS Rate.

◆ SetLogger()

void deEngine::SetLogger ( deLogger logger)

Set logger.

◆ SetPathCapture()

void deEngine::SetPathCapture ( const char *  path)

Set capture directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which capture data is stored or an empty string if not available.

◆ SetPathConfig()

void deEngine::SetPathConfig ( const char *  path)

Set config directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which config data is stored or an empty string if not available.

◆ SetPathOverlay()

void deEngine::SetPathOverlay ( const char *  path)

Set overlay directory.

Version
1.7

Set by the launcher to indicate to script modules the native path under which overlay data is stored or an empty string if not available.

◆ SignalScriptFailed()

void deEngine::SignalScriptFailed ( )
inline

Signals that the scripting system failed.

◆ SignalSystemFailed()

void deEngine::SignalSystemFailed ( )
inline

Signals that some other system failed.

◆ UpdateElapsedTime()

void deEngine::UpdateElapsedTime ( )

Update elapsed time since the last frame update using the internal timer.

Used by launchers taking control of the entire engine run-time instead of handing it off using the Run function. Use ResetTimers to avoid too long elapsed time after long operations or use SetElapsedTime to set the elapsed time explicitely. Using this function though is the better solution. Updates the FPS rate. After this function RunDoSingleFrame is typically called. Before this function is called ProcessInput has to be called on the active input module and the quit request checked first.


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