using HarmonyLib; using RimWorld; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Verse; namespace Rimworld_Animations { //Head Rotation Code - Textures [HarmonyPatch(typeof(PawnRenderNode), "AppendRequests")] public static class HarmonyPatch_PawnRenderNode { //if rendernodetag is head, update PawnDrawParms so that head, and all children, are rotated for anim public static bool Prefix(ref PawnRenderNode __instance, ref PawnDrawParms parms) { if (__instance.AnimationWorker is AnimationWorker_KeyframesExtended extendedAnimWorker) { // ADJUST FACING get rotated textures // compare the previous tick to the current tick; if the current tick rotation is different, recache parms.facing = extendedAnimWorker.facingAtTick(__instance.tree.AnimationTick); //INVIS IF ANIM CALLS FOR IT //replace maybe? //cheaper call now comparing prev tick to cur tick return extendedAnimWorker.visibleAtTick(__instance.tree.AnimationTick); } return true; } } }