Code refactor

This commit is contained in:
AbstractConcept 2022-10-28 00:28:51 -05:00
parent 757badf4f6
commit a55ba7b95b
232 changed files with 1282 additions and 936 deletions

View file

@ -22,11 +22,7 @@ namespace RimWorldAnimationStudio
bool triggerEvent = stageID != value;
stageID = value;
if (triggerEvent)
{
StageTick = Constants.minTick;
EventsManager.OnStageIDChanged();
}
if (triggerEvent) { StageTick = Constants.minTick; EventsManager.OnStageIDChanged(); }
}
}
@ -78,12 +74,15 @@ namespace RimWorldAnimationStudio
// Current save path
public static string animationSavePath;
// Stage loop counts and stretching
public static int stageLoopsNormal = 1;
public static int stageLoopsQuick = 1;
// Stage controls
private static float playBackSpeed = 1f;
public static bool isAnimating;
public static bool stretchKeyframes;
// Stage controls set / get
public static float PlayBackSpeed { get { return playBackSpeed; } set { Mathf.Clamp(Workspace.playBackSpeed, 0.01f, 10f); } }
// Animation indices
private static int stageID = 0;
private static int actorID = 0;
@ -96,17 +95,17 @@ namespace RimWorldAnimationStudio
public static Actor GetCurrentActor()
{
return animationDef?.Actors[ActorID];
return GetActor(ActorID);
}
public static AnimationStage GetCurrentAnimationStage()
{
return animationDef?.AnimationStages[StageID];
return GetAnimationStage(StageID);
}
public static PawnAnimationClip GetCurrentPawnAnimationClip()
{
return animationDef?.AnimationStages[StageID]?.AnimationClips[ActorID];
return GetPawnAnimationClip(ActorID);
}
public static PawnKeyframe GetCurrentPawnKeyframe(bool makeKeyframe = false)
@ -122,28 +121,47 @@ namespace RimWorldAnimationStudio
public static Actor GetActor(int actorID)
{
return animationDef?.Actors[actorID];
return animationDef?.Actors.ElementAtOrDefault(actorID);
}
public static AnimationStage GetAnimationStage(int stageID)
{
return animationDef?.AnimationStages[stageID];
return animationDef?.AnimationStages.ElementAtOrDefault(stageID);
}
public static PawnAnimationClip GetPawnAnimationClip(int actorID)
{
return animationDef?.AnimationStages[StageID]?.AnimationClips[actorID];
return GetCurrentAnimationStage()?.AnimationClips.ElementAtOrDefault(actorID);
}
public static PawnKeyframe GetPawnKeyframe(int actorID, int keyframeID)
public static PawnKeyframe GetPawnKeyframe(int keyframeID)
{
if (StageID < 0) return null;
if (actorID < 0) return null;
foreach (AnimationStage stage in animationDef?.AnimationStages)
{
foreach (PawnAnimationClip clip in stage.animationClips)
{
PawnKeyframe keyframe = clip.Keyframes.FirstOrDefault(x => x.keyframeID == keyframeID);
if (StageID >= animationDef.AnimationStages.Count) return null;
if (actorID >= animationDef.AnimationStages[StageID].AnimationClips.Count) return null;
if (keyframe != null) return keyframe;
}
}
return animationDef.AnimationStages[StageID].AnimationClips[actorID].Keyframes.FirstOrDefault(x => x.keyframeID == keyframeID);
return null;
}
public static PawnAnimationClip GetAnimationClipThatOwnsKeyframe(int keyframeID)
{
foreach (AnimationStage stage in animationDef?.AnimationStages)
{
foreach (PawnAnimationClip clip in stage.animationClips)
{
PawnKeyframe keyframe = clip.Keyframes.FirstOrDefault(x => x.keyframeID == keyframeID);
if (keyframe != null) return clip;
}
}
return null;
}
public static List<PawnKeyframe> GetAllPawnKeyframesAtTick(int actorID, int atTick)
@ -167,24 +185,6 @@ namespace RimWorldAnimationStudio
return pawnKeyframes;
}
public static PawnAnimationClip GetAnimationClipThatOwnsKeyframe(int keyframeID, out int clipID)
{
clipID = -1;
for (int i = 0; i < animationDef.AnimationStages[StageID].AnimationClips.Count; i++)
{
PawnAnimationClip clip = animationDef.AnimationStages[StageID].AnimationClips[i];
if (clip.Keyframes.Any(x => x.keyframeID == keyframeID))
{
clipID = i;
return clip;
}
}
return null;
}
public static bool DoesPawnKeyframeExistAtTick(int stageID, int actorID, int atTick)
{
return animationDef.AnimationStages[stageID].AnimationClips[actorID].Keyframes.Any(x => x.atTick == atTick);
@ -195,11 +195,9 @@ namespace RimWorldAnimationStudio
PawnKeyframe pawnKeyframe = null;
PawnAnimationClip clip = GetPawnAnimationClip(actorID);
int stageTick = Workspace.StageTick;
foreach (PawnKeyframe keyframe in clip.Keyframes)
{
if (keyframe.atTick > stageTick)
if (keyframe.atTick > StageTick)
{ pawnKeyframe = keyframe; break; }
}
@ -211,11 +209,9 @@ namespace RimWorldAnimationStudio
PawnKeyframe pawnKeyframe = null;
PawnAnimationClip clip = GetPawnAnimationClip(actorID);
int stageTick = Workspace.StageTick;
foreach (PawnKeyframe keyframe in clip.Keyframes)
{
if (keyframe.atTick < stageTick)
if (keyframe.atTick < StageTick)
{ pawnKeyframe = keyframe; }
}
@ -227,11 +223,9 @@ namespace RimWorldAnimationStudio
PawnKeyframe pawnKeyframe = null;
PawnAnimationClip clip = GetPawnAnimationClip(actorID);
int stageTick = Workspace.StageTick;
foreach (PawnKeyframe keyframe in clip.Keyframes)
{
if (keyframe.atTick <= stageTick)
if (keyframe.atTick <= StageTick)
{ pawnKeyframe = keyframe; }
}
@ -310,7 +304,6 @@ namespace RimWorldAnimationStudio
animationDef = record.animationDef.Copy();
StageID = record.stageID;
AnimationController.Instance.MakeTimelineDirty();
StageCardManager.Instance.Initialize();
}
@ -327,7 +320,7 @@ namespace RimWorldAnimationStudio
RestoreToHistoricRecord(recordToRead);
Debug.Log("Undoing : " + recordToStore.eventDesc);
EventsManager.OnAnimationDefChanged();
EventsManager.OnAnimationChanged();
}
public static void Redo()
@ -342,7 +335,7 @@ namespace RimWorldAnimationStudio
RestoreToHistoricRecord(recordToReadAndStore);
Debug.Log("Redoing : " + recordToReadAndStore.eventDesc);
EventsManager.OnAnimationDefChanged();
EventsManager.OnAnimationChanged();
}
public static void ClearHistory()