diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll
index 9ecd083..fa7e05c 100644
Binary files a/1.5/Assemblies/Rimworld-Animations.dll and b/1.5/Assemblies/Rimworld-Animations.dll differ
diff --git a/1.5/Defs/AnimationDefs/TestAnimation1.xml b/1.5/Defs/AnimationDefs/TestAnimation1.xml
index 466bbb4..60362c4 100644
--- a/1.5/Defs/AnimationDefs/TestAnimation1.xml
+++ b/1.5/Defs/AnimationDefs/TestAnimation1.xml
@@ -12,6 +12,7 @@
Rimworld_Animations.AnimationWorker_KeyframesExtended
+ Fuck
30
0
true
diff --git a/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs b/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs
index 1b41241..0b74719 100644
--- a/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs
+++ b/1.5/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs
@@ -22,6 +22,23 @@ namespace Rimworld_Animations
return base.OffsetAtTick(tick, parms);
}
+ public SoundDef soundAtTick(int tick)
+ {
+
+ //Verse.Keyframe keyframe = this.part.keyframes[0];
+ Verse.Keyframe keyframe2 = this.part.keyframes[this.part.keyframes.Count - 1];
+ foreach (Verse.Keyframe keyframe in this.part.keyframes)
+ {
+ if (tick == keyframe.tick)
+ {
+ return (keyframe as ExtendedKeyframe).sound;
+ }
+
+ }
+
+ return null;
+ }
+
//use extendedkeyframes to determine addon facing
diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs
index 463dd3f..ed810fd 100644
--- a/1.5/Source/Comps/CompExtendedAnimator.cs
+++ b/1.5/Source/Comps/CompExtendedAnimator.cs
@@ -93,6 +93,9 @@ namespace Rimworld_Animations {
StopAnimating();
}
}
+
+ CheckAndPlaySounds();
+
}
@@ -198,6 +201,37 @@ namespace Rimworld_Animations {
}
+ public void CheckAndPlaySounds()
+ {
+
+ PawnRenderNode rootNode = pawn.Drawer.renderer.renderTree.rootNode;
+
+ //check if the rootnode has sounds; if so play it
+ if (rootNode.AnimationWorker is AnimationWorker_KeyframesExtended animWorker)
+ {
+ SoundDef sound = animWorker.soundAtTick(rootNode.tree.AnimationTick);
+ if (sound != null)
+ {
+ sound.PlayOneShot(new TargetInfo(pawn.Position, pawn.Map));
+ }
+
+ }
+
+ //do the same for all the child nodes
+ foreach (PawnRenderNode node in rootNode.children)
+ {
+ if (node.AnimationWorker is AnimationWorker_KeyframesExtended childrenAnimWorker)
+ {
+ SoundDef sound = childrenAnimWorker.soundAtTick(node.tree.AnimationTick);
+ if (sound != null)
+ {
+ sound.PlayOneShot(new TargetInfo(pawn.Position, pawn.Map));
+ }
+
+ }
+ }
+ }
+
public bool AnimationMakesUseOfProp(AnimationPropDef animationProp)
{
// never true if not animating; anim props shouldn't be attached