Revision: 1589
          http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=1589&view=rev
Author:   rorthomas
Date:     2011-01-21 01:58:23 +0000 (Fri, 21 Jan 2011)

Log Message:
-----------
only animate props every frame

Modified Paths:
--------------
    trunk/source/main/BeamForcesEuler.cpp

Modified: trunk/source/main/BeamForcesEuler.cpp
===================================================================
--- trunk/source/main/BeamForcesEuler.cpp       2011-01-20 06:38:06 UTC (rev 
1588)
+++ trunk/source/main/BeamForcesEuler.cpp       2011-01-21 01:58:23 UTC (rev 
1589)
@@ -259,288 +259,291 @@
        BES_START(BES_CORE_AnimatedProps);
 
        //animate props
-       for (int propi=0; propi<free_prop; propi++)
+       if(doUpdate)
        {
-               int animnum=0;
-               float rx = 0.0f;
-               float ry = 0.0f;
-               float rz = 0.0f;
+               for (int propi=0; propi<free_prop; propi++)
+               {
+                       int animnum=0;
+                       float rx = 0.0f;
+                       float ry = 0.0f;
+                       float rz = 0.0f;
 
-               while (props[propi].animFlags[animnum])
-               {
-                       if (props[propi].animFlags[animnum])
+                       while (props[propi].animFlags[animnum])
                        {
-                               float cstate = 0.0f;
-                               int div = 0.0f;
-                               int flagstate = props[propi].animFlags[animnum];
-                               float animOpt1 =props[propi].animOpt1[animnum];
-                               float animOpt2 =props[propi].animOpt2[animnum];
-                               float animOpt3 =props[propi].animOpt3[animnum];
+                               if (props[propi].animFlags[animnum])
+                               {
+                                       float cstate = 0.0f;
+                                       int div = 0.0f;
+                                       int flagstate = 
props[propi].animFlags[animnum];
+                                       float animOpt1 
=props[propi].animOpt1[animnum];
+                                       float animOpt2 
=props[propi].animOpt2[animnum];
+                                       float animOpt3 
=props[propi].animOpt3[animnum];
 
-                               calcAnimators(flagstate, cstate, div, dt, 
animOpt1, animOpt2, animOpt3);
+                                       calcAnimators(flagstate, cstate, div, 
dt, animOpt1, animOpt2, animOpt3);
 
-                               // key triggered animations
-                               if ((props[propi].animFlags[animnum] & 
ANIM_FLAG_EVENT) && props[propi].animKey[animnum] != -1)
-                               {
-                                       if 
(INPUTENGINE.getEventValue(props[propi].animKey[animnum]))
+                                       // key triggered animations
+                                       if ((props[propi].animFlags[animnum] & 
ANIM_FLAG_EVENT) && props[propi].animKey[animnum] != -1)
                                        {
-                                               // keystatelock is disabled 
then set cstate
-                                               if 
(props[propi].animKeyState[animnum] == -1.0f)
+                                               if 
(INPUTENGINE.getEventValue(props[propi].animKey[animnum]))
                                                {
-                                                       cstate += 
INPUTENGINE.getEventValue(props[propi].animKey[animnum]);
-                                               } else if 
(!props[propi].animKeyState[animnum])
-                                               {
-                                                       // a key was pressed 
and a toggle was done already, so bypass
-                                                       //toggle now
-                                                       if 
(!props[propi].lastanimKS[animnum])
+                                                       // keystatelock is 
disabled then set cstate
+                                                       if 
(props[propi].animKeyState[animnum] == -1.0f)
                                                        {
-                                                               
props[propi].lastanimKS[animnum] = 1.0f;
-                                                               // use animkey 
as bool to determine keypress / release state of inputengine
-                                                               
props[propi].animKeyState[animnum] = 1.0f;
-                                                       }
-                                                       else
+                                                               cstate += 
INPUTENGINE.getEventValue(props[propi].animKey[animnum]);
+                                                       } else if 
(!props[propi].animKeyState[animnum])
                                                        {
-                                                               
props[propi].lastanimKS[animnum] = 0.0f;
-                                                               // use animkey 
as bool to determine keypress / release state of inputengine
-                                                               
props[propi].animKeyState[animnum] = 1.0f;
+                                                               // a key was 
pressed and a toggle was done already, so bypass
+                                                               //toggle now
+                                                               if 
(!props[propi].lastanimKS[animnum])
+                                                               {
+                                                                       
props[propi].lastanimKS[animnum] = 1.0f;
+                                                                       // use 
animkey as bool to determine keypress / release state of inputengine
+                                                                       
props[propi].animKeyState[animnum] = 1.0f;
+                                                               }
+                                                               else
+                                                               {
+                                                                       
props[propi].lastanimKS[animnum] = 0.0f;
+                                                                       // use 
animkey as bool to determine keypress / release state of inputengine
+                                                                       
props[propi].animKeyState[animnum] = 1.0f;
+                                                               }
+                                                       } else
+                                                       {
+                                                               // bypas mode, 
get the last set position and set it
+                                                               cstate 
+=props[propi].lastanimKS[animnum];
                                                        }
                                                } else
                                                {
-                                                       // bypas mode, get the 
last set position and set it
-                                                       cstate 
+=props[propi].lastanimKS[animnum];
+                                                       // keyevent exists and 
keylock is enabled but the key isnt pressed right now = get lastanimkeystatus 
for cstate and reset keypressed bool animkey
+                                                       if 
(props[propi].animKeyState[animnum] != -1.0f)
+                                                       {
+                                                               cstate 
+=props[propi].lastanimKS[animnum];
+                                                               
props[propi].animKeyState[animnum] = 0.0f;
+                                                       }
                                                }
-                                       } else
-                                       {
-                                               // keyevent exists and keylock 
is enabled but the key isnt pressed right now = get lastanimkeystatus for 
cstate and reset keypressed bool animkey
-                                               if 
(props[propi].animKeyState[animnum] != -1.0f)
-                                               {
-                                                       cstate 
+=props[propi].lastanimKS[animnum];
-                                                       
props[propi].animKeyState[animnum] = 0.0f;
-                                               }
                                        }
-                               }
 
-                               //propanimation placed here to avoid 
interference with existing hydros(cstate) and permanent prop animation
-                               //truck steering
-                               if (props[propi].animFlags[animnum] & 
ANIM_FLAG_STEERING) cstate += hydrodirstate;
-                               //aileron
-                               if (props[propi].animFlags[animnum] & 
ANIM_FLAG_AILERONS) cstate += hydroaileronstate;
-                               //elevator
-                               if (props[propi].animFlags[animnum] & 
ANIM_FLAG_ELEVATORS) cstate += hydroelevatorstate;
-                               //rudder Liftec
-                               if (props[propi].animFlags[animnum] & 
ANIM_FLAG_ARUDDER) cstate += hydrorudderstate;
-                               //permanent
-                               if (props[propi].animFlags[animnum] & 
ANIM_FLAG_PERMANENT) cstate += 1.0f;
+                                       //propanimation placed here to avoid 
interference with existing hydros(cstate) and permanent prop animation
+                                       //truck steering
+                                       if (props[propi].animFlags[animnum] & 
ANIM_FLAG_STEERING) cstate += hydrodirstate;
+                                       //aileron
+                                       if (props[propi].animFlags[animnum] & 
ANIM_FLAG_AILERONS) cstate += hydroaileronstate;
+                                       //elevator
+                                       if (props[propi].animFlags[animnum] & 
ANIM_FLAG_ELEVATORS) cstate += hydroelevatorstate;
+                                       //rudder Liftec
+                                       if (props[propi].animFlags[animnum] & 
ANIM_FLAG_ARUDDER) cstate += hydrorudderstate;
+                                       //permanent
+                                       if (props[propi].animFlags[animnum] & 
ANIM_FLAG_PERMANENT) cstate += 1.0f;
 
-                               cstate *= props[propi].animratio[animnum];
+                                       cstate *= 
props[propi].animratio[animnum];
 
-                               // autoanimate noflip_bouncer
-                               if (props[propi].animOpt5[animnum]) cstate *= 
(props[propi].animOpt5[animnum]);
+                                       // autoanimate noflip_bouncer
+                                       if (props[propi].animOpt5[animnum]) 
cstate *= (props[propi].animOpt5[animnum]);
 
-                               //rotate prop
-                               if (props[propi].animMode[animnum] & 
ANIM_MODE_ROTA_X || props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y || 
props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z)
-                               {
-                                       float limiter = 0.0f;
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_AUTOANIMATE)
+                                       //rotate prop
+                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_ROTA_X || props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y || 
props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z)
                                        {
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X)
+                                               float limiter = 0.0f;
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
                                                {
-                                                       props[propi].rot = 
props[propi].rot * (Quaternion(Degree(0), Vector3::UNIT_Z) * 
Quaternion(Degree(0), Vector3::UNIT_Y) * Quaternion(Degree(cstate), 
Vector3::UNIT_X));
-                                                       props[propi].rotaX += 
cstate;
-                                                       limiter = 
props[propi].rotaX;
-                                               }
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y)
-                                               {
-                                                       props[propi].rot = 
props[propi].rot * (Quaternion(Degree(0), Vector3::UNIT_Z) * 
Quaternion(Degree(cstate), Vector3::UNIT_Y) * Quaternion(Degree(0), 
Vector3::UNIT_X));
-                                                       props[propi].rotaY += 
cstate;
-                                                       limiter = 
props[propi].rotaY;
-                                               }
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z)
-                                               {
-                                                       props[propi].rot = 
props[propi].rot * (Quaternion(Degree(cstate), Vector3::UNIT_Z) * 
Quaternion(Degree(0), Vector3::UNIT_Y) * Quaternion(Degree(0), 
Vector3::UNIT_X));
-                                                       props[propi].rotaZ += 
cstate;
-                                                       limiter = 
props[propi].rotaZ;
-                                               }
-                                       } else
-                                       {
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X) rx += cstate;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y) ry += cstate;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z) rz += cstate;
-                                       }
-
-                                       bool limiterchanged = false;
-                                       // check if a positive custom limit is 
set to evaluate/calc flip back
-                                       if (props[propi].animOpt2[animnum] - 
props[propi].animOpt4[animnum])
-                                       {
-                                               if (limiter > 
props[propi].animOpt2[animnum])
-                                               {
-                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X)
                                                        {
-                                                               limiter = 
props[propi].animOpt2[animnum];                               // stop at limit
-                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
-                                                               limiterchanged 
= true;
-                                                       } else
-                                                       {
-                                                               limiter = 
props[propi].animOpt1[animnum];                               // flip to other 
side at limit
-                                                               limiterchanged 
= true;
+                                                               
props[propi].rot = props[propi].rot * (Quaternion(Degree(0), Vector3::UNIT_Z) * 
Quaternion(Degree(0), Vector3::UNIT_Y) * Quaternion(Degree(cstate), 
Vector3::UNIT_X));
+                                                               
props[propi].rotaX += cstate;
+                                                               limiter = 
props[propi].rotaX;
                                                        }
-                                               }
-                                       } else
-                                       {                                       
                                                                                
                // no custom limit set, use 360�
-                                               while (limiter > 180.0f)
-                                               {
-                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y)
                                                        {
-                                                               limiter = 
180.0f;                                                                         
      // stop at limit
-                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
-                                                               limiterchanged 
= true;
-                                                       } else
-                                                       {
-                                                               limiter -= 
360.0f;                                                                         
     // flip to other side at limit
-                                                               limiterchanged 
= true;
+                                                               
props[propi].rot = props[propi].rot * (Quaternion(Degree(0), Vector3::UNIT_Z) * 
Quaternion(Degree(cstate), Vector3::UNIT_Y) * Quaternion(Degree(0), 
Vector3::UNIT_X));
+                                                               
props[propi].rotaY += cstate;
+                                                               limiter = 
props[propi].rotaY;
                                                        }
-                                               }
-                                       }
-
-                                       // check if a negative custom limit is 
set to evaluate/calc flip back
-                                       if (props[propi].animOpt1[animnum] - 
props[propi].animOpt4[animnum])
-                                       {
-                                               if (limiter < 
(props[propi].animOpt1[animnum]))
-                                               {
-                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z)
                                                        {
-                                                               limiter = 
props[propi].animOpt1[animnum];                               // stop at limit
-                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
-                                                               limiterchanged 
= true;
-                                                       } else
-                                                       {
-                                                               limiter = 
props[propi].animOpt2[animnum];                               // flip to other 
side at limit
-                                                               limiterchanged 
= true;
+                                                               
props[propi].rot = props[propi].rot * (Quaternion(Degree(cstate), 
Vector3::UNIT_Z) * Quaternion(Degree(0), Vector3::UNIT_Y) * 
Quaternion(Degree(0), Vector3::UNIT_X));
+                                                               
props[propi].rotaZ += cstate;
+                                                               limiter = 
props[propi].rotaZ;
                                                        }
-                                               }
-                                       } else                                  
                                                                                
        // no custom limit set, use 360�
-                                       {
-                                               while (limiter < -180.0f)
+                                               } else
                                                {
-                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
-                                                       {
-                                                               limiter = 
-180.0f;                                                                        
      // stop at limit
-                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
-                                                               limiterchanged 
= true;
-                                                       } else
-                                                       {
-                                                               limiter += 
360.0f;                                                                         
     // flip to other side at limit including overflow
-                                                               limiterchanged 
= true;
-                                                       }
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X) rx += cstate;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y) ry += cstate;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z) rz += cstate;
                                                }
-                                       }
 
-                                       if (limiterchanged)
-                                       {
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X) props[propi].rotaX = 
limiter;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y) props[propi].rotaY = 
limiter;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z) props[propi].rotaZ = 
limiter;
-                                       }
-                               }
-
-                               //offset prop
-
-                               // TODO Unused Varaible
-                               //float ox = props[propi].orgoffsetX;
-
-                               // TODO Unused Varaible
-                               //float oy = props[propi].orgoffsetY;
-
-                               // TODO Unused Varaible
-                               //float oz = props[propi].orgoffsetZ;
-
-                               if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_X || props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Y || 
props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Z)
-                               {
-                                       float offset = 0.0f;
-                                       float autooffset = 0.0f;
-
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_X) offset = props[propi].orgoffsetX;
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_Y) offset = props[propi].orgoffsetY;
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_Z) offset = props[propi].orgoffsetZ;
-
-                                       offset += cstate;
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_AUTOANIMATE)
-                                       {
-                                               autooffset = offset;
-                                                                               
                                                                                
                        // check if a positive custom limit is set to 
evaluate/calc flip back
+                                               bool limiterchanged = false;
+                                               // check if a positive custom 
limit is set to evaluate/calc flip back
                                                if 
(props[propi].animOpt2[animnum] - props[propi].animOpt4[animnum])
                                                {
-                                                       if (autooffset > 
props[propi].animOpt2[animnum])
+                                                       if (limiter > 
props[propi].animOpt2[animnum])
                                                        {
                                                                if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
                                                                {
-                                                                       
autooffset = props[propi].animOpt2[animnum];                    // stop at limit
-                                                                       
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
+                                                                       limiter 
= props[propi].animOpt2[animnum];                               // stop at limit
+                                                                       
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
+                                                                       
limiterchanged = true;
                                                                } else
-                                                                       
autooffset = props[propi].animOpt1[animnum];                    // flip to 
other side at limit
+                                                               {
+                                                                       limiter 
= props[propi].animOpt1[animnum];                               // flip to 
other side at limit
+                                                                       
limiterchanged = true;
+                                                               }
                                                        }
-                                               } else                          
                                                                                
                // no custom limit set, use 10x as default
-                                                       while (autooffset > 
10.0f)
+                                               } else
+                                               {                               
                                                                                
                        // no custom limit set, use 360�
+                                                       while (limiter > 180.0f)
                                                        {
                                                                if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
                                                                {
-                                                                       
autooffset = 10.0f;                                                             
                // stop at limit
+                                                                       limiter 
= 180.0f;                                                                       
        // stop at limit
                                                                        
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
+                                                                       
limiterchanged = true;
                                                                } else
-                                                                       
autooffset -= 20.0f;                                                            
        // flip to other side at limit including overflow
+                                                               {
+                                                                       limiter 
-= 360.0f;                                                                      
        // flip to other side at limit
+                                                                       
limiterchanged = true;
+                                                               }
                                                        }
+                                               }
 
-                                                                               
                                                                                
                        // check if a negative custom limit is set to 
evaluate/calc flip back
+                                               // check if a negative custom 
limit is set to evaluate/calc flip back
                                                if 
(props[propi].animOpt1[animnum] - props[propi].animOpt4[animnum])
                                                {
-                                                       if (autooffset < 
(props[propi].animOpt1[animnum]))
+                                                       if (limiter < 
(props[propi].animOpt1[animnum]))
                                                        {
                                                                if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
                                                                {
-                                                                       
autooffset = props[propi].animOpt1[animnum];                    // stop at limit
+                                                                       limiter 
= props[propi].animOpt1[animnum];                               // stop at limit
                                                                        
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
+                                                                       
limiterchanged = true;
                                                                } else
-                                                                       
autooffset = props[propi].animOpt2[animnum];                    // flip to 
other side at limit
+                                                               {
+                                                                       limiter 
= props[propi].animOpt2[animnum];                               // flip to 
other side at limit
+                                                                       
limiterchanged = true;
+                                                               }
                                                        }
-                                               } else                          
                                                                                
                // no custom limit set, use -10x�
-                                                       while (autooffset < 
-10.0f)
+                                               } else                          
                                                                                
                // no custom limit set, use 360�
+                                               {
+                                                       while (limiter < 
-180.0f)
                                                        {
                                                                if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
                                                                {
-                                                                       
autooffset = -10.0f;                                                            
        // stop at limit
-                                                                       
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
+                                                                       limiter 
= -180.0f;                                                                      
        // stop at limit
+                                                                       
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
+                                                                       
limiterchanged = true;
                                                                } else
-                                                                       
autooffset += 20.0f;                                                            
        // flip to other side at limit including overflow
+                                                               {
+                                                                       limiter 
+= 360.0f;                                                                      
        // flip to other side at limit including overflow
+                                                                       
limiterchanged = true;
+                                                               }
                                                        }
+                                               }
+
+                                               if (limiterchanged)
+                                               {
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_X) props[propi].rotaX = 
limiter;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Y) props[propi].rotaY = 
limiter;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_ROTA_Z) props[propi].rotaZ = 
limiter;
+                                               }
                                        }
 
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_X)
+                                       //offset prop
+
+                                       // TODO Unused Varaible
+                                       //float ox = props[propi].orgoffsetX;
+
+                                       // TODO Unused Varaible
+                                       //float oy = props[propi].orgoffsetY;
+
+                                       // TODO Unused Varaible
+                                       //float oz = props[propi].orgoffsetZ;
+
+                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_X || props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Y || 
props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Z)
                                        {
-                                               props[propi].offsetx = offset;
+                                               float offset = 0.0f;
+                                               float autooffset = 0.0f;
+
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_X) offset = 
props[propi].orgoffsetX;
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Y) offset = 
props[propi].orgoffsetY;
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Z) offset = 
props[propi].orgoffsetZ;
+
+                                               offset += cstate;
                                                if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
-                                                       props[propi].orgoffsetX 
= autooffset;
+                                               {
+                                                       autooffset = offset;
+                                                                               
                                                                                
                                // check if a positive custom limit is set to 
evaluate/calc flip back
+                                                       if 
(props[propi].animOpt2[animnum] - props[propi].animOpt4[animnum])
+                                                       {
+                                                               if (autooffset 
> props[propi].animOpt2[animnum])
+                                                               {
+                                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                                       {
+                                                                               
autooffset = props[propi].animOpt2[animnum];                    // stop at limit
+                                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
+                                                                       } else
+                                                                               
autooffset = props[propi].animOpt1[animnum];                    // flip to 
other side at limit
+                                                               }
+                                                       } else                  
                                                                                
                        // no custom limit set, use 10x as default
+                                                               while 
(autooffset > 10.0f)
+                                                               {
+                                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                                       {
+                                                                               
autooffset = 10.0f;                                                             
                // stop at limit
+                                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
+                                                                       } else
+                                                                               
autooffset -= 20.0f;                                                            
        // flip to other side at limit including overflow
+                                                               }
+
+                                                                               
                                                                                
                                // check if a negative custom limit is set to 
evaluate/calc flip back
+                                                       if 
(props[propi].animOpt1[animnum] - props[propi].animOpt4[animnum])
+                                                       {
+                                                               if (autooffset 
< (props[propi].animOpt1[animnum]))
+                                                               {
+                                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                                       {
+                                                                               
autooffset = props[propi].animOpt1[animnum];                    // stop at limit
+                                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if active
+                                                                       } else
+                                                                               
autooffset = props[propi].animOpt2[animnum];                    // flip to 
other side at limit
+                                                               }
+                                                       } else                  
                                                                                
                        // no custom limit set, use -10x�
+                                                               while 
(autooffset < -10.0f)
+                                                               {
+                                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_NOFLIP)
+                                                                       {
+                                                                               
autooffset = -10.0f;                                                            
        // stop at limit
+                                                                               
props[propi].animOpt5[animnum] *= -1.0f;                                // 
change cstate multiplier if bounce is set
+                                                                       } else
+                                                                               
autooffset += 20.0f;                                                            
        // flip to other side at limit including overflow
+                                                               }
+                                               }
+
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_X)
+                                               {
+                                                       props[propi].offsetx = 
offset;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
+                                                               
props[propi].orgoffsetX = autooffset;
+                                               }
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Y)
+                                               {
+                                                       props[propi].offsety = 
offset;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
+                                                               
props[propi].orgoffsetY = autooffset;
+                                               }
+                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_OFFSET_Z)
+                                               {
+                                                       props[propi].offsetz = 
offset;
+                                                       if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
+                                                               
props[propi].orgoffsetZ = autooffset;
+                                               }
                                        }
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_Y)
-                                       {
-                                               props[propi].offsety = offset;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
-                                                       props[propi].orgoffsetY 
= autooffset;
-                                       }
-                                       if (props[propi].animMode[animnum] & 
ANIM_MODE_OFFSET_Z)
-                                       {
-                                               props[propi].offsetz = offset;
-                                               if 
(props[propi].animMode[animnum] & ANIM_MODE_AUTOANIMATE)
-                                                       props[propi].orgoffsetZ 
= autooffset;
-                                       }
                                }
+                       animnum++;
                        }
-               animnum++;
+               //recalc the quaternions with final stacked rotation values ( 
rx, ry, rz )
+               rx += props[propi].rotaX;
+               ry += props[propi].rotaY;
+               rz += props[propi].rotaZ;
+               props[propi].rot = Quaternion(Degree(rz), Vector3::UNIT_Z) * 
Quaternion(Degree(ry), Vector3::UNIT_Y) * Quaternion(Degree(rx), 
Vector3::UNIT_X);
                }
-       //recalc the quaternions with final stacked rotation values ( rx, ry, 
rz )
-       rx += props[propi].rotaX;
-       ry += props[propi].rotaY;
-       rz += props[propi].rotaZ;
-       props[propi].rot = Quaternion(Degree(rz), Vector3::UNIT_Z) * 
Quaternion(Degree(ry), Vector3::UNIT_Y) * Quaternion(Degree(rx), 
Vector3::UNIT_X);
        }
 
        BES_STOP(BES_CORE_AnimatedProps);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Rigsofrods-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel

Reply via email to