Code refactor

This commit is contained in:
AbstractConcept 2022-10-31 00:44:53 -05:00
parent 5ca7e486f8
commit e14a12f2ab
310 changed files with 4875 additions and 4102 deletions

View file

@ -0,0 +1,100 @@
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 ActorAddonCard : MonoBehaviour
{
public string addonName;
public Text label;
public Toggle toggle;
public Dropdown anchorDropdown;
public InputField anchoringPawnField;
public Dropdown layerDropdown;
public ActorAddonKeyframeCard actorAddonKeyframeCard;
private ActorAddonDef actorAddonDef;
private PawnAnimationClip clip { get { return Workspace.GetCurrentPawnAnimationClip(); } }
private void Start()
{
}
public void Initialize(ActorAddonDef actorAddonDef, ActorAddonKeyframeCard actorAddonKeyframeCard)
{
this.actorAddonDef = actorAddonDef;
this.actorAddonKeyframeCard = actorAddonKeyframeCard;
addonName = actorAddonDef.addonName;
label.text = actorAddonDef.label;
EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); });
UpdateGUI();
}
public void UpdateGUI()
{
if (Workspace.animationDef == null || string.IsNullOrEmpty(addonName)) return;
if (clip?.GetActorAddon(addonName) != null)
{
int i = Constants.bodyPartAnchorNames.Keys.ToList().IndexOf(clip.GetActorAddon(addonName).AnchorName);
anchorDropdown.SetValueWithoutNotify(i);
layerDropdown.SetValueWithoutNotify(layerDropdown.options.IndexOf(layerDropdown.options.First(x => x.text == clip.GetActorAddon(addonName).Layer)));
anchoringPawnField.SetTextWithoutNotify(clip.GetActorAddon(addonName).AnchoringActor.ToString());
toggle.SetIsOnWithoutNotify(clip.IsActorAddonVisible(addonName));
}
}
public void OnToggleChanged()
{
if (clip?.GetActorAddon(addonName) != null)
{ clip.GetActorAddon(addonName).render = toggle.isOn; }
EventsManager.OnPawnKeyframeChanged(null);
UpdateGUI();
}
public void OnAnchorChanged()
{
if (clip?.GetActorAddon(addonName) != null)
{ clip.GetActorAddon(addonName).AnchorName = Constants.bodyPartAnchorNames.Keys.ElementAt(anchorDropdown.value); }
UpdateGUI();
}
public void OnLayerChanged()
{
if (clip?.GetActorAddon(addonName) != null)
{ clip.GetActorAddon(addonName).Layer = layerDropdown.options[layerDropdown.value].text; }
UpdateGUI();
}
public void OnAnchoringPawnChanged()
{
if (clip?.GetActorAddon(addonName) != null)
{
int i = int.Parse(anchoringPawnField.text);
if (i < 0) { i = clip.GetOwningActorID(); }
i = Mathf.Clamp(i, 0, Workspace.animationDef.Actors.Count - 1);
clip.GetActorAddon(addonName).AnchoringActor = i;
anchoringPawnField.SetTextWithoutNotify(i.ToString());
}
UpdateGUI();
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 919aed3c4b9671c4e8dc109c7d608683
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -11,16 +11,30 @@ namespace RimWorldAnimationStudio
public class ActorAddonKeyframeCard : MonoBehaviour
{
public string addonName;
public Text label;
public InputField xOffsetField;
public InputField zOffsetField;
public InputField rotationField;
private ActorAddonDef actorAddonDef;
public void Start()
{
}
public void Initialize(ActorAddonDef actorAddonDef)
{
this.actorAddonDef = actorAddonDef;
this.addonName = actorAddonDef.addonName;
label.text = actorAddonDef.label + ":";
EventsManager.onAnimationChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onStageIDChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onStageTickChanged.AddListener(delegate { Debug.Log("stagetick"); UpdateGUI(); });
EventsManager.onActorIDChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onStageTickChanged.AddListener(delegate { UpdateGUI(); });
EventsManager.onPawnKeyframeChanged.AddListener(delegate { UpdateGUI(); });
xOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
zOffsetField.onEndEdit.AddListener(delegate { OnValueChanged(); });
@ -38,17 +52,20 @@ namespace RimWorldAnimationStudio
keyframe.GetAddonKeyframe(addonName).Rotation = float.Parse(rotationField.text);
Workspace.GetCurrentPawnAnimationClip().BuildSimpleCurves();
Workspace.RecordEvent("Actor addon position / orientation");
UpdateGUI();
}
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());
xOffsetField.SetTextWithoutNotify(string.Format("{0:0.000}", clip.GetActorAddon(addonName).PosX.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize)));
zOffsetField.SetTextWithoutNotify(string.Format("{0:0.000}", clip.GetActorAddon(addonName).PosZ.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize)));
rotationField.SetTextWithoutNotify(string.Format("{0:0.000}", clip.GetActorAddon(addonName).Rotation.Evaluate((float)Workspace.StageTick / Workspace.StageWindowSize)));
gameObject.SetActive(clip.GetActorAddon(addonName).render == true);
}
}
}

View file

@ -7,7 +7,7 @@ using UnityEngine.UI;
namespace RimWorldAnimationStudio
{
public class ActorKeyframeCard : Singleton<ActorKeyframeCard>
{
{
public InputField positionXField;
public InputField positionZField;
public InputField rotationField;
@ -15,6 +15,14 @@ namespace RimWorldAnimationStudio
public InputField headRotationField;
public InputField appendageRotationField;
public ActorAddonCard actorAddonCardPrefab;
public ActorAddonKeyframeCard actorAddonKeyframeCardPrefab;
public Transform actorAddonCards;
public Transform actorKeyframeCards;
public SelectActorAddonsDialog selectActorAddonsDialog;
private Actor actor { get { return Workspace.GetCurrentActor(); } }
private void Start()
@ -33,6 +41,17 @@ namespace RimWorldAnimationStudio
headRotationField.onEndEdit.AddListener(delegate { OnValueChanged(); });
appendageRotationField.onEndEdit.AddListener(delegate { OnValueChanged(); });
foreach (ActorAddonDef actorAddonDef in ActorAddonDefs.allDefs)
{
ActorAddonKeyframeCard actorAddonKeyframeCard = Instantiate(actorAddonKeyframeCardPrefab, actorKeyframeCards);
actorAddonKeyframeCard.Initialize(actorAddonDef);
ActorAddonCard actorAddonCard = Instantiate(actorAddonCardPrefab, actorAddonCards);
actorAddonCard.Initialize(actorAddonDef, actorAddonKeyframeCard);
selectActorAddonsDialog.AddActorAddonCard(actorAddonCard);
}
UpdateGUI();
}