VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectDataStateProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <vrfGuiNetworkCommon/vrfDataProcessorInterface.inl>
14 #include <vrfGuiCore/DtVrfObjectDataStateObjectAgent.hpp>
17 #include <unordered_map>
18 #include <unordered_set>
19 
20 namespace makVrf
21 {
22  class DtNetworkMessageInterfaceHandlerAgent;
23 
25  class DT_DLL_vrfGuiNetworkCommon DtVrfObjectDataStateProcessor : public DtVrfDataProcessor<DtVrfObjectDataStateObjectAgent>
26  {
27  public:
29 
31  DtVrfObjectDataStateProcessor(DtStateDataManager*, makVrv::DtBaseConnection&, int sessionId, int messageVersion);
32 
35 
37  virtual void createAndSendState(DtStateData* sd,
38  makVrv::DtSimStateObjectAgent& objectDriver, bool force = false);
39 
40  virtual const makVrv::DtSimState& emptyState() const;
41 
42  virtual void setState(const DtStateData*, makVrv::DtSimState& state);
43 
44  static const char* ProcessorName() { return "DtVrfObjectDataStateProcessor"; };
45  virtual const char* processorName() const { return ProcessorName(); };
46 
48  virtual void setLightweightMode(bool);
49  bool lightweightMode() const
50  {
51  return myLightweightMode;
52  }
53 
54  boost::signals2::signal<void (const std::vector<DtRangeItem>&)> signal_addAdditionalRangeRingItems;
55 
56  protected:
57 
59  virtual void addSimData(DtStateData* listener);
60  virtual void removeData(Legion::UInt64 legionGlobalId);
61  virtual void slot_postUpdateCallback(const DtStateData*);
62  virtual void setupObjectStateData();
63  virtual void addRangeRingItemToVisuals(const DtRangeItem& item);
64  virtual bool rangeItemsFrom(const DtStateData* sd, const DtRangeItems& sourceItems, std::vector<DtRangeItem>& items);
65  virtual bool shouldForceObjectUpdate(const DtFrameStateInterface*) const;
66  virtual void slot_visualizerCreationDisabled(bool b, int type);
67  virtual void addToState(const DtStateData* sd, makVrv::DtSimState& baseState);
68  virtual void updateOnlyModifiedStatePropertiesSince(const DtRwProperties& source, DtRwProperties& target, double since);
69 
70  protected:
71  typedef std::unordered_map<makVrv::DtUniqueID, DtVrfNetworkUpdateObjectDataState> Cache;
73 
76 
77  mutable std::set<std::string> myRangeLabels;
78  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
79 
83  mutable std::unordered_set<makVrv::DtUniqueID> myForceUpdateDueToStatePropertyChanged;
84  };
85 
87  {
88  public:
91 
93 
96  static void registerInstance(makVrv::DtBaseConnection& conn, DtVrfObjectDataStateProcessorCreator* instance);
97 
98  virtual DtVrfObjectDataStateProcessor* create(DtStateDataManager*, makVrv::DtBaseConnection&, int sessionId, int messageVersion);
99  };
100 }
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Definition: vrfDataProcessorInterface.h:65
Definition: vrfObjectDataStateProcessor.h:86
int myMessageVersion
Definition: vrfObjectDataStateProcessor.h:75
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
Definition: rangeItem.h:149
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
DtNetworkMessageInterfaceHandlerAgent * myNetworkMessageInterfaceHandlerAgent
Definition: vrfObjectDataStateProcessor.h:78
int myShowBoundingVolumeCount
Definition: vrfObjectDataStateProcessor.h:80
virtual const char * processorName() const
Used to uniquely identify for registration.
Definition: vrfObjectDataStateProcessor.h:45
unsigned long long UInt64
Definition: stateDataTypes.h:17
Definition: rangeItem.h:206
Cache myCache
Definition: vrfObjectDataStateProcessor.h:72
const char * source
Definition: lz4.h:442
tbb::spin_mutex myForceUpdateDueToStatePropertyChangedMutex
Definition: vrfObjectDataStateProcessor.h:82
#define DT_DLL_vrfGuiNetworkCommon
This file is used to determine how to build.
Definition: vrfGuiNetworkCommonDefines.h:24
std::unordered_set< makVrv::DtUniqueID > myForceUpdateDueToStatePropertyChanged
Definition: vrfObjectDataStateProcessor.h:83
bool myLightweightMode
Definition: vrfObjectDataStateProcessor.h:81
std::set< std::string > myRangeLabels
Definition: vrfObjectDataStateProcessor.h:77
A DtSimState is the base class for all state objects. Derived instances of DtSimState will be created...
Definition: DtSimState.h:19
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:122
static const char * ProcessorName()
Definition: vrfObjectDataStateProcessor.h:44
std::unordered_map< makVrv::DtUniqueID, DtVrfNetworkUpdateObjectDataState > Cache
Definition: vrfObjectDataStateProcessor.h:71
The protocol specific processor for object state specific sim data.
Definition: vrfObjectDataStateProcessor.h:25
int mySessionId
Definition: vrfObjectDataStateProcessor.h:74
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
bool lightweightMode() const
Definition: vrfObjectDataStateProcessor.h:49
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73

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)