diff --git a/1.4/Assemblies/Rimworld-Animations.dll b/1.4/Assemblies/Rimworld-Animations.dll index e8a8a1f..56a29f4 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/Extensions/PawnWoundDrawerExtension.cs b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs index 45c93e7..417f8ed 100644 --- a/1.4/Source/Extensions/PawnWoundDrawerExtension.cs +++ b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs @@ -5,18 +5,17 @@ using UnityEngine; using Verse; using Rimworld_Animations; -namespace Rimworld_Animations -{ - /* todo: fix for 1.4 +namespace Rimworld_Animations { + [StaticConstructorOnStartup] public static class PawnWoundDrawerExtension { - 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()) + 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()) { if (pawn == null) { return; } - if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == BodyTypeDef.WoundAnchor.) + if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == PawnOverlayDrawer.OverlayLayer.Head) { CompBodyAnimator pawnAnimator = pawn.TryGetComp(); if (pawnAnimator != null && pawnAnimator.isAnimating && pawn.Drawer.renderer.graphics.headGraphic != null) @@ -29,9 +28,8 @@ namespace Rimworld_Animations } } - pawnWoundDrawer.RenderOverBody(drawLoc, bodyMesh, quat, drawNow, layer, pawnRot, overApparel); + pawnWoundDrawer.RenderPawnOverlay(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 486bd82..9577b0c 100644 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs @@ -18,13 +18,11 @@ 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(); @@ -38,7 +36,7 @@ namespace Rimworld_Animations { { rot = animator.headFacing; angle = animator.headAngle; - offsetVector += angle * animator.headBob; + offsetVector += animator.deltaPos + animator.bodyAngle * animator.headBob; } else @@ -49,8 +47,7 @@ namespace Rimworld_Animations { } } - - /* + */ public static bool Prefix_AnimateHeadAddons(PawnRenderFlags renderFlags, Vector3 vector, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation) { @@ -60,7 +57,10 @@ 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, comp.crownType) : Vector3.zero; + Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : 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, comp.crownType) : Vector3.zero); + Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, pawn.story.headType) : 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 = ((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; + 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)); Vector3 orassanv = Vector3.zero; bool orassan = false; @@ -106,7 +106,7 @@ namespace Rimworld_Animations { continue; } - if (ba.bodyPart.Contains("ear")) + if (ba.bodyPart.defName.Contains("ear")) { orassan = true; @@ -117,7 +117,7 @@ namespace Rimworld_Animations { orassanv.z -= 0.1f; orassanv.y += 1f; - if (ba.bodyPart.Contains("left")) + if (ba.bodyPart.defName.Contains("left")) { orassanv.x += 0.03f; } @@ -140,7 +140,7 @@ namespace Rimworld_Animations { orassanv.z -= 0.1f; orassanv.y += 1f; - if (ba.bodyPart.Contains("right")) + if (ba.bodyPart.defName.Contains("right")) { //orassanv.x += 0.3f; } @@ -187,8 +187,6 @@ 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 d334621..b7ff70d 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)7); - yield return new CodeInstruction(OpCodes.Ldloca, (object)6); + yield return new CodeInstruction(OpCodes.Ldloca, (object)9); + yield return new CodeInstruction(OpCodes.Ldloca, (object)8); 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,17 +63,15 @@ 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(PawnWoundDrawer), "RenderOverBody"))) + else if (ins[i].opcode == OpCodes.Callvirt && ins[i].operand != null && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(PawnOverlayDrawer), "RenderPawnOverlay"))) { // 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), "RenderOverBody")); + yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(PawnWoundDrawerExtension), "RenderPawnOverlay")); } - */ 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 dd12e73..c8811d7 100644 Binary files a/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll and b/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll differ