Allow configurable exhuast particle, fixes #2878
This commit is contained in:
parent
3ad081104e
commit
cf2a9f7089
@ -111,14 +111,24 @@ KartGFX::KartGFX(const AbstractKart *kart, bool is_day)
|
||||
addEffect(KGFX_NITRO2, "nitro.xml", rear_nitro_left, true );
|
||||
addEffect(KGFX_NITROSMOKE1, "nitro-smoke.xml", rear_nitro_left, false);
|
||||
addEffect(KGFX_NITROSMOKE2, "nitro-smoke.xml", rear_nitro_right, false);
|
||||
addEffect(KGFX_EXHAUST1, "kart_exhaust.xml",rear_nitro_right, false );
|
||||
addEffect(KGFX_EXHAUST2, "kart_exhaust.xml",rear_nitro_left, false );
|
||||
addEffect(KGFX_ZIPPER, "zipper_fire.xml", rear_center, true );
|
||||
addEffect(KGFX_TERRAIN, "smoke.xml", Vec3(0, 0, 0), false);
|
||||
addEffect(KGFX_SKID1L, "skid1.xml", rear_left, true );
|
||||
addEffect(KGFX_SKID1R, "skid1.xml", rear_right, true );
|
||||
addEffect(KGFX_SKID2L, "skid2.xml", rear_left, true );
|
||||
addEffect(KGFX_SKID2R, "skid2.xml", rear_right, true );
|
||||
if (!kart->getKartModel()->getExhaustXML().empty())
|
||||
{
|
||||
const std::string& ex = kart->getKartModel()->getExhaustXML();
|
||||
addEffect(KGFX_EXHAUST1, ex, rear_nitro_right, false);
|
||||
addEffect(KGFX_EXHAUST2, ex, rear_nitro_left, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_all_emitters.push_back(NULL);
|
||||
m_all_emitters.push_back(NULL);
|
||||
}
|
||||
|
||||
} // KartGFX
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -49,8 +49,6 @@ public:
|
||||
KGFX_NITRO2,
|
||||
KGFX_NITROSMOKE1,
|
||||
KGFX_NITROSMOKE2,
|
||||
KGFX_EXHAUST1,
|
||||
KGFX_EXHAUST2,
|
||||
KGFX_ZIPPER,
|
||||
KGFX_TERRAIN,
|
||||
KGFX_SKIDL,
|
||||
@ -59,6 +57,8 @@ public:
|
||||
KGFX_SKID1R = KGFX_SKIDR,
|
||||
KGFX_SKID2L,
|
||||
KGFX_SKID2R,
|
||||
KGFX_EXHAUST1,
|
||||
KGFX_EXHAUST2,
|
||||
KGFX_COUNT};
|
||||
|
||||
private:
|
||||
|
@ -215,6 +215,10 @@ void KartModel::loadInfo(const XMLNode &node)
|
||||
}
|
||||
}
|
||||
|
||||
if (const XMLNode* exhaust = node.getNode("exhaust"))
|
||||
{
|
||||
exhaust->get("file", &m_exhaust_xml);
|
||||
}
|
||||
} // loadInfo
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -336,6 +340,7 @@ KartModel* KartModel::makeCopy(KartRenderType krt)
|
||||
km->m_render_info = new RenderInfo();
|
||||
km->m_inverse_bone_matrices = m_inverse_bone_matrices;
|
||||
km->m_version = m_version;
|
||||
km->m_exhaust_xml = m_exhaust_xml;
|
||||
km->m_render_info->setKartModelRenderInfo(krt);
|
||||
|
||||
km->m_nitro_emitter_position[0] = m_nitro_emitter_position[0];
|
||||
@ -1206,6 +1211,12 @@ void KartModel::toggleHeadlights(bool on)
|
||||
} // toggleHeadlights
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
/** Called when a kart is load. this will load all the inverse bone matrices
|
||||
* for each bone in straight frame. The location, rotation and scale in
|
||||
* kart.xml for attachments (speedweighted objects, headlight, hat...) are in
|
||||
* object space, so if you use a inverse bone matrix * that matrix, it will be
|
||||
* relative to the bone, and you can use the result to set parent.
|
||||
*/
|
||||
void KartModel::initInverseBoneMatrices()
|
||||
{
|
||||
if (m_version < 3)
|
||||
|
@ -310,16 +310,27 @@ private:
|
||||
/** Pointer to the kart object belonging to this kart model. */
|
||||
AbstractKart* m_kart;
|
||||
|
||||
/** Tell the render type of this kart model, either colorized (red / blue now)
|
||||
* or transparent (ghost kart). */
|
||||
KartRenderType m_krt;
|
||||
|
||||
/** For our engine to get the desired hue / saturation for colorization. */
|
||||
RenderInfo* m_render_info;
|
||||
|
||||
/** True if this kart model can be colorization in red / blue (now only
|
||||
* used in soccer mode). */
|
||||
bool m_support_colorization;
|
||||
|
||||
/** Used to cache inverse bone matrices for each bone in straight frame
|
||||
* for attachment. */
|
||||
std::unordered_map<std::string, core::matrix4> m_inverse_bone_matrices;
|
||||
|
||||
/** Version of kart model (in kart.xml). */
|
||||
unsigned m_version;
|
||||
|
||||
/** Exhaust particle file (xml) for the kart, empty if disabled. */
|
||||
std::string m_exhaust_xml;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
void initInverseBoneMatrices();
|
||||
// ------------------------------------------------------------------------
|
||||
@ -444,6 +455,8 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
const core::matrix4&
|
||||
getInverseBoneMatrix(const std::string& bone_name) const;
|
||||
// ------------------------------------------------------------------------
|
||||
const std::string& getExhaustXML() const { return m_exhaust_xml; }
|
||||
|
||||
}; // KartModel
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user