2025-02-18 10:30:11 -05:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using Ichni.RhythmGame;
|
|
|
|
|
|
using Ichni.RhythmGame.Beatmap;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Ichni.Editor
|
|
|
|
|
|
{
|
|
|
|
|
|
public class SceneCamera : MonoBehaviour, IBaseElement
|
|
|
|
|
|
{
|
|
|
|
|
|
public Camera camera;
|
2025-02-21 19:36:03 +08:00
|
|
|
|
|
2025-02-18 10:30:11 -05:00
|
|
|
|
public GameCamera.CameraViewType viewType;
|
|
|
|
|
|
public float perspectiveAngle;
|
|
|
|
|
|
public float orthographicSize;
|
2025-02-21 19:36:03 +08:00
|
|
|
|
|
2025-02-18 10:30:11 -05:00
|
|
|
|
public BaseElement_BM matchedBM { get; set; }
|
|
|
|
|
|
|
2025-02-26 00:52:08 -05:00
|
|
|
|
[HideInInspector]
|
|
|
|
|
|
public Vector3 cameraPosition; //注意,这里的Position和EulerAngles,是transform的中介变量,仅能用于Inspector显示!
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
|
|
public Vector3 cameraEulerAngles;
|
|
|
|
|
|
|
2025-02-18 10:30:11 -05:00
|
|
|
|
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
|
|
|
|
var container = inspector.GenerateContainer("Scene Camera");
|
|
|
|
|
|
var viewTypeDropdown = inspector.GenerateDropdown(this, container, "View Type", typeof(GameCamera.CameraViewType), nameof(viewType));
|
2025-02-26 00:52:08 -05:00
|
|
|
|
var perspectiveAngleField = inspector.GenerateInputField(this, container, "Perspective Angle", nameof(perspectiveAngle));
|
|
|
|
|
|
var orthographicSizeField = inspector.GenerateInputField(this, container, "Orthographic Size", nameof(orthographicSize));
|
|
|
|
|
|
viewTypeDropdown.AddListenerFunction(_ => camera.orthographic = viewType == GameCamera.CameraViewType.Orthographic);
|
|
|
|
|
|
perspectiveAngleField.AddListenerFunction(_ => camera.fieldOfView = perspectiveAngle);
|
|
|
|
|
|
orthographicSizeField.AddListenerFunction(_ => camera.orthographicSize = orthographicSize);
|
|
|
|
|
|
|
|
|
|
|
|
var positionInputFields = inspector.GenerateVector3InputField(this, container, "Position", nameof(cameraPosition), true);
|
|
|
|
|
|
positionInputFields.AddListenerFunction(() => camera.transform.position = cameraPosition);
|
2025-03-02 00:09:31 +08:00
|
|
|
|
|
2025-02-26 00:52:08 -05:00
|
|
|
|
var eulerAnglesInputFields = inspector.GenerateVector3InputField(this, container, "Euler Angles", nameof(cameraEulerAngles), true);
|
|
|
|
|
|
eulerAnglesInputFields.AddListenerFunction(() => camera.transform.eulerAngles = cameraEulerAngles);
|
2025-03-02 00:09:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-02-26 00:52:08 -05:00
|
|
|
|
container.SetDeviver(1);
|
2025-02-18 10:30:11 -05:00
|
|
|
|
}
|
2025-02-21 19:36:03 +08:00
|
|
|
|
|
2025-02-26 00:52:08 -05:00
|
|
|
|
private void Update()
|
2025-02-18 10:30:11 -05:00
|
|
|
|
{
|
2025-02-26 00:52:08 -05:00
|
|
|
|
cameraPosition = camera.transform.position;
|
|
|
|
|
|
cameraEulerAngles = camera.transform.eulerAngles;
|
2025-02-18 10:30:11 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|