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); }
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; } }
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); } }
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); } }