diff --git a/1.4/Assemblies/Rimworld-Animations.dll b/1.4/Assemblies/Rimworld-Animations.dll index 91ec017..e8a8a1f 100644 Binary files a/1.4/Assemblies/Rimworld-Animations.dll and b/1.4/Assemblies/Rimworld-Animations.dll differ diff --git a/1.4/Source/Comps/CompBodyAnimator.cs b/1.4/Source/Comps/CompBodyAnimator.cs index 5d355a6..7910f7d 100644 --- a/1.4/Source/Comps/CompBodyAnimator.cs +++ b/1.4/Source/Comps/CompBodyAnimator.cs @@ -406,8 +406,6 @@ namespace Rimworld_Animations { headFacing = headFacing.Opposite; } headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent)); - Vector2 bodyScale = (pawn.story?.bodyType?.bodyGraphicScale != null ? pawn.story.bodyType.bodyGraphicScale : Vector2.one); - headBob.z *= bodyScale.x; lastDrawFrame = RealTime.frameCount; diff --git a/1.4/Source/Extensions/PawnWoundDrawerExtension.cs b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs index 417f8ed..45c93e7 100644 --- a/1.4/Source/Extensions/PawnWoundDrawerExtension.cs +++ b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs @@ -5,17 +5,18 @@ using UnityEngine; using Verse; using Rimworld_Animations; -namespace Rimworld_Animations { - +namespace Rimworld_Animations +{ + /* todo: fix for 1.4 [StaticConstructorOnStartup] public static class PawnWoundDrawerExtension { - public static void RenderPawnOverlay(this PawnWoundDrawer pawnWoundDrawer, Vector3 drawLoc, Mesh bodyMesh, Quaternion quat, bool drawNow, PawnOverlayDrawer.OverlayLayer layer, Rot4 pawnRot, bool? overApparel = null, Pawn pawn = null, PawnRenderFlags flags = new PawnRenderFlags()) + public static void RenderOverBody(this PawnWoundDrawer pawnWoundDrawer, Vector3 drawLoc, Mesh bodyMesh, Quaternion quat, bool drawNow, BodyTypeDef.WoundLayer layer, Rot4 pawnRot, bool? overApparel = null, Pawn pawn = null, PawnRenderFlags flags = new PawnRenderFlags()) { if (pawn == null) { return; } - if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == PawnOverlayDrawer.OverlayLayer.Head) + if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == BodyTypeDef.WoundAnchor.) { CompBodyAnimator pawnAnimator = pawn.TryGetComp(); if (pawnAnimator != null && pawnAnimator.isAnimating && pawn.Drawer.renderer.graphics.headGraphic != null) @@ -28,8 +29,9 @@ namespace Rimworld_Animations { } } - pawnWoundDrawer.RenderPawnOverlay(drawLoc, bodyMesh, quat, drawNow, layer, pawnRot, overApparel); + pawnWoundDrawer.RenderOverBody(drawLoc, bodyMesh, quat, drawNow, layer, pawnRot, overApparel); } } + */ } diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs index 9577b0c..486bd82 100644 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs @@ -18,11 +18,13 @@ namespace Rimworld_Animations { { static HarmonyPatch_AlienRace() { + /* (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("AlienRace.HarmonyPatches"), "DrawAddons"), prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_AlienRace), "Prefix_AnimateHeadAddons"))); + + */ } - /* todo: replace jank prefix with this public static void Prefix_DrawAddonsFinalHook(ref Pawn pawn, ref AlienPartGenerator.BodyAddon addon, ref Rot4 rot, ref Graphic graphic, ref Vector3 offsetVector, ref float angle, ref Material mat) { CompBodyAnimator animator = pawn.TryGetComp(); @@ -36,7 +38,7 @@ namespace Rimworld_Animations { { rot = animator.headFacing; angle = animator.headAngle; - offsetVector += animator.deltaPos + animator.bodyAngle * animator.headBob; + offsetVector += angle * animator.headBob; } else @@ -47,7 +49,8 @@ namespace Rimworld_Animations { } } - */ + + /* public static bool Prefix_AnimateHeadAddons(PawnRenderFlags renderFlags, Vector3 vector, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation) { @@ -57,10 +60,7 @@ namespace Rimworld_Animations { List addons = alienProps.alienRace.generalSettings.alienPartGenerator.bodyAddons; AlienPartGenerator.AlienComp comp = pawn.GetComp(); CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - - bool flag = renderFlags.FlagSet(PawnRenderFlags.Portrait); - bool flag2 = renderFlags.FlagSet(PawnRenderFlags.Invisible); - + for (int i = 0; i < addons.Count; i++) { AlienPartGenerator.BodyAddon ba = addons[index: i]; @@ -73,9 +73,9 @@ namespace Rimworld_Animations { forceDrawForBody = true; } AlienPartGenerator.RotationOffset offset = ba.defaultOffsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : Vector3.zero; + Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; AlienPartGenerator.RotationOffset offset2 = ba.offsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : Vector3.zero); + Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); vector2.y = (ba.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); float num = ba.angle; if (rotation == Rot4.North) @@ -93,7 +93,7 @@ namespace Rimworld_Animations { } Graphic addonGraphic = comp.addonGraphics[i]; - addonGraphic.drawSize = ((flag && ba.drawSizePortrait != Vector2.zero) ? ba.drawSizePortrait : ba.drawSize) * (ba.scaleWithPawnDrawsize ? (ba.alignWithHead ? ((flag ? comp.customPortraitHeadDrawSize : comp.customHeadDrawSize) * (ModsConfig.BiotechActive ? (pawn.ageTracker.CurLifeStage.headSizeFactor ?? 1.5f) : 1.5f)) : ((flag ? comp.customPortraitDrawSize : comp.customDrawSize) * (ModsConfig.BiotechActive ? pawn.ageTracker.CurLifeStage.bodySizeFactor : 1f) * 1.5f)) : (Vector2.one * 1.5f)); + addonGraphic.drawSize = ((renderFlags.FlagSet(PawnRenderFlags.Portrait) && ba.drawSizePortrait != Vector2.zero) ? ba.drawSizePortrait : ba.drawSize) * (ba.scaleWithPawnDrawsize ? (ba.alignWithHead ? (renderFlags.FlagSet(PawnRenderFlags.Portrait) ? comp.customPortraitHeadDrawSize : comp.customHeadDrawSize) : (renderFlags.FlagSet(PawnRenderFlags.Portrait) ? comp.customPortraitDrawSize : comp.customDrawSize)) : Vector2.one) * 1.5f; Vector3 orassanv = Vector3.zero; bool orassan = false; @@ -106,7 +106,7 @@ namespace Rimworld_Animations { continue; } - if (ba.bodyPart.defName.Contains("ear")) + if (ba.bodyPart.Contains("ear")) { orassan = true; @@ -117,7 +117,7 @@ namespace Rimworld_Animations { orassanv.z -= 0.1f; orassanv.y += 1f; - if (ba.bodyPart.defName.Contains("left")) + if (ba.bodyPart.Contains("left")) { orassanv.x += 0.03f; } @@ -140,7 +140,7 @@ namespace Rimworld_Animations { orassanv.z -= 0.1f; orassanv.y += 1f; - if (ba.bodyPart.defName.Contains("right")) + if (ba.bodyPart.Contains("right")) { //orassanv.x += 0.3f; } @@ -187,6 +187,8 @@ namespace Rimworld_Animations { return false; } + + */ } [HarmonyPatch(typeof(PawnGraphicSet), "ResolveApparelGraphics")] diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs index b7ff70d..d334621 100644 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -53,8 +53,8 @@ namespace Rimworld_Animations { { yield return new CodeInstruction(OpCodes.Ldloca, (object)0); - yield return new CodeInstruction(OpCodes.Ldloca, (object)9); - yield return new CodeInstruction(OpCodes.Ldloca, (object)8); + yield return new CodeInstruction(OpCodes.Ldloca, (object)7); + yield return new CodeInstruction(OpCodes.Ldloca, (object)6); yield return new CodeInstruction(OpCodes.Ldarga, (object)2); yield return new CodeInstruction(OpCodes.Ldarg_0); yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); @@ -63,15 +63,17 @@ namespace Rimworld_Animations { yield return ins[i]; //headFacing equals true } + /* // Fixes the offsets for eye implants and wounds on the head during animations - else if (ins[i].opcode == OpCodes.Callvirt && ins[i].operand != null && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(PawnOverlayDrawer), "RenderPawnOverlay"))) + else if (ins[i].opcode == OpCodes.Callvirt && ins[i].operand != null && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(PawnWoundDrawer), "RenderOverBody"))) { // Pass some additional info to a new overload of RenderOverBody yield return new CodeInstruction(OpCodes.Ldarg_0); yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); yield return new CodeInstruction(OpCodes.Ldarg_S, (object)6); // renderer flags - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(PawnWoundDrawerExtension), "RenderPawnOverlay")); + yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(PawnWoundDrawerExtension), "RenderOverBody")); } + */ else { yield return ins[i]; diff --git a/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll b/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll index c8811d7..dd12e73 100644 Binary files a/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll and b/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll differ