Inspector Secondary Window & QuickCopy

inspector的二级界面,主要用于工具制作。
重新制作了Track的QuickCopy功能
This commit is contained in:
SoulliesOfficial
2025-02-21 01:03:01 -05:00
parent 039bc5bddf
commit cd9ef00d13
50 changed files with 2332 additions and 229 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
@@ -79,6 +80,7 @@ namespace Ichni.RhythmGame
public override void SetUpInspector()
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Color");
var baseColor = inspector.GenerateBaseColorPicker(this, container, "Base Color", nameof(originalBaseColor));
if ((attachedGameElement as IHaveColorSubmodule).haveEmission)

View File

@@ -61,6 +61,8 @@ namespace Ichni.RhythmGame
public override void SetUpInspector()
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
foreach (var effect in effectCollection)
{
var container = inspector.GenerateContainer(effect.Key);
@@ -145,8 +147,7 @@ namespace Ichni.RhythmGame
}
public BaseElement_BM matchedBM { get; set; }
public Inspector inspector => EditorManager.instance.uiManager.inspector;
/// <summary>
/// 效果的持续时间如果为0则表示瞬间效果
/// </summary>

View File

@@ -13,8 +13,6 @@ namespace Ichni.RhythmGame
public BaseElement_BM matchedBM { get; set; }
public Inspector inspector => EditorManager.instance.uiManager.inspector;
public SubmoduleBase(GameElement attachedGameElement)
{
this.attachedGameElement = attachedGameElement;

View File

@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap;
using Unity.Mathematics;
using UnityEngine;
@@ -87,10 +88,11 @@ namespace Ichni.RhythmGame
{
public override void SetUpInspector()
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Time Duration");
var overrideToggle = inspector.GenerateToggle(this, container, "Override Duration", nameof(isOverridingDuration));
var startTimeInputField = inspector.GenerateInputField(this, container, "Start Time", nameof(startTime));
var endTimeInputField = inspector.GenerateInputField(this, container, "End Time", nameof(endTime));
var startTimeInputField = inspector.GenerateParameterInputField(this, container, "Start Time", nameof(startTime));
var endTimeInputField = inspector.GenerateParameterInputField(this, container, "End Time", nameof(endTime));
void SetInputFieldInteractable(bool interactable)
{

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap;
using UniRx;
using Unity.Mathematics;
@@ -86,14 +87,16 @@ namespace Ichni.RhythmGame
public override void SetUpInspector()
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Transform");
var originalPosInputField =
inspector.GenerateVec3InputField(this, container, "Start Position", nameof(originalPosition));
inspector.GenerateVector3InputField(this, container, "Start Position", nameof(originalPosition));
var originalRotInputField =
inspector.GenerateVec3InputField(this, container, "Start Rotation", nameof(originalEulerAngles));
inspector.GenerateVector3InputField(this, container, "Start Rotation", nameof(originalEulerAngles));
var originalScaleInputField =
inspector.GenerateVec3InputField(this, container, "Start Scale", nameof(originalScale));
inspector.GenerateVector3InputField(this, container, "Start Scale", nameof(originalScale));
var currentPosText =
inspector.GenerateParameterText(this, container, "Current Position", nameof(currentPosition), true);
var currentRotText =
@@ -135,6 +138,8 @@ namespace Ichni.RhythmGame
{
return;
}
bool willRefresh = false;
if (transformSubmodule.scaleDirtyMark)
{
@@ -147,6 +152,7 @@ namespace Ichni.RhythmGame
transformSubmodule.currentScale = transformSubmodule.originalScale + offset;
attachedGameElement.transform.localScale = transformSubmodule.currentScale;
transformSubmodule.scaleDirtyMark = false;
willRefresh = true;
}
if (transformSubmodule.eulerAnglesDirtyMark)
@@ -160,6 +166,7 @@ namespace Ichni.RhythmGame
transformSubmodule.currentEulerAngles = transformSubmodule.originalEulerAngles + offset;
attachedGameElement.transform.localEulerAngles = transformSubmodule.currentEulerAngles;
transformSubmodule.eulerAnglesDirtyMark = false;
willRefresh = true;
}
if (transformSubmodule.positionDirtyMark)
@@ -173,11 +180,18 @@ namespace Ichni.RhythmGame
transformSubmodule.currentPosition = transformSubmodule.originalPosition + offset;
attachedGameElement.transform.localPosition = transformSubmodule.currentPosition;
transformSubmodule.positionDirtyMark = false;
willRefresh = true;
}
if(willRefresh)
{
attachedGameElement.Refresh();
}
transformSubmodule.scaleOffset.Clear();
transformSubmodule.eulerAnglesOffset.Clear();
transformSubmodule.positionOffset.Clear();
}).AddTo(attachedGameElement);
}
}