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 );
114  virtual void updateParentElementSceneObject( DtElement* parent );
115  protected:
119  virtual void setEmbarked( const DtUniqueID& id );
124  virtual void startEmbarked() = 0;
125  virtual void endEmbarked() = 0;
127 
128  protected:
130  virtual void connectToListenerSignals();
131 
133  virtual void connectToSettingsSignals() = 0;
134 
137  virtual void addSceneObjectToUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
138  virtual void removeSceneObjectFromUpdaters( DtModelSetId modelSet, DtSceneObjectAgent* sceneObjectAgent ) = 0;
140 
141  protected:
143  using SceneObjectMap = std::unordered_map<DtModelSetId, DtSceneObjectAgent*>;
145 
150 
160  };
161 
165  {
166  public:
167 
170 
172  virtual ~DtKinematicStateCreator();
173 
175  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const = 0;
176 
177  };
178 
179  template <typename KinematicState>
181  {
182  public:
183 
186 
189 
191  {
192  DtKinematicStateCreator* creator = dynamic_cast<DtKinematicStateCreator*>(
193  conn.findInstance( KinematicState::theClassName() + "Creator" ));
194  if( !creator )
195  {
197  conn.registerInstance( KinematicState::theClassName()+"Creator" , creator );
198  }
199  return *creator;
200  }
201 
203  virtual DtKinematicState* create( DtStateListener& listener, DtAgentManagerInterface& sceneInterface, DtSharedSettingsManager& settingsManager ) const
204  {
205  return new KinematicState( listener, sceneInterface, settingsManager );
206  }
207  };
208 }
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:158
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:180
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:155
virtual ~DtKinematicStateCreatorTemplate()
DTOR.
Definition: DtKinematicState.h:188
DtKinematicStateCreatorTemplate()
CTOR.
Definition: DtKinematicState.h:185
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myDistributeFlag
Definition: DtKinematicState.h:159
DtAgentManagerInterface & mySceneInterface
Definition: DtKinematicState.h:147
DtStateListener & myStateListener
Definition: DtKinematicState.h:146
SceneObjectMap mySceneObjectMap
Definition: DtKinematicState.h:144
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:154
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:149
virtual DtKinematicState * create(DtStateListener &listener, DtAgentManagerInterface &sceneInterface, DtSharedSettingsManager &settingsManager) const
Create function.
Definition: DtKinematicState.h:203
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:164
static DtKinematicStateCreator & instance(DtBaseConnection &conn)
Definition: DtKinematicState.h:190
std::unordered_map< DtModelSetId, DtSceneObjectAgent * > SceneObjectMap
Model set to scene object map.
Definition: DtKinematicState.h:143
DtSharedSettingsManager & mySettingsManager
Definition: DtKinematicState.h:148
Contains DLL export macros.

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)