using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; namespace RimWorldAnimationStudio { public class ActorPosition { public float bodyOffsetX; public float bodyOffsetZ; public float bodyAngle; public float headBob; public float headAngle; public float genitalAngle; public int bodyFacing; public int headFacing; public ActorPosition(int actorID, int atTick) { PawnAnimationClip clip = Workspace.GetPawnAnimationClip(actorID); float clipPercent = (float)(atTick % clip.duration) / clip.duration; if (atTick > Constants.minTick && atTick == clip.duration) clipPercent = 1f; if (Workspace.GetCurrentAnimationStage().IsLooping == false) { clipPercent = (float)atTick / clip.duration; } bodyOffsetX = clip.BodyOffsetX.Evaluate(clipPercent); bodyOffsetZ = clip.BodyOffsetZ.Evaluate(clipPercent); bodyAngle = clip.BodyAngle.Evaluate(clipPercent); headBob = clip.HeadBob.Evaluate(clipPercent); headAngle = clip.HeadAngle.Evaluate(clipPercent); genitalAngle = clip.GenitalAngle.Evaluate(clipPercent); bodyFacing = (int)clip.BodyFacing.Evaluate(clipPercent); headFacing = (int)clip.HeadFacing.Evaluate(clipPercent); } } }