VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
articulatedPartStateRepository.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
16 #include <vrfutil/rwTemplatedMap.h>
17 #include <readerWriter/rwVector.h>
18 #include <readerWriter/rwReal.h>
19 #include <vrfutil/rwArtPartState.h>
20 #include <vlpi/articulatedPart.h>
22 
23 class Coordinate_System;
24 
25 namespace makVrf
26 {
27  class DtStateData;
28  class DtArticulatedPartStateComponent;
30 
32 
41  {
42  public:
43 
44  class DtArtPartMap : public DtRwTemplatedMapPtr<DtRwInt, DtArticulatedPartStateRepository>
45  {
46  public:
47 
49  DtArtPartMap(const DtString& name,
50  DtReaderWriterRegistry* parentRegistry = NULL,
51  const DtString& keyName = "key", const DtString& valueName = "value", const DtString& elementName = "item")
52  : DtRwTemplatedMapPtr(name, parentRegistry, keyName, valueName, elementName) {};
54  DtReaderWriterRegistry* parentRegistry = NULL,
55  const DtString& keyName = "key", const DtString& valueName = "value", const DtString& elementName = "item")
56  : DtRwTemplatedMapPtr(name, parentRegistry, keyName, valueName, elementName) {};
57  DtArtPartMap(const DtString& name, const DtRwTemplatedMapPtr& orig,
58  DtReaderWriterRegistry* parentRegistry = NULL)
59  : DtRwTemplatedMapPtr(name, orig, parentRegistry) {};
61  DtReaderWriterRegistry* parentRegistry = NULL)
62  : DtRwTemplatedMapPtr(name, orig, parentRegistry) {};
64  DtReaderWriterRegistry* parentRegistry = NULL)
65  : DtRwTemplatedMapPtr(orig, parentRegistry) {};
66 
67  virtual ~DtArtPartMap() {};
68 
69  virtual void postGetSelf();
70  };
71 
74  DtReaderWriterRegistry* parentRegistry = 0);
75 
77  virtual void attachTo(DtStateData* parentObj);
78 
80  virtual void attachTo(DtStateData* parentObj, DtArticulatedPartStateRepository* parentPart);
81 
83  virtual DtArtPartType parentPartType() const;
84 
87 
88  virtual DtArticulatedPartStateRepository* parentPart();
89  virtual const DtArticulatedPartStateRepository* parentPart() const;
91 
93 
94  virtual DtStateData* parentObject();
95  virtual const DtStateData* parentObject() const;
97 
99  const DtArticulatedPartStateRepository& operator=(
101 
104 
107  virtual bool mergeSpecifiedParameters(const DtArticulatedPartStateRepository& other,
108  MergeRule rule = AllSpecifiedValues);
109 
111 
112  virtual DtArtPartType partType() const;
113  virtual void setPartType(DtArtPartType type);
115 
118  virtual DtVector attachPointWithRespectToObject() const;
119 
122  virtual DtVector bodyPosition() const;
123 
126  virtual DtVector localPosition() const;
127 
130  virtual DtVector endPointlocalPosition() const;
131 
134  virtual DtVector worldPosition() const;
135 
137  virtual DtTaitBryan bodyOrientation() const;
138 
140  virtual DtDcm localOrientationMatrix() const;
141 
143 
144  virtual const DtArtPartMap& parts() const;
145  virtual DtArtPartMap& parts();
147 
150  virtual DtArticulatedPartStateRepository* attachPart(DtArtPartType partType);
151 
154  virtual DtArticulatedPartStateRepository* attachPart(DtArtPartType partType,
155  const DtArticulatedPartStateRepository& partState);
156 
158 
159  DtReal azimuthNeutralOffset() const;
160  void setAzimuthNeutralOffset(DtReal offset, bool isSpecified = true);
162 
164 
165  DtReal elevationNeutralOffset() const;
166  void setElevationNeutralOffset(DtReal offset, bool isSpecified = true);
168 
170  virtual void addParameterType(DtArtParamType paramType);
171 
173  virtual void clearParameterTypes();
174 
176  virtual bool hasParameterType(DtArtParamType paramType) const;
177 
179  const DtRwTemplatedIntList& parameterTypes() const;
180 
182  virtual void mergeInPartAttachments(const DtArticulatedPartStateRepository& other);
183 
185  virtual void setAllValuesUnspecified();
186 
187  void setCoordinateSystem(const Coordinate_System* cs);
188 
190  virtual void prePutSelf();
191 
192  virtual void setPublishOnLegionNetwork(bool, bool);
194  {
195  return myPublishOnLegionNetwork;
196  }
197 
198  virtual void updateDataStorage(const std::vector<DtArticulatedPart::ParameterMetric>&);
199 
203  virtual void setAttachPoint(const DtVector& attachPoint, bool isSpecified = true);
204  virtual void setEndPoint(const DtVector& loc, bool isSpecified = true);
205  virtual void setPosition(double val, bool isSpecified = true);
206  virtual void setPositionRate(double val, bool isSpecified = true);
207  virtual void setMaxPositionRate(double val, bool isSpecified = true);
208  virtual void setExtension(double val, bool isSpecified = true);
209  virtual void setExtensionRate(double val, bool isSpecified = true);
210  virtual void setMaxExtensionRate(double val, bool isSpecified = true);
211  virtual void setTranslation(const DtVector& val, bool isSpecified = true);
212  virtual void setMinTranslation(const DtVector& val, bool isSpecified = true);
213  virtual void setMaxTranslation(const DtVector& val, bool isSpecified = true);
214  virtual void setTranslationRate(const DtVector& val, bool isSpecified = true);
215  virtual void setMaxTranslationRate(const DtVector& val, bool isSpecified = true);
216  virtual void setAzimuth(double angle, bool isSpecified = true);
217  virtual void setMinAzimuth(double angle, bool isSpecified = true);
218  virtual void setMaxAzimuth(double angle, bool isSpecified = true);
219  virtual void setAzimuthRate(double rate, bool isSpecified = true);
220  virtual void setMaxAzimuthRate(double rate, bool isSpecified = true);
221  virtual void setElevation(double angle, bool isSpecified = true);
222  virtual void setMinElevation(double angle, bool isSpecified = true);
223  virtual void setMaxElevation(double angle, bool isSpecified = true);
224  virtual void setElevationRate(double rate, bool isSpecified = true);
225  virtual void setMaxElevationRate(double rate, bool isSpecified = true);
226  virtual void setRotation(double angle, bool isSpecified = true);
227  virtual void setMinRotation(double angle, bool isSpecified = true);
228  virtual void setMaxRotation(double angle, bool isSpecified = true);
229  virtual void setRotationRate(double rate, bool isSpecified = true);
230  virtual void setMaxRotationRate(double rate, bool isSpecified = true);
232 
233  virtual void addPartDeletedCallback(
235  virtual void removePartDeletedCallback(
237 
238  protected:
239  virtual void partUpdated();
240 
243  void preventConfigValueReadAndWrite();
244 
245  virtual void copyParts(const DtArticulatedPartStateRepository& orig);
246 
248  virtual void setParentsForAllParts();
249 
250  virtual DtTaitBryan parentLocalOrientation() const;
251 
252  virtual void destroyLegionParts();
253 
254  protected:
256 
258 
260 
264 
267 
272  typedef std::map<int, UInt64> LegionParameterMetrics;
275  };
276 
278 }
DtArtPartMap(const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL, const DtString &keyName="key", const DtString &valueName="value", const DtString &elementName="item")
Definition: articulatedPartStateRepository.h:53
Definition: rwTemplatedList.h:214
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
LegionParameterMetrics myLegionParameterMetrics
Definition: articulatedPartStateRepository.h:273
DtArticulatedPartStateRepository::DtArtPartMap DtArtPartMap
Definition: articulatedPartStateRepository.h:277
DtArtPartMap(const DtString &name, const DtRwTemplatedMapPtr &orig, DtReaderWriterRegistry *parentRegistry=NULL)
Definition: articulatedPartStateRepository.h:57
DtArticulatedPartStateComponent * myParentComponent
Definition: articulatedPartStateRepository.h:262
DtRwTemplatedIntList myParameterTypes
Definition: articulatedPartStateRepository.h:268
bool publishOnLegionNetwork() const
Definition: articulatedPartStateRepository.h:193
DtArtPartMap(const DtRwTemplatedMapPtr &orig, DtReaderWriterRegistry *parentRegistry=NULL)
Definition: articulatedPartStateRepository.h:63
In order to be a well defined state component, you must:
Definition: articulatedPartStateComponent.h:59
DtArtPartMap(const DtSymbolString &name, const DtRwTemplatedMapPtr &orig, DtReaderWriterRegistry *parentRegistry=NULL)
Definition: articulatedPartStateRepository.h:60
DtRwReal myAzimuthNeutralOffset
Definition: articulatedPartStateRepository.h:265
Definition: readerWriterRegistry.h:39
UInt64 myArticulatedPartInstanceHandle
Definition: articulatedPartStateRepository.h:271
DtArtPartMap()
Definition: articulatedPartStateRepository.h:48
DtStateData * myParentObject
Definition: articulatedPartStateRepository.h:261
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:339
DtRwReal myElevationNeutralOffset
Definition: articulatedPartStateRepository.h:266
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
Definition: rwTemplatedMap.h:97
DtArticulatedPartStateRepositoryDeletedCallbackList myCallbackList
Definition: articulatedPartStateRepository.h:274
DtRwInt myPartType
Definition: articulatedPartStateRepository.h:257
Description: Readable, Writable int.
Definition: rwInt.h:25
unsigned long long UInt64
Definition: stateDataTypes.h:17
DtCallbackList< DtArticulatedPartStateRepository * > DtArticulatedPartStateRepositoryDeletedCallbackList
Definition: articulatedPartStateRepository.h:29
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
virtual ~DtArtPartMap()
Definition: articulatedPartStateRepository.h:67
DtArtPartMap myParts
Definition: articulatedPartStateRepository.h:259
const Coordinate_System * myCoordinateSystem
Definition: articulatedPartStateRepository.h:255
Definition: articulatedPartStateRepository.h:44
DtArtPartMap(const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL, const DtString &keyName="key", const DtString &valueName="value", const DtString &elementName="item")
Definition: articulatedPartStateRepository.h:49
The DtArticulatedPartStateRepository class is used to represent articulated parts for an entity...
Definition: articulatedPartStateRepository.h:40
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
bool myPublishOnLegionNetwork
Definition: articulatedPartStateRepository.h:269
A readable, writable type that holds an articulated part state.
Definition: rwArtPartState.h:26
void(* DtCallbackFunctionType)(DtArticulatedPartStateRepository *, void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:95
std::map< int, UInt64 > LegionParameterMetrics
Definition: articulatedPartStateRepository.h:272
voidpf uLong offset
Definition: ioapi.h:42
DtArticulatedPartStateRepository * myParentPart
Definition: articulatedPartStateRepository.h:263
bool myIsWritable
Definition: articulatedPartStateRepository.h:270
File: rwVector.h.

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)