From d0a217ad1235dec03b6a2dea5f6d31a56616a0bf Mon Sep 17 00:00:00 2001 From: c0ffee Date: Sat, 29 Oct 2022 19:31:19 -0700 Subject: [PATCH] removed HAR as a dependency --- 1.4/Assemblies/Rimworld-Animations.dll | Bin 61440 -> 57856 bytes .../OtherModPatches/HarmonyPatch_AlienRace.cs | 347 +++++++++--------- Rimworld-Animations.csproj | 4 - 3 files changed, 174 insertions(+), 177 deletions(-) diff --git a/1.4/Assemblies/Rimworld-Animations.dll b/1.4/Assemblies/Rimworld-Animations.dll index 2880d39a91dbce1f61739a3aaf748fb6c00708ae..0b959d9ffcdfdf97428ddba66f66fa061a1fdec6 100644 GIT binary patch delta 18815 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 a^0Uo~{a<+B5F%d>?(ly3Pia+&^}hk58D7u; delta 22318 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

#fX@D4V|NA(>6-m$C)3UN*&62y_b# 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 + AlienPartGenerator.AlienComp comp = pawn.GetComp(); - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - AlienPartGenerator.AlienComp comp = pawn.GetComp(); + if (pawnAnimator != null && pawnAnimator.isAnimating) + { - if (pawnAnimator != null && pawnAnimator.isAnimating) - { + if((bodyAddon.drawnInBed || bodyAddon.alignWithHead)) + { - if((bodyAddon.drawnInBed || bodyAddon.alignWithHead)) - { - - AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; - AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); - vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); - float num = bodyAddon.angle; - if (rotation == Rot4.North) + AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); + Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; + AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); + Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); + vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); + float num = bodyAddon.angle; + if (rotation == Rot4.North) + { + if (bodyAddon.layerInvert) { - if (bodyAddon.layerInvert) - { - vector2.y = -vector2.y; - } - num = 0f; + vector2.y = -vector2.y; } - if (rotation == Rot4.East) - { - num = -num; - vector2.x = -vector2.x; - } - - vector = vector + Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.bodyFacing) - pawnAnimator.getPawnHeadOffset(); //convert vector into pseudo body pos for head - quat = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up); - loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); - mat = graphic.MatAt(rot: pawnAnimator.headFacing); + num = 0f; } - else - { - - AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; - AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); - vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); - float num = bodyAddon.angle; - if (rotation == Rot4.North) - { - if (bodyAddon.layerInvert) - { - vector2.y = -vector2.y; - } - num = 0f; - } - if (rotation == Rot4.East) - { - num = -num; - vector2.x = -vector2.x; - } - quat = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up); - loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); - + if (rotation == Rot4.East) + { + num = -num; + vector2.x = -vector2.x; } + vector = vector + Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.bodyFacing) - pawnAnimator.getPawnHeadOffset(); //convert vector into pseudo body pos for head + quat = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up); + loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); + mat = graphic.MatAt(rot: pawnAnimator.headFacing); + } + else + { + + AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); + Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; + AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); + Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); + vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); + float num = bodyAddon.angle; + if (rotation == Rot4.North) + { + if (bodyAddon.layerInvert) + { + vector2.y = -vector2.y; + } + num = 0f; + } + if (rotation == Rot4.East) + { + num = -num; + vector2.x = -vector2.x; + } + quat = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up); + loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); + } - GenDraw.DrawMeshNowOrLater(mesh, loc, quat, mat, drawNow); - /* - if (pawnAnimator != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead)) - { + } + GenDraw.DrawMeshNowOrLater(mesh, loc, quat, mat, drawNow); - - if ((pawn.def as ThingDef_AlienRace).defName == "Alien_Orassan") - { + /* + if (pawnAnimator != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead)) + { + + + if ((pawn.def as ThingDef_AlienRace).defName == "Alien_Orassan") + { + orassan = true; + + if(bodyAddon.path.Contains("closed")) + { + return; + } + + if (bodyAddon.bodyPart.Contains("ear")) + + { orassan = true; - if(bodyAddon.path.Contains("closed")) - { - return; - } - - if (bodyAddon.bodyPart.Contains("ear")) - + orassanv = new Vector3(0, 0, 0.23f); + if (pawnAnimator.headFacing == Rot4.North) { - orassan = true; + orassanv.z -= 0.1f; + orassanv.y += 1f; - orassanv = new Vector3(0, 0, 0.23f); - if (pawnAnimator.headFacing == Rot4.North) + if(bodyAddon.bodyPart.Contains("left")) { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if(bodyAddon.bodyPart.Contains("left")) - { - orassanv.x += 0.03f; - } else - { - orassanv.x -= 0.03f; - } - + orassanv.x += 0.03f; + } else + { + orassanv.x -= 0.03f; } - else if (pawnAnimator.headFacing == Rot4.East) + + } + else if (pawnAnimator.headFacing == Rot4.East) + { + orassanv.x -= 0.1f; + } + else if (pawnAnimator.headFacing == Rot4.West) + { + orassanv.x = 0.1f; + } + else + { + orassanv.z -= 0.1f; + orassanv.y += 1f; + + if (bodyAddon.bodyPart.Contains("right")) { - orassanv.x -= 0.1f; - } - else if (pawnAnimator.headFacing == Rot4.West) - { - orassanv.x = 0.1f; + orassanv.x += 0.05f; } else - { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if (bodyAddon.bodyPart.Contains("right")) - { - orassanv.x += 0.05f; - } - else - { - orassanv.x -= 0.05f; - } + { + orassanv.x -= 0.05f; } - orassanv = orassanv.RotatedBy(pawnAnimator.headAngle); } + orassanv = orassanv.RotatedBy(pawnAnimator.headAngle); } - - + } - GenDraw.DrawMeshNowOrLater(mesh: graphic.MeshAt(rot: headRotInAnimation), loc: loc + orassanv + (bodyAddon.alignWithHead ? headOffset : Vector3.zero),// + v.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f), - quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * headQuatInAnimation, mat: graphic.MatAt(rot: pawnAnimator.headFacing), drawNow: drawNow);; + + + GenDraw.DrawMeshNowOrLater(mesh: graphic.MeshAt(rot: headRotInAnimation), loc: loc + orassanv + (bodyAddon.alignWithHead ? headOffset : Vector3.zero),// + v.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f), + quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * headQuatInAnimation, mat: graphic.MatAt(rot: pawnAnimator.headFacing), drawNow: drawNow);; + } + + else + { + + } + + + } + + + public static IEnumerable Transpiler(IEnumerable instructions) + { + List ins = instructions.ToList(); + for (int i = 0; i < ins.Count; i++) + { + + Type[] type = new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool) }; + + + if (ins[i].OperandIs(AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater", type))) + { + + yield return new CodeInstruction(OpCodes.Ldloc, (object)7); //graphic + yield return new CodeInstruction(OpCodes.Ldloc, (object)4); //bodyAddon + yield return new CodeInstruction(OpCodes.Ldloc, (object)5); //offsetVector/AddonOffset (v) + yield return new CodeInstruction(OpCodes.Ldarg, (object)2); //headOffset + yield return new CodeInstruction(OpCodes.Ldarg, (object)3); //pawn + yield return new CodeInstruction(OpCodes.Ldarg, (object)0); //renderflags + yield return new CodeInstruction(OpCodes.Ldarg, (object)1); //vector + yield return new CodeInstruction(OpCodes.Ldarg, (object)5); //rotation + + yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(HarmonyPatch_AlienRace), "RenderHeadAddonInAnimation")); + } else - { - - } - - - } - - - public static IEnumerable Transpiler(IEnumerable instructions) - { - List ins = instructions.ToList(); - for (int i = 0; i < ins.Count; i++) - { - - Type[] type = new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool) }; - - - if (ins[i].OperandIs(AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater", type))) - { - - yield return new CodeInstruction(OpCodes.Ldloc, (object)7); //graphic - yield return new CodeInstruction(OpCodes.Ldloc, (object)4); //bodyAddon - yield return new CodeInstruction(OpCodes.Ldloc, (object)5); //offsetVector/AddonOffset (v) - yield return new CodeInstruction(OpCodes.Ldarg, (object)2); //headOffset - yield return new CodeInstruction(OpCodes.Ldarg, (object)3); //pawn - yield return new CodeInstruction(OpCodes.Ldarg, (object)0); //renderflags - yield return new CodeInstruction(OpCodes.Ldarg, (object)1); //vector - yield return new CodeInstruction(OpCodes.Ldarg, (object)5); //rotation - - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(HarmonyPatch_AlienRace), "RenderHeadAddonInAnimation")); - - } - - else - { - yield return ins[i]; - } - } - } - - public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation) - { - if(pawn == null) - { - return true; - } - - CompBodyAnimator anim = pawn.TryGetComp(); - - if(anim == null) - { - return true; - } - - if (anim != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating) { - //quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up); + yield return ins[i]; } - - return true; - } } - - */ + public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation) + { + if(pawn == null) + { + return true; + } + + CompBodyAnimator anim = pawn.TryGetComp(); + + if(anim == null) + { + return true; + } + + if (anim != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating) + { + //quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up); + } + + return true; + + } +} + + + } +*/ \ No newline at end of file diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 8680e4e..dc4896e 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -36,10 +36,6 @@ ..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll False - - ..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.dll - False - ..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False