diff --git a/jme3-core/src/main/java/com/jme3/light/PointLight.java b/jme3-core/src/main/java/com/jme3/light/PointLight.java index 440a45a740..37748f48d1 100644 --- a/jme3-core/src/main/java/com/jme3/light/PointLight.java +++ b/jme3-core/src/main/java/com/jme3/light/PointLight.java @@ -165,10 +165,12 @@ public final void setRadius(float radius) { if (radius < 0) { throw new IllegalArgumentException("Light radius cannot be negative"); } - - if (radius == Float.POSITIVE_INFINITY) { - radius = Float.MAX_VALUE; + if(Float.isNaN(radius)){ + throw new IllegalArgumentException("Light radius cannot be a NaN (Not a Number) value"); } + + float maxSafeRadius = Float.MAX_VALUE / 4.0f; + radius = Math.min(radius, maxSafeRadius); // Caps radius to a safe large value; avoids overflow in shaders from values reaching max float value this.radius = radius; if (radius != 0f) { @@ -259,3 +261,5 @@ public String toString() { + "]"; } } + +