22 #include <matrix/vlTaitBryan.h>
23 #include <matrix/vlVector.h>
25 #include <osg/ref_ptr>
26 #include <osg/Matrixf>
28 #include <tbb/atomic.h>
30 #include <boost/thread/mutex.hpp>
32 #include <unordered_map>
33 #include <unordered_set>
51 class DtIndirectEntityManager;
52 class DtOsgSceneConnector;
53 class DtModelDefinition;
54 class DtOsgModelInstance;
101 virtual void setModelDefinition(
const std::string& str);
106 virtual const std::string& modelDefinition()
const;
110 virtual const std::string& className()
const;
133 virtual void setPosition(
int vtx,
const DtVector& position);
138 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation);
142 virtual void setPositionOffset(
const DtVector& positionOffset);
146 virtual void setOrientationOffset(
const DtTaitBryan& orientationOffset);
150 virtual void setPositionAndOrientation(
int vtx,
const DtVector& position,
const DtTaitBryan& orientation);
155 virtual void setVisible(
bool isVisible);
164 virtual void setPartTranslation(
int partNumber,
169 virtual void setPartOrientation(
int partNumber,
170 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
174 virtual void setPartRotationalVelocity(
int partNumber,
175 const DtVector& rotationalVelocity,
bool forceUpdate =
true);
180 virtual bool findPartPositionAndOrientation(
int partNumber,
185 virtual DtVector partTranslation(
int partNumber)
const;
189 virtual DtTaitBryan partOrientation(
int partNumber)
const;
192 virtual void setPartVisibility(
int partNumber,
bool onOff);
198 virtual void getParts(
PartList& parts)
const;
201 virtual void addPart(
int partNumber, osgSim::DOFTransform* node);
210 virtual void setAnimationFrame(
const std::string& animationName,
212 int frameIndex)
override;
215 virtual void setAnimationRange(
const std::string& animationName,
216 int firstFrameIndex,
int lastFrameIndex)
override;
219 virtual void setAnimationSpeed(
const std::string& animationName,
220 double framesPerSecond)
override;
223 virtual void setAnimationState(
const std::string& animationName,
228 virtual void setAnimationLastFrameTime(
const std::string& animationName,
double animationLastFrameTime);
232 virtual void setAnimationLoopCount(
const std::string& animationName,
int loopCount);
236 virtual int animationFrameCount(
const std::string& animationName)
const;
240 virtual int animationCurrentFrame(
const std::string& animationName)
const;
244 virtual int animationFirstFrame(
const std::string& animationName)
const;
248 virtual int animationLastFrame(
const std::string& animationName)
const;
252 virtual double animationSpeed(
const std::string& animationName)
const;
256 virtual AnimationState animationState(
const std::string& animationName)
const;
260 virtual double animationLastFrameTime(
const std::string& animationName)
const;
264 virtual int animationLoopCount(
const std::string& animationName)
const;
270 virtual void addAnimation(
const std::string& animationName,
271 osg::Sequence* node);
280 virtual void setFlipBookAnimationsSpeed(
double leftSpeed,
double rightSpeed,
double mainSpeed);
286 virtual void scrollUvTextures(
double leftSpeed,
double rightSpeed,
double mainSpeed);
295 virtual void setModelScalingEnabled(
bool b);
300 virtual bool modelScalingEnabled();
305 virtual void setLocalModelScalingEnabled(
bool enabled);
309 virtual void setLocalModelScalingAmount(
float localScl);
318 virtual void setColor(
float r,
float g,
float b,
float a);
322 virtual void enableColorBlending(
bool b);
325 virtual void setBlendColor(
float r,
float g,
float b,
float a);
331 virtual void setOtherData0(
float r,
float g,
float b,
float a);
340 virtual void setLinkageConfigPair(
const std::string& linkageName,
const std::string& configName);
358 virtual void weaponFired(
const DtUnicode& munitionModelDefName)
override;
362 virtual void setDynamicSensorRegion(
const std::string& region,
bool state)
override;
366 virtual bool dynamicSensorRegion(
const std::string& region);
378 virtual void setUvOffset(
const std::string& annotation,
379 float uOffset,
float vOffset);
386 virtual void setState(
int stateNumber,
int stateValue);
390 virtual void setStateUnfiltered(
int stateNumber,
int stateValue);
393 virtual void reapplyState();
397 virtual int state(
int stateNumber)
const;
403 virtual void addState(
int stateNumber, osgSim::MultiSwitch* node);
407 virtual void setStateValueExists(
int stateNumber,
int stateValue);
416 virtual void setLightpointMaxDistance(
float distance);
421 virtual void setLightPointGroup(
const std::string& groupName);
424 virtual const std::string& lightPointGroup()
const;
433 virtual void setDepthMask(osg::Group& parent);
436 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
441 virtual void setIsSupportModel(
bool isSupport);
444 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum);
451 virtual void slot_onShadowStateChanged(
bool on);
454 virtual void slot_atcModeEnableChanged(
bool state);
459 virtual void setSingleChildOn(osgSim::MultiSwitch* multiSwitch,
unsigned int switchIndex,
int nodeTypeIndex);
462 virtual void setDofHpr(osgSim::DOFTransform* dof,
const DtVector& hpr,
int animationFlags);
465 virtual void setDofHprVel(osgSim::DOFTransform* dof,
const DtVector& hprVel,
int animationFlags);
472 static void setTrackObjects(
bool val);
474 static bool trackObjects(
void);
481 virtual void setStateInternal(
int stateNumber,
int stateValue);
485 virtual void setUvOffsetInternal(
const std::string& annotation,
float uOffset,
float vOffset);
491 virtual void setPartTranslationInternal(
int partNumber,
496 virtual void setPartOrientationInternal(
int partNumber,
497 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
502 virtual void setPartRotationalVelocityInternal(
int partNumber,
503 const DtVector& rotationalVelocity,
bool forceUpdate =
true);
506 virtual void disablePart(
int partNumber);
509 virtual void enablePart(
int partNumber);
516 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
520 virtual void removeFromScene();
523 virtual void modelInstanceToBeDeleted();
527 virtual void modelInstanceCreatedInternal(osg::Node* root,
DtOsgModelInstance* osgModelInstance,
bool daylightControlledLights,
float scale);
532 virtual void modelInstanceCreated(
bool castShadows,
bool daylightControlledLights,
float scale);
538 virtual void parseModel(osg::Node* root);
542 virtual void backgroundLoad();
547 virtual void foregroundLoad();
556 virtual void foregroundLoadInternal();
559 virtual void modelInstanceToBeDeletedInternal(
void);
577 static const unsigned int theNodePathCacheSize = 4;
bool myModelScalingEnabled
Definition: DtOsgArticulatedModel.h:609
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMap
Definition: DtOsgArticulatedModel.h:569
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
std::map< std::string, std::string > LinkageConfigMap
Definition: DtOsgArticulatedModel.h:75
NodePathCache myNodePathCache
Definition: DtOsgArticulatedModel.h:576
bool myInitialOrientationOffsetSet
Definition: DtOsgArticulatedModel.h:625
DtArticulatedModelParser::AnnotationMap myAnnotationMap
Definition: DtOsgArticulatedModel.h:571
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMapWithVelocityControl
Definition: DtOsgArticulatedModel.h:570
PartTranslationMap myPartTranslationMap
Definition: DtOsgArticulatedModel.h:604
DtArticulatedModelParser::AnimationMap myAnimationMap
Definition: DtOsgArticulatedModel.h:568
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
std::unordered_map< int, NodeList > NodePathCache
Definition: DtOsgArticulatedModel.h:74
AnnotationNameToUvsMap myAnnotationsUvMap
Definition: DtOsgArticulatedModel.h:580
SensorRegionStateMap mySensorRegionMap
Definition: DtOsgArticulatedModel.h:583
std::string myLightPointGroup
Definition: DtOsgArticulatedModel.h:632
std::map< int, std::pair< DtVector, DtVector > > PartTranslationMap
Definition: DtOsgArticulatedModel.h:603
bool myInitialOrientationSet
Definition: DtOsgArticulatedModel.h:622
PartOrientationMap myPartOrientationMap
Definition: DtOsgArticulatedModel.h:601
static tbb::atomic< int > theTotalObjects
Definition: DtOsgArticulatedModel.h:648
std::map< int, std::pair< DtTaitBryan, DtVector > > PartOrientationMap
Definition: DtOsgArticulatedModel.h:600
std::unordered_map< int, MultiSwitchList > MapStateNumberToMultiSwitchList
Definition: DtArticulatedModelParser.h:47
std::unordered_map< std::string, VectorSequenceAndMultipliers > FlipBookAnimationMap
Definition: DtArticulatedModelParser.h:112
An articulated model manipulator for controlling an articulated model.
Definition: DtArticulatedModel.h:31
DtArticulatedModelParser::MapStateNumberToStateValue myMapStateNumberToStateValue
Definition: DtOsgArticulatedModel.h:565
static boost::mutex theBackgroundLoadCloneMutex
Definition: DtOsgArticulatedModel.h:641
An articulated model manipulator for controlling an articulated model. Supports indirect rendering of...
Definition: DtOsgArticulatedModel.h:69
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:38
DtOsgSceneConnector is used by models to create an OSG position/orientation transform so that it can ...
Definition: DtOsgSceneConnector.h:76
std::map< int, int > MapStateNumberToStateValue
Definition: DtArticulatedModelParser.h:52
DtIndirectEntityManager & myIndirectEntityManager
Definition: DtOsgArticulatedModel.h:585
static const std::unordered_set< int > theStatesToFilter
which states are we filtering to take additional/optional actions on?
Definition: DtOsgArticulatedModel.h:645
std::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:50
DtArticulatedModelParser::MapStateNumberToMultiSwitchList myMapStateNumberToMultiSwitchList
Definition: DtOsgArticulatedModel.h:567
Contains makVrv::DtVirtualBaseClass class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
std::unordered_map< std::string, GroupList > AnnotationMap
Definition: DtArticulatedModelParser.h:57
The base class for simple OSG based model instances. This call can't be instantiated itself...
Definition: DtOsgModelInstance.h:77
AnimationState
Definition: DtArticulatedModel.h:34
DtArticulatedModelParser::ScrollableTextureGroupMap myScrollableTextureGroupMap
Definition: DtOsgArticulatedModel.h:572
Contains makVrv::DtArticulatedModel class.
DtArticulatedModelParser::MapStateNumberToStateExistenceList myMapStateNumberToStateExistenceList
Definition: DtOsgArticulatedModel.h:564
DtVector myBoundMin
Definition: DtOsgArticulatedModel.h:606
DtMetaFileManager::LinkageValueVec myModelMetaFeatures
List of node pointers that have meta data associated with them.
Definition: DtOsgArticulatedModel.h:590
DtUniqueID mySceneObjectId
Definition: DtOsgArticulatedModel.h:587
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::vector< osg::Node * > NodeList
Definition: DtOsgArticulatedModel.h:73
DtUniqueID myElementId
Definition: DtOsgArticulatedModel.h:629
DtVector mySetPosition
Definition: DtOsgArticulatedModel.h:619
bool myUseSwitch
Definition: DtOsgArticulatedModel.h:578
std::list< std::string > myWeaponFireDynamicRegions
Definition: DtOsgArticulatedModel.h:638
std::vector< int > PartList
Definition: DtArticulatedModel.h:36
std::unordered_map< std::string, std::pair< float, float > > AnnotationNameToUvsMap
Definition: DtOsgArticulatedModel.h:77
Base class to provide boost signal/slot management.
DtOsgSceneConnector * mySceneConnector
Definition: DtOsgArticulatedModel.h:574
std::unordered_map< int, PartTransformList > PartMap
Definition: DtArticulatedModelParser.h:44
Contains makVrv::DtArticulatedModelParser class.
const char int mode
Definition: ioapi.h:38
std::list< std::string > myPowerPlantDynamicRegions
Definition: DtOsgArticulatedModel.h:637
static bool theTrackObjects
Definition: DtOsgArticulatedModel.h:647
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
A utility Quaternion class.
Definition: DtQuat.h:19
std::unordered_map< std::string, bool > SensorRegionStateMap
Definition: DtOsgArticulatedModel.h:582
singleton class that acts as a bridge between the
Definition: DtIndirectEntityManager.h:61
bool myInitialPositionOffsetSet
Definition: DtOsgArticulatedModel.h:624
boost::signalslib::signal< void(DtOsgArticulatedModel *, int, int)> signal_SetState
signal to emit when a state is set
Definition: DtOsgArticulatedModel.h:468
DtArticulatedModelParser::PartMap myPartMap
Definition: DtOsgArticulatedModel.h:566
bool myHandlersRegisterered
Definition: DtOsgArticulatedModel.h:634
std::list< std::string > myMovingDynamicRegions
Definition: DtOsgArticulatedModel.h:636
std::vector< DtVirtualBaseClass * > myModelMetaAttachments
Vector of metafile attachment on this object so they can be deleted on object destruction.
Definition: DtOsgArticulatedModel.h:598
LinkageConfigMap myLinkageConfigMap
Map of linkage names (NodeName/Annotation) from the metafile(if it exists) to config names...
Definition: DtOsgArticulatedModel.h:594
DtTaitBryan mySetOrientation
Definition: DtOsgArticulatedModel.h:621
std::map< std::string, VectorScrollableTextureGroupAndParams > ScrollableTextureGroupMap
Definition: DtArticulatedModelParser.h:144
DtSignalConnectionManager myConnections
Definition: DtOsgArticulatedModel.h:630
Default implementation of the model parser for Articulated models.
Definition: DtArticulatedModelParser.h:38
std::unordered_map< int, StateExistenceList > MapStateNumberToStateExistenceList
Definition: DtArticulatedModelParser.h:54
bool myInitialPositionSet
Definition: DtOsgArticulatedModel.h:620