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) 2023 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;
82 
85  virtual void addSceneObject( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent );
86  virtual void removeSceneObject( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent );
87 
89  virtual DtSceneObjectAgent* findSceneObjectForModelSet( DtModelSetId modelSet );
91 
95  virtual bool distribute() const;
96  virtual void setDistribute( const bool distribute );
98 
103  virtual void processKinematicStateDefinition( const DtVisualizerDefinition* visDef );
104 
112  virtual void setParentElement( DtElement* parent );
113  protected:
117  virtual void setEmbarked( const DtUniqueID& id );
122  virtual void startEmbarked() = 0;
123  virtual void endEmbarked() = 0;
125 
126  protected:
128  virtual void connectToListenerSignals();
129 
131  virtual void connectToSettingsSignals() = 0;
132 
135  virtual void addSceneObjectToUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
136  virtual void removeSceneObjectFromUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
138 
139  protected:
141  using SceneObjectMap = std::unordered_map<DtModelSetId, DtSceneObjectAgent*>;
143 
148 
158  };
159 
163  {
164  public:
165 
168 
170  virtual ~DtKinematicStateCreator();
171 
173  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const = 0;
174 
175  };
176 
177  template <typename KinematicState>
179  {
180  public:
181 
184 
187 
189  {
190  DtKinematicStateCreator* creator = dynamic_cast<DtKinematicStateCreator*>(
191  conn.findInstance( KinematicState::theClassName() + "Creator" ));
192  if( !creator )
193  {
195  conn.registerInstance( KinematicState::theClassName()+"Creator" , creator );
196  }
197  return *creator;
198  }
199 
201  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const
202  {
203  return new KinematicState( listener, sceneInterface, settingsManager );
204  }
205  };
206 }
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:156
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:178
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:153
virtual ~DtKinematicStateCreatorTemplate()
DTOR.
Definition: DtKinematicState.h:186
DtKinematicStateCreatorTemplate()
CTOR.
Definition: DtKinematicState.h:183
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myDistributeFlag
Definition: DtKinematicState.h:157
DtAgentManagerInterface & mySceneInterface
Definition: DtKinematicState.h:145
DtStateListener & myStateListener
Definition: DtKinematicState.h:144
SceneObjectMap mySceneObjectMap
Definition: DtKinematicState.h:142
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:152
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:147
virtual DtKinematicState * create(DtStateListener &listener, DtAgentManagerInterface &sceneInterface, DtSharedSettingsManager &settingsManager) const
Create function.
Definition: DtKinematicState.h:201
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:162
static DtKinematicStateCreator & instance(DtBaseConnection &conn)
Definition: DtKinematicState.h:188
std::unordered_map< DtModelSetId, DtSceneObjectAgent * > SceneObjectMap
Model set to scene object map.
Definition: DtKinematicState.h:141
DtSharedSettingsManager & mySettingsManager
Definition: DtKinematicState.h:146
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)