Пример #1
0
        static public void Draw(Light2D light, LightTile tile, LightTilemapCollider2D tilemap)
        {
            LightTilemapCollider.Base tilemapCollider = tilemap.GetCurrentTilemap();

            List <Polygon2> polygons = tile.GetWorldPolygons(tilemapCollider);

            ShadowEngine.Draw(polygons, 0, 0);
        }
Пример #2
0
            static public void Draw(Light2D light, LightTilemapCollider2D id)
            {
                Vector2 position = -light.transform.position;

                switch (id.rectangle.shadowType)
                {
                case LightTilemapCollider.ShadowType.CompositeCollider:
                    ShadowEngine.objectOffset = id.transform.position;

                    ShadowEngine.Draw(id.rectangle.compositeColliders, 0, 0);

                    ShadowEngine.objectOffset = Vector2.zero;
                    break;
                }
            }
Пример #3
0
        public static void Draw(Light2D light, LightCollider2D id)
        {
            if (id.InLight(light) == false)
            {
                return;
            }

            light.AddCollider(id);

            foreach (LightColliderShape shape in id.shapes)
            {
                List <Polygon2> polygons = shape.GetPolygonsWorld();

                ShadowEngine.Draw(polygons, shape.shadowDistance, id.shadowTranslucency);
            }
        }
Пример #4
0
        static public void Draw(Light2D light, LightTilemapCollider2D id, float lightSizeSquared)
        {
            Vector2 lightPosition = -light.transform.position;

            LightTilemapCollider.Base tilemapCollider = id.GetCurrentTilemap();

            int count = tilemapCollider.chunkManager.GetTiles(light.GetWorldRect());

            for (int i = 0; i < count; i++)
            {
                LightTile tile = tilemapCollider.chunkManager.display[i];

                switch (id.shadowTileType)
                {
                case ShadowTileType.AllTiles:
                    break;

                case ShadowTileType.ColliderOnly:
                    if (tile.colliderType == UnityEngine.Tilemaps.Tile.ColliderType.None)
                    {
                        continue;
                    }
                    break;
                }

                List <Polygon2> polygons     = tile.GetWorldPolygons(tilemapCollider);
                Vector2         tilePosition = tile.GetWorldPosition(tilemapCollider);

                if (tile.NotInRange(lightPosition + tilePosition, light.size))
                {
                    continue;
                }

                ShadowEngine.Draw(polygons, 0, 0);
            }
        }