Merge remote-tracking branch 'origin/master' into refactor_shaders
This commit is contained in:
commit
9531f0b3a4
@ -1787,7 +1787,7 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadObjects(root, path, model_def_loader, true, NULL);
|
loadObjects(root, path, model_def_loader, true, NULL, NULL);
|
||||||
|
|
||||||
model_def_loader.cleanLibraryNodesAfterLoad();
|
model_def_loader.cleanLibraryNodesAfterLoad();
|
||||||
|
|
||||||
@ -1958,7 +1958,8 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefinitionLoader& model_def_loader,
|
void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefinitionLoader& model_def_loader,
|
||||||
bool create_lod_definitions, scene::ISceneNode* parent)
|
bool create_lod_definitions, scene::ISceneNode* parent,
|
||||||
|
TrackObject* parent_library)
|
||||||
{
|
{
|
||||||
unsigned int start_position_counter = 0;
|
unsigned int start_position_counter = 0;
|
||||||
|
|
||||||
@ -1972,7 +1973,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
|||||||
if (name == "track" || name == "default-start") continue;
|
if (name == "track" || name == "default-start") continue;
|
||||||
if (name == "object" || name == "library")
|
if (name == "object" || name == "library")
|
||||||
{
|
{
|
||||||
m_track_object_manager->add(*node, parent, model_def_loader);
|
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||||
}
|
}
|
||||||
else if (name == "water")
|
else if (name == "water")
|
||||||
{
|
{
|
||||||
@ -2016,7 +2017,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
|||||||
{
|
{
|
||||||
if (UserConfigParams::m_graphical_effects)
|
if (UserConfigParams::m_graphical_effects)
|
||||||
{
|
{
|
||||||
m_track_object_manager->add(*node, parent, model_def_loader);
|
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (name == "sky-dome" || name == "sky-box" || name == "sky-color")
|
else if (name == "sky-dome" || name == "sky-box" || name == "sky-color")
|
||||||
@ -2029,7 +2030,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
|||||||
}
|
}
|
||||||
else if (name == "light")
|
else if (name == "light")
|
||||||
{
|
{
|
||||||
m_track_object_manager->add(*node, parent, model_def_loader);
|
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||||
}
|
}
|
||||||
else if (name == "weather")
|
else if (name == "weather")
|
||||||
{
|
{
|
||||||
|
@ -60,6 +60,8 @@ class TrackObjectManager;
|
|||||||
class TriangleMesh;
|
class TriangleMesh;
|
||||||
class World;
|
class World;
|
||||||
class XMLNode;
|
class XMLNode;
|
||||||
|
class TrackObject;
|
||||||
|
|
||||||
namespace Scripting
|
namespace Scripting
|
||||||
{
|
{
|
||||||
class ScriptEngine;
|
class ScriptEngine;
|
||||||
@ -481,8 +483,9 @@ public:
|
|||||||
/** Returns true if this track has easter eggs. */
|
/** Returns true if this track has easter eggs. */
|
||||||
bool hasEasterEggs() const { return m_has_easter_eggs; }
|
bool hasEasterEggs() const { return m_has_easter_eggs; }
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
void loadObjects(const XMLNode* root, const std::string& path, ModelDefinitionLoader& lod_loader,
|
void loadObjects(const XMLNode* root, const std::string& path,
|
||||||
bool create_lod_definitions, scene::ISceneNode* parent);
|
ModelDefinitionLoader& lod_loader, bool create_lod_definitions,
|
||||||
|
scene::ISceneNode* parent, TrackObject* parent_library);
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
bool isSoccer () const { return m_is_soccer; }
|
bool isSoccer () const { return m_is_soccer; }
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
@ -39,9 +39,10 @@
|
|||||||
* \param lod_node Lod node (defaults to NULL).
|
* \param lod_node Lod node (defaults to NULL).
|
||||||
*/
|
*/
|
||||||
TrackObject::TrackObject(const XMLNode &xml_node, scene::ISceneNode* parent,
|
TrackObject::TrackObject(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||||
ModelDefinitionLoader& model_def_loader)
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library)
|
||||||
{
|
{
|
||||||
init(xml_node, parent, model_def_loader);
|
init(xml_node, parent, model_def_loader, parent_library);
|
||||||
} // TrackObject
|
} // TrackObject
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -63,6 +64,7 @@ TrackObject::TrackObject(const core::vector3df& xyz, const core::vector3df& hpr,
|
|||||||
m_presentation = NULL;
|
m_presentation = NULL;
|
||||||
m_animator = NULL;
|
m_animator = NULL;
|
||||||
m_physical_object = NULL;
|
m_physical_object = NULL;
|
||||||
|
m_parent_library = NULL;
|
||||||
m_interaction = interaction;
|
m_interaction = interaction;
|
||||||
m_presentation = presentation;
|
m_presentation = presentation;
|
||||||
m_is_driveable = false;
|
m_is_driveable = false;
|
||||||
@ -89,7 +91,8 @@ TrackObject::TrackObject(const core::vector3df& xyz, const core::vector3df& hpr,
|
|||||||
* \param model_def_loader Used to load level-of-detail nodes.
|
* \param model_def_loader Used to load level-of-detail nodes.
|
||||||
*/
|
*/
|
||||||
void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||||
ModelDefinitionLoader& model_def_loader)
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library)
|
||||||
{
|
{
|
||||||
m_init_xyz = core::vector3df(0,0,0);
|
m_init_xyz = core::vector3df(0,0,0);
|
||||||
m_init_hpr = core::vector3df(0,0,0);
|
m_init_hpr = core::vector3df(0,0,0);
|
||||||
@ -97,7 +100,7 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
|||||||
m_enabled = true;
|
m_enabled = true;
|
||||||
m_presentation = NULL;
|
m_presentation = NULL;
|
||||||
m_animator = NULL;
|
m_animator = NULL;
|
||||||
|
m_parent_library = parent_library;
|
||||||
m_physical_object = NULL;
|
m_physical_object = NULL;
|
||||||
|
|
||||||
xml_node.get("id", &m_id );
|
xml_node.get("id", &m_id );
|
||||||
@ -141,7 +144,7 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
|||||||
}
|
}
|
||||||
else if (xml_node.getName() == "library")
|
else if (xml_node.getName() == "library")
|
||||||
{
|
{
|
||||||
m_presentation = new TrackObjectPresentationLibraryNode(xml_node, model_def_loader);
|
m_presentation = new TrackObjectPresentationLibraryNode(this, xml_node, model_def_loader);
|
||||||
}
|
}
|
||||||
else if (type == "sfx-emitter")
|
else if (type == "sfx-emitter")
|
||||||
{
|
{
|
||||||
|
@ -89,11 +89,18 @@ protected:
|
|||||||
PhysicalObject* m_physical_object;
|
PhysicalObject* m_physical_object;
|
||||||
|
|
||||||
ThreeDAnimation* m_animator;
|
ThreeDAnimation* m_animator;
|
||||||
|
|
||||||
|
TrackObject* m_parent_library;
|
||||||
|
|
||||||
void init(const XMLNode &xml_node, scene::ISceneNode* parent, ModelDefinitionLoader& model_def_loader);
|
void init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||||
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TrackObject(const XMLNode &xml_node, scene::ISceneNode* parent, ModelDefinitionLoader& model_def_loader);
|
TrackObject(const XMLNode &xml_node,
|
||||||
|
scene::ISceneNode* parent,
|
||||||
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library);
|
||||||
|
|
||||||
TrackObject(const core::vector3df& xyz,
|
TrackObject(const core::vector3df& xyz,
|
||||||
const core::vector3df& hpr,
|
const core::vector3df& hpr,
|
||||||
|
@ -44,11 +44,12 @@ TrackObjectManager::~TrackObjectManager()
|
|||||||
* in the xml_node.
|
* in the xml_node.
|
||||||
*/
|
*/
|
||||||
void TrackObjectManager::add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
void TrackObjectManager::add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||||
ModelDefinitionLoader& model_def_loader)
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TrackObject *obj = new TrackObject(xml_node, parent, model_def_loader);
|
TrackObject *obj = new TrackObject(xml_node, parent, model_def_loader, parent_library);
|
||||||
m_all_objects.push_back(obj);
|
m_all_objects.push_back(obj);
|
||||||
if(obj->isDriveable())
|
if(obj->isDriveable())
|
||||||
m_driveable_objects.push_back(obj);
|
m_driveable_objects.push_back(obj);
|
||||||
|
@ -57,7 +57,8 @@ public:
|
|||||||
void reset();
|
void reset();
|
||||||
void init();
|
void init();
|
||||||
void add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
void add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||||
ModelDefinitionLoader& model_def_loader);
|
ModelDefinitionLoader& model_def_loader,
|
||||||
|
TrackObject* parent_library);
|
||||||
void update(float dt);
|
void update(float dt);
|
||||||
void handleExplosion(const Vec3 &pos, const PhysicalObject *mp,
|
void handleExplosion(const Vec3 &pos, const PhysicalObject *mp,
|
||||||
bool secondary_hits=true);
|
bool secondary_hits=true);
|
||||||
|
@ -157,9 +157,10 @@ TrackObjectPresentationEmpty::~TrackObjectPresentationEmpty()
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||||
const XMLNode& xml_node,
|
TrackObject* parent,
|
||||||
ModelDefinitionLoader& model_def_loader)
|
const XMLNode& xml_node,
|
||||||
: TrackObjectPresentationSceneNode(xml_node)
|
ModelDefinitionLoader& model_def_loader)
|
||||||
|
: TrackObjectPresentationSceneNode(xml_node)
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
xml_node.get("name", &name);
|
xml_node.get("name", &name);
|
||||||
@ -243,7 +244,7 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
|||||||
|
|
||||||
assert(libroot != NULL);
|
assert(libroot != NULL);
|
||||||
World::getWorld()->getTrack()->loadObjects(libroot, lib_path, model_def_loader,
|
World::getWorld()->getTrack()->loadObjects(libroot, lib_path, model_def_loader,
|
||||||
create_lod_definitions, m_node);
|
create_lod_definitions, m_node, parent);
|
||||||
} // TrackObjectPresentationLibraryNode
|
} // TrackObjectPresentationLibraryNode
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -38,6 +38,7 @@ class ThreeDAnimation;
|
|||||||
class ModelDefinitionLoader;
|
class ModelDefinitionLoader;
|
||||||
class STKInstancedSceneNode;
|
class STKInstancedSceneNode;
|
||||||
class XMLNode;
|
class XMLNode;
|
||||||
|
class TrackObject;
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
@ -170,7 +171,8 @@ public:
|
|||||||
class TrackObjectPresentationLibraryNode : public TrackObjectPresentationSceneNode
|
class TrackObjectPresentationLibraryNode : public TrackObjectPresentationSceneNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TrackObjectPresentationLibraryNode(const XMLNode& xml_node,
|
TrackObjectPresentationLibraryNode(TrackObject* parent,
|
||||||
|
const XMLNode& xml_node,
|
||||||
ModelDefinitionLoader& model_def_loader);
|
ModelDefinitionLoader& model_def_loader);
|
||||||
virtual ~TrackObjectPresentationLibraryNode();
|
virtual ~TrackObjectPresentationLibraryNode();
|
||||||
}; // TrackObjectPresentationLibraryNode
|
}; // TrackObjectPresentationLibraryNode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user