![]() |
VR-Forces Developer's Guide
|
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.

Public Types | |
| enum | RenderingApiType { RenderingApiType::None, RenderingApiType::OpenGL } |
| enum | InitializationResult { Initialized = 1, UnableToInitialize = 0, UnableToInitializeDueToLicense = -1 } |
| typedef std::vector< std::pair < DtDeError, bool > > | DeErrors |
Static Public Member Functions | |
| static const char * | className () |
Public Attributes | |
Signals | |
| boost::signalslib::signal< void()> | signal_initializeDefaultState |
| boost::signalslib::signal< void()> | signal_postInitialize |
| boost::signalslib::signal < void(DtDe &)> | signal_preTick |
| boost::signalslib::signal< void()> | signal_postTick |
| boost::signalslib::signal < void(const std::string &, const std::string &)> | signal_displayConfigurationRealized |
| boost::signalslib::signal < void(const DtDisplayConfiguration &)> | signal_displayConfigurationAdded |
| boost::signalslib::signal < void(const std::string &)> | signal_displayToBeDestroyed |
| boost::signalslib::signal < void(const std::string &, const DtDisplayConfiguration &)> | signal_displayModified |
| boost::signalslib::signal < void(const std::string &, const DtWindowConfiguration &)> | signal_windowConfigurationAdded |
| boost::signalslib::signal < void(const std::string &, const std::string &)> | signal_windowConfigurationToBeDestroyed |
| boost::signalslib::signal < void(const std::string &, const std::string &, const DtWindowConfiguration &)> | signal_windowConfigurationModified |
| boost::signalslib::signal < void(const std::string &, const std::string &, const DtChannelConfiguration &)> | signal_channelConfigurationAdded |
| boost::signalslib::signal < void(const std::string &, const std::string &, const std::string &)> | signal_channelToBeDestroyed |
| boost::signalslib::signal < void(const std::string &, const std::string &, const std::string &, const DtChannelConfiguration &)> | signal_channelConfigurationModified |
| boost::signalslib::signal < void(const DtDeError &error, bool critical)> | signal_deError |
| boost::signalslib::signal< void()> | signal_quit |
| boost::signalslib::signal< void()> | signal_pause |
| boost::signalslib::signal< void()> | signal_resume |
| boost::signalslib::signal< void()> | signal_aboutToAutoStartDrivers |
Protected Types | |
| enum | LicenseTypes { NoLicense = -1, Master3D_License = 0, XR_License = 1, PVD_License = 2 } |
| typedef std::vector< void * > | InitFunctionVector |
| typedef std::map< std::string, DtVirtualBaseClass * > | RootedSingletonMap |
| typedef std::map < StaticInstanceFunction, DtVirtualBaseClass * > | FastRootedSingletonMap |
| typedef std::map< std::string, DtDisplayProxyWP > | DisplayEngineProxyMap |
Static Protected Attributes | |
| static const char * | myClassName |
Friends | |
| class | DtDeProctor |
Local Functions | |
| typedef DtVirtualBaseClass &(* | StaticInstanceFunction )(DtDe &) |
| virtual void | setSimulationTime (double time) |
| virtual double | systemTime () const |
| virtual void | setCurrentFrameNumber (unsigned int frameNumber) |
| virtual unsigned int | currentFrameNumber () const |
| virtual bool | isPaused () const |
| virtual void | pause () |
| virtual void | resume () |
| double | pausedTime () const |
| virtual DtVirtualBaseClass * | findFastInstance (StaticInstanceFunction classInstanceFunction) const |
| template<typename Class > | |
| DtVirtualBaseClass * | findFastInstance (Class &(*staticInstFunc)(DtDe &)) const |
| virtual void | registerFastInstance (StaticInstanceFunction classInstanceFunction, DtVirtualBaseClass *inst) |
| template<typename Class > | |
| void | registerFastInstance (Class &(*staticInstFunc)(DtDe &), DtVirtualBaseClass *inst) |
| virtual DtVirtualBaseClass * | findInstance (const std::string &instanceName) const |
| virtual void | registerInstance (const std::string &instanceName, DtVirtualBaseClass *instance) |
| virtual void | registerProctor (unsigned short handlerId, DtProctor *) |
| virtual void | unregisterProctor (unsigned short handlerId) |
| DtProctor * | findProctor (unsigned short handlerId) const |
| DtDisplayProxySP | findDisplay (const std::string &displayName) |
| virtual DtDisplayProxySP | findDisplayByIndex (int index) |
| void | setRenderFrameThisTick (bool update) |
| virtual bool | modelSetActive (DtModelSetId i) const |
| virtual void | determineActiveModelSets () |
| virtual bool | isValidDisplayConfiguration (const DtDisplayConfiguration &dec) |
| virtual void | createDebugLog (const std::string &fileName, DtDebugLog::PrintLevel level) |
| virtual void | startLogFrameTime () |
| virtual void | stopLogFrameTime () |
| typedef std::vector<std::pair<DtDeError,bool> > makVrv::DtDe::DeErrors |
Typedef of a vector of error/critical.
| typedef DtVirtualBaseClass&(* makVrv::DtDe::StaticInstanceFunction)(DtDe &) |
Define the static instance function type for fast instance lookup.
|
protected |
This vector stores the address of registered init functions.
|
protected |
|
protected |
|
protected |
|
strong |
Result codes for the initialize() function.
| Enumerator | |
|---|---|
| Initialized | |
| UnableToInitialize | |
| UnableToInitializeDueToLicense | |
|
protected |
| makVrv::DtDe::DtDe | ( | ) |
CTOR.
|
virtual |
DTOR occur after the subclass of DtDe has been called.
| bool makVrv::DtDe::destructing | ( | ) |
Get if the Display Engine is in the process of destructing (typically steps like disconnecting signals is unnecessary). During destruction members will become invalid.
| bool makVrv::DtDe::resetting | ( | ) |
During a reset, order of destruction of agent-based or singleton objects is not guaranteed. Check this flag first if you are assuming that something you have a pointer to that meets the criteria above hasn't been deleted yet. Even trickier is raising signals when destructing, because is you are in a reset() or exit situation there may be things with signal connections to that destructing single that have been deleted.
|
virtual |
Set the Display Engine initializer used to initialize the Display Engine. This call will do nothing if the Display Engine is already initialized. Also sets the DtDePathConfiguration and DtDeConfiguration from the initializer.
Reimplemented in DtGuiOnlyDe.
|
virtual |
Set the path configuration for an uninitialized Display Engine. This call will do nothing if the Display Engine is already initialized. Note: setDeInitializer will override the path configuration with the initializer's path configuration.
|
virtual |
Initialize the application prior to running it. It is required that this function be called prior to a call to run. If the default DtDe::run is not used, and rather tick is called repeatedly, it is still required that this function get called. Note that the Display Engine must run in the thread that calls initialize. If useLicenseErrorDialog is true and the appropriate DLLs have been included, failure to check out a VR-Vantage license will cause a dialog to be raised requesting licensing information. (this may still ultimately result in not finding a license). If abortOnLicenseFailure is true, the application will exit on license failure. Set this to false to utilize the InitializationResult return value.
Reimplemented in DtGuiOnlyDe, and DtSingleton.
| bool makVrv::DtDe::initialized | ( | ) | const |
Get whether the application is initialized.
Referenced by makVrv::defaultManagerInstanceFunction(), and makVrv::defaultManagerRegisterInstanceFunction().
| DtThreadId makVrv::DtDe::threadId | ( | ) |
Get the thread id that the Display Engine was initialized in and must rung in.
| DtCorruptedState | if called before initialized. |
|
virtual |
Set the de configuration. This call is only valid BEFORE calls to initialize. Note: setDeInitializer will override the de configuration with the initializer's de configuration.
Throws DtCorruptsState if the Display Engine has already been initialized.
|
virtual |
A very important function which provides a since tick of execution which is required for the app to run for one 'logical' frame. This function must be called repeatedly typically as often as possible.
| DtCorruptedState | if called before the Display Engine is initialized. |
| Input | |
| simTime | is the simulation time of the 'update cycle'. Typically this is the amount of time in seconds since the DtDe was started (to get real time behavior). |
Reimplemented in DtGuiOnlyDe, and makVrf::DtVrfDe.
|
inline |
Retick is a helper function for simply ticking using the current Simulation time. This may be necessary if performing multiple 'passes' over the same time.
|
virtual |
Method for checking to see if the app should stop ticking. This works only with the defaultRun function, unless explicitly used in the alternate run function's implementation.
|
virtual |
Set whether it is time to stop ticking.
|
virtual |
Call this method to quit and exit the application.
Reimplemented in DtDisplayWidgetDe, and makVrf::DtVrfDe.
|
virtual |
Resets DtIG to a pre-configured state.
|
virtual |
Update the scene if it needs to be updated.
|
virtual |
DtDeConfiguration accessor.
|
virtual |
DtDeCommunicator accessor.
| DtCorruptedState | if called before the Display Engine is initialized. |
| DtMainEventQueue& makVrv::DtDe::mainEventQueue | ( | ) |
|
virtual |
DtDisplay accessor. The returned pointer will be NULL before initialize is called, and may be null after.
|
virtual |
The DtScene accessor.
| DtCorruptedState | if called before the Display Engine is initialized. |
| DtCorruptedState | if the Display Engine is configured to be a slave. |
|
virtual |
The DtDataBank accessor.
| DtCorruptedState | if the Display Engine is configured to be a slave. |
Referenced by makVrv::DtSimObjectEntryCollection< T >::DtSimObjectEntryCollection(), and makVrv::DtStateViewCollection< T >::DtStateViewCollection().
|
virtual |
The DtMasterScene accessor. The function will throw before the initialize function is called.
| DtCorruptedState | if called before the Display Engine is initialized. |
| bool makVrv::DtDe::driverManagerCreated | ( | ) | const |
You can call this method to see if the DtDriverManager exists.
|
virtual |
DtMessageDispatcher accessor.
|
inline |
Inline access for the debug log object.
Referenced by makVrv::DtAerodromeNode< ComponentTypeData >::DtAerodromeNode().
| DtAgentManager& makVrv::DtDe::agentManager | ( | ) |
Get the scene manager.
| DtCorruptedState | if called before the Display Engine is initialized. |
Referenced by makVrv::Cast< DesiredType >::toFunctionType().
| DtBackgroundLoader& makVrv::DtDe::backgroundLoader | ( | ) |
Get the background loader.
|
virtual |
Get the simulation time.
|
virtual |
Get the simulation time or the synced NTP time (if the –hasNTPSync / -O flag has been set) Currently this method is used to synchronize triton ocean and speedtree.
|
virtual |
The DtSynchronizedTimeManager manages synchronized time when used. The accessor to it makes it possible to use the sync time manager's API, which allows for time scaling and a time offset. These are not used in VR-Vantage.
|
virtual |
Get the display count.
|
virtual |
Return the DtDeInitializer.
Referenced by makVrv::DtCommonBaseSettingsManager< makArchives::DtEntitySettingsRecord >::loadDefaults().
|
virtual |
Return the DtDePathConfiguration.
|
virtual |
Returns true if the DtDe is in master mode.
|
virtual |
Returns true if the DtDe is in slave mode.
Referenced by makVrv::defaultManagerInstanceFunction().
|
virtual |
Returns the DtDeSharedState object.
|
virtual |
DtDeConfiguration accessor.
|
virtual |
DtDeConfiguration accessor.
|
virtual |
DtSchemaManager accessor.
| DtCorruptedState | if called before the DtDe is initialized. |
|
virtual |
DtDeConfiguration accessor.
|
virtual |
Returns DtFileCache.
|
virtual |
Returns myIgErrors.
|
virtual |
Clears myIgErrors.
|
virtual |
Get the renderer.
Referenced by makVrv::DtTemplatedTickableCreator< TickableToCreate, add >::create().
| bool makVrv::DtDe::renderFrameThisTick | ( | ) | const |
Gets if we will render this frame.
|
virtual |
Gets if a license can be found to run with the features specified in the DtDeInitializer. Therefore this must be called AFTER SetDeInitializer to get the correct result.
|
virtual |
access the intersector draw manager. non-const
|
virtual |
access the intersector draw manager. const
|
virtual |
Add a new display, if the display engine matches the local name then the de display engine is realized. This function should not be called before the display engine is initialized.
|
virtual |
Make a client realize a display configuration.
| Input | |
| clientName | is the name of the client, this is queriable from the master DtDe's client list. |
| displayName | is the name of the display configuration to realize. |
| DtInvalidInput | if no client has the clientName or if no configuration has the displayName. |
|
virtual |
Remove a display. The proxy will be invalid after this call, and can not be used.
|
virtual |
Remove a display. If the display matches the local name then the de display is destroyed.
|
virtual |
Removes all display.
|
virtual |
Modify a display.
|
virtual |
Set the simulation time.
Reimplemented in makVrf::DtVrfDe.
|
virtual |
Used in special cases of absolute time stamping, this will return absolute wall clock time from the DtClock. This might or might not be the same time as the simulationTime.
called by the renderer to keep the de in sync with the viewer
Used to keep the viewer using the same frame number even if the display is recreated.
|
virtual |
Returns whether simulation time is paused.
|
virtual |
This pauses the advancement of time, but the renderer continues to render. This will cause all dead reckoning, particle system updates, dynamic ocean updates, etc. to stop. While paused, simulationTime() will return the same value.
|
virtual |
Resume the advancement of simulation time.
| double makVrv::DtDe::pausedTime | ( | ) | const |
pausedTime() provides an advancing time for use by objects that need it (such as the observer and observer eventProcessor) when simTime is paused. Users of this method are responsible for dealing with the fact that when switching from paused time back to sim time, there will be a backwards jump
|
virtual |
Find an instance with the given name. If no instance is found than a null pointer is returned.
Referenced by makVrv::defaultManagerInstanceFunction().
|
inline |
The instance key is always return the subclass of the virtual base class, since it returns a reference (aka a pointer) it is safe to cast the function pointer.
|
virtual |
Register a fast instance, if the inst is a null pointer the instance key is removed.
Referenced by makVrv::defaultManagerRegisterInstanceFunction().
|
inline |
The instance key is always return the subclass of the virtual base class, since it returns a reference (aka a pointer) it is safe to cast the function pointer.
|
virtual |
Find an instance with the given name. If no instance is found than a null pointer is returned.
Reimplemented in DtDisplayWidgetDe.
Referenced by makVrv::DtSubjectAnnouncer< T >::findInstance(), and makVrv::DtVirtualBaseClassCreator< ClassToCreate, ConstructorArgs >::instance().
|
virtual |
Register an instance with a given name for later retrieval. Once registered, the DtDe takes ownership and manages the lifetime of the instance. Ownership cannot be transfered back from the DtDe. Registering a new instance under an existing name will cause the existing instance to be destroyed. Registering a NULL instance under an existing name will cause the existing instance to be destroyed. Because the DtDe manages the lifetime of the registered instances, do not save handles to any instance as they can be destroyed without notice.
Referenced by makVrv::DtSubjectAnnouncer< T >::findInstance(), makVrv::DtVirtualBaseClassCreator< ClassToCreate, ConstructorArgs >::instance(), and makVrv::DtVirtualBaseClassCustomCreator< CustomClassToCreate, BaseCreatorClass, ConstructorArgs >::registerInstance().
Register an proctor object.
|
virtual |
Unregister a handler This should be called before the handler is deallocated..
| DtDisplayProxySP makVrv::DtDe::findDisplay | ( | const std::string & | displayName | ) |
Find a Display by name.
| DtCorruptedState | if proxy is invalid. |
|
virtual |
Get the display by index.
| void makVrv::DtDe::setRenderFrameThisTick | ( | bool | update | ) |
Sets that the frame will be rendered this tick.
|
virtual |
Indicate if the specified model set is active this tick. Values out of range return false.
|
virtual |
Determine which model sets are active this frame. A model set is active if there is an observer using that model set.
|
virtual |
Returns true if the display configuration is valid and can be realized.
|
virtual |
create the debug log for logging information to a file
Reimplemented in DtDisplayWidgetDe, makVrf::DtVrfDe, and DtVrfDe.
|
virtual |
Start logging a list of frametimes. If a log is currently in progress, this will reset the log. There is a hard-coded limit to the number of frames that can be logged (36000, 10 minutes @ 60hz). If that value is exceeded, the current list of frames is outputted and the logging stops. By default, this is bound to the 'P' key in the Observer Frame key map.
|
virtual |
Define the static instance function type for fast instance lookup.
|
virtual |
Called when a client is added.
Called when an error is emitted.
|
static |
Returns the name of this class. Required for DtSubjectAnnouncer::findInstance().
| void makVrv::DtDe::registerInitFunction | ( | void * | address | ) |
Register address of init function so DtDe instance knows that module was already instanced.
| bool makVrv::DtDe::isInitFunctionRegistered | ( | void * | address | ) |
Returns true if init function has already been registered.
|
inline |
Helper function used to check if a message needs to be created and sent.
|
virtual |
used to control running the ICO and main thread system at the end of the frame, defaults to .016
|
virtual |
how long each frame should take, VRV will use extra time at the end of rendering to stream more data down to the gpu
|
virtual |
starts the profiler next frame, only safe for IMGui to call
|
virtual |
stops the profiler next frame, only safe for IMGui to call
|
virtual |
last update time for profiling
|
virtual |
Set whether or not critical emitDeError messages raise a dialog, or just go to console.
|
virtual |
Get whether or not critical emitDeError messages raise a dialog, or just go to console.
|
virtual |
Set the rendering API being used. This is called internally only and currently called by and controlled by vrvOsg::Init.
|
virtual |
Returns the rendering API being used.
|
protectedvirtual |
Count the number of embedded windows in the display configuration.
|
protectedvirtual |
Check whether the DtDe should skip this tick to maintain a fixed frame rate.
Reimplemented in makVrf::DtVrfDe.
|
protectedvirtual |
Check whether the DtDe should skip this tick to maintain a fixed frame rate.
Check whether the DtDe should skip this tick to maintain a fixed frame rate.
|
protectedvirtual |
Connect initialized components and call postInit signal.
Reimplemented in DtDisplayWidgetDe, DtGuiOnlyDe, DtVrfDe, and DtEditingWindowDe.
|
protectedvirtual |
Master-only post initialize code.
|
protectedvirtual |
Check that the data package is installed, and emit an error if not.
|
protected |
Default implementation of a slave's tick.
|
protected |
Default implementation of a master's tick.
|
protected |
Update the scene and render, elapsedTimeis used to figure out how much time is left for additional streaming.
|
protected |
Get the proctor.
|
protectedvirtual |
Attempt to realize a display configuration.
|
protectedvirtual |
Remove a display. If the display matches the local name then the de display is destroyed.
|
protectedvirtual |
Modify a display.
|
protected |
create the display engine.
|
protected |
Create the Display Engine Driver.
|
protected |
Destroy the display.
|
protected |
Internal implementation of adding a display.
|
protectedvirtual |
Internal initialization of stats manager.
|
friend |
| boost::signalslib::signal<void ()> makVrv::DtDe::signal_initializeDefaultState |
Signal emitted during initialization at at time when it is possible to initialize default state. The De will not be initialized, also other objects may not exist. Typically it is only safe for an object to connect to this signal to initialize itself often from a file on disk.
Referenced by makVrv::defaultManagerRegisterInstanceFunction().
| boost::signalslib::signal<void ()> makVrv::DtDe::signal_postInitialize |
Signal emitted at the end of the initialization function. This is useful for executing code after the Display Engine is initialized, but before it starts running. Such as updating values from settings objects since they cannot be accessed during initialization.
| boost::signalslib::signal<void (DtDe&)> makVrv::DtDe::signal_preTick |
Signal emitted at the beginning of the tick function. This is useful for executing code before the Display Engine does anything during its tick. Sometimes there is code which is necessary for multiplexing the Display Engine aka setting the Display Engine by a temporal pattern since multiple IGs may not tick at the same time.
Referenced by makVrv::DtKeyedDataManagerTemplate< KeyType, KeyTypeHasher >::DtKeyedDataManagerTemplate().
| boost::signalslib::signal<void ()> makVrv::DtDe::signal_postTick |
Signal emitted at the end of the tick function. This is useful for executing code after the Display Engine does everything during its tick. Sometimes there is code which is necessary for multiplexing the Display Engine aka setting the Display Engine by a temporal pattern since multiple IGs may not tick at the same time.
Referenced by makVrv::DtKeyedDataManagerTemplate< KeyType, KeyTypeHasher >::DtKeyedDataManagerTemplate().
| boost::signalslib::signal<void (const std::string&, const std::string&)> makVrv::DtDe::signal_displayConfigurationRealized |
Emitted when a Display Engine is told to realize a display configuration. Signal with the name of the Display Engine, and the name of the Display realized.
| boost::signalslib::signal<void (const DtDisplayConfiguration&)> makVrv::DtDe::signal_displayConfigurationAdded |
Emitted when a display is added. Signal with a const DtDisplayConfiguration& argument and a void return value.
| boost::signalslib::signal<void (const std::string&)> makVrv::DtDe::signal_displayToBeDestroyed |
Emitted when a display is removed. The signal is emitted then the configuration is destroyed. Signal with a const std::string& argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const DtDisplayConfiguration&)> makVrv::DtDe::signal_displayModified |
Emitted when a display is modified. Signal with display engine name and display configuration argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const DtWindowConfiguration&)> makVrv::DtDe::signal_windowConfigurationAdded |
Emitted when a window is added. Signal with a display engine name and DtViewConfiguration argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const std::string&)> makVrv::DtDe::signal_windowConfigurationToBeDestroyed |
Emitted when a window is destroyed. The signal is emitted then the configuration is destroyed. Signal with a display engine name and a window name argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const std::string&, const DtWindowConfiguration&)> makVrv::DtDe::signal_windowConfigurationModified |
Emitted when an realized window is modified. Signal with a display engine name and a window name and window config argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const std::string&, const DtChannelConfiguration&)> makVrv::DtDe::signal_channelConfigurationAdded |
Emitted when a channel is added. Signal with a display engine name, window name and DtChannelConfiguration argument and a void return value.
| boost::signalslib::signal<void (const std::string&, const std::string&, const std::string&)> makVrv::DtDe::signal_channelToBeDestroyed |
Signal is emitted, then the channel is destroyed. Signal with a display engine name,window name and channel name arguments and a void return value.
| boost::signalslib::signal<void (const std::string&, const std::string&, const std::string&, const DtChannelConfiguration&)> makVrv::DtDe::signal_channelConfigurationModified |
Emitted when a channel is modified. Signal with a display engine name, window name , old channel name and DtChannelConfiguration argument and a void return value.
| boost::signalslib::signal<void (const DtDeError& error, bool critical)> makVrv::DtDe::signal_deError |
Listen to this signal for Display Engine errors. DO NOT EMIT using this signal. Emit using the emit function below.
| boost::signalslib::signal<void ()> makVrv::DtDe::signal_quit |
Signal emitted by the quit method. Applications should listen for this signal and respond appropriately.
| boost::signalslib::signal<void()> makVrv::DtDe::signal_pause |
signal emitted by the pause method.
| boost::signalslib::signal<void()> makVrv::DtDe::signal_resume |
signal emitted by the resume method.
| boost::signalslib::signal<void()> makVrv::DtDe::signal_aboutToAutoStartDrivers |
Signal emitted during initialization at at time when it is possible to initialize default state. The De will not be initialized, also other objects may not exist. Typically it is only safe for an object to connect to this signal to initialize itself often from a file on disk.
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
used to budget streaming at the end of a frame
|
protected |
used by stats system
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |