Пример #1
0
 public void ResetLight()
 {
     foreach (Transform tile in tiles)
     {
         LightingController lightcontroller = tile.GetComponent <LightingController>();
         lightcontroller.ResetLight();
     }
 }
Пример #2
0
    public void LightUpdate(bool reset = true)
    {
        List <LightEmitter> emitters = new List <LightEmitter>();

        foreach (Transform tile in tiles)
        {
            LightingController lightcontroller = tile.GetComponent <LightingController>();
            if (reset)
            {
                lightcontroller.ResetLight();
            }
            if (lightcontroller.lightemitlevel != 0)
            {
                LightEmitter emitter = new LightEmitter();
                emitter.intensity = lightcontroller.lightemitlevel;
                emitter.x         = tile.GetComponent <BlockController>().x;
                emitter.y         = tile.GetComponent <BlockController>().y;
                emitters.Add(emitter);
            }
        }
        for (int x = 0; x < xLength; x++)         // For every x co-ord
        {
            for (int y = yLength - 1; y > 0; y--) // Iterate from top to bottom
            {
                if (map[x, y] != 0)               // When you find a non-air block
                {
                    if (y < map.GetLength(1))
                    {
                        tiles[x, y + 1].GetComponent <LightingController>().PropagateLight(20, 0); // Light the air block above it
                    }
                    if (!tilelist.transparentIDs.Contains(map[x, y]))                              // If not a transparent block
                    {
                        y = 0;                                                                     // End the loop
                    }
                }
            }
        }
        foreach (LightEmitter emitter in emitters)
        {
            tiles[emitter.x, emitter.y].GetComponent <LightingController>().PropagateLight(emitter.intensity, 0);
        }
    }