2025-02-24 15:20:54 -05:00
|
|
|
using System;
|
2025-02-18 10:30:11 -05:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Ichni.RhythmGame;
|
|
|
|
|
using Ichni.RhythmGame.Beatmap;
|
|
|
|
|
using UnityEngine;
|
2025-02-19 09:15:51 -05:00
|
|
|
using UnityEngine.Serialization;
|
2025-02-18 10:30:11 -05:00
|
|
|
|
|
|
|
|
namespace Ichni.Editor
|
|
|
|
|
{
|
|
|
|
|
public class CameraManager : MonoBehaviour, IBaseElement
|
|
|
|
|
{
|
2025-02-19 09:15:51 -05:00
|
|
|
public Camera backgroundCamera;
|
|
|
|
|
|
2025-02-18 10:30:11 -05:00
|
|
|
public bool isSceneCameraActive;
|
|
|
|
|
public SceneCamera sceneCamera;
|
2025-02-19 09:15:51 -05:00
|
|
|
public float sceneCameraMoveSpeed;
|
2025-02-24 15:20:54 -05:00
|
|
|
public float sceneCameraRotateSpeed;
|
2025-02-18 10:30:11 -05:00
|
|
|
|
|
|
|
|
public GameCamera gameCamera;
|
2025-02-19 09:15:51 -05:00
|
|
|
public bool haveGameCamera => gameCamera != null;
|
2025-04-04 15:40:00 -04:00
|
|
|
public Camera currentCamera => haveGameCamera && !isSceneCameraActive ? gameCamera.camera : sceneCamera.sceneCamera;
|
2025-02-18 10:30:11 -05:00
|
|
|
|
|
|
|
|
public BaseElement_BM matchedBM { get; set; }
|
2025-02-24 15:20:54 -05:00
|
|
|
|
2025-02-18 10:30:11 -05:00
|
|
|
public void SwitchCamera()
|
|
|
|
|
{
|
|
|
|
|
if (!haveGameCamera)
|
2025-02-19 09:15:51 -05:00
|
|
|
{
|
|
|
|
|
LogWindow.Log("GameCamera is not assigned", Color.red);
|
|
|
|
|
return;
|
2025-02-18 10:30:11 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isSceneCameraActive = !isSceneCameraActive;
|
2025-03-01 22:58:20 -05:00
|
|
|
sceneCamera.sceneCamera.enabled = isSceneCameraActive;
|
2025-02-18 10:30:11 -05:00
|
|
|
gameCamera.camera.enabled = !isSceneCameraActive;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetUpInspector()
|
|
|
|
|
{
|
2025-02-21 01:03:01 -05:00
|
|
|
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
2025-02-18 10:30:11 -05:00
|
|
|
string ShowCameraType() => isSceneCameraActive ? "Scene Camera" : "Game Camera";
|
2025-02-21 01:03:01 -05:00
|
|
|
var container = inspector.GenerateContainer("Camera Manager");
|
|
|
|
|
var cameraTypeText = inspector.GenerateHintText(this, container, ShowCameraType);
|
|
|
|
|
var switchCameraButton = inspector.GenerateButton(this, container, "Switch Camera", SwitchCamera);
|
2025-02-26 00:52:08 -05:00
|
|
|
var cameraMoveSpeedField = inspector.GenerateInputField(this, container, "Scene Camera Move Speed", nameof(sceneCameraMoveSpeed));
|
2025-02-18 10:30:11 -05:00
|
|
|
sceneCamera.SetUpInspector();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|