VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtKinematicState.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
10 
11 #pragma once
12 
13 #include <vrvCore/vrvCore.h>
14 #include <vrvCore/DtUniqueID.h>
15 
17 
19 
20 namespace makVrv
21 {
22  class DtStateListener;
23  class DtSceneObjectAgent;
24  class DtAgentManagerInterface;
25  class DtSharedSettingsManager;
26  class DtVisualizerDefinition;
27  class DtElement;
28  enum class DtModelSetId;
29 
55  {
56  public:
58  DtKinematicState( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager );
59 
61  virtual ~DtKinematicState();
62 
64  DtKinematicState() = delete;
65 
67  DtKinematicState( const DtKinematicState& ) = delete;
68 
70  DtKinematicState& operator=( const DtKinematicState& ) = delete;
71 
72  public:
75  virtual void initialize();
76 
79  virtual void createUpdaters() = 0;
80  virtual void destroyUpdaters() = 0;
81  virtual void disconnectUpdaters();
83 
86  virtual void addSceneObject( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent );
87  virtual void removeSceneObject( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent );
88 
90  virtual DtSceneObjectAgent* findSceneObjectForModelSet( DtModelSetId modelSet );
92 
96  virtual bool distribute() const;
97  virtual void setDistribute( const bool distribute );
99 
104  virtual void processKinematicStateDefinition( const DtVisualizerDefinition* visDef );
105 
113  virtual void setParentElement( DtElement* parent );
115  virtual void updateParentElementSceneObject( DtElement* parent );
116  protected:
120  virtual void setEmbarked( const DtUniqueID& id );
125  virtual void startEmbarked() = 0;
126  virtual void endEmbarked() = 0;
128 
129  protected:
131  virtual void connectToListenerSignals();
132 
134  virtual void connectToSettingsSignals() = 0;
135 
138  virtual void addSceneObjectToUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
139  virtual void removeSceneObjectFromUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
141 
142  protected:
144  using SceneObjectMap = std::unordered_map<DtModelSetId, DtSceneObjectAgent*>;
146 
151 
161  };
162 
166  {
167  public:
168 
171 
173  virtual ~DtKinematicStateCreator();
174 
176  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const = 0;
177 
178  };
179 
180  template <typename KinematicState>
182  {
183  public:
184 
187 
190 
192  {
193  DtKinematicStateCreator* creator = dynamic_cast<DtKinematicStateCreator*>(
194  conn.findInstance( KinematicState::theClassName() + "Creator" ));
195  if( !creator )
196  {
198  conn.registerInstance( KinematicState::theClassName()+"Creator" , creator );
199  }
200  return *creator;
201  }
202 
204  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const
205  {
206  return new KinematicState( listener, sceneInterface, settingsManager );
207  }
208  };
209 }
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
bool myInitialized
Has initialized been called before. Used so that signals are only connected once. ...
Definition: DtKinematicState.h:159
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
virtual void registerInstance(const std::string &instanceName, DtVirtualBaseClass *instance)
Register an object as an instance of instanceName, and transfer memory ownership of the instance to t...
Definition: DtKinematicState.h:181
The DtElement class implements the common behavior of simulation based elements added to the scene...
Definition: DtElement.h:44
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
virtual DtVirtualBaseClass * findInstance(const std::string &instanceName)
Find an instance with the given name. If no instance is found than a null pointer is returned...
Base class for Kinematic State Objects e.g. DtEntityKinematicState Controls kinematic state of a scen...
Definition: DtKinematicState.h:54
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool myEmbarkedFlag
Definition: DtKinematicState.h:156
virtual ~DtKinematicStateCreatorTemplate()
DTOR.
Definition: DtKinematicState.h:189
DtKinematicStateCreatorTemplate()
CTOR.
Definition: DtKinematicState.h:186
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myDistributeFlag
Definition: DtKinematicState.h:160
DtAgentManagerInterface & mySceneInterface
Definition: DtKinematicState.h:148
DtStateListener & myStateListener
Definition: DtKinematicState.h:147
SceneObjectMap mySceneObjectMap
Definition: DtKinematicState.h:145
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Contains makVrv:DtBaseConnection class.
Base class to provide boost signal/slot management.
DtUniqueID myEmbarkedParentSceneObjectID
There is now one updater chain, the embarkation updater uses the 3D Models ( ModelSet3dModels ) scene...
Definition: DtKinematicState.h:155
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:26
Contains makVrv::DtUniqueID type.
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
DtSignalConnectionManager myConnections
Definition: DtKinematicState.h:150
virtual DtKinematicState * create(DtStateListener &listener, DtAgentManagerInterface &sceneInterface, DtSharedSettingsManager &settingsManager) const
Create function.
Definition: DtKinematicState.h:204
DtModelSetId
Definition: DtModelSetEnums.h:19
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
Abstract DtKinematicState creator.
Definition: DtKinematicState.h:165
static DtKinematicStateCreator & instance(DtBaseConnection &conn)
Definition: DtKinematicState.h:191
std::unordered_map< DtModelSetId, DtSceneObjectAgent * > SceneObjectMap
Model set to scene object map.
Definition: DtKinematicState.h:144
DtSharedSettingsManager & mySettingsManager
Definition: DtKinematicState.h:149
Contains DLL export macros.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)