From 67ff59ed80a222a08a18bdffbe038e2f5eb9121c Mon Sep 17 00:00:00 2001 From: c0ffee Date: Mon, 22 Apr 2024 10:56:34 -0700 Subject: [PATCH] added hediff-based graphic variants --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 32768 -> 34816 bytes 1.5/Defs/AnimationDefs/TestAnimation1.xml | 2 +- .../AnimationPropDefs/AnimationPropDef.xml | 52 -------------- .../AnimationPropDef_Banana.xml | 18 +++++ .../AnimationPropDef_Xray_Inside.xml | 24 +++++++ .../AnimationPropDef_Xray_Penis.xml | 35 +++++++++ .../TexPathVariants_Cat.xml | 11 +++ .../TexPathVariants_XrayPenis_Horse.xml | 13 ++++ .../TexPathVariants_XrayPenis_Human.xml | 13 ++++ .../TexPathVariants_Xray_Inside.xml | 13 ++++ 1.5/Source/Comps/CompExtendedAnimator.cs | 6 ++ .../HarmonyPatch_PawnRenderTree.cs | 12 +++- ...derNodeProperties_GraphicHediffVariants.cs | 26 +++++++ ...nRenderNodeWorker_GraphicHediffVariants.cs | 15 ++++ .../PawnRenderNode_GraphicHediffVariants.cs | 67 ++++++++++++++++++ ...awnRenderNodeProperties_GraphicVariants.cs | 4 +- .../PawnRenderNodeWorker_GraphicVariants.cs | 10 +-- .../PawnRenderNode_GraphicVariants.cs | 19 +++-- 1.5/Source/PawnRenderNode/TexPathVariants.cs | 16 +++++ Rimworld-Animations.csproj | 12 +++- 20 files changed, 301 insertions(+), 67 deletions(-) delete mode 100644 1.5/Defs/AnimationPropDefs/AnimationPropDef.xml create mode 100644 1.5/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml create mode 100644 1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml create mode 100644 1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml create mode 100644 1.5/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml create mode 100644 1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs create mode 100644 1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs create mode 100644 1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs create mode 100644 1.5/Source/PawnRenderNode/TexPathVariants.cs diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 1870329e6330cbc13bf56db1e0583ab1c9d90296..7a6e149485b66daf096fc943249bbbfacac0678b 100644 GIT binary patch delta 15715 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 diff --git a/1.5/Defs/AnimationDefs/TestAnimation1.xml b/1.5/Defs/AnimationDefs/TestAnimation1.xml index caee678..59f4cd2 100644 --- a/1.5/Defs/AnimationDefs/TestAnimation1.xml +++ b/1.5/Defs/AnimationDefs/TestAnimation1.xml @@ -100,7 +100,7 @@
  • - RenderNodeTag_Banana + RenderNodeTag_Xray_Inside Rimworld_Animations.AnimationWorker_KeyframesExtended diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef.xml deleted file mode 100644 index 7815092..0000000 --- a/1.5/Defs/AnimationPropDefs/AnimationPropDef.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - RenderNodeTag_Banana - - - - AnimationProp_Banana - - - - - AnimProp_Banana - Rimworld_Animations.PawnRenderNode_GraphicVariants - Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants - - RenderNodeTag_Banana - Body - AnimationProps/Banana/Banana - - Head - 95 - - -
  • AnimationProps/Cat/Cat1
  • -
  • AnimationProps/Cat/Cat2
  • - - - True - - - - - - RenderNodeTag_Genitals - - - - AnimationProp_Genitals - - - AnimProp_Genitals - false - RenderNodeTag_Genitals - Body - - Head - 95 - - - diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml new file mode 100644 index 0000000..fc1e606 --- /dev/null +++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml @@ -0,0 +1,18 @@ + + + + RenderNodeTag_Banana + + + + AnimationProp_Banana + + Banana + RenderNodeTag_Banana + Body + AnimationProps/Banana/Banana + Head + 95 + + + diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml new file mode 100644 index 0000000..c758775 --- /dev/null +++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml @@ -0,0 +1,24 @@ + + + + + RenderNodeTag_Xray_Inside + + + + AnimationProp_Xray_Inside + + Xray Inside + Rimworld_Animations.PawnRenderNode_GraphicVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants + RenderNodeTag_Xray_Inside + True + Body + + Head + 95 + TexPathVariants_Xray_Inside + + + + diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml new file mode 100644 index 0000000..e0a97c2 --- /dev/null +++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml @@ -0,0 +1,35 @@ + + + + RenderNodeTag_Xray_Penis + + + AnimationProp_Penis + + Xray Penis + Rimworld_Animations.PawnRenderNode_GraphicHediffVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicHediffVariants + RenderNodeTag_Xray_Penis + Body + AnimationProps/Banana/Banana + + Head + 95 + True + + + TexPathVariants_XrayPenis_Human + + + +
  • + +
  • HorsePenis
  • +
  • RaccoonPenis
  • + + TexPathVariants_XrayPenis_Horse + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml new file mode 100644 index 0000000..474aca4 --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml @@ -0,0 +1,11 @@ + + + + TexPathVariants_Cat + +
  • AnimationProps/Cat/Cat1
  • +
  • AnimationProps/Cat/Cat2
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml new file mode 100644 index 0000000..3b14154 --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_XrayPenis_Horse + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml new file mode 100644 index 0000000..235ee3e --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_XrayPenis_Human + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml new file mode 100644 index 0000000..4c9f90b --- /dev/null +++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_Xray_Inside + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs index a85a5fc..13cd1d3 100644 --- a/1.5/Source/Comps/CompExtendedAnimator.cs +++ b/1.5/Source/Comps/CompExtendedAnimator.cs @@ -153,6 +153,12 @@ namespace Rimworld_Animations { { PawnRenderNodeProperties props = animationProp.animPropProperties; + Log.Message("Texpath of prop:" + props.texPath); + if (props.texPath.NullOrEmpty()) + { + Log.Message("Setting default texture"); + 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/RimworldPatches/HarmonyPatch_PawnRenderTree.cs b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs index 621b881..b79853f 100644 --- a/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs +++ b/1.5/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs @@ -38,9 +38,19 @@ namespace Rimworld_Animations * Set Render Node to absolute position */ if (node.Props is PawnRenderNodeProperties_GraphicVariants graphicVariantProp - && graphicVariantProp.absolutePosition) + && graphicVariantProp.absoluteTransform) { matrix = parms.matrix; + + //absolute transform -- just use the node's transform, not its ancestors + node.GetTransform(parms, out Vector3 offset, out Vector3 pivot, out Quaternion quaternion, out Vector3 scale); + + if (offset != Vector3.zero) matrix *= Matrix4x4.Translate(offset); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(pivot); + if (quaternion != Quaternion.identity) matrix *= Matrix4x4.Rotate(quaternion); + if (scale != Vector3.one) matrix *= Matrix4x4.Scale(scale); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(scale).inverse; + float num = node.Worker.AltitudeFor(node, parms); if (num != 0f) { diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs new file mode 100644 index 0000000..894c085 --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_GraphicHediffVariants : PawnRenderNodeProperties_GraphicVariants + { + + public List hediffVariants; + + } + + public class TexPathVariants_Hediff + { + + public List hediffs; + public TexPathVariantsDef texPathVariantsDef; + + } + + +} diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs new file mode 100644 index 0000000..24a10dc --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.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_GraphicHediffVariants : PawnRenderNodeWorker_GraphicVariants + { + //same functionality as graphicvariants worker + //just here for readability + + } +} diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs new file mode 100644 index 0000000..8d78dca --- /dev/null +++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNode_GraphicHediffVariants : PawnRenderNode_GraphicVariants + { + + protected new PawnRenderNodeProperties_GraphicHediffVariants props; + private HediffDef curHediff; + + public PawnRenderNode_GraphicHediffVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) + { + + this.props = (PawnRenderNodeProperties_GraphicHediffVariants)props; + + } + + protected override Dictionary GraphicVariantsFor(Pawn pawn) + { + + //for each different hediff-based texpathvariants, + foreach (TexPathVariants_Hediff texPathVariant_Hediff in props.hediffVariants) + { + //for all the hediffs corresponding to that texpathvariant, + foreach (HediffDef hediffDef in texPathVariant_Hediff.hediffs) + { + //if the pawn has that hediff, + if (pawn.health.hediffSet.hediffs.Any((Hediff hediff) => hediff.def == hediffDef)) + { + //return that specific variant + curHediff = hediff.def; + return GenerateVariants(pawn, texPathVariant_Hediff.texPathVariantsDef); + + } + } + + } + + //otherwise just use default + curHediff = null; + return base.GraphicVariantsFor(pawn); + + } + + protected override void EnsureMaterialsInitialized() + { + //if pawn no longer has the hediff, + if (curHediff == null || + (this.tree.pawn.health?.hediffSet?.hediffs is List hediffs + && hediffs.Any((Hediff hediff) => hediff.def == curHediff))) + { + //redo graphicvariantsfor + variants = GraphicVariantsFor(this.tree.pawn); + } + + base.EnsureMaterialsInitialized(); + } + + + } + +} diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs index b1a8720..15ac022 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs @@ -10,8 +10,8 @@ namespace Rimworld_Animations public class PawnRenderNodeProperties_GraphicVariants : PawnRenderNodeProperties { - public List texPathVariants; - public bool absolutePosition = false; + public TexPathVariantsDef texPathVariantsDef; + public bool absoluteTransform = false; } } diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs index 15b5a92..50a8caa 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs @@ -30,14 +30,14 @@ namespace Rimworld_Animations //if node is animating, and is a graphic variant type of node if ((node.AnimationWorker is AnimationWorker_KeyframesExtended extendedAnimWorker) + + //and node is one with graphic variants && (node is PawnRenderNode_GraphicVariants nodeWithGraphicVariants) + + //and texpathvariant is set && extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick) != null) { - //if node has a graphic variant, - int variant = (int)extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick); - - //return the variant - return GetMaterialVariant(nodeWithGraphicVariants, parms, variant); + return GetMaterialVariant(nodeWithGraphicVariants, parms, (int)extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick)); } //otherwise return original texture diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs index fa46ce7..64eb815 100644 --- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs +++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs @@ -11,8 +11,8 @@ namespace Rimworld_Animations public class PawnRenderNode_GraphicVariants : PawnRenderNode { - private new PawnRenderNodeProperties_GraphicVariants props; - private Dictionary variants; + protected new PawnRenderNodeProperties_GraphicVariants props; + protected Dictionary variants; public Graphic getGraphicVariant(int variant) { @@ -38,14 +38,22 @@ namespace Rimworld_Animations protected virtual Dictionary GraphicVariantsFor(Pawn pawn) { + + return GenerateVariants(pawn, props.texPathVariantsDef); + + } + + protected Dictionary GenerateVariants(Pawn pawn, TexPathVariantsDef texPathVariants) + { + Dictionary variantGraphics = new Dictionary(); - Shader shader = this.ShaderFor(pawn); //for each graphic variant - for (int i = 0; i < props.texPathVariants.Count; i++) + for (int i = 0; i < texPathVariants.variants.Count; i++) { + //get new graphic - Graphic variant = GraphicDatabase.Get(props.texPathVariants[i], shader, Vector2.one, this.ColorFor(pawn)); + Graphic variant = GraphicDatabase.Get(texPathVariants.variants[i], this.ShaderFor(pawn), Vector2.one, this.ColorFor(pawn)); //add it to the variants dictionary; i + 1 for easier readability in logs variantGraphics.Add(i + 1, variant); @@ -53,6 +61,7 @@ namespace Rimworld_Animations } return variantGraphics; + } diff --git a/1.5/Source/PawnRenderNode/TexPathVariants.cs b/1.5/Source/PawnRenderNode/TexPathVariants.cs new file mode 100644 index 0000000..d741756 --- /dev/null +++ b/1.5/Source/PawnRenderNode/TexPathVariants.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class TexPathVariantsDef : Def + { + + public List variants; + + } +} diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index e676bbd..2ab9ff6 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -112,9 +112,13 @@ + + + + @@ -126,11 +130,17 @@ - + + + + + + +