diff --git a/godot/TAS_system/TASable.cs b/godot/TAS_system/TASable.cs index e22da6d..435336b 100644 --- a/godot/TAS_system/TASable.cs +++ b/godot/TAS_system/TASable.cs @@ -12,18 +12,24 @@ public partial class TASable : Node get { return this._assignedRigidBody3D; } } - + // Frame data public Dictionary framePositions = new Dictionary(); + public Dictionary frameLinearVelocities = new Dictionary(); + public Dictionary frameAngularVelocities = new Dictionary(); public virtual void SaveState(int frame) { this.framePositions[frame] = this.AssignedRigidBody3D.Position; + this.frameLinearVelocities[frame] = this.AssignedRigidBody3D.LinearVelocity; + this.frameAngularVelocities[frame] = this.AssignedRigidBody3D.AngularVelocity; } public virtual void LoadState(int frame) { this.AssignedRigidBody3D.Position = this.framePositions[frame]; + this.AssignedRigidBody3D.LinearVelocity = this.frameLinearVelocities[frame]; + this.AssignedRigidBody3D.AngularVelocity = this.frameAngularVelocities[frame]; } @@ -36,6 +42,7 @@ public partial class TASable : Node TAS.FramesRegressed += this.OnFramesRegressed; TAS.StartedIncrementing += this.OnStartedIncrementing; TAS.StoppedIncrementing += this.OnStoppedIncrementing; + TAS.FramesReset += this.OnFramesReset; this.SaveState(0); } @@ -67,4 +74,9 @@ public partial class TASable : Node { this.AssignedRigidBody3D.Freeze = true; } + + public virtual void OnFramesReset() + { + this.SaveState(0); + } }