55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace RimWorldAnimationStudio
|
|
{
|
|
public class ActorAddonKeyframeCard : MonoBehaviour
|
|
{
|
|
public string addonName;
|
|
public InputField xOffsetField;
|
|
public InputField zOffsetField;
|
|
public InputField rotationField;
|
|
|
|
public void Start()
|
|
{
|
|
EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); });
|
|
EventsManager.onStageIDChanged.AddListener(delegate { UpdateGUI(); });
|
|
EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); });
|
|
EventsManager.onStageTickChanged.AddListener(delegate { Debug.Log("stagetick"); UpdateGUI(); });
|
|
|
|
xOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
|
|
zOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
|
|
rotationField.onEndEdit.AddListener(delegate { OnValueChanged(); });
|
|
|
|
UpdateGUI();
|
|
}
|
|
|
|
public void OnValueChanged()
|
|
{
|
|
PawnKeyframe keyframe = Workspace.GetCurrentPawnKeyframe(true);
|
|
|
|
keyframe.GetAddonKeyframe(addonName).PosX = float.Parse(xOffsetField.text);
|
|
keyframe.GetAddonKeyframe(addonName).PosZ = float.Parse(zOffsetField.text);
|
|
keyframe.GetAddonKeyframe(addonName).Rotation = float.Parse(rotationField.text);
|
|
|
|
Workspace.GetCurrentPawnAnimationClip().BuildSimpleCurves();
|
|
|
|
Workspace.RecordEvent("Actor addon position / orientation");
|
|
}
|
|
|
|
public void UpdateGUI()
|
|
{
|
|
PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip();
|
|
|
|
xOffsetField.SetTextWithoutNotify(clip.GetActorAddon(addonName).PosX.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize).ToString());
|
|
zOffsetField.SetTextWithoutNotify(clip.GetActorAddon(addonName).PosZ.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize).ToString());
|
|
rotationField.SetTextWithoutNotify(clip.GetActorAddon(addonName).Rotation.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize).ToString());
|
|
}
|
|
}
|
|
}
|