Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using Ichni;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using TMPro;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class PanelDrawer//暂时支持xz
|
||||
public class PanelDrawer : MonoBehaviour //暂时支持xz
|
||||
{
|
||||
public bool isEditing = false;
|
||||
public CameraManager cameraManager => EditorManager.instance.cameraManager;
|
||||
public GameElement connectedGameElement => EditorManager.instance.uiManager.inspector.connectedGameElement;
|
||||
public SceneCamera sceneCamera => cameraManager.sceneCamera;
|
||||
|
||||
public float height
|
||||
@@ -37,6 +42,7 @@ public class PanelDrawer//暂时支持xz
|
||||
}
|
||||
}
|
||||
private float _baseHeight = 0f;
|
||||
private Vector3 tempRot = new Vector3(30, 0, 0);
|
||||
public void startEdit()
|
||||
{
|
||||
isEditing = true;
|
||||
@@ -47,16 +53,86 @@ public class PanelDrawer//暂时支持xz
|
||||
cameraManager.sceneCamera.transform.rotation = cameraManager.gameCamera.transform.rotation;
|
||||
cameraManager.SwitchCamera();
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
tempRot = cameraManager.sceneCamera.transform.eulerAngles;
|
||||
cameraManager.sceneCamera.transform.DORotate(new Vector3(90, 0, 0), 0.5f).SetEase(Ease.InOutQuad);
|
||||
}
|
||||
else
|
||||
{
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
tempRot = cameraManager.sceneCamera.transform.eulerAngles;
|
||||
cameraManager.sceneCamera.transform.DORotate(new Vector3(90, 0, 0), 0.5f).SetEase(Ease.InOutQuad);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public void endEdit()
|
||||
{
|
||||
isEditing = false;
|
||||
cameraManager.sceneCamera.transform.DOMove(cameraManager.gameCamera.transform.position + new Vector3(0, 0, _baseHeight + _height), 0.5f).SetEase(Ease.InOutQuad);
|
||||
cameraManager.sceneCamera.transform.DORotate(tempRot, 0.5f).SetEase(Ease.InOutQuad);
|
||||
}
|
||||
public void SwitchEditing()
|
||||
{
|
||||
if (isEditing)
|
||||
{
|
||||
endEdit();
|
||||
}
|
||||
else
|
||||
{
|
||||
startEdit();
|
||||
}
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
if (isEditing && connectedGameElement is Track &&
|
||||
Keyboard.current.leftCtrlKey.isPressed &&
|
||||
Mouse.current.leftButton.wasPressedThisFrame)
|
||||
{
|
||||
StartCoroutine(Pressing());
|
||||
}
|
||||
}
|
||||
public Texture ingTexture;
|
||||
public Canvas DisplayCanvas;
|
||||
private IEnumerator Pressing()
|
||||
{
|
||||
GameObject gobj = new GameObject("PanelDrawerPreview");
|
||||
RawImage rawImage = gobj.AddComponent<RawImage>();
|
||||
GameObject gobj2 = new GameObject("PanelDrawerText");
|
||||
gobj2.transform.SetParent(gobj.transform, false);
|
||||
TextMeshProUGUI Text = gobj2.AddComponent<TextMeshProUGUI>();
|
||||
Text.rectTransform.position = new Vector3(50, 50, 0);
|
||||
rawImage.texture = ingTexture;
|
||||
rawImage.rectTransform.SetParent(DisplayCanvas.transform);
|
||||
rawImage.rectTransform.sizeDelta = new Vector2(100, 100);
|
||||
Vector3 hitPoint = new Vector3(0, 0, 0);
|
||||
while (Mouse.current.leftButton.isPressed)
|
||||
{
|
||||
|
||||
Ray ray = cameraManager.currentCamera.ScreenPointToRay(Mouse.current.position.ReadValue());
|
||||
Plane plane = new Plane(Vector3.up, new Vector3(0, _baseHeight, 0));
|
||||
if (plane.Raycast(ray, out float enter))
|
||||
{
|
||||
|
||||
hitPoint = ray.GetPoint(enter);
|
||||
if (Keyboard.current.leftAltKey.isPressed)
|
||||
{
|
||||
hitPoint = new Vector3(Mathf.Round(hitPoint.x / 0.5f) * 0.5f, hitPoint.y, Mathf.Round(hitPoint.z / 0.5f) * 0.5f);
|
||||
rawImage.rectTransform.position =
|
||||
new Vector3(Mathf.Round(Mouse.current.position.ReadValue().x / 10) * 10, Mathf.Round(Mouse.current.position.ReadValue().y / 10) * 10, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
rawImage.rectTransform.position = Mouse.current.position.ReadValue();
|
||||
}
|
||||
Text.text = $"X: {hitPoint.x:F2}\nY: {hitPoint.y:F2}\nZ: {hitPoint.z:F2}";
|
||||
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
Destroy(rawImage.gameObject);
|
||||
var i = PathNode.GenerateElement("new pathnode", Guid.NewGuid(), new List<string>(), true, (Track)connectedGameElement, true);
|
||||
i.transformSubmodule.originalPosition = hitPoint;
|
||||
i.Refresh();
|
||||
connectedGameElement.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user