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 GameCamera gameCamera; public bool haveGameCamera => gameCamera != null; public BaseElement_BM matchedBM { get; set; } public void SwitchCamera() { if (!haveGameCamera) { LogWindow.Log("GameCamera is not assigned", Color.red); return; } isSceneCameraActive = !isSceneCameraActive; sceneCamera.camera.enabled = isSceneCameraActive; gameCamera.camera.enabled = !isSceneCameraActive; } public void SetUpInspector() { IHaveInspection inspector = EditorManager.instance.uiManager.inspector; string ShowCameraType() => isSceneCameraActive ? "Scene Camera" : "Game Camera"; var container = inspector.GenerateContainer("Camera Manager"); var cameraTypeText = inspector.GenerateHintText(this, container, ShowCameraType); var switchCameraButton = inspector.GenerateButton(this, container, "Switch Camera", SwitchCamera); var cameraMoveSpeedField = inspector.GenerateInputField(this, container, "Scene Camera Move Speed", nameof(sceneCameraMoveSpeed)); sceneCamera.SetUpInspector(); } } }