From d70bd8b9129eefa7fb8741916a68d22d87185e38 Mon Sep 17 00:00:00 2001 From: Platinum Date: Thu, 16 Apr 2020 11:51:26 -0700 Subject: [PATCH] Further checks to make sure pawn doesn't clip oob --- 1.1/Assemblies/Rimworld-Animations.dll | Bin 37888 -> 38400 bytes Source/Comps/CompBodyAnimator.cs | 34 +++++++++++++----- .../Patches/HarmonyPatch_Pawn_DrawTracker.cs | 32 ++++++++++++++--- ...HarmonyPatch_JobDriver_SexBaseInitiator.cs | 5 +-- 4 files changed, 56 insertions(+), 15 deletions(-) diff --git a/1.1/Assemblies/Rimworld-Animations.dll b/1.1/Assemblies/Rimworld-Animations.dll index 09d10ae164a994563a228775a65e244b23bd2836..98a3529d67c46151288bb4d5c2f8b91285b55f34 100644 GIT binary patch literal 38400 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 literal 37888 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 Tx5dAG#{X68|KI5UaSQw(Dj^`x diff --git a/Source/Comps/CompBodyAnimator.cs b/Source/Comps/CompBodyAnimator.cs index 120a3b2..2d1a379 100644 --- a/Source/Comps/CompBodyAnimator.cs +++ b/Source/Comps/CompBodyAnimator.cs @@ -28,16 +28,28 @@ namespace Rimworld_Animations { if(value == true) { xxx.DrawNude(pawn); } else { - pawn.Position = anchor.ToIntVec3(); - pawn.Notify_Teleported(false, true); - pawn.pather.StopDead(); pawn.Drawer.renderer.graphics.ResolveAllGraphics(); + resetPosition = true; } PortraitsCache.SetDirty(pawn); } } - private bool Animating; + + public bool resetPosition { + get { + if (resetPos) { + resetPos = false; + return true; + } + return false; + } + set { + resetPos = value; + } + } + + private bool Animating, resetPos = false; private bool mirror = false; private int actor; @@ -45,6 +57,7 @@ namespace Rimworld_Animations { private int curStage = 0; private float clipPercent = 0; + public IntVec3 positionReset; public Vector3 anchor, deltaPos, headBob; public float bodyAngle, headAngle; public Rot4 headFacing, bodyFacing; @@ -55,11 +68,13 @@ namespace Rimworld_Animations { public void setAnchor(IntVec3 pos) { + positionReset = pos; anchor = pos.ToVector3Shifted(); } public void setAnchor(Thing thing) { - + //center on bed + positionReset = thing.Position; if(thing is Building_Bed) { anchor = thing.Position.ToVector3(); if (((Building_Bed)thing).SleepingSlotsCount == 2) { @@ -117,16 +132,17 @@ namespace Rimworld_Animations { public override void CompTick() { base.CompTick(); - if(Animating) { + if(isAnimating) { tickAnim(); if (pawn?.jobs?.curDriver == null || (pawn?.jobs?.curDriver != null && !(pawn?.jobs?.curDriver is rjw.JobDriver_Sex))) { + isAnimating = false; } } } public void animatePawn(ref Vector3 rootLoc, ref float angle, ref Rot4 bodyFacing, ref Rot4 headFacing) { - if(!Animating) { + if(!isAnimating) { return; } rootLoc = anchor + deltaPos; @@ -142,13 +158,13 @@ namespace Rimworld_Animations { public void tickAnim() { - if (!Animating) return; + if (!isAnimating) return; animTicks++; if (animTicks < anim.animationTimeTicks) { tickStage(); } else { - Animating = false; + isAnimating = false; } } diff --git a/Source/Patches/HarmonyPatch_Pawn_DrawTracker.cs b/Source/Patches/HarmonyPatch_Pawn_DrawTracker.cs index 73856ae..569720f 100644 --- a/Source/Patches/HarmonyPatch_Pawn_DrawTracker.cs +++ b/Source/Patches/HarmonyPatch_Pawn_DrawTracker.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using UnityEngine; using Verse; +using Verse.AI; namespace Rimworld_Animations { @@ -13,13 +14,36 @@ namespace Rimworld_Animations { public static class HarmonyPatch_Pawn_DrawTracker { public static bool Prefix(ref Pawn ___pawn, ref Vector3 __result) { - if(___pawn.TryGetComp() != null && ___pawn.TryGetComp().isAnimating) { - __result = ___pawn.TryGetComp().anchor + ___pawn.TryGetComp().deltaPos; - ___pawn.Position = __result.ToIntVec3(); - return false; + if(___pawn.TryGetComp() != null) { + + if(___pawn.TryGetComp().isAnimating) { + __result = ___pawn.TryGetComp().anchor + ___pawn.TryGetComp().deltaPos; + ___pawn.Position = __result.ToIntVec3(); + return false; + } else if(___pawn.TryGetComp().resetPosition) { + //resetting position to anchor + __result = ___pawn.TryGetComp().anchor; + ___pawn.Position = ___pawn.TryGetComp().positionReset; + return false; + + } + } return true; } } + + [HarmonyPatch(typeof(Pawn_PathFollower), "StartPath")] + public static class HarmonyPatch_ResetPositionIfPathing { + public static void Prefix(ref Pawn ___pawn) { + + if(___pawn.TryGetComp() != null) { + if(___pawn.TryGetComp().isAnimating || ___pawn.TryGetComp().resetPosition) { + ___pawn.TryGetComp().isAnimating = false; + ___pawn.Position = ___pawn.TryGetComp().positionReset; + } + } + } + } } diff --git a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs index 35331b0..04656da 100644 --- a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -146,9 +146,10 @@ namespace Rimworld_Animations { for (int i = 0; i < parteners.Count; i++) { //prevents pawns who started a new anim from stopping their new anim - if (!((parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator) != null && (parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator).Target != __instance.pawn)) + if (!((parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator) != null && (parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator).Target != __instance.pawn)) { parteners[i].TryGetComp().isAnimating = false; - + } + } __instance.Target.TryGetComp().isAnimating = false;