Ghost frames fix plus undo redo system

This commit is contained in:
AbstractConcept 2022-09-18 19:07:44 -05:00
parent 591b176924
commit b0a965e0b2
163 changed files with 948 additions and 214 deletions

View file

@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.Xml.Serialization;
using UnityEngine;
namespace RimWorldAnimationStudio
{
@ -27,5 +29,53 @@ namespace RimWorldAnimationStudio
animationTimeTicks += stage.playTimeTicks;
}
}
public void RunPreSaveOperations()
{
// Stage edits
for (int i = 0; i < animationStages.Count; i++)
{
AnimationStage stage = animationStages[i];
// Sort keyframes by atTick
foreach (PawnAnimationClip clip in stage.animationClips)
{ clip.keyframes = clip.keyframes.OrderBy(x => x.atTick).ToList(); }
// Check if looping
int stageWindowSize = animationStages[i].stageWindowSize > 0 ? animationStages[i].stageWindowSize : animationStages[i].animationClips.Select(x => x.duration).Max();
int cycles = Mathf.CeilToInt(animationStages[i].playTimeTicks / stageWindowSize);
Debug.Log(animationStages[i].playTimeTicks);
Debug.Log(animationStages[i].stageWindowSize);
Debug.Log(cycles);
stage.isLooping = cycles > 1;
}
// Body part list edit
foreach (Actor actor in actors)
{
actor.isFucking = actor.requiredGenitals.Contains("Any appendage");
if (actor.isFucking == true)
{ actor.requiredGenitals.Remove("Any appendage"); }
actor.isFucked= actor.requiredGenitals.Contains("Any orifice");
if (actor.isFucked == true)
{ actor.requiredGenitals.Remove("Any orifice"); }
}
}
public void RunPostLoadOperations()
{
foreach (Actor actor in actors)
{
if (actor.isFucking == true)
{ actor.requiredGenitals.Add("Any appendage"); }
if (actor.isFucked == true)
{ actor.requiredGenitals.Add("Any orifice"); }
}
}
}
}