58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements.Experimental;
|
|
namespace Ichni.Editor{
|
|
public class DynamicUIVec3InputField : DynamicUIElement
|
|
{
|
|
public TMP_InputField inputFieldx;
|
|
public TMP_InputField inputFieldy;
|
|
public TMP_InputField inputFieldz;
|
|
Transform objtransform;
|
|
|
|
public override void Initialize(string title, string parameterName)
|
|
{
|
|
base.Initialize(title, parameterName);
|
|
objtransform = connectedGameElement.transform;
|
|
Vector3 pos = (Vector3)objtransform.GetType().GetProperty(parameterName).GetValue(objtransform);
|
|
|
|
|
|
inputFieldx.text =pos.x.ToString();
|
|
inputFieldx.onEndEdit.AddListener(ApplyParametersx);
|
|
inputFieldy.text =pos.y.ToString();
|
|
inputFieldx.onEndEdit.AddListener(ApplyParametersy);
|
|
inputFieldz.text =pos.z.ToString();
|
|
inputFieldx.onEndEdit.AddListener(ApplyParametersz);
|
|
}//我不应该用这种复制大法的(
|
|
|
|
private void ApplyParametersx(string text)
|
|
{
|
|
Vector3 newpos=totramsf(float.Parse(text),0);
|
|
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
|
|
|
}
|
|
private void ApplyParametersy(string text)
|
|
{
|
|
Vector3 newpos=totramsf(float.Parse(text),1);
|
|
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
|
}
|
|
private void ApplyParametersz(string text)
|
|
{
|
|
Vector3 newpos=totramsf(float.Parse(text),2);
|
|
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
|
}
|
|
|
|
Vector3 totramsf(float value,int queue){
|
|
Vector3 a= (Vector3)transform.GetType().GetProperty(parameterName).GetValue(connectedGameElement.transform);
|
|
switch(queue){
|
|
case 0:a.x=value;break;
|
|
case 1:a.y=value;break;
|
|
case 2:a.z=value;break;
|
|
}
|
|
return a;
|
|
}
|
|
}
|
|
|
|
|
|
} |