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

experimental
shadowislord 11 years ago
parent 7cdc473e14
commit 76147fc5f7
  1. 14
      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

Loading…
Cancel
Save