Пример #1
0
    public void setup(LightColorSource colorSource)
    {
        LightColorSource[] colorChain = colorSource.colorSources;
        List<LightColorSource> colorSources = new List<LightColorSource>();
        for(int i = 0; i < colorChain.Length; i++)
        {
            colorSources.Add(colorChain[i]);
        }
        colorSources.Sort(isCloser);

    }
Пример #2
0
    public int isCloser(LightColorSource x, LightColorSource y)
    {
        float xDistance = Vector3.Distance(transform.position, x.transform.position);
        float yDistance = Vector3.Distance(transform.position, y.transform.position);

        if (xDistance < yDistance)
        {
            return -1;
        } else if (xDistance == yDistance)
        {
            return 0;
        } else
        {
            return 1;
        }
    }
Пример #3
0
 public void setupChain(LightColorSource[] allSources)
 {
     colorSources = allSources;
     LightColorSource lastSource = this;
     float totalDistance = 0;
     for(int i = colorSources.Length-1; i >= 0; i--)
     {
         totalDistance += Vector3.Distance(lastSource.transform.position, colorSources[i].transform.position);
         colorSources[i].distanceFromEnd = totalDistance;
         lastSource = colorSources[i];
     }
     for(int i = 0; i < colorSources.Length; i++)
     {
         float pointInChain = colorSources[i].distanceFromEnd / totalDistance;
         Color color = Color.Lerp(this.color, Color.white, pointInChain);
         colorSources[i].setup(color, totalDistance, colorSources);
     }
 }
Пример #4
0
 public void setup(Color color, float totalDistance, LightColorSource[] allSources)
 {
     this.color = color;
     totalChainDistance = totalDistance;
     colorSources = allSources;
 }