From: <au...@us...> - 2009-12-28 20:06:50
|
Revision: 4359 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4359&view=rev Author: auria Date: 2009-12-28 20:06:41 +0000 (Mon, 28 Dec 2009) Log Message: ----------- Improved stars effect with fade in and fade out Modified Paths: -------------- main/trunk/data/textures/materials.xml main/trunk/src/graphics/stars.cpp main/trunk/src/graphics/stars.hpp Modified: main/trunk/data/textures/materials.xml =================================================================== --- main/trunk/data/textures/materials.xml 2009-12-28 19:37:59 UTC (rev 4358) +++ main/trunk/data/textures/materials.xml 2009-12-28 20:06:41 UTC (rev 4359) @@ -15,7 +15,7 @@ <material name="stonewall.png" alpha="0.0" collide="N"/> <material name="pebbles.png" alpha="0.0" collide="N"/> <material name="egypt.png" alpha="0.0"/> - <material name="starparticle.png" clampU="Y" clampV="Y" transparency="Y" collide="N" ignore="Y" light="N"/> + <material name="starparticle.png" clampU="Y" clampV="Y" alpha="Y" collide="N" ignore="Y" light="N"/> <material name="pyramidwall.png" alpha="0.0" collide="N"/> <material name="lava.png" alpha="0.0" light="N" reset="Y"/> <material name="metalgrid.png" transparency="Y" alpha="0.3" collide="N"/> Modified: main/trunk/src/graphics/stars.cpp =================================================================== --- main/trunk/src/graphics/stars.cpp 2009-12-28 19:37:59 UTC (rev 4358) +++ main/trunk/src/graphics/stars.cpp 2009-12-28 20:06:41 UTC (rev 4359) @@ -43,6 +43,7 @@ texture, parentKart); star_material->setMaterialProperties(&(billboard->getMaterial(0))); + //billboard->getMaterial(0).MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; billboard->setMaterialTexture(0, star_material->getTexture()); billboard->setVisible(false); @@ -73,11 +74,13 @@ { m_enabled = true; m_remaining_time = time; + m_fade_in_time = 1.0f; const int nodeAmount = m_nodes.size(); for (int n=0; n<nodeAmount; n++) { m_nodes[n]->setVisible(true); + ((scene::IBillboardSceneNode*)m_nodes[n])->setSize( core::dimension2d< f32 >(0.01f, 0.01f) ); } // set stars initial position @@ -115,10 +118,40 @@ // keep angle in range [0, 1[ angle -= (int)angle; + float radius = RADIUS; + + + // manage "fade-in" + if (m_fade_in_time > 0.0f) + { + //m_nodes[n]->getMaterial(0).AmbientColor.setAlpha((1.0f - m_fade_in_time)*255.0f); + //m_nodes[n]->getMaterial(0).DiffuseColor.setAlpha((1.0f - m_fade_in_time)*255.0f); + + float fade = (1.0f - m_fade_in_time); + + ((scene::IBillboardSceneNode*)m_nodes[n])->setSize( + core::dimension2d< f32 >(fade*STAR_SIZE, fade*STAR_SIZE) ); + + radius *= fade; + } + // manage "fade-out" + else if (m_remaining_time < 1.0f) + { + //m_nodes[n]->getMaterial(0).AmbientColor.setAlpha(m_remaining_time*255.0f); + //m_nodes[n]->getMaterial(0).DiffuseColor.setAlpha(m_remaining_time*255.0f); + + radius *= m_remaining_time; + + ((scene::IBillboardSceneNode*)m_nodes[n])->setSize( core::dimension2d< f32 >(m_remaining_time*STAR_SIZE, + m_remaining_time*STAR_SIZE) ); + } + // set position - m_nodes[n]->setPosition(m_center + core::vector3df( std::cos(angle*M_PI*2.0f)*RADIUS, - 0.0f, - std::sin(angle*M_PI*2.0f)*RADIUS)); - } + m_nodes[n]->setPosition(m_center + core::vector3df( std::cos(angle*M_PI*2.0f)*radius, + 0.0f, + std::sin(angle*M_PI*2.0f)*radius)); + } // end for + + if (m_fade_in_time > 0.0f) m_fade_in_time -= delta_t; } Modified: main/trunk/src/graphics/stars.hpp =================================================================== --- main/trunk/src/graphics/stars.hpp 2009-12-28 19:37:59 UTC (rev 4358) +++ main/trunk/src/graphics/stars.hpp 2009-12-28 20:06:41 UTC (rev 4359) @@ -41,6 +41,7 @@ /** Whether stars are currently enabled */ bool m_enabled; + float m_fade_in_time; float m_remaining_time; public: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |