public static String createPrefix(Renderable renderable, boolean skinned) { String prefix = ""; final int n = renderable.meshPart.mesh.getVertexAttributes().size(); for (int i = 0; i < n; i++) { final VertexAttribute attr = renderable.meshPart.mesh.getVertexAttributes().get(i); if (attr.usage == VertexAttributes.Usage.BoneWeight) { prefix += "#define boneWeight" + attr.unit + "Flag\n"; } } if (skinned) { prefix += "#define skinningFlag\n"; } Environment environment = renderable.environment; // Ambient lighting ColorAttribute ambientLightAttribute = (ColorAttribute) environment.get(ColorAttribute.AmbientLight); if (ambientLightAttribute != null) { prefix += "#define ambientLighting\n"; } // Directional lighting DirectionalLightsAttribute directionalLightsAttribute = (DirectionalLightsAttribute) environment.get(DirectionalLightsAttribute.Type); if (directionalLightsAttribute != null) { Array<DirectionalLight> directionalLights = directionalLightsAttribute.lights; if (directionalLights.size > 0) { prefix += "#define numDirectionalLights " + directionalLights.size + "\n"; } } // Point lighting PointLightsAttribute pointLightsAttribute = (PointLightsAttribute) environment.get(PointLightsAttribute.Type); if (pointLightsAttribute != null) { Array<PointLight> pointLights = pointLightsAttribute.lights; if (pointLights.size > 0) { prefix += "#define numPointLights " + pointLights.size + "\n"; } } // Spot lighting SpotLightsAttribute spotLightsAttribute = (SpotLightsAttribute) environment.get(SpotLightsAttribute.Type); if (spotLightsAttribute != null) { Array<SpotLight> spotLights = spotLightsAttribute.lights; if (spotLights.size > 0) { prefix += "#define numSpotLights " + spotLights.size + "\n"; } } return prefix; }
public SpotLightWrapper(SpotLight light) { super(light); }