19 #ifndef HEADER_TRACK_OBJECT_HPP
20 #define HEADER_TRACK_OBJECT_HPP
24 #include "physics/physical_object.hpp"
25 #include "scriptengine/scriptvec3.hpp"
26 #include "tracks/track_object_presentation.hpp"
27 #include "utils/cpp2011.hpp"
28 #include "utils/vec3.hpp"
30 #include "animations/three_d_animation.hpp"
35 namespace GE {
class GERenderInfo; }
43 class IAnimatedMeshSceneNode;
73 std::shared_ptr<GE::GERenderInfo> m_render_info;
89 std::string m_interaction;
98 std::shared_ptr<PhysicalObject> m_physical_object;
104 std::vector<TrackObject*> m_movable_children;
105 std::vector<TrackObject*> m_children;
107 bool m_initially_visible;
109 std::string m_visibility_condition;
111 void init(
const XMLNode &xml_node, scene::ISceneNode* parent,
117 scene::ISceneNode* parent,
122 const core::vector3df& hpr,
123 const core::vector3df& scale,
124 const char* interaction,
129 virtual void update(
float dt);
130 virtual void updateGraphics(
float dt);
131 virtual void resetAfterRewind();
132 void move(
const core::vector3df& xyz,
const core::vector3df& hpr,
133 const core::vector3df& scale,
bool updateRigidBody,
134 bool isAbsoluteCoord);
136 virtual void reset();
137 const core::vector3df& getPosition()
const;
138 const core::vector3df getAbsolutePosition()
const;
139 const core::vector3df getAbsoluteCenterPosition()
const;
140 const core::vector3df& getRotation()
const;
141 const core::vector3df& getScale()
const;
142 bool castRay(
const btVector3 &from,
143 const btVector3 &to, btVector3 *hit_point,
144 const Material **material, btVector3 *normal,
145 bool interpolate_normal)
const;
149 return m_parent_library;
155 virtual void onWorldReady();
160 void setID(std::string obj_id) { m_id = obj_id; }
163 const std::string& getLodGroup()
const {
return m_lod_group; }
165 const std::string& getType()
const {
return m_type; }
167 const std::string getName()
const {
return m_name; }
169 const std::string getID()
const {
return m_id; }
171 const std::string getInteraction()
const {
return m_interaction; }
173 bool isEnabled()
const {
return m_enabled; }
175 bool isSoccerBall()
const {
return m_soccer_ball; }
178 {
return m_physical_object.get(); }
180 PhysicalObject* getPhysicalObject() {
return m_physical_object.get(); }
182 const core::vector3df getInitXYZ()
const {
return m_init_xyz; }
184 const core::vector3df getInitRotation()
const {
return m_init_hpr; }
186 const core::vector3df getInitScale()
const {
return m_init_scale; }
189 T* getPresentation() {
return dynamic_cast<T*
>(m_presentation); }
192 const T* getPresentation()
const {
return dynamic_cast<T*
>(m_presentation); }
206 scene::IAnimatedMeshSceneNode* getMesh();
230 void setEnabled(
bool mode);
244 bool hasAnimatorRecursively()
const
248 if (!m_parent_library)
250 return m_parent_library->hasAnimatorRecursively();
253 void setPaused(
bool mode){ m_animator->setPaused(mode); }
255 void setInitiallyVisible(
bool val) { m_initially_visible = val; }
267 std::vector<TrackObject*>& getMovableChildren() {
return m_movable_children; }
269 std::vector<TrackObject*>& getChildren() {
return m_children; }
271 void movePhysicalBodyToGraphicalNode(
const core::vector3df& xyz,
const core::vector3df& hpr);
273 bool joinToMainTrack();
Definition: material.hpp:48
Utility class to load level-of-detail nodes and library nodes.
Definition: model_definition_loader.hpp:81
Definition: physical_object.hpp:49
Definition: physical_object.hpp:40
A virtual base class for all animations.
Definition: three_d_animation.hpp:45
A track object representation that consists of a light emitter.
Definition: track_object_presentation.hpp:369
A track object representation that consists of a particle emitter.
Definition: track_object_presentation.hpp:339
A track object representation that consists of a sound emitter.
Definition: track_object_presentation.hpp:279
Base class for all track object presentation classes.
Definition: track_object_presentation.hpp:60
This is a base object for any separate object on the track, which might also have a skeletal animatio...
Definition: track_object.hpp:56
core::vector3df m_init_hpr
The initial hpr of the object.
Definition: track_object.hpp:81
bool m_is_driveable
True if a kart can drive on this object.
Definition: track_object.hpp:96
std::string m_lod_group
LOD group this object is part of, if it is LOD.
Definition: track_object.hpp:87
bool m_enabled
True if the object is currently being displayed.
Definition: track_object.hpp:65
core::vector3df m_init_scale
The initial scale of the object.
Definition: track_object.hpp:84
core::vector3df m_init_xyz
The initial XYZ position of the object.
Definition: track_object.hpp:78
virtual void handleExplosion(const Vec3 &pos, bool directHit)
Called when an explosion happens.
Definition: track_object.hpp:159
A wrapper around bullets btVector3 to include conventient conversion functions (e....
Definition: vec3.hpp:35
utility class used to parse XML files
Definition: xml_node.hpp:48
void setPaused(bool mode)
Pause/resumes a curve-based animation.
Definition: script_track.cpp:407
TrackObjectPresentationSound * getSoundEmitter()
Should only be used on sound emitter track objects.
Definition: track_object.hpp:214
TrackObjectPresentationLight * getLight()
Should only be used on sound emitter track objects.
Definition: track_object.hpp:218
ThreeDAnimation * getIPOAnimator()
Should only be used on TrackObjects that use curve-based animation.
Definition: track_object.hpp:223
TrackObjectPresentationParticles * getParticleEmitter()
Should only be used on particle emitter track objects.
Definition: track_object.hpp:210
bool isDriveable() const
Returns if a kart can drive on this object.
Definition: track_object.hpp:258
PhysicalObject * getPhysics()
Get the physics representation of an object.
Definition: track_object.hpp:228
Definition: scriptvec3.hpp:29