Added regression and advancement to TASable
This commit is contained in:
		
							parent
							
								
									b3259e9585
								
							
						
					
					
						commit
						5f6e7a3e8e
					
				
					 9 changed files with 139 additions and 29 deletions
				
			
		|  | @ -1,4 +1,4 @@ | ||||||
| <Project Sdk="Godot.NET.Sdk/4.1.3"> | <Project Sdk="Godot.NET.Sdk/4.1.1"> | ||||||
|   <PropertyGroup> |   <PropertyGroup> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net6.0</TargetFramework> | ||||||
|     <EnableDynamicLoading>true</EnableDynamicLoading> |     <EnableDynamicLoading>true</EnableDynamicLoading> | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								godot/Hurrmmm.csproj.old
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								godot/Hurrmmm.csproj.old
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | <Project Sdk="Godot.NET.Sdk/4.1.3"> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <TargetFramework>net6.0</TargetFramework> | ||||||
|  |     <EnableDynamicLoading>true</EnableDynamicLoading> | ||||||
|  |   </PropertyGroup> | ||||||
|  | </Project> | ||||||
|  | @ -64,21 +64,33 @@ public partial class TAS_System : Node | ||||||
|     [Signal] |     [Signal] | ||||||
|     public delegate void FramesRegressedEventHandler(int startFrame, int endFrame); |     public delegate void FramesRegressedEventHandler(int startFrame, int endFrame); | ||||||
| 
 | 
 | ||||||
|  |     [Signal] | ||||||
|  |     public delegate void StartedIncrementingEventHandler(); | ||||||
|  | 
 | ||||||
|  |     [Signal] | ||||||
|  |     public delegate void StoppedIncrementingEventHandler(); | ||||||
|  | 
 | ||||||
|  |     [Signal] | ||||||
|  |     public delegate void FramesResetEventHandler(); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     public void StartIncrementingFrames() |     public void StartIncrementingFrames() | ||||||
|     { |     { | ||||||
|         this.IsIncrementingFrames = true; |         this.IsIncrementingFrames = true; | ||||||
|  |         EmitSignal(SignalName.StartedIncrementing); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void StopIncrementingFrames() |     public void StopIncrementingFrames() | ||||||
|     { |     { | ||||||
|         this.IsIncrementingFrames = false; |         this.IsIncrementingFrames = false; | ||||||
|  |         EmitSignal(SignalName.StoppedIncrementing); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void ResetFrameCount() |     public void ResetFrameCount() | ||||||
|     { |     { | ||||||
|         this.CurrentFrame = 0; |         this.CurrentFrame = 0; | ||||||
|         this.LastAdvancedFrame = 0; |         this.LastAdvancedFrame = 0; | ||||||
|  |         EmitSignal(SignalName.FramesReset); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Returns how many frames it could successfully advance |     // Returns how many frames it could successfully advance | ||||||
|  | @ -122,14 +134,15 @@ public partial class TAS_System : Node | ||||||
|                 this.TimeSinceLastFrame = 0 + (this.TimeSinceLastFrame - this.FrameLength); |                 this.TimeSinceLastFrame = 0 + (this.TimeSinceLastFrame - this.FrameLength); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         // GD.Print(CurrentFrame); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // public void Test() |  | ||||||
|     // { |  | ||||||
|     //     GD.Print("test123"); |  | ||||||
| 
 | 
 | ||||||
|     //     // EmitSignal(SignalName.TestSignal, "test456"); | 
 | ||||||
|     // } | 
 | ||||||
|  |     public override void _Ready() | ||||||
|  | 	{ | ||||||
|  |         this.FrameLength = 0.1; | ||||||
|  | 		this.StartIncrementingFrames(); | ||||||
|  |          | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,33 +1,70 @@ | ||||||
| using Godot; | using Godot; | ||||||
| using System; | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
| using System.Globalization; | using System.Globalization; | ||||||
| 
 | 
 | ||||||
| public partial class TASable : Node | public partial class TASable : Node | ||||||
| { | { | ||||||
|     Node3D _parent; |     [Export] RigidBody3D _assignedRigidBody3D; | ||||||
|  | 
 | ||||||
|  |     public RigidBody3D AssignedRigidBody3D | ||||||
|  |     { | ||||||
|  |         get { return this._assignedRigidBody3D; } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public Dictionary<int, Vector3> framePositions = new Dictionary<int, Vector3>(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public virtual void SaveState(int frame) | ||||||
|  |     { | ||||||
|  |         this.framePositions[frame] = this.AssignedRigidBody3D.Position; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public virtual void LoadState(int frame) | ||||||
|  |     { | ||||||
|  |         this.AssignedRigidBody3D.Position = this.framePositions[frame]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     public override void _Ready() |     public override void _Ready() | ||||||
|     { |     { | ||||||
|         this._parent = this.GetParent<Node3D>(); |  | ||||||
|         TAS_System TAS = GetNode<TAS_System>("/root/TAS_System"); |         TAS_System TAS = GetNode<TAS_System>("/root/TAS_System"); | ||||||
| 
 | 
 | ||||||
|         TAS.FrameIncremented += this.OnFrameIncremented; |         TAS.FrameIncremented += this.OnFrameIncremented; | ||||||
|         TAS.FramesAdvanced += this.OnFramesAdvanced; |         TAS.FramesAdvanced += this.OnFramesAdvanced; | ||||||
|         TAS.FramesRegressed += this.OnFramesRegressed; |         TAS.FramesRegressed += this.OnFramesRegressed; | ||||||
|  |         TAS.StartedIncrementing += this.OnStartedIncrementing; | ||||||
|  |         TAS.StoppedIncrementing += this.OnStoppedIncrementing; | ||||||
|  | 
 | ||||||
|  |         this.SaveState(0); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public virtual void OnFrameIncremented(int newFrame) |     public virtual void OnFrameIncremented(int newFrame) | ||||||
|     { |     { | ||||||
|         GD.Print($"Frame advanced to {newFrame}, called from node {_parent.Name}"); |         this.SaveState(newFrame); | ||||||
|  |         GD.Print($"Frame advanced to {newFrame}, called from node {this.AssignedRigidBody3D.Name}"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public virtual void OnFramesAdvanced(int startFrame, int endFrame) |     public virtual void OnFramesAdvanced(int startFrame, int endFrame) | ||||||
|     { |     { | ||||||
|         GD.Print($"Frames advanced from {startFrame} to {endFrame}, called from node {_parent.Name}"); |         this.LoadState(endFrame); | ||||||
|  |         GD.Print($"Frames advanced from {startFrame} to {endFrame}, called from node {this.AssignedRigidBody3D.Name}"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public virtual void OnFramesRegressed(int startFrame, int endFrame) |     public virtual void OnFramesRegressed(int startFrame, int endFrame) | ||||||
|     { |     { | ||||||
|         GD.Print($"Frames regressed from {startFrame} to {endFrame}, called from node {_parent.Name}"); |         this.LoadState(endFrame); | ||||||
|  |         GD.Print($"Frames regressed from {startFrame} to {endFrame}, called from node {this.AssignedRigidBody3D.Name}"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public virtual void OnStartedIncrementing() | ||||||
|  |     { | ||||||
|  |         this.AssignedRigidBody3D.Freeze = false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public virtual void OnStoppedIncrementing() | ||||||
|  |     { | ||||||
|  |         this.AssignedRigidBody3D.Freeze = true; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,10 +3,12 @@ using System; | ||||||
| 
 | 
 | ||||||
| public partial class RegressButton : Button | public partial class RegressButton : Button | ||||||
| { | { | ||||||
|  | 	TAS_System TAS; | ||||||
|  | 
 | ||||||
| 	// Called when the node enters the scene tree for the first time. | 	// Called when the node enters the scene tree for the first time. | ||||||
| 	public override void _Ready() | 	public override void _Ready() | ||||||
| 	{ | 	{ | ||||||
| 		TAS_System TAS = GetNode<TAS_System>("/root/TAS_System"); | 		TAS = GetNode<TAS_System>("/root/TAS_System"); | ||||||
| 		this.Pressed += () => { TAS.Regress(1); }; | 		this.Pressed += () => { TAS.Regress(1); }; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -14,4 +16,17 @@ public partial class RegressButton : Button | ||||||
|     { |     { | ||||||
|         this.Text = $"Current frame: {newFrame}"; |         this.Text = $"Current frame: {newFrame}"; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 	// Called every frame. 'delta' is the elapsed time since the previous frame. | ||||||
|  | 	public override void _Process(double delta) | ||||||
|  | 	{ | ||||||
|  | 		if (TAS.CurrentFrame == 0) | ||||||
|  | 		{ | ||||||
|  | 			this.Disabled = true; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			this.Disabled = false; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ anchor_right = 1.0 | ||||||
| anchor_bottom = 1.0 | anchor_bottom = 1.0 | ||||||
| grow_horizontal = 2 | grow_horizontal = 2 | ||||||
| grow_vertical = 2 | grow_vertical = 2 | ||||||
|  | mouse_filter = 2 | ||||||
| 
 | 
 | ||||||
| [node name="DEBUG" type="Control" parent="."] | [node name="DEBUG" type="Control" parent="."] | ||||||
| layout_mode = 1 | layout_mode = 1 | ||||||
|  | @ -22,6 +23,7 @@ anchor_right = 1.0 | ||||||
| anchor_bottom = 1.0 | anchor_bottom = 1.0 | ||||||
| grow_horizontal = 2 | grow_horizontal = 2 | ||||||
| grow_vertical = 2 | grow_vertical = 2 | ||||||
|  | mouse_filter = 2 | ||||||
| 
 | 
 | ||||||
| [node name="Label" type="Label" parent="DEBUG"] | [node name="Label" type="Label" parent="DEBUG"] | ||||||
| layout_mode = 1 | layout_mode = 1 | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ func toggle_mouse_lock(): | ||||||
| func mouse_is_locked(): | func mouse_is_locked(): | ||||||
| 	return Input.mouse_mode == Input.MOUSE_MODE_CAPTURED | 	return Input.mouse_mode == Input.MOUSE_MODE_CAPTURED | ||||||
| 	 | 	 | ||||||
| func _input(event): | func _unhandled_input(event): | ||||||
| 	if event.is_action("charge") and Input.mouse_mode != Input.MOUSE_MODE_CAPTURED: | 	if event.is_action("charge") and Input.mouse_mode != Input.MOUSE_MODE_CAPTURED: | ||||||
| 		lock_mouse() | 		lock_mouse() | ||||||
| 		get_viewport().set_input_as_handled() | 		get_viewport().set_input_as_handled() | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| [gd_scene load_steps=8 format=3 uid="uid://by3rnp88l4plx"] | [gd_scene load_steps=7 format=3 uid="uid://by3rnp88l4plx"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_bo0jp"] | [ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_bo0jp"] | ||||||
| [ext_resource type="PackedScene" uid="uid://cbp8c4kpmr0hk" path="res://control_scheme/is_targetable.tscn" id="2_d7v5s"] |  | ||||||
| [ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="3_0hshv"] | [ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="3_0hshv"] | ||||||
| [ext_resource type="PackedScene" uid="uid://bjhii55pagkb5" path="res://TAS_system/is_TASable.tscn" id="3_srlbt"] | [ext_resource type="PackedScene" uid="uid://bjhii55pagkb5" path="res://TAS_system/is_TASable.tscn" id="3_srlbt"] | ||||||
| [ext_resource type="Script" path="res://tests/TAS_system/TAS_test_001.cs" id="5_0ber1"] | [ext_resource type="Script" path="res://tests/TAS_system/TAS_test_001.cs" id="5_0ber1"] | ||||||
|  | @ -14,26 +13,21 @@ ambient_light_energy = 0.5 | ||||||
| 
 | 
 | ||||||
| [node name="small_room" instance=ExtResource("1_bo0jp")] | [node name="small_room" instance=ExtResource("1_bo0jp")] | ||||||
| 
 | 
 | ||||||
| [node name="is_TASable" parent="table" index="0" instance=ExtResource("3_srlbt")] | [node name="WorldEnvironment" type="WorldEnvironment" parent="." index="1"] | ||||||
| 
 |  | ||||||
| [node name="is_targetable" parent="grape" index="0" node_paths=PackedStringArray("attached_to") instance=ExtResource("2_d7v5s")] |  | ||||||
| attached_to = NodePath("..") |  | ||||||
| 
 |  | ||||||
| [node name="is_TASable" parent="grape" index="1" instance=ExtResource("3_srlbt")] |  | ||||||
| 
 |  | ||||||
| [node name="WorldEnvironment" type="WorldEnvironment" parent="." index="3"] |  | ||||||
| environment = SubResource("Environment_f0m14") | environment = SubResource("Environment_f0m14") | ||||||
| 
 | 
 | ||||||
| [node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"] | [node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"] | ||||||
| transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738) | transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738) | ||||||
| 
 | 
 | ||||||
| [node name="controller" parent="." index="4" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("3_0hshv")] | [node name="controller" parent="." index="2" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("3_0hshv")] | ||||||
| camera = NodePath("Camera3D") | camera = NodePath("Camera3D") | ||||||
| initial_target = NodePath("../grape") | initial_target = NodePath("../table") | ||||||
| 
 | 
 | ||||||
| [node name="Camera3D" type="Camera3D" parent="controller" index="1"] | [node name="Camera3D" type="Camera3D" parent="controller" index="1"] | ||||||
| 
 | 
 | ||||||
| [node name="TAS_test_001" type="Node" parent="." index="6"] | [node name="is_TASable" parent="table" index="0" instance=ExtResource("3_srlbt")] | ||||||
|  | 
 | ||||||
|  | [node name="TAS_test_001" type="Node" parent="." index="4"] | ||||||
| script = ExtResource("5_0ber1") | script = ExtResource("5_0ber1") | ||||||
| 
 | 
 | ||||||
| [node name="TAS UI" parent="." index="7" instance=ExtResource("6_au5mx")] | [node name="TAS UI" parent="." index="5" instance=ExtResource("6_au5mx")] | ||||||
|  |  | ||||||
							
								
								
									
										43
									
								
								godot/tests/TAS_system/TAS_test_003.tscn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								godot/tests/TAS_system/TAS_test_003.tscn
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | [gd_scene load_steps=7 format=3 uid="uid://1wrwvnt1xuwr"] | ||||||
|  | 
 | ||||||
|  | [ext_resource type="PackedScene" uid="uid://bua7f25rpewkp" path="res://small_room.glb" id="1_m1abe"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://drmb4sitb74fx" path="res://control_scheme/controller.tscn" id="2_1yuny"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://c43pr474qofhl" path="res://physics/grape.tscn" id="3_kg8e8"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://bjhii55pagkb5" path="res://TAS_system/is_TASable.tscn" id="4_4hrbu"] | ||||||
|  | [ext_resource type="PackedScene" uid="uid://b1uf31ed6h0ir" path="res://UI/TAS UI/TAS UI.tscn" id="4_jskxr"] | ||||||
|  | 
 | ||||||
|  | [sub_resource type="Environment" id="Environment_f0m14"] | ||||||
|  | ambient_light_source = 2 | ||||||
|  | ambient_light_color = Color(1, 1, 1, 1) | ||||||
|  | ambient_light_energy = 0.5 | ||||||
|  | 
 | ||||||
|  | [node name="small_room" instance=ExtResource("1_m1abe")] | ||||||
|  | 
 | ||||||
|  | [node name="WorldEnvironment" type="WorldEnvironment" parent="." index="2"] | ||||||
|  | environment = SubResource("Environment_f0m14") | ||||||
|  | 
 | ||||||
|  | [node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment" index="0"] | ||||||
|  | transform = Transform3D(1, 0, 0, 0, 0.933762, 0.357895, 0, -0.357895, 0.933762, 0, 1.43864, 1.81738) | ||||||
|  | 
 | ||||||
|  | [node name="controller" parent="." index="3" node_paths=PackedStringArray("camera", "initial_target") instance=ExtResource("2_1yuny")] | ||||||
|  | camera = NodePath("Camera3D") | ||||||
|  | initial_target = NodePath("../grape") | ||||||
|  | 
 | ||||||
|  | [node name="Camera3D" type="Camera3D" parent="controller" index="1"] | ||||||
|  | 
 | ||||||
|  | [node name="billiard" parent="." index="4" instance=ExtResource("3_kg8e8")] | ||||||
|  | 
 | ||||||
|  | [node name="grape" parent="." index="5" instance=ExtResource("3_kg8e8")] | ||||||
|  | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.98064, 0.385236) | ||||||
|  | 
 | ||||||
|  | [node name="is_TASable" parent="grape" index="3" node_paths=PackedStringArray("_assignedRigidBody3D") instance=ExtResource("4_4hrbu")] | ||||||
|  | _assignedRigidBody3D = NodePath("..") | ||||||
|  | 
 | ||||||
|  | [node name="grape2" parent="." index="6" instance=ExtResource("3_kg8e8")] | ||||||
|  | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.94627, 0) | ||||||
|  | continuous_cd = true | ||||||
|  | 
 | ||||||
|  | [node name="is_TASable" parent="grape2" index="3" node_paths=PackedStringArray("_assignedRigidBody3D") instance=ExtResource("4_4hrbu")] | ||||||
|  | _assignedRigidBody3D = NodePath("..") | ||||||
|  | 
 | ||||||
|  | [node name="TAS UI" parent="." index="7" instance=ExtResource("4_jskxr")] | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue