static float lightFactorBasedOnDistanceAndLightRange(float distance, float lightRange, AttenuationDelegate attenuationFunction) { if (distance > lightRange) { return 0.0f; } else { return attenuationFunction(distance, lightRange); } }
public static float GetAccumulatedLightFactor(GameObject obj, AttenuationDelegate attenuationFunction) { float lightFactor = 0.0f; foreach (LightSourceBehaviour lightSource in LightSourceBehaviour.lightSources) { float distance = distanceOnXZPlane(obj.transform.position, lightSource.transform.position); lightFactor += lightFactorBasedOnDistanceAndLightRange(distance, lightSource.Range, attenuationFunction); } return Mathf.Min(lightFactor, 1.0f); }