VR-Engage  2.2
Loading...
Searching...
No Matches
makVre::DtExtendedEngagedState Class Reference

Detailed Description

This class shows how to extend VR-Engage's built-in DtEngagedState with custom functionality. It demonstrates proper integration with the Qt framework, state lifecycle management, and VR-Engage message handling patterns.

Key patterns demonstrated:

  • Player station state extension and registration
  • State lifecycle methods (onEnter, onExit, onStacked, onExposed)
  • Qt Quick window management within a state
  • VR-Engage message handler registration and cleanup
  • Proper resource lifecycle management

This is a REUSABLE pattern for any custom player station state that needs to:

  • Add custom UI elements during specific states
  • Handle simulation messages specific to a state
  • Manage Qt-based windows with proper show/hide on state transitions

#include <extendedEngagedState.h>

Inheritance diagram for makVre::DtExtendedEngagedState:
[legend]

Public Member Functions

 DtExtendedEngagedState (DtPlayerStationApp &app)
 
virtual ~DtExtendedEngagedState () override
 
virtual void onEnter (const DtPlayerStationStateArgs *args) override
 
virtual void onExit () override
 
virtual void tick (double dt) override
 
virtual void onExposed () override
 
virtual void onStacked () override
 
virtual DtVreMessageResult handleTextMessage (DtVreMessage *message)
 
- Public Member Functions inherited from makVre::DtEngagedState
 DtEngagedState (DtPlayerStationApp &app)
 
virtual ~DtEngagedState () override
 
virtual bool isPlaying () const
 
virtual DtVreMessageResult handleEscKey (DtVreMessage *message)
 
virtual DtVreMessageResult handleBackButtonClicked (DtVreMessage *message)
 
- Public Member Functions inherited from makVre::DtPlayerStationState
 DtPlayerStationState (DtPlayerStationApp &app, std::string stateType)
 
virtual ~DtPlayerStationState ()
 
 DtPlayerStationState (const DtPlayerStationState &)=delete
 
DtPlayerStationStateoperator= (const DtPlayerStationState &)=delete
 
virtual void onEnter ()
 
virtual void onExposed (const DtPlayerStationStateArgs *args)
 
bool active () const
 
bool exposed () const
 
bool exiting () const
 
bool stacking () const
 
const std::string & stateType () const
 
DtPlayerStationAppapp () const
 

Protected Attributes

DtExampleChatWindowmyChatWindow
 
- Protected Attributes inherited from makVre::DtEngagedState
std::shared_ptr< DtPlayerStationPersistentNotificationmyPersistentNotification
 
bool myIsPlaying
 
bool myIsModalOpen
 
boost::signals2::connection myEntityRemovedConnection
 
std::string myBasePlayerEmbarkedRole
 
DtEntityIdentifier myBasePlayerHost
 
bool myBasePlayerIsInvisible
 
bool myOhMySomethingHasChanged
 
- Protected Attributes inherited from makVre::DtPlayerStationState
DtPlayerStationAppmyApp
 

Additional Inherited Members

- Protected Member Functions inherited from makVre::DtEngagedState
virtual DtVreMessageResult handleSimulationStateMessage (makVre::DtVreMessage *msg)
 
void elementRemoved (makVrv::DtElementID elementId)
 
virtual DtVreMessageResult handleSessionPlayState (DtVreMessage *message)
 
virtual DtVreMessageResult handleModalState (DtVreMessage *message)
 
virtual DtVreMessageResult handleVrfRewind (DtVreMessage *message)
 
virtual void updatePlayerControlsState ()
 
virtual void updatePlayersForEmbarkationChange ()
 
virtual bool startPlayerStation ()
 
virtual bool startPlayerStation (const DtEntityIdentifier &entityId, const std::string &station)
 
virtual void activateWindowFocus ()
 
virtual DtVreMessageResult handleAssignRolePlayer (DtVreMessage *message)
 
virtual DtVreMessageResult handleUnassignRolePlayer (DtVreMessage *message)
 
virtual DtVreMessageResult handleEntityRemoved (DtVreMessage *message)
 
virtual DtVreMessageResult handleChooseRoleButtonClicked (DtVreMessage *message)
 
- Protected Member Functions inherited from makVre::DtPlayerStationState
bool pushState (const std::string &newState, DtPlayerStationStateArgs *args=NULL)
 
bool popSelf ()
 
bool popUntilSelf ()
 
bool popUntilState (const std::string &parentState, DtPlayerStationStateArgs *args=NULL)
 
bool switchToState (const std::string &newState, DtPlayerStationStateArgs *args=NULL)
 
bool pushSelf ()
 

Constructor & Destructor Documentation

◆ DtExtendedEngagedState()

makVre::DtExtendedEngagedState::DtExtendedEngagedState ( DtPlayerStationApp & app)

Constructs the extended engaged state.

Parameters
appThe player station application instance managing this state

References makVre::DtPlayerStationState::app().

◆ ~DtExtendedEngagedState()

virtual makVre::DtExtendedEngagedState::~DtExtendedEngagedState ( )
overridevirtual

Destructor for cleanup of state resources.

Member Function Documentation

◆ onEnter()

virtual void makVre::DtExtendedEngagedState::onEnter ( const DtPlayerStationStateArgs * args)
overridevirtual

Called when transitioning into this state.

This override demonstrates the proper pattern for state initialization:

  • Creating or showing custom UI windows
  • Registering message handlers specific to this state
  • Calling base class onEnter to maintain proper state chain
Parameters
argsOptional state transition arguments

Reimplemented from makVre::DtEngagedState.

◆ onExit()

virtual void makVre::DtExtendedEngagedState::onExit ( )
overridevirtual

Called when transitioning out of this state.

This override demonstrates proper cleanup patterns:

  • Hiding or closing custom UI windows
  • Unregistering message handlers to prevent leaks
  • Calling base class onExit to maintain proper state chain

Reimplemented from makVre::DtEngagedState.

◆ tick()

virtual void makVre::DtExtendedEngagedState::tick ( double dt)
overridevirtual

Called each frame while this state is active.

Parameters
dtDelta time in seconds since last tick

Reimplemented from makVre::DtEngagedState.

◆ onExposed()

virtual void makVre::DtExtendedEngagedState::onExposed ( )
overridevirtual

Called when this state becomes the active state after being stacked.

This demonstrates showing UI elements when the state becomes visible again.

Reimplemented from makVre::DtEngagedState.

◆ onStacked()

virtual void makVre::DtExtendedEngagedState::onStacked ( )
overridevirtual

Called when another state is pushed on top of this state.

This demonstrates hiding UI elements when the state is no longer visible.

Reimplemented from makVre::DtEngagedState.

◆ handleTextMessage()

virtual DtVreMessageResult makVre::DtExtendedEngagedState::handleTextMessage ( DtVreMessage * message)
virtual

Handles incoming text messages from the simulation.

This method demonstrates the VR-Engage message handler pattern:

  • Type-safe message casting using ASSERT_TYPE
  • Accessing message data fields
  • Using entity resolver for display names
  • Returning HANDLED to indicate message was processed
Parameters
messageThe VR-Engage message to handle
Returns
HANDLED if message was processed, UNHANDLED otherwise

Member Data Documentation

◆ myChatWindow

DtExampleChatWindow* makVre::DtExtendedEngagedState::myChatWindow
protected

Custom Qt Quick chat window managed by this state.

Lifecycle: Created on first onEnter, reused on subsequent enters. The state is responsible for showing/hiding this window appropriately.


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