gd: basic weapon and readability refacto

This commit is contained in:
2025-06-06 16:09:39 +02:00
parent bbcc3d0867
commit 579b523a37
15 changed files with 263 additions and 201 deletions

View File

@ -1,25 +1,25 @@
[gd_scene load_steps=31 format=3 uid="uid://bei4nhkf8lwdo"] [gd_scene load_steps=32 format=3 uid="uid://bei4nhkf8lwdo"]
[ext_resource type="Script" uid="uid://bbbrf5ckydfna" path="res://player_controller/Scripts/PlayerController.cs" id="1_poq2x"] [ext_resource type="Script" uid="uid://bbbrf5ckydfna" path="res://player_controller/Scripts/PlayerController.cs" id="1_poq2x"]
[ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://systems/inputs/walk_mode/base_mode.tres" id="3_cresl"] [ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://systems/inputs/base_mode/base_mode.tres" id="3_cresl"]
[ext_resource type="Resource" uid="uid://cpdaw41ah5gic" path="res://systems/inputs/walk_mode/rotate_y.tres" id="4_rxwoh"] [ext_resource type="Resource" uid="uid://cpdaw41ah5gic" path="res://systems/inputs/base_mode/rotate_y.tres" id="4_rxwoh"]
[ext_resource type="Resource" uid="uid://ccrb5xsnphc8" path="res://systems/inputs/walk_mode/rotate_floorplane.tres" id="5_4u7i3"] [ext_resource type="Resource" uid="uid://ccrb5xsnphc8" path="res://systems/inputs/base_mode/rotate_floorplane.tres" id="5_4u7i3"]
[ext_resource type="Script" uid="uid://dv7v1ywmbvvcd" path="res://player_controller/Scripts/HealthSystem.cs" id="5_umw0l"] [ext_resource type="Script" uid="uid://dv7v1ywmbvvcd" path="res://player_controller/Scripts/HealthSystem.cs" id="5_umw0l"]
[ext_resource type="Script" uid="uid://vuq8rjq3vegn" path="res://player_controller/Scripts/Stamina.cs" id="6_lxtc4"] [ext_resource type="Script" uid="uid://vuq8rjq3vegn" path="res://player_controller/Scripts/Stamina.cs" id="6_lxtc4"]
[ext_resource type="Script" uid="uid://cwbvxlfvmocc1" path="res://player_controller/Scripts/StairsSystem.cs" id="7_bmt5a"] [ext_resource type="Script" uid="uid://cwbvxlfvmocc1" path="res://player_controller/Scripts/StairsSystem.cs" id="7_bmt5a"]
[ext_resource type="Resource" uid="uid://dgfww8118d8gj" path="res://systems/inputs/walk_mode/aim.tres" id="7_cresl"] [ext_resource type="Resource" uid="uid://dgfww8118d8gj" path="res://systems/inputs/base_mode/aim.tres" id="7_cresl"]
[ext_resource type="Resource" uid="uid://j1o5ud0plk4" path="res://systems/inputs/walk_mode/aim_release.tres" id="8_lhb11"] [ext_resource type="Resource" uid="uid://j1o5ud0plk4" path="res://systems/inputs/base_mode/aim_release.tres" id="8_lhb11"]
[ext_resource type="Script" uid="uid://dd1yrt7eiiyf4" path="res://player_controller/Scripts/CapsuleCollider.cs" id="8_lmtjd"] [ext_resource type="Script" uid="uid://dd1yrt7eiiyf4" path="res://player_controller/Scripts/CapsuleCollider.cs" id="8_lmtjd"]
[ext_resource type="PackedScene" uid="uid://wq1okogkhc5l" path="res://systems/mantle/mantle_system.tscn" id="8_qu4wy"] [ext_resource type="PackedScene" uid="uid://wq1okogkhc5l" path="res://systems/mantle/mantle_system.tscn" id="8_qu4wy"]
[ext_resource type="Resource" uid="uid://7wm8ywvujwf" path="res://systems/inputs/walk_mode/aim_cancel.tres" id="9_5p2qc"] [ext_resource type="Resource" uid="uid://7wm8ywvujwf" path="res://systems/inputs/base_mode/aim_cancel.tres" id="9_5p2qc"]
[ext_resource type="Script" uid="uid://bt0xv2q8iv1vn" path="res://player_controller/Scripts/Gravity.cs" id="9_lsueh"] [ext_resource type="Script" uid="uid://bt0xv2q8iv1vn" path="res://player_controller/Scripts/Gravity.cs" id="9_lsueh"]
[ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/walk_mode/jump.tres" id="10_4u7i3"] [ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/base_mode/jump.tres" id="10_4u7i3"]
[ext_resource type="Script" uid="uid://g8idirw62qe0" path="res://player_controller/Scripts/Bobbing.cs" id="10_7wk1w"] [ext_resource type="Script" uid="uid://g8idirw62qe0" path="res://player_controller/Scripts/Bobbing.cs" id="10_7wk1w"]
[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/walk_mode/hit.tres" id="11_cresl"] [ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/base_mode/hit.tres" id="11_cresl"]
[ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://systems/head/head_system.tscn" id="11_rxwoh"] [ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://systems/head/head_system.tscn" id="11_rxwoh"]
[ext_resource type="Script" uid="uid://b6k73aj5povgv" path="res://player_controller/Scripts/FieldOfView.cs" id="12_m2mxi"] [ext_resource type="Script" uid="uid://b6k73aj5povgv" path="res://player_controller/Scripts/FieldOfView.cs" id="12_m2mxi"]
[ext_resource type="Script" uid="uid://b5nk6ntlps3x0" path="res://systems/inputs/input_system.gd" id="16_v31n3"] [ext_resource type="Script" uid="uid://b5nk6ntlps3x0" path="res://systems/inputs/input_system.gd" id="16_v31n3"]
[ext_resource type="Resource" uid="uid://htqvokm8mufq" path="res://systems/inputs/walk_mode/move.tres" id="17_h6vvl"] [ext_resource type="Resource" uid="uid://htqvokm8mufq" path="res://systems/inputs/base_mode/move.tres" id="17_h6vvl"]
[ext_resource type="PackedScene" uid="uid://cqduhd4opgwvm" path="res://systems/dash/dash_system.tscn" id="18_q5h8a"] [ext_resource type="PackedScene" uid="uid://cqduhd4opgwvm" path="res://systems/dash/dash_system.tscn" id="18_q5h8a"]
[ext_resource type="Script" uid="uid://dyy5njw6pxoh4" path="res://systems/move/MoveSystem.cs" id="20_rxwoh"] [ext_resource type="Script" uid="uid://dyy5njw6pxoh4" path="res://systems/move/MoveSystem.cs" id="20_rxwoh"]
[ext_resource type="PackedScene" uid="uid://dbe5f0p6lvqtr" path="res://systems/tween_queue/tween_queue_system.tscn" id="22_rpwev"] [ext_resource type="PackedScene" uid="uid://dbe5f0p6lvqtr" path="res://systems/tween_queue/tween_queue_system.tscn" id="22_rpwev"]
@ -28,6 +28,7 @@
[ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="26_infe6"] [ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="26_infe6"]
[ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="27_34snm"] [ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="27_34snm"]
[ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="28_n7qhm"] [ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="28_n7qhm"]
[ext_resource type="PackedScene" uid="uid://ckm3d6k08a72u" path="res://systems/weapon/weapon.tscn" id="29_wv70j"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_xc2g5"] [sub_resource type="CapsuleMesh" id="CapsuleMesh_xc2g5"]
@ -127,7 +128,6 @@ offset_bottom = 1.0
initial_node_to_watch = NodePath("../StateChart") initial_node_to_watch = NodePath("../StateChart")
[node name="StateChart" type="Node" parent="."] [node name="StateChart" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("25_wv70j") script = ExtResource("25_wv70j")
metadata/_custom_type_script = "uid://couw105c3bde4" metadata/_custom_type_script = "uid://couw105c3bde4"
@ -183,6 +183,12 @@ to = NodePath("../../Dashing")
event = &"aim_pressed" event = &"aim_pressed"
delay_in_seconds = "0.0" delay_in_seconds = "0.0"
[node name="WeaponRoot" type="Node3D" parent="."]
[node name="WeaponSystem" parent="WeaponRoot" instance=ExtResource("29_wv70j")]
transform = Transform3D(1, 0, 0, 0, 0.953043, 0.302836, 0, -0.302836, 0.953043, 0.45268, 1.44035, -0.692528)
skeleton = NodePath("../..")
[connection signal="input_aim_canceled" from="InputController" to="." method="OnInputAimCanceled"] [connection signal="input_aim_canceled" from="InputController" to="." method="OnInputAimCanceled"]
[connection signal="input_aim_pressed" from="InputController" to="." method="OnInputAimPressed"] [connection signal="input_aim_pressed" from="InputController" to="." method="OnInputAimPressed"]
[connection signal="input_aim_released" from="InputController" to="." method="OnInputAimReleased"] [connection signal="input_aim_released" from="InputController" to="." method="OnInputAimReleased"]

View File

@ -18,7 +18,8 @@ public partial class PlayerController : CharacterBody3D
public HealthSystem HealthSystem; public HealthSystem HealthSystem;
public MoveSystem MoveSystem; public MoveSystem MoveSystem;
public TweenQueueSystem TweenQueueSystem; public TweenQueueSystem TweenQueueSystem;
public StateChart PlayerState; public Node3D WeaponRoot;
public WeaponSystem WeaponSystem;
private bool _movementEnabled = true; private bool _movementEnabled = true;
@ -38,82 +39,89 @@ public partial class PlayerController : CharacterBody3D
private bool _isAiming; private bool _isAiming;
private bool _dashCanceled; private bool _dashCanceled;
private StateChart _playerState;
private StateChartState _weaponInHand;
private StateChartState _aiming;
private StateChartState _dashing;
private StateChartState _weaponThrown;
public override void _Ready() public override void _Ready()
{ {
///////////////////////////
// Getting components /////
///////////////////////////
// General use stuff
TweenQueueSystem = GetNode<TweenQueueSystem>("TweenQueueSystem");
// Node3D mapNode = GetTree().Root.FindChild("Map", true, false) as Node3D;
// Camera stuff
HeadSystem = GetNode<HeadSystem>("HeadSystem");
Bobbing = GetNode<Bobbing>("Bobbing");
FieldOfView = GetNode<FieldOfView>("FieldOfView");
Camera3D camera = GetNode<Camera3D>("HeadSystem/CameraSmooth/Camera3D");
Node3D cameraSmooth = GetNode<Node3D>("HeadSystem/CameraSmooth");
ColorRect vignetteRect = GetNode<ColorRect>(
"HeadSystem/CameraSmooth/Camera3D/CLVignette(Layer_1)/HealthVignetteRect");
ColorRect distortionRect = GetNode<ColorRect>(
"HeadSystem/CameraSmooth/Camera3D/CLDistortion(Layer_2)/HealthDistortionRect");
ColorRect blurRect = GetNode<ColorRect>("HeadSystem/CameraSmooth/Camera3D/CLBlur(Layer_2)/BlurRect");
// Movement stuff
WeaponRoot = GetNode<Node3D>("WeaponRoot");
WeaponSystem = GetNode<WeaponSystem>("WeaponRoot/WeaponSystem");
MantleSystem = GetNode<MantleSystem>("MantleSystem");
CapsuleCollider = GetNode<CapsuleCollider>("CapsuleCollider");
Gravity = GetNode<Gravity>("Gravity");
MoveSystem = GetNode<MoveSystem>("MoveSystem");
DashSystem = GetNode<DashSystem>("DashSystem");
StairsSystem = GetNode<StairsSystem>("StairsSystem");
RayCast3D stairsBelowRayCast3D = GetNode<RayCast3D>("StairsBelowRayCast3D");
RayCast3D stairsAheadRayCast3D = GetNode<RayCast3D>("StairsAheadRayCast3D");
_headCollisionDetectors = new RayCast3D[NUM_OF_HEAD_COLLISION_DETECTORS]; _headCollisionDetectors = new RayCast3D[NUM_OF_HEAD_COLLISION_DETECTORS];
for (int i = 0; i < NUM_OF_HEAD_COLLISION_DETECTORS; i++) for (int i = 0; i < NUM_OF_HEAD_COLLISION_DETECTORS; i++)
{ {
_headCollisionDetectors[i] = GetNode<RayCast3D>( _headCollisionDetectors[i] = GetNode<RayCast3D>(
"HeadCollisionDetectors/HeadCollisionDetector" + i); "HeadCollisionDetectors/HeadCollisionDetector" + i);
} }
// RPG Stuff
Stamina = GetNode<Stamina>("Stamina");
HealthSystem = GetNode<HealthSystem>("HealthSystem");
// State management
_playerState = StateChart.Of(GetNode("StateChart"));
_weaponInHand = StateChartState.Of(GetNode("StateChart/Root/WeaponInHand"));
_aiming = StateChartState.Of(GetNode("StateChart/Root/Aiming"));
_dashing = StateChartState.Of(GetNode("StateChart/Root/Dashing"));
_weaponThrown = StateChartState.Of(GetNode("StateChart/Root/WeaponThrown"));
///////////////////////////
// Initialize components //
///////////////////////////
// General use stuff
TweenQueueSystem.Init(this);
HeadSystem = GetNode<HeadSystem>("HeadSystem"); // Camera stuff
HeadSystem.Init(); HeadSystem.Init();
Bobbing.Init(camera);
FieldOfView.Init(camera);
// Get the state chart node and wrap it in a StateChart object like so, GetNode doesn't work // Movement stuff
PlayerState = StateChart.Of(GetNode("%StateChart"));
// Get the poisoned state node and wrap it in a State object, so we can easily
// interact with it from C#.
// _poisonedStateChartState = StateChartState.Of(GetNode("%Poisoned"));
// Getting dependencies of the components (In godot we manage this from upwards to downwards not vice versa)
Camera3D camera = GetNode<Camera3D>("HeadSystem/CameraSmooth/Camera3D");
Node3D cameraSmooth = GetNode<Node3D>("HeadSystem/CameraSmooth");
RayCast3D stairsBelowRayCast3D = GetNode<RayCast3D>("StairsBelowRayCast3D");
RayCast3D stairsAheadRayCast3D = GetNode<RayCast3D>("StairsAheadRayCast3D");
// Getting universal setting from GODOT editor to be in sync // Getting universal setting from GODOT editor to be in sync
float gravitySetting = (float)ProjectSettings.GetSetting("physics/3d/default_gravity"); float gravitySetting = (float)ProjectSettings.GetSetting("physics/3d/default_gravity");
ColorRect vignetteRect = GetNode<ColorRect>(
"HeadSystem/CameraSmooth/Camera3D/CLVignette(Layer_1)/HealthVignetteRect");
ColorRect distortionRect = GetNode<ColorRect>(
"HeadSystem/CameraSmooth/Camera3D/CLDistortion(Layer_2)/HealthDistortionRect");
ColorRect blurRect = GetNode<ColorRect>("HeadSystem/CameraSmooth/Camera3D/CLBlur(Layer_2)/BlurRect");
// Node3D mapNode = GetTree().Root.FindChild("Map", true, false) as Node3D;
// Getting components
Bobbing = GetNode<Bobbing>("Bobbing");
Bobbing.Init(camera);
FieldOfView = GetNode<FieldOfView>("FieldOfView");
FieldOfView.Init(camera);
CapsuleCollider = GetNode<CapsuleCollider>("CapsuleCollider");
Gravity = GetNode<Gravity>("Gravity");
Gravity.Init(gravitySetting); Gravity.Init(gravitySetting);
MantleSystem = GetNode<MantleSystem>("MantleSystem");
MantleSystem.Init(HeadSystem); MantleSystem.Init(HeadSystem);
TweenQueueSystem = GetNode<TweenQueueSystem>("TweenQueueSystem");
TweenQueueSystem.Init(this);
MoveSystem = GetNode<MoveSystem>("MoveSystem");
var moveSystemParams = new MoveSystem.MoveSystemParameters(this, Gravity, MantleSystem, TweenQueueSystem, var moveSystemParams = new MoveSystem.MoveSystemParameters(this, Gravity, MantleSystem, TweenQueueSystem,
HeadSystem, CapsuleCollider); HeadSystem, CapsuleCollider);
MoveSystem.Init(moveSystemParams); MoveSystem.Init(moveSystemParams);
Stamina = GetNode<Stamina>("Stamina");
Stamina.SetSpeeds(MoveSystem.WalkSpeed, MoveSystem.SprintSpeed);
StairsSystem = GetNode<StairsSystem>("StairsSystem");
StairsSystem.Init(stairsBelowRayCast3D, stairsAheadRayCast3D, cameraSmooth); StairsSystem.Init(stairsBelowRayCast3D, stairsAheadRayCast3D, cameraSmooth);
DashSystem = GetNode<DashSystem>("DashSystem");
DashSystem.Init(HeadSystem, camera, TweenQueueSystem); DashSystem.Init(HeadSystem, camera, TweenQueueSystem);
DashSystem.DashEnded += OnDashEnded; WeaponSystem.Init(HeadSystem, camera, TweenQueueSystem);
HealthSystem = GetNode<HealthSystem>("HealthSystem");
// RPG Stuff
HealthSystem.HealthSystemInitParams healthSystemParams = new HealthSystem.HealthSystemInitParams() HealthSystem.HealthSystemInitParams healthSystemParams = new HealthSystem.HealthSystemInitParams()
{ {
Gravity = Gravity, Gravity = Gravity,
@ -125,6 +133,28 @@ public partial class PlayerController : CharacterBody3D
BlurRect = blurRect, BlurRect = blurRect,
}; };
HealthSystem.Init(healthSystemParams); HealthSystem.Init(healthSystemParams);
Stamina.SetSpeeds(MoveSystem.WalkSpeed, MoveSystem.SprintSpeed);
///////////////////////////
// Signal setup ///////////
///////////////////////////
DashSystem.DashEnded += OnDashEnded;
_dashing.StateEntered += OnDashStarted;
_weaponThrown.StateEntered += OnWeaponThrown;
}
public void OnDashStarted()
{
DashSystem.Dash();
}
public void OnWeaponThrown()
{
var (hasHit, location, collisionPoint, collisionNormal) = DashSystem.DashComputation;
var (endWithMantle, dashLocation, mantleLocation) = DashSystem.DashResolve;
var weaponThrowVector = dashLocation - Position;
} }
public void OnInputMove(Vector3 value) public void OnInputMove(Vector3 value)
@ -144,30 +174,26 @@ public partial class PlayerController : CharacterBody3D
public void OnInputAimPressed() public void OnInputAimPressed()
{ {
PlayerState.SendEvent("aim_pressed"); _playerState.SendEvent("aim_pressed");
if (_dashCanceled)
return;
DashSystem.PrepareDash();
} }
public void OnInputAimReleased() public void OnInputAimReleased()
{ {
PlayerState.SendEvent("aim_released"); _playerState.SendEvent("aim_released");
if (!_dashCanceled)
DashSystem.Dash();
_dashCanceled = false;
} }
public void OnInputAimCanceled() public void OnInputAimCanceled()
{ {
PlayerState.SendEvent("aim_canceled"); _playerState.SendEvent("aim_canceled");
_dashCanceled = true;
DashSystem.CancelDash(); DashSystem.CancelDash();
} }
public void OnInputHitPressed() public void OnInputHitPressed()
{ {
PlayerState.SendEvent("hit_pressed"); _playerState.SendEvent("hit_pressed");
}
public void OnDashEnded()
{
_playerState.SendEvent("dash_ended");
} }
public void OnInputJumpPressed() public void OnInputJumpPressed()
@ -178,19 +204,19 @@ public partial class PlayerController : CharacterBody3D
if (!doesCapsuleHaveCrouchingHeight && !isPlayerDead) if (!doesCapsuleHaveCrouchingHeight && !isPlayerDead)
MoveSystem.Jump(IsOnFloor()); MoveSystem.Jump(IsOnFloor());
} }
public void OnDashEnded()
{
PlayerState.SendEvent("dash_ended");
}
public override void _PhysicsProcess(double delta) public override void _PhysicsProcess(double delta)
{ {
TweenQueueSystem.ProcessTweens(); WeaponRoot.SetRotation(HeadSystem.Rotation);
var isPlayerDead = HealthSystem.IsDead(); var isPlayerDead = HealthSystem.IsDead();
var isHeadTouchingCeiling = IsHeadTouchingCeiling(); var isHeadTouchingCeiling = IsHeadTouchingCeiling();
TweenQueueSystem.ProcessTweens();
if (_aiming.Active)
DashSystem.PrepareDash();
var moveAroundParams = new MoveSystem.MoveAroundParameters( var moveAroundParams = new MoveSystem.MoveAroundParameters(
delta, delta,
_inputMove, _inputMove,

View File

@ -2,9 +2,9 @@
namespace Movementtests.systems; namespace Movementtests.systems;
public record DashComputation(bool HasHit, Vector3 Location, Vector3 CollisionPoint, Vector3 CollisionNormal); public record DashComputationRecord(bool HasHit, Vector3 Location, Vector3 CollisionPoint, Vector3 CollisionNormal);
public record DashResolve(bool EndWithMantle, Vector3 DashLocation, Vector3 MantleLocation); public record DashResolveRecord(bool EndWithMantle, Vector3 DashLocation, Vector3 MantleLocation);
public partial class DashSystem: Node3D public partial class DashSystem: Node3D
{ {
@ -19,7 +19,9 @@ public partial class DashSystem: Node3D
private MantleSystem _mantleSystem; private MantleSystem _mantleSystem;
private MeshInstance3D _dashTarget; private MeshInstance3D _dashTarget;
private DashResolve _dashResolve; public DashResolveRecord DashResolve { get; set; }
public DashComputationRecord DashComputation { get; set; }
[Signal] [Signal]
public delegate void DashStartedEventHandler(); public delegate void DashStartedEventHandler();
@ -40,20 +42,20 @@ public partial class DashSystem: Node3D
_dashTarget.SetVisible(false); _dashTarget.SetVisible(false);
} }
private DashComputation ComputeDashLocation() private DashComputationRecord ComputeDashLocation()
{ {
if (!_dashCast3D.IsColliding()) if (!_dashCast3D.IsColliding())
{ {
return new DashComputation(false, _dashCast3D.ToGlobal(_dashCast3D.TargetPosition), Vector3.Zero, Vector3.Zero); return new DashComputationRecord(false, _dashCast3D.ToGlobal(_dashCast3D.TargetPosition), Vector3.Zero, Vector3.Zero);
} }
var collisionPoint = _dashCast3D.GetCollisionPoint(0); var collisionPoint = _dashCast3D.GetCollisionPoint(0);
var collisionNormal = _dashCast3D.GetCollisionNormal(0); var collisionNormal = _dashCast3D.GetCollisionNormal(0);
var collisionShape = (SphereShape3D) _dashCast3D.GetShape(); var collisionShape = (SphereShape3D) _dashCast3D.GetShape();
var centerSphereLocation = collisionPoint + collisionNormal * collisionShape.Radius; var centerSphereLocation = collisionPoint + collisionNormal * collisionShape.Radius;
return new DashComputation(true, centerSphereLocation, collisionPoint, collisionNormal); return new DashComputationRecord(true, centerSphereLocation, collisionPoint, collisionNormal);
} }
public DashResolve PrepareDash() public void PrepareDash()
{ {
_dashTarget.SetVisible(false); _dashTarget.SetVisible(false);
@ -62,7 +64,8 @@ public partial class DashSystem: Node3D
_head.Rotation.Y, _head.Rotation.Y,
_camera.Rotation.Z)); _camera.Rotation.Z));
var (hasHit, location, collisionPoint, collisionNormal) = ComputeDashLocation(); DashComputation = ComputeDashLocation();
var (hasHit, location, collisionPoint, collisionNormal) = DashComputation;
var shouldMantle = false; var shouldMantle = false;
var mantleLocation = Vector3.Zero; var mantleLocation = Vector3.Zero;
@ -78,8 +81,7 @@ public partial class DashSystem: Node3D
_dashTarget.SetVisible(true); _dashTarget.SetVisible(true);
_dashTarget.SetGlobalPosition(location); _dashTarget.SetGlobalPosition(location);
_dashResolve = new DashResolve(shouldMantle, location, mantleLocation); DashResolve = new DashResolveRecord(shouldMantle, location, mantleLocation);
return _dashResolve;
} }
public void CancelDash() public void CancelDash()
@ -96,12 +98,12 @@ public partial class DashSystem: Node3D
{ {
EmitSignal(SignalName.DashStarted); EmitSignal(SignalName.DashStarted);
_dashTarget.SetVisible(false); _dashTarget.SetVisible(false);
var dashTweenInputs = new TweenQueueSystem.TweenInputs(_dashResolve.DashLocation, 0.1f); var dashTweenInputs = new TweenQueueSystem.TweenInputs(DashResolve.DashLocation, 0.1f);
var dashTween = _tweenQueueSystem.TweenToLocation(dashTweenInputs); var dashTween = _tweenQueueSystem.TweenToLocation(dashTweenInputs);
dashTween.Finished += DashTweenEnded; dashTween.Finished += DashTweenEnded;
if (_dashResolve.EndWithMantle) if (DashResolve.EndWithMantle)
{ {
_tweenQueueSystem.QueueTween(_dashResolve.MantleLocation, 0.2f); _tweenQueueSystem.QueueTween(DashResolve.MantleLocation, 0.2f);
} }
} }
} }

View File

@ -1,265 +1,258 @@
[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=63 format=3 uid="uid://bl5crtu1gkrtr"] [gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=60 format=3 uid="uid://bl5crtu1gkrtr"]
[ext_resource type="Script" uid="uid://cpplm41b5bt6m" path="res://addons/guide/guide_action_mapping.gd" id="1_0pi3k"] [ext_resource type="Script" uid="uid://cpplm41b5bt6m" path="res://addons/guide/guide_action_mapping.gd" id="1_qmhk6"]
[ext_resource type="Script" uid="uid://dsa1dnifd6w32" path="res://addons/guide/guide_mapping_context.gd" id="2_ho3ad"] [ext_resource type="Resource" uid="uid://htqvokm8mufq" path="res://systems/inputs/base_mode/move.tres" id="2_g6bbx"]
[ext_resource type="Resource" uid="uid://htqvokm8mufq" path="res://systems/inputs/walk_mode/move.tres" id="2_p4e1v"] [ext_resource type="Script" uid="uid://mtx1unc2aqn7" path="res://addons/guide/guide_input_mapping.gd" id="3_yp12v"]
[ext_resource type="Script" uid="uid://mtx1unc2aqn7" path="res://addons/guide/guide_input_mapping.gd" id="3_ufouq"] [ext_resource type="Script" uid="uid://doauobik3xyea" path="res://addons/guide/inputs/guide_input_joy_axis_2d.gd" id="4_1rw8g"]
[ext_resource type="Script" uid="uid://doauobik3xyea" path="res://addons/guide/inputs/guide_input_joy_axis_2d.gd" id="4_oapce"] [ext_resource type="Script" uid="uid://bl8rjl4oaldje" path="res://addons/guide/modifiers/guide_modifier.gd" id="5_0qat1"]
[ext_resource type="Script" uid="uid://bl8rjl4oaldje" path="res://addons/guide/modifiers/guide_modifier.gd" id="5_j3mg7"] [ext_resource type="Script" uid="uid://bm5gjgadon6hb" path="res://addons/guide/modifiers/guide_modifier_input_swizzle.gd" id="6_li5ak"]
[ext_resource type="Script" uid="uid://bm5gjgadon6hb" path="res://addons/guide/modifiers/guide_modifier_input_swizzle.gd" id="6_8w5gu"] [ext_resource type="Script" uid="uid://c47lkb48itd6l" path="res://addons/guide/modifiers/guide_modifier_deadzone.gd" id="7_si4d4"]
[ext_resource type="Script" uid="uid://c47lkb48itd6l" path="res://addons/guide/modifiers/guide_modifier_deadzone.gd" id="7_xt1x5"] [ext_resource type="Script" uid="uid://x74mnwgr08a7" path="res://addons/guide/triggers/guide_trigger.gd" id="8_2tfaw"]
[ext_resource type="Script" uid="uid://x74mnwgr08a7" path="res://addons/guide/triggers/guide_trigger.gd" id="8_nf3uo"] [ext_resource type="Resource" uid="uid://cpdaw41ah5gic" path="res://systems/inputs/base_mode/rotate_y.tres" id="9_q86qg"]
[ext_resource type="Resource" uid="uid://cpdaw41ah5gic" path="res://systems/inputs/walk_mode/rotate_y.tres" id="9_paxxe"] [ext_resource type="Script" uid="uid://bbhoxsiqwo07l" path="res://addons/guide/inputs/guide_input_joy_axis_1d.gd" id="10_cvxqo"]
[ext_resource type="Script" uid="uid://bbhoxsiqwo07l" path="res://addons/guide/inputs/guide_input_joy_axis_1d.gd" id="10_500v3"] [ext_resource type="Script" uid="uid://bjm4myqxg4phm" path="res://addons/guide/modifiers/guide_modifier_scale.gd" id="11_j3axn"]
[ext_resource type="Script" uid="uid://bjm4myqxg4phm" path="res://addons/guide/modifiers/guide_modifier_scale.gd" id="11_ew1hw"] [ext_resource type="Script" uid="uid://ckggy40lm0vjc" path="res://addons/guide/modifiers/guide_modifier_negate.gd" id="12_kxb2c"]
[ext_resource type="Script" uid="uid://ckggy40lm0vjc" path="res://addons/guide/modifiers/guide_modifier_negate.gd" id="12_u76sm"] [ext_resource type="Resource" uid="uid://ccrb5xsnphc8" path="res://systems/inputs/base_mode/rotate_floorplane.tres" id="13_v2ywt"]
[ext_resource type="Resource" uid="uid://ccrb5xsnphc8" path="res://systems/inputs/walk_mode/rotate_floorplane.tres" id="13_3y0c4"] [ext_resource type="Resource" uid="uid://dgfww8118d8gj" path="res://systems/inputs/base_mode/aim.tres" id="14_vtk18"]
[ext_resource type="Resource" uid="uid://dgfww8118d8gj" path="res://systems/inputs/walk_mode/aim.tres" id="14_bi271"] [ext_resource type="Script" uid="uid://b52rqq28tuqpg" path="res://addons/guide/triggers/guide_trigger_pressed.gd" id="15_fykw6"]
[ext_resource type="Script" uid="uid://b4cdrn4paoj3i" path="res://addons/guide/triggers/guide_trigger_down.gd" id="15_dng4t"] [ext_resource type="Resource" uid="uid://j1o5ud0plk4" path="res://systems/inputs/base_mode/aim_release.tres" id="16_rvpjj"]
[ext_resource type="Resource" uid="uid://j1o5ud0plk4" path="res://systems/inputs/walk_mode/aim_release.tres" id="16_34gm1"] [ext_resource type="Script" uid="uid://biiggjw6tv4uq" path="res://addons/guide/triggers/guide_trigger_released.gd" id="17_s8kjn"]
[ext_resource type="Script" uid="uid://biiggjw6tv4uq" path="res://addons/guide/triggers/guide_trigger_released.gd" id="17_sxu4n"] [ext_resource type="Resource" uid="uid://7wm8ywvujwf" path="res://systems/inputs/base_mode/aim_cancel.tres" id="18_vibkn"]
[ext_resource type="Resource" uid="uid://7wm8ywvujwf" path="res://systems/inputs/walk_mode/aim_cancel.tres" id="18_4dlli"] [ext_resource type="Script" uid="uid://rvttn472ix6v" path="res://addons/guide/inputs/guide_input_joy_button.gd" id="19_qkgmj"]
[ext_resource type="Script" uid="uid://rvttn472ix6v" path="res://addons/guide/inputs/guide_input_joy_button.gd" id="19_2murt"] [ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/base_mode/jump.tres" id="21_818lq"]
[ext_resource type="Script" uid="uid://brsxcrai2te83" path="res://addons/guide/triggers/guide_trigger_chorded_action.gd" id="20_xcfo4"] [ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/base_mode/hit.tres" id="22_2hs2y"]
[ext_resource type="Script" uid="uid://b52rqq28tuqpg" path="res://addons/guide/triggers/guide_trigger_pressed.gd" id="21_k8ji4"] [ext_resource type="Script" uid="uid://dsa1dnifd6w32" path="res://addons/guide/guide_mapping_context.gd" id="23_llfhp"]
[ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/walk_mode/jump.tres" id="22_ufouq"]
[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/walk_mode/hit.tres" id="23_oapce"]
[sub_resource type="Resource" id="Resource_vkvga"] [sub_resource type="Resource" id="Resource_vkvga"]
script = ExtResource("4_oapce") script = ExtResource("4_1rw8g")
x = 0 x = 0
y = 1 y = 1
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_kb1id"] [sub_resource type="Resource" id="Resource_kb1id"]
script = ExtResource("6_8w5gu") script = ExtResource("6_li5ak")
order = 2 order = 2
[sub_resource type="Resource" id="Resource_rwam6"] [sub_resource type="Resource" id="Resource_rwam6"]
script = ExtResource("7_xt1x5") script = ExtResource("7_si4d4")
lower_threshold = 0.1 lower_threshold = 0.1
upper_threshold = 1.0 upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_1igva"] [sub_resource type="Resource" id="Resource_1igva"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_vkvga") input = SubResource("Resource_vkvga")
modifiers = Array[ExtResource("5_j3mg7")]([SubResource("Resource_kb1id"), SubResource("Resource_rwam6")]) modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_kb1id"), SubResource("Resource_rwam6")])
triggers = Array[ExtResource("8_nf3uo")]([]) triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_88x08"] [sub_resource type="Resource" id="Resource_88x08"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("2_p4e1v") action = ExtResource("2_g6bbx")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_1igva")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_1igva")])
metadata/_guide_input_mappings_collapsed = false metadata/_guide_input_mappings_collapsed = false
[sub_resource type="Resource" id="Resource_05q5j"] [sub_resource type="Resource" id="Resource_05q5j"]
script = ExtResource("10_500v3") script = ExtResource("10_cvxqo")
axis = 2 axis = 2
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_tn8ci"] [sub_resource type="Resource" id="Resource_tn8ci"]
script = ExtResource("7_xt1x5") script = ExtResource("7_si4d4")
lower_threshold = 0.2 lower_threshold = 0.2
upper_threshold = 1.0 upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_1koh7"] [sub_resource type="Resource" id="Resource_1koh7"]
script = ExtResource("11_ew1hw") script = ExtResource("11_j3axn")
scale = Vector3(0.3, 0.3, 0.3) scale = Vector3(0.3, 0.3, 0.3)
apply_delta_time = false apply_delta_time = false
[sub_resource type="Resource" id="Resource_eep0a"] [sub_resource type="Resource" id="Resource_eep0a"]
script = ExtResource("12_u76sm") script = ExtResource("12_kxb2c")
x = true x = true
y = true y = true
z = true z = true
[sub_resource type="Resource" id="Resource_dew8i"] [sub_resource type="Resource" id="Resource_dew8i"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_05q5j") input = SubResource("Resource_05q5j")
modifiers = Array[ExtResource("5_j3mg7")]([SubResource("Resource_tn8ci"), SubResource("Resource_1koh7"), SubResource("Resource_eep0a")]) modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_tn8ci"), SubResource("Resource_1koh7"), SubResource("Resource_eep0a")])
triggers = Array[ExtResource("8_nf3uo")]([]) triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_tgr2g"] [sub_resource type="Resource" id="Resource_tgr2g"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("9_paxxe") action = ExtResource("9_q86qg")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_dew8i")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_dew8i")])
metadata/_guide_input_mappings_collapsed = true metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_pf0ii"] [sub_resource type="Resource" id="Resource_pf0ii"]
script = ExtResource("10_500v3") script = ExtResource("10_cvxqo")
axis = 3 axis = 3
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_nh7x4"] [sub_resource type="Resource" id="Resource_nh7x4"]
script = ExtResource("7_xt1x5") script = ExtResource("7_si4d4")
lower_threshold = 0.2 lower_threshold = 0.2
upper_threshold = 1.0 upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_04n84"] [sub_resource type="Resource" id="Resource_04n84"]
script = ExtResource("11_ew1hw") script = ExtResource("11_j3axn")
scale = Vector3(0.1, 0.1, 0.1) scale = Vector3(0.1, 0.1, 0.1)
apply_delta_time = false apply_delta_time = false
[sub_resource type="Resource" id="Resource_m3aj7"] [sub_resource type="Resource" id="Resource_m3aj7"]
script = ExtResource("12_u76sm") script = ExtResource("12_kxb2c")
x = true x = true
y = true y = true
z = true z = true
[sub_resource type="Resource" id="Resource_qu2wi"] [sub_resource type="Resource" id="Resource_qu2wi"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_pf0ii") input = SubResource("Resource_pf0ii")
modifiers = Array[ExtResource("5_j3mg7")]([SubResource("Resource_nh7x4"), SubResource("Resource_04n84"), SubResource("Resource_m3aj7")]) modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_nh7x4"), SubResource("Resource_04n84"), SubResource("Resource_m3aj7")])
triggers = Array[ExtResource("8_nf3uo")]([]) triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_iarn8"] [sub_resource type="Resource" id="Resource_iarn8"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("13_3y0c4") action = ExtResource("13_v2ywt")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_qu2wi")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_qu2wi")])
metadata/_guide_input_mappings_collapsed = true metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_ufouq"] [sub_resource type="Resource" id="Resource_ufouq"]
script = ExtResource("10_500v3") script = ExtResource("10_cvxqo")
axis = 4 axis = 4
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_n42ky"] [sub_resource type="Resource" id="Resource_ib0yi"]
script = ExtResource("15_dng4t") script = ExtResource("15_fykw6")
actuation_threshold = 0.5 actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_qbthx"] [sub_resource type="Resource" id="Resource_qbthx"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_ufouq") input = SubResource("Resource_ufouq")
modifiers = Array[ExtResource("5_j3mg7")]([]) modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_n42ky")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_ib0yi")])
[sub_resource type="Resource" id="Resource_0hmrk"] [sub_resource type="Resource" id="Resource_0hmrk"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("14_bi271") action = ExtResource("14_vtk18")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_qbthx")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_qbthx")])
metadata/_guide_input_mappings_collapsed = false metadata/_guide_input_mappings_collapsed = false
[sub_resource type="Resource" id="Resource_cqc4k"] [sub_resource type="Resource" id="Resource_cqc4k"]
script = ExtResource("10_500v3") script = ExtResource("10_cvxqo")
axis = 4 axis = 4
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_vanwy"] [sub_resource type="Resource" id="Resource_vanwy"]
script = ExtResource("17_sxu4n") script = ExtResource("17_s8kjn")
actuation_threshold = 0.5 actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_bkx7d"] [sub_resource type="Resource" id="Resource_bkx7d"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_cqc4k") input = SubResource("Resource_cqc4k")
modifiers = Array[ExtResource("5_j3mg7")]([]) modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_vanwy")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_vanwy")])
[sub_resource type="Resource" id="Resource_iihs4"] [sub_resource type="Resource" id="Resource_iihs4"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("16_34gm1") action = ExtResource("16_rvpjj")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_bkx7d")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_bkx7d")])
metadata/_guide_input_mappings_collapsed = true metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_lfx76"] [sub_resource type="Resource" id="Resource_lfx76"]
script = ExtResource("19_2murt") script = ExtResource("19_qkgmj")
button = 2 button = 2
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_hijs6"]
script = ExtResource("20_xcfo4")
action = ExtResource("14_bi271")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_oruo7"] [sub_resource type="Resource" id="Resource_oruo7"]
script = ExtResource("21_k8ji4") script = ExtResource("15_fykw6")
actuation_threshold = 0.5 actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_4ee3d"] [sub_resource type="Resource" id="Resource_4ee3d"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_lfx76") input = SubResource("Resource_lfx76")
modifiers = Array[ExtResource("5_j3mg7")]([]) modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_hijs6"), SubResource("Resource_oruo7")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_oruo7")])
[sub_resource type="Resource" id="Resource_0s4kt"] [sub_resource type="Resource" id="Resource_0s4kt"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("18_4dlli") action = ExtResource("18_vibkn")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_4ee3d")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_4ee3d")])
[sub_resource type="Resource" id="Resource_oapce"] [sub_resource type="Resource" id="Resource_oapce"]
script = ExtResource("19_2murt") script = ExtResource("19_qkgmj")
button = 0 button = 0
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_j3mg7"] [sub_resource type="Resource" id="Resource_j3mg7"]
script = ExtResource("21_k8ji4") script = ExtResource("15_fykw6")
actuation_threshold = 0.5 actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_8w5gu"] [sub_resource type="Resource" id="Resource_8w5gu"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_oapce") input = SubResource("Resource_oapce")
modifiers = Array[ExtResource("5_j3mg7")]([]) modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_j3mg7")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_j3mg7")])
metadata/_guide_triggers_collapsed = false metadata/_guide_triggers_collapsed = false
[sub_resource type="Resource" id="Resource_xt1x5"] [sub_resource type="Resource" id="Resource_xt1x5"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("22_ufouq") action = ExtResource("21_818lq")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_8w5gu")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_8w5gu")])
[sub_resource type="Resource" id="Resource_nf3uo"] [sub_resource type="Resource" id="Resource_nf3uo"]
script = ExtResource("19_2murt") script = ExtResource("19_qkgmj")
button = 10 button = 10
joy_index = -1 joy_index = -1
[sub_resource type="Resource" id="Resource_paxxe"] [sub_resource type="Resource" id="Resource_paxxe"]
script = ExtResource("21_k8ji4") script = ExtResource("15_fykw6")
actuation_threshold = 0.5 actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_500v3"] [sub_resource type="Resource" id="Resource_500v3"]
script = ExtResource("3_ufouq") script = ExtResource("3_yp12v")
override_action_settings = false override_action_settings = false
is_remappable = false is_remappable = false
display_name = "" display_name = ""
display_category = "" display_category = ""
input = SubResource("Resource_nf3uo") input = SubResource("Resource_nf3uo")
modifiers = Array[ExtResource("5_j3mg7")]([]) modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_paxxe")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_paxxe")])
[sub_resource type="Resource" id="Resource_ew1hw"] [sub_resource type="Resource" id="Resource_ew1hw"]
script = ExtResource("1_0pi3k") script = ExtResource("1_qmhk6")
action = ExtResource("23_oapce") action = ExtResource("22_2hs2y")
input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_500v3")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_500v3")])
[resource] [resource]
script = ExtResource("2_ho3ad") script = ExtResource("23_llfhp")
display_name = "" display_name = ""
mappings = Array[ExtResource("1_0pi3k")]([SubResource("Resource_88x08"), SubResource("Resource_tgr2g"), SubResource("Resource_iarn8"), SubResource("Resource_0hmrk"), SubResource("Resource_iihs4"), SubResource("Resource_0s4kt"), SubResource("Resource_xt1x5"), SubResource("Resource_ew1hw")]) mappings = Array[ExtResource("1_qmhk6")]([SubResource("Resource_88x08"), SubResource("Resource_tgr2g"), SubResource("Resource_iarn8"), SubResource("Resource_0hmrk"), SubResource("Resource_iihs4"), SubResource("Resource_0s4kt"), SubResource("Resource_xt1x5"), SubResource("Resource_ew1hw")])
metadata/_custom_type_script = "uid://dsa1dnifd6w32" metadata/_custom_type_script = "uid://dsa1dnifd6w32"

View File

@ -0,0 +1,21 @@
using Godot;
namespace Movementtests.systems;
public partial class WeaponSystem : MeshInstance3D
{
private Node3D _head;
private ShapeCast3D _dashCast3D;
private Camera3D _camera;
private TweenQueueSystem _tweenQueueSystem;
private MantleSystem _mantleSystem;
private MeshInstance3D _dashTarget;
public void Init(Node3D head, Camera3D camera, TweenQueueSystem tweenQueueSystem)
{
_head = head;
_camera = camera;
_tweenQueueSystem = tweenQueueSystem;
}
}

View File

@ -0,0 +1 @@
uid://iii3wfto4t5b

View File

@ -0,0 +1,13 @@
[gd_scene load_steps=3 format=3 uid="uid://ckm3d6k08a72u"]
[ext_resource type="Script" uid="uid://iii3wfto4t5b" path="res://systems/weapon/WeaponSystem.cs" id="1_csqwk"]
[sub_resource type="CylinderMesh" id="CylinderMesh_q5h8a"]
top_radius = 0.01
bottom_radius = 0.01
height = 1.0
[node name="Weapon" type="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
mesh = SubResource("CylinderMesh_q5h8a")
script = ExtResource("1_csqwk")