gd: basic weapon and readability refacto
This commit is contained in:
@ -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"]
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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"
|
21
systems/weapon/WeaponSystem.cs
Normal file
21
systems/weapon/WeaponSystem.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
1
systems/weapon/WeaponSystem.cs.uid
Normal file
1
systems/weapon/WeaponSystem.cs.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://iii3wfto4t5b
|
13
systems/weapon/weapon.tscn
Normal file
13
systems/weapon/weapon.tscn
Normal 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")
|
Reference in New Issue
Block a user