Fix for bug #17620: the motion blur actuator did not work correct
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 15 Sep 2008 00:57:11 +0000 (00:57 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 15 Sep 2008 00:57:11 +0000 (00:57 +0000)
with an always sensor, it kept resettting the motion blur each frame.

source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

index 96a770a553f082e08faeb1075e3373b0dee333d3..9ec4ea003375d175ae562a8c41c536f3a76caf6d 100644 (file)
@@ -23,8 +23,8 @@ SCA_2DFilterActuator::SCA_2DFilterActuator(
     : SCA_IActuator(gameobj, T),
      m_type(type),
         m_flag(flag),
-        m_int_arg(int_arg),
         m_float_arg(float_arg),
+        m_int_arg(int_arg),
         m_rasterizer(rasterizer),
         m_rendertools(rendertools)
 {
@@ -64,13 +64,11 @@ bool SCA_2DFilterActuator::Update()
        if( m_type == RAS_2DFilterManager::RAS_2DFILTER_MOTIONBLUR )
        {
                if(!m_flag)
-               {
                        m_rasterizer->EnableMotionBlur(m_float_arg);
-               }
                else
-               {
                        m_rasterizer->DisableMotionBlur();
-               }
+
+               return false;
        }
        else if(m_type < RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS)
        {
index 4f31ae7fcbc3ace6a834dfb8970853c87f75f496..87a0a1d8b9ebf9cc0e7e8801440d22485d953174 100644 (file)
@@ -949,7 +949,10 @@ void RAS_OpenGLRasterizer::SetPolygonOffset(float mult, float add)
 
 void RAS_OpenGLRasterizer::EnableMotionBlur(float motionblurvalue)
 {
-       m_motionblur = 1;
+       /* don't just set m_motionblur to 1, but check if it is 0 so
+        * we don't reset a motion blur that is already enabled */
+       if(m_motionblur == 0)
+               m_motionblur = 1;
        m_motionblurvalue = motionblurvalue;
 }