AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
agxVehicle::Track Class Reference

Assembly object representing a continuous track with a given number of shoes (nodes). More...

#include <Track.h>

+ Inheritance diagram for agxVehicle::Track:

Public Types

using GeometryContactContainer = agx::Vector< agx::Physics::GeometryContactPtr >
 
using Iterator = TrackNodeIterator
 
using NodeRange = TrackNodeRange
 
using NodeRangeContainer = agx::VectorPOD< NodeRange >
 
using OnNodeInitializeCallback = std::function< void(const TrackNode &)>
 
using RigidBodyTrackWheelTable = agx::HashTable< const agx::RigidBody *, TrackWheel * >
 
using TrackWheelContainer = agx::Vector< TrackWheelRef >
 
- Public Types inherited from agxSDK::Assembly
enum  Type { ASSEMBLY , COLLECTION }
 Specifies the type an assembly is. More...
 

Public Member Functions

 Track (agx::RigidBody *referenceRigidBody, agx::UInt numberOfNodes, agx::Real width, agx::Real thickness, InitialTrackTension initialTension={})
 Construct track given number of nodes, size and initial tension.
 
 Track (agx::UInt numberOfNodes, agx::Real width, agx::Real thickness, agx::Real initialDistanceTension=agx::Real(0))
 Construct track given number of nodes, size and initial tension distance.
 
 Track (TrackRoute *route, InitialTrackTension initialTension)
 Construct given a track route.
 
agx::Bool add (TrackWheelRef wheel, bool addToAssembly=true)
 Add track wheel to this track before this track has been initialized.
 
agx::Bool addSupportGroupId (agxCollide::Geometry *geometry) const
 Add this track's support group id to geometry.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxVehicle::Track)
 
TrackNode * findNode (const agx::Vec3 &worldPoint) const
 Find the node closest to the given world point.
 
TrackWheel * findReferenceWheel () const
 Reference wheel's rotation axis is defining the plane in which this track will be created.
 
bool getEnableCollisionsWithSupport () const
 
bool getEnableFullDegreeModel () const
 
InitialTrackTension & getInitialTension ()
 
const InitialTrackTension & getInitialTension () const
 
TrackInternalMergeProperties * getInternalMergeProperties () const
 
Iterator getIterator (agx::UInt index) const
 
template<>
Track::Iterator getIterator (const agx::RigidBody *obj) const
 
template<typename T >
Iterator getIterator (const T *obj) const
 
template<>
Track::Iterator getIterator (const TrackNode *obj) const
 
TrackNode * getNode (agx::UInt index) const
 
template<>
TrackNode * getNode (const agx::RigidBody *obj) const
 
template<typename T >
TrackNode * getNode (const T *obj) const
 
agx::UInt getNodeIndex (const agx::RigidBody *rb) const
 
agx::UInt getNumNodes () const
 
TrackProperties * getProperties () const
 
agx::RigidBody * getReferenceRigidBody () const
 
TrackRoute * getRoute () const
 
agx::UInt32 getSupportGroupId () const
 
agx::Real getTension (const TrackNode &node) const
 
TrackWheel * getWheel (const agx::RigidBody *rb) const
 
const Track::TrackWheelContainer & getWheels () const
 
virtual agx::Bool initialize (OnNodeInitializeCallback onInitializeCallback)
 Initialize this track given already assigned route, added wheels, number of nodes and an initialize node callback.
 
virtual agx::Bool initialize (TrackNodeOnInitializeCallback *onInitializeCallback=nullptr)
 Initialize this track given already assigned route, added wheels, number of nodes and an initialize node callback.
 
bool isInitialized () const
 
NodeRange nodes () const
 
NodeRange nodes (IndexRange range) const
 
virtual bool onContact (agxCollide::GeometryContact *gc)
 
void onPostContact (agxCollide::GeometryContact *geometryContact)
 
const GeometryContactContainer & onPreGetNodeOtherContacts (const TrackNode *node) const
 Collected contacts of node vs.
 
agx::UInt32Vector onPreGetNodesWheelContacts (const TrackWheel *wheel) const
 Node indices in contact with the given wheel.
 
const GeometryContactContainer & onPreGetOtherContacts () const
 Collected contacts that matches Track::get(rb) == this but isn't nodes vs.
 
agx::Bool remove (TrackWheelRef wheel)
 Remove track wheel.
 
agx::Bool removeSupportGroupId (agxCollide::Geometry *geometry) const
 Remove this track's support group id from geometry.
 
void setEnableCollisionsWithSupport (bool enable)
 Enable/disable collisions between this track and geometries carrying this track's support group id.
 
bool setEnableFullDegreeModel (bool enable)
 Activates or deactivates the full degrees-of-freedom track model.
 
void setProperties (TrackProperties *properties)
 Assign properties to this track.
 
- Public Member Functions inherited from agxSDK::LinkedStructure
virtual agx::Bool addComponent (agxSDK::LinkedStructureComponent *component)
 Add new component to this linked structure.
 
virtual void addGroup (agx::UInt32 id)
 Add group id to all segments in this linked structure.
 
virtual void addGroup (const agx::Name &name)
 Add group name to all segments in this linked structure.
 
virtual void addNotification (agxSDK::Simulation *)
 Called when this assembly is added to a simulation (given that it not already is in the simulation).
 
void addNotification (agxSDK::Simulation *simulation) final override
 Called when this linked structure is added to the simulation.
 
virtual void addNotification (Assembly *)
 Called when this assembly is added to another assembly.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxSDK::LinkedStructure)
 
virtual agx::Real findCurrentLength (agx::Real restLengthFromStart) const
 Calculates the current length of a given rest length.
 
virtual agxCollide::GroupIdCollection findGroupIdCollection () const
 
virtual agx::Vec3 findPoint (agx::Real restLengthFromStart) const
 Finds center point on this structure given rest length from the start.
 
virtual agx::Vec3 findPoint (const agx::Vec3 &worldPoint) const
 Given any world point, find a center point on this structure that is closest to the given worldPoint.
 
virtual agx::Real findRestLength (agx::Real currentLengthFromStart) const
 Calculates the rest length of a given current length from start.
 
virtual agx::Real findRestLengthTo (const agx::Vec3 &worldPoint) const
 Given any world point, find a center point on this structure that is closest to the given worldPoint and return the rest length from start.
 
virtual agx::Real findRestLengthTo (const agxSDK::LinkedSegment *segment) const
 Finds rest length to the start of the given segment.
 
virtual agx::Vec3 getAngularVelocityDamping () const
 
template<typename T >
T * getComponent () const
 
agxSDK::LinkedStructureComponent * getComponent (const agx::Name &name) const
 
virtual agx::Real getCurrentLength () const
 Calculates and returns the total length of this linked structure, at current state.
 
virtual agx::UInt32 getDisabledCollisionGroupId () const
 
virtual agx::Bool getEnableCollisions (const agx::RigidBody *rb) const
 
virtual agx::Bool getEnableCollisions (const agxCollide::Geometry *geometry) const
 
virtual agx::Vec3 getLinearVelocityDamping () const
 
virtual agx::Real getMass () const
 Calculates and returns the total mass of this linked structure.
 
virtual agx::Material * getMaterial () const
 
virtual agx::Real getRestLength () const
 Calculates and returns the total length of this linked structure, at rest.
 
virtual agx::Real getRestVolume () const
 Calculates and returns the total volume of this linked structure, at rest.
 
template<>
LinkedSegment * getSegment (const agx::RigidBody *rb) const
 
agx::UInt getSegmentIndex (const agx::RigidBody *rb) const
 
const agxSDK::LinkedSegmentContainer & getSegmentsContainer () const
 
virtual agx::UInt32 getUniqueId () const
 
virtual agx::Bool hasGroup (agx::UInt32 id) const
 
virtual agx::Bool hasGroup (const agx::Name &name) const
 
virtual agx::Bool rebind ()
 Make the current relative positions of all nodes the rest state.
 
virtual agx::Bool removeComponent (agxSDK::LinkedStructureComponent *component)
 Remove an added component from this linked structure.
 
virtual void removeGroup (agx::UInt32 id)
 Remove group id from all segments in this linked structure.
 
virtual void removeGroup (const agx::Name &name)
 Remove group name from all segments in this linked structure.
 
virtual void removeNotification (agxSDK::Simulation *)
 Called when this assembly is removed from a simulation.
 
void removeNotification (agxSDK::Simulation *simulation) final override
 Called when this linked structure is added to the simulation.
 
virtual void removeNotification (Assembly *)
 Called when this assembly is removed from another assembly.
 
agxSDK::LinkedSegmentRange< agxSDK::LinkedSegment > segments ()
 
virtual void setAngularVelocityDamping (const agx::Vec3 &angularVelocityDamping)
 Assigns angular velocity damping to all segments in this linked structure.
 
virtual void setDisabledCollisionsId (const agx::Uuid &uuid)
 Set the collision id of this linked structure.
 
virtual void setEnableCollisions (agx::RigidBody *rb, agx::Bool enable)
 Enable/disable collisions between the rigid body and all segments of this linked structure.
 
virtual void setEnableCollisions (agxCollide::Geometry *geometry, agx::Bool enable)
 Enable/disable collisions between the geometry and all segments of this linked structure.
 
virtual void setLinearVelocityDamping (const agx::Vec3 &linearVelocityDamping)
 Assigns linear velocity damping to all segments in this linked structure.
 
virtual void setMaterial (agx::Material *material)
 Assign material to all segments in this linked structure.
 
virtual void setUniqueId (const agx::Uuid &uuid)
 Set the unique id of this linked structure.
 
- Public Member Functions inherited from agxSDK::Assembly
 Assembly ()
 Default constructor.
 
bool add (agx::Constraint *constraint)
 Add a constraint to the assembly.
 
bool add (agx::ContactMaterial *contactMaterial)
 Add a contact material to this assembly.
 
bool add (agx::Emitter *emitter)
 Add an emitter to this assembly.
 
bool add (agx::Interaction *interaction)
 Add an interaction to this assembly.
 
bool add (agx::MergedBody *mergedBody)
 Add a MergedBody to this assembly.
 
bool add (agx::ObserverFrame *observerFrame)
 Add an ObserverFrame to this assembly.
 
bool add (agx::RigidBody *body)
 Add a rigid body to the assembly.
 
bool add (agxCollide::Geometry *geometry)
 Add a geometry to the assembly.
 
bool add (agxSDK::EventListener *listener)
 Add a listener to the assembly.
 
bool add (agxSDK::TerrainInstance *terrainInstance)
 Add a TerrainInstance to this assembly.
 
bool add (agxSDK::TerrainToolInstance *toolInstance)
 Add a TerrainToolInstance to this assembly.
 
bool add (agxStream::Serializable *object)
 Add an object of type serialized.
 
bool add (Assembly *assembly)
 Add another assembly as child to this assembly.
 
virtual void addNotification (agxSDK::Simulation *)
 Called when this assembly is added to a simulation (given that it not already is in the simulation).
 
virtual void addNotification (Assembly *)
 Called when this assembly is added to another assembly.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxSDK::Assembly)
 
size_t collect (agx::ConstraintRefVector &result, bool recursive=true)
 
size_t collect (agx::EmitterRefVector &result, bool recursive=true)
 
size_t collect (agx::InteractionRefVector &result, bool recursive=true)
 
size_t collect (agx::MergedBodyRefVector &result, bool recursive=true)
 
size_t collect (agx::ObserverFrameRefVector &result, bool recursive=true)
 
size_t collect (agx::ParticleSystemRefVector &result, bool recursive=true)
 
size_t collect (agx::RigidBodyRefVector &result, bool recursive=true)
 
size_t collect (agxCollide::GeometryRefVector &result, bool recursive=true)
 
size_t collect (agxSDK::AssemblyRefVector &result, bool recursive=true)
 
size_t collect (agxSDK::EventListenerRefVector &result, bool recursive=true)
 
size_t collect (agxSDK::TerrainInstanceRefVector &result, bool recursive=true)
 
size_t collect (agxSDK::TerrainToolInstanceRefVector &result, bool recursive=true)
 
bool empty () const
 
const AssemblyRefSetVector & getAssemblies () const
 
agxSDK::Assembly * getAssembly (const agx::Name &name, bool recursive=true)
 Find (linear search) and return named Assembly.
 
const agxSDK::Assembly * getAssembly (const agx::Name &name, bool recursive=true) const
 Find (linear search) and return named Assembly.
 
agxSDK::Assembly * getAssembly (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return an Assembly matching the given uuid.
 
const agxSDK::Assembly * getAssembly (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return an Assembly matching the given uuid.
 
agx::Constraint * getConstraint (const agx::Name &name, bool recursive=true)
 Find (linear search) and return named Constraint.
 
template<typename T >
T * getConstraint (const agx::Name &name, bool recursive=true)
 Find and return named Constraint of a template type, for example Hinge:
 
const agx::Constraint * getConstraint (const agx::Name &name, bool recursive=true) const
 Find (linear search) and return named Constraint.
 
template<typename T >
const T * getConstraint (const agx::Name &name, bool recursive=true) const
 Find and return named Constraint of a template type, for example Hinge:
 
agx::Constraint * getConstraint (const agx::Uuid &uuid, bool recursive=true)
 Find and return a pointer to a Constraint with the given uuid.
 
const agx::Constraint * getConstraint (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return a pointer to a Constraint with the given uuid.
 
agx::Constraint1DOF * getConstraint1DOF (const agx::Name &name, bool recursive=true)
 
agx::Constraint2DOF * getConstraint2DOF (const agx::Name &name, bool recursive=true)
 
const agx::ConstraintRefSetVector & getConstraints () const
 
const agx::EmitterRefSetVector & getEmitters () const
 
const EventListenerRefSetVector & getEventListeners () const
 
virtual agx::Frame * getFrame ()
 Return a reference to the frame containing transformation and velocity information for this assembly.
 
virtual const agx::Frame * getFrame () const
 
const agxCollide::GeometryRefSetVector & getGeometries () const
 
agxCollide::Geometry * getGeometry (const agx::Name &name, bool recursive=true)
 Find (linear search) and return named collision Geometry.
 
const agxCollide::Geometry * getGeometry (const agx::Name &name, bool recursive=true) const
 Find (linear search) and return named collision Geometry.
 
agxCollide::Geometry * getGeometry (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return a Geometry matching the given uuid.
 
const agxCollide::Geometry * getGeometry (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return a Geometry matching the given uuid.
 
const agx::InteractionRefSetVector & getInteractions () const
 
agx::Vec3 getLocalPosition () const
 
agx::Quat getLocalRotation () const
 
const agx::AffineMatrix4x4 & getLocalTransform () const
 
const agx::MergedBodyRefSetVector & getMergedBodies () const
 
agx::MergedBody * getMergedBody (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return an MergedBody matching the given uuid.
 
const agx::MergedBody * getMergedBody (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return an MergedBody matching the given uuid.
 
agx::Name getName () const
 
agx::ObserverFrame * getObserverFrame (const agx::Name &name, bool recursive=true)
 Find (linear search) and return an ObserverFrame matching the given uuid.
 
const agx::ObserverFrame * getObserverFrame (const agx::Name &name, bool recursive=true) const
 Find (linear search) and return an ObserverFrame matching the given uuid.
 
agx::ObserverFrame * getObserverFrame (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return an ObserverFrame matching the given uuid.
 
const agx::ObserverFrame * getObserverFrame (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return an ObserverFrame matching the given uuid.
 
const agx::ObserverFrameRefSetVector & getObserverFrames () const
 
Assembly * getParent ()
 
const Assembly * getParent () const
 
agx::Frame * getParentFrame ()
 
const agx::Frame * getParentFrame () const
 
const agx::ParticleSystemRefSetVector & getParticleSystems () const
 
const agx::RigidBodyRefSetVector & getRigidBodies () const
 
agx::RigidBody * getRigidBody (const agx::Name &name, bool recursive=true)
 Find (linear search) and return named RigidBody.
 
const agx::RigidBody * getRigidBody (const agx::Name &name, bool recursive=true) const
 Find (linear search) and return named RigidBody.
 
agx::RigidBody * getRigidBody (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return a pointer to a RigidBody with the given uuid.
 
const agx::RigidBody * getRigidBody (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return a pointer to a RigidBody with the given uuid.
 
agxSDK::Simulation * getSimulation ()
 
const agxSDK::Simulation * getSimulation () const
 
agxSDK::TerrainInstance * getTerrainInstance (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return an TerrainInstance matching the given uuid.
 
const agxSDK::TerrainInstance * getTerrainInstance (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return an TerrainInstance matching the given uuid.
 
const agxSDK::TerrainInstanceRefSetVector & getTerrainInstances () const
 
agxSDK::TerrainToolInstance * getTerrainToolInstance (const agx::Uuid &uuid, bool recursive=true)
 Find (linear search) and return an TerrainToolInstance matching the given uuid.
 
const agxSDK::TerrainToolInstance * getTerrainToolInstance (const agx::Uuid &uuid, bool recursive=true) const
 Find (linear search) and return an TerrainToolInstance matching the given uuid.
 
const agxSDK::TerrainToolInstanceRefSetVector & getTerrainToolInstances () const
 
Type getType () const
 
bool remove (agx::Constraint *constraint)
 Remove a constraint from this assembly (does not recurse down in tree).
 
bool remove (agx::ContactMaterial *contactMaterial)
 Remove a contact material from this assembly.
 
bool remove (agx::Emitter *emitter)
 Remove an emitter from this assembly.
 
bool remove (agx::Interaction *interaction)
 Remove an interaction from this assembly.
 
bool remove (agx::MergedBody *mergedBody)
 Remove a MergedBody from this assembly.
 
bool remove (agx::ObserverFrame *observerFrame, bool resetParentFrame=true)
 Remove an ObserverFrame from this assembly.
 
bool remove (agx::RigidBody *body, bool removeAssociatedGeometries=false, bool resetParentFrame=true)
 Remove a rigid body from this assembly (does not recurse down in tree).
 
bool remove (agxCollide::Geometry *geometry, bool resetParentFrame=true)
 Remove a geometry from this assembly (does not recurse down in tree).
 
bool remove (agxSDK::TerrainInstance *terrainInstance)
 Remove a TerrainInstance from this assembly.
 
bool remove (agxSDK::TerrainToolInstance *toolInstance)
 Remove a TerrainToolInstance from this assembly.
 
bool remove (Assembly *assembly, bool resetParentFrame=true)
 Remove a child assembly from a parent.
 
bool remove (EventListener *listener)
 Remove an EventListener from the assembly.
 
virtual void removeNotification (agxSDK::Simulation *)
 Called when this assembly is removed from a simulation.
 
virtual void removeNotification (Assembly *)
 Called when this assembly is removed from another assembly.
 
bool reset (bool resetParentFrame=true)
 If this assembly is not added to a simulation it will clear all added bodies etc.
 
virtual void setAngularVelocity (const agx::Vec3 &velocity)
 Set the angular velocity (in world frame) recursively for all rigid bodies stored in assembly.
 
void setLocalPosition (agx::Real x, agx::Real y, agx::Real z)
 Set the position of the assembly relative to its frame's parent frame.
 
void setLocalPosition (const agx::Vec3 &p)
 Set the position of the assembly relative to its frame's parent frame.
 
void setLocalRotation (const agx::EulerAngles &e)
 Set the rotation of the assembly relative to its frame's parent frame.
 
void setLocalRotation (const agx::Quat &q)
 Set the rotation of the assembly relative to its frame's parent frame.
 
void setLocalTransform (const agx::AffineMatrix4x4 &matrix)
 Assign the local transformation matrix for this assembly, ignoring any eventual parent transformation.
 
void setName (const agx::Name &name)
 Set the name of this Assembly.
 
bool setParentFrame (agx::Frame *frame)
 Set the parent frame of this assembly's frame.
 
void setPosition (agx::Real x, agx::Real y, agx::Real z)
 Set the position of the frame in world coordinates.
 
void setPosition (const agx::Vec3 &p)
 Set the position of the frame in world coordinates.
 
void setRotation (const agx::EulerAngles &e)
 Set the rotation of the assembly relative to world frame.
 
void setRotation (const agx::OrthoMatrix3x3 &m)
 Set the rotation of the assembly relative to world frame.
 
void setRotation (const agx::Quat &q)
 Set the rotation of the assembly relative to world frame.
 
void setTransform (const agx::AffineMatrix4x4 &matrix)
 Set the transform of the assembly.
 
virtual void setVelocity (const agx::Vec3 &velocity)
 Set the linear velocity (in world frame) recursively for all rigid bodies stored in assembly.
 
bool transfer (agxSDK::Assembly *target)
 Transfer all the content from this assembly to the target, including name and transformation.
 
virtual void traverse (AssemblyVisitor *visitor)
 Traverse the assembly tree recursively using a visitor.
 
virtual void traverse (const AssemblyVisitor *visitor) const
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referenced & operator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Static Public Member Functions

static agxStream::Serializable * create (agxStream::InputArchive &)
 
static Track * find (agxSDK::Simulation *simulation, const agx::Name &name)
 Find track instance given simulation and name.
 
static Track * find (agxSDK::Simulation *simulation, const agx::Uuid &uuid)
 Find track instance given simulation and unique id.
 
static TrackPtrVector findAll (agxSDK::Simulation *simulation)
 Finds all agxVehicle::Track instances in the given simulation.
 
static TrackPtrVector findAll (agxSDK::Simulation *simulation, const agx::Name &name)
 Finds all track instances given simulation and name.
 
static Track * get (agx::RigidBody *rb)
 
static const Track * get (const agx::RigidBody *rb)
 
static const Track * get (const Wheel *wheel)
 
static Track * get (Wheel *wheel)
 
- Static Public Member Functions inherited from agxSDK::LinkedStructure
static agxStream::Serializable * create (agxStream::InputArchive &)
 
static LinkedStructure * get (agx::RigidBody *body)
 
static LinkedStructure * get (agxCollide::Geometry *geometry)
 
static const LinkedStructure * get (const agx::RigidBody *body)
 
static const LinkedStructure * get (const agxCollide::Geometry *geometry)
 
- Static Public Member Functions inherited from agxSDK::Assembly
static Assembly * asAssembly (agxStream::Serializable *obj)
 
static agxStream::Serializable * create (agxStream::InputArchive &)
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 

Protected Types

using State = agx::BitState< StateEnum, agx::UInt32 >
 
enum  StateEnum : agx::UInt32 { INITIALIZED = 1 << 0 , ACTIVE_TRACK_IMPLEMENTATION = 1 << 1 }
 

Protected Member Functions

 Track ()
 
virtual ~Track ()
 
virtual void onAddNotification (agxSDK::Simulation *simulation) override
 Called when addNotification is executed when this linked structure is added to the simulation.
 
virtual void onGroupAdd (const agxSDK::LinkedStructure::IdData &group) override
 Called when a new group has been added.
 
virtual void onGroupRemove (const agxSDK::LinkedStructure::IdData &group) override
 Called when an existing group has been removed.
 
virtual void onLastStep () override
 Called on simulation last step event - after user lastStep.
 
virtual void onMaterialNew () override
 Called when a new material has been assigned.
 
virtual void onPostIntegrate () override
 Called on simulation post integrate event - when transforms has been updated given current velocities.
 
virtual void onPostStep () override
 Called on simulation post step event - after user postStep.
 
virtual void onPreCollideStep () override
 Called on simulation pre-collide step event - after user preCollide.
 
virtual void onPreStep () override
 Called on simulation pre step event - after user preStep.
 
virtual void onRemoveNotification (agxSDK::Simulation *simulation) override
 Called when removeNotification is executed when this linked structure is removed from the simulation.
 
virtual void onSetEnableCollisions (agxCollide::Geometry *geometry, agx::Bool enable) override
 Called when collision state changed for given geometry.
 
- Protected Member Functions inherited from agxSDK::LinkedStructure
 LinkedStructure ()
 Hidden default constructor.
 
virtual ~LinkedStructure ()
 Reference counted object - protected destructor.
 
void add (LinkedSegment *segment)
 Add segment to this linked structure.
 
std::tuple< agx::Vec3, LinkedSegment * > findPointAndSegment (const agx::Vec3 &worldPoint) const
 
template<typename T >
T * findSegment (const agx::Vec3 &worldPoint) const
 
LinkedStructureObjectData * getData (const agx::RigidBody *rb) const
 
agx::UInt getNumSegments () const
 
template<typename T >
T * getSegment (agx::Real restLengthFromStart) const
 
LinkedSegment * getSegment (agx::UInt index) const
 
template<typename ObjT >
LinkedSegment * getSegment (const ObjT *rb) const
 
template<typename T >
LinkedSegmentIterator< T > getSegmentIterator (agx::UInt index, agx::Bool boundaryless=false) const
 
template<typename T , typename ObjT >
LinkedSegmentIterator< T > getSegmentIterator (const ObjT *rb, agx::Bool boundaryless=false) const
 
template<typename T >
LinkedSegmentRange< T > getSegments () const
 Constructs a segment range over all segments.
 
template<typename T >
LinkedSegmentRange< T > getSegments (agx::UInt beginIndex, agx::UInt endIndex) const
 Range given begin and end segment index.
 
virtual void onAddNotification (agxSDK::Simulation *simulation)
 Called when addNotification is executed when this linked structure is added to the simulation.
 
virtual void onGroupAdd (const IdData &group)
 Called when a new group has been added.
 
virtual void onGroupRemove (const IdData &group)
 Called when an existing group has been removed.
 
virtual void onLastStep ()
 Called on simulation last step event - after user lastStep.
 
virtual void onMaterialNew ()
 Called when a new material has been assigned.
 
virtual void onPostIntegrate ()
 Called on simulation post integrate event - when transforms has been updated given current velocities.
 
virtual void onPostStep ()
 Called on simulation post step event - after user postStep.
 
virtual void onPreCollideStep ()
 Called on simulation pre-collide step event - after user preCollide.
 
virtual void onPreStep ()
 Called on simulation pre step event - after user preStep.
 
virtual void onRemoveNotification (agxSDK::Simulation *simulation)
 Called when removeNotification is executed when this linked structure is removed from the simulation.
 
virtual void onSetEnableCollisions (agxCollide::Geometry *geometry, agx::Bool enable)
 Called when collision state changed for given geometry.
 
- Protected Member Functions inherited from agxSDK::Assembly
 Assembly (Type type)
 
virtual ~Assembly ()
 Destructor.
 
bool addParticleSystem (agx::ParticleSystem *particleSystem)
 Add a particle system to this assembly.
 
void addToSimulation (Simulation *simulation)
 
void removeFromSimulation (Simulation *simulation)
 
bool removeParticleSystem (agx::ParticleSystem *particleSystem)
 Remove a particle system from this assembly.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from agxSDK::LinkedStructure
template<typename T >
static T * getT (agx::RigidBody *rb)
 
template<typename T >
static const T * getT (const agx::RigidBody *rb)
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandler * getDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Assembly object representing a continuous track with a given number of shoes (nodes).

Definition at line 39 of file agxVehicle/Track.h.

Member Typedef Documentation

◆ GeometryContactContainer

◆ Iterator

◆ NodeRange

◆ NodeRangeContainer

◆ OnNodeInitializeCallback

using agxVehicle::Track::OnNodeInitializeCallback = std::function<void( const TrackNode& )>

Definition at line 47 of file agxVehicle/Track.h.

◆ RigidBodyTrackWheelTable

◆ State

using agxVehicle::Track::State = agx::BitState<StateEnum, agx::UInt32>
protected

Definition at line 453 of file agxVehicle/Track.h.

◆ TrackWheelContainer

Member Enumeration Documentation

◆ StateEnum

Enumerator
INITIALIZED 
ACTIVE_TRACK_IMPLEMENTATION 

Definition at line 448 of file agxVehicle/Track.h.

Constructor & Destructor Documentation

◆ Track() [1/4]

agxVehicle::Track::Track ( agx::RigidBody *  referenceRigidBody,
agx::UInt  numberOfNodes,
agx::Real  width,
agx::Real  thickness,
InitialTrackTension  initialTension = {} 
)

Construct track given number of nodes, size and initial tension.

Parameters
referenceRigidBody- This rigid body is the reference body that this track is attached to, normally the chassis of a vehicle. Note that the track is routed around track wheels that are connected directly or via links to this rigid body. If nullptr, the track is assumed to be attached in world.
numberOfNodes- number of nodes in the track
width- width of the track (this is an implicit definition, the geometry may be any size)
thickness- thickness of the track (this is an implicit definition, the geometry may be any size)
initialTension- how much is the initial tension, in Newton, of the track after it has been routed around the track wheels. Note that the final track tension also depends on the vehicle configurations, e.g. dampers. The given initial tension is an approximation of the final tension value.

◆ Track() [2/4]

agxVehicle::Track::Track ( agx::UInt  numberOfNodes,
agx::Real  width,
agx::Real  thickness,
agx::Real  initialDistanceTension = agx::Real(0) 
)

Construct track given number of nodes, size and initial tension distance.

Parameters
numberOfNodes- number of nodes in the track
width- width of the track (this is an implicit definition, the geometry may be any size)
thickness- thickness of the track (this is an implicit definition, the geometry may be any size)
initialDistanceTension- value (distance) of how much shorter each node should be which causes tension in the system of tracks and wheels. Ideal case track_tension = initialDistanceTension * tensileStiffness. Since contacts and other factors are included it's not possible to know the exact tension after the system has been created.

◆ Track() [3/4]

agxVehicle::Track::Track ( TrackRoute *  route,
InitialTrackTension  initialTension 
)

Construct given a track route.

Parameters
route- track route
initialTension- how much is the initial tension, in Newton, of the track after it has been routed around the track wheels. Note that the final track tension also depends on the vehicle configurations, e.g. dampers. The given initial tension is an approximation of the final tension value.

◆ Track() [4/4]

agxVehicle::Track::Track ( )
protected

◆ ~Track()

virtual agxVehicle::Track::~Track ( )
protectedvirtual

Member Function Documentation

◆ add()

agx::Bool agxVehicle::Track::add ( TrackWheelRef  wheel,
bool  addToAssembly = true 
)

Add track wheel to this track before this track has been initialized.

Parameters
wheel- track wheel to add
addToAssembly- when true the wheel rigid body and all wheel constraints are added to the track assembly, default is true.
Returns
true if added - otherwise false (e.g., already added, track initialized, part of another track, null rigid body)

◆ addSupportGroupId()

agx::Bool agxVehicle::Track::addSupportGroupId ( agxCollide::Geometry *  geometry) const

Add this track's support group id to geometry.

In the track model, geometries with this collision group id are treated as support geometries when in contact with the inside/top side of the track. Note that this method is equivalent to calling: geometry->addGroup(getSupportGroupId());

Parameters
geometry- geometry that should be treated as support geometry
Returns
true if the group id was added, false if geometry is null or already has the group id

◆ AGXSTREAM_DECLARE_SERIALIZABLE_BASE()

agxVehicle::Track::AGXSTREAM_DECLARE_SERIALIZABLE_BASE ( agxVehicle::Track  )

◆ create()

static agxStream::Serializable * agxVehicle::Track::create ( agxStream::InputArchive &  )
inlinestatic

Definition at line 441 of file agxVehicle/Track.h.

◆ find() [1/2]

static Track * agxVehicle::Track::find ( agxSDK::Simulation *  simulation,
const agx::Name &  name 
)
static

Find track instance given simulation and name.

Parameters
simulation- simulation
name- name of track instance to find
Returns
track instance with given name if found - otherwise null

◆ find() [2/2]

static Track * agxVehicle::Track::find ( agxSDK::Simulation *  simulation,
const agx::Uuid &  uuid 
)
static

Find track instance given simulation and unique id.

Parameters
simulation- simulation
uuid- UUID of track instance to find
Returns
track instance with given UUID if found - otherwise null

◆ findAll() [1/2]

static TrackPtrVector agxVehicle::Track::findAll ( agxSDK::Simulation *  simulation)
static

Finds all agxVehicle::Track instances in the given simulation.

Parameters
simulation- simulation
Returns
track instances found in the given simulation

◆ findAll() [2/2]

static TrackPtrVector agxVehicle::Track::findAll ( agxSDK::Simulation *  simulation,
const agx::Name &  name 
)
static

Finds all track instances given simulation and name.

Parameters
simulation- simulation
name- name of track instances to find
Returns
track instances with given name

◆ findNode()

TrackNode * agxVehicle::Track::findNode ( const agx::Vec3 &  worldPoint) const

Find the node closest to the given world point.

If this track hasn't been initialized, nullptr is returned.

Parameters
worldPoint- any point in world
Returns
the segment that is closest to the given worldPoint, nullptr if there are no nodes in the track.

◆ findReferenceWheel()

TrackWheel * agxVehicle::Track::findReferenceWheel ( ) const

Reference wheel's rotation axis is defining the plane in which this track will be created.

The reference wheel is (in priority order) either a (first) sprocket, a (first) idler or the first wheel added to this track.

◆ get() [1/4]

Track * agxVehicle::Track::get ( agx::RigidBody *  rb)
inlinestatic
Parameters
rb- rigid body
Returns
track instance rb belongs to, given rb is a TrackNode body

Definition at line 532 of file agxVehicle/Track.h.

Referenced by agxVehicle::calculateTrackTangentPlane().

◆ get() [2/4]

const Track * agxVehicle::Track::get ( const agx::RigidBody *  rb)
inlinestatic
Parameters
rb- rigid body
Returns
track instance rb belongs to, given rb is a TrackNode body

Definition at line 537 of file agxVehicle/Track.h.

◆ get() [3/4]

static const Track * agxVehicle::Track::get ( const Wheel *  wheel)
static
Parameters
wheel- track wheel
Returns
track instance wheel belongs to, nullptr if wheel isn't a TrackWheel or not added to a track

◆ get() [4/4]

static Track * agxVehicle::Track::get ( Wheel *  wheel)
static
Parameters
wheel- track wheel
Returns
track instance wheel belongs to, nullptr if wheel isn't a TrackWheel or not added to a track

◆ getEnableCollisionsWithSupport()

bool agxVehicle::Track::getEnableCollisionsWithSupport ( ) const
Returns
true if collisions with support geometries are enabled, otherwise false

◆ getEnableFullDegreeModel()

bool agxVehicle::Track::getEnableFullDegreeModel ( ) const
Returns
true if the full degrees-of-freedom track model is active, default is false.

◆ getInitialTension() [1/2]

InitialTrackTension & agxVehicle::Track::getInitialTension ( )
inline
Returns
The initial tension used during track initiation.

Definition at line 614 of file agxVehicle/Track.h.

◆ getInitialTension() [2/2]

const InitialTrackTension & agxVehicle::Track::getInitialTension ( ) const
inline
Returns
The initial tension used during track initiation.

Definition at line 609 of file agxVehicle/Track.h.

◆ getInternalMergeProperties()

TrackInternalMergeProperties * agxVehicle::Track::getInternalMergeProperties ( ) const
Returns
node to node merge properties and thresholds

◆ getIterator() [1/4]

Track::Iterator agxVehicle::Track::getIterator ( agx::UInt  index) const
inline
Returns
track node iterator given node index

Definition at line 590 of file agxVehicle/Track.h.

Referenced by agxVehicle::utils::createRangeExcludingNodeIndex(), and getIterator().

◆ getIterator() [2/4]

template<>
Track::Iterator agxVehicle::Track::getIterator ( const agx::RigidBody *  obj) const
inline

Definition at line 596 of file agxVehicle/Track.h.

◆ getIterator() [3/4]

template<typename T >
Iterator agxVehicle::Track::getIterator ( const T *  obj) const
Note
This method as template to handle ambiguity with index 0 and null.
Returns
track node iterator given rigid body - null when the body isn't a node in this track

◆ getIterator() [4/4]

template<>
Track::Iterator agxVehicle::Track::getIterator ( const TrackNode *  obj) const
inline

◆ getNode() [1/3]

TrackNode * agxVehicle::Track::getNode ( agx::UInt  index) const
inline
Returns
the node of given index

Definition at line 573 of file agxVehicle/Track.h.

References agx::Referenced::as(), and agxSDK::LinkedStructure::getSegment().

◆ getNode() [2/3]

template<>
TrackNode * agxVehicle::Track::getNode ( const agx::RigidBody *  obj) const
inline

Definition at line 579 of file agxVehicle/Track.h.

◆ getNode() [3/3]

template<typename T >
TrackNode * agxVehicle::Track::getNode ( const T *  obj) const
Note
This method as template to handle ambiguity with index 0 and null.
Returns
track node instance given rigid body - null when the body isn't a node in this track

◆ getNodeIndex()

agx::UInt agxVehicle::Track::getNodeIndex ( const agx::RigidBody *  rb) const
inline
Returns
track node index given rigid body - agx::InvalidIndex when the body isn't a node in this track

Definition at line 585 of file agxVehicle/Track.h.

◆ getNumNodes()

agx::UInt agxVehicle::Track::getNumNodes ( ) const
inline
Returns
the number of nodes in this track

Definition at line 568 of file agxVehicle/Track.h.

References agxSDK::LinkedStructure::getNumSegments().

◆ getProperties()

TrackProperties * agxVehicle::Track::getProperties ( ) const
Returns
the properties of this track

◆ getReferenceRigidBody()

agx::RigidBody * agxVehicle::Track::getReferenceRigidBody ( ) const
Returns
the rigid body that the track is attached to. Note that this may be null if the track isn't attached to a rigid body, e.g. when running the full degree model only.

◆ getRoute()

TrackRoute * agxVehicle::Track::getRoute ( ) const
Returns
the track route used to initialize this track

Referenced by agxVehicle::utils::getNodeWheelOverlapThreshold().

◆ getSupportGroupId()

agx::UInt32 agxVehicle::Track::getSupportGroupId ( ) const
Returns
the collision group id used to identify support geometries for this track

◆ getTension()

agx::Real agxVehicle::Track::getTension ( const TrackNode &  node) const
Returns
the current tension at this node's end position

◆ getWheel()

TrackWheel * agxVehicle::Track::getWheel ( const agx::RigidBody *  rb) const
inline
Returns
track wheel instance given rigid body - null when the body isn't a wheel in this track

Definition at line 563 of file agxVehicle/Track.h.

References agx::LinearProbingHashTableImplementation< KeyT, ValueT, HashT, AllocatorT >::get_or_return_default().

◆ getWheels()

const Track::TrackWheelContainer & agxVehicle::Track::getWheels ( ) const
Returns
track wheels added to this track

◆ initialize() [1/2]

virtual agx::Bool agxVehicle::Track::initialize ( OnNodeInitializeCallback  onInitializeCallback)
virtual

Initialize this track given already assigned route, added wheels, number of nodes and an initialize node callback.

If onInitializeCallback isn't given, a default function will be used that will add a box shape to the node rigid body.

Parameters
onInitializeCallback- callback when node has been created and is about to be added to this track. If desired, this callback should add shape(s) to the node rigid body.
Returns
true if initialized, i.e., more than two nodes were created - false if already initialized, no wheels in this track, track route failed to find node configuration

◆ initialize() [2/2]

virtual agx::Bool agxVehicle::Track::initialize ( TrackNodeOnInitializeCallback *  onInitializeCallback = nullptr)
virtual

Initialize this track given already assigned route, added wheels, number of nodes and an initialize node callback.

If onInitializeCallback isn't given, a default function will be used that will add a box shape to the node rigid body.

Parameters
onInitializeCallback- callback when node has been created and is about to be added to this track. If desired, this callback should add shape(s) to the node rigid body.
Returns
true if initialized, i.e., more than two nodes were created - false if already initialized, no wheels in this track, track route failed to find node configuration

◆ isInitialized()

bool agxVehicle::Track::isInitialized ( ) const
Returns
true if this track is initialized

◆ nodes() [1/2]

NodeRange agxVehicle::Track::nodes ( ) const
Returns
node range spanning all nodes in this track

Referenced by agxVehicle::utils::createRangeExcludingNodeIndex(), and agxVehicle::utils::splitNonconsecutive().

◆ nodes() [2/2]

NodeRange agxVehicle::Track::nodes ( IndexRange  range) const
Returns
node range given index range

◆ onAddNotification()

virtual void agxVehicle::Track::onAddNotification ( agxSDK::Simulation *  simulation)
overrideprotectedvirtual

Called when addNotification is executed when this linked structure is added to the simulation.

Reimplemented from agxSDK::LinkedStructure.

◆ onContact()

virtual bool agxVehicle::Track::onContact ( agxCollide::GeometryContact *  gc)
virtual

◆ onGroupAdd()

virtual void agxVehicle::Track::onGroupAdd ( const agxSDK::LinkedStructure::IdData &  group)
overrideprotectedvirtual

Called when a new group has been added.

Reimplemented from agxSDK::LinkedStructure.

◆ onGroupRemove()

virtual void agxVehicle::Track::onGroupRemove ( const agxSDK::LinkedStructure::IdData &  group)
overrideprotectedvirtual

Called when an existing group has been removed.

Reimplemented from agxSDK::LinkedStructure.

◆ onLastStep()

virtual void agxVehicle::Track::onLastStep ( )
overrideprotectedvirtual

Called on simulation last step event - after user lastStep.

Reimplemented from agxSDK::LinkedStructure.

◆ onMaterialNew()

virtual void agxVehicle::Track::onMaterialNew ( )
overrideprotectedvirtual

Called when a new material has been assigned.

Reimplemented from agxSDK::LinkedStructure.

◆ onPostContact()

void agxVehicle::Track::onPostContact ( agxCollide::GeometryContact *  geometryContact)

◆ onPostIntegrate()

virtual void agxVehicle::Track::onPostIntegrate ( )
overrideprotectedvirtual

Called on simulation post integrate event - when transforms has been updated given current velocities.

This event may occur before onPostStep (default), or after onPreCollide.

Reimplemented from agxSDK::LinkedStructure.

◆ onPostStep()

virtual void agxVehicle::Track::onPostStep ( )
overrideprotectedvirtual

Called on simulation post step event - after user postStep.

Reimplemented from agxSDK::LinkedStructure.

◆ onPreCollideStep()

virtual void agxVehicle::Track::onPreCollideStep ( )
overrideprotectedvirtual

Called on simulation pre-collide step event - after user preCollide.

Reimplemented from agxSDK::LinkedStructure.

◆ onPreGetNodeOtherContacts()

const GeometryContactContainer & agxVehicle::Track::onPreGetNodeOtherContacts ( const TrackNode *  node) const

Collected contacts of node vs.

"unknown", i.e., any other contact that aren't against a wheel (onPreGetNodesWheelContacts).

Parameters
node- node to get contacts for
Returns
vector of collected contacts between the given node and other objects

◆ onPreGetNodesWheelContacts()

agx::UInt32Vector agxVehicle::Track::onPreGetNodesWheelContacts ( const TrackWheel *  wheel) const

Node indices in contact with the given wheel.

Note: The contact data is only available in pre-step events.

Parameters
wheel- wheel to get contacts for
Returns
node indices of the nodes in contact with the given wheel

◆ onPreGetOtherContacts()

const GeometryContactContainer & agxVehicle::Track::onPreGetOtherContacts ( ) const

Collected contacts that matches Track::get(rb) == this but isn't nodes vs.

wheels or nodes vs. others.

Returns
vector of collected contacts that doesn't match any node in this track

◆ onPreStep()

virtual void agxVehicle::Track::onPreStep ( )
overrideprotectedvirtual

Called on simulation pre step event - after user preStep.

Reimplemented from agxSDK::LinkedStructure.

◆ onRemoveNotification()

virtual void agxVehicle::Track::onRemoveNotification ( agxSDK::Simulation *  simulation)
overrideprotectedvirtual

Called when removeNotification is executed when this linked structure is removed from the simulation.

Reimplemented from agxSDK::LinkedStructure.

◆ onSetEnableCollisions()

virtual void agxVehicle::Track::onSetEnableCollisions ( agxCollide::Geometry *  geometry,
agx::Bool  enable 
)
overrideprotectedvirtual

Called when collision state changed for given geometry.

Reimplemented from agxSDK::LinkedStructure.

◆ remove()

agx::Bool agxVehicle::Track::remove ( TrackWheelRef  wheel)

Remove track wheel.

Parameters
wheel- wheel to remove
Returns
true if removed - otherwise false

◆ removeSupportGroupId()

agx::Bool agxVehicle::Track::removeSupportGroupId ( agxCollide::Geometry *  geometry) const

Remove this track's support group id from geometry.

This method is equivalent to calling: geometry->removeGroup(getSupportGroupId());

Parameters
geometry- geometry that should no longer be treated as support geometry
Returns
true if the group id was removed, false if geometry is null or did not have the group id

◆ setEnableCollisionsWithSupport()

void agxVehicle::Track::setEnableCollisionsWithSupport ( bool  enable)

Enable/disable collisions between this track and geometries carrying this track's support group id.

Default is enabled.

Parameters
enable- true to enable collisions with support geometries, false to disable them

◆ setEnableFullDegreeModel()

bool agxVehicle::Track::setEnableFullDegreeModel ( bool  enable)

Activates or deactivates the full degrees-of-freedom track model.

When activated, the track nodes are constrained together using hinges. When deactivated, the track is approximated using boxes between the wheels, where each box represents all track nodes between a pair of wheels.

This full degrees-of-freedom model provides a more detailed simulation of the tracks but is also more complex to model and configure.

Note: The full degrees-of-freedom model may require a different set of track properties. These properties must be properly configured for the model to function correctly.

Parameters
enable- true to enable or false to disable full degrees-of-freedom track model
Returns
true if the requested model switch was successful.

◆ setProperties()

void agxVehicle::Track::setProperties ( TrackProperties *  properties)

Assign properties to this track.

Parameters
properties- new properties of this track, if null, a new default instance is created

The documentation for this class was generated from the following file: