Revision: 14737
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14737
Author:   ben2610
Date:     2008-05-08 00:32:45 +0200 (Thu, 08 May 2008)

Log Message:
-----------
Fix BGE bug #6054: Camera actuator crashes Blender.  The crash occurs when 
min,max << height (bad practice anyway).

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp

Modified: trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp        
2008-05-07 22:26:47 UTC (rev 14736)
+++ trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp        
2008-05-07 22:32:45 UTC (rev 14737)
@@ -155,14 +155,25 @@
        mat[coz][0]= vec[0];
        mat[coz][1]= vec[1];
        mat[coz][2]= vec[2];
-       Kx_Normalize((float *)mat[coz]);
+       if (Kx_Normalize((float *)mat[coz]) == 0.f) {
+               /* this is a very abnormal situation: the camera has reach the 
object center exactly
+                  We will choose a completely arbitrary direction */
+               mat[coz][0] = 1.0f;
+               mat[coz][1] = 0.0f;
+               mat[coz][2] = 0.0f;
+       }
        
        inp= mat[coz][2];
        mat[coy][0]= - inp*mat[coz][0];
        mat[coy][1]= - inp*mat[coz][1];
        mat[coy][2]= 1.0 - inp*mat[coz][2];
 
-       Kx_Normalize((float *)mat[coy]);
+       if (Kx_Normalize((float *)mat[coy]) == 0.f) {
+               /* the camera is vertical, chose the y axis arbitrary */
+               mat[coy][0] = 0.f;
+               mat[coy][1] = 1.f;
+               mat[coy][2] = 0.f;
+       }
        
        Kx_Crossf(mat[cox], mat[coy], mat[coz]);
        


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to