rimworld-animation-studio/Assets/Scripts/GUI/Cards/ActorAddonKeyframeCard.cs

55 lines
2.2 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace RimWorldAnimationStudio
{
2022-10-28 05:28:51 +00:00
public class ActorAddonKeyframeCard : MonoBehaviour
{
public string addonName;
public InputField xOffsetField;
public InputField zOffsetField;
public InputField rotationField;
public void Start()
{
2022-10-28 05:28:51 +00:00
EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onStageIDChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onStageTickChanged.AddListener(delegate { Debug.Log("stagetick"); UpdateGUI(); });
2022-10-28 05:28:51 +00:00
xOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
zOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
rotationField.onEndEdit.AddListener(delegate { OnValueChanged(); });
UpdateGUI();
}
2022-10-28 05:28:51 +00:00
public void OnValueChanged()
{
2022-10-27 05:56:04 +00:00
PawnKeyframe keyframe = Workspace.GetCurrentPawnKeyframe(true);
2022-10-27 05:56:04 +00:00
keyframe.GetAddonKeyframe(addonName).PosX = float.Parse(xOffsetField.text);
keyframe.GetAddonKeyframe(addonName).PosZ = float.Parse(zOffsetField.text);
keyframe.GetAddonKeyframe(addonName).Rotation = float.Parse(rotationField.text);
2022-10-28 05:28:51 +00:00
Workspace.GetCurrentPawnAnimationClip().BuildSimpleCurves();
2022-10-27 05:56:04 +00:00
Workspace.RecordEvent("Actor addon position / orientation");
}
2022-10-28 05:28:51 +00:00
public void UpdateGUI()
{
2022-10-27 05:56:04 +00:00
PawnAnimationClip clip = Workspace.GetCurrentPawnAnimationClip();
2022-10-27 05:56:04 +00:00
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());
}
}
}