From df3a670d6fce13c7117a76e2c82374ada715b965 Mon Sep 17 00:00:00 2001 From: c0ffee Date: Tue, 23 Apr 2024 23:10:35 -0700 Subject: [PATCH] Test arms and legs; body type based props --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 41984 -> 42496 bytes 1.5/Defs/AnimationDefs/TestAnimation3.xml | 112 ++++++++++++++++++ .../AnimationPropDef_Knees.xml | 56 +++++++++ .../TestGroupAnimation1.xml | 9 +- .../TexPathVariants_Arms.xml | 10 ++ .../TexPathVariants_Knees.xml | 10 ++ 1.5/Source/Comps/CompExtendedAnimator.cs | 4 - ...HarmonyPatch_JobDriver_SexBaseInitiator.cs | 17 ++- ...onyPatch_JobDriver_SexBaseReceiverRaped.cs | 6 + ...rNodeProperties_GraphicBodyTypeVariants.cs | 27 +++++ ...enderNodeWorker_GraphicBodyTypeVariants.cs | 15 +++ .../PawnRenderNode_GraphicBodyTypeVariants.cs | 58 +++++++++ .../PawnRenderNode_GraphicHediffVariants.cs | 6 + .../PawnRenderNodeWorker_GraphicVariants.cs | 5 +- .../PawnRenderNode_GraphicVariants.cs | 11 +- .../Doggystyle/Doggy_Arms_north.png | Bin 0 -> 2554 bytes .../Doggystyle/Doggy_Legs_north.png | Bin 0 -> 4520 bytes .../Keyed/RJWAnimations-LanguageData.xml | 22 ++++ .../Keyed/RJWAnimations-LanguageData.xml | 22 ++++ Rimworld-Animations.csproj | 9 ++ 20 files changed, 383 insertions(+), 16 deletions(-) create mode 100644 1.5/Defs/AnimationDefs/TestAnimation3.xml create mode 100644 1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml create mode 100644 1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs create mode 100644 1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs create mode 100644 1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs create mode 100644 1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png create mode 100644 1.5/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png create mode 100644 Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml create mode 100644 Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 292a90595e276e08e9b9a6b6b6b2e1ebd4d8d344..3c237035ccaf86bafa5811cdbfd2f497fd3d619a 100644 GIT binary patch delta 18569 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 XqYp~Ed|UsmNP~9i4}Kvv_q6{nm;iPS diff --git a/1.5/Defs/AnimationDefs/TestAnimation3.xml b/1.5/Defs/AnimationDefs/TestAnimation3.xml new file mode 100644 index 0000000..b4db1f0 --- /dev/null +++ b/1.5/Defs/AnimationDefs/TestAnimation3.xml @@ -0,0 +1,112 @@ + + + + TestAnimation3 + 400 + False + + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + Fuck + 30 + 90 + East + true +
  • +
  • + 100 + 80 + East + true +
  • +
  • + 200 + 90 + East + true +
  • +
  • + 300 + 80 + East + true +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + East + true +
  • + + + +
  • + RenderNodeTag_Knees + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 1 + 0 + 0 + true +
  • +
  • + 1 + 200 + 3 + true +
  • +
  • + 1 + 400 + 0 + true +
  • + + + +
  • + RenderNodeTag_Arms + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 1 + 0 + 0 + true +
  • + +
  • + 1 + 200 + 3 + true +
  • + +
  • + 1 + 400 + 0 + true +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml new file mode 100644 index 0000000..4e60a75 --- /dev/null +++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml @@ -0,0 +1,56 @@ + + + + RenderNodeTag_Knees + + + + AnimationProp_Knees + + Knees + Rimworld_Animations.PawnRenderNode_BodyTypeVariants + Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants + RenderNodeTag_Knees + False + Root + + Head + True + Skin + 95 + +
  • + Female + TexPathVariants_Knees +
  • +
    +
    +
    + + + RenderNodeTag_Arms + + + + AnimationProp_Arms + + Arms + Rimworld_Animations.PawnRenderNode_BodyTypeVariants + Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants + RenderNodeTag_Knees + False + Root + True + Skin + + Body + -1 + +
  • + Female + TexPathVariants_Arms +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml index 6be826f..ea2061e 100644 --- a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml +++ b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml @@ -10,16 +10,16 @@
  • 3 -
  • TestAnimation1
  • -
  • TestAnimation2
  • +
  • TestAnimation3
  • +
  • TestAnimation3
  • 1 -
  • TestAnimation1
  • -
  • TestAnimation2
  • +
  • TestAnimation3
  • +
  • TestAnimation3
  • @@ -49,7 +49,6 @@
  • Sex_Reverse_Anal
  • Sex_Reverse_Vaginal
  • - diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml new file mode 100644 index 0000000..d582b7b --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml @@ -0,0 +1,10 @@ + + + + TexPathVariants_Arms + +
  • AnimationProps/Doggystyle/Doggy_Arms
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml new file mode 100644 index 0000000..5f368ee --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml @@ -0,0 +1,10 @@ + + + + TexPathVariants_Knees + +
  • AnimationProps/Doggystyle/Doggy_Legs
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs index a7c6973..46951c6 100644 --- a/1.5/Source/Comps/CompExtendedAnimator.cs +++ b/1.5/Source/Comps/CompExtendedAnimator.cs @@ -196,10 +196,6 @@ namespace Rimworld_Animations { { PawnRenderNodeProperties props = animationProp.animPropProperties; - if (props.texPath.NullOrEmpty()) - { - props.texPath = "AnimationProps/Banana/Banana"; - } //create new render node PawnRenderNode animRenderNode = (PawnRenderNode)Activator.CreateInstance(props.nodeClass, new object[] { diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs index e464028..3ba2def 100644 --- a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -82,8 +82,23 @@ namespace Rimworld_Animations { public static void Prefix(ref JobDriver_SexBaseInitiator __instance) { - + //stop pawn animating AnimationUtility.StopGroupAnimation(__instance.pawn); + + //stop partner animating + if (__instance.Partner is Pawn partner) + { + AnimationUtility.StopGroupAnimation(partner); + } + + //stop partner's other partners (threesome pawns) animating + if (__instance.Partner.jobs.curDriver is JobDriver_SexBaseReciever partnerReceiverJob) + { + foreach(Pawn pawn in partnerReceiverJob.parteners) + { + if (pawn != null) AnimationUtility.StopGroupAnimation(pawn); + } + } } } } diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs index e0b115d..703bdcc 100644 --- a/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs +++ b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs @@ -12,6 +12,10 @@ namespace Rimworld_Animations [HarmonyPatch(typeof(JobDriver_SexBaseRecieverRaped), "MakeNewToils")] public class HarmonyPatch_JobDriver_SexBaseReceiverRaped { + /* + * Doesn't work; ienumerables are read-only, can't modify toil + * would need to harmonypatch; stopped partner animating in sexbaseinitiator instead + * public static void Postfix(JobDriver_SexBaseRecieverRaped __instance, ref IEnumerable __result) { //added for sudden end of jobdriver @@ -19,5 +23,7 @@ namespace Rimworld_Animations AnimationUtility.StopGroupAnimation(__instance.pawn); }); } + + */ } } diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..bc21421 --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs @@ -0,0 +1,27 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_BodyTypeVariants : PawnRenderNodeProperties_GraphicVariants + { + + public List bodyTypeVariantsDef; + + } + + public class TexPathVariants_BodyType + { + + public BodyTypeDef bodyType; + public TexPathVariantsDef texPathVariantsDef; + + } + + +} diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..ad745b8 --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeWorker_BodyTypeVariants : PawnRenderNodeWorker_GraphicVariants + { + //same functionality as graphicvariants worker + //just here for readability + + } +} diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..6164782 --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs @@ -0,0 +1,58 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNode_BodyTypeVariants : PawnRenderNode_GraphicVariants + { + + protected new PawnRenderNodeProperties_BodyTypeVariants props; + + public PawnRenderNode_BodyTypeVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) + { + + this.props = (PawnRenderNodeProperties_BodyTypeVariants)props; + + } + + protected override Dictionary GraphicVariantsFor(Pawn pawn) + { + + if (props.bodyTypeVariantsDef == null) + { + Log.ErrorOnce("[Anims] Error: Tried to use BodyTypeVariants node, but bodyTypeVariants weren't given", 211341349); + return null; + } + + //for each different hediff-based texpathvariants, + foreach (TexPathVariants_BodyType texPathVariant_BodyType in props.bodyTypeVariantsDef) + { + if (pawn.story.bodyType == texPathVariant_BodyType.bodyType) + { + //return that specific variant + return GenerateVariants(pawn, texPathVariant_BodyType.texPathVariantsDef); + + } + + } + + //otherwise just use default + return base.GraphicVariantsFor(pawn); + + } + + protected override void EnsureMaterialsInitialized() + { + variants = GraphicVariantsFor(this.tree.pawn); + base.EnsureMaterialsInitialized(); + } + + + } + +} diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs index 8d78dca..e73b1cc 100644 --- a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs @@ -23,6 +23,12 @@ namespace Rimworld_Animations protected override Dictionary GraphicVariantsFor(Pawn pawn) { + if (props.hediffVariants == null) + { + Log.ErrorOnce("[Anims] Error: Tried to use GraphicHediffVariants node, but hediffVariants weren't given", 231321349); + return null; + } + //for each different hediff-based texpathvariants, foreach (TexPathVariants_Hediff texPathVariant_Hediff in props.hediffVariants) { diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs index da96fe5..9c3cf91 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs @@ -40,6 +40,7 @@ namespace Rimworld_Animations && extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick) != null) { Material materialVariant = GetMaterialVariant(nodeWithGraphicVariants, parms, (int)extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick)); + if (materialVariant != null) { return materialVariant; } @@ -52,11 +53,11 @@ namespace Rimworld_Animations public virtual Material GetMaterialVariant(PawnRenderNode_GraphicVariants node, PawnDrawParms parms, int variant) { - Material material = node.getGraphicVariant(variant).NodeGetMat(parms); + Material material = node.getGraphicVariant(variant)?.NodeGetMat(parms); if (material == null) return null; - if (material != null && !parms.Portrait && parms.flags.FlagSet(PawnRenderFlags.Invisible)) + if (!parms.Portrait && parms.flags.FlagSet(PawnRenderFlags.Invisible)) { material = InvisibilityMatPool.GetInvisibleMat(material); } diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs index 24a74d6..da09317 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs @@ -16,9 +16,8 @@ namespace Rimworld_Animations public Graphic getGraphicVariant(int variant) { - if (!variants.ContainsKey(variant)) + if (variants == null || !variants.ContainsKey(variant)) { - Log.ErrorOnce("[Anims] Error: tried to get key from variants that doesn't exist; key = " + variant, 2043428111); return null; } @@ -45,17 +44,21 @@ namespace Rimworld_Animations protected virtual Dictionary GraphicVariantsFor(Pawn pawn) { + if (props.texPathVariantsDef == null) + { + return null; + } + return GenerateVariants(pawn, props.texPathVariantsDef); } + //used by all, including base classes, to create texPathVariants for pawn protected Dictionary GenerateVariants(Pawn pawn, TexPathVariantsDef texPathVariants) { Dictionary variantGraphics = new Dictionary(); - if (texPathVariants == null) return variantGraphics; - //for each graphic variant for (int i = 0; i < texPathVariants.variants.Count; i++) { diff --git a/1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png b/1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf9622ccdc6fc8ab489e28ec141a6aa6f1beb3b GIT binary patch literal 2554 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 U&`ug0{L2Dp-!;&{-nM)EKXe?J>;M1& literal 0 HcmV?d00001 diff --git a/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml new file mode 100644 index 0000000..01c1efe --- /dev/null +++ b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml @@ -0,0 +1,22 @@ + + + + + RJW Animation Settings + 启用声音覆盖 + 控制生殖器旋转 + 启用高潮颤抖 + 启用强奸颤动 + 性爱时启用心形 + 播放非性行为的动画 (牵手、亲热) + 启用动画管理器选项卡 + 颤抖/颤动强度 (默认为 2): + 调试模式 + + + Animation Manager + 警告--一般情况下,你不想更改人类偏移值,只想更改外星種族偏移值或动物偏移值 + 将偏移值复制到剪贴板 + 将偏移值粘贴到 OffsetDef 中,或在 Discord 中共享 + + \ No newline at end of file diff --git a/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml new file mode 100644 index 0000000..413ee6e --- /dev/null +++ b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml @@ -0,0 +1,22 @@ + + + + + RJW Animation Settings + 啟用聲音覆蓋 + 控制生殖器旋轉 + 啟用高潮顫抖 + 啟用強姦顫動 + 性愛時啟用心形 + 播放非性行為的動畫 (牽手、親熱) + 啟用動畫管理器選項卡 + 顫抖/顫動強度 (預設為 2): + 除錯模式 + + + Animation Manager + 警告--一般情況下,你不想更改人類偏移值,只想更改外星種族偏移值或動物偏移值 + 將偏移值複製到剪貼板 + 將偏移值黏貼到 OffsetDef 中,或在 Discord 中共享 + + \ No newline at end of file diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index a57ed97..70e188e 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -118,6 +118,9 @@ + + + @@ -136,6 +139,8 @@ + + @@ -144,6 +149,8 @@ + + @@ -188,6 +195,8 @@ + +