void Update()
    {
        LightRoom2D script = target as LightRoom2D;

        if (GUILayout.Button("Update"))
        {
            script.Initialize();
        }
    }
Example #2
0
        static public void Draw(Pass pass)
        {
            for (int id = 0; id < pass.sortList.count; id++)
            {
                Sorting.SortObject sortObject = pass.sortList.list[id];

                switch (sortObject.type)
                {
                case Sorting.SortObject.Type.TilemapRoom:
                    LightTilemapRoom2D tilemapRoom = (LightTilemapRoom2D)sortObject.lightObject;

                    if (tilemapRoom != null)
                    {
                        TilemapRoom.Draw(tilemapRoom, pass.camera);
                    }

                    break;

                case Sorting.SortObject.Type.Room:
                    LightRoom2D room = (LightRoom2D)sortObject.lightObject;

                    if (room != null)
                    {
                        Room.Draw(room, pass.camera);
                    }

                    break;

                case Sorting.SortObject.Type.LightSprite:
                    LightSprite2D lightSprite = (LightSprite2D)sortObject.lightObject;

                    if (lightSprite != null)
                    {
                        LightSprite.Draw(lightSprite, pass.camera);
                    }

                    break;

                case Sorting.SortObject.Type.Light:
                    Light2D light = (Light2D)sortObject.lightObject;

                    if (light != null)
                    {
                        LightSource.Draw(light, pass.camera);
                    }

                    break;
                }
            }
        }
Example #3
0
        private static void DrawRooms(Pass pass)
        {
            List <LightRoom2D> roomList = LightRoom2D.List;
            int roomCount = roomList.Count;

            if (roomCount < 1)
            {
                return;
            }

            for (int i = 0; i < roomCount; i++)
            {
                LightRoom2D id = roomList[i];

                if (id.nightLayer != pass.layerId)
                {
                    continue;
                }

                Room.Draw(id, pass.camera);
            }
        }
    override public void OnInspectorGUI()
    {
        LightRoom2D script = target as LightRoom2D;

        script.nightLayer = EditorGUILayout.Popup("Night Layer", script.nightLayer, Lighting2D.Profile.layers.nightLayers.GetNames());

        script.shape.type = (LightRoom2D.RoomType)EditorGUILayout.EnumPopup("Room Type", script.shape.type);

        script.color = EditorGUILayout.ColorField("Color", script.color);

        Update();

        if (GUI.changed)
        {
            if (EditorApplication.isPlaying == false)
            {
                EditorUtility.SetDirty(script);
                EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());

                LightingManager2D.ForceUpdate();
            }
        }
    }
Example #5
0
        public void SortObjects()
        {
            sortList.Reset();

            List <Light2D> lightList = Light2D.List;

            for (int id = 0; id < lightList.Count; id++)
            {
                Light2D light = lightList[id];

                if ((int)light.nightLayer != layerId)
                {
                    continue;
                }

                switch (layer.sorting)
                {
                case LayerSorting.ZAxisLower:
                    sortList.Add((object)light, Sorting.SortObject.Type.Light, -light.transform.position.z);
                    break;

                case LayerSorting.ZAxisHigher:
                    sortList.Add((object)light, Sorting.SortObject.Type.Light, light.transform.position.z);
                    break;
                }
            }

            List <LightRoom2D> roomList = LightRoom2D.List;

            for (int id = 0; id < roomList.Count; id++)
            {
                LightRoom2D room = roomList[id];

                if ((int)room.nightLayer != layerId)
                {
                    continue;
                }

                switch (layer.sorting)
                {
                case LayerSorting.ZAxisLower:
                    sortList.Add((object)room, Sorting.SortObject.Type.Room, -room.transform.position.z);
                    break;

                case LayerSorting.ZAxisHigher:
                    sortList.Add((object)room, Sorting.SortObject.Type.Room, room.transform.position.z);
                    break;
                }
            }

            List <LightTilemapRoom2D> roomTilemapList = LightTilemapRoom2D.List;

            for (int id = 0; id < roomTilemapList.Count; id++)
            {
                LightTilemapRoom2D tilemapRoom = roomTilemapList[id];

                if ((int)tilemapRoom.nightLayer != layerId)
                {
                    continue;
                }

                switch (layer.sorting)
                {
                case LayerSorting.ZAxisLower:
                    sortList.Add((object)tilemapRoom, Sorting.SortObject.Type.TilemapRoom, -tilemapRoom.transform.position.z);
                    break;

                case LayerSorting.ZAxisHigher:
                    sortList.Add((object)tilemapRoom, Sorting.SortObject.Type.TilemapRoom, tilemapRoom.transform.position.z);
                    break;
                }
            }

            List <LightSprite2D> spriteList = LightSprite2D.List;

            for (int id = 0; id < spriteList.Count; id++)
            {
                LightSprite2D lightSprite = spriteList[id];

                if ((int)lightSprite.nightLayer != layerId)
                {
                    continue;
                }

                switch (layer.sorting)
                {
                case LayerSorting.ZAxisLower:
                    sortList.Add((object)lightSprite, Sorting.SortObject.Type.LightSprite, -lightSprite.transform.position.z);
                    break;

                case LayerSorting.ZAxisHigher:
                    sortList.Add((object)lightSprite, Sorting.SortObject.Type.LightSprite, lightSprite.transform.position.z);
                    break;
                }
            }

            sortList.Sort();
        }
Example #6
0
        public static void Draw(LightRoom2D id, Camera camera)
        {
            Material material = Lighting2D.materials.GetMask();

            Vector2 position;

            Vector2 offset = -camera.transform.position;

            switch (id.shape.type)
            {
            case LightRoom2D.RoomType.Collider:
                List <MeshObject> meshObjects = id.shape.GetMeshes();

                if (meshObjects == null)
                {
                    return;
                }

                //Vector3 matrixPosition = new Vector3(id.transform.position.x, id.transform.position.y, z);
                //Quaternion matrixRotation = Quaternion.Euler(0, 0, id.transform.rotation.eulerAngles.z);
                //Vector3 matrixScale = new Vector3(id.transform.lossyScale.x, id.transform.lossyScale.y, 1);
                //Graphics.DrawMeshNow(meshObject.mesh, Matrix4x4.TRS(matrixPosition, matrixRotation, matrixScale));

                material.color       = id.color;
                material.mainTexture = null;
                material.SetPass(0);

                position  = id.transform.position;
                position += offset;

                GLExtended.DrawMesh(meshObjects, position, id.transform.lossyScale, id.transform.rotation.eulerAngles.z);

                break;

            case LightRoom2D.RoomType.Sprite:
                UnityEngine.SpriteRenderer spriteRenderer = id.shape.spriteShape.GetSpriteRenderer();

                if (spriteRenderer == null)
                {
                    return;
                }

                Sprite sprite = spriteRenderer.sprite;;
                if (sprite == null)
                {
                    return;
                }


                material.mainTexture = sprite.texture;
                material.color       = id.color;

                position  = id.transform.position;
                position += offset;

                Rendering.Universal.Sprite.FullRect.Draw(id.spriteMeshObject, material, spriteRenderer, position, id.transform.lossyScale, id.transform.eulerAngles.z);

                break;
            }

            material.color       = Color.white;
            material.mainTexture = null;
        }