You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

50 lines
1.4 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpotLightSetUp : MonoBehaviour {
public string ShaderName = "Paco/PointLight/ColorDiffuse";
private Light pointLight;
private void Awake()
{
UpdateShaders();
}
private void UpdateShaders()
{
float xPos = transform.position.x;
float yPos = transform.position.y;
float zPos = transform.position.z;
pointLight = GetComponent<Light>();
foreach (Material mat in findAllMaterialsInRange(pointLight.range)) {
if (mat != null && mat.shader != null && mat.shader.name != null && mat.shader.name == ShaderName) {
mat.SetFloat("_LightX", xPos);
mat.SetFloat("_LightY", yPos);
mat.SetFloat("_LightZ", zPos);
}
}
}
private Material[] findAllMaterialsInRange(float range)
{
List<Material> retVal = new List<Material>();
Renderer[] arrend = (Renderer[])FindObjectsOfType(typeof(Renderer));
foreach (Renderer rend in arrend) {
foreach (Material mat in rend.materials) {
if (!retVal.Contains(mat) && Vector3.Distance(transform.position,rend.transform.position) <= range) {
retVal.Add(mat);
}
}
}
return retVal.ToArray();
}
}