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();
|
||||
|
||||
@ -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,
|
||||
bool create_lod_definitions, scene::ISceneNode* parent)
|
||||
bool create_lod_definitions, scene::ISceneNode* parent,
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
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 == "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")
|
||||
{
|
||||
@ -2016,7 +2017,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
||||
{
|
||||
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")
|
||||
@ -2029,7 +2030,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
||||
}
|
||||
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")
|
||||
{
|
||||
|
@ -60,6 +60,8 @@ class TrackObjectManager;
|
||||
class TriangleMesh;
|
||||
class World;
|
||||
class XMLNode;
|
||||
class TrackObject;
|
||||
|
||||
namespace Scripting
|
||||
{
|
||||
class ScriptEngine;
|
||||
@ -481,8 +483,9 @@ public:
|
||||
/** Returns true if this track has easter eggs. */
|
||||
bool hasEasterEggs() const { return m_has_easter_eggs; }
|
||||
// ------------------------------------------------------------------------
|
||||
void loadObjects(const XMLNode* root, const std::string& path, ModelDefinitionLoader& lod_loader,
|
||||
bool create_lod_definitions, scene::ISceneNode* parent);
|
||||
void loadObjects(const XMLNode* root, const std::string& path,
|
||||
ModelDefinitionLoader& lod_loader, bool create_lod_definitions,
|
||||
scene::ISceneNode* parent, TrackObject* parent_library);
|
||||
// ------------------------------------------------------------------------
|
||||
bool isSoccer () const { return m_is_soccer; }
|
||||
// ------------------------------------------------------------------------
|
||||
|
@ -39,9 +39,10 @@
|
||||
* \param lod_node Lod node (defaults to NULL).
|
||||
*/
|
||||
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
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -63,6 +64,7 @@ TrackObject::TrackObject(const core::vector3df& xyz, const core::vector3df& hpr,
|
||||
m_presentation = NULL;
|
||||
m_animator = NULL;
|
||||
m_physical_object = NULL;
|
||||
m_parent_library = NULL;
|
||||
m_interaction = interaction;
|
||||
m_presentation = presentation;
|
||||
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.
|
||||
*/
|
||||
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_hpr = core::vector3df(0,0,0);
|
||||
@ -97,7 +100,7 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
m_enabled = true;
|
||||
m_presentation = NULL;
|
||||
m_animator = NULL;
|
||||
|
||||
m_parent_library = parent_library;
|
||||
m_physical_object = NULL;
|
||||
|
||||
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")
|
||||
{
|
||||
m_presentation = new TrackObjectPresentationLibraryNode(xml_node, model_def_loader);
|
||||
m_presentation = new TrackObjectPresentationLibraryNode(this, xml_node, model_def_loader);
|
||||
}
|
||||
else if (type == "sfx-emitter")
|
||||
{
|
||||
|
@ -90,10 +90,17 @@ protected:
|
||||
|
||||
ThreeDAnimation* m_animator;
|
||||
|
||||
void init(const XMLNode &xml_node, scene::ISceneNode* parent, ModelDefinitionLoader& model_def_loader);
|
||||
TrackObject* m_parent_library;
|
||||
|
||||
void init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library);
|
||||
|
||||
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,
|
||||
const core::vector3df& hpr,
|
||||
|
@ -44,11 +44,12 @@ TrackObjectManager::~TrackObjectManager()
|
||||
* in the xml_node.
|
||||
*/
|
||||
void TrackObjectManager::add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader)
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
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);
|
||||
if(obj->isDriveable())
|
||||
m_driveable_objects.push_back(obj);
|
||||
|
@ -57,7 +57,8 @@ public:
|
||||
void reset();
|
||||
void init();
|
||||
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 handleExplosion(const Vec3 &pos, const PhysicalObject *mp,
|
||||
bool secondary_hits=true);
|
||||
|
@ -157,6 +157,7 @@ TrackObjectPresentationEmpty::~TrackObjectPresentationEmpty()
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||
TrackObject* parent,
|
||||
const XMLNode& xml_node,
|
||||
ModelDefinitionLoader& model_def_loader)
|
||||
: TrackObjectPresentationSceneNode(xml_node)
|
||||
@ -243,7 +244,7 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||
|
||||
assert(libroot != NULL);
|
||||
World::getWorld()->getTrack()->loadObjects(libroot, lib_path, model_def_loader,
|
||||
create_lod_definitions, m_node);
|
||||
create_lod_definitions, m_node, parent);
|
||||
} // TrackObjectPresentationLibraryNode
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -38,6 +38,7 @@ class ThreeDAnimation;
|
||||
class ModelDefinitionLoader;
|
||||
class STKInstancedSceneNode;
|
||||
class XMLNode;
|
||||
class TrackObject;
|
||||
|
||||
namespace irr
|
||||
{
|
||||
@ -170,7 +171,8 @@ public:
|
||||
class TrackObjectPresentationLibraryNode : public TrackObjectPresentationSceneNode
|
||||
{
|
||||
public:
|
||||
TrackObjectPresentationLibraryNode(const XMLNode& xml_node,
|
||||
TrackObjectPresentationLibraryNode(TrackObject* parent,
|
||||
const XMLNode& xml_node,
|
||||
ModelDefinitionLoader& model_def_loader);
|
||||
virtual ~TrackObjectPresentationLibraryNode();
|
||||
}; // TrackObjectPresentationLibraryNode
|
||||
|
Loading…
x
Reference in New Issue
Block a user