void Update() { LightRoom2D script = target as LightRoom2D; if (GUILayout.Button("Update")) { script.Initialize(); } }
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; } } }
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(); } } }
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(); }
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; }