switch (light.getType()) {
case Directional: {
final DirectionalLight dirLight = (DirectionalLight) light;
final ReadOnlyVector3 direction = dirLight.getDirection();
setPosition(index, record, -direction.getXf(), -direction.getYf(), -direction.getZf(), 0, lr);
break;
}
case Point:
case Spot: {
final PointLight pointLight = (PointLight) light;
final ReadOnlyVector3 location = pointLight.getLocation();
setPosition(index, record, location.getXf(), location.getYf(), location.getZf(), 1, lr);
break;
}
}
if (light.getType() == Light.Type.Spot) {
final SpotLight spot = (SpotLight) light;
final ReadOnlyVector3 direction = spot.getDirection();
setSpotCutoff(index, record, spot.getAngle(), lr);
setSpotDirection(index, record, direction.getXf(), direction.getYf(), direction.getZf(), 0);
setSpotExponent(index, record, spot.getExponent(), lr);
} else {
// set the cutoff to 180, which causes the other spot params to be
// ignored.
setSpotCutoff(index, record, 180, lr);