Compare commits

...

14 Commits

Author SHA1 Message Date
7312b2b22b second part of city well on track
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 14s
Create tag and build when new code gets to main / Export (push) Successful in 3m36s
2025-10-14 23:15:55 +02:00
45e8ac2f3c mor city
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 9s
Create tag and build when new code gets to main / Export (push) Successful in 3m17s
2025-10-13 17:12:03 +02:00
46bea7ba14 more greyboxing
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 3m17s
2025-10-07 10:28:11 +02:00
c35ce49669 more greyboxing
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 3m9s
2025-10-03 16:55:24 +02:00
c1e8235895 moving away from blend files and using explicit imports through gltf
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 3m37s
2025-10-03 15:45:40 +02:00
1813973daa weapon clip fix
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Has been cancelled
2025-09-16 11:01:31 +02:00
7b036c5889 fixed mantle after dash bug
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Failing after 2s
2025-09-16 10:28:41 +02:00
88d20431ce updated CI to godot 4.5
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Failing after 2s
2025-09-16 09:43:21 +02:00
d15542e4ed ported to Godot 5 and fixed collisions on tooling script
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Has been cancelled
2025-09-16 09:40:20 +02:00
63ea62ff74 some greyboxing attempt
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Failing after 3h13m16s
2025-09-15 17:33:48 +02:00
c563390796 Merge branch 'main' of https://git.game-dev.space/minimata/MovementTests
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Failing after 3h5m23s
2025-09-13 19:15:41 +02:00
5f37f39558 deleted useless stuss 2025-09-13 19:15:38 +02:00
4922e597d9 Merge pull request 'test adding a blend file mesh' (#2) from more-rework into main
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Has been cancelled
Reviewed-on: #2
2025-09-13 17:14:19 +00:00
739968afbf test adding a clend file mesh 2025-09-13 19:11:50 +02:00
21 changed files with 2306 additions and 168 deletions

View File

@@ -40,7 +40,7 @@ jobs:
runs-on: ubuntu-latest
needs: BumpTag
container:
image: barichello/godot-ci:mono-4.4.1
image: barichello/godot-ci:mono-4.5
steps:
- name: Install node, curl and zip

View File

@@ -1,4 +1,4 @@
<Project Sdk="Godot.NET.Sdk/4.4.1">
<Project Sdk="Godot.NET.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>

131
Movement tests.csproj.old Normal file
View File

@@ -0,0 +1,131 @@
<Project Sdk="Godot.NET.Sdk/4.4.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<RootNamespace>Movementtests</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Content Include="export_presets.cfg" />
<Content Include="menus\assets\git_logo\Git-Logo-2Color.png" />
<Content Include="menus\assets\git_logo\Git-Logo-2Color.png.import" />
<Content Include="menus\assets\git_logo\LICENSE.txt" />
<Content Include="menus\assets\godot_engine_logo\LICENSE.txt" />
<Content Include="menus\assets\godot_engine_logo\logo_vertical_color_dark.png" />
<Content Include="menus\assets\godot_engine_logo\logo_vertical_color_dark.png.import" />
<Content Include="menus\assets\icon.png" />
<Content Include="menus\assets\icon.png.import" />
<Content Include="menus\ATTRIBUTION.md" />
<Content Include="menus\resources\themes\expedition.tres" />
<Content Include="menus\resources\themes\gravity.tres" />
<Content Include="menus\resources\themes\grow.tres" />
<Content Include="menus\resources\themes\lab.tres" />
<Content Include="menus\resources\themes\lore.tres" />
<Content Include="menus\resources\themes\steal_this_theme.tres" />
<Content Include="menus\scenes\credits\scrollable_credits.gd" />
<Content Include="menus\scenes\credits\scrollable_credits.gd.uid" />
<Content Include="menus\scenes\credits\scrollable_credits.tscn" />
<Content Include="menus\scenes\credits\scrolling_credits.gd" />
<Content Include="menus\scenes\credits\scrolling_credits.gd.uid" />
<Content Include="menus\scenes\credits\scrolling_credits.tscn" />
<Content Include="menus\scenes\end_credits\end_credits.gd" />
<Content Include="menus\scenes\end_credits\end_credits.gd.uid" />
<Content Include="menus\scenes\end_credits\end_credits.tscn" />
<Content Include="menus\scenes\game_scene\configurable_sub_viewport.gd" />
<Content Include="menus\scenes\game_scene\configurable_sub_viewport.gd.uid" />
<Content Include="menus\scenes\game_scene\game_ui.tscn" />
<Content Include="menus\scenes\game_scene\input_display_label.gd" />
<Content Include="menus\scenes\game_scene\input_display_label.gd.uid" />
<Content Include="menus\scenes\game_scene\levels\level.gd" />
<Content Include="menus\scenes\game_scene\levels\level.gd.uid" />
<Content Include="menus\scenes\game_scene\levels\level_1.tscn" />
<Content Include="menus\scenes\game_scene\levels\level_2.tscn" />
<Content Include="menus\scenes\game_scene\levels\level_3.tscn" />
<Content Include="menus\scenes\game_scene\tutorials\tutorial_1.tscn" />
<Content Include="menus\scenes\game_scene\tutorials\tutorial_2.tscn" />
<Content Include="menus\scenes\game_scene\tutorials\tutorial_3.tscn" />
<Content Include="menus\scenes\game_scene\tutorial_manager.gd" />
<Content Include="menus\scenes\game_scene\tutorial_manager.gd.uid" />
<Content Include="menus\scenes\loading_screen\level_loading_screen.tscn" />
<Content Include="menus\scenes\loading_screen\loading_screen.gd" />
<Content Include="menus\scenes\loading_screen\loading_screen.gd.uid" />
<Content Include="menus\scenes\loading_screen\loading_screen.tscn" />
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.gd" />
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.gd.uid" />
<Content Include="menus\scenes\loading_screen\loading_screen_with_shader_caching.tscn" />
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.gd" />
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.gd.uid" />
<Content Include="menus\scenes\menus\level_select_menu\level_select_menu.tscn" />
<Content Include="menus\scenes\menus\main_menu\main_menu.gd" />
<Content Include="menus\scenes\menus\main_menu\main_menu.gd.uid" />
<Content Include="menus\scenes\menus\main_menu\main_menu.tscn" />
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.gd" />
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.gd.uid" />
<Content Include="menus\scenes\menus\main_menu\main_menu_with_animations.tscn" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.gd" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_input_option_control.tscn" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\audio\audio_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\game\game_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.gd" />
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\game\reset_game_control\reset_game_control.tscn" />
<Content Include="menus\scenes\menus\options_menu\input\input_extras_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\input\input_options_menu_with_mouse_sensitivity.tscn" />
<Content Include="menus\scenes\menus\options_menu\master_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\master_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\master_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\master_options_menu_with_tabs.tscn" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.gd" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\mini_options_menu_with_reset.tscn" />
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.gd" />
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.gd.uid" />
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu.tscn" />
<Content Include="menus\scenes\menus\options_menu\video\video_options_menu_with_extras.tscn" />
<Content Include="menus\scenes\opening\opening.gd" />
<Content Include="menus\scenes\opening\opening.gd.uid" />
<Content Include="menus\scenes\opening\opening.tscn" />
<Content Include="menus\scenes\opening\opening_with_logo.tscn" />
<Content Include="menus\scenes\overlaid_menus\game_won_menu.gd" />
<Content Include="menus\scenes\overlaid_menus\game_won_menu.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\game_won_menu.tscn" />
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.gd" />
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\level_lost_menu.tscn" />
<Content Include="menus\scenes\overlaid_menus\level_won_menu.gd" />
<Content Include="menus\scenes\overlaid_menus\level_won_menu.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\level_won_menu.tscn" />
<Content Include="menus\scenes\overlaid_menus\mini_options_overlaid_menu.tscn" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.gd" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu.tscn" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.gd" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\overlaid_menu_container.tscn" />
<Content Include="menus\scenes\overlaid_menus\pause_menu.gd" />
<Content Include="menus\scenes\overlaid_menus\pause_menu.gd.uid" />
<Content Include="menus\scenes\overlaid_menus\pause_menu.tscn" />
<Content Include="menus\scripts\game_state.gd" />
<Content Include="menus\scripts\game_state.gd.uid" />
<Content Include="menus\scripts\level_list_and_state_manager.gd" />
<Content Include="menus\scripts\level_list_and_state_manager.gd.uid" />
<Content Include="menus\scripts\level_state.gd" />
<Content Include="menus\scripts\level_state.gd.uid" />
</ItemGroup>
<ItemGroup>
<Folder Include="addons\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="RustyOptions" Version="0.10.1" />
</ItemGroup>
</Project>

Binary file not shown.

View File

@@ -0,0 +1,42 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://2huty67y1g5w"
path="res://.godot/imported/Guard tower.glb-7dc55f179090ff4a70140c5e94077843.scn"
[deps]
source_file="res://assets/greyboxing/Guard tower.glb"
dest_files=["res://.godot/imported/Guard tower.glb-7dc55f179090ff4a70140c5e94077843.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1

File diff suppressed because one or more lines are too long

0
authoring/.gdignore Normal file
View File

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://dmkw8cmalm5k"]
[gd_scene load_steps=15 format=3 uid="uid://dmkw8cmalm5k"]
[ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://player_controller/PlayerController.tscn" id="1_2vsi6"]
[ext_resource type="PackedScene" uid="uid://dkr80d2pi0d41" path="res://addons/guide/debugger/guide_debugger.tscn" id="2_uet8a"]
@@ -10,6 +10,7 @@
[ext_resource type="PackedScene" uid="uid://482s38k0yv35" path="res://maps/Components/stairs.tscn" id="8_pxgdh"]
[ext_resource type="PackedScene" uid="uid://cmfagvnymc2yr" path="res://assets/ladder/ladder.fbx" id="9_ukfuy"]
[ext_resource type="PackedScene" uid="uid://bod7boex72igr" path="res://assets/ladder/ladder-top.fbx" id="10_wctvs"]
[ext_resource type="PackedScene" uid="uid://dip6cce5gtwi8" path="res://assets/greyboxing/guard_tower.tscn" id="11_wctvs"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_0xm2m"]
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
@@ -31,7 +32,7 @@ ssil_enabled = true
[node name="Main" type="Node3D"]
[node name="Player" parent="." instance=ExtResource("1_2vsi6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7981, 101, 0.300598)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.21207, 64.344444, -41.363285)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_1bvp3")
@@ -46,22 +47,19 @@ shadow_enabled = true
visible = false
[node name="Greybox" type="CSGCombiner3D" parent="."]
transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, 0, 0, 0)
transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, -436.97952, 0, -22.618225)
use_collision = true
collision_layer = 3
collision_mask = 5
[node name="Map" type="Sprite3D" parent="Greybox"]
transform = Transform3D(5.65685, -5.65685, -2.47269e-08, 0, -3.49691e-07, 0.8, -5.65685, -5.65685, -2.47269e-08, 141.335, 0, -122.33)
texture = ExtResource("3_ruo5i")
[node name="CSGBox3D11" type="CSGBox3D" parent="Greybox"]
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 149.932, -1, -129.284)
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 420.50897, -9.025178, 202.40102)
use_collision = true
size = Vector3(398.5, 1, 288.5)
material = ExtResource("3_cieeo")
[node name="GuardTower" type="CSGCombiner3D" parent="Greybox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -83.7691, 0, 0.750248)
[node name="CSGBox3D6" type="CSGBox3D" parent="Greybox/GuardTower"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 45.75, 0)
@@ -1182,3 +1180,11 @@ transform = Transform3D(0.747027, 0, -0.664797, 0, 1, 0, 0.664797, 0, 0.747027,
use_collision = true
size = Vector3(16, 19, 4.5)
material = ExtResource("3_cieeo")
[node name="Map" type="Sprite3D" parent="."]
transform = Transform3D(-3.278354e-07, -7.5, -3.278354e-08, 0, -3.278354e-07, 0.75, -7.5, 3.278354e-07, 1.4330142e-15, 7.1878185, 8.602432, -175.5159)
visible = false
texture = ExtResource("3_ruo5i")
[node name="Guard tower" parent="." instance=ExtResource("11_wctvs")]
transform = Transform3D(0.09033705, 0, 0.99591124, 0, 1, 0, -0.99591124, 0, 0.09033705, -4.6100636, 1.5, 0.5658741)

View File

@@ -53,6 +53,7 @@ WalkSpeed = 7.5
AccelerationAir = 2.0
DecelerationAir = 0.1
Weight = 5.0
MantleTime = 0.2
SimpleJumpStartVelocity = 8.0
SimpleJumpHangTimeInFrames = 1
SimpleJumpGravityLesseningFactor = 2.5
@@ -201,6 +202,7 @@ offset_left = 1524.0
offset_top = 1.0
offset_right = -8.0
offset_bottom = 1.0
enabled = false
initial_node_to_watch = NodePath("../StateChart")
[node name="UI" type="CanvasLayer" parent="."]

View File

@@ -310,7 +310,7 @@ public partial class PlayerController : CharacterBody3D
// Movement stuff
// Getting universal setting from GODOT editor to be in sync
_gravity = (float)ProjectSettings.GetSetting("physics/3d/default_gravity");
MantleSystem.Init(HeadSystem);
MantleSystem.Init();
StairsSystem.Init(stairsBelowRayCast3D, stairsAheadRayCast3D, cameraSmooth);
DashSystem.Init(HeadSystem, camera, TweenQueueSystem);
WeaponSystem.Init(HeadSystem, camera);
@@ -438,7 +438,7 @@ public partial class PlayerController : CharacterBody3D
{
if (CanMantle())
{
MantleToLocation(MantleSystem.FindMantleInFrontOfPlayer().Unwrap());
MantleToLocation(MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y).Unwrap());
return;
}
@@ -871,7 +871,7 @@ public partial class PlayerController : CharacterBody3D
{
// Try mantling but don't know if this is useful
if (CanMantle())
MantleToLocation(MantleSystem.FindMantleInFrontOfPlayer().Unwrap());
MantleToLocation(MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y).Unwrap());
}
public void FinishPoweredDash()
@@ -912,7 +912,7 @@ public partial class PlayerController : CharacterBody3D
// Mantling
public bool CanMantle()
{
var mantleLocationResult = MantleSystem.FindMantleInFrontOfPlayer();
var mantleLocationResult = MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y);
return mantleLocationResult.IsSome(out _);
}
public void MantleToLocation(Vector3 location)

View File

@@ -16,7 +16,7 @@ warnings/check_invalid_track_paths=false
config/name="Movement tests"
run/main_scene="uid://pk8ypa04qy6x"
config/features=PackedStringArray("4.4", "C#", "Forward Plus")
config/features=PackedStringArray("4.5", "C#", "Forward Plus")
config/icon="res://icon.svg"
[autoload]

View File

@@ -66,7 +66,7 @@ public partial class DashSystem: Node3D
_tweenQueueSystem = tweenQueueSystem;
_mantleSystem = GetNode<MantleSystem>("MantleSystem");
_mantleSystem.Init(this);
_mantleSystem.Init();
_dashTarget = GetNode<MeshInstance3D>("DashTarget");
_dashTarget.SetVisible(false);
@@ -116,7 +116,8 @@ public partial class DashSystem: Node3D
var targetMaterial = (StandardMaterial3D) _dashTarget.GetSurfaceOverrideMaterial(0);
targetMaterial.SetAlbedo(targetColor);
_dashTarget.SetVisible(true);
_dashTarget.SetGlobalPosition(PlannedLocation);
var targetLocation = ShouldMantle ? PlannedMantleLocation : PlannedLocation;
_dashTarget.SetGlobalPosition(targetLocation);
}
public void StopPreparingDash()

View File

@@ -35,7 +35,7 @@ mesh = SubResource("SphereMesh_qu4wy")
surface_material_override/0 = SubResource("StandardMaterial3D_v31n3")
[node name="MantleSystem" parent="." instance=ExtResource("2_pff7b")]
MantleEndLocationDistanceFromWall = 0.3
MantleEndLocationDistanceFromWall = 0.25
MantleHeightCastStart = 2.0
[node name="DashIndicator" parent="." instance=ExtResource("2_tqt6i")]

View File

@@ -32,9 +32,6 @@
[sub_resource type="Resource" id="Resource_vkvga"]
script = ExtResource("4_1rw8g")
x = 0
y = 1
joy_index = -1
[sub_resource type="Resource" id="Resource_kb1id"]
script = ExtResource("6_li5ak")
@@ -43,17 +40,11 @@ order = 2
[sub_resource type="Resource" id="Resource_rwam6"]
script = ExtResource("7_si4d4")
lower_threshold = 0.1
upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_1igva"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_vkvga")
modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_kb1id"), SubResource("Resource_rwam6")])
triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_88x08"]
script = ExtResource("1_qmhk6")
@@ -64,33 +55,21 @@ metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_05q5j"]
script = ExtResource("10_cvxqo")
axis = 2
joy_index = -1
[sub_resource type="Resource" id="Resource_tn8ci"]
script = ExtResource("7_si4d4")
lower_threshold = 0.2
upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_1koh7"]
script = ExtResource("11_j3axn")
scale = Vector3(0.3, 0.3, 0.3)
apply_delta_time = false
[sub_resource type="Resource" id="Resource_eep0a"]
script = ExtResource("12_kxb2c")
x = true
y = true
z = true
[sub_resource type="Resource" id="Resource_dew8i"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_05q5j")
modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_tn8ci"), SubResource("Resource_1koh7"), SubResource("Resource_eep0a")])
triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_tgr2g"]
script = ExtResource("1_qmhk6")
@@ -101,33 +80,21 @@ metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_pf0ii"]
script = ExtResource("10_cvxqo")
axis = 3
joy_index = -1
[sub_resource type="Resource" id="Resource_nh7x4"]
script = ExtResource("7_si4d4")
lower_threshold = 0.2
upper_threshold = 1.0
[sub_resource type="Resource" id="Resource_04n84"]
script = ExtResource("11_j3axn")
scale = Vector3(0.1, 0.1, 0.1)
apply_delta_time = false
[sub_resource type="Resource" id="Resource_m3aj7"]
script = ExtResource("12_kxb2c")
x = true
y = true
z = true
[sub_resource type="Resource" id="Resource_qu2wi"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_pf0ii")
modifiers = Array[ExtResource("5_0qat1")]([SubResource("Resource_nh7x4"), SubResource("Resource_04n84"), SubResource("Resource_m3aj7")])
triggers = Array[ExtResource("8_2tfaw")]([])
[sub_resource type="Resource" id="Resource_iarn8"]
script = ExtResource("1_qmhk6")
@@ -138,20 +105,13 @@ metadata/_guide_input_mappings_collapsed = true
[sub_resource type="Resource" id="Resource_si4d4"]
script = ExtResource("10_cvxqo")
axis = 4
joy_index = -1
[sub_resource type="Resource" id="Resource_2tfaw"]
script = ExtResource("15_g6bbx")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_q86qg"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_si4d4")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_2tfaw")])
[sub_resource type="Resource" id="Resource_cvxqo"]
@@ -163,20 +123,13 @@ metadata/_guide_input_mappings_collapsed = false
[sub_resource type="Resource" id="Resource_llfhp"]
script = ExtResource("10_cvxqo")
axis = 4
joy_index = -1
[sub_resource type="Resource" id="Resource_ib0yi"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_r6kml"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_llfhp")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_ib0yi")])
[sub_resource type="Resource" id="Resource_tb8ii"]
@@ -187,20 +140,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_r6kml")])
[sub_resource type="Resource" id="Resource_cqc4k"]
script = ExtResource("10_cvxqo")
axis = 4
joy_index = -1
[sub_resource type="Resource" id="Resource_vanwy"]
script = ExtResource("17_s8kjn")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_bkx7d"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_cqc4k")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_vanwy")])
[sub_resource type="Resource" id="Resource_iihs4"]
@@ -212,20 +158,13 @@ metadata/_guide_input_mappings_collapsed = false
[sub_resource type="Resource" id="Resource_fykw6"]
script = ExtResource("10_cvxqo")
axis = 5
joy_index = -1
[sub_resource type="Resource" id="Resource_rvpjj"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_s8kjn"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_fykw6")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_rvpjj")])
metadata/_guide_triggers_collapsed = false
@@ -237,20 +176,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_s8kjn")])
[sub_resource type="Resource" id="Resource_qkgmj"]
script = ExtResource("10_cvxqo")
axis = 5
joy_index = -1
[sub_resource type="Resource" id="Resource_st2ej"]
script = ExtResource("17_s8kjn")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_818lq"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_qkgmj")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_st2ej")])
[sub_resource type="Resource" id="Resource_2hs2y"]
@@ -261,20 +193,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_818lq")])
[sub_resource type="Resource" id="Resource_lfx76"]
script = ExtResource("19_qkgmj")
button = 2
joy_index = -1
[sub_resource type="Resource" id="Resource_oruo7"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_4ee3d"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_lfx76")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_oruo7")])
[sub_resource type="Resource" id="Resource_0s4kt"]
@@ -284,21 +209,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_4ee3d")])
[sub_resource type="Resource" id="Resource_1fkas"]
script = ExtResource("19_qkgmj")
button = 0
joy_index = -1
[sub_resource type="Resource" id="Resource_6pxii"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_jy4f1"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_1fkas")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_6pxii")])
metadata/_guide_triggers_collapsed = false
@@ -309,18 +226,10 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_jy4f1")])
[sub_resource type="Resource" id="Resource_oapce"]
script = ExtResource("19_qkgmj")
button = 0
joy_index = -1
[sub_resource type="Resource" id="Resource_8w5gu"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_oapce")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([])
metadata/_guide_triggers_collapsed = false
[sub_resource type="Resource" id="Resource_xt1x5"]
@@ -331,20 +240,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_8w5gu")])
[sub_resource type="Resource" id="Resource_li5ak"]
script = ExtResource("19_qkgmj")
button = 10
joy_index = -1
[sub_resource type="Resource" id="Resource_paxxe"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_500v3"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_li5ak")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_paxxe")])
[sub_resource type="Resource" id="Resource_ew1hw"]
@@ -355,20 +257,13 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_500v3")])
[sub_resource type="Resource" id="Resource_g6bbx"]
script = ExtResource("19_qkgmj")
button = 1
joy_index = -1
[sub_resource type="Resource" id="Resource_yp12v"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_1rw8g"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_g6bbx")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_yp12v")])
[sub_resource type="Resource" id="Resource_0qat1"]
@@ -380,20 +275,13 @@ metadata/_guide_input_mappings_collapsed = false
[sub_resource type="Resource" id="Resource_j3axn"]
script = ExtResource("19_qkgmj")
button = 3
joy_index = -1
[sub_resource type="Resource" id="Resource_kxb2c"]
script = ExtResource("15_fykw6")
actuation_threshold = 0.5
[sub_resource type="Resource" id="Resource_v2ywt"]
script = ExtResource("3_yp12v")
override_action_settings = false
is_remappable = false
display_name = ""
display_category = ""
input = SubResource("Resource_j3axn")
modifiers = Array[ExtResource("5_0qat1")]([])
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_kxb2c")])
[sub_resource type="Resource" id="Resource_vtk18"]
@@ -403,6 +291,5 @@ input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_v2ywt")])
[resource]
script = ExtResource("23_llfhp")
display_name = ""
mappings = Array[ExtResource("1_qmhk6")]([SubResource("Resource_88x08"), SubResource("Resource_tgr2g"), SubResource("Resource_iarn8"), SubResource("Resource_cvxqo"), SubResource("Resource_tb8ii"), SubResource("Resource_iihs4"), SubResource("Resource_vibkn"), SubResource("Resource_2hs2y"), SubResource("Resource_0s4kt"), SubResource("Resource_d2r0d"), SubResource("Resource_xt1x5"), SubResource("Resource_ew1hw"), SubResource("Resource_0qat1"), SubResource("Resource_vtk18")])
metadata/_custom_type_script = "uid://dsa1dnifd6w32"

View File

@@ -5,50 +5,40 @@ namespace Movementtests.systems;
public partial class MantleSystem: Node3D
{
[Export(PropertyHint.Range, "0,2,0.1,suffix:m,or_greater")]
[Export(PropertyHint.Range, "0,2,0.01,suffix:m,or_greater")]
public float MantleEndLocationDistanceFromWall { get; set; } = 1f;
[Export(PropertyHint.Range, "0,10,0.1,suffix:m,or_greater")]
public float MantleHeightCastStart { get; set; } = 2f;
[Export(PropertyHint.Range, "0,10,0.01,suffix:m,or_greater")]
public float MaxStepHeight = 0.5f;
private Node3D _head;
private ShapeCast3D _wallInFrontCast3D;
private ShapeCast3D _mantleCast3D;
private RayCast3D _mantleCheckCast3D;
private Option<Vector3> _mantleLocation;
public void Init(Node3D head)
public void Init()
{
_head = head;
_wallInFrontCast3D = GetNode<ShapeCast3D>("WallInFrontCast3D");
_mantleCast3D = GetNode<ShapeCast3D>("MantleCast3D");
}
public override void _PhysicsProcess(double delta)
public Option<Vector3> FindMantleForHeadRotation(float rotation)
{
base._PhysicsProcess(delta);
_wallInFrontCast3D.SetRotation(new Vector3(
_wallInFrontCast3D.Rotation.X,
_head.Rotation.Y,
rotation,
_wallInFrontCast3D.Rotation.Z));
if (!_wallInFrontCast3D.IsColliding())
{
_mantleLocation = Option<Vector3>.None;
return;
return Option<Vector3>.None;
}
var collisionPoint = _wallInFrontCast3D.GetCollisionPoint(0);
var collisionNormal = _wallInFrontCast3D.GetCollisionNormal(0);
_mantleLocation = FindMantleLocationAtPoint(collisionPoint, collisionNormal);
}
public Option<Vector3> FindMantleInFrontOfPlayer()
{
return _mantleLocation;
return FindMantleLocationAtPoint(collisionPoint, collisionNormal);
}
public Option<Vector3> FindMantleLocationAtPoint(Vector3 point, Vector3 wallNormal)
@@ -59,8 +49,8 @@ public partial class MantleSystem: Node3D
_mantleCast3D.SetGlobalPosition(shapeCastStartLocation);
var targetLocation = Vector3.Down * MantleHeightCastStart + Vector3.Up * MaxStepHeight;
_mantleCast3D.SetTargetPosition(targetLocation);
if (_mantleCast3D.IsColliding() && _mantleCast3D.GetCollisionNormal(0).Y > 0.9f)
if (_mantleCast3D.IsColliding() && _mantleCast3D.GetCollisionNormal(0).Y >= 0.1f)
return Option.Some(_mantleCast3D.GetCollisionPoint(0));
return Option<Vector3>.None;
}

View File

@@ -218,22 +218,4 @@ public partial class MoveSystem : Node3D
var jumpVelocity = jumpForce * effectiveJumpDirection * boost;
_parent.Velocity = currentHorizontalVelocity + jumpVelocity;
}
public bool CanMantle()
{
var mantleLocationResult = _mantleSystem.FindMantleInFrontOfPlayer();
return mantleLocationResult.IsSome(out _);
}
public Option<Tween> Mantle()
{
var mantleLocationResult = _mantleSystem.FindMantleInFrontOfPlayer();
if (mantleLocationResult.IsSome(out var mantleLocation))
{
var duration = 0.1f * mantleLocation.DistanceTo(_parent.Position);
var tween = _tweenQueueSystem.TweenToLocation(new TweenQueueSystem.TweenInputs(mantleLocation, duration));
return tween.Some();
}
return Option<Tween>.None;
}
}

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://ckm3d6k08a72u"]
[gd_scene load_steps=10 format=3 uid="uid://ckm3d6k08a72u"]
[ext_resource type="Script" uid="uid://iii3wfto4t5b" path="res://systems/weapon/WeaponSystem.cs" id="1_csqwk"]
[ext_resource type="PackedScene" uid="uid://dbe5f0p6lvqtr" path="res://systems/tween_queue/tween_queue_system.tscn" id="2_x1nha"]
@@ -11,7 +11,14 @@
height = 1.0
radius = 0.1
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5owyf"]
use_z_clip_scale = true
z_clip_scale = 0.9
use_fov_override = true
fov_override = 70.0
[sub_resource type="CylinderMesh" id="CylinderMesh_x1nha"]
material = SubResource("StandardMaterial3D_5owyf")
top_radius = 0.0
bottom_radius = 0.05
height = 1.0

View File

@@ -0,0 +1,40 @@
@tool
extends Node3D
@export_tool_button("Generate collisions", "Callable") var generate_col_action = generate_collisions
@export_group("Layers and masks")
@export_flags_3d_physics var collision_layer
@export_flags_3d_physics var collision_mask
func get_all_children_of_type(node, type) -> Array:
var nodes : Array = []
for child in node.get_children():
if is_instance_of(child, type):
nodes.append(child)
if child.get_child_count() > 0:
nodes.append_array(get_all_children_of_type(child, type))
return nodes
func clear_collisions_on_meshes(meshes: Array):
for mesh_instance: MeshInstance3D in meshes:
for child in mesh_instance.get_children():
child.queue_free()
func generate_collisions_on_meshes(meshes: Array):
for mesh_instance: MeshInstance3D in meshes:
mesh_instance.create_trimesh_collision()
func set_collision_mask_on_bodies(bodies: Array):
for staticbody: StaticBody3D in bodies:
staticbody.collision_layer = collision_layer
staticbody.collision_mask = collision_mask
func generate_collisions():
var mesh_instances = get_all_children_of_type(self, MeshInstance3D)
clear_collisions_on_meshes(mesh_instances)
generate_collisions_on_meshes(mesh_instances)
var staticbody_instances = get_all_children_of_type(self, StaticBody3D)
set_collision_mask_on_bodies(staticbody_instances)

View File

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