Merge branch 'master' of https://git.sjkillen.ca/sjkillen/hurrmmm into sjkillen
This commit is contained in:
commit
8c1b431f84
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<Project Sdk="Godot.NET.Sdk/4.1.3">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -33,6 +33,11 @@ public partial class TAS_System : Node
|
|||
private set { this._currentFrame = value; }
|
||||
}
|
||||
|
||||
public int AdvancedFramesRemaining
|
||||
{
|
||||
get { return this.LastAdvancedFrame - this.CurrentFrame; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The last frame that can be advanced to. This will
|
||||
/// only be greater than CurrentFrame after the player
|
||||
|
@ -59,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
|
||||
|
@ -112,18 +129,20 @@ public partial class TAS_System : Node
|
|||
if (this.TimeSinceLastFrame >= this.FrameLength)
|
||||
{
|
||||
this.CurrentFrame++;
|
||||
this.LastAdvancedFrame = this.CurrentFrame;
|
||||
EmitSignal(SignalName.FrameIncremented, this.CurrentFrame);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class AdvanceButton : Button
|
||||
{
|
||||
TAS_System TAS;
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
TAS = GetNode<TAS_System>("/root/TAS_System");
|
||||
this.Pressed += () => { TAS.Advance(1); };
|
||||
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (TAS.AdvancedFramesRemaining == 0)
|
||||
{
|
||||
this.Disabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Disabled = false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class CurrentFrameLabel : Label
|
||||
{
|
||||
TAS_System TAS;
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
TAS = GetNode<TAS_System>("/root/TAS_System");
|
||||
// TAS.FrameIncremented += OnFrameIncremented;
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
this.Text = $"Current frame: {TAS.CurrentFrame}";
|
||||
}
|
||||
|
||||
public virtual void OnFrameIncremented(int newFrame)
|
||||
{
|
||||
this.Text = $"Current frame: {newFrame}";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
using Godot;
|
||||
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 = GetNode<TAS_System>("/root/TAS_System");
|
||||
this.Pressed += () => { TAS.Regress(1); };
|
||||
}
|
||||
|
||||
public virtual void OnFrameIncremented(int 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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class ResetFramesButton : Button
|
||||
{
|
||||
// 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");
|
||||
this.Pressed += () => { TAS.ResetFrameCount(); };
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class StartIncrementButton : Button
|
||||
{
|
||||
// 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");
|
||||
this.Pressed += () => { TAS.StartIncrementingFrames(); };
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class StopIncrementButton : Button
|
||||
{
|
||||
// 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");
|
||||
this.Pressed += () => { TAS.StopIncrementingFrames(); };
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://b1uf31ed6h0ir"]
|
||||
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/CurrentFrameLabel.cs" id="1_27u4w"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/RegressButton.cs" id="2_fhmsa"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/AdvanceButton.cs" id="3_0ti6q"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/StopIncrementButton.cs" id="4_4gd4c"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/StartIncrementButton.cs" id="5_5af83"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/ResetFramesButton.cs" id="6_nwwkv"]
|
||||
|
||||
[node name="TAS UI" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
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
|
||||
anchors_preset = 15
|
||||
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
|
||||
anchors_preset = 2
|
||||
anchor_top = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -26.0
|
||||
offset_right = 199.0
|
||||
grow_vertical = 0
|
||||
text = "Current Frame: 0"
|
||||
script = ExtResource("1_27u4w")
|
||||
|
||||
[node name="FrameButtons" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -131.5
|
||||
offset_top = -52.0
|
||||
offset_right = 131.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="RegressButton" type="Button" parent="FrameButtons"]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
grow_vertical = 2
|
||||
text = "Regress"
|
||||
script = ExtResource("2_fhmsa")
|
||||
|
||||
[node name="AdvanceButton" type="Button" parent="FrameButtons"]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_vertical = 2
|
||||
disabled = true
|
||||
text = "Advance"
|
||||
script = ExtResource("3_0ti6q")
|
||||
|
||||
[node name="TASButtons" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -205.0
|
||||
offset_top = -103.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
|
||||
[node name="StopIncrementButton" type="Button" parent="TASButtons"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 10
|
||||
anchor_right = 1.0
|
||||
offset_bottom = 31.0
|
||||
grow_horizontal = 2
|
||||
text = "Stop Increment"
|
||||
script = ExtResource("4_4gd4c")
|
||||
|
||||
[node name="StartIncrementButton" type="Button" parent="TASButtons"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 14
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -15.5
|
||||
offset_bottom = 15.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "Start Increment"
|
||||
script = ExtResource("5_5af83")
|
||||
|
||||
[node name="ResetFramesButton" type="Button" parent="TASButtons"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 12
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -31.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
text = "Reset Frames"
|
||||
script = ExtResource("6_nwwkv")
|
|
@ -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,10 +1,10 @@
|
|||
[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"]
|
||||
[ext_resource type="PackedScene" uid="uid://b1uf31ed6h0ir" path="res://UI/TAS UI/TAS UI.tscn" id="6_au5mx"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_f0m14"]
|
||||
ambient_light_source = 2
|
||||
|
@ -13,24 +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="5" instance=ExtResource("6_au5mx")]
|
||||
|
|
|
@ -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…
Reference in New Issue