|
|
|
@ -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 |
|
|
|
|