Esempio n. 1
0
        public static void Mask(Light2D light, LightCollider2D id, LayerSetting layerSetting)
        {
            if (id.InLight(light) == false)
            {
                return;
            }

            int shapeCount = id.shapes.Count;

            for (int i = 0; i < shapeCount; i++)
            {
                LightColliderShape shape = id.shapes[i];

                List <MeshObject> meshObjects = shape.GetMeshes();

                if (meshObjects == null)
                {
                    return;
                }

                Vector2 position = shape.transform2D.position - light.transform2D.position;

                Vector2 pivotPosition = shape.GetPivotPoint() - light.transform2D.position;
                GL.Color(LayerSettingColor.Get(pivotPosition, layerSetting, id.maskEffect, id.maskTranslucency));

                GLExtended.DrawMeshPass(meshObjects, position, shape.transform.lossyScale, shape.transform2D.rotation);
            }
        }
Esempio n. 2
0
        static public void Grid(Light2D light, LightTilemapCollider2D id)
        {
            if (id.superTilemapEditor.maskTypeSTE != SuperTilemapEditorSupport.TilemapCollider2D.MaskType.Grid)
            {
                return;
            }

            Vector2    lightPosition = -light.transform.position;
            MeshObject tileMesh      = LightingTile.Rectangle.GetStaticMesh();

            GL.Color(Color.white);

            LightTilemapCollider.Base tilemapBase = id.GetCurrentTilemap();

            foreach (LightingTile tile in id.superTilemapEditor.mapTiles)
            {
                Vector2 tilePosition = tile.GetWorldPosition(tilemapBase);
                tilePosition += lightPosition;

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

                GLExtended.DrawMeshPass(tileMesh, tilePosition, tile.worldScale, tile.worldRotation);
            }
        }
Esempio n. 3
0
        static public void MaskShape(Light2D light, LightTilemapCollider2D id, LayerSetting layerSetting)
        {
            Vector2 lightPosition = -light.transform.position;

            LightTilemapCollider.Base tilemap = id.GetCurrentTilemap();

            bool isGrid = !tilemap.IsPhysicsShape();

            Vector2 scale = tilemap.TileWorldScale();

            float rotation = id.transform.eulerAngles.z;

            MeshObject tileMesh = null;

            if (isGrid)
            {
                tileMesh = LightTile.GetStaticMesh(tilemap);
            }

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

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

                Vector2 tilePosition = tilemap.TileWorldPosition(tile);

                tilePosition += lightPosition;

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

                if (isGrid == false)
                {
                    tileMesh = null;
                    tileMesh = tile.GetDynamicMesh();
                }

                if (tileMesh == null)
                {
                    continue;
                }

                Color color = LayerSettingColor.Get(tilePosition, layerSetting, MaskEffect.Lit, 1); // 1?

                GL.Color(color);

                GLExtended.DrawMeshPass(tileMesh, tilePosition, scale, rotation + tile.rotation);
            }

            GL.Color(Color.white);
        }
Esempio n. 4
0
        static public void Draw(DayLightCollider2D id, Vector2 position)
        {
            if (id.mainShape.shadowType == DayLightCollider2D.ShadowType.None)
            {
                return;
            }

            if (id.mainShape.shadowType == DayLightCollider2D.ShadowType.SpriteOffset)
            {
                return;
            }

            if (id.mainShape.shadowType == DayLightCollider2D.ShadowType.SpriteProjection)
            {
                return;
            }

            if (id.mainShape.height < 0)
            {
                return;
            }

            if (id.InAnyCamera() == false)
            {
                return;
            }

            Color color = new Color(id.shadowTranslucency, id.shadowTranslucency, id.shadowTranslucency, 1);

            GL.Color(color);

            foreach (DayLightColliderShape shape in id.shapes)
            {
                DayLighting.ShadowMesh shadow = shape.shadowMesh;

                if (shadow == null)
                {
                    continue;
                }

                Vector3   pos    = new Vector3(shape.transform2D.position.x + position.x, shape.transform2D.position.y + position.y, 0);
                Matrix4x4 matrix = Matrix4x4.TRS(pos, Quaternion.Euler(0, 0, 0), Vector3.one);

                foreach (MeshObject mesh in shadow.softMeshes)
                {
                    GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0);
                }

                foreach (MeshObject mesh in shadow.meshes)
                {
                    GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0);
                }
            }
        }
Esempio n. 5
0
        static public void DrawTilemap(DayLightTilemapCollider2D id, Vector2 position)
        {
            //if (id.mainShape.shadowType == DayLightCollider2D.shadowType.None) {
            //    return;
            //}

            // if (id.mainShape.shadowType == DayLightCollider2D.shadowType.Sprite) {
            //    return;
            //}

            //if (id.mainShape.height < 0) {
            //    return;
            //}//

            //if (id.InAnyCamera() == false) {
            //     continue;
            //}

            // shadowTranslucency
            GL.Color(Color.black);

            foreach (DayLightingTile dayTile in id.dayTiles)
            {
                DayLighting.TilemapShadowMesh shadow = dayTile.shadowMesh;

                if (shadow == null)
                {
                    continue;
                }

                Vector3   pos    = new Vector3(position.x, position.y, 0);
                Matrix4x4 matrix = Matrix4x4.TRS(pos, Quaternion.Euler(0, 0, 0), Vector3.one);

                foreach (MeshObject mesh in shadow.softMeshes)
                {
                    GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0);
                }

                foreach (MeshObject mesh in shadow.meshes)
                {
                    GLExtended.DrawMeshPass(mesh, pos, Vector3.one, 0);
                }
            }
        }