Support Forum       G3D Web Page     
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
G3D::Entity::EntityTrack Class Reference

Inherits G3D::Entity::Track.

Public Member Functions

const CFrame & childFrame () const
 
virtual CFrame computeFrame (SimTime time) const override
 
More...
 
const String & entityName () const
 The entity cannot be changed once the track is created, but the relative frame may be changed. More...
 
void setChildFrame (const CFrame &frame)
 

Static Public Member Functions

static shared_ptr< Track > create (Entity *entity, Scene *scene, const Any &a)
 
Creates any of the subclasses described/nested within a. More...
 
static shared_ptr< EntityTrack > create (Entity *entity, const String &nameOfEntityToFollow, Scene *scene, const CFrame &childFrame=CFrame())
 

Protected Member Functions

 EntityTrack (Entity *entity, const String &n, Scene *scene, const CFrame &frame)
 

Static Protected Member Functions

static shared_ptr< Track > create (Entity *entity, Scene *scene, const Any &a, const VariableTable &table)
 
template<class T , class ... ArgTypes>
static shared_ptr< T > createShared (ArgTypes &&... args)
 Like std::make_shared, but works for protected constructors. More...
 

Protected Attributes

CFrame m_childFrame
 
const String m_entityName
 
Scene * m_scene
 

Constructor & Destructor Documentation

◆ EntityTrack()

G3D::Entity::EntityTrack::EntityTrack ( Entity *  entity,
const String &  n,
Scene *  scene,
const CFrame &  frame 
)
protected

Member Function Documentation

◆ childFrame()

const CFrame& G3D::Entity::EntityTrack::childFrame ( ) const

◆ computeFrame()

virtual CFrame G3D::Entity::EntityTrack::computeFrame ( SimTime  time) const
overridevirtual


Parameters
timeAbsolute simulation time

Implements G3D::Entity::Track.

◆ create() [1/3]

static shared_ptr<Track> G3D::Entity::Track::create ( Entity *  entity,
Scene *  scene,
const Any &  a,
const VariableTable &  table 
)
staticprotectedinherited

◆ create() [2/3]

static shared_ptr<Track> G3D::Entity::Track::create ( Entity *  entity,
Scene *  scene,
const Any &  a 
)
staticinherited


Creates any of the subclasses described/nested within a.

Grammar:

ctrl := 
   "Point3(...)" |
   "CFrame..." |
   "Matrix3..." |
   "PhysicsFrameSpline { ... }" |
   "timeShift( splineTrack or orbitTrack, deltaTime)" |

   // Use the current position of this entity; creates a depends-on relationship.
   // optional cframe is equivalent to the common idiom "transform(entity(...), cframe)"
   "entity(\"entityname\" [, cframe:<CFrame>])" |   

   // use a * b
   "transform( a:<ctrl>, b:<ctrl> )" |

   // attach to <ctrl> by a spring; creates a depends-on relationship...reserved for future use
   "follow( <ctrl>, ? )" |  

   // Rotate to base to look at target's origin
   "lookAt( base:<ctrl>, target:<ctrl> [, up:<Vector3>] )" |

   // Strip the rotation from one track and the translation from another
   "combine(rot:<ctrl>, trans:<ctrl>)" |

   // Rotate around Y axis, facing forward on the track (use combine or transform to alter, use radius 0 to spin in place)
   "orbit(radius, period)" | 

   // name to be bound by a WITH expression
   "<id>" |

   // Bind the ids to controllers (in the previous variable environment), and then evaluate another one
   "with({ [<id> = <ctrl>]* }, <ctrl> )"

Example:

    VisibleEntity {
       ...
       controller = 
          with({
                target = entity("mothership");
                spline = PhysicsFrameSpline { .... };
               },

               // Lead the target by looking ahead of it in object space
               lookAt(spline, transform(target, Matrix4::translation(0, 0, -3)), Vector3::unitY())
           );
    }
 

Parameters
entityNeeded to create dependencies in the scene

◆ create() [3/3]

static shared_ptr<EntityTrack> G3D::Entity::EntityTrack::create ( Entity *  entity,
const String &  nameOfEntityToFollow,
Scene *  scene,
const CFrame &  childFrame = CFrame() 
)
static

◆ createShared()

template<class T , class ... ArgTypes>
static shared_ptr<T> G3D::ReferenceCountedObject::createShared ( ArgTypes &&...  args)
inlinestaticprotectedinherited

Like std::make_shared, but works for protected constructors.

Call as createShared<myclass>.

◆ entityName()

const String& G3D::Entity::EntityTrack::entityName ( ) const

The entity cannot be changed once the track is created, but the relative frame may be changed.

◆ setChildFrame()

void G3D::Entity::EntityTrack::setChildFrame ( const CFrame &  frame)

Member Data Documentation

◆ m_childFrame

CFrame G3D::Entity::EntityTrack::m_childFrame
protected

◆ m_entityName

const String G3D::Entity::EntityTrack::m_entityName
protected

◆ m_scene

Scene* G3D::Entity::EntityTrack::m_scene
protected

documentation generated on Wed Nov 24 2021 08:01:54 using doxygen 1.8.15