67 lines
2.3 KiB
C#
67 lines
2.3 KiB
C#
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<DynamicUIButton>();
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|