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> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <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] | ||||
|     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() | ||||
|     { | ||||
|         this.IsIncrementingFrames = true; | ||||
|         EmitSignal(SignalName.StartedIncrementing); | ||||
|     } | ||||
| 
 | ||||
|     public void StopIncrementingFrames() | ||||
|     { | ||||
|         this.IsIncrementingFrames = false; | ||||
|         EmitSignal(SignalName.StoppedIncrementing); | ||||
|     } | ||||
| 
 | ||||
|     public void ResetFrameCount() | ||||
|     { | ||||
|         this.CurrentFrame = 0; | ||||
|         this.LastAdvancedFrame = 0; | ||||
|         EmitSignal(SignalName.FramesReset); | ||||
|     } | ||||
| 
 | ||||
|     // 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); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // 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 System; | ||||
| using System.Collections.Generic; | ||||
| using System.Globalization; | ||||
| 
 | ||||
| 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() | ||||
|     { | ||||
|         this._parent = this.GetParent<Node3D>(); | ||||
|         TAS_System TAS = GetNode<TAS_System>("/root/TAS_System"); | ||||
| 
 | ||||
|         TAS.FrameIncremented += this.OnFrameIncremented; | ||||
|         TAS.FramesAdvanced += this.OnFramesAdvanced; | ||||
|         TAS.FramesRegressed += this.OnFramesRegressed; | ||||
|         TAS.StartedIncrementing += this.OnStartedIncrementing; | ||||
|         TAS.StoppedIncrementing += this.OnStoppedIncrementing; | ||||
| 
 | ||||
|         this.SaveState(0); | ||||
|     } | ||||
| 
 | ||||
|     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) | ||||
|     { | ||||
|         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) | ||||
|     { | ||||
|         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 | ||||
| { | ||||
| 	TAS_System TAS; | ||||
| 
 | ||||
| 	// Called when the node enters the scene tree for the first time. | ||||
| 	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); }; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -14,4 +16,17 @@ public partial class RegressButton : Button | |||
|     { | ||||
|         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 | ||||
| grow_horizontal = 2 | ||||
| grow_vertical = 2 | ||||
| mouse_filter = 2 | ||||
| 
 | ||||
| [node name="DEBUG" type="Control" parent="."] | ||||
| layout_mode = 1 | ||||
|  | @ -22,6 +23,7 @@ anchor_right = 1.0 | |||
| anchor_bottom = 1.0 | ||||
| grow_horizontal = 2 | ||||
| grow_vertical = 2 | ||||
| mouse_filter = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="DEBUG"] | ||||
| layout_mode = 1 | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ func toggle_mouse_lock(): | |||
| func mouse_is_locked(): | ||||
| 	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: | ||||
| 		lock_mouse() | ||||
| 		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://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://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"] | ||||
|  | @ -14,26 +13,21 @@ ambient_light_energy = 0.5 | |||
| 
 | ||||
| [node name="small_room" instance=ExtResource("1_bo0jp")] | ||||
| 
 | ||||
| [node name="is_TASable" parent="table" index="0" instance=ExtResource("3_srlbt")] | ||||
| 
 | ||||
| [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"] | ||||
| [node name="WorldEnvironment" type="WorldEnvironment" parent="." index="1"] | ||||
| 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="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") | ||||
| initial_target = NodePath("../grape") | ||||
| initial_target = NodePath("../table") | ||||
| 
 | ||||
| [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") | ||||
| 
 | ||||
| [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