using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using UnityEngine; using UnityEngine.Serialization; namespace Ichni.Editor { public class CameraManager : MonoBehaviour, IBaseElement { public Camera backgroundCamera; public bool isSceneCameraActive; public SceneCamera sceneCamera; public float sceneCameraMoveSpeed; public float sceneCameraRotateSpeed; public PanelDrawer panelDrawer => EditorManager.instance.panelDrawer; public GameCamera gameCamera; public bool haveGameCamera => gameCamera != null; public Camera currentCamera => haveGameCamera && !isSceneCameraActive ? gameCamera.cam : sceneCamera.sceneCamera; public BaseElement_BM matchedBM { get; set; } public void SwitchCamera() { if (!haveGameCamera) { LogWindow.Log("GameCamera is not assigned", Color.red); return; } isSceneCameraActive = !isSceneCameraActive; sceneCamera.sceneCamera.enabled = isSceneCameraActive; gameCamera.cam.enabled = !isSceneCameraActive; EditorManager.instance.backgroundController.backgroundCanvas.worldCamera = currentCamera; } public void SetUpInspector() { var editBtnRef = new ElementRef(); InspectorBuilder.For(this) .Section("Camera Manager") .HintText(() => isSceneCameraActive ? "Scene Camera" : "Game Camera") .Button("Switch Camera", SwitchCamera) .InputField(nameof(sceneCameraMoveSpeed), "Scene Camera Move Speed") .Button(panelDrawer.isEditing ? "End Edit" : "Start Edit", () => { }) .Span(3) .WithRef(editBtnRef) .OnChanged(() => { panelDrawer.SwitchEditing(); if (editBtnRef.Value != null) editBtnRef.Value.buttonText.text = panelDrawer.isEditing ? "End Edit" : "Start Edit"; }) .Build(); sceneCamera.SetUpInspector(); } } }