新Head
This commit is contained in:
@@ -1,75 +1,67 @@
|
||||
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 SceneCamera : MonoBehaviour, IBaseElement
|
||||
{
|
||||
[FormerlySerializedAs("camera")] public Camera sceneCamera;
|
||||
|
||||
public GameCamera.CameraViewType viewType;
|
||||
public float perspectiveAngle;
|
||||
public float orthographicSize;
|
||||
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
|
||||
[HideInInspector]
|
||||
public Vector3 cameraPosition
|
||||
{
|
||||
get => sceneCamera.transform.position;
|
||||
set
|
||||
{
|
||||
sceneCamera.transform.position = value;
|
||||
}
|
||||
}
|
||||
[HideInInspector]
|
||||
public Vector3 cameraEulerAngles
|
||||
{
|
||||
get => sceneCamera.transform.eulerAngles;
|
||||
set
|
||||
{
|
||||
sceneCamera.transform.eulerAngles = value;
|
||||
}
|
||||
}
|
||||
public bool CanBeFreeRotate => !EditorManager.instance.cameraManager.panelDrawer.isEditing;
|
||||
|
||||
|
||||
public void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Scene Camera");
|
||||
|
||||
//摄像机参数设置
|
||||
var cameraSettings = container.GenerateSubcontainer(3);
|
||||
var viewTypeDropdown =
|
||||
inspector.GenerateDropdown(this, cameraSettings, "View Type", typeof(GameCamera.CameraViewType), nameof(viewType))
|
||||
.AddListenerFunction(() => sceneCamera.orthographic = viewType == GameCamera.CameraViewType.Orthographic);
|
||||
var perspectiveAngleField =
|
||||
inspector.GenerateInputField(this, cameraSettings, "Perspective Angle", nameof(perspectiveAngle))
|
||||
.AddListenerFunction(() => sceneCamera.fieldOfView = perspectiveAngle);
|
||||
var orthographicSizeField =
|
||||
inspector.GenerateInputField(this, cameraSettings, "Orthographic Size", nameof(orthographicSize))
|
||||
.AddListenerFunction(() => sceneCamera.orthographicSize = orthographicSize);
|
||||
|
||||
//摄像机位置与旋转设置
|
||||
var transformSettings = container.GenerateSubcontainer(1);
|
||||
var positionInputFields =
|
||||
inspector.GenerateVector3InputField(this, transformSettings, "Position", nameof(cameraPosition), true)
|
||||
.AddListenerFunction(() => sceneCamera.transform.position = cameraPosition);
|
||||
var eulerAnglesInputFields =
|
||||
inspector.GenerateVector3InputField(this, transformSettings, "Euler Angles", nameof(cameraEulerAngles), true)
|
||||
.AddListenerFunction(() => sceneCamera.transform.eulerAngles = cameraEulerAngles);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
cameraPosition = sceneCamera.transform.position;
|
||||
cameraEulerAngles = sceneCamera.transform.eulerAngles;
|
||||
}
|
||||
}
|
||||
}
|
||||
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 SceneCamera : MonoBehaviour, IBaseElement
|
||||
{
|
||||
[FormerlySerializedAs("camera")] public Camera sceneCamera;
|
||||
|
||||
public GameCamera.CameraViewType viewType;
|
||||
public float perspectiveAngle;
|
||||
public float orthographicSize;
|
||||
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
|
||||
[HideInInspector]
|
||||
public Vector3 cameraPosition
|
||||
{
|
||||
get => sceneCamera.transform.position;
|
||||
set
|
||||
{
|
||||
sceneCamera.transform.position = value;
|
||||
}
|
||||
}
|
||||
[HideInInspector]
|
||||
public Vector3 cameraEulerAngles
|
||||
{
|
||||
get => sceneCamera.transform.eulerAngles;
|
||||
set
|
||||
{
|
||||
sceneCamera.transform.eulerAngles = value;
|
||||
}
|
||||
}
|
||||
public bool CanBeFreeRotate => !EditorManager.instance.cameraManager.panelDrawer.isEditing;
|
||||
|
||||
|
||||
public void SetUpInspector()
|
||||
{
|
||||
InspectorBuilder.For(this)
|
||||
.Section("Scene Camera")
|
||||
.Dropdown(nameof(viewType), typeof(GameCamera.CameraViewType), "View Type")
|
||||
.OnChanged(() => sceneCamera.orthographic = viewType == GameCamera.CameraViewType.Orthographic)
|
||||
.InputField(nameof(perspectiveAngle), "Perspective Angle")
|
||||
.OnChanged(() => sceneCamera.fieldOfView = perspectiveAngle)
|
||||
.InputField(nameof(orthographicSize), "Orthographic Size")
|
||||
.OnChanged(() => sceneCamera.orthographicSize = orthographicSize)
|
||||
.Vector3Field(nameof(cameraPosition), "Position")
|
||||
.AutoUpdate()
|
||||
.OnChanged(() => sceneCamera.transform.position = cameraPosition)
|
||||
.Vector3Field(nameof(cameraEulerAngles), "Euler Angles")
|
||||
.AutoUpdate()
|
||||
.OnChanged(() => sceneCamera.transform.eulerAngles = cameraEulerAngles)
|
||||
.Build();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
cameraPosition = sceneCamera.transform.position;
|
||||
cameraEulerAngles = sceneCamera.transform.eulerAngles;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user