From 9fe93e21b9057d29fb4d6cf96c9bac16d57773a1 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Thu, 13 Nov 2014 19:55:21 -0500 Subject: [PATCH] make nitro emit light. The effect is not perfect yet, but already quite cool --- src/karts/kart.cpp | 8 +++++++- src/karts/kart.hpp | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 913f0e020..8e26dee5e 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -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); diff --git a/src/karts/kart.hpp b/src/karts/kart.hpp index a044fc85a..37bcc3b4b 100644 --- a/src/karts/kart.hpp +++ b/src/karts/kart.hpp @@ -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();