private static void DrawTilemapSprite(Pass pass) { #if UNITY_2017_4_OR_NEWER for (int id = 0; id < pass.tilemapList.Count; id++) { LightTilemapCollider2D tilemap = pass.tilemapList[id]; if (tilemap.maskLayer != pass.layerID) { continue; } if (tilemap.MasksDisabled()) { continue; } // Tilemap In Range switch (tilemap.mapType) { case MapType.UnityRectangle: case MapType.UnityIsometric: case MapType.UnityHexagon: LightTilemapCollider.Base baseTilemap = tilemap.GetCurrentTilemap(); switch (baseTilemap.maskType) { case LightTilemapCollider.MaskType.Sprite: UnityTilemap.Sprite(pass.light, tilemap, pass.materialWhite, pass.layer); break; case MaskType.BumpedSprite: Material material = tilemap.bumpMapMode.SelectMaterial(pass.materialNormalMap_PixelToLight, pass.materialNormalMap_ObjectToLight); UnityTilemap.BumpedSprite(pass.light, tilemap, material, pass.layer); break; } break; case MapType.SuperTilemapEditor: switch (tilemap.superTilemapEditor.maskTypeSTE) { case SuperTilemapEditorSupport.TilemapCollider.MaskType.Sprite: SuperTilemapEditorSupport.RenderingColliderMask.WithoutAtlas.Sprite(pass.light, tilemap, pass.materialWhite); break; case SuperTilemapEditorSupport.TilemapCollider.MaskType.BumpedSprite: Material material = tilemap.bumpMapMode.SelectMaterial(pass.materialNormalMap_PixelToLight, pass.materialNormalMap_ObjectToLight); SuperTilemapEditorSupport.RenderingColliderMask.WithoutAtlas.BumpedSprite(pass.light, tilemap, material); break; } break; } } #endif }
private static void DrawTileMap(Pass pass) { #if UNITY_2017_4_OR_NEWER LightTilemapCollider2D tilemap = pass.sortPass.sortObject.tilemap; bool masksDisabled = tilemap.MasksDisabled(); bool shadowsDisabled = tilemap.ShadowsDisabled(); if (tilemap.shadowLayer == pass.layerID && pass.drawShadows && shadowsDisabled == false) { ShadowEngine.GetMaterial().SetPass(0); GL.Begin(GL.TRIANGLES); switch (tilemap.mapType) { case MapType.UnityRectangle: switch (tilemap.rectangle.shadowType) { case ShadowType.Grid: case ShadowType.SpritePhysicsShape: Shadow.UnityTilemap.Draw(pass.light, tilemap, pass.lightSizeSquared); break; case ShadowType.CompositeCollider: Shadow.TilemapCollider.Rectangle.Draw(pass.light, tilemap); break; } break; case MapType.UnityIsometric: switch (tilemap.isometric.shadowType) { case ShadowType.Grid: case ShadowType.SpritePhysicsShape: Shadow.UnityTilemap.Draw(pass.light, tilemap, pass.lightSizeSquared); break; } break; case MapType.UnityHexagon: switch (tilemap.hexagon.shadowType) { case ShadowType.Grid: case ShadowType.SpritePhysicsShape: Shadow.UnityTilemap.Draw(pass.light, tilemap, pass.lightSizeSquared); break; } break; case MapType.SuperTilemapEditor: switch (tilemap.superTilemapEditor.shadowTypeSTE) { case SuperTilemapEditorSupport.TilemapCollider2D.ShadowType.TileCollider: case SuperTilemapEditorSupport.TilemapCollider2D.ShadowType.Grid: SuperTilemapEditorSupport.RenderingColliderShadow.Grid(pass.light, tilemap); break; case SuperTilemapEditorSupport.TilemapCollider2D.ShadowType.Collider: SuperTilemapEditorSupport.RenderingColliderShadow.Collider(pass.light, tilemap); break; } break; } GL.End(); } if (pass.sortPass.sortObject.tilemap.maskLayer == pass.layerID && pass.drawMask && masksDisabled == false) { switch (tilemap.mapType) { case MapType.UnityRectangle: switch (tilemap.rectangle.maskType) { case LightTilemapCollider.MaskType.Sprite: UnityTilemap.Sprite(pass.light, tilemap, pass.materialWhite, pass.layer); break; case LightTilemapCollider.MaskType.BumpedSprite: Material material = tilemap.bumpMapMode.SelectMaterial(pass.materialNormalMap_PixelToLight, pass.materialNormalMap_ObjectToLight); UnityTilemap.BumpedSprite(pass.light, tilemap, material, pass.layer); break; } break; case MapType.UnityIsometric: switch (tilemap.isometric.maskType) { case MaskType.Sprite: UnityTilemap.Sprite(pass.light, tilemap, pass.materialWhite, pass.layer); break; } break; case MapType.UnityHexagon: switch (tilemap.hexagon.maskType) { case MaskType.Sprite: // TilemapHexagon.MaskSprite(pass.buffer, tilemap, pass.materialWhite, pass.z); break; } break; case MapType.SuperTilemapEditor: switch (tilemap.superTilemapEditor.maskTypeSTE) { case SuperTilemapEditorSupport.TilemapCollider.MaskType.Sprite: SuperTilemapEditorSupport.RenderingColliderMask.WithoutAtlas.Sprite(pass.light, tilemap, pass.materialWhite); break; case SuperTilemapEditorSupport.TilemapCollider.MaskType.BumpedSprite: Material material = tilemap.bumpMapMode.SelectMaterial(pass.materialNormalMap_PixelToLight, pass.materialNormalMap_ObjectToLight); SuperTilemapEditorSupport.RenderingColliderMask.WithoutAtlas.BumpedSprite(pass.light, tilemap, material); break; } break; } } #endif }