Added dynamic prop rendering system to extendedanimator
rendernodes dynamically attach and remove per animation configure props in AnimationPropDef
This commit is contained in:
parent
0de9346eac
commit
9621dc2841
Binary file not shown.
|
@ -98,6 +98,35 @@
|
||||||
</keyframes>
|
</keyframes>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<key>RenderNodeTag_Banana</key>
|
||||||
|
<value>
|
||||||
|
<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
|
||||||
|
<keyframes>
|
||||||
|
<li Class="Rimworld_Animations.ExtendedKeyframe">
|
||||||
|
<tick>30</tick>
|
||||||
|
<angle>0</angle>
|
||||||
|
<visible>true</visible>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.ExtendedKeyframe">
|
||||||
|
<tick>100</tick>
|
||||||
|
<angle>0</angle>
|
||||||
|
<visible>false</visible>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.ExtendedKeyframe">
|
||||||
|
<tick>200</tick>
|
||||||
|
<angle>0</angle>
|
||||||
|
<visible>true</visible>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.ExtendedKeyframe">
|
||||||
|
<tick>300</tick>
|
||||||
|
<angle>0</angle>
|
||||||
|
<visible>true</visible>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</value>
|
||||||
|
</li>
|
||||||
</animationParts>
|
</animationParts>
|
||||||
</AnimationDef>
|
</AnimationDef>
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<PawnRenderNodeTagDef>
|
||||||
|
<defName>RenderNodeTag_Banana</defName>
|
||||||
|
</PawnRenderNodeTagDef>
|
||||||
|
|
||||||
|
<Rimworld_Animations.AnimationPropDef>
|
||||||
|
<defName>AnimationProp_Banana</defName>
|
||||||
|
|
||||||
|
<!-- Note: props always return graphic_multi; set cardinal textures to blank and only north in anim if only one tex-->
|
||||||
|
<!-- or draw east, south, and west directions, use them in animations? -->
|
||||||
|
<animPropProperties>
|
||||||
|
<debugLabel>AnimProp_Banana</debugLabel>
|
||||||
|
<workerClass>Rimworld_Animations.PawnRenderNodeWorker_AnimationProp</workerClass>
|
||||||
|
<tagDef>RenderNodeTag_Banana</tagDef>
|
||||||
|
<parentTagDef>Body</parentTagDef>
|
||||||
|
<texPath>AnimationProps/Banana/Banana</texPath>
|
||||||
|
<!-- for height -->
|
||||||
|
<overlayLayer>Head</overlayLayer>
|
||||||
|
<baseLayer>95</baseLayer>
|
||||||
|
|
||||||
|
</animPropProperties>
|
||||||
|
</Rimworld_Animations.AnimationPropDef>
|
||||||
|
</Defs>
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<Defs>
|
|
||||||
<Rimworld_Animations.AnimationPropDef>
|
|
||||||
<tagDef>Root</tagDef>
|
|
||||||
<renderNode>
|
|
||||||
<debugLabel>Hand</debugLabel>
|
|
||||||
<nodeClass>PawnRenderNode</nodeClass>
|
|
||||||
<graphic>P</graphic>
|
|
||||||
</renderNode>
|
|
||||||
</Rimworld_Animations.AnimationPropDef>
|
|
||||||
</Defs>
|
|
|
@ -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 AnimationPropDef : Def
|
||||||
|
{
|
||||||
|
|
||||||
|
public PawnRenderNodeProperties animPropProperties;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -124,9 +124,57 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CheckRecacheNecessary(int anim)
|
public override List<PawnRenderNode> CompRenderNodes()
|
||||||
{
|
{
|
||||||
|
//only if pawn is animating for performance
|
||||||
|
if (IsAnimating)
|
||||||
|
{
|
||||||
|
List<PawnRenderNode> animRenderNodes = new List<PawnRenderNode>();
|
||||||
|
|
||||||
|
// for all animationpropdefs,
|
||||||
|
foreach (AnimationPropDef animationProp in DefDatabase<AnimationPropDef>.AllDefsListForReading)
|
||||||
|
{
|
||||||
|
//if animation makes use of prop,
|
||||||
|
if (AnimationMakesUseOfProp(animationProp))
|
||||||
|
{
|
||||||
|
//create new render node
|
||||||
|
PawnRenderNode animRenderNode = new PawnRenderNode(pawn, animationProp.animPropProperties, pawn.Drawer.renderer.renderTree);
|
||||||
|
animRenderNodes.Add(animRenderNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//return list of rendernodes that should animate
|
||||||
|
return animRenderNodes;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AnimationMakesUseOfProp(AnimationPropDef animationProp)
|
||||||
|
{
|
||||||
|
// never true if not animating; anim props shouldn't be attached
|
||||||
|
if (!IsAnimating) return false;
|
||||||
|
|
||||||
|
//for all queued animations,
|
||||||
|
foreach (AnimationDef animation in animationQueue)
|
||||||
|
{
|
||||||
|
// for each prop tag in the currently playing animation,
|
||||||
|
foreach (PawnRenderNodeTagDef propTag in animation.animationParts.Keys)
|
||||||
|
{
|
||||||
|
// if that proptag is the same as the one for animationProp,
|
||||||
|
if (propTag == animationProp.animPropProperties.tagDef)
|
||||||
|
{
|
||||||
|
//that prop is being used in the animation
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pawn pawn => base.parent as Pawn;
|
private Pawn pawn => base.parent as Pawn;
|
||||||
|
|
|
@ -10,8 +10,7 @@ namespace Rimworld_Animations
|
||||||
{
|
{
|
||||||
public class ExtendedKeyframe : Verse.Keyframe
|
public class ExtendedKeyframe : Verse.Keyframe
|
||||||
{
|
{
|
||||||
|
public Rot4 rotation = Rot4.North;
|
||||||
public Rot4 rotation;
|
|
||||||
public SoundDef sound = null;
|
public SoundDef sound = null;
|
||||||
public bool visible = true;
|
public bool visible = true;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,9 @@ using Verse;
|
||||||
|
|
||||||
namespace Rimworld_Animations
|
namespace Rimworld_Animations
|
||||||
{
|
{
|
||||||
//Head Rotation Code - Textures
|
// Head Rotation Code - Textures
|
||||||
|
// it's fine to just edit each AppendRequests individually
|
||||||
|
// because they all the parms are passed down to each child node recursively
|
||||||
[HarmonyPatch(typeof(PawnRenderNode), "AppendRequests")]
|
[HarmonyPatch(typeof(PawnRenderNode), "AppendRequests")]
|
||||||
public static class HarmonyPatch_PawnRenderNode
|
public static class HarmonyPatch_PawnRenderNode
|
||||||
{
|
{
|
||||||
|
@ -28,7 +30,9 @@ namespace Rimworld_Animations
|
||||||
//replace maybe?
|
//replace maybe?
|
||||||
|
|
||||||
//cheaper call now comparing prev tick to cur tick
|
//cheaper call now comparing prev tick to cur tick
|
||||||
return extendedAnimWorker.visibleAtTick(__instance.tree.AnimationTick);
|
|
||||||
|
//not necessary because of new rendernodeworker hiding props now
|
||||||
|
//return extendedAnimWorker.visibleAtTick(__instance.tree.AnimationTick);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace Rimworld_Animations
|
||||||
|
{
|
||||||
|
public class PawnRenderNodeWorker_AnimationProp : PawnRenderNodeWorker
|
||||||
|
{
|
||||||
|
public override bool CanDrawNow(PawnRenderNode node, PawnDrawParms parms)
|
||||||
|
{
|
||||||
|
if (node.AnimationWorker is AnimationWorker_KeyframesExtended propAnimator)
|
||||||
|
{
|
||||||
|
return propAnimator.visibleAtTick(node.tree.AnimationTick);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
|
@ -72,6 +72,7 @@
|
||||||
<Compile Include="1.5\Source\Actors\Actor.cs" />
|
<Compile Include="1.5\Source\Actors\Actor.cs" />
|
||||||
<Compile Include="1.5\Source\Actors\AlienRaceOffset.cs" />
|
<Compile Include="1.5\Source\Actors\AlienRaceOffset.cs" />
|
||||||
<Compile Include="1.5\Source\Actors\BodyTypeOffset.cs" />
|
<Compile Include="1.5\Source\Actors\BodyTypeOffset.cs" />
|
||||||
|
<Compile Include="1.5\Source\AnimationProps\AnimationPropDef.cs" />
|
||||||
<Compile Include="1.5\Source\AnimationWorkers\AnimationWorker_KeyframesExtended.cs" />
|
<Compile Include="1.5\Source\AnimationWorkers\AnimationWorker_KeyframesExtended.cs" />
|
||||||
<Compile Include="1.5\Source\Comps\CompExtendedAnimator.cs" />
|
<Compile Include="1.5\Source\Comps\CompExtendedAnimator.cs" />
|
||||||
<Compile Include="1.5\Source\Comps\CompProperties_ExtendedAnimator.cs" />
|
<Compile Include="1.5\Source\Comps\CompProperties_ExtendedAnimator.cs" />
|
||||||
|
@ -105,6 +106,7 @@
|
||||||
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
|
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
|
||||||
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs" />
|
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs" />
|
||||||
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs" />
|
<Compile Include="1.5\Source\Patches\RJWPatches\JobDrivers\SexBaseReceivers\HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs" />
|
||||||
|
<Compile Include="1.5\Source\PawnRenderNode\PawnRenderNodeWorker_AnimationProp.cs" />
|
||||||
<Compile Include="1.5\Source\Settings\AnimationSettings.cs" />
|
<Compile Include="1.5\Source\Settings\AnimationSettings.cs" />
|
||||||
<Compile Include="1.5\Source\Utilities\AnimationUtility.cs" />
|
<Compile Include="1.5\Source\Utilities\AnimationUtility.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
@ -115,11 +117,11 @@
|
||||||
<Content Include="1.5\Assemblies\RJW.dll" />
|
<Content Include="1.5\Assemblies\RJW.dll" />
|
||||||
<Content Include="1.5\Defs\AnimationDefs\TestAnimation1.xml" />
|
<Content Include="1.5\Defs\AnimationDefs\TestAnimation1.xml" />
|
||||||
<Content Include="1.5\Defs\AnimationDefs\TestAnimation2.xml" />
|
<Content Include="1.5\Defs\AnimationDefs\TestAnimation2.xml" />
|
||||||
|
<Content Include="1.5\Defs\AnimationPropDefs\AnimationPropDef.xml" />
|
||||||
<Content Include="1.5\Defs\GroupAnimationDefs\TestGroupAnimation1.xml" />
|
<Content Include="1.5\Defs\GroupAnimationDefs\TestGroupAnimation1.xml" />
|
||||||
<Content Include="1.5\Defs\MainTabDefs\MainButtonDef.xml" />
|
<Content Include="1.5\Defs\MainTabDefs\MainButtonDef.xml" />
|
||||||
<Content Include="1.5\Defs\OffsetDefs\OffsetDef_GroinToAppropriateHeight.xml" />
|
<Content Include="1.5\Defs\OffsetDefs\OffsetDef_GroinToAppropriateHeight.xml" />
|
||||||
<Content Include="1.5\Defs\SoundDefs\Sounds_Sex.xml" />
|
<Content Include="1.5\Defs\SoundDefs\Sounds_Sex.xml" />
|
||||||
<Content Include="1.5\Defs\XMLFile1.xml" />
|
|
||||||
<Content Include="1.5\Patches\AnimationPatchHSK.xml" />
|
<Content Include="1.5\Patches\AnimationPatchHSK.xml" />
|
||||||
<Content Include="1.5\Patches\AnimationPatch_CompExtendedAnimator.xml" />
|
<Content Include="1.5\Patches\AnimationPatch_CompExtendedAnimator.xml" />
|
||||||
<Content Include="1.5\Patches\CompatibilityPatch_FacialAnimation.xml" />
|
<Content Include="1.5\Patches\CompatibilityPatch_FacialAnimation.xml" />
|
||||||
|
@ -156,6 +158,10 @@
|
||||||
<Content Include="1.5\Sounds\Sex\Suck\Swallow_1.wav" />
|
<Content Include="1.5\Sounds\Sex\Suck\Swallow_1.wav" />
|
||||||
<Content Include="1.5\Sounds\Sex\Suck\Swallow_2.wav" />
|
<Content Include="1.5\Sounds\Sex\Suck\Swallow_2.wav" />
|
||||||
<Content Include="1.5\Sounds\Sex\Suck\Swallow_3.wav" />
|
<Content Include="1.5\Sounds\Sex\Suck\Swallow_3.wav" />
|
||||||
|
<Content Include="1.5\Textures\AnimationProps\Banana\Banana_east.png" />
|
||||||
|
<Content Include="1.5\Textures\AnimationProps\Banana\Banana_north.png" />
|
||||||
|
<Content Include="1.5\Textures\AnimationProps\Banana\Banana_south.png" />
|
||||||
|
<Content Include="1.5\Textures\AnimationProps\Banana\Banana_west.png" />
|
||||||
<Content Include="1.5\Textures\UI\MainTab.png" />
|
<Content Include="1.5\Textures\UI\MainTab.png" />
|
||||||
<Content Include="About\About.xml" />
|
<Content Include="About\About.xml" />
|
||||||
<Content Include="About\Manifest.xml" />
|
<Content Include="About\Manifest.xml" />
|
||||||
|
|
Loading…
Reference in New Issue