VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEntityProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvLegion/vrvLegion.h>
13 #include <vrvLegion/diGuyFacade.h>
14 #include <legionStandardOM/sets/readEntityRepository.hpp>
15 
17 
18 #include "legionDataStore/dataTypes.h"
19 
20 #include <boost/signals2.hpp>
21 
22 namespace LOM
23 {
24  class EntityView;
25 }
26 
27 class DtEntityType;
28 
29 namespace makVrv
30 {
31  class DtBaseConnection;
32  class DtLegionConnection;
33  class DtDiGuyFacade;
34  class DtCoordinateSystem;
35 
38  {
39  public:
46  };
47 
49  {
50  public:
53 
56  static void registerInstance(DtBaseConnection& conn, DtEntityProcessor* instance);
57 
59  static DtEntityProcessor* findInstance(DtBaseConnection& conn);
60 
62  virtual ~DtEntityProcessor();
63 
64  virtual void tick();
65 
66  virtual int maxDrawAbleEntities();
67  virtual void setMaxDrawableEntities(int val);
68 
69  virtual int maxEntityCache();
70  virtual void setMaxEntityCache(int val);
71 
72  virtual float fov();
73  virtual void setFov(float val);
74 
75  virtual float realizeRange();
76  virtual void setRealizeRange(float val);
77 
78  virtual int maxCreatePerFrame();
79  virtual void setMaxCreatePerFrame(int val);
80 
81  virtual int maxRemovePerFrame();
82  virtual void setMaxRemovePerFrame(int val);
83 
84  virtual void setRegisterEntity(bool val);
85  virtual bool registerEntity();
86 
87  virtual void setUseNetworkAppearances(bool val);
88 
89  void setCoordinateSystem(makVrv::DtCoordinateSystem* cs) { myCoordinateSystem = cs; };
90  std::string modelDefinitionFor(const DtEntityType& objectType, bool& isHuman) const;
91 
92  virtual void createDiGuyFacade(Legion::UInt64 id, const std::string& def);
93  virtual void createEntityFacade(Legion::UInt64 id, const std::string& def);
94 
95  void precache();
96 
97  boost::signals2::signal<void (makVrv::DtUniqueID, Legion::UInt64)> signal_elementCreated;
98  boost::signals2::signal<void (makVrv::DtUniqueID, Legion::UInt64)> signal_elementDestroyed;
99  boost::signals2::signal<void ()> signal_allElementsDestroyed;
100 
101  protected:
103 
104  struct EntityVis;
105  void entitiesInView();
106  bool createEntity(Legion::UInt64);
107  void updateEntity(EntityVis& ent);
108  void setKinematicState(EntityVis& vis, LOM::ReadEntityRepository& esr);
109  void setVisualState(EntityVis& vis, LOM::ReadEntityRepository& esr);
110  void removeEntities();
111  void sortEntitesInView();
112 
113  //for sorting the entities by distance from observer
114  void quicksort(int low, int high);
115  int partition(int low, int high);
116  inline void swapEntities(int a, int b);
117  void cacheAttributeIndices();
118 
120  LOM::EntityView* myEntityView;
124 
125  struct EntityVis
126  {
129  double frameUpdated;
130 
131  EntityVis() :entityId(0), facade(0), frameUpdated(0) {}
132  EntityVis(Legion::UInt64 e, DtDiGuyFacade* f, int u) : entityId(e), facade(f), frameUpdated(u) {}
133  };
134 
135  typedef std::map<Legion::UInt64, EntityVis> VisualizerMap;
137  std::vector<EntityVis> myFreeDiGuys;
138  std::vector<Legion::InstanceHandle> myVisibleEntities;
139 
142  float myFov;
146 
149 
151  };
152 }
Because this is all throw away code, this will do both – character and articulated model...
Definition: diGuyFacade.h:39
boost::signals2::signal< void(makVrv::DtUniqueID, Legion::UInt64)> signal_elementCreated
Definition: DtEntityProcessor.h:97
EntityVis(Legion::UInt64 e, DtDiGuyFacade *f, int u)
Definition: DtEntityProcessor.h:132
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
double frameUpdated
Definition: DtEntityProcessor.h:129
Legion::UInt32 lastReceivedLocAttrIndex
Definition: DtEntityProcessor.h:40
int myMaxEntityCache
Definition: DtEntityProcessor.h:141
unsigned int UInt32
Definition: stateDataTypes.h:18
Legion::UInt32 lastReceivedOriAttrIndex
Definition: DtEntityProcessor.h:43
This cache is used to keep track of the attribute ids for network kinematic values.
Definition: DtEntityProcessor.h:37
unsigned long long UInt64
Definition: stateDataTypes.h:17
The base class for protocol specific VRLink Simulations.
Definition: DtLegionConnection.h:67
double myTimeoutPeriod
Definition: DtEntityProcessor.h:123
Legion::UInt32 lastReceivedVelAttrIndex
Definition: DtEntityProcessor.h:41
VisualizerMap myVisualizers
Definition: DtEntityProcessor.h:136
int myFrameNumber
Definition: DtEntityProcessor.h:119
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
std::map< Legion::UInt64, EntityVis > VisualizerMap
Definition: DtEntityProcessor.h:135
Contains makVrv::DtVirtualBaseClass class.
Legion::UInt32 lastReceivedRotVelAttrIndex
Definition: DtEntityProcessor.h:44
#define VRV_LEGION_DLL
Definition: export.h:24
boost::signals2::signal< void(makVrv::DtUniqueID, Legion::UInt64)> signal_elementDestroyed
Definition: DtEntityProcessor.h:98
std::vector< Legion::InstanceHandle > myVisibleEntities
Definition: DtEntityProcessor.h:138
Definition: DtEntityProcessor.h:125
makVrv::DtCoordinateSystem * myCoordinateSystem
Definition: DtEntityProcessor.h:150
float myRealizeRange
Definition: DtEntityProcessor.h:121
Legion::UInt32 lastReceivedAccAttrIndex
Definition: DtEntityProcessor.h:42
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
bool myUseNetworkAppearances
Definition: DtEntityProcessor.h:122
Legion::UInt32 lastReceivedTimeAttrIndex
Definition: DtEntityProcessor.h:45
int myMaxDrawableEntities
Definition: DtEntityProcessor.h:140
LOM::EntityView * myEntityView
Definition: DtEntityProcessor.h:120
std::vector< EntityVis > myFreeDiGuys
Definition: DtEntityProcessor.h:137
int myMaxCreatePerFrame
Definition: DtEntityProcessor.h:143
AttributeIndexCache myAttributeIndexCache
Definition: DtEntityProcessor.h:147
Definition: DtEntityProcessor.h:48
int myMaxRemovePerFrame
Definition: DtEntityProcessor.h:144
bool myAreAttributeIndicesCached
Definition: DtEntityProcessor.h:148
DtLegionConnection & myConnection
Definition: DtEntityProcessor.h:102
EntityVis()
Definition: DtEntityProcessor.h:131
Legion::UInt64 entityId
Definition: DtEntityProcessor.h:127
boost::signals2::signal< void()> signal_allElementsDestroyed
Definition: DtEntityProcessor.h:99
bool myRegisterEntities
Definition: DtEntityProcessor.h:145
void setCoordinateSystem(makVrv::DtCoordinateSystem *cs)
Definition: DtEntityProcessor.h:89
float myFov
Definition: DtEntityProcessor.h:142
DtDiGuyFacade * facade
Definition: DtEntityProcessor.h:128

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)