From 990d27d4b15e37979aba5dc7c894b60adcefac9c Mon Sep 17 00:00:00 2001 From: c0ffee Date: Sun, 28 Apr 2024 17:07:06 -0700 Subject: [PATCH] added priority-based anim selection --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 45568 -> 45568 bytes 1.5/Defs/AnimationDefs/TestAnimation3.xml | 21 ++++++++++ .../TestGroupAnimation1.xml | 10 +++++ .../BaseGroupAnimationContext.cs | 11 +++++- .../GroupAnimationContext_RJWSex.cs | 4 +- .../GroupAnimations/GroupAnimationDef.cs | 36 +++++++++++++++--- .../HarmonyPatch_PawnRenderTree.cs | 2 +- .../PawnRenderNode_GraphicHediffVariants.cs | 2 - .../PawnRenderSubWorker_ChangeOffset.cs | 1 - 1.5/Source/Utilities/AnimationUtility.cs | 13 +++---- 10 files changed, 80 insertions(+), 20 deletions(-) diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 494f83d8076729b3a266da79b763e9204b0c8faa..d5ecd1cfdcd6c91d97c2c4cac6903e41fdc41b88 100644 GIT binary patch delta 14713 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 + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + East +
  • +
  • + 400 + -600 + true + East +
  • + + + \ No newline at end of file diff --git a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml index 05c541b..2aa9ae3 100644 --- a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml +++ b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml @@ -38,18 +38,28 @@
  • + 1
  • Sex_Anal
  • Sex_Vaginal
  • + 1 1
  • Sex_Reverse_Anal
  • Sex_Reverse_Vaginal
  • + +
  • + 0 + + + + +
  • diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs index d62b348..747e154 100644 --- a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs +++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs @@ -10,7 +10,16 @@ namespace Rimworld_Animations public abstract class BaseGroupAnimationContext { public int actorShift = 0; - public abstract bool CanAnimationBeUsed(List actors, out int reorder); + public int priority = 0; + public abstract bool CanAnimationBeUsed(List actors); + public virtual int AnimationReorder() + { + return actorShift; + } + public virtual int AnimationPriority() + { + return priority; + } public abstract string DebugMessage(); //cool class for designating contexts for animations diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs index a0bb3be..62e1928 100644 --- a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs +++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs @@ -15,12 +15,10 @@ namespace Rimworld_Animations public List interactionDefs; - public override bool CanAnimationBeUsed(List actors, out int reorder) + public override bool CanAnimationBeUsed(List actors) { JobDriver_SexBaseInitiator latestSexBaseInitiator = (actors.FindLast(x => x.jobs?.curDriver is JobDriver_SexBaseInitiator).jobs.curDriver as JobDriver_SexBaseInitiator); - reorder = base.actorShift; - return interactionDefs.Contains(latestSexBaseInitiator.Sexprops.dictionaryKey); } diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs index da77e49..affee1b 100644 --- a/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs +++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs @@ -16,26 +16,52 @@ namespace Rimworld_Animations public List offsetDefs; - public bool canAnimationBeUsed(List actors, out int reorder) + public bool canAnimationBeUsed(List actors) { + if (RJWAnimationSettings.debugMode) { Log.Message("[anims] Checking if " + defName + " is valid animation"); } - - + + foreach (BaseGroupAnimationContext context in contexts) { - if (context.CanAnimationBeUsed(actors, out reorder)) + if (context.CanAnimationBeUsed(actors)) { + //find all where context matches actors return true; + } } - reorder = 0; return false; } + public int Priority(List actors, out int reorder) + { + int priority = -999999999; + reorder = 0; + + foreach (BaseGroupAnimationContext context in contexts) + { + if (context.CanAnimationBeUsed(actors)) + { + if (context.AnimationPriority() > priority) + { + //get highest priority context for fitting animation + priority = context.AnimationPriority(); + reorder = context.AnimationReorder(); + + } + + } + } + + return priority; + + } + public List GetAllAnimationsForActor(int actor, int seed, int reorder = 0) { List animations = new List(); diff --git a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs index b79853f..c3cca54 100644 --- a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs +++ b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs @@ -17,7 +17,7 @@ namespace Rimworld_Animations public static bool Prefix(PawnRenderTree __instance, Dictionary ___nodesByTag, PawnRenderNode node, ref PawnDrawParms parms, ref Matrix4x4 matrix, ref bool __result) { /* - * Facing fix + * Facing offsets fix */ //find lowest parent that is animating, or nothing if not animating PawnRenderNode animatingNode = node; diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs index 5382373..0742262 100644 --- a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs @@ -44,7 +44,6 @@ namespace Rimworld_Animations } } - } //there is no graphic hediff variants appropriate @@ -63,7 +62,6 @@ namespace Rimworld_Animations //do graphicvariantsfor variants = GraphicHediffVariantsFor(this.tree.pawn); } - //call this in case variants wasn't set, and there is no graphic hediff variants appropriate; it'll set variants based on default base.EnsureMaterialsInitialized(); } diff --git a/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs index 117e459..b28a3b0 100644 --- a/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs +++ b/1.5/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs @@ -29,7 +29,6 @@ namespace Rimworld_Animations public override void TransformRotation(PawnRenderNode node, PawnDrawParms parms, ref Quaternion rotation) { - if (node.AnimationWorker is AnimationWorker_KeyframesExtended && node.tree.pawn.TryGetComp(out CompExtendedAnimator extendedAnimator) && extendedAnimator.IsAnimating) diff --git a/1.5/Source/Utilities/AnimationUtility.cs b/1.5/Source/Utilities/AnimationUtility.cs index 04950f4..aa9349a 100644 --- a/1.5/Source/Utilities/AnimationUtility.cs +++ b/1.5/Source/Utilities/AnimationUtility.cs @@ -84,15 +84,14 @@ namespace Rimworld_Animations { int reorder2 = 0; - DefDatabase.AllDefsListForReading.TryRandomElement((GroupAnimationDef x) => - x.canAnimationBeUsed(participants, out reorder2), out GroupAnimationDef result); + //find all, then find max priority context + GroupAnimationDef result = DefDatabase.AllDefsListForReading + .FindAll((GroupAnimationDef x) => x.canAnimationBeUsed(participants)) + .MaxBy((GroupAnimationDef x) => x.Priority(participants, out reorder2)); + reorder = reorder2; - if (result != null) return result; - - return null; - - + return result; }