make nitro emit light. The effect is not perfect yet, but already quite cool

This commit is contained in:
Marianne Gagnon 2014-11-13 19:55:21 -05:00
parent f81f1f92e3
commit 9fe93e21b9
2 changed files with 9 additions and 1 deletions

View File

@ -131,6 +131,7 @@ Kart::Kart (const std::string& ident, unsigned int world_kart_id,
m_min_nitro_time = 0.0f;
m_fire_clicked = 0;
m_wrongway_counter = 0;
m_nitro_light = NULL;
m_view_blocked_by_plunger = 0;
m_has_caught_nolok_bubblegum = false;
@ -2367,6 +2368,10 @@ void Kart::loadData(RaceManager::KartType type, bool is_animated_model)
bool always_animated = (type == RaceManager::KT_PLAYER && race_manager->getNumPlayers() == 1);
m_node = m_kart_model->attachModel(is_animated_model, always_animated);
m_nitro_light = irr_driver->addLight(core::vector3df(0.0f, 0.5f, m_kart_model->getLength()*-0.5f - 0.05f),
1.5f /* force */, 5.0f /* radius */, 0.0f, 0.4f, 1.0f, false, m_node);
m_nitro_light->setVisible(false);
#ifdef DEBUG
m_node->setName( (getIdent()+"(lod-node)").c_str() );
#endif
@ -2500,6 +2505,7 @@ void Kart::updateGraphics(float dt, const Vec3& offset_xyz,
m_kart_gfx->setCreationRateRelative(KartGFX::KGFX_NITRO2, f);
m_kart_gfx->setCreationRateRelative(KartGFX::KGFX_NITROSMOKE1, f);
m_kart_gfx->setCreationRateRelative(KartGFX::KGFX_NITROSMOKE2, f);
m_nitro_light->setVisible(true);
}
else
{
@ -2507,7 +2513,7 @@ void Kart::updateGraphics(float dt, const Vec3& offset_xyz,
m_kart_gfx->setCreationRateAbsolute(KartGFX::KGFX_NITRO2, 0);
m_kart_gfx->setCreationRateAbsolute(KartGFX::KGFX_NITROSMOKE1, 0);
m_kart_gfx->setCreationRateAbsolute(KartGFX::KGFX_NITROSMOKE2, 0);
m_nitro_light->setVisible(false);
}
m_kart_gfx->resizeBox(KartGFX::KGFX_NITRO1, getSpeed(), dt);
m_kart_gfx->resizeBox(KartGFX::KGFX_NITRO2, getSpeed(), dt);

View File

@ -221,6 +221,8 @@ private:
/** To prevent using nitro in too short bursts */
float m_min_nitro_time;
scene::ISceneNode* m_nitro_light;
void updatePhysics(float dt);
void handleMaterialSFX(const Material *material);
void handleMaterialGFX();