Esempio n. 1
0
            private static void DrawTilemapCollider(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 MaskType.Grid:
                        case MaskType.SpritePhysicsShape:
                            UnityTilemap.MaskShape(pass.light, tilemap, pass.layer);
                            break;
                        }

                        break;

                    case MapType.SuperTilemapEditor:
                        SuperTilemapEditorSupport.RenderingColliderMask.Grid(pass.light, tilemap);
                        break;
                    }
                }
                #endif
            }
Esempio n. 2
0
            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
            }
Esempio n. 3
0
        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
        }