22 #include <matrix/vlTaitBryan.h>
23 #include <matrix/vlVector.h>
25 #include <osg/ref_ptr>
26 #include <osg/Matrixf>
28 #include <boost/thread/mutex.hpp>
30 #include <unordered_map>
31 #include <unordered_set>
49 class DtOsgIndirectEntityManager;
50 class DtOsgSceneConnector;
51 class DtModelDefinition;
52 class DtOsgModelInstance;
99 virtual void setModelDefinition(
const std::string& str);
104 virtual const std::string& modelDefinition()
const;
108 virtual const std::string& className()
const;
113 virtual void setElementId(
DtElementID id)
override;
121 virtual void setPosition(
int vtx,
const DtVector& position);
126 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation);
130 virtual void setPositionOffset(
const DtVector& positionOffset);
134 virtual void setOrientationOffset(
const DtTaitBryan& orientationOffset);
138 virtual void setPositionAndOrientation(
int vtx,
const DtVector& position,
const DtTaitBryan& orientation);
143 virtual void setVisible(
bool isVisible);
152 virtual void setPartAnimationFlags(
int partNumber,
int animationFlags);
156 virtual void setPartTranslation(
int partNumber,
157 const DtVector& transform,
const DtVector& velocity);
161 virtual void setPartOrientation(
int partNumber,
162 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity,
PartUpdateType updateType);
166 virtual void setPartRotationalVelocity(
int partNumber,
167 const DtVector& rotationalVelocity,
bool forceUpdate,
PartUpdateType updateType);
181 virtual bool findPartPositionAndOrientation(
int partNumber, DtVector& position,
DtQuat& ori)
override;
187 virtual bool findCachedPartPositionAndOrientation(
int partNumber, DtVector& position, DtTaitBryan& ori)
override;
192 virtual DtVector partTranslation(
int partNumber)
const;
197 virtual DtTaitBryan partOrientation(
int partNumber)
const;
200 virtual void setPartVisibility(
int partNumber,
bool onOff);
206 virtual void getParts(
PartList& parts)
const;
209 virtual bool hasPart(
int partId)
const;
212 virtual void addPart(
int partNumber, osgSim::DOFTransform* node);
221 virtual void setAnimationFrame(
const std::string& animationName,
223 int frameIndex)
override;
226 virtual void setAnimationRange(
const std::string& animationName,
227 int firstFrameIndex,
int lastFrameIndex)
override;
230 virtual void setAnimationSpeed(
const std::string& animationName,
231 double framesPerSecond)
override;
234 virtual void setAnimationState(
const std::string& animationName,
239 virtual void setAnimationLastFrameTime(
const std::string& animationName,
double animationLastFrameTime);
243 virtual void setAnimationLoopCount(
const std::string& animationName,
int loopCount);
247 virtual int animationFrameCount(
const std::string& animationName)
const;
251 virtual int animationCurrentFrame(
const std::string& animationName)
const;
255 virtual int animationFirstFrame(
const std::string& animationName)
const;
259 virtual int animationLastFrame(
const std::string& animationName)
const;
263 virtual double animationSpeed(
const std::string& animationName)
const;
267 virtual AnimationState animationState(
const std::string& animationName)
const;
271 virtual double animationLastFrameTime(
const std::string& animationName)
const;
275 virtual int animationLoopCount(
const std::string& animationName)
const;
281 virtual void addAnimation(
const std::string& animationName,
282 osg::Sequence* node);
291 virtual void setFlipBookAnimationsSpeed(
double leftSpeed,
double rightSpeed,
double mainSpeed);
297 virtual void scrollUvTextures(
double leftSpeed,
double rightSpeed,
double mainSpeed);
306 virtual void setModelScalingEnabled(
bool b);
311 virtual bool modelScalingEnabled();
316 virtual void setLocalModelScalingEnabled(
bool enabled);
320 virtual void setLocalModelScalingAmount(
float localScl);
329 virtual void setColor(
float r,
float g,
float b,
float a);
333 virtual void enableColorBlending(
bool b);
336 virtual void setBlendColor(
float r,
float g,
float b,
float a);
342 virtual void setOtherData0(
float r,
float g,
float b,
float a);
351 virtual void setLinkageConfigPair(
const std::string& linkageName,
const std::string& configName);
369 virtual void weaponFired(
const DtUnicode& munitionModelDefName)
override;
373 virtual void setDynamicSensorRegion(
const std::string& region,
bool state)
override;
377 virtual bool dynamicSensorRegion(
const std::string& region);
389 virtual void setUvOffset(
const std::string& annotation,
390 float uOffset,
float vOffset);
397 virtual void setState(
int stateNumber,
int stateValue);
401 virtual void setStateUnfiltered(
int stateNumber,
int stateValue);
404 virtual void reapplyState();
408 virtual int state(
int stateNumber)
const;
414 virtual void addState(
int stateNumber, osgSim::MultiSwitch* node);
418 virtual void setStateValueExists(
int stateNumber,
int stateValue);
427 virtual void setLightpointMaxDistance(
float distance);
432 virtual void setLightPointGroup(
const std::string& groupName);
435 virtual const std::string& lightPointGroup()
const;
440 virtual void setLightPointGroupIntensity(
const std::string& groupName,
float intensity);
449 virtual void setDepthMask(osg::Group& parent);
452 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
457 virtual void setIsSupportModel(
bool isSupport);
460 virtual void getBoundingBoxComponents(DtVector& minimum, DtVector& maximum);
467 virtual void slot_onShadowStateChanged(
bool on);
470 virtual void slot_atcModeEnableChanged(
bool state);
475 virtual void setSingleChildOn(osgSim::MultiSwitch* multiSwitch,
unsigned int switchIndex,
int nodeTypeIndex);
478 virtual void setDofHpr(osgSim::DOFTransform* dof,
const DtVector& hpr,
int animationFlags);
481 virtual void setDofHprVel(osgSim::DOFTransform* dof,
const DtVector& hprVel,
int animationFlags);
485 virtual bool areRegisteredModelTextureVariants(
void)
const;
487 virtual void registerModelTextureVariants(
const std::vector<std::string>& variants);
489 virtual void setModelTextureVariant(
const std::string& variant);
491 virtual const std::string& modelTextureVariant(
void);
499 static void setTrackObjects(
bool val);
501 static bool trackObjects(
void);
505 static void trackEntity(
const std::string& entityDisplayName,
DtModelSetId modelSet,
bool track);
511 virtual void setStateInternal(
int stateNumber,
int stateValue);
515 virtual void setUvOffsetInternal(
const std::string& annotation,
float uOffset,
float vOffset);
521 virtual void setPartTranslationInternal(
int partNumber,
523 const DtVector& transform,
const DtVector& velocity);
526 virtual void setPartOrientationInternal(
int partNumber,
527 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
532 virtual void setPartRotationalVelocityInternal(
int partNumber,
533 const DtVector& rotationalVelocity,
bool forceUpdate =
true);
536 virtual void disablePart(
int partNumber);
539 virtual void enablePart(
int partNumber);
550 virtual void removeFromScene();
553 virtual void modelInstanceToBeDeleted();
557 virtual void modelInstanceCreatedInternal(osg::Node* root,
DtOsgModelInstance* osgModelInstance,
bool daylightControlledLights,
float scale);
562 virtual void modelInstanceCreated(
bool castShadows,
bool daylightControlledLights,
float scale);
568 virtual void parseModel(osg::Node* root);
572 virtual void backgroundLoad();
577 virtual void foregroundLoad();
586 virtual void foregroundLoadInternal();
592 virtual void processAutomaticallyArticulatedParts();
595 virtual int lightPointGroupIdToUse(
bool increaseReferenceCount=
false)
const;
597 virtual void updateGeneratedUniqueLightPointGroupName();
600 virtual void modelInstanceToBeDeletedInternal(
void);
608 : myOrientation(0, 0, 0)
609 , myRotationalVelocity(0, 0, 0)
610 , myUpdateType(PartUpdateTypeManual)
634 static const unsigned int theNodePathCacheSize = 4;
bool myModelScalingEnabled
Definition: DtOsgArticulatedModel.h:685
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMap
Definition: DtOsgArticulatedModel.h:626
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:73
std::string myModelTextureVariant
Definition: DtOsgArticulatedModel.h:709
NodePathCache myNodePathCache
Definition: DtOsgArticulatedModel.h:633
bool myInitialOrientationOffsetSet
Definition: DtOsgArticulatedModel.h:681
DtOsgIndirectEntityManager & myIndirectEntityManager
Definition: DtOsgArticulatedModel.h:642
DtArticulatedModelParser::AnnotationMap myAnnotationMap
Definition: DtOsgArticulatedModel.h:628
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMapWithVelocityControl
Definition: DtOsgArticulatedModel.h:627
PartTranslationMap myPartTranslationMap
Definition: DtOsgArticulatedModel.h:659
DtArticulatedModelParser::AnimationMap myAnimationMap
Definition: DtOsgArticulatedModel.h:625
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
std::unordered_map< int, NodeList > NodePathCache
Definition: DtOsgArticulatedModel.h:72
AnnotationNameToUvsMap myAnnotationsUvMap
Definition: DtOsgArticulatedModel.h:637
SensorRegionStateMap mySensorRegionMap
Definition: DtOsgArticulatedModel.h:640
std::map< int, std::pair< DtVector, DtVector > > PartTranslationMap
Definition: DtOsgArticulatedModel.h:658
bool myInitialOrientationSet
Definition: DtOsgArticulatedModel.h:678
singleton class that acts as a bridge between the
Definition: DtOsgIndirectEntityManager.h:68
PartOrientationMap myPartOrientationMap
Definition: DtOsgArticulatedModel.h:656
std::unordered_map< int, MultiSwitchList > MapStateNumberToMultiSwitchList
Definition: DtArticulatedModelParser.h:47
A structure used to define orientation data for an articulated part.
Definition: DtOsgArticulatedModel.h:605
std::unordered_map< std::string, VectorSequenceAndMultipliers > FlipBookAnimationMap
Definition: DtArticulatedModelParser.h:109
An articulated model manipulator for controlling an articulated model.
Definition: DtArticulatedModel.h:31
static std::atomic< int > theTotalObjects
Definition: DtOsgArticulatedModel.h:704
DtArticulatedModelParser::MapStateNumberToStateValue myMapStateNumberToStateValue
Definition: DtOsgArticulatedModel.h:622
static boost::mutex theBackgroundLoadCloneMutex
Definition: DtOsgArticulatedModel.h:697
PartUpdateType
enumeration for what kind of update was applied to a part. The purpose of the enumeration is to track...
Definition: DtArticulatedModel.h:39
An articulated model manipulator for controlling an articulated model. Supports indirect rendering of...
Definition: DtOsgArticulatedModel.h:67
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
DtOsgSceneConnector is used by models to create an OSG position/orientation transform so that it can ...
Definition: DtOsgSceneConnector.h:77
std::map< int, int > MapStateNumberToStateValue
Definition: DtArticulatedModelParser.h:52
static std::unordered_map< std::string, DtModelSetId > theSetEntitiesToTrack
Definition: DtOsgArticulatedModel.h:707
DtVector myRotationalVelocity
Definition: DtOsgArticulatedModel.h:616
static const std::unordered_set< int > theStatesToFilter
which states are we filtering to take additional/optional actions on?
Definition: DtOsgArticulatedModel.h:701
std::string myLightPointGroupName
Definition: DtOsgArticulatedModel.h:689
std::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:50
DtArticulatedModelParser::MapStateNumberToMultiSwitchList myMapStateNumberToMultiSwitchList
Definition: DtOsgArticulatedModel.h:624
DtTaitBryan myOrientation
Definition: DtOsgArticulatedModel.h:615
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
std::map< int, PartOrientationData > PartOrientationMap
Definition: DtOsgArticulatedModel.h:655
DtArticulatedModelParser::ScrollableTextureGroupMap myScrollableTextureGroupMap
Definition: DtOsgArticulatedModel.h:629
Contains makVrv::DtArticulatedModel class.
DtArticulatedModelParser::MapStateNumberToStateExistenceList myMapStateNumberToStateExistenceList
Definition: DtOsgArticulatedModel.h:621
DtVector myBoundMin
Definition: DtOsgArticulatedModel.h:661
DtMetaFileManager::LinkageValueVec myModelMetaFeatures
List of node pointers that have meta data associated with them.
Definition: DtOsgArticulatedModel.h:645
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::vector< osg::Node * > NodeList
Definition: DtOsgArticulatedModel.h:71
DtVector mySetPosition
Definition: DtOsgArticulatedModel.h:675
bool myUseSwitch
Definition: DtOsgArticulatedModel.h:635
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
DtVector myScaleArtPartTransform
Values to scale art part transforms by - loaded from the model definition.
Definition: DtOsgArticulatedModel.h:665
std::list< std::string > myWeaponFireDynamicRegions
Definition: DtOsgArticulatedModel.h:694
PartUpdateType myUpdateType
Definition: DtOsgArticulatedModel.h:617
std::vector< int > PartList
Definition: DtArticulatedModel.h:45
std::unordered_map< std::string, std::pair< float, float > > AnnotationNameToUvsMap
Definition: DtOsgArticulatedModel.h:75
Base class to provide boost signal/slot management.
DtOsgSceneConnector * mySceneConnector
Definition: DtOsgArticulatedModel.h:631
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:693
static bool theTrackObjects
Definition: DtOsgArticulatedModel.h:703
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:76
A utility Quaternion class.
Definition: DtQuat.h:19
std::unordered_map< std::string, bool > SensorRegionStateMap
Definition: DtOsgArticulatedModel.h:639
bool myInitialPositionOffsetSet
Definition: DtOsgArticulatedModel.h:680
DtModelSetId
Definition: DtModelSetEnums.h:19
boost::signalslib::signal< void(DtOsgArticulatedModel *, int, int)> signal_SetState
signal to emit when a state is set
Definition: DtOsgArticulatedModel.h:495
DtArticulatedModelParser::PartMap myPartMap
Definition: DtOsgArticulatedModel.h:623
bool myHandlersRegisterered
Definition: DtOsgArticulatedModel.h:682
std::list< std::string > myMovingDynamicRegions
Definition: DtOsgArticulatedModel.h:692
std::vector< DtVirtualBaseClass * > myModelMetaAttachments
Vector of metafile attachment on this object so they can be deleted on object destruction.
Definition: DtOsgArticulatedModel.h:653
LinkageConfigMap myLinkageConfigMap
Map of linkage names (NodeName/Annotation) from the metafile(if it exists) to config names...
Definition: DtOsgArticulatedModel.h:649
DtTaitBryan mySetOrientation
Definition: DtOsgArticulatedModel.h:676
std::map< std::string, VectorScrollableTextureGroupAndParams > ScrollableTextureGroupMap
Definition: DtArticulatedModelParser.h:141
DtSignalConnectionManager myConnections
Definition: DtOsgArticulatedModel.h:687
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:677
PartOrientationData()
Definition: DtOsgArticulatedModel.h:607