Переглянути джерело

* Throw exception if the spot light computed cosine angle is not valid

shadowislord 11 роки тому
батько
коміт
76147fc5f7

+ 9 - 5
jme3-core/src/main/java/com/jme3/light/SpotLight.java

@@ -68,15 +68,19 @@ public class SpotLight extends Light implements Savable {
     }
 
     private void computePackedCos() {
-        float innerCos=FastMath.cos(spotInnerAngle);
-        float outerCos=FastMath.cos(spotOuterAngle);
-        packedAngleCos=(int)(innerCos*1000);
+        float innerCos = FastMath.cos(spotInnerAngle);
+        float outerCos = FastMath.cos(spotOuterAngle);
+        packedAngleCos = (int) (innerCos * 1000);
         //due to approximations, very close angles can give the same cos
         //here we make sure outer cos is bellow inner cos.
-        if(((int)packedAngleCos)== ((int)(outerCos*1000)) ){
+        if (((int) packedAngleCos) == ((int) (outerCos * 1000))) {
             outerCos -= 0.001f;
         }
-        packedAngleCos+=outerCos;        
+        packedAngleCos += outerCos;
+
+        if (packedAngleCos == 0.0f) {
+            throw new IllegalArgumentException("Packed angle cosine is invalid");
+        }
     }
 
     @Override