diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 6248c16..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index f28239b..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,4 +0,0 @@
-root = true
-
-[*]
-charset = utf-8
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 8ad74f7..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Normalize EOL for all files that Git considers text files.
-* text=auto eol=lf
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index ae13eeb..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "godotTools.editorPath.godot4": "c:\\Users\\user\\Desktop\\Godot_v4.4.1-stable_win64.exe\\Godot_v4.4.1-stable_win64.exe"
-}
\ No newline at end of file
diff --git a/Assets/Shaders/outline.gdshader b/Assets/Shaders/outline.gdshader
deleted file mode 100644
index 6d9b0be..0000000
--- a/Assets/Shaders/outline.gdshader
+++ /dev/null
@@ -1,112 +0,0 @@
-shader_type spatial;
-render_mode unshaded;
-
-/*
- Normal/Depth outline shader. Apply to nodes as a next pass shader texture.
- Inspired by Yui Kinomoto @arlez80, lukky_nl (YT), Robin Seibold (YT)
- Uses Sobel Edge detection on a normal and depth texture
- Written by William Li (LoudFlameLava)
-
- MIT License
-*/
-
-// Might create an outline at the edge of the viewport
-
-uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
-uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap;
-uniform sampler2D NORMAL_TEXTURE : hint_normal_roughness_texture, filter_linear_mipmap;
-
-uniform float normal_threshold = 0.1;
-uniform float depth_threshold = 0.05;
-uniform float depth_artifact_correction_coef = 2;
-uniform vec3 outline_color: source_color;
-
-const mat3 sobel_y = mat3(
- vec3(1.0, 0.0, -1.0),
- vec3(2.0, 0.0, -2.0),
- vec3(1.0, 0.0, -1.0)
-);
-
-const mat3 sobel_x = mat3(
- vec3(1.0, 2.0, 1.0),
- vec3(0.0, 0.0, 0.0),
- vec3(-1.0, -2.0, -1.0)
-);
-
-float edge_value_normal(sampler2D normal_tex, vec2 uv, vec2 pixel_size, mat3 sobel) {
- float output = 0.0;
- vec3 normal = texture(normal_tex, uv).rgb;
- vec3 n = texture(NORMAL_TEXTURE, uv + vec2(0.0, -pixel_size.y)).rgb;
- vec3 s = texture(NORMAL_TEXTURE, uv + vec2(0.0, pixel_size.y)).rgb;
- vec3 e = texture(NORMAL_TEXTURE, uv + vec2(pixel_size.x, 0.0)).rgb;
- vec3 w = texture(NORMAL_TEXTURE, uv + vec2(-pixel_size.x, 0.0)).rgb;
- vec3 nw = texture(NORMAL_TEXTURE, uv + vec2(-pixel_size.x, -pixel_size.y)).rgb;
- vec3 ne = texture(NORMAL_TEXTURE, uv + vec2(pixel_size.x, -pixel_size.y)).rgb;
- vec3 sw = texture(NORMAL_TEXTURE, uv + vec2(-pixel_size.x, pixel_size.y)).rgb;
- vec3 se = texture(NORMAL_TEXTURE, uv + vec2(pixel_size.x, pixel_size.y)).rgb;
-
- mat3 error_mat = mat3(
- vec3(length(normal - nw), length(normal - n), length(normal - ne)),
- vec3(length(normal - w), 0.0, length(normal - e)),
- vec3(length(normal - sw), length(normal - s), length(normal - se))
- );
-
- output += dot(sobel[0], error_mat[0]);
- output += dot(sobel[1], error_mat[1]);
- output += dot(sobel[2], error_mat[2]);
- return abs(output);
-}
-
-float get_depth(sampler2D depth_tex, vec2 uv, mat4 inv_projection_matrix) {
- float depth_raw = texture(depth_tex, uv).x;
- vec3 ndc = vec3(uv * 2.0 - 1.0, depth_raw);
- vec4 view = inv_projection_matrix * vec4(ndc, 1.0);
- view.xyz /= view.w;
- float depth_linear = -view.z;
- return depth_linear;
-}
-
-float edge_value_depth(sampler2D depth_tex, vec2 uv, vec2 pixel_size, mat3 sobel, mat4 inv_projection_matrix){
- float output = 0.0;
- float depth = get_depth(depth_tex, uv, inv_projection_matrix);
- float n = get_depth(depth_tex, uv + vec2(0.0, -pixel_size.y), inv_projection_matrix);
- float s = get_depth(depth_tex, uv + vec2(0.0, pixel_size.y), inv_projection_matrix);
- float e = get_depth(depth_tex, uv + vec2(pixel_size.x, 0.0), inv_projection_matrix);
- float w = get_depth(depth_tex, uv + vec2(-pixel_size.x, 0.0), inv_projection_matrix);
- float ne = get_depth(depth_tex, uv + vec2(pixel_size.x, -pixel_size.y), inv_projection_matrix);
- float nw = get_depth(depth_tex, uv + vec2(-pixel_size.x, -pixel_size.y), inv_projection_matrix);
- float se = get_depth(depth_tex, uv + vec2(pixel_size.x, pixel_size.y), inv_projection_matrix);
- float sw = get_depth(depth_tex, uv + vec2(-pixel_size.x, pixel_size.y), inv_projection_matrix);
-
- mat3 error_mat = mat3(
- vec3((depth - nw)/depth, (depth - n)/depth, (depth - ne)/depth),
- vec3((depth - w)/depth, 0.0, (depth - e)/depth),
- vec3((depth - sw)/depth, (depth - s)/depth, (depth - se)/depth)
- );
-
- output += dot(sobel[0], error_mat[0]);
- output += dot(sobel[1], error_mat[1]);
- output += dot(sobel[2], error_mat[2]);
- return abs(output);
-}
-
-
-void fragment() {
- float has_outline = 0.0;
- vec2 pixel_size = vec2(1.0) / VIEWPORT_SIZE;
- ALBEDO = texture(SCREEN_TEXTURE, SCREEN_UV).xyz;
- //ALBEDO = vec3(get_depth(DEPTH_TEXTURE, SCREEN_UV, INV_PROJECTION_MATRIX));
- if (edge_value_normal(NORMAL_TEXTURE, SCREEN_UV, pixel_size, sobel_x) + edge_value_normal(NORMAL_TEXTURE, SCREEN_UV, pixel_size, sobel_y) > normal_threshold){
- ALBEDO = outline_color;
- has_outline += 1.0;
- }
- vec3 normal = texture(NORMAL_TEXTURE, SCREEN_UV).rgb;
- float angle = 1.0 - dot(normalize(normal-vec3(0.5)), vec3(0.0,0.0,1.0));
- if (edge_value_depth(DEPTH_TEXTURE, SCREEN_UV, pixel_size, sobel_x, INV_PROJECTION_MATRIX) + edge_value_depth(DEPTH_TEXTURE, SCREEN_UV, pixel_size, sobel_y, INV_PROJECTION_MATRIX) > depth_threshold + angle * depth_artifact_correction_coef){
- ALBEDO = outline_color;
- has_outline += 1.0;
- }
- if (has_outline < 0.1){
- ALPHA = 0.0;
- }
-}
diff --git a/Assets/Shaders/outline.gdshader.uid b/Assets/Shaders/outline.gdshader.uid
deleted file mode 100644
index 8dc51d4..0000000
--- a/Assets/Shaders/outline.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c0chn7ll6p7yk
diff --git a/Assets/Textures/black_board.png b/Assets/Textures/black_board.png
deleted file mode 100644
index e063f8a..0000000
Binary files a/Assets/Textures/black_board.png and /dev/null differ
diff --git a/Assets/Textures/black_board.png.import b/Assets/Textures/black_board.png.import
deleted file mode 100644
index c5d6778..0000000
--- a/Assets/Textures/black_board.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ct5kq6psirv1"
-path="res://.godot/imported/black_board.png-d2b5afa20c384e2e4b3e7a80827129fd.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/black_board.png"
-dest_files=["res://.godot/imported/black_board.png-d2b5afa20c384e2e4b3e7a80827129fd.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_01.png b/Assets/Textures/kenny/Dark/texture_01.png
deleted file mode 100644
index 69be211..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_01.png.import b/Assets/Textures/kenny/Dark/texture_01.png.import
deleted file mode 100644
index 3a72ae1..0000000
--- a/Assets/Textures/kenny/Dark/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bvarfgw4r5181"
-path.s3tc="res://.godot/imported/texture_01.png-6071662e99660834e61c6b1e09bbab86.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-6071662e99660834e61c6b1e09bbab86.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Dark/texture_02.png b/Assets/Textures/kenny/Dark/texture_02.png
deleted file mode 100644
index 6fb471b..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_02.png.import b/Assets/Textures/kenny/Dark/texture_02.png.import
deleted file mode 100644
index 107ec0a..0000000
--- a/Assets/Textures/kenny/Dark/texture_02.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://youvyib1feqp"
-path.s3tc="res://.godot/imported/texture_02.png-50bb9d4d4ebbae05fd29423b1eebdf02.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-50bb9d4d4ebbae05fd29423b1eebdf02.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Dark/texture_03.png b/Assets/Textures/kenny/Dark/texture_03.png
deleted file mode 100644
index 3f8b186..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_03.png.import b/Assets/Textures/kenny/Dark/texture_03.png.import
deleted file mode 100644
index 5d942fa..0000000
--- a/Assets/Textures/kenny/Dark/texture_03.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dtr5bvxymd50e"
-path="res://.godot/imported/texture_03.png-09f6510aeb06a66b61241151fd45cc12.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-09f6510aeb06a66b61241151fd45cc12.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_04.png b/Assets/Textures/kenny/Dark/texture_04.png
deleted file mode 100644
index e2bc22b..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_04.png.import b/Assets/Textures/kenny/Dark/texture_04.png.import
deleted file mode 100644
index d695f31..0000000
--- a/Assets/Textures/kenny/Dark/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://gebarmhhtmbt"
-path="res://.godot/imported/texture_04.png-778404077545d0988503bb93ed90a85c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-778404077545d0988503bb93ed90a85c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_05.png b/Assets/Textures/kenny/Dark/texture_05.png
deleted file mode 100644
index 3fd2e56..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_05.png.import b/Assets/Textures/kenny/Dark/texture_05.png.import
deleted file mode 100644
index 6655741..0000000
--- a/Assets/Textures/kenny/Dark/texture_05.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ca0qmdc4cv8uh"
-path.s3tc="res://.godot/imported/texture_05.png-0310eec4e5c94e9c6cb4c0e3fd371255.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-0310eec4e5c94e9c6cb4c0e3fd371255.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Dark/texture_06.png b/Assets/Textures/kenny/Dark/texture_06.png
deleted file mode 100644
index 45d4a34..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_06.png.import b/Assets/Textures/kenny/Dark/texture_06.png.import
deleted file mode 100644
index bbe7174..0000000
--- a/Assets/Textures/kenny/Dark/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://carepjxbifxnk"
-path="res://.godot/imported/texture_06.png-2b3f2645aa79305efcc877465d8ddcb1.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-2b3f2645aa79305efcc877465d8ddcb1.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_07.png b/Assets/Textures/kenny/Dark/texture_07.png
deleted file mode 100644
index adf5e6f..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_07.png.import b/Assets/Textures/kenny/Dark/texture_07.png.import
deleted file mode 100644
index abdbb75..0000000
--- a/Assets/Textures/kenny/Dark/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://kjr70h6gg01b"
-path="res://.godot/imported/texture_07.png-ba02094d10277610cee39722359a74f8.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-ba02094d10277610cee39722359a74f8.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_08.png b/Assets/Textures/kenny/Dark/texture_08.png
deleted file mode 100644
index a5a9f24..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_08.png.import b/Assets/Textures/kenny/Dark/texture_08.png.import
deleted file mode 100644
index 837ec38..0000000
--- a/Assets/Textures/kenny/Dark/texture_08.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bhy0xbgh23y4d"
-path.s3tc="res://.godot/imported/texture_08.png-66ed16371ee09d695d3da92281e2484c.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-66ed16371ee09d695d3da92281e2484c.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Dark/texture_09.png b/Assets/Textures/kenny/Dark/texture_09.png
deleted file mode 100644
index 57cc607..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_09.png.import b/Assets/Textures/kenny/Dark/texture_09.png.import
deleted file mode 100644
index 4748cd6..0000000
--- a/Assets/Textures/kenny/Dark/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ci677phv85dbo"
-path="res://.godot/imported/texture_09.png-a339e9ab2c228fa9a3d4ef6e1db33ba6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-a339e9ab2c228fa9a3d4ef6e1db33ba6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_10.png b/Assets/Textures/kenny/Dark/texture_10.png
deleted file mode 100644
index 4c737d0..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_10.png.import b/Assets/Textures/kenny/Dark/texture_10.png.import
deleted file mode 100644
index b094f99..0000000
--- a/Assets/Textures/kenny/Dark/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://beeg4qas2fsac"
-path="res://.godot/imported/texture_10.png-ff641a8ee3894ad52a58711b2e06c0bf.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-ff641a8ee3894ad52a58711b2e06c0bf.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_11.png b/Assets/Textures/kenny/Dark/texture_11.png
deleted file mode 100644
index 424ba71..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_11.png.import b/Assets/Textures/kenny/Dark/texture_11.png.import
deleted file mode 100644
index 6653d85..0000000
--- a/Assets/Textures/kenny/Dark/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cqht8ngfdmuwj"
-path="res://.godot/imported/texture_11.png-355f894fc0cda8a832f22297cc09266e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-355f894fc0cda8a832f22297cc09266e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_12.png b/Assets/Textures/kenny/Dark/texture_12.png
deleted file mode 100644
index 32169db..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_12.png.import b/Assets/Textures/kenny/Dark/texture_12.png.import
deleted file mode 100644
index 3a1e07f..0000000
--- a/Assets/Textures/kenny/Dark/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bfh6mw4in04i4"
-path="res://.godot/imported/texture_12.png-6e528b01bab6560b8cf1c4de1f66ee17.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-6e528b01bab6560b8cf1c4de1f66ee17.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Dark/texture_13.png b/Assets/Textures/kenny/Dark/texture_13.png
deleted file mode 100644
index 13c4388..0000000
Binary files a/Assets/Textures/kenny/Dark/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Dark/texture_13.png.import b/Assets/Textures/kenny/Dark/texture_13.png.import
deleted file mode 100644
index 2c5dca2..0000000
--- a/Assets/Textures/kenny/Dark/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://e43jdimtr6vs"
-path="res://.godot/imported/texture_13.png-00e2369d26e06bdd9f32f6d062d5ae9f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Dark/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-00e2369d26e06bdd9f32f6d062d5ae9f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_01.png b/Assets/Textures/kenny/Green/texture_01.png
deleted file mode 100644
index d576514..0000000
Binary files a/Assets/Textures/kenny/Green/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_01.png.import b/Assets/Textures/kenny/Green/texture_01.png.import
deleted file mode 100644
index 2e610a0..0000000
--- a/Assets/Textures/kenny/Green/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b0e6e1xjl18aa"
-path.s3tc="res://.godot/imported/texture_01.png-e84a1fc48ff8aea2304817d95826f7d1.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-e84a1fc48ff8aea2304817d95826f7d1.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Green/texture_02.png b/Assets/Textures/kenny/Green/texture_02.png
deleted file mode 100644
index 7bc7cf8..0000000
Binary files a/Assets/Textures/kenny/Green/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_02.png.import b/Assets/Textures/kenny/Green/texture_02.png.import
deleted file mode 100644
index 17bdc5f..0000000
--- a/Assets/Textures/kenny/Green/texture_02.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d2r1dqvx1h5vk"
-path="res://.godot/imported/texture_02.png-c0b2f3ead5d1423b3fb0f2462b41f12c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-c0b2f3ead5d1423b3fb0f2462b41f12c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_03.png b/Assets/Textures/kenny/Green/texture_03.png
deleted file mode 100644
index e2a3889..0000000
Binary files a/Assets/Textures/kenny/Green/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_03.png.import b/Assets/Textures/kenny/Green/texture_03.png.import
deleted file mode 100644
index 82b3a49..0000000
--- a/Assets/Textures/kenny/Green/texture_03.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bnnes2g3lmmqc"
-path="res://.godot/imported/texture_03.png-2ea7d5642901462925769bc9b4821182.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-2ea7d5642901462925769bc9b4821182.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_04.png b/Assets/Textures/kenny/Green/texture_04.png
deleted file mode 100644
index 3952bef..0000000
Binary files a/Assets/Textures/kenny/Green/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_04.png.import b/Assets/Textures/kenny/Green/texture_04.png.import
deleted file mode 100644
index dd8072d..0000000
--- a/Assets/Textures/kenny/Green/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://djti0r1txl6fi"
-path="res://.godot/imported/texture_04.png-4da8cab1d5443c2be1a0905e87be7e41.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-4da8cab1d5443c2be1a0905e87be7e41.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_05.png b/Assets/Textures/kenny/Green/texture_05.png
deleted file mode 100644
index 84976ba..0000000
Binary files a/Assets/Textures/kenny/Green/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_05.png.import b/Assets/Textures/kenny/Green/texture_05.png.import
deleted file mode 100644
index 9c84906..0000000
--- a/Assets/Textures/kenny/Green/texture_05.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bbkkd0r1324rf"
-path="res://.godot/imported/texture_05.png-6112786d3ad5fc49141106fa07e460a6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-6112786d3ad5fc49141106fa07e460a6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_06.png b/Assets/Textures/kenny/Green/texture_06.png
deleted file mode 100644
index 1128198..0000000
Binary files a/Assets/Textures/kenny/Green/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_06.png.import b/Assets/Textures/kenny/Green/texture_06.png.import
deleted file mode 100644
index 0c10369..0000000
--- a/Assets/Textures/kenny/Green/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://vcey0liprcku"
-path="res://.godot/imported/texture_06.png-6ed4f201eb81a7ded2fcf27afbb76cd3.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-6ed4f201eb81a7ded2fcf27afbb76cd3.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_07.png b/Assets/Textures/kenny/Green/texture_07.png
deleted file mode 100644
index 3160860..0000000
Binary files a/Assets/Textures/kenny/Green/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_07.png.import b/Assets/Textures/kenny/Green/texture_07.png.import
deleted file mode 100644
index 105f5d7..0000000
--- a/Assets/Textures/kenny/Green/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://4fue3416xajr"
-path="res://.godot/imported/texture_07.png-d690cfc57b2d71d6535bcf632bd98326.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-d690cfc57b2d71d6535bcf632bd98326.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_08.png b/Assets/Textures/kenny/Green/texture_08.png
deleted file mode 100644
index 386293d..0000000
Binary files a/Assets/Textures/kenny/Green/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_08.png.import b/Assets/Textures/kenny/Green/texture_08.png.import
deleted file mode 100644
index e697347..0000000
--- a/Assets/Textures/kenny/Green/texture_08.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://poho7bpcb6ii"
-path="res://.godot/imported/texture_08.png-388bcc8f4ed5730d30ef519aed5712c3.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-388bcc8f4ed5730d30ef519aed5712c3.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_09.png b/Assets/Textures/kenny/Green/texture_09.png
deleted file mode 100644
index 48234f6..0000000
Binary files a/Assets/Textures/kenny/Green/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_09.png.import b/Assets/Textures/kenny/Green/texture_09.png.import
deleted file mode 100644
index 8a42689..0000000
--- a/Assets/Textures/kenny/Green/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c4fay2858qj0l"
-path="res://.godot/imported/texture_09.png-680667567c1aaff0ba907ed98e080d69.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-680667567c1aaff0ba907ed98e080d69.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_10.png b/Assets/Textures/kenny/Green/texture_10.png
deleted file mode 100644
index e4ab057..0000000
Binary files a/Assets/Textures/kenny/Green/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_10.png.import b/Assets/Textures/kenny/Green/texture_10.png.import
deleted file mode 100644
index 506afb1..0000000
--- a/Assets/Textures/kenny/Green/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ba1f44g54l45m"
-path="res://.godot/imported/texture_10.png-f4e6f4f72511743e87c731dc1a545bb8.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-f4e6f4f72511743e87c731dc1a545bb8.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_11.png b/Assets/Textures/kenny/Green/texture_11.png
deleted file mode 100644
index 82ad458..0000000
Binary files a/Assets/Textures/kenny/Green/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_11.png.import b/Assets/Textures/kenny/Green/texture_11.png.import
deleted file mode 100644
index c0282d3..0000000
--- a/Assets/Textures/kenny/Green/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://hncjy0d5tnxg"
-path="res://.godot/imported/texture_11.png-b7efbbf02e7aaebe01a73a52889e2db2.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-b7efbbf02e7aaebe01a73a52889e2db2.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_12.png b/Assets/Textures/kenny/Green/texture_12.png
deleted file mode 100644
index a15000d..0000000
Binary files a/Assets/Textures/kenny/Green/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_12.png.import b/Assets/Textures/kenny/Green/texture_12.png.import
deleted file mode 100644
index 49af588..0000000
--- a/Assets/Textures/kenny/Green/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://kdrttluayi20"
-path="res://.godot/imported/texture_12.png-d600a604f3c865d458be124764f1815a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-d600a604f3c865d458be124764f1815a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Green/texture_13.png b/Assets/Textures/kenny/Green/texture_13.png
deleted file mode 100644
index 930fdf0..0000000
Binary files a/Assets/Textures/kenny/Green/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Green/texture_13.png.import b/Assets/Textures/kenny/Green/texture_13.png.import
deleted file mode 100644
index 9c4c191..0000000
--- a/Assets/Textures/kenny/Green/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cbynwfgx1udap"
-path="res://.godot/imported/texture_13.png-017338333d71c41496ec3c6b0c3f4cf5.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Green/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-017338333d71c41496ec3c6b0c3f4cf5.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_01.png b/Assets/Textures/kenny/Light/texture_01.png
deleted file mode 100644
index 60b632b..0000000
Binary files a/Assets/Textures/kenny/Light/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_01.png.import b/Assets/Textures/kenny/Light/texture_01.png.import
deleted file mode 100644
index f5dbae7..0000000
--- a/Assets/Textures/kenny/Light/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://7dus2yvf2ug"
-path.s3tc="res://.godot/imported/texture_01.png-4e666ff013442f29d41e355995ff019c.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-4e666ff013442f29d41e355995ff019c.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Light/texture_02.png b/Assets/Textures/kenny/Light/texture_02.png
deleted file mode 100644
index 19aad62..0000000
Binary files a/Assets/Textures/kenny/Light/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_02.png.import b/Assets/Textures/kenny/Light/texture_02.png.import
deleted file mode 100644
index b99e7b4..0000000
--- a/Assets/Textures/kenny/Light/texture_02.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ct2nwmb0g0c11"
-path="res://.godot/imported/texture_02.png-15f671c63a751d171fa712ed4f70138a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-15f671c63a751d171fa712ed4f70138a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_03.png b/Assets/Textures/kenny/Light/texture_03.png
deleted file mode 100644
index a8a6c06..0000000
Binary files a/Assets/Textures/kenny/Light/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_03.png.import b/Assets/Textures/kenny/Light/texture_03.png.import
deleted file mode 100644
index e7fd3f3..0000000
--- a/Assets/Textures/kenny/Light/texture_03.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dvxbvy41idpif"
-path="res://.godot/imported/texture_03.png-dabf35d6925641754119ee2126742474.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-dabf35d6925641754119ee2126742474.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_04.png b/Assets/Textures/kenny/Light/texture_04.png
deleted file mode 100644
index b8270e1..0000000
Binary files a/Assets/Textures/kenny/Light/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_04.png.import b/Assets/Textures/kenny/Light/texture_04.png.import
deleted file mode 100644
index 89b95d0..0000000
--- a/Assets/Textures/kenny/Light/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://nsrg41iyucwk"
-path="res://.godot/imported/texture_04.png-ed7440cc8ef63f2eb61e3a9c42d921cc.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-ed7440cc8ef63f2eb61e3a9c42d921cc.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_05.png b/Assets/Textures/kenny/Light/texture_05.png
deleted file mode 100644
index 5b985bf..0000000
Binary files a/Assets/Textures/kenny/Light/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_05.png.import b/Assets/Textures/kenny/Light/texture_05.png.import
deleted file mode 100644
index 6aead33..0000000
--- a/Assets/Textures/kenny/Light/texture_05.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d3j4vtf2aq4to"
-path="res://.godot/imported/texture_05.png-3395530d01752dcf8e27fd6718497c9f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-3395530d01752dcf8e27fd6718497c9f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_06.png b/Assets/Textures/kenny/Light/texture_06.png
deleted file mode 100644
index 195ad77..0000000
Binary files a/Assets/Textures/kenny/Light/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_06.png.import b/Assets/Textures/kenny/Light/texture_06.png.import
deleted file mode 100644
index d8390d2..0000000
--- a/Assets/Textures/kenny/Light/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dgl8yfvnfdw45"
-path="res://.godot/imported/texture_06.png-487ab5f48eb725fca4e729bebdf72d2f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-487ab5f48eb725fca4e729bebdf72d2f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_07.png b/Assets/Textures/kenny/Light/texture_07.png
deleted file mode 100644
index fbf92e0..0000000
Binary files a/Assets/Textures/kenny/Light/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_07.png.import b/Assets/Textures/kenny/Light/texture_07.png.import
deleted file mode 100644
index 901cb43..0000000
--- a/Assets/Textures/kenny/Light/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://p7b7cxvbb1cp"
-path="res://.godot/imported/texture_07.png-5bc9abc0e209a8ac3f44e3b8278713fe.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-5bc9abc0e209a8ac3f44e3b8278713fe.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_08.png b/Assets/Textures/kenny/Light/texture_08.png
deleted file mode 100644
index 72e1a07..0000000
Binary files a/Assets/Textures/kenny/Light/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_08.png.import b/Assets/Textures/kenny/Light/texture_08.png.import
deleted file mode 100644
index 1de110c..0000000
--- a/Assets/Textures/kenny/Light/texture_08.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ube7pfqljvyf"
-path="res://.godot/imported/texture_08.png-25589eded306385399b275c6db3775cd.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-25589eded306385399b275c6db3775cd.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_09.png b/Assets/Textures/kenny/Light/texture_09.png
deleted file mode 100644
index 9ada5dd..0000000
Binary files a/Assets/Textures/kenny/Light/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_09.png.import b/Assets/Textures/kenny/Light/texture_09.png.import
deleted file mode 100644
index 4e6d36f..0000000
--- a/Assets/Textures/kenny/Light/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://djv5pftub125"
-path="res://.godot/imported/texture_09.png-d03fadc65f007e08b56362a923e9de00.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-d03fadc65f007e08b56362a923e9de00.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_10.png b/Assets/Textures/kenny/Light/texture_10.png
deleted file mode 100644
index 4fbcc80..0000000
Binary files a/Assets/Textures/kenny/Light/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_10.png.import b/Assets/Textures/kenny/Light/texture_10.png.import
deleted file mode 100644
index e679b4a..0000000
--- a/Assets/Textures/kenny/Light/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://vbio6gqo77y6"
-path="res://.godot/imported/texture_10.png-77bfe99d787ea2ef61f6f02a876f509e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-77bfe99d787ea2ef61f6f02a876f509e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_11.png b/Assets/Textures/kenny/Light/texture_11.png
deleted file mode 100644
index 840ecec..0000000
Binary files a/Assets/Textures/kenny/Light/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_11.png.import b/Assets/Textures/kenny/Light/texture_11.png.import
deleted file mode 100644
index 32ba719..0000000
--- a/Assets/Textures/kenny/Light/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cb0mt02evssa1"
-path="res://.godot/imported/texture_11.png-656e2ce8c617ee8b506ce297ee5013b7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-656e2ce8c617ee8b506ce297ee5013b7.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_12.png b/Assets/Textures/kenny/Light/texture_12.png
deleted file mode 100644
index 25c2e78..0000000
Binary files a/Assets/Textures/kenny/Light/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_12.png.import b/Assets/Textures/kenny/Light/texture_12.png.import
deleted file mode 100644
index fd6e6b6..0000000
--- a/Assets/Textures/kenny/Light/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c7h0g54nsd4en"
-path="res://.godot/imported/texture_12.png-c779d9476a97c8c6f8344fc8c0acf05e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-c779d9476a97c8c6f8344fc8c0acf05e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Light/texture_13.png b/Assets/Textures/kenny/Light/texture_13.png
deleted file mode 100644
index a235965..0000000
Binary files a/Assets/Textures/kenny/Light/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Light/texture_13.png.import b/Assets/Textures/kenny/Light/texture_13.png.import
deleted file mode 100644
index bed6c50..0000000
--- a/Assets/Textures/kenny/Light/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c150y2i0o0n4b"
-path="res://.godot/imported/texture_13.png-e3613fd71c8fd004170df7272cdae77e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Light/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-e3613fd71c8fd004170df7272cdae77e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_01.png b/Assets/Textures/kenny/Orange/texture_01.png
deleted file mode 100644
index 4f5bf92..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_01.png.import b/Assets/Textures/kenny/Orange/texture_01.png.import
deleted file mode 100644
index 966270c..0000000
--- a/Assets/Textures/kenny/Orange/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://1eu6ubigu64i"
-path.s3tc="res://.godot/imported/texture_01.png-21904ba99712468e66077bdbdb508efb.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-21904ba99712468e66077bdbdb508efb.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Orange/texture_02.png b/Assets/Textures/kenny/Orange/texture_02.png
deleted file mode 100644
index dec5b59..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_02.png.import b/Assets/Textures/kenny/Orange/texture_02.png.import
deleted file mode 100644
index aae1419..0000000
--- a/Assets/Textures/kenny/Orange/texture_02.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b8iefcauntlfr"
-path="res://.godot/imported/texture_02.png-6ba53c85eb016038e9eb03ca867ef46d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-6ba53c85eb016038e9eb03ca867ef46d.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_03.png b/Assets/Textures/kenny/Orange/texture_03.png
deleted file mode 100644
index 666197f..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_03.png.import b/Assets/Textures/kenny/Orange/texture_03.png.import
deleted file mode 100644
index 1688015..0000000
--- a/Assets/Textures/kenny/Orange/texture_03.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ck8bb11fqwytj"
-path.s3tc="res://.godot/imported/texture_03.png-20f820c35e04dcdc607ba2061af190d1.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-20f820c35e04dcdc607ba2061af190d1.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Orange/texture_04.png b/Assets/Textures/kenny/Orange/texture_04.png
deleted file mode 100644
index 23d6fc4..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_04.png.import b/Assets/Textures/kenny/Orange/texture_04.png.import
deleted file mode 100644
index 7d674e3..0000000
--- a/Assets/Textures/kenny/Orange/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dhcpwn5wpsl83"
-path="res://.godot/imported/texture_04.png-5d656289d155d17452e89f79a68dd096.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-5d656289d155d17452e89f79a68dd096.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_05.png b/Assets/Textures/kenny/Orange/texture_05.png
deleted file mode 100644
index 1e0448a..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_05.png.import b/Assets/Textures/kenny/Orange/texture_05.png.import
deleted file mode 100644
index b001350..0000000
--- a/Assets/Textures/kenny/Orange/texture_05.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bdabm8p32rpuh"
-path="res://.godot/imported/texture_05.png-4173da2dfb92ee8e5cf0c0793d0919e0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-4173da2dfb92ee8e5cf0c0793d0919e0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_06.png b/Assets/Textures/kenny/Orange/texture_06.png
deleted file mode 100644
index 5486825..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_06.png.import b/Assets/Textures/kenny/Orange/texture_06.png.import
deleted file mode 100644
index 5d0b9c7..0000000
--- a/Assets/Textures/kenny/Orange/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://10al17kdi8dt"
-path="res://.godot/imported/texture_06.png-901615c60be874edc11fe06ec267294b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-901615c60be874edc11fe06ec267294b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_07.png b/Assets/Textures/kenny/Orange/texture_07.png
deleted file mode 100644
index 95f2790..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_07.png.import b/Assets/Textures/kenny/Orange/texture_07.png.import
deleted file mode 100644
index a5bffc2..0000000
--- a/Assets/Textures/kenny/Orange/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b22jirj6yj7jn"
-path="res://.godot/imported/texture_07.png-ce29603f5e3b6487062ce4696276fe21.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-ce29603f5e3b6487062ce4696276fe21.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_08.png b/Assets/Textures/kenny/Orange/texture_08.png
deleted file mode 100644
index 5a500d9..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_08.png.import b/Assets/Textures/kenny/Orange/texture_08.png.import
deleted file mode 100644
index fc8dcce..0000000
--- a/Assets/Textures/kenny/Orange/texture_08.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ccfes61033s35"
-path="res://.godot/imported/texture_08.png-23f17f2a358608a6ba99ba64d634384d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-23f17f2a358608a6ba99ba64d634384d.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_09.png b/Assets/Textures/kenny/Orange/texture_09.png
deleted file mode 100644
index adcfa33..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_09.png.import b/Assets/Textures/kenny/Orange/texture_09.png.import
deleted file mode 100644
index 6929bf5..0000000
--- a/Assets/Textures/kenny/Orange/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bepcwfu5gwa0r"
-path="res://.godot/imported/texture_09.png-28bb6eb8e1b5d72fc500acf10edb425c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-28bb6eb8e1b5d72fc500acf10edb425c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_10.png b/Assets/Textures/kenny/Orange/texture_10.png
deleted file mode 100644
index aa227e5..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_10.png.import b/Assets/Textures/kenny/Orange/texture_10.png.import
deleted file mode 100644
index 6b41ec9..0000000
--- a/Assets/Textures/kenny/Orange/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ds034otg5ppmx"
-path="res://.godot/imported/texture_10.png-d5c32d7ba6a93e4d9448016f7d97b06a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-d5c32d7ba6a93e4d9448016f7d97b06a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_11.png b/Assets/Textures/kenny/Orange/texture_11.png
deleted file mode 100644
index dc94567..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_11.png.import b/Assets/Textures/kenny/Orange/texture_11.png.import
deleted file mode 100644
index eb0c21f..0000000
--- a/Assets/Textures/kenny/Orange/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://o7y5ldmo52gb"
-path="res://.godot/imported/texture_11.png-0db65240315324be71fbaf9d0ba7f26f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-0db65240315324be71fbaf9d0ba7f26f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_12.png b/Assets/Textures/kenny/Orange/texture_12.png
deleted file mode 100644
index b730544..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_12.png.import b/Assets/Textures/kenny/Orange/texture_12.png.import
deleted file mode 100644
index 6aee8c3..0000000
--- a/Assets/Textures/kenny/Orange/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dcvo8pyt3dob2"
-path="res://.godot/imported/texture_12.png-a3fe18fff68d7047e511ab031d0ed2de.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-a3fe18fff68d7047e511ab031d0ed2de.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Orange/texture_13.png b/Assets/Textures/kenny/Orange/texture_13.png
deleted file mode 100644
index 01f4aa8..0000000
Binary files a/Assets/Textures/kenny/Orange/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Orange/texture_13.png.import b/Assets/Textures/kenny/Orange/texture_13.png.import
deleted file mode 100644
index 24c96ab..0000000
--- a/Assets/Textures/kenny/Orange/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cseg1slj8ywc2"
-path="res://.godot/imported/texture_13.png-54559e1053242f28de103e8bcd7b6c9a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Orange/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-54559e1053242f28de103e8bcd7b6c9a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_01.png b/Assets/Textures/kenny/Purple/texture_01.png
deleted file mode 100644
index d501875..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_01.png.import b/Assets/Textures/kenny/Purple/texture_01.png.import
deleted file mode 100644
index 7a36356..0000000
--- a/Assets/Textures/kenny/Purple/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dfsldrhd5gg5j"
-path.s3tc="res://.godot/imported/texture_01.png-7061b8dad3a290ac2eeb105c0380d20e.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-7061b8dad3a290ac2eeb105c0380d20e.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Purple/texture_02.png b/Assets/Textures/kenny/Purple/texture_02.png
deleted file mode 100644
index 48a51c1..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_02.png.import b/Assets/Textures/kenny/Purple/texture_02.png.import
deleted file mode 100644
index 445cc7b..0000000
--- a/Assets/Textures/kenny/Purple/texture_02.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bw5hqj0tq8yuv"
-path="res://.godot/imported/texture_02.png-452946ab99e6cdaaf9f22986eba7a429.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-452946ab99e6cdaaf9f22986eba7a429.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_03.png b/Assets/Textures/kenny/Purple/texture_03.png
deleted file mode 100644
index 5f97f24..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_03.png.import b/Assets/Textures/kenny/Purple/texture_03.png.import
deleted file mode 100644
index 49cc95b..0000000
--- a/Assets/Textures/kenny/Purple/texture_03.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bb2vapfa1ypyx"
-path="res://.godot/imported/texture_03.png-b41d8b2987700ea392a736376d846ca6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-b41d8b2987700ea392a736376d846ca6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_04.png b/Assets/Textures/kenny/Purple/texture_04.png
deleted file mode 100644
index b81951c..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_04.png.import b/Assets/Textures/kenny/Purple/texture_04.png.import
deleted file mode 100644
index e9a604f..0000000
--- a/Assets/Textures/kenny/Purple/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dpnhrn6ojgtgc"
-path="res://.godot/imported/texture_04.png-90d25a46e339068806ce962b2b7011ee.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-90d25a46e339068806ce962b2b7011ee.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_05.png b/Assets/Textures/kenny/Purple/texture_05.png
deleted file mode 100644
index 52352c8..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_05.png.import b/Assets/Textures/kenny/Purple/texture_05.png.import
deleted file mode 100644
index e084dc1..0000000
--- a/Assets/Textures/kenny/Purple/texture_05.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://com3jlavoextm"
-path="res://.godot/imported/texture_05.png-54ad07a32f1018b46ea846b4f45f5341.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-54ad07a32f1018b46ea846b4f45f5341.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_06.png b/Assets/Textures/kenny/Purple/texture_06.png
deleted file mode 100644
index 86deeb3..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_06.png.import b/Assets/Textures/kenny/Purple/texture_06.png.import
deleted file mode 100644
index 64f2a66..0000000
--- a/Assets/Textures/kenny/Purple/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ebbaxhn8e1xb"
-path="res://.godot/imported/texture_06.png-9c0680d74e22754b24feffe370d06340.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-9c0680d74e22754b24feffe370d06340.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_07.png b/Assets/Textures/kenny/Purple/texture_07.png
deleted file mode 100644
index b71ce4e..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_07.png.import b/Assets/Textures/kenny/Purple/texture_07.png.import
deleted file mode 100644
index 7d3a41e..0000000
--- a/Assets/Textures/kenny/Purple/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dg25hk82shhyl"
-path="res://.godot/imported/texture_07.png-e09d9fb5e25f6e52305c8bb974b4af7f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-e09d9fb5e25f6e52305c8bb974b4af7f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_08.png b/Assets/Textures/kenny/Purple/texture_08.png
deleted file mode 100644
index 470cc5c..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_08.png.import b/Assets/Textures/kenny/Purple/texture_08.png.import
deleted file mode 100644
index 8e47149..0000000
--- a/Assets/Textures/kenny/Purple/texture_08.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cgi8pjwpl7t66"
-path="res://.godot/imported/texture_08.png-98135aa1b06e14f0afd3ff96254f03de.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-98135aa1b06e14f0afd3ff96254f03de.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_09.png b/Assets/Textures/kenny/Purple/texture_09.png
deleted file mode 100644
index 4a3f689..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_09.png.import b/Assets/Textures/kenny/Purple/texture_09.png.import
deleted file mode 100644
index 252bddc..0000000
--- a/Assets/Textures/kenny/Purple/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cflf2eh506won"
-path="res://.godot/imported/texture_09.png-5f2a1e7e5c02f883f15f06b25b0169c4.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-5f2a1e7e5c02f883f15f06b25b0169c4.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_10.png b/Assets/Textures/kenny/Purple/texture_10.png
deleted file mode 100644
index ab7e84b..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_10.png.import b/Assets/Textures/kenny/Purple/texture_10.png.import
deleted file mode 100644
index a488693..0000000
--- a/Assets/Textures/kenny/Purple/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bdln2o524vva7"
-path="res://.godot/imported/texture_10.png-6f727fd722909977332b5bf687299368.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-6f727fd722909977332b5bf687299368.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_11.png b/Assets/Textures/kenny/Purple/texture_11.png
deleted file mode 100644
index ad7bebc..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_11.png.import b/Assets/Textures/kenny/Purple/texture_11.png.import
deleted file mode 100644
index 8275d30..0000000
--- a/Assets/Textures/kenny/Purple/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bb5cuipdh77go"
-path="res://.godot/imported/texture_11.png-e4fe1b32c0f967466cb17dc2ed9cd637.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-e4fe1b32c0f967466cb17dc2ed9cd637.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_12.png b/Assets/Textures/kenny/Purple/texture_12.png
deleted file mode 100644
index 979ac5a..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_12.png.import b/Assets/Textures/kenny/Purple/texture_12.png.import
deleted file mode 100644
index 8f40d19..0000000
--- a/Assets/Textures/kenny/Purple/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cv3khmgxn7qvj"
-path="res://.godot/imported/texture_12.png-95239019241f5e4e9503d6d4c208fc5b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-95239019241f5e4e9503d6d4c208fc5b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Purple/texture_13.png b/Assets/Textures/kenny/Purple/texture_13.png
deleted file mode 100644
index 2a9df22..0000000
Binary files a/Assets/Textures/kenny/Purple/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Purple/texture_13.png.import b/Assets/Textures/kenny/Purple/texture_13.png.import
deleted file mode 100644
index 034bb72..0000000
--- a/Assets/Textures/kenny/Purple/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://clocipa51sdoa"
-path="res://.godot/imported/texture_13.png-aa0eca751c61b5956056dca5d29b2d6f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Purple/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-aa0eca751c61b5956056dca5d29b2d6f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_01.png b/Assets/Textures/kenny/Red/texture_01.png
deleted file mode 100644
index 1aaab41..0000000
Binary files a/Assets/Textures/kenny/Red/texture_01.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_01.png.import b/Assets/Textures/kenny/Red/texture_01.png.import
deleted file mode 100644
index 69eff5d..0000000
--- a/Assets/Textures/kenny/Red/texture_01.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bh16g6j32q42o"
-path.s3tc="res://.godot/imported/texture_01.png-549b58ed7e30d026165be9e13d5d92bc.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_01.png"
-dest_files=["res://.godot/imported/texture_01.png-549b58ed7e30d026165be9e13d5d92bc.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Red/texture_02.png b/Assets/Textures/kenny/Red/texture_02.png
deleted file mode 100644
index bf1cb17..0000000
Binary files a/Assets/Textures/kenny/Red/texture_02.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_02.png.import b/Assets/Textures/kenny/Red/texture_02.png.import
deleted file mode 100644
index cb3c161..0000000
--- a/Assets/Textures/kenny/Red/texture_02.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://doch175dkew6l"
-path="res://.godot/imported/texture_02.png-103a57fa97142313d6de55eacf864156.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_02.png"
-dest_files=["res://.godot/imported/texture_02.png-103a57fa97142313d6de55eacf864156.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_03.png b/Assets/Textures/kenny/Red/texture_03.png
deleted file mode 100644
index ff09c22..0000000
Binary files a/Assets/Textures/kenny/Red/texture_03.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_03.png.import b/Assets/Textures/kenny/Red/texture_03.png.import
deleted file mode 100644
index 6787857..0000000
--- a/Assets/Textures/kenny/Red/texture_03.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dnxi4gebmhjd8"
-path.s3tc="res://.godot/imported/texture_03.png-1d6eb170932a721c4b2d928f47e2311c.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_03.png"
-dest_files=["res://.godot/imported/texture_03.png-1d6eb170932a721c4b2d928f47e2311c.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Assets/Textures/kenny/Red/texture_04.png b/Assets/Textures/kenny/Red/texture_04.png
deleted file mode 100644
index b5b77ff..0000000
Binary files a/Assets/Textures/kenny/Red/texture_04.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_04.png.import b/Assets/Textures/kenny/Red/texture_04.png.import
deleted file mode 100644
index 3f1b616..0000000
--- a/Assets/Textures/kenny/Red/texture_04.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bmobdvhm6lda6"
-path="res://.godot/imported/texture_04.png-9b0487b31c9447ab66f4e7cb7e634efb.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_04.png"
-dest_files=["res://.godot/imported/texture_04.png-9b0487b31c9447ab66f4e7cb7e634efb.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_05.png b/Assets/Textures/kenny/Red/texture_05.png
deleted file mode 100644
index 7827035..0000000
Binary files a/Assets/Textures/kenny/Red/texture_05.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_05.png.import b/Assets/Textures/kenny/Red/texture_05.png.import
deleted file mode 100644
index 46e7b48..0000000
--- a/Assets/Textures/kenny/Red/texture_05.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://co07dkdvoptpa"
-path="res://.godot/imported/texture_05.png-35b98d6db02dd2c2f2c750965353806f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_05.png"
-dest_files=["res://.godot/imported/texture_05.png-35b98d6db02dd2c2f2c750965353806f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_06.png b/Assets/Textures/kenny/Red/texture_06.png
deleted file mode 100644
index 914a6f1..0000000
Binary files a/Assets/Textures/kenny/Red/texture_06.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_06.png.import b/Assets/Textures/kenny/Red/texture_06.png.import
deleted file mode 100644
index cea929f..0000000
--- a/Assets/Textures/kenny/Red/texture_06.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://2hfc6ktxmmkw"
-path="res://.godot/imported/texture_06.png-57d3ea73786f1597a04f69016f5e55f5.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_06.png"
-dest_files=["res://.godot/imported/texture_06.png-57d3ea73786f1597a04f69016f5e55f5.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_07.png b/Assets/Textures/kenny/Red/texture_07.png
deleted file mode 100644
index 47d517b..0000000
Binary files a/Assets/Textures/kenny/Red/texture_07.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_07.png.import b/Assets/Textures/kenny/Red/texture_07.png.import
deleted file mode 100644
index f2df5d1..0000000
--- a/Assets/Textures/kenny/Red/texture_07.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bo5par3o6fw66"
-path="res://.godot/imported/texture_07.png-c537230f7478a87f275d9f492dd05c8a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_07.png"
-dest_files=["res://.godot/imported/texture_07.png-c537230f7478a87f275d9f492dd05c8a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_08.png b/Assets/Textures/kenny/Red/texture_08.png
deleted file mode 100644
index 07cfc41..0000000
Binary files a/Assets/Textures/kenny/Red/texture_08.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_08.png.import b/Assets/Textures/kenny/Red/texture_08.png.import
deleted file mode 100644
index 75789ba..0000000
--- a/Assets/Textures/kenny/Red/texture_08.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://62wgiaxs1wx5"
-path="res://.godot/imported/texture_08.png-af6dcee1bcc58a3e1a90eb56d1a52b06.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_08.png"
-dest_files=["res://.godot/imported/texture_08.png-af6dcee1bcc58a3e1a90eb56d1a52b06.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_09.png b/Assets/Textures/kenny/Red/texture_09.png
deleted file mode 100644
index 86d67d8..0000000
Binary files a/Assets/Textures/kenny/Red/texture_09.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_09.png.import b/Assets/Textures/kenny/Red/texture_09.png.import
deleted file mode 100644
index bb9069e..0000000
--- a/Assets/Textures/kenny/Red/texture_09.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c2wxo7o13cob1"
-path="res://.godot/imported/texture_09.png-254cb1193af53a2be6add745610771ca.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_09.png"
-dest_files=["res://.godot/imported/texture_09.png-254cb1193af53a2be6add745610771ca.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_10.png b/Assets/Textures/kenny/Red/texture_10.png
deleted file mode 100644
index a9266d1..0000000
Binary files a/Assets/Textures/kenny/Red/texture_10.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_10.png.import b/Assets/Textures/kenny/Red/texture_10.png.import
deleted file mode 100644
index 45a1072..0000000
--- a/Assets/Textures/kenny/Red/texture_10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://2lf0v3lain05"
-path="res://.godot/imported/texture_10.png-b99488c8376839e9659212836a4f779a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_10.png"
-dest_files=["res://.godot/imported/texture_10.png-b99488c8376839e9659212836a4f779a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_11.png b/Assets/Textures/kenny/Red/texture_11.png
deleted file mode 100644
index 2acc544..0000000
Binary files a/Assets/Textures/kenny/Red/texture_11.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_11.png.import b/Assets/Textures/kenny/Red/texture_11.png.import
deleted file mode 100644
index 29fff57..0000000
--- a/Assets/Textures/kenny/Red/texture_11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://fhlv6uvffslr"
-path="res://.godot/imported/texture_11.png-d371f1ae8072c74eda0a72c5aedaeb5b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_11.png"
-dest_files=["res://.godot/imported/texture_11.png-d371f1ae8072c74eda0a72c5aedaeb5b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_12.png b/Assets/Textures/kenny/Red/texture_12.png
deleted file mode 100644
index 7054c4d..0000000
Binary files a/Assets/Textures/kenny/Red/texture_12.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_12.png.import b/Assets/Textures/kenny/Red/texture_12.png.import
deleted file mode 100644
index c4f56b6..0000000
--- a/Assets/Textures/kenny/Red/texture_12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dfje8xtld0cnm"
-path="res://.godot/imported/texture_12.png-2c9c8d078c5a586bf8f5dbd6d9328fc7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_12.png"
-dest_files=["res://.godot/imported/texture_12.png-2c9c8d078c5a586bf8f5dbd6d9328fc7.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Textures/kenny/Red/texture_13.png b/Assets/Textures/kenny/Red/texture_13.png
deleted file mode 100644
index ab8c7b9..0000000
Binary files a/Assets/Textures/kenny/Red/texture_13.png and /dev/null differ
diff --git a/Assets/Textures/kenny/Red/texture_13.png.import b/Assets/Textures/kenny/Red/texture_13.png.import
deleted file mode 100644
index 407a4d7..0000000
--- a/Assets/Textures/kenny/Red/texture_13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b8davjerh21ln"
-path="res://.godot/imported/texture_13.png-8052da5f6a2ff263030f7fb8cca4efe6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Assets/Textures/kenny/Red/texture_13.png"
-dest_files=["res://.godot/imported/texture_13.png-8052da5f6a2ff263030f7fb8cca4efe6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Assets/Themes/theme.tres b/Assets/Themes/theme.tres
deleted file mode 100644
index edbbfe8..0000000
--- a/Assets/Themes/theme.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Theme" load_steps=2 format=3 uid="uid://bvso6uowlb8dh"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4rowt"]
-bg_color = Color(0.18359, 0.18359, 0.18359, 1)
-border_width_left = 20
-border_width_top = 20
-border_width_right = 20
-border_width_bottom = 20
-border_color = Color(0, 0, 0, 1)
-
-[resource]
-HeaderLarge/font_sizes/font_size = 28
-PanelContainer/styles/panel = SubResource("StyleBoxFlat_4rowt")
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 9c0ef87..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Kirill Ivanov
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Scenes/Chat/ChatMenu.tscn b/Scenes/Chat/ChatMenu.tscn
deleted file mode 100644
index ca9888a..0000000
--- a/Scenes/Chat/ChatMenu.tscn
+++ /dev/null
@@ -1,60 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://dtpqexue3vgl6"]
-
-[ext_resource type="Script" uid="uid://c8k0usfm5rdm3" path="res://Scripts/Chat/chat_menu.gd" id="1_8p1r2"]
-
-[node name="ChatMenu" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_top = 298.0
-offset_right = -852.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_vertical = 8
-script = ExtResource("1_8p1r2")
-
-[node name="AspectRatioContainer" type="AspectRatioContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="AspectRatioContainer"]
-custom_minimum_size = Vector2(200, 0)
-layout_mode = 2
-theme_override_constants/margin_left = 10
-theme_override_constants/margin_top = 10
-theme_override_constants/margin_right = 10
-theme_override_constants/margin_bottom = 10
-
-[node name="VBoxContainer" type="VBoxContainer" parent="AspectRatioContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="ScrollContainer" type="ScrollContainer" parent="AspectRatioContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-follow_focus = true
-horizontal_scroll_mode = 0
-
-[node name="MessageContainer" type="VBoxContainer" parent="AspectRatioContainer/MarginContainer/VBoxContainer/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 10
-
-[node name="Label" type="Label" parent="AspectRatioContainer/MarginContainer/VBoxContainer/ScrollContainer/MessageContainer"]
-layout_mode = 2
-
-[node name="CommandScrollContainer" type="ScrollContainer" parent="AspectRatioContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-vertical_scroll_mode = 0
-
-[node name="CommandTextEdit" type="TextEdit" parent="AspectRatioContainer/MarginContainer/VBoxContainer/CommandScrollContainer"]
-custom_minimum_size = Vector2(0, 35)
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="VisibleTimer" type="Timer" parent="."]
-wait_time = 5.0
diff --git a/Scenes/Items/goblet.tscn b/Scenes/Items/goblet.tscn
deleted file mode 100644
index f321721..0000000
--- a/Scenes/Items/goblet.tscn
+++ /dev/null
@@ -1,80 +0,0 @@
-[gd_scene load_steps=12 format=3 uid="uid://cfsot3wc41tx"]
-
-[ext_resource type="Script" uid="uid://bntxwxn6ns5l0" path="res://Scripts/Items/goblet.gd" id="1_ihtnh"]
-[ext_resource type="Script" uid="uid://ctwdmnqaxkty" path="res://Scripts/Resources/item.gd" id="2_ihtnh"]
-[ext_resource type="Texture2D" uid="uid://1eu6ubigu64i" path="res://Assets/Textures/kenny/Orange/texture_01.png" id="3_ihtnh"]
-[ext_resource type="Script" uid="uid://bahmrqvs4pafg" path="res://Scripts/Items/interactable.gd" id="4_ajay6"]
-[ext_resource type="Shader" uid="uid://c0chn7ll6p7yk" path="res://Assets/Shaders/outline.gdshader" id="4_lowgp"]
-
-[sub_resource type="Resource" id="Resource_lowgp"]
-script = ExtResource("2_ihtnh")
-value = 100
-name = "Golden Goblet"
-weight = 10
-primary_objective = true
-secondary_objective = false
-metadata/_custom_type_script = "uid://ctwdmnqaxkty"
-
-[sub_resource type="BoxMesh" id="BoxMesh_lowgp"]
-size = Vector3(0.25, 1, 0.25)
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ajay6"]
-albedo_texture = ExtResource("3_ihtnh")
-uv1_triplanar = true
-
-[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_ihtnh"]
-points = PackedVector3Array(-0.125, -0.5, -0.125, -0.125, -0.5, 0.125, -0.125, 0.5, -0.125, 0.125, -0.5, -0.125, 0.125, -0.5, 0.125, -0.125, 0.5, 0.125, 0.125, 0.5, -0.125, 0.125, 0.5, 0.125)
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_ajay6"]
-render_priority = 0
-shader = ExtResource("4_lowgp")
-shader_parameter/normal_threshold = 1.5
-shader_parameter/depth_threshold = 0.05
-shader_parameter/depth_artifact_correction_coef = 2.0
-shader_parameter/outline_color = Color(0.882353, 0.882353, 0.882353, 1)
-
-[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ajay6"]
-properties/0/path = NodePath(".:position")
-properties/0/spawn = true
-properties/0/replication_mode = 1
-properties/1/path = NodePath(".:rotation")
-properties/1/spawn = true
-properties/1/replication_mode = 1
-properties/2/path = NodePath(".:visible")
-properties/2/spawn = true
-properties/2/replication_mode = 1
-properties/3/path = NodePath(".:collision_layer")
-properties/3/spawn = true
-properties/3/replication_mode = 1
-properties/4/path = NodePath(".:freeze")
-properties/4/spawn = true
-properties/4/replication_mode = 1
-
-[node name="Goblet" type="RigidBody3D"]
-collision_layer = 2
-collision_mask = 3
-continuous_cd = true
-script = ExtResource("1_ihtnh")
-item = SubResource("Resource_lowgp")
-
-[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
-mesh = SubResource("BoxMesh_lowgp")
-surface_material_override/0 = SubResource("StandardMaterial3D_ajay6")
-
-[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
-shape = SubResource("ConvexPolygonShape3D_ihtnh")
-
-[node name="Interactable" type="Node3D" parent="."]
-script = ExtResource("4_ajay6")
-
-[node name="outline" type="MeshInstance3D" parent="Interactable"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
-visible = false
-mesh = SubResource("BoxMesh_lowgp")
-skeleton = NodePath("../..")
-surface_material_override/0 = SubResource("ShaderMaterial_ajay6")
-
-[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
-replication_config = SubResource("SceneReplicationConfig_ajay6")
diff --git a/Scenes/Lobby.tscn b/Scenes/Lobby.tscn
deleted file mode 100644
index e44e8e9..0000000
--- a/Scenes/Lobby.tscn
+++ /dev/null
@@ -1,59 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://x4ohd5qj3xpy"]
-
-[ext_resource type="Texture2D" uid="uid://youvyib1feqp" path="res://Assets/Textures/kenny/Dark/texture_02.png" id="1_bpe3w"]
-[ext_resource type="Script" uid="uid://cdc5npqxn0eda" path="res://Scripts/Level/lobby.gd" id="1_lolwk"]
-[ext_resource type="PackedScene" uid="uid://cfsot3wc41tx" path="res://Scenes/Items/goblet.tscn" id="3_wgubu"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8j60k"]
-albedo_texture = ExtResource("1_bpe3w")
-uv1_triplanar = true
-
-[node name="Lobby" type="Node3D"]
-script = ExtResource("1_lolwk")
-
-[node name="Terrain" type="Node3D" parent="."]
-
-[node name="Floor" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
-material_override = SubResource("StandardMaterial3D_8j60k")
-use_collision = true
-size = Vector3(25, 0.5, 25)
-
-[node name="Wall1" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 13)
-material_override = SubResource("StandardMaterial3D_8j60k")
-use_collision = true
-size = Vector3(27, 3, 1)
-
-[node name="Wall2" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -13)
-material_override = SubResource("StandardMaterial3D_8j60k")
-use_collision = true
-size = Vector3(27, 3, 1)
-
-[node name="Wall3" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 1, 0)
-material_override = SubResource("StandardMaterial3D_8j60k")
-use_collision = true
-size = Vector3(1, 3, 25)
-
-[node name="Wall4" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 1, 0)
-material_override = SubResource("StandardMaterial3D_8j60k")
-use_collision = true
-size = Vector3(1, 3, 25)
-
-[node name="spawnpoint1" type="Marker3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.06025, 9.57144)
-
-[node name="spawnpoint2" type="Marker3D" parent="."]
-transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.75494, -11.1718)
-
-[node name="spawnpoint3" type="Marker3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.3942, 1.59, -0.787676)
-
-[node name="spawnpoint4" type="Marker3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.92384, 1.69536, -1.57535)
-
-[node name="Goblet" parent="." instance=ExtResource("3_wgubu")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.07599, 2, 0)
diff --git a/Scenes/Menu/InventoryMenu.tscn b/Scenes/Menu/InventoryMenu.tscn
deleted file mode 100644
index cd5e04d..0000000
--- a/Scenes/Menu/InventoryMenu.tscn
+++ /dev/null
@@ -1,58 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://01ujg1e7atlb"]
-
-[ext_resource type="Script" uid="uid://ddwvtegkiite7" path="res://Scripts/Menu/inventory_menu.gd" id="1_iulmg"]
-[ext_resource type="Theme" uid="uid://bvso6uowlb8dh" path="res://Assets/Themes/theme.tres" id="1_r3ydb"]
-[ext_resource type="PackedScene" uid="uid://bnpbkpr5ref6k" path="res://Scenes/Menu/InventoryUiItem.tscn" id="2_o58an"]
-
-[sub_resource type="Theme" id="Theme_r3ydb"]
-
-[node name="InventoryMenu" type="Node"]
-script = ExtResource("1_iulmg")
-
-[node name="CanvasLayer" type="CanvasLayer" parent="."]
-
-[node name="Panel" type="Panel" parent="CanvasLayer"]
-offset_left = 241.0
-offset_top = 146.0
-offset_right = 241.0
-offset_bottom = 146.0
-
-[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer"]
-offset_left = 159.0
-offset_top = 94.0
-offset_right = 1042.0
-offset_bottom = 578.0
-theme = ExtResource("1_r3ydb")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PanelContainer"]
-layout_mode = 2
-
-[node name="Title" type="Label" parent="CanvasLayer/PanelContainer/VBoxContainer"]
-layout_mode = 2
-theme = SubResource("Theme_r3ydb")
-theme_type_variation = &"HeaderLarge"
-text = "Inventory"
-horizontal_alignment = 1
-
-[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PanelContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_constants/margin_left = 20
-theme_override_constants/margin_top = 20
-theme_override_constants/margin_right = 20
-theme_override_constants/margin_bottom = 20
-
-[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PanelContainer/VBoxContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PanelContainer/VBoxContainer/MarginContainer/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="ItemHeader" parent="CanvasLayer/PanelContainer/VBoxContainer/MarginContainer/ScrollContainer/VBoxContainer" instance=ExtResource("2_o58an")]
-layout_mode = 2
-
-[node name="CloseButton" type="Button" parent="CanvasLayer/PanelContainer/VBoxContainer"]
-layout_mode = 2
-text = "Close
-"
diff --git a/Scenes/Menu/InventoryUiItem.tscn b/Scenes/Menu/InventoryUiItem.tscn
deleted file mode 100644
index 76e9ac7..0000000
--- a/Scenes/Menu/InventoryUiItem.tscn
+++ /dev/null
@@ -1,28 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://bnpbkpr5ref6k"]
-
-[ext_resource type="Script" uid="uid://bv3glh0xi771m" path="res://Scripts/Menu/inventory_ui_item.gd" id="1_ahd61"]
-
-[node name="ItemHeader" type="HBoxContainer"]
-size_flags_vertical = 0
-script = ExtResource("1_ahd61")
-
-[node name="Icon" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Icon"
-
-[node name="Name" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_stretch_ratio = 5.0
-text = "Name"
-
-[node name="Value" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Value"
-
-[node name="Weight" type="Label" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Weight"
diff --git a/Scenes/Menu/LobbyMenu.tscn b/Scenes/Menu/LobbyMenu.tscn
deleted file mode 100644
index 268c809..0000000
--- a/Scenes/Menu/LobbyMenu.tscn
+++ /dev/null
@@ -1,137 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dt1v3f2oc7vbw"]
-
-[ext_resource type="Script" uid="uid://b2pee67ics25u" path="res://Scripts/Menu/lobby_menu.gd" id="1_4ga1p"]
-[ext_resource type="Theme" uid="uid://bvso6uowlb8dh" path="res://Assets/Themes/theme.tres" id="2_oc7xs"]
-
-[node name="LobbyMenu" type="Control"]
-process_mode = 3
-z_index = 1
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 6
-size_flags_vertical = 6
-script = ExtResource("1_4ga1p")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
-layout_mode = 2
-theme_override_constants/separation = 20
-
-[node name="LobbyLabel" type="Label" parent="VBoxContainer/HBoxContainer"]
-layout_mode = 2
-text = "Lobby"
-
-[node name="SteamLobbyIdButton" type="Button" parent="VBoxContainer/HBoxContainer"]
-visible = false
-layout_mode = 2
-text = "Copy Lobby Code"
-
-[node name="Disconnect" type="Button" parent="VBoxContainer/HBoxContainer"]
-visible = false
-layout_mode = 2
-text = "Disconnect"
-
-[node name="Name" type="LineEdit" parent="VBoxContainer"]
-layout_mode = 2
-
-[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
-layout_mode = 2
-current_tab = 0
-
-[node name="Steam" type="Control" parent="VBoxContainer/TabContainer"]
-layout_mode = 2
-metadata/_tab_index = 0
-
-[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/TabContainer/Steam"]
-layout_mode = 1
-anchors_preset = 10
-anchor_right = 1.0
-offset_bottom = 187.0
-grow_horizontal = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TabContainer/Steam/PanelContainer"]
-layout_mode = 2
-theme_override_constants/margin_left = 10
-theme_override_constants/margin_top = 10
-theme_override_constants/margin_right = 10
-theme_override_constants/margin_bottom = 10
-
-[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="Address" type="LineEdit" parent="VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="Host" type="Button" parent="VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Host
-"
-
-[node name="Join" type="Button" parent="VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Join
-"
-
-[node name="ENet" type="Control" parent="VBoxContainer/TabContainer"]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 1
-
-[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/TabContainer/ENet"]
-layout_mode = 1
-anchors_preset = 10
-anchor_right = 1.0
-offset_bottom = 83.0
-grow_horizontal = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TabContainer/ENet/PanelContainer"]
-layout_mode = 2
-theme = ExtResource("2_oc7xs")
-theme_override_constants/margin_left = 20
-theme_override_constants/margin_top = 20
-theme_override_constants/margin_right = 20
-theme_override_constants/margin_bottom = 20
-
-[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer"]
-layout_mode = 2
-
-[node name="HostToggleContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="HostLabel" type="Label" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/HostToggleContainer"]
-layout_mode = 2
-text = "Host"
-
-[node name="Host" type="CheckButton" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/HostToggleContainer"]
-layout_mode = 2
-
-[node name="Address" type="LineEdit" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-placeholder_text = "Enter IP Address to Join"
-
-[node name="Join" type="Button" parent="VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer"]
-layout_mode = 2
-text = "Join"
-
-[node name="LobbyContainer" type="VBoxContainer" parent="."]
-layout_mode = 1
-anchors_preset = 3
-anchor_left = 1.0
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = -40.0
-offset_top = -40.0
-grow_horizontal = 0
-grow_vertical = 0
diff --git a/Scenes/Mobs/character.tscn b/Scenes/Mobs/character.tscn
deleted file mode 100644
index b6b180a..0000000
--- a/Scenes/Mobs/character.tscn
+++ /dev/null
@@ -1,483 +0,0 @@
-[gd_scene load_steps=26 format=3 uid="uid://cc1m2a1obsyn4"]
-
-[ext_resource type="Script" uid="uid://c1um4tmthbbpk" path="res://Scripts/fpc/character.gd" id="1_0t4e8"]
-[ext_resource type="Script" uid="uid://darcj1vokaiv2" path="res://Scripts/Resources/inventory.gd" id="2_bmlhv"]
-[ext_resource type="Script" uid="uid://c5g0jt1apb2al" path="res://Scripts/fpc/EditorModule.gd" id="3_v3ckk"]
-[ext_resource type="Script" uid="uid://bhfftu01dsfk7" path="res://Scripts/fpc/debug.gd" id="3_x1wcc"]
-[ext_resource type="PackedScene" uid="uid://01ujg1e7atlb" path="res://Scenes/Menu/InventoryMenu.tscn" id="4_8j081"]
-
-[sub_resource type="Resource" id="Resource_jcsm3"]
-script = ExtResource("2_bmlhv")
-metadata/_custom_type_script = "uid://darcj1vokaiv2"
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kp17n"]
-albedo_color = Color(0, 1, 0, 1)
-clearcoat_enabled = true
-clearcoat_roughness = 0.2
-
-[sub_resource type="CapsuleMesh" id="CapsuleMesh_jw1de"]
-material = SubResource("StandardMaterial3D_kp17n")
-
-[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uy03j"]
-
-[sub_resource type="Animation" id="Animation_j8cx7"]
-resource_name = "RESET"
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-
-[sub_resource type="Animation" id="Animation_5ec5e"]
-resource_name = "crouch"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0), Vector3(0, 1.12508, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 2
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 2
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_5e5t5"]
-_data = {
-&"RESET": SubResource("Animation_j8cx7"),
-&"crouch": SubResource("Animation_5ec5e")
-}
-
-[sub_resource type="Animation" id="Animation_gh776"]
-resource_name = "RESET"
-length = 0.001
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_8ku67"]
-resource_name = "sprint"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.06, -0.25, 0, 0.25, -0.01, 0, 0, 0, 0, 0, -0.06, -0.25, 0.01, 0.25, 0.01, 0, 0, 0, 0, 0, 0.06, -0.25, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(0.05, -0.25, 0, 0.2, -0.01, 0, -0.2, 0.000186046, 0.2, 0.000186046, 0.05, -0.2, -0.01, 0.2, -0.01, 0, -0.2, 0, 0.2, 0, 0.05, -0.2, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="Animation" id="Animation_lrqmv"]
-resource_name = "walk"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, -0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, 0.04, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(-0.05, -0.25, 0, 0.2, 0.005, 0, -0.2, 0.000186046, 0.2, 0.000186046, -0.05, -0.2, 0.005, 0.2, 0.005, 0, -0.2, 0, 0.2, 0, -0.05, -0.2, 0.005, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_o0unb"]
-_data = {
-&"RESET": SubResource("Animation_gh776"),
-&"sprint": SubResource("Animation_8ku67"),
-&"walk": SubResource("Animation_lrqmv")
-}
-
-[sub_resource type="Animation" id="Animation_fvvjq"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_s07ye"]
-resource_name = "jump"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.6, 3),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_3eyjl"]
-resource_name = "land_center"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_l1rph"]
-resource_name = "land_left"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_vsknp"]
-resource_name = "land_right"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, -0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_qeg5r"]
-_data = {
-&"RESET": SubResource("Animation_fvvjq"),
-&"jump": SubResource("Animation_s07ye"),
-&"land_center": SubResource("Animation_3eyjl"),
-&"land_left": SubResource("Animation_l1rph"),
-&"land_right": SubResource("Animation_vsknp")
-}
-
-[sub_resource type="Theme" id="Theme_wdf0f"]
-MarginContainer/constants/margin_bottom = 10
-MarginContainer/constants/margin_left = 10
-MarginContainer/constants/margin_right = 10
-MarginContainer/constants/margin_top = 10
-
-[sub_resource type="SphereShape3D" id="SphereShape3D_k4wwl"]
-
-[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_a88hh"]
-properties/0/path = NodePath(".:position")
-properties/0/spawn = true
-properties/0/replication_mode = 1
-properties/1/path = NodePath(".:rotation")
-properties/1/spawn = true
-properties/1/replication_mode = 1
-properties/2/path = NodePath("Head:rotation")
-properties/2/spawn = true
-properties/2/replication_mode = 1
-
-[node name="Character" type="CharacterBody3D" node_paths=PackedStringArray("HEAD", "CAMERA", "CAMERA_RAYCAST", "HEADBOB_ANIMATION", "JUMP_ANIMATION", "CROUCH_ANIMATION", "COLLISION_MESH")]
-transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
-script = ExtResource("1_0t4e8")
-HEAD = NodePath("Head")
-CAMERA = NodePath("Head/Camera")
-CAMERA_RAYCAST = NodePath("Head/Camera/CamRayCast3D")
-INVENTORY = SubResource("Resource_jcsm3")
-HEADBOB_ANIMATION = NodePath("Head/HeadbobAnimation")
-JUMP_ANIMATION = NodePath("Head/JumpAnimation")
-CROUCH_ANIMATION = NodePath("CrouchAnimation")
-COLLISION_MESH = NodePath("Collision")
-
-[node name="Mesh" type="MeshInstance3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-mesh = SubResource("CapsuleMesh_jw1de")
-
-[node name="Collision" type="CollisionShape3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("CapsuleShape3D_uy03j")
-
-[node name="CrouchAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_5e5t5")
-}
-
-[node name="Head" type="Node3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
-
-[node name="Camera" type="Camera3D" parent="Head"]
-
-[node name="CamRayCast3D" type="RayCast3D" parent="Head/Camera"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.72772e-08, 0, -0.395256)
-target_position = Vector3(0, 0, -2)
-collision_mask = 3
-
-[node name="HeadbobAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-&"": SubResource("AnimationLibrary_o0unb")
-}
-blend_times = [&"RESET", &"RESET", 0.5, &"RESET", &"walk", 0.5, &"walk", &"RESET", 0.5]
-
-[node name="JumpAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-&"": SubResource("AnimationLibrary_qeg5r")
-}
-speed_scale = 4.0
-
-[node name="UserInterface" type="Control" parent="."]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 1
-
-[node name="DebugPanel" type="PanelContainer" parent="UserInterface"]
-visible = false
-layout_mode = 0
-offset_left = 10.0
-offset_top = 10.0
-offset_right = 453.0
-offset_bottom = 50.0
-theme = SubResource("Theme_wdf0f")
-script = ExtResource("3_x1wcc")
-
-[node name="MarginContainer" type="MarginContainer" parent="UserInterface/DebugPanel"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="UserInterface/DebugPanel/MarginContainer"]
-layout_mode = 2
-
-[node name="InventoryMenu" parent="UserInterface" instance=ExtResource("4_8j081")]
-
-[node name="CrouchCeilingDetection" type="ShapeCast3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("SphereShape3D_k4wwl")
-target_position = Vector3(0, 0.5, 0)
-
-[node name="EditorModule" type="Node" parent="."]
-script = ExtResource("3_v3ckk")
-
-[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
-replication_config = SubResource("SceneReplicationConfig_a88hh")
diff --git a/Scenes/Server/Server.tscn b/Scenes/Server/Server.tscn
deleted file mode 100644
index af9547c..0000000
--- a/Scenes/Server/Server.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://d1ofd327cqcd1"]
-
-[ext_resource type="Script" uid="uid://dwwtrox3lp2jp" path="res://scripts/server/server.gd" id="1_tov25"]
-
-[node name="Server" type="Node"]
-script = ExtResource("1_tov25")
diff --git a/Scenes/Server/ServerLobby.tscn b/Scenes/Server/ServerLobby.tscn
deleted file mode 100644
index f50e889..0000000
--- a/Scenes/Server/ServerLobby.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cibp7jxet63em"]
-
-[ext_resource type="Script" uid="uid://dql0i4kd8813p" path="res://scripts/server/server_lobby.gd" id="1_omv2j"]
-
-[node name="ServerLobby" type="Node"]
-script = ExtResource("1_omv2j")
diff --git a/Scenes/quality-godot-first-person-2-main/.gitattributes b/Scenes/quality-godot-first-person-2-main/.gitattributes
deleted file mode 100644
index 8ad74f7..0000000
--- a/Scenes/quality-godot-first-person-2-main/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Normalize EOL for all files that Git considers text files.
-* text=auto eol=lf
diff --git a/Scenes/quality-godot-first-person-2-main/.gitignore b/Scenes/quality-godot-first-person-2-main/.gitignore
deleted file mode 100644
index 4709183..0000000
--- a/Scenes/quality-godot-first-person-2-main/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Godot 4+ specific ignores
-.godot/
diff --git a/Scenes/quality-godot-first-person-2-main/LICENSE b/Scenes/quality-godot-first-person-2-main/LICENSE
deleted file mode 100644
index f34733d..0000000
--- a/Scenes/quality-godot-first-person-2-main/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Colormatic
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Scenes/quality-godot-first-person-2-main/README.md b/Scenes/quality-godot-first-person-2-main/README.md
deleted file mode 100644
index 0acb1cb..0000000
--- a/Scenes/quality-godot-first-person-2-main/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# quality-godot-first-person-2
-Actually good first person controller for the Godot Engine.
-MIT License (credit Colormatic Studios)
-
-This first person controller was made because there aren't many first person controllers for Godot, and the ones that do exist are pretty bad.
-It is highly customizable and comes with many features, QOL, and clean code.
-
-Some parts came from StayAtHomeDev's FPS tutorial. You can find that [here](https://www.youtube.com/playlist?list=PLEHvj4yeNfeF6s-UVs5Zx5TfNYmeCiYwf).
-
-# Directions
-Move with WASD, space to jump, shift to sprint, C to crouch.
-
-**FEATURES:**
-- Extremely configurable
-- In-air momentum
-- Motion smoothing
-- FOV smoothing
-- Movement animations
-- Crouching
-- Sprinting
-- 2 crosshairs/reticles, one is animated (more to come?)
-- Controller/GamePad support (enabled through code, see wiki)
-- In-editor tools (enable editable children to use)
-
-If you make a cool game with this addon, I would love to hear about it!
-
-# Wiki
-**To start out**, you should probably remap all of the movement keys to your own control set.
-
-You can make this a super basic controller by just disabling everything.
-
-**How to add controller/GamePad support**
-- In the controls export group, there is a commented section at the end that says "Uncomment this if you want full controller support". Uncomment that block.
-- Make a key map for each direction (left, right, up, down) and map them to your joystick.
-- Write in these keymaps in the controls section of the player settings.
-- In the `handle_head_rotation` function, there is another block of commented code that says the same thing. Uncomment that too.
-- You should now be able to look around with the joystick. Make sure you add the other controls to the input map. (movement, jumping, crouching, sprinting, etc.)
-
-**Slope/staircase:**
-Credit to [roberto-urbani23](https://github.com/roberto-urbani23)
-In the character inspector, you can uncheck Stop on Slope and set the max angle to 89 (for some reason, 90 will make the player stuck). Also Snap Length to 1 otherwise your character will not remain attached to stairs if you sprint while going downstairs.
-
-**How to change settings:**
-Click on the character node and there should be settings in the "Feature Settings" group.
-
-**How to add animations for a mesh:**
-- Create a function for your animation and attach it to `_physics_process` to call it every frame.
-- Use `input_dir` as a boolean (it is actually a `Vector2`) to know if the player is walking.
-- Use the `state` member variable to tell if the player is sprinting or crouching.
-- Use the `is_on_floor` function to tell if the player is standing or falling.
-
-**How to change reticles (crosshairs):**
-Change the "Default Reticle" setting to your reticle file.
-During runtime:
-Use the `change_reticle` function on the character.
-
-**How to create a new reticle:**
-- Choose a reticle to base it off of.
-- Open that reticle and save it as a new reticle.
-- Remove the script from the reticle and create a new one. (for some reason you have to do this)
-- Edit the reticle to your needs.
-- Follow the "how to change reticles" directions to use it.
-
-**How to use the editor tools:**
-- Enable editable children on the `CharacterBody` node
-- Use the options in the Properties tab to change things
-- These changes apply in runtime as well
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd b/Scenes/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd
deleted file mode 100644
index 0a3a74f..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd
+++ /dev/null
@@ -1,49 +0,0 @@
-@tool
-extends Node
-
-# This does not effect runtime yet but will in the future.
-
-@export_category("Controller Editor Module")
-@export_range(-360.0, 360.0, 0.01, "or_greater", "or_less") var head_y_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_y_rotation = new_rotation
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- update_configuration_warnings()
-@export_range(-90.0, 90.0, 0.01, "or_greater", "or_less") var head_x_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_x_rotation = new_rotation
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
- update_configuration_warnings()
-
-@export_group("Nodes")
-@export var CHARACTER : CharacterBody3D
-@export var head_path : String = "Head" # Relative to the parent node
-#@export var CAMERA : Camera3D
-#@export var HEADBOB_ANIMATION : AnimationPlayer
-#@export var JUMP_ANIMATION : AnimationPlayer
-#@export var CROUCH_ANIMATION : AnimationPlayer
-#@export var COLLISION_MESH : CollisionShape3D
-
-@onready var HEAD = get_node("../" + head_path)
-
-
-func _ready():
- if !Engine.is_editor_hint():
- #print("not editor")
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
-
-
-func _get_configuration_warnings():
- var warnings = []
-
- if head_y_rotation > 360:
- warnings.append("The head rotation is greater than 360")
-
- if head_y_rotation < -360:
- warnings.append("The head rotation is less than -360")
-
- # Returning an empty array gives no warnings
- return warnings
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/character.gd b/Scenes/quality-godot-first-person-2-main/addons/fpc/character.gd
deleted file mode 100644
index 5a5f7f7..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/character.gd
+++ /dev/null
@@ -1,488 +0,0 @@
-# COPYRIGHT Colormatic Studios
-# MIT license
-# Quality Godot First Person Controller v2
-
-
-extends CharacterBody3D
-
-
-#region Character Export Group
-
-## The settings for the character's movement and feel.
-@export_category("Character")
-## The speed that the character moves at without crouching or sprinting.
-@export var base_speed : float = 3.0
-## The speed that the character moves at when sprinting.
-@export var sprint_speed : float = 6.0
-## The speed that the character moves at when crouching.
-@export var crouch_speed : float = 1.0
-
-## How fast the character speeds up and slows down when Motion Smoothing is on.
-@export var acceleration : float = 10.0
-## How high the player jumps.
-@export var jump_velocity : float = 4.5
-## How far the player turns when the mouse is moved.
-@export var mouse_sensitivity : float = 0.1
-## Invert the X axis input for the camera.
-@export var invert_camera_x_axis : bool = false
-## Invert the Y axis input for the camera.
-@export var invert_camera_y_axis : bool = false
-## Whether the player can use movement inputs. Does not stop outside forces or jumping. See Jumping Enabled.
-@export var immobile : bool = false
-## The reticle file to import at runtime. By default are in res://addons/fpc/reticles/. Set to an empty string to remove.
-@export_file var default_reticle
-
-#endregion
-
-#region Nodes Export Group
-
-@export_group("Nodes")
-## A reference to the camera for use in the character script. This is the parent node to the camera and is rotated instead of the camera for mouse input.
-@export var HEAD : Node3D
-## A reference to the camera for use in the character script.
-@export var CAMERA : Camera3D
-## A reference to the headbob animation for use in the character script.
-@export var HEADBOB_ANIMATION : AnimationPlayer
-## A reference to the jump animation for use in the character script.
-@export var JUMP_ANIMATION : AnimationPlayer
-## A reference to the crouch animation for use in the character script.
-@export var CROUCH_ANIMATION : AnimationPlayer
-## A reference to the the player's collision shape for use in the character script.
-@export var COLLISION_MESH : CollisionShape3D
-
-#endregion
-
-#region Controls Export Group
-
-# We are using UI controls because they are built into Godot Engine so they can be used right away
-@export_group("Controls")
-## Use the Input Map to map a mouse/keyboard input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controls : Dictionary = {
- LEFT = "ui_left",
- RIGHT = "ui_right",
- FORWARD = "ui_up",
- BACKWARD = "ui_down",
- JUMP = "ui_accept",
- CROUCH = "crouch",
- SPRINT = "sprint",
- PAUSE = "ui_cancel"
- }
-@export_subgroup("Controller Specific")
-## This only affects how the camera is handled, the rest should be covered by adding controller inputs to the existing actions in the Input Map.
-@export var controller_support : bool = false
-## Use the Input Map to map a controller input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controller_controls : Dictionary = {
- LOOK_LEFT = "look_left",
- LOOK_RIGHT = "look_right",
- LOOK_UP = "look_up",
- LOOK_DOWN = "look_down"
- }
-## The sensitivity of the analog stick that controls camera rotation. Lower is less sensitive and higher is more sensitive.
-@export_range(0.001, 1, 0.001) var look_sensitivity : float = 0.035
-
-#endregion
-
-#region Feature Settings Export Group
-
-@export_group("Feature Settings")
-## Enable or disable jumping. Useful for restrictive storytelling environments.
-@export var jumping_enabled : bool = true
-## Whether the player can move in the air or not.
-@export var in_air_momentum : bool = true
-## Smooths the feel of walking.
-@export var motion_smoothing : bool = true
-## Enables or disables sprinting.
-@export var sprint_enabled : bool = true
-## Toggles the sprinting state when button is pressed or requires the player to hold the button down to remain sprinting.
-@export_enum("Hold to Sprint", "Toggle Sprint") var sprint_mode : int = 0
-## Enables or disables crouching.
-@export var crouch_enabled : bool = true
-## Toggles the crouch state when button is pressed or requires the player to hold the button down to remain crouched.
-@export_enum("Hold to Crouch", "Toggle Crouch") var crouch_mode : int = 0
-## Wether sprinting should effect FOV.
-@export var dynamic_fov : bool = true
-## If the player holds down the jump button, should the player keep hopping.
-@export var continuous_jumping : bool = true
-## Enables the view bobbing animation.
-@export var view_bobbing : bool = true
-## Enables an immersive animation when the player jumps and hits the ground.
-@export var jump_animation : bool = true
-## This determines wether the player can use the pause button, not wether the game will actually pause.
-@export var pausing_enabled : bool = true
-## Use with caution.
-@export var gravity_enabled : bool = true
-## If your game changes the gravity value during gameplay, check this property to allow the player to experience the change in gravity.
-@export var dynamic_gravity : bool = false
-
-#endregion
-
-#region Member Variable Initialization
-
-# These are variables used in this script that don't need to be exposed in the editor.
-var speed : float = base_speed
-var current_speed : float = 0.0
-# States: normal, crouching, sprinting
-var state : String = "normal"
-var low_ceiling : bool = false # This is for when the ceiling is too low and the player needs to crouch.
-var was_on_floor : bool = true # Was the player on the floor last frame (for landing animation)
-
-# The reticle should always have a Control node as the root
-var RETICLE : Control
-
-# Get the gravity from the project settings to be synced with RigidBody nodes
-var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity") # Don't set this as a const, see the gravity section in _physics_process
-
-# Stores mouse input for rotating the camera in the physics process
-var mouseInput : Vector2 = Vector2(0,0)
-
-#endregion
-
-
-
-#region Main Control Flow
-
-func _ready():
- #It is safe to comment this line if your game doesn't start with the mouse captured
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
-
- # If the controller is rotated in a certain direction for game design purposes, redirect this rotation into the head.
- HEAD.rotation.y = rotation.y
- rotation.y = 0
-
- if default_reticle:
- change_reticle(default_reticle)
-
- initialize_animations()
- check_controls()
- enter_normal_state()
-
-
-func _process(_delta):
- if pausing_enabled:
- handle_pausing()
-
- update_debug_menu_per_frame()
-
-
-func _physics_process(delta): # Most things happen here.
- # Gravity
- if dynamic_gravity:
- gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
- if not is_on_floor() and gravity and gravity_enabled:
- velocity.y -= gravity * delta
-
- handle_jumping()
-
- var input_dir = Vector2.ZERO
-
- if not immobile: # Immobility works by interrupting user input, so other forces can still be applied to the player
- input_dir = Input.get_vector(controls.LEFT, controls.RIGHT, controls.FORWARD, controls.BACKWARD)
-
- handle_movement(delta, input_dir)
-
- handle_head_rotation()
-
- # The player is not able to stand up if the ceiling is too low
- low_ceiling = $CrouchCeilingDetection.is_colliding()
-
- handle_state(input_dir)
- if dynamic_fov: # This may be changed to an AnimationPlayer
- update_camera_fov()
-
- if view_bobbing:
- play_headbob_animation(input_dir)
-
- if jump_animation:
- play_jump_animation()
-
- update_debug_menu_per_tick()
-
- was_on_floor = is_on_floor() # This must always be at the end of physics_process
-
-#endregion
-
-#region Input Handling
-
-func handle_jumping():
- if jumping_enabled:
- if continuous_jumping: # Hold down the jump button
- if Input.is_action_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity # Adding instead of setting so jumping on slopes works properly
- else:
- if Input.is_action_just_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity
-
-
-func handle_movement(delta, input_dir):
- var direction = input_dir.rotated(-HEAD.rotation.y)
- direction = Vector3(direction.x, 0, direction.y)
- move_and_slide()
-
- if in_air_momentum:
- if is_on_floor():
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
- else:
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
-
-
-func handle_head_rotation():
- if invert_camera_x_axis:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity
-
- if invert_camera_y_axis:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity
-
- if controller_support:
- var controller_view_rotation = Input.get_vector(controller_controls.LOOK_DOWN, controller_controls.LOOK_UP, controller_controls.LOOK_RIGHT, controller_controls.LOOK_LEFT) * look_sensitivity # These are inverted because of the nature of 3D rotation.
- if invert_camera_x_axis:
- HEAD.rotation.x += controller_view_rotation.x * -1
- else:
- HEAD.rotation.x += controller_view_rotation.x
-
- if invert_camera_y_axis:
- HEAD.rotation.y += controller_view_rotation.y * -1
- else:
- HEAD.rotation.y += controller_view_rotation.y
-
- mouseInput = Vector2(0,0)
- HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
-
-
-func check_controls(): # If you add a control, you might want to add a check for it here.
- # The actions are being disabled so the engine doesn't halt the entire project in debug mode
- if !InputMap.has_action(controls.JUMP):
- push_error("No control mapped for jumping. Please add an input map control. Disabling jump.")
- jumping_enabled = false
- if !InputMap.has_action(controls.LEFT):
- push_error("No control mapped for move left. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.RIGHT):
- push_error("No control mapped for move right. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.FORWARD):
- push_error("No control mapped for move forward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.BACKWARD):
- push_error("No control mapped for move backward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.PAUSE):
- push_error("No control mapped for pause. Please add an input map control. Disabling pausing.")
- pausing_enabled = false
- if !InputMap.has_action(controls.CROUCH):
- push_error("No control mapped for crouch. Please add an input map control. Disabling crouching.")
- crouch_enabled = false
- if !InputMap.has_action(controls.SPRINT):
- push_error("No control mapped for sprint. Please add an input map control. Disabling sprinting.")
- sprint_enabled = false
-
-#endregion
-
-#region State Handling
-
-func handle_state(moving):
- if sprint_enabled:
- if sprint_mode == 0:
- if Input.is_action_pressed(controls.SPRINT) and state != "crouching":
- if moving:
- if state != "sprinting":
- enter_sprint_state()
- else:
- if state == "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
- elif sprint_mode == 1:
- if moving:
- # If the player is holding sprint before moving, handle that scenario
- if Input.is_action_pressed(controls.SPRINT) and state == "normal":
- enter_sprint_state()
- if Input.is_action_just_pressed(controls.SPRINT):
- match state:
- "normal":
- enter_sprint_state()
- "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
-
- if crouch_enabled:
- if crouch_mode == 0:
- if Input.is_action_pressed(controls.CROUCH) and state != "sprinting":
- if state != "crouching":
- enter_crouch_state()
- elif state == "crouching" and !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
- elif crouch_mode == 1:
- if Input.is_action_just_pressed(controls.CROUCH):
- match state:
- "normal":
- enter_crouch_state()
- "crouching":
- if !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
-
-
-# Any enter state function should only be called once when you want to enter that state, not every frame.
-func enter_normal_state():
- #print("entering normal state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "normal"
- speed = base_speed
-
-func enter_crouch_state():
- #print("entering crouch state")
- state = "crouching"
- speed = crouch_speed
- CROUCH_ANIMATION.play("crouch")
-
-func enter_sprint_state():
- #print("entering sprint state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "sprinting"
- speed = sprint_speed
-
-#endregion
-
-#region Animation Handling
-
-func initialize_animations():
- # Reset the camera position
- # If you want to change the default head height, change these animations.
- HEADBOB_ANIMATION.play("RESET")
- JUMP_ANIMATION.play("RESET")
- CROUCH_ANIMATION.play("RESET")
-
-func play_headbob_animation(moving):
- if moving and is_on_floor():
- var use_headbob_animation : String
- match state:
- "normal","crouching":
- use_headbob_animation = "walk"
- "sprinting":
- use_headbob_animation = "sprint"
-
- var was_playing : bool = false
- if HEADBOB_ANIMATION.current_animation == use_headbob_animation:
- was_playing = true
-
- HEADBOB_ANIMATION.play(use_headbob_animation, 0.25)
- HEADBOB_ANIMATION.speed_scale = (current_speed / base_speed) * 1.75
- if !was_playing:
- HEADBOB_ANIMATION.seek(float(randi() % 2)) # Randomize the initial headbob direction
- # Let me explain that piece of code because it looks like it does the opposite of what it actually does.
- # The headbob animation has two starting positions. One is at 0 and the other is at 1.
- # randi() % 2 returns either 0 or 1, and so the animation randomly starts at one of the starting positions.
- # This code is extremely performant but it makes no sense.
-
- else:
- if HEADBOB_ANIMATION.current_animation == "sprint" or HEADBOB_ANIMATION.current_animation == "walk":
- HEADBOB_ANIMATION.speed_scale = 1
- HEADBOB_ANIMATION.play("RESET", 1)
-
-func play_jump_animation():
- if !was_on_floor and is_on_floor(): # The player just landed
- var facing_direction : Vector3 = CAMERA.get_global_transform().basis.x
- var facing_direction_2D : Vector2 = Vector2(facing_direction.x, facing_direction.z).normalized()
- var velocity_2D : Vector2 = Vector2(velocity.x, velocity.z).normalized()
-
- # Compares velocity direction against the camera direction (via dot product) to determine which landing animation to play.
- var side_landed : int = round(velocity_2D.dot(facing_direction_2D))
-
- if side_landed > 0:
- JUMP_ANIMATION.play("land_right", 0.25)
- elif side_landed < 0:
- JUMP_ANIMATION.play("land_left", 0.25)
- else:
- JUMP_ANIMATION.play("land_center", 0.25)
-
-#endregion
-
-#region Debug Menu
-
-func update_debug_menu_per_frame():
- $UserInterface/DebugPanel.add_property("FPS", Performance.get_monitor(Performance.TIME_FPS), 0)
- var status : String = state
- if !is_on_floor():
- status += " in the air"
- $UserInterface/DebugPanel.add_property("State", status, 4)
-
-
-func update_debug_menu_per_tick():
- # Big thanks to github.com/LorenzoAncora for the concept of the improved debug values
- current_speed = Vector3.ZERO.distance_to(get_real_velocity())
- $UserInterface/DebugPanel.add_property("Speed", snappedf(current_speed, 0.001), 1)
- $UserInterface/DebugPanel.add_property("Target speed", speed, 2)
- var cv : Vector3 = get_real_velocity()
- var vd : Array[float] = [
- snappedf(cv.x, 0.001),
- snappedf(cv.y, 0.001),
- snappedf(cv.z, 0.001)
- ]
- var readable_velocity : String = "X: " + str(vd[0]) + " Y: " + str(vd[1]) + " Z: " + str(vd[2])
- $UserInterface/DebugPanel.add_property("Velocity", readable_velocity, 3)
-
-
-func _unhandled_input(event : InputEvent):
- if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
- mouseInput.x += event.relative.x
- mouseInput.y += event.relative.y
- # Toggle debug menu
- elif event is InputEventKey:
- if event.is_released():
- # Where we're going, we don't need InputMap
- if event.keycode == 4194338: # F7
- $UserInterface/DebugPanel.visible = !$UserInterface/DebugPanel.visible
-
-#endregion
-
-#region Misc Functions
-
-func change_reticle(reticle): # Yup, this function is kinda strange
- if RETICLE:
- RETICLE.queue_free()
-
- RETICLE = load(reticle).instantiate()
- RETICLE.character = self
- $UserInterface.add_child(RETICLE)
-
-
-func update_camera_fov():
- if state == "sprinting":
- CAMERA.fov = lerp(CAMERA.fov, 85.0, 0.3)
- else:
- CAMERA.fov = lerp(CAMERA.fov, 75.0, 0.3)
-
-func handle_pausing():
- if Input.is_action_just_pressed(controls.PAUSE):
- # You may want another node to handle pausing, because this player may get paused too.
- match Input.mouse_mode:
- Input.MOUSE_MODE_CAPTURED:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- #get_tree().paused = false
- Input.MOUSE_MODE_VISIBLE:
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- #get_tree().paused = false
-
-#endregion
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/character.tscn b/Scenes/quality-godot-first-person-2-main/addons/fpc/character.tscn
deleted file mode 100644
index 3cfd7c8..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/character.tscn
+++ /dev/null
@@ -1,455 +0,0 @@
-[gd_scene load_steps=22 format=3 uid="uid://cc1m2a1obsyn4"]
-
-[ext_resource type="Script" path="res://addons/fpc/character.gd" id="1_0t4e8"]
-[ext_resource type="Script" path="res://addons/fpc/EditorModule.gd" id="3_v3ckk"]
-[ext_resource type="Script" path="res://addons/fpc/debug.gd" id="3_x1wcc"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kp17n"]
-albedo_color = Color(0.909804, 0.596078, 0, 1)
-clearcoat_enabled = true
-clearcoat_roughness = 0.2
-
-[sub_resource type="CapsuleMesh" id="CapsuleMesh_jw1de"]
-material = SubResource("StandardMaterial3D_kp17n")
-
-[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uy03j"]
-
-[sub_resource type="Animation" id="Animation_j8cx7"]
-resource_name = "RESET"
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-
-[sub_resource type="Animation" id="Animation_5ec5e"]
-resource_name = "crouch"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0), Vector3(0, 1.12508, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 2
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 2
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_5e5t5"]
-_data = {
-"RESET": SubResource("Animation_j8cx7"),
-"crouch": SubResource("Animation_5ec5e")
-}
-
-[sub_resource type="Animation" id="Animation_gh776"]
-resource_name = "RESET"
-length = 0.001
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_8ku67"]
-resource_name = "sprint"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.06, -0.25, 0, 0.25, -0.01, 0, 0, 0, 0, 0, -0.06, -0.25, 0.01, 0.25, 0.01, 0, 0, 0, 0, 0, 0.06, -0.25, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(0.05, -0.25, 0, 0.2, -0.01, 0, -0.2, 0.000186046, 0.2, 0.000186046, 0.05, -0.2, -0.01, 0.2, -0.01, 0, -0.2, 0, 0.2, 0, 0.05, -0.2, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="Animation" id="Animation_lrqmv"]
-resource_name = "walk"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, -0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, 0.04, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(-0.05, -0.25, 0, 0.2, 0.005, 0, -0.2, 0.000186046, 0.2, 0.000186046, -0.05, -0.2, 0.005, 0.2, 0.005, 0, -0.2, 0, 0.2, 0, -0.05, -0.2, 0.005, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_o0unb"]
-_data = {
-"RESET": SubResource("Animation_gh776"),
-"sprint": SubResource("Animation_8ku67"),
-"walk": SubResource("Animation_lrqmv")
-}
-
-[sub_resource type="Animation" id="Animation_fvvjq"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_s07ye"]
-resource_name = "jump"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.6, 3),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_3eyjl"]
-resource_name = "land_center"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_l1rph"]
-resource_name = "land_left"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_vsknp"]
-resource_name = "land_right"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, -0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_qeg5r"]
-_data = {
-"RESET": SubResource("Animation_fvvjq"),
-"jump": SubResource("Animation_s07ye"),
-"land_center": SubResource("Animation_3eyjl"),
-"land_left": SubResource("Animation_l1rph"),
-"land_right": SubResource("Animation_vsknp")
-}
-
-[sub_resource type="Theme" id="Theme_wdf0f"]
-MarginContainer/constants/margin_bottom = 10
-MarginContainer/constants/margin_left = 10
-MarginContainer/constants/margin_right = 10
-MarginContainer/constants/margin_top = 10
-
-[sub_resource type="SphereShape3D" id="SphereShape3D_k4wwl"]
-
-[node name="Character" type="CharacterBody3D" node_paths=PackedStringArray("HEAD", "CAMERA", "HEADBOB_ANIMATION", "JUMP_ANIMATION", "CROUCH_ANIMATION", "COLLISION_MESH")]
-transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
-script = ExtResource("1_0t4e8")
-default_reticle = "res://addons/fpc/reticles/reticle_1.tscn"
-HEAD = NodePath("Head")
-CAMERA = NodePath("Head/Camera")
-HEADBOB_ANIMATION = NodePath("Head/HeadbobAnimation")
-JUMP_ANIMATION = NodePath("Head/JumpAnimation")
-CROUCH_ANIMATION = NodePath("CrouchAnimation")
-COLLISION_MESH = NodePath("Collision")
-
-[node name="Mesh" type="MeshInstance3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-mesh = SubResource("CapsuleMesh_jw1de")
-
-[node name="Collision" type="CollisionShape3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("CapsuleShape3D_uy03j")
-
-[node name="CrouchAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_5e5t5")
-}
-
-[node name="Head" type="Node3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
-
-[node name="Camera" type="Camera3D" parent="Head"]
-
-[node name="HeadbobAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_o0unb")
-}
-blend_times = [&"RESET", &"RESET", 0.5, &"RESET", &"walk", 0.5, &"walk", &"RESET", 0.5]
-
-[node name="JumpAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_qeg5r")
-}
-speed_scale = 4.0
-
-[node name="UserInterface" type="Control" parent="."]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 1
-
-[node name="DebugPanel" type="PanelContainer" parent="UserInterface"]
-visible = false
-layout_mode = 0
-offset_left = 10.0
-offset_top = 10.0
-offset_right = 453.0
-offset_bottom = 50.0
-theme = SubResource("Theme_wdf0f")
-script = ExtResource("3_x1wcc")
-
-[node name="MarginContainer" type="MarginContainer" parent="UserInterface/DebugPanel"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="UserInterface/DebugPanel/MarginContainer"]
-layout_mode = 2
-
-[node name="CrouchCeilingDetection" type="ShapeCast3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("SphereShape3D_k4wwl")
-target_position = Vector3(0, 0.5, 0)
-
-[node name="EditorModule" type="Node" parent="."]
-script = ExtResource("3_v3ckk")
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/debug.gd b/Scenes/quality-godot-first-person-2-main/addons/fpc/debug.gd
deleted file mode 100644
index efdb7a4..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/debug.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-extends PanelContainer
-
-
-func _process(delta):
- if visible:
- pass
-
-func add_property(title : String, value, order : int): # This can either be called once for a static property or called every frame for a dynamic property
- var target
- target = $MarginContainer/VBoxContainer.find_child(title, true, false) # I have no idea what true and false does here, the function should be more specific
- if !target:
- target = Label.new() # Debug lines are of type Label
- $MarginContainer/VBoxContainer.add_child(target)
- target.name = title
- target.text = title + ": " + str(value)
- elif visible:
- target.text = title + ": " + str(value)
- $MarginContainer/VBoxContainer.move_child(target, order)
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn b/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn
deleted file mode 100644
index 2828124..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn
+++ /dev/null
@@ -1,37 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://coqpusufa8a6k"]
-
-[sub_resource type="GDScript" id="GDScript_10f85"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var character : CharacterBody3D
-
-@export_group(\"Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
-
-func update_reticle_settings():
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-"
-
-[node name="Reticle" type="CenterContainer"]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_10f85")
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
diff --git a/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn b/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn
deleted file mode 100644
index bb83b83..0000000
--- a/Scenes/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn
+++ /dev/null
@@ -1,104 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://3mij3cjhkwsm"]
-
-[sub_resource type="GDScript" id="GDScript_a8kpl"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var reticle_lines : Array[Line2D]
-@export var character : CharacterBody3D
-
-@export_group(\"Animate\")
-@export var animated_reticle : bool = true
-@export var reticle_speed : float = 0.5
-@export var reticle_spread : float = 4.0
-
-@export_group(\"Dot Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-@export_group(\"Line Settings\")
-@export var line_color : Color = Color.WHITE
-@export var line_width : int = 2
-@export var line_length : int = 10
-@export var line_distance : int = 5
-@export_enum(\"None\", \"Round\") var cap_mode : int = 0
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
- if animated_reticle:
- animate_reticle_lines()
-
-
-func animate_reticle_lines():
- var vel = character.get_real_velocity()
- var origin = Vector3(0,0,0)
- var pos = Vector2(0,0)
- var speed = origin.distance_to(vel)
-
- reticle_lines[0].position = lerp(reticle_lines[0].position, pos + Vector2(0, -speed * reticle_spread), reticle_speed)
- reticle_lines[1].position = lerp(reticle_lines[1].position, pos + Vector2(-speed * reticle_spread, 0), reticle_speed)
- reticle_lines[2].position = lerp(reticle_lines[2].position, pos + Vector2(speed * reticle_spread, 0), reticle_speed)
- reticle_lines[3].position = lerp(reticle_lines[3].position, pos + Vector2(0, speed * reticle_spread), reticle_speed)
-
-
-func update_reticle_settings():
- # Dot
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-
- # Lines
- for line in reticle_lines:
- line.default_color = line_color
- line.width = line_width
- if cap_mode == 0:
- line.begin_cap_mode = Line2D.LINE_CAP_NONE
- line.end_cap_mode = Line2D.LINE_CAP_NONE
- elif cap_mode == 1:
- line.begin_cap_mode = Line2D.LINE_CAP_ROUND
- line.end_cap_mode = Line2D.LINE_CAP_ROUND
-
- # Please someone find a better way to do this
- reticle_lines[0].points[0].y = -line_distance
- reticle_lines[0].points[1].y = -line_length - line_distance
- reticle_lines[1].points[0].x = -line_distance
- reticle_lines[1].points[1].x = -line_length - line_distance
- reticle_lines[2].points[0].x = line_distance
- reticle_lines[2].points[1].x = line_length + line_distance
- reticle_lines[3].points[0].y = line_distance
- reticle_lines[3].points[1].y = line_length + line_distance
-"
-
-[node name="Reticle" type="CenterContainer" node_paths=PackedStringArray("reticle_lines")]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_a8kpl")
-reticle_lines = [NodePath("top"), NodePath("left"), NodePath("right"), NodePath("bottom")]
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
-
-[node name="top" type="Line2D" parent="."]
-points = PackedVector2Array(0, -5, 0, -15)
-width = 2.0
-
-[node name="left" type="Line2D" parent="."]
-points = PackedVector2Array(-5, 0, -15, 0)
-width = 2.0
-
-[node name="right" type="Line2D" parent="."]
-points = PackedVector2Array(5, 0, 15, 0)
-width = 2.0
-
-[node name="bottom" type="Line2D" parent="."]
-points = PackedVector2Array(0, 5, 0, 15)
-width = 2.0
diff --git a/Scenes/quality-godot-first-person-2-main/icon.svg b/Scenes/quality-godot-first-person-2-main/icon.svg
deleted file mode 100644
index ea6ce87..0000000
--- a/Scenes/quality-godot-first-person-2-main/icon.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
diff --git a/Scenes/quality-godot-first-person-2-main/icon.svg.import b/Scenes/quality-godot-first-person-2-main/icon.svg.import
deleted file mode 100644
index 9e0a681..0000000
--- a/Scenes/quality-godot-first-person-2-main/icon.svg.import
+++ /dev/null
@@ -1,37 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://64npoko7rqya"
-path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://icon.svg"
-dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
diff --git a/Scenes/quality-godot-first-person-2-main/project.godot b/Scenes/quality-godot-first-person-2-main/project.godot
deleted file mode 100644
index 4626ad9..0000000
--- a/Scenes/quality-godot-first-person-2-main/project.godot
+++ /dev/null
@@ -1,65 +0,0 @@
-; Engine configuration file.
-; It's best edited using the editor UI and not directly,
-; since the parameters that go here are not all obvious.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-config_version=5
-
-[application]
-
-config/name="first person controller 2.0"
-run/main_scene="res://test_world.tscn"
-config/features=PackedStringArray("4.3", "Forward Plus")
-config/icon="res://icon.svg"
-
-[display]
-
-window/size/mode=2
-
-[input]
-
-ui_left={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
-]
-}
-ui_right={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
-]
-}
-ui_up={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
-]
-}
-ui_down={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
-]
-}
-crouch={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null)
-]
-}
-sprint={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
diff --git a/Scenes/quality-godot-first-person-2-main/test_world.tscn b/Scenes/quality-godot-first-person-2-main/test_world.tscn
deleted file mode 100644
index b6901b9..0000000
--- a/Scenes/quality-godot-first-person-2-main/test_world.tscn
+++ /dev/null
@@ -1,106 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://cs4drhmc1bql5"]
-
-[ext_resource type="PackedScene" uid="uid://cc1m2a1obsyn4" path="res://addons/fpc/character.tscn" id="1_e18vq"]
-[ext_resource type="Texture2D" uid="uid://pe7a4weirj2g" path="res://textures/dark.png" id="2_08fdt"]
-[ext_resource type="Texture2D" uid="uid://cxjxvqmf4boxq" path="res://textures/green.png" id="3_q4clv"]
-[ext_resource type="Texture2D" uid="uid://dsv4jm4vydflb" path="res://textures/orange.png" id="4_1ns5t"]
-
-[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_edcox"]
-ground_color = Color(0.160784, 0.815686, 0.905882, 1)
-
-[sub_resource type="Sky" id="Sky_2iust"]
-sky_material = SubResource("PhysicalSkyMaterial_edcox")
-
-[sub_resource type="Environment" id="Environment_20rw3"]
-background_mode = 2
-sky = SubResource("Sky_2iust")
-tonemap_mode = 1
-ssao_enabled = true
-
-[sub_resource type="Gradient" id="Gradient_ur0vy"]
-colors = PackedColorArray(0, 0.476245, 0.0193456, 1, 0.360494, 0.612721, 0.119744, 1)
-
-[sub_resource type="FastNoiseLite" id="FastNoiseLite_jd3pw"]
-frequency = 0.0027
-
-[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_7akuf"]
-width = 1024
-height = 1024
-in_3d_space = true
-seamless = true
-color_ramp = SubResource("Gradient_ur0vy")
-noise = SubResource("FastNoiseLite_jd3pw")
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_67ysu"]
-albedo_texture = SubResource("NoiseTexture2D_7akuf")
-uv1_scale = Vector3(0.1, 0.1, 0.1)
-uv1_triplanar = true
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gomnb"]
-albedo_texture = ExtResource("2_08fdt")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u0sbk"]
-albedo_texture = ExtResource("3_q4clv")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7j4uu"]
-albedo_texture = ExtResource("4_1ns5t")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[node name="test_world" type="Node3D"]
-
-[node name="Character" parent="." instance=ExtResource("1_e18vq")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = SubResource("Environment_20rw3")
-
-[node name="sun" type="DirectionalLight3D" parent="."]
-transform = Transform3D(0.87959, -0.436605, 0.188936, 0, 0.397148, 0.917755, -0.475732, -0.807248, 0.349328, 0, 0, 0)
-light_energy = 2.0
-shadow_enabled = true
-
-[node name="terrain" type="Node3D" parent="."]
-
-[node name="CSGBox3D" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, -0.5, 10)
-use_collision = true
-size = Vector3(30, 1, 30)
-material = SubResource("StandardMaterial3D_67ysu")
-
-[node name="CSGBox3D2" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D3" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.8, -13)
-use_collision = true
-size = Vector3(4, 0.5, 4)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D4" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 0, 0, 1, -9.5, 1.2, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_u0sbk")
-
-[node name="CSGBox3D5" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 3, -15.5)
-use_collision = true
-size = Vector3(19, 8, 1)
-material = SubResource("StandardMaterial3D_7j4uu")
diff --git a/Scenes/quality-godot-first-person-2-main/textures/dark.png b/Scenes/quality-godot-first-person-2-main/textures/dark.png
deleted file mode 100644
index 69be211..0000000
Binary files a/Scenes/quality-godot-first-person-2-main/textures/dark.png and /dev/null differ
diff --git a/Scenes/quality-godot-first-person-2-main/textures/dark.png.import b/Scenes/quality-godot-first-person-2-main/textures/dark.png.import
deleted file mode 100644
index 2a82a3f..0000000
--- a/Scenes/quality-godot-first-person-2-main/textures/dark.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://pe7a4weirj2g"
-path.s3tc="res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/dark.png"
-dest_files=["res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Scenes/quality-godot-first-person-2-main/textures/green.png b/Scenes/quality-godot-first-person-2-main/textures/green.png
deleted file mode 100644
index 7bc7cf8..0000000
Binary files a/Scenes/quality-godot-first-person-2-main/textures/green.png and /dev/null differ
diff --git a/Scenes/quality-godot-first-person-2-main/textures/green.png.import b/Scenes/quality-godot-first-person-2-main/textures/green.png.import
deleted file mode 100644
index 7c7e044..0000000
--- a/Scenes/quality-godot-first-person-2-main/textures/green.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cxjxvqmf4boxq"
-path.s3tc="res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/green.png"
-dest_files=["res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Scenes/quality-godot-first-person-2-main/textures/orange.png b/Scenes/quality-godot-first-person-2-main/textures/orange.png
deleted file mode 100644
index dec5b59..0000000
Binary files a/Scenes/quality-godot-first-person-2-main/textures/orange.png and /dev/null differ
diff --git a/Scenes/quality-godot-first-person-2-main/textures/orange.png.import b/Scenes/quality-godot-first-person-2-main/textures/orange.png.import
deleted file mode 100644
index 311f8ac..0000000
--- a/Scenes/quality-godot-first-person-2-main/textures/orange.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dsv4jm4vydflb"
-path.s3tc="res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/orange.png"
-dest_files=["res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/Scenes/quality-godot-first-person-2-main/textures/purple.png b/Scenes/quality-godot-first-person-2-main/textures/purple.png
deleted file mode 100644
index 48a51c1..0000000
Binary files a/Scenes/quality-godot-first-person-2-main/textures/purple.png and /dev/null differ
diff --git a/Scenes/quality-godot-first-person-2-main/textures/purple.png.import b/Scenes/quality-godot-first-person-2-main/textures/purple.png.import
deleted file mode 100644
index 9dc0969..0000000
--- a/Scenes/quality-godot-first-person-2-main/textures/purple.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cl4kewig3pk7s"
-path="res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/purple.png"
-dest_files=["res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Scenes/quality-godot-first-person-2-main/textures/red.png b/Scenes/quality-godot-first-person-2-main/textures/red.png
deleted file mode 100644
index bf1cb17..0000000
Binary files a/Scenes/quality-godot-first-person-2-main/textures/red.png and /dev/null differ
diff --git a/Scenes/quality-godot-first-person-2-main/textures/red.png.import b/Scenes/quality-godot-first-person-2-main/textures/red.png.import
deleted file mode 100644
index c8c15aa..0000000
--- a/Scenes/quality-godot-first-person-2-main/textures/red.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d1h161t0v6hau"
-path="res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/red.png"
-dest_files=["res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Scenes/reticles/reticle_0.tscn b/Scenes/reticles/reticle_0.tscn
deleted file mode 100644
index 2828124..0000000
--- a/Scenes/reticles/reticle_0.tscn
+++ /dev/null
@@ -1,37 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://coqpusufa8a6k"]
-
-[sub_resource type="GDScript" id="GDScript_10f85"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var character : CharacterBody3D
-
-@export_group(\"Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
-
-func update_reticle_settings():
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-"
-
-[node name="Reticle" type="CenterContainer"]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_10f85")
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
diff --git a/Scenes/reticles/reticle_1.tscn b/Scenes/reticles/reticle_1.tscn
deleted file mode 100644
index bb83b83..0000000
--- a/Scenes/reticles/reticle_1.tscn
+++ /dev/null
@@ -1,104 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://3mij3cjhkwsm"]
-
-[sub_resource type="GDScript" id="GDScript_a8kpl"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var reticle_lines : Array[Line2D]
-@export var character : CharacterBody3D
-
-@export_group(\"Animate\")
-@export var animated_reticle : bool = true
-@export var reticle_speed : float = 0.5
-@export var reticle_spread : float = 4.0
-
-@export_group(\"Dot Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-@export_group(\"Line Settings\")
-@export var line_color : Color = Color.WHITE
-@export var line_width : int = 2
-@export var line_length : int = 10
-@export var line_distance : int = 5
-@export_enum(\"None\", \"Round\") var cap_mode : int = 0
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
- if animated_reticle:
- animate_reticle_lines()
-
-
-func animate_reticle_lines():
- var vel = character.get_real_velocity()
- var origin = Vector3(0,0,0)
- var pos = Vector2(0,0)
- var speed = origin.distance_to(vel)
-
- reticle_lines[0].position = lerp(reticle_lines[0].position, pos + Vector2(0, -speed * reticle_spread), reticle_speed)
- reticle_lines[1].position = lerp(reticle_lines[1].position, pos + Vector2(-speed * reticle_spread, 0), reticle_speed)
- reticle_lines[2].position = lerp(reticle_lines[2].position, pos + Vector2(speed * reticle_spread, 0), reticle_speed)
- reticle_lines[3].position = lerp(reticle_lines[3].position, pos + Vector2(0, speed * reticle_spread), reticle_speed)
-
-
-func update_reticle_settings():
- # Dot
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-
- # Lines
- for line in reticle_lines:
- line.default_color = line_color
- line.width = line_width
- if cap_mode == 0:
- line.begin_cap_mode = Line2D.LINE_CAP_NONE
- line.end_cap_mode = Line2D.LINE_CAP_NONE
- elif cap_mode == 1:
- line.begin_cap_mode = Line2D.LINE_CAP_ROUND
- line.end_cap_mode = Line2D.LINE_CAP_ROUND
-
- # Please someone find a better way to do this
- reticle_lines[0].points[0].y = -line_distance
- reticle_lines[0].points[1].y = -line_length - line_distance
- reticle_lines[1].points[0].x = -line_distance
- reticle_lines[1].points[1].x = -line_length - line_distance
- reticle_lines[2].points[0].x = line_distance
- reticle_lines[2].points[1].x = line_length + line_distance
- reticle_lines[3].points[0].y = line_distance
- reticle_lines[3].points[1].y = line_length + line_distance
-"
-
-[node name="Reticle" type="CenterContainer" node_paths=PackedStringArray("reticle_lines")]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_a8kpl")
-reticle_lines = [NodePath("top"), NodePath("left"), NodePath("right"), NodePath("bottom")]
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
-
-[node name="top" type="Line2D" parent="."]
-points = PackedVector2Array(0, -5, 0, -15)
-width = 2.0
-
-[node name="left" type="Line2D" parent="."]
-points = PackedVector2Array(-5, 0, -15, 0)
-width = 2.0
-
-[node name="right" type="Line2D" parent="."]
-points = PackedVector2Array(5, 0, 15, 0)
-width = 2.0
-
-[node name="bottom" type="Line2D" parent="."]
-points = PackedVector2Array(0, 5, 0, 15)
-width = 2.0
diff --git a/Scenes/town.tscn b/Scenes/town.tscn
deleted file mode 100644
index b5e2cb7..0000000
--- a/Scenes/town.tscn
+++ /dev/null
@@ -1,47 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://b5lihf68rflsh"]
-
-[ext_resource type="Texture2D" uid="uid://youvyib1feqp" path="res://Assets/Textures/kenny/Dark/texture_02.png" id="1_kswdu"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iau6b"]
-albedo_texture = ExtResource("1_kswdu")
-uv1_triplanar = true
-
-[node name="Town" type="Node3D"]
-
-[node name="Terrain" type="Node3D" parent="."]
-
-[node name="Floor" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(50, 0.5, 50)
-
-[node name="wall 1" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 12)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(25, 10, 1)
-
-[node name="wall 2" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -12)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(25, 10, 1)
-
-[node name="wall 3" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 5, 0)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(1, 10, 25)
-
-[node name="wall 4" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 5, 0)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(1, 10, 25)
-
-[node name="platform" type="CSGBox3D" parent="Terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 7)
-material_override = SubResource("StandardMaterial3D_iau6b")
-use_collision = true
-size = Vector3(5, 0.5, 5)
diff --git a/Scenes/world.tscn b/Scenes/world.tscn
deleted file mode 100644
index 150a537..0000000
--- a/Scenes/world.tscn
+++ /dev/null
@@ -1,56 +0,0 @@
-[gd_scene load_steps=11 format=3 uid="uid://cjimt73bcja16"]
-
-[ext_resource type="Script" uid="uid://klp20wju1i26" path="res://Scripts/world.gd" id="1_8j60k"]
-[ext_resource type="PackedScene" uid="uid://x4ohd5qj3xpy" path="res://Scenes/Lobby.tscn" id="2_5a7ea"]
-[ext_resource type="PackedScene" uid="uid://dt1v3f2oc7vbw" path="res://Scenes/Menu/LobbyMenu.tscn" id="4_fo5ed"]
-[ext_resource type="Script" uid="uid://bsyvwqveefopb" path="res://Scripts/Level/level.gd" id="5_5ukr8"]
-[ext_resource type="PackedScene" uid="uid://d1ofd327cqcd1" path="res://Scenes/Server/Server.tscn" id="5_fo5ed"]
-[ext_resource type="PackedScene" uid="uid://b5lihf68rflsh" path="res://Scenes/town.tscn" id="5_o06y3"]
-[ext_resource type="PackedScene" uid="uid://dtpqexue3vgl6" path="res://Scenes/Chat/ChatMenu.tscn" id="7_k7acu"]
-
-[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_go701"]
-sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
-ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
-
-[sub_resource type="Sky" id="Sky_5a7ea"]
-sky_material = SubResource("ProceduralSkyMaterial_go701")
-
-[sub_resource type="Environment" id="Environment_8j60k"]
-background_mode = 2
-sky = SubResource("Sky_5a7ea")
-tonemap_mode = 2
-glow_enabled = true
-
-[node name="World" type="Node" node_paths=PackedStringArray("lobby_menu", "server", "level")]
-script = ExtResource("1_8j60k")
-lobby_menu = NodePath("LobbyMenu")
-server = NodePath("Server")
-level = NodePath("Level")
-
-[node name="Server" parent="." instance=ExtResource("5_fo5ed")]
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = SubResource("Environment_8j60k")
-
-[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
-transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
-shadow_enabled = true
-
-[node name="Level" type="Node" parent="." node_paths=PackedStringArray("lobby")]
-script = ExtResource("5_5ukr8")
-lobby = NodePath("Lobby")
-
-[node name="Lobby" parent="Level" instance=ExtResource("2_5a7ea")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.3442, -31.095, 21.7287)
-
-[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="Level"]
-_spawnable_scenes = PackedStringArray("uid://cc1m2a1obsyn4")
-spawn_path = NodePath("..")
-
-[node name="Town" parent="Level" instance=ExtResource("5_o06y3")]
-
-[node name="LobbyMenu" parent="." instance=ExtResource("4_fo5ed")]
-visible = false
-
-[node name="ChatMenu" parent="." instance=ExtResource("7_k7acu")]
-visible = false
diff --git a/Scripts/Chat/chat_menu.gd b/Scripts/Chat/chat_menu.gd
deleted file mode 100644
index 9172fed..0000000
--- a/Scripts/Chat/chat_menu.gd
+++ /dev/null
@@ -1,246 +0,0 @@
-class_name ChatMenu
-extends Control
-
-
-#region Onready Variables
-
-@onready var scroll_container = $AspectRatioContainer/MarginContainer/VBoxContainer/ScrollContainer
-@onready var command_text_edit = $AspectRatioContainer/MarginContainer/VBoxContainer/CommandScrollContainer/CommandTextEdit
-@onready var message_container = $AspectRatioContainer/MarginContainer/VBoxContainer/ScrollContainer/MessageContainer
-@onready var visible_timer = $VisibleTimer
-
-#endregion
-
-
-#region Variables
-
-var opened : bool = false
-var clear_command_text : bool = false
-
-#endregion
-
-
-#region Signals
-
-signal chat_opened()
-signal spawn_item(item_name : String, x : String, y : String, z : String)
-signal lobby_move(x : String, z : String)
-
-#endregion
-
-
-#region Godot Functions
-
-func _ready() -> void:
- hide()
- opened = false
- command_text_edit.gui_input.connect(_command_text_edit_gui_input)
- visible_timer.timeout.connect(hide)
-
-func _process(_delta : float):
- if clear_command_text == true:
- command_text_edit.text = ""
- clear_command_text = false
-
- if opened == true:
- if Input.is_action_just_pressed("pause"):
- remove_focus()
- visible_timer.start()
- return
-
- if Input.is_action_just_pressed("open_chat"):
- visible_timer.stop()
- chat_opened.emit()
- show()
- focus()
-
- if Input.is_action_just_pressed("open_chat_as_command"):
- visible_timer.stop()
- command_text_edit.text = "/"
- chat_opened.emit()
- show()
- focus()
- command_text_edit.set_caret_column(1, false, 0)
-
-#endregion
-
-
-#region Public Functions
-
-func focus():
- mouse_filter = Control.MOUSE_FILTER_STOP
- opened = true
- Global.in_menu = true
- command_text_edit.grab_focus()
-
-func remove_focus():
- mouse_filter = Control.MOUSE_FILTER_IGNORE
- opened = false
- command_text_edit.release_focus()
- Global.in_menu = false
-
-func send_message(message : String, keep_focus : bool, label_color : Color = Color(1, 1, 1, 1)):
- visible_timer.stop()
- show()
- var message_label : Label = Label.new()
- message_label.text = message
- message_label.label_settings = LabelSettings.new()
- message_label.label_settings.font_color = label_color
- message_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
- message_container.add_child(message_label)
-
- if keep_focus == false:
- remove_focus()
- visible_timer.start()
-
- get_tree().create_timer(0.01).timeout.connect(
- func() -> void:
- scroll_container.scroll_vertical = scroll_container.get_v_scroll_bar().max_value
- )
-
-#endregion
-
-
-#region Signal Functions
-
-func _command_text_edit_gui_input(event : InputEvent):
- if event.is_action_pressed("chat_send"):
- send_message(command_text_edit.text, false)
- check_command(command_text_edit.text)
- clear_command_text = true
-
-#endregion
-
-
-#region "Private" Functions
-
-func check_command(command : String):
- command.strip_edges(true, true)
-
- if command.begins_with("/") == false:
- return
-
- if Global.is_admin == false:
- send_message("Cannot run command without admin status", false)
- return
-
- command = command.lstrip("/")
-
- # ~ SPAWN ~ #
- if command.begins_with("spawn ") or command == "spawn":
- command = command.lstrip("spawn ")
- command = command.trim_prefix(" ")
-
- #get the item name and check that it exists
- var item_next_space : int = command.find(" ")
- if item_next_space == -1:
- send_message("Spawn Syntax error, spawn command looks like `spawn x y z`", false, Color(1, 0, 0, 1))
- return
-
- var item_name : String = command.substr(0, item_next_space)
- command = command.lstrip(item_name)
- command = command.trim_prefix(" ")
-
- # if EntityResource.ids_by_name.has(item_name) == false:
- # var entity_names = ""
- # for key in EntityResource.data:
- # if EntityResource.data[key].spawnable == false:
- # continue
-
- # entity_names += EntityResource.data[key].name + " "
-
- # send_message("Entity: \"" + item_name + "\" was not found, cannot spawn. Entity List is: " + entity_names, false, Color(1, 0, 0, 1))
- # return
-
- #get x
- item_next_space = command.find(" ")
- if item_next_space == -1:
- send_message("Spawn Syntax error, spawn command looks like `spawn x y z`", false, Color(1, 0, 0, 1))
- return
-
- var x_name : String = command.substr(0, item_next_space)
- command = command.lstrip(x_name)
- command = command.trim_prefix(" ")
-
- if x_name != "~" and x_name.is_valid_int() == false:
- send_message("Spawn Syntax error: x value was not ~ or int", false, Color(1, 0, 0, 1))
- return
-
- #get y
- item_next_space = command.find(" ")
- if item_next_space == -1:
- send_message("Spawn Syntax error, spawn command looks like `spawn x y z`", false, Color(1, 0, 0, 1))
- return
-
- var y_name : String = command.substr(0, item_next_space)
- command = command.lstrip(y_name)
- command = command.trim_prefix(" ")
-
- if y_name != "~" and y_name.is_valid_int() == false:
- send_message("Spawn Syntax error: y value was not ~ or int", false, Color(1, 0, 0, 1))
- return
-
- #check z (which is what is left in command)
- command = command.trim_prefix(" ")
- command = command.trim_suffix(" ")
- if command == "":
- send_message("Spawn Syntax error, spawn command looks like `spawn x y z`", false, Color(1, 0, 0, 1))
-
- if command != "~" and command.is_valid_int() == false:
- send_message("Item Spawn Syntax error: z value was not ~ or int", false, Color(1, 0, 0, 1))
- return
-
- #call spawn item
- spawn_item.emit(item_name, x_name, y_name, command)
- return
-
- # ~ LOBBY ~ #
- if command.begins_with("lobby ") or command == "lobby":
- command = command.lstrip("lobby ")
- command = command.trim_prefix(" ")
-
- #get the type name and check that it exists
- var type_next_space : int = command.find(" ")
- if type_next_space == -1:
- send_message("Lobby Syntax error, lobby command looks like `lobby [args]`", false, Color(1, 0, 0, 1))
- return
-
- # ~ move ~ #
- if command.begins_with("move ") or command == "move":
- command = command.lstrip("move ")
- command = command.trim_prefix(" ")
-
- #error check for if there is no position
- if command == "":
- send_message("Lobby Move Syntax error, lobby move command looks like `lobby move x z`", false, Color(1, 0, 0, 1))
- return
-
- #get x
- var position_space : int = command.find(" ")
- if position_space == -1:
- send_message("Lobby Move Syntax error, lobby move command looks like `lobby move x z`", false, Color(1, 0, 0, 1))
- return
-
- var x_name : String = command.substr(0, position_space)
- command = command.lstrip(x_name)
- command = command.trim_prefix(" ")
-
- if x_name != "~" and x_name.is_valid_int() == false:
- send_message("Lobby Move Syntax error: x value was not ~ or int", false, Color(1, 0, 0, 1))
- return
-
- #check z (which is what is left in command)
- command = command.trim_prefix(" ")
- command = command.trim_suffix(" ")
- if command == "":
- send_message("Lobby Move Syntax error, lobby move command looks like `lobby move x z`", false, Color(1, 0, 0, 1))
-
- if command != "~" and command.is_valid_int() == false:
- send_message("Lobby Move Syntax error: z value was not ~ or int", false, Color(1, 0, 0, 1))
- return
-
- #call spawn item
- lobby_move.emit(x_name, command)
- return
-
-#endregion
diff --git a/Scripts/Chat/chat_menu.gd.uid b/Scripts/Chat/chat_menu.gd.uid
deleted file mode 100644
index 3fafcc7..0000000
--- a/Scripts/Chat/chat_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c8k0usfm5rdm3
diff --git a/Scripts/Items/goblet.gd b/Scripts/Items/goblet.gd
deleted file mode 100644
index a28fc86..0000000
--- a/Scripts/Items/goblet.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-extends RigidBody3D
-
-@export var item : Item
-@onready var interactable : Interactable = $Interactable
-@onready var is_interactable : bool = true
\ No newline at end of file
diff --git a/Scripts/Items/goblet.gd.uid b/Scripts/Items/goblet.gd.uid
deleted file mode 100644
index 922da1e..0000000
--- a/Scripts/Items/goblet.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bntxwxn6ns5l0
diff --git a/Scripts/Items/interactable.gd b/Scripts/Items/interactable.gd
deleted file mode 100644
index eeeaf47..0000000
--- a/Scripts/Items/interactable.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-extends Node3D
-
-class_name Interactable
-
-@onready var outline : MeshInstance3D = $outline
\ No newline at end of file
diff --git a/Scripts/Items/interactable.gd.uid b/Scripts/Items/interactable.gd.uid
deleted file mode 100644
index bd711d3..0000000
--- a/Scripts/Items/interactable.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bahmrqvs4pafg
diff --git a/Scripts/Level/level.gd b/Scripts/Level/level.gd
deleted file mode 100644
index 3da97c4..0000000
--- a/Scripts/Level/level.gd
+++ /dev/null
@@ -1,60 +0,0 @@
-class_name Level
-extends Node
-
-var player_scene : PackedScene = preload("res://Scenes/Mobs/character.tscn")
-
-@export var lobby : Lobby
-
-var spawnid : int = 0
-
-func _ready() -> void:
- spawn_player.rpc_id(1, 1)
-
-@rpc("any_peer", "call_local")
-func request_spawn_player(id : int) -> void:
- #only run on the multiplayer instance
- if not multiplayer.is_server():
- return
-
- #don't spawn an already spawned player
- if get_node_or_null("Player" + str(id)) != null:
- return
-
- spawn_player.rpc_id(1, id)
-
-@rpc("any_peer", "call_local")
-func spawn_player(id: int) -> void:
- var new_player : Player = player_scene.instantiate()
-
- new_player.name = "Player" + str(id)
- print("Spawning ID: ", id)
- add_child(new_player)
- var spawn_point: Marker3D = lobby.spawnpoints[spawnid]
- print(spawn_point.global_position)
- new_player.teleport_player.rpc(spawn_point.global_position, spawn_point.rotation)
- spawnid += 1
-
-@rpc("authority", "call_local")
-func remove_client_from_server(id : int) -> void:
- var disconnected_player : Player = get_node("Player" + str(id))
- spawnid = 1
- remove_child.call_deferred(disconnected_player)
- disconnected_player.queue_free()
-
-@rpc("any_peer", "call_local")
-func disconnect_from_server():
- remove_players()
- spawnid = 0
- # reset map
- print("Disconnect: ", multiplayer.get_unique_id())
- request_spawn_player.rpc(1)
-
-
-
-func remove_players(remove_host : bool = true) -> void:
- for child in get_children():
- if child is Player:
- if !remove_host and child.name == "Player1":
- continue
- remove_child(child)
- child.queue_free()
diff --git a/Scripts/Level/level.gd.uid b/Scripts/Level/level.gd.uid
deleted file mode 100644
index c604e64..0000000
--- a/Scripts/Level/level.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bsyvwqveefopb
diff --git a/Scripts/Level/lobby.gd b/Scripts/Level/lobby.gd
deleted file mode 100644
index ec7dd0a..0000000
--- a/Scripts/Level/lobby.gd
+++ /dev/null
@@ -1,5 +0,0 @@
-class_name Lobby
-extends Node3D
-
-
-@onready var spawnpoints : Array[Marker3D] = [$spawnpoint1, $spawnpoint2, $spawnpoint3, $spawnpoint4]
\ No newline at end of file
diff --git a/Scripts/Level/lobby.gd.uid b/Scripts/Level/lobby.gd.uid
deleted file mode 100644
index 1e360b7..0000000
--- a/Scripts/Level/lobby.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cdc5npqxn0eda
diff --git a/Scripts/Menu/inventory_menu.gd b/Scripts/Menu/inventory_menu.gd
deleted file mode 100644
index ace3f44..0000000
--- a/Scripts/Menu/inventory_menu.gd
+++ /dev/null
@@ -1,33 +0,0 @@
-extends Node
-
-class_name InventoryMenu
-
-
-@onready var inventory : Inventory
-@onready var item_list : VBoxContainer = $CanvasLayer/PanelContainer/VBoxContainer/MarginContainer/ScrollContainer/VBoxContainer
-var item_scene : PackedScene = preload("res://Scenes/Menu/InventoryUiItem.tscn")
-
-func _ready() -> void:
- $CanvasLayer.hide()
- pass
-
-
-func toggle_inventory() -> bool:
- var canvas = $CanvasLayer
- if canvas.visible == true:
- $CanvasLayer.hide()
- return false
- else:
- update_inventory()
- $CanvasLayer.show()
- return true
-
-func update_inventory():
- for i in inventory.items:
- var new_item = item_scene.instantiate()
- # new_item.set_values(i.item.name, i.item.value, i.item.weight)
- item_list.add_child(new_item)
- new_item.set_values(i.item.name, 10, 10)
- print(i.item.name)
- print(i)
- pass
diff --git a/Scripts/Menu/inventory_menu.gd.uid b/Scripts/Menu/inventory_menu.gd.uid
deleted file mode 100644
index 7c50a50..0000000
--- a/Scripts/Menu/inventory_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ddwvtegkiite7
diff --git a/Scripts/Menu/inventory_ui_item.gd b/Scripts/Menu/inventory_ui_item.gd
deleted file mode 100644
index 4a8cf55..0000000
--- a/Scripts/Menu/inventory_ui_item.gd
+++ /dev/null
@@ -1,11 +0,0 @@
-extends Node
-
-@onready var title : Label = $Name
-@onready var value : Label = $Value
-@onready var weight : Label = $Weight
-
-
-func set_values(new_title : String, new_value : int, new_weight : int) -> void:
- title.text = new_title
- value.text = str(new_value)
- weight.text = str(new_weight)
diff --git a/Scripts/Menu/inventory_ui_item.gd.uid b/Scripts/Menu/inventory_ui_item.gd.uid
deleted file mode 100644
index 897b78f..0000000
--- a/Scripts/Menu/inventory_ui_item.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bv3glh0xi771m
diff --git a/Scripts/Menu/lobby_menu.gd b/Scripts/Menu/lobby_menu.gd
deleted file mode 100644
index a2f8ece..0000000
--- a/Scripts/Menu/lobby_menu.gd
+++ /dev/null
@@ -1,169 +0,0 @@
-class_name LobbyMenu
-extends Node
-
-
-#region Onready Variables
-
-@onready var lobby_container : Container = $LobbyContainer
-@onready var username : LineEdit = $VBoxContainer/Name
-@onready var lobby_label : Label = $VBoxContainer/HBoxContainer/LobbyLabel
-@onready var steam_lobby_id_button : Button = $VBoxContainer/HBoxContainer/SteamLobbyIdButton
-@onready var disconnect_button : Button = $VBoxContainer/HBoxContainer/Disconnect
-@onready var tab_container : TabContainer = $VBoxContainer/TabContainer
-
-@onready var steam_tab : Control = $VBoxContainer/TabContainer/Steam
-@onready var steam_address_entry : LineEdit = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Address
-@onready var steam_host_button : Button = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Host
-@onready var steam_join_button : Button = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Join
-
-@onready var enet_address_entry : LineEdit = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/Address
-@onready var enet_host_toggle : CheckButton = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/HostToggleContainer/Host
-@onready var enet_join_button : Button = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/Join
-
-#endregion
-
-
-#region Variables
-
-var steam_lobby_id : String = ""
-
-#endregion
-
-
-#region Signals
-
-signal disconnect_button_pressed()
-
-signal steam_host_pressed(new_username : String)
-signal steam_join_pressed(new_username : String)
-
-signal enet_host_toggled_on(new_username : String)
-signal enet_host_toggled_off()
-signal enet_join_pressed(new_username : String)
-
-#endregion
-
-
-#region Godot Functions
-
-func _ready() -> void:
- #set username to steam username
- username.text = "username"
-
- disconnect_button.pressed.connect(_on_disconnet_button_pressed)
-
- #steam
- if Global.steam_connected == true:
- username.text = Steam.getPersonaName()
-
- steam_lobby_id_button.pressed.connect(_on_steam_lobby_id_button_pressed)
- steam_host_button.pressed.connect(_on_steam_host_pressed)
- steam_join_button.pressed.connect(_on_steam_join_pressed)
-
- #enet
- enet_host_toggle.toggled.connect(_on_enet_host_toggled)
- enet_join_button.pressed.connect(_on_enet_join_pressed)
-
- if Global.steam_connected == false:
- tab_container.remove_child(steam_tab)
-
-#endregion
-
-
-#region Public Functions
-
-func reset_visible() -> void:
- steam_lobby_id_button.hide()
- disconnect_button.hide()
- clear_lobby_text()
- username.show()
-
- #steam
- steam_join_button.show()
- steam_address_entry.show()
- steam_host_button.show()
-
- #enet
- tab_container.tabs_visible = true
- tab_container.show()
- enet_address_entry.show()
- enet_join_button.show()
-
-func request_lobby_list() -> void:
- for child in lobby_container.get_children():
- child.queue_free()
-
- Steam.requestLobbyList()
-
-func set_lobby_text(new_names : Array[String]) -> void:
- clear_lobby_text()
-
- for new_name in new_names:
- var name_label : Label = Label.new()
- name_label.text = new_name
- lobby_container.add_child(name_label)
-
-func clear_lobby_text() -> void:
- var lobby_container_children = lobby_container.get_children()
- for child in lobby_container_children:
- child.free()
-
-func update_steam_lobby_id_button():
- steam_lobby_id_button.show()
- steam_lobby_id = Global.steam_lobby_id
-
-#endregion
-
-
-#region Signal Functions
-func _on_disconnet_button_pressed() -> void:
- disconnect_button_pressed.emit()
-
-func _on_steam_host_pressed() -> void:
- steam_host_pressed.emit(username.text)
- steam_join_button.hide()
- tab_container.tabs_visible = false
- steam_address_entry.hide()
- steam_host_button.hide()
- username.hide()
-
-func _on_steam_join_pressed() -> void:
- Global.steam_lobby_id = steam_address_entry.text
- steam_join_pressed.emit(username.text)
- steam_join_button.hide()
- tab_container.tabs_visible = false
- steam_address_entry.hide()
- steam_host_button.hide()
- username.hide()
- disconnect_button.show()
-
-func _on_enet_host_toggled(toggled_on : bool) -> void:
- if toggled_on:
- enet_address_entry.hide()
- enet_join_button.hide()
- username.hide()
- enet_host_toggled_on.emit(username.text)
- tab_container.tabs_visible = false
- return
-
- tab_container.tabs_visible = true
- enet_host_toggled_off.emit()
- enet_address_entry.show()
- enet_join_button.show()
- username.show()
-
-func _on_enet_join_pressed() -> void:
- if enet_address_entry.text.is_empty() == false:
- Global.enet_address = enet_address_entry.text
-
- tab_container.tabs_visible = false
- enet_join_pressed.emit(username.text)
- enet_join_button.hide()
- tab_container.hide()
- username.hide()
- disconnect_button.show()
-
-func _on_steam_lobby_id_button_pressed():
- DisplayServer.clipboard_set(steam_lobby_id)
-
-#endregion
diff --git a/Scripts/Menu/lobby_menu.gd.uid b/Scripts/Menu/lobby_menu.gd.uid
deleted file mode 100644
index d4cffb8..0000000
--- a/Scripts/Menu/lobby_menu.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b2pee67ics25u
diff --git a/Scripts/Resources/inventory.gd b/Scripts/Resources/inventory.gd
deleted file mode 100644
index e115b09..0000000
--- a/Scripts/Resources/inventory.gd
+++ /dev/null
@@ -1,15 +0,0 @@
-extends Resource
-
-class_name Inventory
-
-var items : Array[RigidBody3D]
-
-
-func get_current_slot(index : int) -> RigidBody3D:
- return items[index]
-
-func add_item(item : RigidBody3D) -> void:
- items.append(item)
-
-func remove_items(item : RigidBody3D) -> void:
- items.erase(item)
\ No newline at end of file
diff --git a/Scripts/Resources/inventory.gd.uid b/Scripts/Resources/inventory.gd.uid
deleted file mode 100644
index 508e8fe..0000000
--- a/Scripts/Resources/inventory.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://darcj1vokaiv2
diff --git a/Scripts/Resources/item.gd b/Scripts/Resources/item.gd
deleted file mode 100644
index 0f5557e..0000000
--- a/Scripts/Resources/item.gd
+++ /dev/null
@@ -1,9 +0,0 @@
-extends Resource
-
-class_name Item
-
-@export var value : int
-@export var name : String
-@export var weight : int
-@export var primary_objective : bool
-@export var secondary_objective : bool
diff --git a/Scripts/Resources/item.gd.uid b/Scripts/Resources/item.gd.uid
deleted file mode 100644
index 05d2279..0000000
--- a/Scripts/Resources/item.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ctwdmnqaxkty
diff --git a/Scripts/Server/player_data.gd b/Scripts/Server/player_data.gd
deleted file mode 100644
index 2b89d68..0000000
--- a/Scripts/Server/player_data.gd
+++ /dev/null
@@ -1,12 +0,0 @@
-class_name PlayerData
-
-extends Resource
-
-@export var id : int
-@export var lobby_index : int
-@export var name : String
-
-func _init(new_id : int = -1, new_lobby_index : int = -1, new_name : String = "username"):
- id = new_id
- lobby_index = new_lobby_index
- name = new_name
\ No newline at end of file
diff --git a/Scripts/Server/player_data.gd.uid b/Scripts/Server/player_data.gd.uid
deleted file mode 100644
index 95d0899..0000000
--- a/Scripts/Server/player_data.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b8fojvchw16hl
diff --git a/Scripts/Server/server.gd b/Scripts/Server/server.gd
deleted file mode 100644
index 31e49c8..0000000
--- a/Scripts/Server/server.gd
+++ /dev/null
@@ -1,273 +0,0 @@
-class_name Server
-
-extends Node
-
-
-#region Constants
-
-const DEFAULT_PORT = 10567
-const MAX_CLIENTS = 3
-
-#endregion
-
-
-#region Onready Variables
-
-# @onready var microphone : AudioStreamPlayer3D = $Microphone
-
-#endregion
-
-
-#region Variables
-
-var players_ready : Array = []
-
-var peer : MultiplayerPeer = null
-
-#var mic_capture : AudioEffectOpusChunked
-
-var lobby_id : int = -1
-
-#endregion
-
-
-#region RPC
-
-# @rpc("any_peer", "unreliable")
-# func voice_packet_recieved(packet):
-# var sender_id = multiplayer.get_remote_sender_id()
- # push_opus_packet_to_player.emit(sender_id, packet)
-
-#endregion
-
-
-#region Signals
-
-signal game_log(message : String, color : Color)
-
-signal server_close()
-
-signal client_connected_to_server()
-
-signal client_disconnected_from_server()
-
-signal remove_client_from_server(id : int)
-
-signal steam_lobby_created()
-
-# signal push_opus_packet_to_player(id : int, packet)
-
-#endregion
-
-
-#region Godot Functions
-
-func _ready() -> void:
- for argument in OS.get_cmdline_args():
- if argument == "-steam":
- ready_steam()
-
- # ready_voip()
-
- #set multiplayer signals
- multiplayer.peer_connected.connect(_multiplayer_peer_connected)
- multiplayer.peer_disconnected.connect(_multiplayer_peer_disconnected)
- multiplayer.connected_to_server.connect(_multiplayer_connected_to_server)
- multiplayer.connection_failed.connect(_multiplayer_connection_failed)
- multiplayer.server_disconnected.connect(_multiplayer_server_disconnected)
-
-
- #set steam signals
- if Global.steam_connected == true:
- Steam.lobby_joined.connect(_steam_lobby_joined)
- Steam.lobby_created.connect(_steam_lobby_created)
-
-func _process(_delta : float):
- # process_voip()
- Steam.run_callbacks()
-
-#endregion
-
-
-#region Ready Functions
-
-func ready_steam() -> void:
- var steam_response : Dictionary = Steam.steamInitEx()
- Global.steam_connected = steam_response["status"] == 0
-
- if Global.steam_connected == false:
- get_tree().create_timer(3.0).timeout.connect(
- func():
- game_log.emit("Could Not Connect To Steam", Color(1, 0, 0, 1))
- )
-
-# func ready_voip() -> void:
-# assert(microphone.bus == "MicrophoneBus")
-# var mic_bus = AudioServer.get_bus_index("MicrophoneBus")
-# mic_capture = AudioServer.get_bus_effect(mic_bus, 0)
-
-#endregion
-
-
-#region Process Functions
-
-# func process_voip() -> void:
-# if mic_capture == null:
-# return
-
-# while mic_capture.chunk_available():
-# var packet = mic_capture.read_opus_packet(PackedByteArray())
-# mic_capture.drop_chunk()
-
-# if Global.voip_on == false:
-# continue
-
-# if Global.is_multiplayer and multiplayer.multiplayer_peer.get_connection_status() == MultiplayerPeer.CONNECTION_CONNECTED:
-# voice_packet_recieved.rpc(packet)
-
-#endregion
-
-
-#region Default Multiplayer Functions
-
-func destroy_lobby() -> void:
- Global.is_multiplayer = false
-
- multiplayer.multiplayer_peer.close()
- peer = OfflineMultiplayerPeer.new()
- multiplayer.multiplayer_peer = peer
-
- server_close.emit()
-
-func disconnect_client() -> void:
- Global.is_multiplayer = false
-
- multiplayer.multiplayer_peer.close()
- peer = OfflineMultiplayerPeer.new()
- multiplayer.multiplayer_peer = peer
-
- client_disconnected_from_server.emit()
-
-#endregion
-
-
-#region Enet Functions
-
-func enet_create_host() -> void:
- #set multiplayer to true
- Global.is_multiplayer = true
-
- #init multiplayer host
- peer = ENetMultiplayerPeer.new()
- (peer as ENetMultiplayerPeer).create_server(DEFAULT_PORT, MAX_CLIENTS)
- multiplayer.multiplayer_peer = peer
-
-func enet_create_client(address : String) -> void:
- #set multiplayer to true
- Global.is_multiplayer = true
-
- #init client and wait for connection
- peer = ENetMultiplayerPeer.new()
- (peer as ENetMultiplayerPeer).create_client(address, DEFAULT_PORT)
- multiplayer.set_multiplayer_peer(peer)
- await multiplayer.connected_to_server
-
-#endregion
-
-
-#region Steam Functions
-
-func steam_create_host() -> void:
- #players[1] = PlayerData.new(1, 0, new_username)
- Steam.createLobby(Steam.LOBBY_TYPE_FRIENDS_ONLY, MAX_CLIENTS)
-
-func steam_join_lobby(new_lobby_id : int) -> void:
- Steam.joinLobby(new_lobby_id)
-
-func steam_create_socket():
- Global.is_multiplayer = true
-
- peer = SteamMultiplayerPeer.new()
- peer.create_host(0)
- multiplayer.set_multiplayer_peer(peer)
-
-func steam_connect_socket(steam_id : int) -> void:
- Global.is_multiplayer = true
-
- peer = SteamMultiplayerPeer.new()
- peer.create_client(steam_id, 0)
- multiplayer.set_multiplayer_peer(peer)
-
-#endregion
-
-
-#region Signal Functions
-
-func _multiplayer_peer_connected(_id : int):
- pass
-
-func _multiplayer_peer_disconnected(id : int):
- if multiplayer.is_server():
- game_log.emit("Player \"" + str(id) + "\" disconnected", Color(1, 0, 0, 1))
- remove_client_from_server.emit(id)
-
-func _multiplayer_connected_to_server() -> void:
- client_connected_to_server.emit()
-
-func _multiplayer_connection_failed() -> void:
- Global.is_multiplayer = false
- peer = OfflineMultiplayerPeer.new()
- multiplayer.multiplayer_peer = peer
- client_disconnected_from_server.emit()
- game_log.emit("Server connection failed", Color(1, 0, 0, 1))
-
-func _multiplayer_server_disconnected() -> void:
- Global.is_multiplayer = false
- peer = OfflineMultiplayerPeer.new()
- multiplayer.multiplayer_peer = peer
- client_disconnected_from_server.emit()
- game_log.emit("Server disconnected", Color(1, 0, 0, 1))
-
-func _steam_lobby_joined(new_lobby_id : int, _permissions : int, _locked : bool, response : int) -> void:
- if response == Steam.CHAT_ROOM_ENTER_RESPONSE_SUCCESS:
- lobby_id = new_lobby_id
- var id : int = Steam.getLobbyOwner(new_lobby_id)
- if id != Steam.getSteamID():
- steam_connect_socket(id)
- #player_register.rpc(username)
- #players[multiplayer.get_unique_id()] = username
- return
- var message : String
- match response:
- Steam.CHAT_ROOM_ENTER_RESPONSE_DOESNT_EXIST:
- message = "This lobby no longer exists."
- Steam.CHAT_ROOM_ENTER_RESPONSE_NOT_ALLOWED:
- message = "You don't have permission to join this lobby."
- Steam.CHAT_ROOM_ENTER_RESPONSE_FULL:
- message = "The lobby is now full."
- Steam.CHAT_ROOM_ENTER_RESPONSE_ERROR:
- message = "Response errored."
- Steam.CHAT_ROOM_ENTER_RESPONSE_BANNED:
- message = "You are banned from this lobby."
- Steam.CHAT_ROOM_ENTER_RESPONSE_LIMITED:
- message = "You cannot join due to having a limited account."
- Steam.CHAT_ROOM_ENTER_RESPONSE_CLAN_DISABLED:
- message = "This lobby is locked or disabled."
- Steam.CHAT_ROOM_ENTER_RESPONSE_COMMUNITY_BAN:
- message = "This lobby is community locked."
- Steam.CHAT_ROOM_ENTER_RESPONSE_MEMBER_BLOCKED_YOU:
- message = "A user in the lobby has blocked you from joining."
- Steam.CHAT_ROOM_ENTER_RESPONSE_YOU_BLOCKED_MEMBER:
- message = "A user you have blocked is in the lobby."
- game_log.emit(message, Color(1, 0, 0, 1))
-
-func _steam_lobby_created(connected: int, this_lobby_id: int) -> void:
- if connected == 1:
- Global.steam_lobby_id = str(this_lobby_id)
- Steam.setLobbyData(this_lobby_id, "name", str(Steam.getPersonaName(), "'s test server"))
- steam_create_socket()
- steam_lobby_created.emit()
- return
- game_log.emit("Error on create lobby!", Color(1, 0, 0, 1))
-
-#endregion
diff --git a/Scripts/Server/server.gd.uid b/Scripts/Server/server.gd.uid
deleted file mode 100644
index c8949f5..0000000
--- a/Scripts/Server/server.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dwwtrox3lp2jp
diff --git a/Scripts/Server/server_lobby.gd b/Scripts/Server/server_lobby.gd
deleted file mode 100644
index 9d3da72..0000000
--- a/Scripts/Server/server_lobby.gd
+++ /dev/null
@@ -1,71 +0,0 @@
-class_name ServerLobby
-extends Node
-
-
-#region Exports
-
-@export var players : Dictionary[int, PlayerData] = {}
-
-#endregion
-
-
-#region Variables
-
-var free_lobby_indexs : Array[int] = []
-
-#endregion
-
-
-#region Signals
-
-signal player_registered()
-
-#endregion
-
-
-#region Client RPC
-
-@rpc("any_peer", "call_local")
-func request_player_register(id: int, username) -> void:
- #only run on the multiplayer instance
- if not multiplayer.is_server():
- return
-
- player_register.rpc_id(1, id, username)
-
-@rpc("any_peer", "call_local")
-func update_client_players(id : int, username : String) -> void:
- if not players.has(id):
- players[id] = PlayerData.new(id, players.size(), username)
-
- player_registered.emit()
-
-#endregion
-
-
-#region Server RPC
-
-@rpc("authority", "call_local")
-func player_register(id : int, username : String) -> void:
- var lobby_index : int = players.size()
- if free_lobby_indexs.size() != 0:
- lobby_index = free_lobby_indexs.pop_front()
-
- players[id] = PlayerData.new(id, lobby_index, username)
-
- #send the entire list for clients that join later
- for player_id in players:
- update_client_players.rpc(player_id, players[player_id].name)
-
-@rpc("authority", "call_local")
-func player_unregister(id) -> void:
- free_lobby_indexs.append(players[id].lobby_index)
- players.erase(id)
- player_registered.emit()
-
-@rpc("authority", "call_local")
-func players_clear() -> void:
- players.clear()
- player_registered.emit()
-
-#endregion
diff --git a/Scripts/Server/server_lobby.gd.uid b/Scripts/Server/server_lobby.gd.uid
deleted file mode 100644
index f516d7a..0000000
--- a/Scripts/Server/server_lobby.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://k0xvfdmvtyrt
diff --git a/Scripts/fpc/EditorModule.gd b/Scripts/fpc/EditorModule.gd
deleted file mode 100644
index 0a3a74f..0000000
--- a/Scripts/fpc/EditorModule.gd
+++ /dev/null
@@ -1,49 +0,0 @@
-@tool
-extends Node
-
-# This does not effect runtime yet but will in the future.
-
-@export_category("Controller Editor Module")
-@export_range(-360.0, 360.0, 0.01, "or_greater", "or_less") var head_y_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_y_rotation = new_rotation
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- update_configuration_warnings()
-@export_range(-90.0, 90.0, 0.01, "or_greater", "or_less") var head_x_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_x_rotation = new_rotation
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
- update_configuration_warnings()
-
-@export_group("Nodes")
-@export var CHARACTER : CharacterBody3D
-@export var head_path : String = "Head" # Relative to the parent node
-#@export var CAMERA : Camera3D
-#@export var HEADBOB_ANIMATION : AnimationPlayer
-#@export var JUMP_ANIMATION : AnimationPlayer
-#@export var CROUCH_ANIMATION : AnimationPlayer
-#@export var COLLISION_MESH : CollisionShape3D
-
-@onready var HEAD = get_node("../" + head_path)
-
-
-func _ready():
- if !Engine.is_editor_hint():
- #print("not editor")
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
-
-
-func _get_configuration_warnings():
- var warnings = []
-
- if head_y_rotation > 360:
- warnings.append("The head rotation is greater than 360")
-
- if head_y_rotation < -360:
- warnings.append("The head rotation is less than -360")
-
- # Returning an empty array gives no warnings
- return warnings
diff --git a/Scripts/fpc/EditorModule.gd.uid b/Scripts/fpc/EditorModule.gd.uid
deleted file mode 100644
index 96be9c8..0000000
--- a/Scripts/fpc/EditorModule.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c5g0jt1apb2al
diff --git a/Scripts/fpc/character.gd b/Scripts/fpc/character.gd
deleted file mode 100644
index c2db386..0000000
--- a/Scripts/fpc/character.gd
+++ /dev/null
@@ -1,551 +0,0 @@
-# COPYRIGHT Colormatic Studios
-# MIT license
-# Quality Godot First Person Controller v2
-
-class_name Player
-extends CharacterBody3D
-
-
-#region Character Export Group
-
-## The settings for the character's movement and feel.
-@export_category("Character")
-## The speed that the character moves at without crouching or sprinting.
-@export var base_speed : float = 3.0
-## The speed that the character moves at when sprinting.
-@export var sprint_speed : float = 6.0
-## The speed that the character moves at when crouching.
-@export var crouch_speed : float = 1.0
-
-## How fast the character speeds up and slows down when Motion Smoothing is on.
-@export var acceleration : float = 10.0
-## How high the player jumps.
-@export var jump_velocity : float = 4.5
-## How far the player turns when the mouse is moved.
-@export var mouse_sensitivity : float = 0.1
-## Invert the X axis input for the camera.
-@export var invert_camera_x_axis : bool = false
-## Invert the Y axis input for the camera.
-@export var invert_camera_y_axis : bool = false
-## Whether the player can use movement inputs. Does not stop outside forces or jumping. See Jumping Enabled.
-@export var immobile : bool = false
-## The reticle file to import at runtime. By default are in res://addons/fpc/reticles/. Set to an empty string to remove.
-@export_file var default_reticle = "res://Scenes/reticles/reticle_1.tscn"
-
-#endregion
-
-#region Nodes Export Group
-
-@export_group("Nodes")
-## A reference to the camera for use in the character script. This is the parent node to the camera and is rotated instead of the camera for mouse input.
-@export var HEAD : Node3D
-## A reference to the camera for use in the character script.
-@export var CAMERA : Camera3D
-# A reference to the Camera Ray Cast
-@export var CAMERA_RAYCAST : RayCast3D
-# current item player is looking at
-@onready var HIGHLIGHTED_ITEM : RigidBody3D
-# A reference to the inventory
-@export var INVENTORY : Inventory
-# A reference to the inventory menu
-@onready var inventory_menu : InventoryMenu
-## A reference to the headbob animation for use in the character script.
-@export var HEADBOB_ANIMATION : AnimationPlayer
-## A reference to the jump animation for use in the character script.
-@export var JUMP_ANIMATION : AnimationPlayer
-## A reference to the crouch animation for use in the character script.
-@export var CROUCH_ANIMATION : AnimationPlayer
-## A reference to the the player's collision shape for use in the character script.
-@export var COLLISION_MESH : CollisionShape3D
-
-#endregion
-
-#region Controls Export Group
-
-# We are using UI controls because they are built into Godot Engine so they can be used right away
-@export_group("Controls")
-## Use the Input Map to map a mouse/keyboard input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controls : Dictionary = {
- LEFT = "move_left",
- RIGHT = "move_right",
- FORWARD = "move_forward",
- BACKWARD = "move_back",
- JUMP = "jump",
- CROUCH = "crouch",
- SPRINT = "sprint",
- PAUSE = "pause",
- INTERACT = "interact",
- INVENTORY = "inventory"
- }
-@export_subgroup("Controller Specific")
-## This only affects how the camera is handled, the rest should be covered by adding controller inputs to the existing actions in the Input Map.
-@export var controller_support : bool = false
-## Use the Input Map to map a controller input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controller_controls : Dictionary = {
- LOOK_LEFT = "look_left",
- LOOK_RIGHT = "look_right",
- LOOK_UP = "look_up",
- LOOK_DOWN = "look_down"
- }
-## The sensitivity of the analog stick that controls camera rotation. Lower is less sensitive and higher is more sensitive.
-@export_range(0.001, 1, 0.001) var look_sensitivity : float = 0.035
-
-#endregion
-
-#region Feature Settings Export Group
-
-@export_group("Feature Settings")
-## Enable or disable jumping. Useful for restrictive storytelling environments.
-@export var jumping_enabled : bool = true
-## Whether the player can move in the air or not.
-@export var in_air_momentum : bool = true
-## Smooths the feel of walking.
-@export var motion_smoothing : bool = true
-## Enables or disables sprinting.
-@export var sprint_enabled : bool = true
-## Toggles the sprinting state when button is pressed or requires the player to hold the button down to remain sprinting.
-@export_enum("Hold to Sprint", "Toggle Sprint") var sprint_mode : int = 0
-## Enables or disables crouching.
-@export var crouch_enabled : bool = true
-## Toggles the crouch state when button is pressed or requires the player to hold the button down to remain crouched.
-@export_enum("Hold to Crouch", "Toggle Crouch") var crouch_mode : int = 0
-## Wether sprinting should effect FOV.
-@export var dynamic_fov : bool = true
-## If the player holds down the jump button, should the player keep hopping.
-@export var continuous_jumping : bool = true
-## Enables the view bobbing animation.
-@export var view_bobbing : bool = true
-## Enables an immersive animation when the player jumps and hits the ground.
-@export var jump_animation : bool = true
-## This determines wether the player can use the pause button, not wether the game will actually pause.
-@export var pausing_enabled : bool = true
-## Use with caution.
-@export var gravity_enabled : bool = true
-## If your game changes the gravity value during gameplay, check this property to allow the player to experience the change in gravity.
-@export var dynamic_gravity : bool = false
-
-#endregion
-
-#region Member Variable Initialization
-
-# These are variables used in this script that don't need to be exposed in the editor.
-var speed : float = base_speed
-var current_speed : float = 0.0
-# States: normal, crouching, sprinting
-var state : String = "normal"
-var low_ceiling : bool = false # This is for when the ceiling is too low and the player needs to crouch.
-var was_on_floor : bool = true # Was the player on the floor last frame (for landing animation)
-
-# The reticle should always have a Control node as the root
-var RETICLE : Control
-
-# Get the gravity from the project settings to be synced with RigidBody nodes
-var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity") # Don't set this as a const, see the gravity section in _physics_process
-
-# Stores mouse input for rotating the camera in the physics process
-var mouseInput : Vector2 = Vector2(0,0)
-
-#endregion
-
-
-#region Godot Functions
-func _enter_tree() -> void:
-
- #get the id off the player name and set authority
- var new_id = name.lstrip("Player")
- set_multiplayer_authority(new_id.to_int())
-
-func _ready():
- #It is safe to comment this line if your game doesn't start with the mouse captured
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
-
- # If the controller is rotated in a certain direction for game design purposes, redirect this rotation into the head.
- HEAD.rotation.y = rotation.y
- rotation.y = 0
-
- if default_reticle:
- change_reticle(default_reticle)
-
- initialize_animations()
- check_controls()
- enter_normal_state()
- if is_multiplayer_authority():
- CAMERA.current = true
- inventory_menu = $UserInterface/InventoryMenu
- inventory_menu.inventory = INVENTORY
-
-func _process(_delta):
- # if pausing_enabled:
- # handle_pausing()
-
- update_debug_menu_per_frame()
-
- handle_open_inventory()
-
-
-func _physics_process(delta): # Most things happen here.
- # Gravity
- if dynamic_gravity:
- gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
- if not is_on_floor() and gravity and gravity_enabled:
- velocity.y -= gravity * delta
- handle_jumping()
-
- var input_dir = Vector2.ZERO
-
- if not immobile && !Global.in_menu: # Immobility works by interrupting user input, so other forces can still be applied to the player
- input_dir = Input.get_vector(controls.LEFT, controls.RIGHT, controls.FORWARD, controls.BACKWARD)
-
- handle_movement(delta, input_dir)
-
- handle_head_rotation()
-
- # The player is not able to stand up if the ceiling is too low
- low_ceiling = $CrouchCeilingDetection.is_colliding()
-
- handle_state(input_dir)
- if dynamic_fov: # This may be changed to an AnimationPlayer
- update_camera_fov()
-
- if view_bobbing:
- play_headbob_animation(input_dir)
-
- if jump_animation:
- play_jump_animation()
- handle_interact()
- update_debug_menu_per_tick()
-
- was_on_floor = is_on_floor() # This must always be at the end of physics_process
-
-#endregion
-
-#region Server Functions
-
-@rpc("any_peer", "call_local")
-func teleport_player(location: Vector3, new_rotation: Vector3) -> void:
- if not is_multiplayer_authority():
- return
- global_position = location
- HEAD.rotation = new_rotation
- velocity = Vector3.ZERO
-
-
-#endregion
-
-#region Input Handling
-
-func handle_jumping():
- if jumping_enabled:
- if continuous_jumping: # Hold down the jump button
- if Input.is_action_pressed(controls.JUMP) and is_on_floor() and !low_ceiling and !Global.in_menu:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity # Adding instead of setting so jumping on slopes works properly
- else:
- if Input.is_action_just_pressed(controls.JUMP) and is_on_floor() and !low_ceiling and !Global.in_menu:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity
-
-
-func handle_movement(delta, input_dir):
- var direction = input_dir.rotated(-HEAD.rotation.y)
- direction = Vector3(direction.x, 0, direction.y)
- move_and_slide()
-
- if in_air_momentum:
- if is_on_floor():
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
- else:
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
-
-
-func handle_head_rotation():
- if invert_camera_x_axis:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity
-
- if invert_camera_y_axis:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity
-
- if controller_support:
- var controller_view_rotation = Input.get_vector(controller_controls.LOOK_DOWN, controller_controls.LOOK_UP, controller_controls.LOOK_RIGHT, controller_controls.LOOK_LEFT) * look_sensitivity # These are inverted because of the nature of 3D rotation.
- if invert_camera_x_axis:
- HEAD.rotation.x += controller_view_rotation.x * -1
- else:
- HEAD.rotation.x += controller_view_rotation.x
-
- if invert_camera_y_axis:
- HEAD.rotation.y += controller_view_rotation.y * -1
- else:
- HEAD.rotation.y += controller_view_rotation.y
-
- mouseInput = Vector2(0,0)
- HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
-
-func handle_interact():
- if CAMERA_RAYCAST.is_colliding():
- var interactable = CAMERA_RAYCAST.get_collider()
- if "interactable" in interactable:
- HIGHLIGHTED_ITEM = interactable
- interactable.interactable.outline.show()
- if "item" in interactable:
- if Input.is_action_just_pressed(controls.INTERACT):
- print(CAMERA_RAYCAST.get_collider())
- var item = interactable as RigidBody3D
- item.freeze = true
- item.collision_layer = 0
- item.hide()
- INVENTORY.add_item(item)
- print("This is a item")
- elif HIGHLIGHTED_ITEM != null:
- HIGHLIGHTED_ITEM.get_node("Interactable").outline.hide()
- HIGHLIGHTED_ITEM = null
-
-func check_controls(): # If you add a control, you might want to add a check for it here.
- # The actions are being disabled so the engine doesn't halt the entire project in debug mode
- if !InputMap.has_action(controls.JUMP):
- push_error("No control mapped for jumping. Please add an input map control. Disabling jump.")
- jumping_enabled = false
- if !InputMap.has_action(controls.LEFT):
- push_error("No control mapped for move left. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.RIGHT):
- push_error("No control mapped for move right. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.FORWARD):
- push_error("No control mapped for move forward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.BACKWARD):
- push_error("No control mapped for move backward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.PAUSE):
- push_error("No control mapped for pause. Please add an input map control. Disabling pausing.")
- pausing_enabled = false
- if !InputMap.has_action(controls.CROUCH):
- push_error("No control mapped for crouch. Please add an input map control. Disabling crouching.")
- crouch_enabled = false
- if !InputMap.has_action(controls.SPRINT):
- push_error("No control mapped for sprint. Please add an input map control. Disabling sprinting.")
- sprint_enabled = false
-
-func handle_open_inventory(force_toggle : bool = false):
- if Input.is_action_just_pressed(controls.INVENTORY) || force_toggle:
- Global.inventory_showing = inventory_menu.toggle_inventory()
- match Input.mouse_mode:
- Input.MOUSE_MODE_CAPTURED:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- #get_tree().paused = false
- Input.MOUSE_MODE_VISIBLE:
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- #get_tree().paused = false
-#endregion
-
-#region State Handling
-
-func handle_state(moving):
- if sprint_enabled:
- if sprint_mode == 0:
- if Input.is_action_pressed(controls.SPRINT) and state != "crouching":
- if moving:
- if state != "sprinting":
- enter_sprint_state()
- else:
- if state == "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
- elif sprint_mode == 1:
- if moving:
- # If the player is holding sprint before moving, handle that scenario
- if Input.is_action_pressed(controls.SPRINT) and state == "normal":
- enter_sprint_state()
- if Input.is_action_just_pressed(controls.SPRINT):
- match state:
- "normal":
- enter_sprint_state()
- "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
-
- if crouch_enabled:
- if crouch_mode == 0:
- if Input.is_action_pressed(controls.CROUCH) and state != "sprinting":
- if state != "crouching":
- enter_crouch_state()
- elif state == "crouching" and !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
- elif crouch_mode == 1:
- if Input.is_action_just_pressed(controls.CROUCH):
- match state:
- "normal":
- enter_crouch_state()
- "crouching":
- if !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
-
-
-# Any enter state function should only be called once when you want to enter that state, not every frame.
-func enter_normal_state():
- #print("entering normal state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "normal"
- speed = base_speed
-
-func enter_crouch_state():
- #print("entering crouch state")
- state = "crouching"
- speed = crouch_speed
- CROUCH_ANIMATION.play("crouch")
-
-func enter_sprint_state():
- #print("entering sprint state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "sprinting"
- speed = sprint_speed
-
-#endregion
-
-#region Animation Handling
-
-func initialize_animations():
- # Reset the camera position
- # If you want to change the default head height, change these animations.
- HEADBOB_ANIMATION.play("RESET")
- JUMP_ANIMATION.play("RESET")
- CROUCH_ANIMATION.play("RESET")
-
-func play_headbob_animation(moving):
- if moving and is_on_floor():
- var use_headbob_animation : String
- match state:
- "normal","crouching":
- use_headbob_animation = "walk"
- "sprinting":
- use_headbob_animation = "sprint"
-
- var was_playing : bool = false
- if HEADBOB_ANIMATION.current_animation == use_headbob_animation:
- was_playing = true
-
- HEADBOB_ANIMATION.play(use_headbob_animation, 0.25)
- HEADBOB_ANIMATION.speed_scale = (current_speed / base_speed) * 1.75
- if !was_playing:
- HEADBOB_ANIMATION.seek(float(randi() % 2)) # Randomize the initial headbob direction
- # Let me explain that piece of code because it looks like it does the opposite of what it actually does.
- # The headbob animation has two starting positions. One is at 0 and the other is at 1.
- # randi() % 2 returns either 0 or 1, and so the animation randomly starts at one of the starting positions.
- # This code is extremely performant but it makes no sense.
-
- else:
- if HEADBOB_ANIMATION.current_animation == "sprint" or HEADBOB_ANIMATION.current_animation == "walk":
- HEADBOB_ANIMATION.speed_scale = 1
- HEADBOB_ANIMATION.play("RESET", 1)
-
-func play_jump_animation():
- if !was_on_floor and is_on_floor(): # The player just landed
- var facing_direction : Vector3 = CAMERA.get_global_transform().basis.x
- var facing_direction_2D : Vector2 = Vector2(facing_direction.x, facing_direction.z).normalized()
- var velocity_2D : Vector2 = Vector2(velocity.x, velocity.z).normalized()
-
- # Compares velocity direction against the camera direction (via dot product) to determine which landing animation to play.
- var side_landed : int = round(velocity_2D.dot(facing_direction_2D))
-
- if side_landed > 0:
- JUMP_ANIMATION.play("land_right", 0.25)
- elif side_landed < 0:
- JUMP_ANIMATION.play("land_left", 0.25)
- else:
- JUMP_ANIMATION.play("land_center", 0.25)
-
-#endregion
-
-#region Debug Menu
-
-func update_debug_menu_per_frame():
- $UserInterface/DebugPanel.add_property("FPS", Performance.get_monitor(Performance.TIME_FPS), 0)
- var status : String = state
- if !is_on_floor():
- status += " in the air"
- $UserInterface/DebugPanel.add_property("State", status, 4)
-
-
-func update_debug_menu_per_tick():
- # Big thanks to github.com/LorenzoAncora for the concept of the improved debug values
- current_speed = Vector3.ZERO.distance_to(get_real_velocity())
- $UserInterface/DebugPanel.add_property("Speed", snappedf(current_speed, 0.001), 1)
- $UserInterface/DebugPanel.add_property("Target speed", speed, 2)
- var cv : Vector3 = get_real_velocity()
- var vd : Array[float] = [
- snappedf(cv.x, 0.001),
- snappedf(cv.y, 0.001),
- snappedf(cv.z, 0.001)
- ]
- var readable_velocity : String = "X: " + str(vd[0]) + " Y: " + str(vd[1]) + " Z: " + str(vd[2])
- $UserInterface/DebugPanel.add_property("Velocity", readable_velocity, 3)
-
-
-func _unhandled_input(event : InputEvent):
- if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
- mouseInput.x += event.relative.x
- mouseInput.y += event.relative.y
- # Toggle debug menu
- elif event is InputEventKey:
- if event.is_released():
- # Where we're going, we don't need InputMap
- if event.keycode == 4194338: # F7
- $UserInterface/DebugPanel.visible = !$UserInterface/DebugPanel.visible
-
-#endregion
-
-#region Misc Functions
-
-func change_reticle(reticle): # Yup, this function is kinda strange
- if not is_multiplayer_authority():
- return
- if RETICLE:
- RETICLE.queue_free()
-
- RETICLE = load(reticle).instantiate()
- RETICLE.character = self
- $UserInterface.add_child(RETICLE)
-
-
-func update_camera_fov():
- if state == "sprinting":
- CAMERA.fov = lerp(CAMERA.fov, 85.0, 0.3)
- else:
- CAMERA.fov = lerp(CAMERA.fov, 75.0, 0.3)
-
-func handle_pausing():
- if Global.inventory_showing:
- handle_open_inventory()
- if Input.is_action_just_pressed(controls.PAUSE):
- # You may want another node to handle pausing, because this player may get paused too.
- match Input.mouse_mode:
- Input.MOUSE_MODE_CAPTURED:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- #get_tree().paused = false
- Input.MOUSE_MODE_VISIBLE:
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- #get_tree().paused = false
-
-#endregion
diff --git a/Scripts/fpc/character.gd.uid b/Scripts/fpc/character.gd.uid
deleted file mode 100644
index 26b6d96..0000000
--- a/Scripts/fpc/character.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c1um4tmthbbpk
diff --git a/Scripts/fpc/debug.gd b/Scripts/fpc/debug.gd
deleted file mode 100644
index e274258..0000000
--- a/Scripts/fpc/debug.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-extends PanelContainer
-
-
-func _process(_delta):
- if visible:
- pass
-
-func add_property(title : String, value, order : int): # This can either be called once for a static property or called every frame for a dynamic property
- var target
- target = $MarginContainer/VBoxContainer.find_child(title, true, false) # I have no idea what true and false does here, the function should be more specific
- if !target:
- target = Label.new() # Debug lines are of type Label
- $MarginContainer/VBoxContainer.add_child(target)
- target.name = title
- target.text = title + ": " + str(value)
- elif visible:
- target.text = title + ": " + str(value)
- $MarginContainer/VBoxContainer.move_child(target, order)
diff --git a/Scripts/fpc/debug.gd.uid b/Scripts/fpc/debug.gd.uid
deleted file mode 100644
index c5b6f3e..0000000
--- a/Scripts/fpc/debug.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bhfftu01dsfk7
diff --git a/Scripts/global.gd b/Scripts/global.gd
deleted file mode 100644
index d29f5e0..0000000
--- a/Scripts/global.gd
+++ /dev/null
@@ -1,29 +0,0 @@
-extends Node
-
-#region Constants
-
-const DEFAULT_ENET_ADDRESS = "127.0.0.1"
-
-#endregion
-
-
-#region Variables
-
-var is_admin : bool = true
-
-var is_multiplayer : bool = false
-
-var steam_connected : bool = false
-
-var in_game : bool = false
-var in_menu : bool = false
-var inventory_showing : bool = false
-
-var enet_address : String = DEFAULT_ENET_ADDRESS
-var steam_lobby_id : String = ""
-
-var controller_connected : bool = false
-
-var voip_on : bool = false
-
-#endregion
\ No newline at end of file
diff --git a/Scripts/global.gd.uid b/Scripts/global.gd.uid
deleted file mode 100644
index 524b7ce..0000000
--- a/Scripts/global.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bma0n1wnb0yxd
diff --git a/Scripts/world.gd b/Scripts/world.gd
deleted file mode 100644
index 1249e2d..0000000
--- a/Scripts/world.gd
+++ /dev/null
@@ -1,86 +0,0 @@
-extends Node
-
-@export var lobby_menu : LobbyMenu
-var menu_showing : bool = false;
-
-@export var server : Server
-
-@export var level: Level
-
-@onready var chat : ChatMenu = $ChatMenu
-
-func _ready() -> void:
- lobby_menu.enet_host_toggled_on.connect(_enet_host_on)
- lobby_menu.enet_join_pressed.connect(_enet_join_pressed)
- lobby_menu.disconnect_button_pressed.connect(_disconnect_button_pressed)
- lobby_menu.enet_host_toggled_off.connect(_menu_toggle_host_off)
- server.client_connected_to_server.connect(_client_joined_server)
- server.remove_client_from_server.connect(_remove_client_from_server)
- server.client_disconnected_from_server.connect(_disconnect_from_server)
- server.server_close.connect(_server_close)
- server.game_log.connect(_server_send_chat_message)
-
-func _physics_process(_delta: float) -> void:
- pause_toggle()
-
-
-func pause_toggle():
- if Input.is_action_just_pressed("pause"):
- if Global.inventory_showing:
- var player_id : int = multiplayer.get_unique_id()
- var player : Player = level.get_node("Player"+str(player_id))
- player.handle_open_inventory(true)
- return
- if !menu_showing:
- lobby_menu.show()
- menu_showing = true
- Global.in_menu = true
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
-
- elif menu_showing:
- lobby_menu.hide()
- menu_showing = false
- Global.in_menu = false
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
-
-func _enet_host_on(username: String) -> void:
- print("Server started, Host: " + username);
- server.enet_create_host()
-
-
-func _enet_join_pressed(_username: String) -> void:
- print("... Joining " + Global.enet_address)
- var playername : Player = level.get_node("Player1")
- level.remove_child(playername)
- server.enet_create_client(Global.enet_address)
-
-
-func _client_joined_server() -> void:
-
- var player_id : int = multiplayer.get_unique_id()
- level.request_spawn_player.rpc(player_id)
- lobby_menu.hide()
- menu_showing = false
- Global.in_menu = false
-
-func _menu_toggle_host_off() -> void:
- server.destroy_lobby()
- lobby_menu.reset_visible()
-
-func _server_close() -> void:
- level.remove_players(false)
- lobby_menu.reset_visible()
-
-func _disconnect_button_pressed():
- server.disconnect_client()
- lobby_menu.reset_visible()
-
-func _remove_client_from_server(id : int) -> void:
- level.remove_client_from_server.rpc_id(1, id)
-
-func _disconnect_from_server():
- level.disconnect_from_server()
-
-
-func _server_send_chat_message(message : String, color : Color) -> void:
- chat.send_message(message, false, color)
diff --git a/Scripts/world.gd.uid b/Scripts/world.gd.uid
deleted file mode 100644
index eb541fb..0000000
--- a/Scripts/world.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://klp20wju1i26
diff --git a/addons/godotsteam/godotsteam.gdextension b/addons/godotsteam/godotsteam.gdextension
deleted file mode 100644
index 5917bed..0000000
--- a/addons/godotsteam/godotsteam.gdextension
+++ /dev/null
@@ -1,22 +0,0 @@
-[configuration]
-entry_symbol = "godotsteam_init"
-compatibility_minimum = "4.4"
-
-[libraries]
-macos.debug = "res://addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework"
-macos.release = "res://addons/godotsteam/osx/libgodotsteam.macos.template_release.framework"
-windows.debug.x86_64 = "res://addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll"
-windows.debug.x86_32 = "res://addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll"
-windows.release.x86_64 = "res://addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll"
-windows.release.x86_32 = "res://addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll"
-linux.debug.x86_64 = "res://addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so"
-linux.debug.x86_32 = "res://addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so"
-linux.release.x86_64 = "res://addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so"
-linux.release.x86_32 = "res://addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so"
-
-[dependencies]
-macos.universal = { "res://addons/godotsteam/osx/libsteam_api.dylib": "" }
-windows.x86_64 = { "res://addons/godotsteam/win64/steam_api64.dll": "" }
-windows.x86_32 = { "res://addons/godotsteam/win32/steam_api.dll": "" }
-linux.x86_64 = { "res://addons/godotsteam/linux64/libsteam_api.so": "" }
-linux.x86_32 = { "res://addons/godotsteam/linux32/libsteam_api.so": "" }
diff --git a/addons/godotsteam/godotsteam.gdextension.uid b/addons/godotsteam/godotsteam.gdextension.uid
deleted file mode 100644
index 8b94933..0000000
--- a/addons/godotsteam/godotsteam.gdextension.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d02t56dfoplvx
diff --git a/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so b/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so
deleted file mode 100644
index 00be7c5..0000000
Binary files a/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so and /dev/null differ
diff --git a/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so b/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so
deleted file mode 100644
index 658694b..0000000
Binary files a/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so and /dev/null differ
diff --git a/addons/godotsteam/linux32/libsteam_api.so b/addons/godotsteam/linux32/libsteam_api.so
deleted file mode 100644
index 2d9e8a7..0000000
Binary files a/addons/godotsteam/linux32/libsteam_api.so and /dev/null differ
diff --git a/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so b/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so
deleted file mode 100644
index 045b00d..0000000
Binary files a/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so and /dev/null differ
diff --git a/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so b/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so
deleted file mode 100644
index b273ec7..0000000
Binary files a/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so and /dev/null differ
diff --git a/addons/godotsteam/linux64/libsteam_api.so b/addons/godotsteam/linux64/libsteam_api.so
deleted file mode 100644
index 8783570..0000000
Binary files a/addons/godotsteam/linux64/libsteam_api.so and /dev/null differ
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/Resources/Info.plist b/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/Resources/Info.plist
deleted file mode 100644
index 68caf2b..0000000
--- a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/Resources/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleExecutable
- libgodotsteam.debug
- CFBundleIdentifier
- org.godotsteam.godotsteam
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- libgodotsteam.debug
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 4.15
- CFBundleSupportedPlatforms
-
- MacOSX
-
- CFBundleVersion
- 4.15
- LSMinimumSystemVersion
- 10.12
-
-
\ No newline at end of file
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libgodotsteam.macos.template_debug b/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libgodotsteam.macos.template_debug
deleted file mode 100644
index 8a8b2b7..0000000
Binary files a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libgodotsteam.macos.template_debug and /dev/null differ
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libsteam_api.dylib b/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libsteam_api.dylib
deleted file mode 100644
index c493b2b..0000000
Binary files a/addons/godotsteam/osx/libgodotsteam.macos.template_debug.framework/libsteam_api.dylib and /dev/null differ
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/Resources/Info.plist b/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/Resources/Info.plist
deleted file mode 100644
index e3e8dac..0000000
--- a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/Resources/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleExecutable
- libgodotsteam
- CFBundleIdentifier
- org.godotsteam.godotsteam
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- libgodotsteam
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 4.15
- CFBundleSupportedPlatforms
-
- MacOSX
-
- CFBundleVersion
- 4.15
- LSMinimumSystemVersion
- 10.12
-
-
\ No newline at end of file
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libgodotsteam.macos.template_release b/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libgodotsteam.macos.template_release
deleted file mode 100644
index ce91b3e..0000000
Binary files a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libgodotsteam.macos.template_release and /dev/null differ
diff --git a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libsteam_api.dylib b/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libsteam_api.dylib
deleted file mode 100644
index c493b2b..0000000
Binary files a/addons/godotsteam/osx/libgodotsteam.macos.template_release.framework/libsteam_api.dylib and /dev/null differ
diff --git a/addons/godotsteam/osx/libsteam_api.dylib b/addons/godotsteam/osx/libsteam_api.dylib
deleted file mode 100644
index c493b2b..0000000
Binary files a/addons/godotsteam/osx/libsteam_api.dylib and /dev/null differ
diff --git a/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll b/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll
deleted file mode 100644
index cebcc9b..0000000
Binary files a/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll and /dev/null differ
diff --git a/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll b/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll
deleted file mode 100644
index 21c3a1e..0000000
Binary files a/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll and /dev/null differ
diff --git a/addons/godotsteam/win32/steam_api.dll b/addons/godotsteam/win32/steam_api.dll
deleted file mode 100644
index 2372ab1..0000000
Binary files a/addons/godotsteam/win32/steam_api.dll and /dev/null differ
diff --git a/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll
deleted file mode 100644
index 3d02848..0000000
Binary files a/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll and /dev/null differ
diff --git a/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll b/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll
deleted file mode 100644
index 6bb49b3..0000000
Binary files a/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll and /dev/null differ
diff --git a/addons/godotsteam/win64/steam_api64.dll b/addons/godotsteam/win64/steam_api64.dll
deleted file mode 100644
index 6d11825..0000000
Binary files a/addons/godotsteam/win64/steam_api64.dll and /dev/null differ
diff --git a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll
deleted file mode 100644
index 3d02848..0000000
Binary files a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/.gitignore b/addons/steam-multiplayer-peer/.gitignore
deleted file mode 100644
index 9581441..0000000
--- a/addons/steam-multiplayer-peer/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-~*.dll
\ No newline at end of file
diff --git a/addons/steam-multiplayer-peer/LICENSE b/addons/steam-multiplayer-peer/LICENSE
deleted file mode 100644
index 0cefe81..0000000
--- a/addons/steam-multiplayer-peer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Expresso Bits
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/addons/steam-multiplayer-peer/README.md b/addons/steam-multiplayer-peer/README.md
deleted file mode 100644
index cbaf359..0000000
--- a/addons/steam-multiplayer-peer/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-#
Welcome to Expresso Steam Multiplayer Peer 👋
-
-[](todo-doc)
-[](MIT)
-
-See demos in:
-Github: [Branch demos](https://github.com/expressobits/steam-multiplayer-peer/tree/demos)
-Godot Asset Lib: https://godotengine.org/asset-library/asset/2258
-
-## Tutorial and Learnings (How to use)
-
-See post of Michael Macha
-https://michaelmacha.wordpress.com/2024/04/08/godotsteam-and-steammultiplayerpeer/
-
-See too on youtube videos
-https://www.youtube.com/playlist?list=PLg_8mgEWE2p8ZA-AqUUJ3CYEtrRVFhl_v
-
-Thank you Michael!
-
-## Features
-
-✔️ Change easy Enet peer to Steam Peer
-
-✔️ Use Steam Sockets (Low level like enet).
-
-✔️ GDExtension (Easy to add your project)
-
-✔️ No dependency with GodotSteam, but demo use GodotSteam to handle connections with lobbies (See lobbies tutorial in Godot Steam [here](https://godotsteam.com/tutorials/lobbies/)).
-
-
-## GodotSteam SteamMultiplayerPeer Differences
-
-| Differences | This SteamMultiplayerPeer | GodotSteam SteamMultiplayerPeer |
-|---|---|---|
-| Lib Type | GDExtension, add on your project libs to use easy. | C++ module, you need to use the precompiled
ones from godotsteam or compile it yourself |
-| Steam Connection | Steam Sockets [Steam Docs](https://partner.steamgames.com/doc/api/ISteamNetworkingSockets)
Steam's lowest connection level,
manages a connection
(It's very close to Enet,
that's why I chose this approach for the plugin) | Steam Messages [Steam Docs](https://partner.steamgames.com/doc/api/ISteamNetworkingMessages)
Without a connection idea,
the connection is managed by the lobby,
Need Steam lobbies. |
-| TODO | | |
-
-## Known issues
-
-⚠️ Features No channel support currently
-At some point I intend to integrate channels to be used in rpcs commands, but currently it is only necessary to use channel 0 or the default rpcs.
-
-## In Progress
-
-🔨 Bugs fixes
-
-## Planneds
-
-📅 No planned features.
-
-
-
-## Authors
-
-👤 **Rafael Correa**
-* Twitter: [@ScriptsEngineer](https://twitter.com/ScriptsEngineer)
-* Github: [@scriptsengineer](https://github.com/scriptsengineer)
-
-👤 **Zennyth**
-* Github: [@Zennyth](https://github.com/Zennyth)
-
-👤 **greenfox1505**
-* Github: [@greenfox1505](https://github.com/greenfox1505)
-
-👤 **MichaelMacha**
-* Github: [@MichaelMacha](https://github.com/MichaelMacha)
-
-
-## 🤝 Contributing
-
-Contributions, issues and feature requests are welcome!
-
-Feel free to check [issues page](https://github.com/ExpressoBits/steam-multiplayer-peer/issues).
-
-To suggest or discuss some project structure, feel free here [discussions page](https://github.com/expressobits/steam-multiplayer-peer/discussions)
-
-
-## Show your support
-
-Give a ⭐️ if this project helped you!
-
-
-## 📝 License
-
-This project is [MIT](MIT) licensed.
\ No newline at end of file
diff --git a/addons/steam-multiplayer-peer/linux/.gitkeep b/addons/steam-multiplayer-peer/linux/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.double.x86_64.so b/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.double.x86_64.so
deleted file mode 100644
index a8a45e9..0000000
Binary files a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.double.x86_64.so and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.x86_64.so b/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.x86_64.so
deleted file mode 100644
index 3d1ee20..0000000
Binary files a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_debug.x86_64.so and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.double.x86_64.so b/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.double.x86_64.so
deleted file mode 100644
index 30d1bdf..0000000
Binary files a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.double.x86_64.so and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.x86_64.so b/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.x86_64.so
deleted file mode 100644
index 4b34abf..0000000
Binary files a/addons/steam-multiplayer-peer/linux/libsteam-multiplayer-peer.linux.template_release.x86_64.so and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/linux/libsteam_api.so b/addons/steam-multiplayer-peer/linux/libsteam_api.so
deleted file mode 100644
index 4a1260c..0000000
Binary files a/addons/steam-multiplayer-peer/linux/libsteam_api.so and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.double.universal.dylib b/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.double.universal.dylib
deleted file mode 100644
index eda02f2..0000000
Binary files a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.double.universal.dylib and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.universal.dylib b/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.universal.dylib
deleted file mode 100644
index 820ea49..0000000
Binary files a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_debug.universal.dylib and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.double.universal.dylib b/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.double.universal.dylib
deleted file mode 100644
index 1f74832..0000000
Binary files a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.double.universal.dylib and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.universal.dylib b/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.universal.dylib
deleted file mode 100644
index 6bf8111..0000000
Binary files a/addons/steam-multiplayer-peer/macos/libsteam-multiplayer-peer.macos.template_release.universal.dylib and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/macos/libsteam_api.dylib b/addons/steam-multiplayer-peer/macos/libsteam_api.dylib
deleted file mode 100644
index 1897bef..0000000
Binary files a/addons/steam-multiplayer-peer/macos/libsteam_api.dylib and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension b/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension
deleted file mode 100644
index c877cf5..0000000
--- a/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension
+++ /dev/null
@@ -1,25 +0,0 @@
-[configuration]
-entry_symbol = "steam_multiplayer_peer_init"
-compatibility_minimum = 4.2
-
-[libraries]
-linux.debug.x86_64 = "./linux/libsteam-multiplayer-peer.linux.template_debug.x86_64.so"
-linux.release.x86_64 = "./linux/libsteam-multiplayer-peer.linux.template_release.x86_64.so"
-linux.debug.arm64 = "./linux/libsteam-multiplayer-peer.linux.template_debug.arm64.so"
-linux.release.arm64 = "./linux/libsteam-multiplayer-peer.linux.template_release.arm64.so"
-linux.debug.rv64 = "./linux/libsteam-multiplayer-peer.linux.template_debug.rv64.so"
-linux.release.rv64 = "./linux/libsteam-multiplayer-peer.linux.template_release.rv64.so"
-macos.debug = "./macos/libsteam-multiplayer-peer.macos.template_debug.universal.dylib"
-macos.release = "./macos/libsteam-multiplayer-peer.macos.template_release.universal.dylib"
-windows.debug.x86_32 = "./windows/steam-multiplayer-peer.windows.template_debug.x86_32.dll"
-windows.release.x86_32 = "./windows/steam-multiplayer-peer.windows.template_release.x86_32.dll"
-windows.debug.x86_64 = "./windows/steam-multiplayer-peer.windows.template_debug.x86_64.dll"
-windows.release.x86_64 = "./windows/steam-multiplayer-peer.windows.template_release.x86_64.dll"
-
-[dependencies]
-linux.x86_64 = { "linux/libsteam_api.so": "" }
-linux.arm64 = { "linux/libsteam_api.so": "" }
-linux.rv64 = { "linux/libsteam_api.so": "" }
-macos.universal = { "macos/libsteam_api.dylib": "" }
-windows.x86_64 = { "windows/steam_api64.dll": "" }
-windows.x86_32 = { "windows/steam_api.dll": "" }
\ No newline at end of file
diff --git a/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension.uid b/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension.uid
deleted file mode 100644
index 0bf22ce..0000000
--- a/addons/steam-multiplayer-peer/steam-multiplayer-peer.gdextension.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://2kvjphhw06ra
diff --git a/addons/steam-multiplayer-peer/windows/.gitkeep b/addons/steam-multiplayer-peer/windows/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.double.x86_64.dll b/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.double.x86_64.dll
deleted file mode 100644
index 5069c2c..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.double.x86_64.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.x86_64.dll b/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.x86_64.dll
deleted file mode 100644
index 11292cf..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_debug.x86_64.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.double.x86_64.dll b/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.double.x86_64.dll
deleted file mode 100644
index f1a81c2..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.double.x86_64.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.x86_64.dll b/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.x86_64.dll
deleted file mode 100644
index f6f4e55..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam-multiplayer-peer.windows.template_release.x86_64.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/windows/steam_api.dll b/addons/steam-multiplayer-peer/windows/steam_api.dll
deleted file mode 100644
index 0bcfde3..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam_api.dll and /dev/null differ
diff --git a/addons/steam-multiplayer-peer/windows/steam_api64.dll b/addons/steam-multiplayer-peer/windows/steam_api64.dll
deleted file mode 100644
index 6594c50..0000000
Binary files a/addons/steam-multiplayer-peer/windows/steam_api64.dll and /dev/null differ
diff --git a/project.godot b/project.godot
deleted file mode 100644
index 09ff5a7..0000000
--- a/project.godot
+++ /dev/null
@@ -1,105 +0,0 @@
-; Engine configuration file.
-; It's best edited using the editor UI and not directly,
-; since the parameters that go here are not all obvious.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-config_version=5
-
-[application]
-
-config/name="Goblin Dishonored"
-run/main_scene="uid://cjimt73bcja16"
-config/features=PackedStringArray("4.4", "Forward Plus")
-
-[autoload]
-
-Global="*res://Scripts/global.gd"
-
-[file_customization]
-
-folder_colors={
-"res://Assets/": "red",
-"res://Scenes/": "purple",
-"res://Scripts/": "green"
-}
-
-[gui]
-
-theme/custom="uid://bvso6uowlb8dh"
-
-[input]
-
-move_forward={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
-]
-}
-move_back={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
-]
-}
-move_left={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
-]
-}
-move_right={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
-]
-}
-jump={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
-]
-}
-crouch={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-sprint={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-pause={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-open_chat={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-open_chat_as_command={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":47,"key_label":0,"unicode":47,"location":0,"echo":false,"script":null)
-]
-}
-chat_send={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-interact={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
-]
-}
-inventory={
-"deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
-
-[layer_names]
-
-3d_physics/layer_1="Terrain and Players"
-3d_physics/layer_2="Interactables"
-3d_physics/layer_3="Enemies"
diff --git a/quality-godot-first-person-2-2.6.1/.gitattributes b/quality-godot-first-person-2-2.6.1/.gitattributes
deleted file mode 100644
index 8ad74f7..0000000
--- a/quality-godot-first-person-2-2.6.1/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Normalize EOL for all files that Git considers text files.
-* text=auto eol=lf
diff --git a/quality-godot-first-person-2-2.6.1/.gitignore b/quality-godot-first-person-2-2.6.1/.gitignore
deleted file mode 100644
index 4709183..0000000
--- a/quality-godot-first-person-2-2.6.1/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Godot 4+ specific ignores
-.godot/
diff --git a/quality-godot-first-person-2-2.6.1/LICENSE b/quality-godot-first-person-2-2.6.1/LICENSE
deleted file mode 100644
index f34733d..0000000
--- a/quality-godot-first-person-2-2.6.1/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Colormatic
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/quality-godot-first-person-2-2.6.1/README.md b/quality-godot-first-person-2-2.6.1/README.md
deleted file mode 100644
index 6e64887..0000000
--- a/quality-godot-first-person-2-2.6.1/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# quality-godot-first-person-2
-Actually good first person controller for the Godot Engine.
-MIT License (credit Colormatic Studios)
-
-This first person controller was made because there aren't many first person controllers for Godot, and the ones that do exist are pretty bad.
-It is highly customizable and comes with many features, QOL, and clean code.
-
-Some parts came from StayAtHomeDev's FPS tutorial. You can find that [here](https://www.youtube.com/playlist?list=PLEHvj4yeNfeF6s-UVs5Zx5TfNYmeCiYwf).
-
-# Directions
-Move with WASD, space to jump, shift to sprint, C to crouch.
-
-**FEATURES:**
-- Extremely configurable
-- In-air momentum
-- Motion smoothing
-- FOV smoothing
-- Movement animations
-- Crouching
-- Sprinting
-- 2 crosshairs/reticles, one is animated (more to come?)
-- Controller/GamePad support (enabled through code, see wiki)
-- In-editor tools (enable editable children to use)
-
-If you make a cool game with this addon, I would love to hear about it!
-
-# Wiki
-**To start out**, you should probably remap all of the movement keys to your own control set.
-
-You can make this a super basic controller by just disabling everything.
-
-**How to add controller/GamePad support**
-- In the controls export group, there is a commented section at the end that says "Uncomment this if you want full controller support". Uncomment that block.
-- Make a key map for each direction (left, right, up, down) and map them to your joystick.
-- Write in these keymaps in the controls section of the player settings.
-- In the `handle_head_rotation` function, there is another block of commented code that says the same thing. Uncomment that too.
-- You should now be able to look around with the joystick. Make sure you add the other controls to the input map. (movement, jumping, crouching, sprinting, etc.)
-
-**Slope/staircase:**
-Credit to @roberto-urbani23
-In the character inspector, you can uncheck Stop on Slope and set the max angle to 89 (for some reason, 90 will make the player stuck). Also Snap Length to 1 otherwise your character will not remain attached to stairs if you sprint while going downstairs.
-
-**How to change settings:**
-Click on the character node and there should be settings in the "Feature Settings" group.
-
-**How to add animations for a mesh:**
-- Create a function for your animation and attach it to `_physics_process` to call it every frame.
-- Use `input_dir` as a boolean (it is actually a `Vector2`) to know if the player is walking.
-- Use the `state` member variable to tell if the player is sprinting or crouching.
-- Use the `is_on_floor` function to tell if the player is standing or falling.
-
-**How to change reticles (crosshairs):**
-Change the "Default Reticle" setting to your reticle file.
-During runtime:
-Use the `change_reticle` function on the character.
-
-**How to create a new reticle:**
-- Choose a reticle to base it off of.
-- Open that reticle and save it as a new reticle.
-- Remove the script from the reticle and create a new one. (for some reason you have to do this)
-- Edit the reticle to your needs.
-- Follow the "how to change reticles" directions to use it.
-
-**How to use the editor tools:**
-- Enable editable children on the `CharacterBody` node
-- Use the options in the Properties tab to change things
-- These changes apply in runtime as well
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/EditorModule.gd b/quality-godot-first-person-2-2.6.1/addons/fpc/EditorModule.gd
deleted file mode 100644
index 0a3a74f..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/EditorModule.gd
+++ /dev/null
@@ -1,49 +0,0 @@
-@tool
-extends Node
-
-# This does not effect runtime yet but will in the future.
-
-@export_category("Controller Editor Module")
-@export_range(-360.0, 360.0, 0.01, "or_greater", "or_less") var head_y_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_y_rotation = new_rotation
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- update_configuration_warnings()
-@export_range(-90.0, 90.0, 0.01, "or_greater", "or_less") var head_x_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_x_rotation = new_rotation
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
- update_configuration_warnings()
-
-@export_group("Nodes")
-@export var CHARACTER : CharacterBody3D
-@export var head_path : String = "Head" # Relative to the parent node
-#@export var CAMERA : Camera3D
-#@export var HEADBOB_ANIMATION : AnimationPlayer
-#@export var JUMP_ANIMATION : AnimationPlayer
-#@export var CROUCH_ANIMATION : AnimationPlayer
-#@export var COLLISION_MESH : CollisionShape3D
-
-@onready var HEAD = get_node("../" + head_path)
-
-
-func _ready():
- if !Engine.is_editor_hint():
- #print("not editor")
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
-
-
-func _get_configuration_warnings():
- var warnings = []
-
- if head_y_rotation > 360:
- warnings.append("The head rotation is greater than 360")
-
- if head_y_rotation < -360:
- warnings.append("The head rotation is less than -360")
-
- # Returning an empty array gives no warnings
- return warnings
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/character.gd b/quality-godot-first-person-2-2.6.1/addons/fpc/character.gd
deleted file mode 100644
index 5a5f7f7..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/character.gd
+++ /dev/null
@@ -1,488 +0,0 @@
-# COPYRIGHT Colormatic Studios
-# MIT license
-# Quality Godot First Person Controller v2
-
-
-extends CharacterBody3D
-
-
-#region Character Export Group
-
-## The settings for the character's movement and feel.
-@export_category("Character")
-## The speed that the character moves at without crouching or sprinting.
-@export var base_speed : float = 3.0
-## The speed that the character moves at when sprinting.
-@export var sprint_speed : float = 6.0
-## The speed that the character moves at when crouching.
-@export var crouch_speed : float = 1.0
-
-## How fast the character speeds up and slows down when Motion Smoothing is on.
-@export var acceleration : float = 10.0
-## How high the player jumps.
-@export var jump_velocity : float = 4.5
-## How far the player turns when the mouse is moved.
-@export var mouse_sensitivity : float = 0.1
-## Invert the X axis input for the camera.
-@export var invert_camera_x_axis : bool = false
-## Invert the Y axis input for the camera.
-@export var invert_camera_y_axis : bool = false
-## Whether the player can use movement inputs. Does not stop outside forces or jumping. See Jumping Enabled.
-@export var immobile : bool = false
-## The reticle file to import at runtime. By default are in res://addons/fpc/reticles/. Set to an empty string to remove.
-@export_file var default_reticle
-
-#endregion
-
-#region Nodes Export Group
-
-@export_group("Nodes")
-## A reference to the camera for use in the character script. This is the parent node to the camera and is rotated instead of the camera for mouse input.
-@export var HEAD : Node3D
-## A reference to the camera for use in the character script.
-@export var CAMERA : Camera3D
-## A reference to the headbob animation for use in the character script.
-@export var HEADBOB_ANIMATION : AnimationPlayer
-## A reference to the jump animation for use in the character script.
-@export var JUMP_ANIMATION : AnimationPlayer
-## A reference to the crouch animation for use in the character script.
-@export var CROUCH_ANIMATION : AnimationPlayer
-## A reference to the the player's collision shape for use in the character script.
-@export var COLLISION_MESH : CollisionShape3D
-
-#endregion
-
-#region Controls Export Group
-
-# We are using UI controls because they are built into Godot Engine so they can be used right away
-@export_group("Controls")
-## Use the Input Map to map a mouse/keyboard input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controls : Dictionary = {
- LEFT = "ui_left",
- RIGHT = "ui_right",
- FORWARD = "ui_up",
- BACKWARD = "ui_down",
- JUMP = "ui_accept",
- CROUCH = "crouch",
- SPRINT = "sprint",
- PAUSE = "ui_cancel"
- }
-@export_subgroup("Controller Specific")
-## This only affects how the camera is handled, the rest should be covered by adding controller inputs to the existing actions in the Input Map.
-@export var controller_support : bool = false
-## Use the Input Map to map a controller input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controller_controls : Dictionary = {
- LOOK_LEFT = "look_left",
- LOOK_RIGHT = "look_right",
- LOOK_UP = "look_up",
- LOOK_DOWN = "look_down"
- }
-## The sensitivity of the analog stick that controls camera rotation. Lower is less sensitive and higher is more sensitive.
-@export_range(0.001, 1, 0.001) var look_sensitivity : float = 0.035
-
-#endregion
-
-#region Feature Settings Export Group
-
-@export_group("Feature Settings")
-## Enable or disable jumping. Useful for restrictive storytelling environments.
-@export var jumping_enabled : bool = true
-## Whether the player can move in the air or not.
-@export var in_air_momentum : bool = true
-## Smooths the feel of walking.
-@export var motion_smoothing : bool = true
-## Enables or disables sprinting.
-@export var sprint_enabled : bool = true
-## Toggles the sprinting state when button is pressed or requires the player to hold the button down to remain sprinting.
-@export_enum("Hold to Sprint", "Toggle Sprint") var sprint_mode : int = 0
-## Enables or disables crouching.
-@export var crouch_enabled : bool = true
-## Toggles the crouch state when button is pressed or requires the player to hold the button down to remain crouched.
-@export_enum("Hold to Crouch", "Toggle Crouch") var crouch_mode : int = 0
-## Wether sprinting should effect FOV.
-@export var dynamic_fov : bool = true
-## If the player holds down the jump button, should the player keep hopping.
-@export var continuous_jumping : bool = true
-## Enables the view bobbing animation.
-@export var view_bobbing : bool = true
-## Enables an immersive animation when the player jumps and hits the ground.
-@export var jump_animation : bool = true
-## This determines wether the player can use the pause button, not wether the game will actually pause.
-@export var pausing_enabled : bool = true
-## Use with caution.
-@export var gravity_enabled : bool = true
-## If your game changes the gravity value during gameplay, check this property to allow the player to experience the change in gravity.
-@export var dynamic_gravity : bool = false
-
-#endregion
-
-#region Member Variable Initialization
-
-# These are variables used in this script that don't need to be exposed in the editor.
-var speed : float = base_speed
-var current_speed : float = 0.0
-# States: normal, crouching, sprinting
-var state : String = "normal"
-var low_ceiling : bool = false # This is for when the ceiling is too low and the player needs to crouch.
-var was_on_floor : bool = true # Was the player on the floor last frame (for landing animation)
-
-# The reticle should always have a Control node as the root
-var RETICLE : Control
-
-# Get the gravity from the project settings to be synced with RigidBody nodes
-var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity") # Don't set this as a const, see the gravity section in _physics_process
-
-# Stores mouse input for rotating the camera in the physics process
-var mouseInput : Vector2 = Vector2(0,0)
-
-#endregion
-
-
-
-#region Main Control Flow
-
-func _ready():
- #It is safe to comment this line if your game doesn't start with the mouse captured
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
-
- # If the controller is rotated in a certain direction for game design purposes, redirect this rotation into the head.
- HEAD.rotation.y = rotation.y
- rotation.y = 0
-
- if default_reticle:
- change_reticle(default_reticle)
-
- initialize_animations()
- check_controls()
- enter_normal_state()
-
-
-func _process(_delta):
- if pausing_enabled:
- handle_pausing()
-
- update_debug_menu_per_frame()
-
-
-func _physics_process(delta): # Most things happen here.
- # Gravity
- if dynamic_gravity:
- gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
- if not is_on_floor() and gravity and gravity_enabled:
- velocity.y -= gravity * delta
-
- handle_jumping()
-
- var input_dir = Vector2.ZERO
-
- if not immobile: # Immobility works by interrupting user input, so other forces can still be applied to the player
- input_dir = Input.get_vector(controls.LEFT, controls.RIGHT, controls.FORWARD, controls.BACKWARD)
-
- handle_movement(delta, input_dir)
-
- handle_head_rotation()
-
- # The player is not able to stand up if the ceiling is too low
- low_ceiling = $CrouchCeilingDetection.is_colliding()
-
- handle_state(input_dir)
- if dynamic_fov: # This may be changed to an AnimationPlayer
- update_camera_fov()
-
- if view_bobbing:
- play_headbob_animation(input_dir)
-
- if jump_animation:
- play_jump_animation()
-
- update_debug_menu_per_tick()
-
- was_on_floor = is_on_floor() # This must always be at the end of physics_process
-
-#endregion
-
-#region Input Handling
-
-func handle_jumping():
- if jumping_enabled:
- if continuous_jumping: # Hold down the jump button
- if Input.is_action_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity # Adding instead of setting so jumping on slopes works properly
- else:
- if Input.is_action_just_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity
-
-
-func handle_movement(delta, input_dir):
- var direction = input_dir.rotated(-HEAD.rotation.y)
- direction = Vector3(direction.x, 0, direction.y)
- move_and_slide()
-
- if in_air_momentum:
- if is_on_floor():
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
- else:
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
-
-
-func handle_head_rotation():
- if invert_camera_x_axis:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity
-
- if invert_camera_y_axis:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity
-
- if controller_support:
- var controller_view_rotation = Input.get_vector(controller_controls.LOOK_DOWN, controller_controls.LOOK_UP, controller_controls.LOOK_RIGHT, controller_controls.LOOK_LEFT) * look_sensitivity # These are inverted because of the nature of 3D rotation.
- if invert_camera_x_axis:
- HEAD.rotation.x += controller_view_rotation.x * -1
- else:
- HEAD.rotation.x += controller_view_rotation.x
-
- if invert_camera_y_axis:
- HEAD.rotation.y += controller_view_rotation.y * -1
- else:
- HEAD.rotation.y += controller_view_rotation.y
-
- mouseInput = Vector2(0,0)
- HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
-
-
-func check_controls(): # If you add a control, you might want to add a check for it here.
- # The actions are being disabled so the engine doesn't halt the entire project in debug mode
- if !InputMap.has_action(controls.JUMP):
- push_error("No control mapped for jumping. Please add an input map control. Disabling jump.")
- jumping_enabled = false
- if !InputMap.has_action(controls.LEFT):
- push_error("No control mapped for move left. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.RIGHT):
- push_error("No control mapped for move right. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.FORWARD):
- push_error("No control mapped for move forward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.BACKWARD):
- push_error("No control mapped for move backward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.PAUSE):
- push_error("No control mapped for pause. Please add an input map control. Disabling pausing.")
- pausing_enabled = false
- if !InputMap.has_action(controls.CROUCH):
- push_error("No control mapped for crouch. Please add an input map control. Disabling crouching.")
- crouch_enabled = false
- if !InputMap.has_action(controls.SPRINT):
- push_error("No control mapped for sprint. Please add an input map control. Disabling sprinting.")
- sprint_enabled = false
-
-#endregion
-
-#region State Handling
-
-func handle_state(moving):
- if sprint_enabled:
- if sprint_mode == 0:
- if Input.is_action_pressed(controls.SPRINT) and state != "crouching":
- if moving:
- if state != "sprinting":
- enter_sprint_state()
- else:
- if state == "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
- elif sprint_mode == 1:
- if moving:
- # If the player is holding sprint before moving, handle that scenario
- if Input.is_action_pressed(controls.SPRINT) and state == "normal":
- enter_sprint_state()
- if Input.is_action_just_pressed(controls.SPRINT):
- match state:
- "normal":
- enter_sprint_state()
- "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
-
- if crouch_enabled:
- if crouch_mode == 0:
- if Input.is_action_pressed(controls.CROUCH) and state != "sprinting":
- if state != "crouching":
- enter_crouch_state()
- elif state == "crouching" and !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
- elif crouch_mode == 1:
- if Input.is_action_just_pressed(controls.CROUCH):
- match state:
- "normal":
- enter_crouch_state()
- "crouching":
- if !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
-
-
-# Any enter state function should only be called once when you want to enter that state, not every frame.
-func enter_normal_state():
- #print("entering normal state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "normal"
- speed = base_speed
-
-func enter_crouch_state():
- #print("entering crouch state")
- state = "crouching"
- speed = crouch_speed
- CROUCH_ANIMATION.play("crouch")
-
-func enter_sprint_state():
- #print("entering sprint state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "sprinting"
- speed = sprint_speed
-
-#endregion
-
-#region Animation Handling
-
-func initialize_animations():
- # Reset the camera position
- # If you want to change the default head height, change these animations.
- HEADBOB_ANIMATION.play("RESET")
- JUMP_ANIMATION.play("RESET")
- CROUCH_ANIMATION.play("RESET")
-
-func play_headbob_animation(moving):
- if moving and is_on_floor():
- var use_headbob_animation : String
- match state:
- "normal","crouching":
- use_headbob_animation = "walk"
- "sprinting":
- use_headbob_animation = "sprint"
-
- var was_playing : bool = false
- if HEADBOB_ANIMATION.current_animation == use_headbob_animation:
- was_playing = true
-
- HEADBOB_ANIMATION.play(use_headbob_animation, 0.25)
- HEADBOB_ANIMATION.speed_scale = (current_speed / base_speed) * 1.75
- if !was_playing:
- HEADBOB_ANIMATION.seek(float(randi() % 2)) # Randomize the initial headbob direction
- # Let me explain that piece of code because it looks like it does the opposite of what it actually does.
- # The headbob animation has two starting positions. One is at 0 and the other is at 1.
- # randi() % 2 returns either 0 or 1, and so the animation randomly starts at one of the starting positions.
- # This code is extremely performant but it makes no sense.
-
- else:
- if HEADBOB_ANIMATION.current_animation == "sprint" or HEADBOB_ANIMATION.current_animation == "walk":
- HEADBOB_ANIMATION.speed_scale = 1
- HEADBOB_ANIMATION.play("RESET", 1)
-
-func play_jump_animation():
- if !was_on_floor and is_on_floor(): # The player just landed
- var facing_direction : Vector3 = CAMERA.get_global_transform().basis.x
- var facing_direction_2D : Vector2 = Vector2(facing_direction.x, facing_direction.z).normalized()
- var velocity_2D : Vector2 = Vector2(velocity.x, velocity.z).normalized()
-
- # Compares velocity direction against the camera direction (via dot product) to determine which landing animation to play.
- var side_landed : int = round(velocity_2D.dot(facing_direction_2D))
-
- if side_landed > 0:
- JUMP_ANIMATION.play("land_right", 0.25)
- elif side_landed < 0:
- JUMP_ANIMATION.play("land_left", 0.25)
- else:
- JUMP_ANIMATION.play("land_center", 0.25)
-
-#endregion
-
-#region Debug Menu
-
-func update_debug_menu_per_frame():
- $UserInterface/DebugPanel.add_property("FPS", Performance.get_monitor(Performance.TIME_FPS), 0)
- var status : String = state
- if !is_on_floor():
- status += " in the air"
- $UserInterface/DebugPanel.add_property("State", status, 4)
-
-
-func update_debug_menu_per_tick():
- # Big thanks to github.com/LorenzoAncora for the concept of the improved debug values
- current_speed = Vector3.ZERO.distance_to(get_real_velocity())
- $UserInterface/DebugPanel.add_property("Speed", snappedf(current_speed, 0.001), 1)
- $UserInterface/DebugPanel.add_property("Target speed", speed, 2)
- var cv : Vector3 = get_real_velocity()
- var vd : Array[float] = [
- snappedf(cv.x, 0.001),
- snappedf(cv.y, 0.001),
- snappedf(cv.z, 0.001)
- ]
- var readable_velocity : String = "X: " + str(vd[0]) + " Y: " + str(vd[1]) + " Z: " + str(vd[2])
- $UserInterface/DebugPanel.add_property("Velocity", readable_velocity, 3)
-
-
-func _unhandled_input(event : InputEvent):
- if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
- mouseInput.x += event.relative.x
- mouseInput.y += event.relative.y
- # Toggle debug menu
- elif event is InputEventKey:
- if event.is_released():
- # Where we're going, we don't need InputMap
- if event.keycode == 4194338: # F7
- $UserInterface/DebugPanel.visible = !$UserInterface/DebugPanel.visible
-
-#endregion
-
-#region Misc Functions
-
-func change_reticle(reticle): # Yup, this function is kinda strange
- if RETICLE:
- RETICLE.queue_free()
-
- RETICLE = load(reticle).instantiate()
- RETICLE.character = self
- $UserInterface.add_child(RETICLE)
-
-
-func update_camera_fov():
- if state == "sprinting":
- CAMERA.fov = lerp(CAMERA.fov, 85.0, 0.3)
- else:
- CAMERA.fov = lerp(CAMERA.fov, 75.0, 0.3)
-
-func handle_pausing():
- if Input.is_action_just_pressed(controls.PAUSE):
- # You may want another node to handle pausing, because this player may get paused too.
- match Input.mouse_mode:
- Input.MOUSE_MODE_CAPTURED:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- #get_tree().paused = false
- Input.MOUSE_MODE_VISIBLE:
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- #get_tree().paused = false
-
-#endregion
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/character.tscn b/quality-godot-first-person-2-2.6.1/addons/fpc/character.tscn
deleted file mode 100644
index 3cfd7c8..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/character.tscn
+++ /dev/null
@@ -1,455 +0,0 @@
-[gd_scene load_steps=22 format=3 uid="uid://cc1m2a1obsyn4"]
-
-[ext_resource type="Script" path="res://addons/fpc/character.gd" id="1_0t4e8"]
-[ext_resource type="Script" path="res://addons/fpc/EditorModule.gd" id="3_v3ckk"]
-[ext_resource type="Script" path="res://addons/fpc/debug.gd" id="3_x1wcc"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kp17n"]
-albedo_color = Color(0.909804, 0.596078, 0, 1)
-clearcoat_enabled = true
-clearcoat_roughness = 0.2
-
-[sub_resource type="CapsuleMesh" id="CapsuleMesh_jw1de"]
-material = SubResource("StandardMaterial3D_kp17n")
-
-[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uy03j"]
-
-[sub_resource type="Animation" id="Animation_j8cx7"]
-resource_name = "RESET"
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-
-[sub_resource type="Animation" id="Animation_5ec5e"]
-resource_name = "crouch"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0), Vector3(0, 1.12508, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 2
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 2
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_5e5t5"]
-_data = {
-"RESET": SubResource("Animation_j8cx7"),
-"crouch": SubResource("Animation_5ec5e")
-}
-
-[sub_resource type="Animation" id="Animation_gh776"]
-resource_name = "RESET"
-length = 0.001
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_8ku67"]
-resource_name = "sprint"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.06, -0.25, 0, 0.25, -0.01, 0, 0, 0, 0, 0, -0.06, -0.25, 0.01, 0.25, 0.01, 0, 0, 0, 0, 0, 0.06, -0.25, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(0.05, -0.25, 0, 0.2, -0.01, 0, -0.2, 0.000186046, 0.2, 0.000186046, 0.05, -0.2, -0.01, 0.2, -0.01, 0, -0.2, 0, 0.2, 0, 0.05, -0.2, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="Animation" id="Animation_lrqmv"]
-resource_name = "walk"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, -0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, 0.04, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(-0.05, -0.25, 0, 0.2, 0.005, 0, -0.2, 0.000186046, 0.2, 0.000186046, -0.05, -0.2, 0.005, 0.2, 0.005, 0, -0.2, 0, 0.2, 0, -0.05, -0.2, 0.005, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_o0unb"]
-_data = {
-"RESET": SubResource("Animation_gh776"),
-"sprint": SubResource("Animation_8ku67"),
-"walk": SubResource("Animation_lrqmv")
-}
-
-[sub_resource type="Animation" id="Animation_fvvjq"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_s07ye"]
-resource_name = "jump"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.6, 3),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_3eyjl"]
-resource_name = "land_center"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_l1rph"]
-resource_name = "land_left"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_vsknp"]
-resource_name = "land_right"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, -0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_qeg5r"]
-_data = {
-"RESET": SubResource("Animation_fvvjq"),
-"jump": SubResource("Animation_s07ye"),
-"land_center": SubResource("Animation_3eyjl"),
-"land_left": SubResource("Animation_l1rph"),
-"land_right": SubResource("Animation_vsknp")
-}
-
-[sub_resource type="Theme" id="Theme_wdf0f"]
-MarginContainer/constants/margin_bottom = 10
-MarginContainer/constants/margin_left = 10
-MarginContainer/constants/margin_right = 10
-MarginContainer/constants/margin_top = 10
-
-[sub_resource type="SphereShape3D" id="SphereShape3D_k4wwl"]
-
-[node name="Character" type="CharacterBody3D" node_paths=PackedStringArray("HEAD", "CAMERA", "HEADBOB_ANIMATION", "JUMP_ANIMATION", "CROUCH_ANIMATION", "COLLISION_MESH")]
-transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
-script = ExtResource("1_0t4e8")
-default_reticle = "res://addons/fpc/reticles/reticle_1.tscn"
-HEAD = NodePath("Head")
-CAMERA = NodePath("Head/Camera")
-HEADBOB_ANIMATION = NodePath("Head/HeadbobAnimation")
-JUMP_ANIMATION = NodePath("Head/JumpAnimation")
-CROUCH_ANIMATION = NodePath("CrouchAnimation")
-COLLISION_MESH = NodePath("Collision")
-
-[node name="Mesh" type="MeshInstance3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-mesh = SubResource("CapsuleMesh_jw1de")
-
-[node name="Collision" type="CollisionShape3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("CapsuleShape3D_uy03j")
-
-[node name="CrouchAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_5e5t5")
-}
-
-[node name="Head" type="Node3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
-
-[node name="Camera" type="Camera3D" parent="Head"]
-
-[node name="HeadbobAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_o0unb")
-}
-blend_times = [&"RESET", &"RESET", 0.5, &"RESET", &"walk", 0.5, &"walk", &"RESET", 0.5]
-
-[node name="JumpAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_qeg5r")
-}
-speed_scale = 4.0
-
-[node name="UserInterface" type="Control" parent="."]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 1
-
-[node name="DebugPanel" type="PanelContainer" parent="UserInterface"]
-visible = false
-layout_mode = 0
-offset_left = 10.0
-offset_top = 10.0
-offset_right = 453.0
-offset_bottom = 50.0
-theme = SubResource("Theme_wdf0f")
-script = ExtResource("3_x1wcc")
-
-[node name="MarginContainer" type="MarginContainer" parent="UserInterface/DebugPanel"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="UserInterface/DebugPanel/MarginContainer"]
-layout_mode = 2
-
-[node name="CrouchCeilingDetection" type="ShapeCast3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("SphereShape3D_k4wwl")
-target_position = Vector3(0, 0.5, 0)
-
-[node name="EditorModule" type="Node" parent="."]
-script = ExtResource("3_v3ckk")
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/debug.gd b/quality-godot-first-person-2-2.6.1/addons/fpc/debug.gd
deleted file mode 100644
index efdb7a4..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/debug.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-extends PanelContainer
-
-
-func _process(delta):
- if visible:
- pass
-
-func add_property(title : String, value, order : int): # This can either be called once for a static property or called every frame for a dynamic property
- var target
- target = $MarginContainer/VBoxContainer.find_child(title, true, false) # I have no idea what true and false does here, the function should be more specific
- if !target:
- target = Label.new() # Debug lines are of type Label
- $MarginContainer/VBoxContainer.add_child(target)
- target.name = title
- target.text = title + ": " + str(value)
- elif visible:
- target.text = title + ": " + str(value)
- $MarginContainer/VBoxContainer.move_child(target, order)
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_0.tscn b/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_0.tscn
deleted file mode 100644
index 2828124..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_0.tscn
+++ /dev/null
@@ -1,37 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://coqpusufa8a6k"]
-
-[sub_resource type="GDScript" id="GDScript_10f85"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var character : CharacterBody3D
-
-@export_group(\"Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
-
-func update_reticle_settings():
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-"
-
-[node name="Reticle" type="CenterContainer"]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_10f85")
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
diff --git a/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_1.tscn b/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_1.tscn
deleted file mode 100644
index bb83b83..0000000
--- a/quality-godot-first-person-2-2.6.1/addons/fpc/reticles/reticle_1.tscn
+++ /dev/null
@@ -1,104 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://3mij3cjhkwsm"]
-
-[sub_resource type="GDScript" id="GDScript_a8kpl"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var reticle_lines : Array[Line2D]
-@export var character : CharacterBody3D
-
-@export_group(\"Animate\")
-@export var animated_reticle : bool = true
-@export var reticle_speed : float = 0.5
-@export var reticle_spread : float = 4.0
-
-@export_group(\"Dot Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-@export_group(\"Line Settings\")
-@export var line_color : Color = Color.WHITE
-@export var line_width : int = 2
-@export var line_length : int = 10
-@export var line_distance : int = 5
-@export_enum(\"None\", \"Round\") var cap_mode : int = 0
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
- if animated_reticle:
- animate_reticle_lines()
-
-
-func animate_reticle_lines():
- var vel = character.get_real_velocity()
- var origin = Vector3(0,0,0)
- var pos = Vector2(0,0)
- var speed = origin.distance_to(vel)
-
- reticle_lines[0].position = lerp(reticle_lines[0].position, pos + Vector2(0, -speed * reticle_spread), reticle_speed)
- reticle_lines[1].position = lerp(reticle_lines[1].position, pos + Vector2(-speed * reticle_spread, 0), reticle_speed)
- reticle_lines[2].position = lerp(reticle_lines[2].position, pos + Vector2(speed * reticle_spread, 0), reticle_speed)
- reticle_lines[3].position = lerp(reticle_lines[3].position, pos + Vector2(0, speed * reticle_spread), reticle_speed)
-
-
-func update_reticle_settings():
- # Dot
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-
- # Lines
- for line in reticle_lines:
- line.default_color = line_color
- line.width = line_width
- if cap_mode == 0:
- line.begin_cap_mode = Line2D.LINE_CAP_NONE
- line.end_cap_mode = Line2D.LINE_CAP_NONE
- elif cap_mode == 1:
- line.begin_cap_mode = Line2D.LINE_CAP_ROUND
- line.end_cap_mode = Line2D.LINE_CAP_ROUND
-
- # Please someone find a better way to do this
- reticle_lines[0].points[0].y = -line_distance
- reticle_lines[0].points[1].y = -line_length - line_distance
- reticle_lines[1].points[0].x = -line_distance
- reticle_lines[1].points[1].x = -line_length - line_distance
- reticle_lines[2].points[0].x = line_distance
- reticle_lines[2].points[1].x = line_length + line_distance
- reticle_lines[3].points[0].y = line_distance
- reticle_lines[3].points[1].y = line_length + line_distance
-"
-
-[node name="Reticle" type="CenterContainer" node_paths=PackedStringArray("reticle_lines")]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_a8kpl")
-reticle_lines = [NodePath("top"), NodePath("left"), NodePath("right"), NodePath("bottom")]
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
-
-[node name="top" type="Line2D" parent="."]
-points = PackedVector2Array(0, -5, 0, -15)
-width = 2.0
-
-[node name="left" type="Line2D" parent="."]
-points = PackedVector2Array(-5, 0, -15, 0)
-width = 2.0
-
-[node name="right" type="Line2D" parent="."]
-points = PackedVector2Array(5, 0, 15, 0)
-width = 2.0
-
-[node name="bottom" type="Line2D" parent="."]
-points = PackedVector2Array(0, 5, 0, 15)
-width = 2.0
diff --git a/quality-godot-first-person-2-2.6.1/icon.svg b/quality-godot-first-person-2-2.6.1/icon.svg
deleted file mode 100644
index ea6ce87..0000000
--- a/quality-godot-first-person-2-2.6.1/icon.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
diff --git a/quality-godot-first-person-2-2.6.1/icon.svg.import b/quality-godot-first-person-2-2.6.1/icon.svg.import
deleted file mode 100644
index 9e0a681..0000000
--- a/quality-godot-first-person-2-2.6.1/icon.svg.import
+++ /dev/null
@@ -1,37 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://64npoko7rqya"
-path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://icon.svg"
-dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
diff --git a/quality-godot-first-person-2-2.6.1/project.godot b/quality-godot-first-person-2-2.6.1/project.godot
deleted file mode 100644
index 4626ad9..0000000
--- a/quality-godot-first-person-2-2.6.1/project.godot
+++ /dev/null
@@ -1,65 +0,0 @@
-; Engine configuration file.
-; It's best edited using the editor UI and not directly,
-; since the parameters that go here are not all obvious.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-config_version=5
-
-[application]
-
-config/name="first person controller 2.0"
-run/main_scene="res://test_world.tscn"
-config/features=PackedStringArray("4.3", "Forward Plus")
-config/icon="res://icon.svg"
-
-[display]
-
-window/size/mode=2
-
-[input]
-
-ui_left={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
-]
-}
-ui_right={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
-]
-}
-ui_up={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
-]
-}
-ui_down={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
-]
-}
-crouch={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null)
-]
-}
-sprint={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
diff --git a/quality-godot-first-person-2-2.6.1/test_world.tscn b/quality-godot-first-person-2-2.6.1/test_world.tscn
deleted file mode 100644
index b6901b9..0000000
--- a/quality-godot-first-person-2-2.6.1/test_world.tscn
+++ /dev/null
@@ -1,106 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://cs4drhmc1bql5"]
-
-[ext_resource type="PackedScene" uid="uid://cc1m2a1obsyn4" path="res://addons/fpc/character.tscn" id="1_e18vq"]
-[ext_resource type="Texture2D" uid="uid://pe7a4weirj2g" path="res://textures/dark.png" id="2_08fdt"]
-[ext_resource type="Texture2D" uid="uid://cxjxvqmf4boxq" path="res://textures/green.png" id="3_q4clv"]
-[ext_resource type="Texture2D" uid="uid://dsv4jm4vydflb" path="res://textures/orange.png" id="4_1ns5t"]
-
-[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_edcox"]
-ground_color = Color(0.160784, 0.815686, 0.905882, 1)
-
-[sub_resource type="Sky" id="Sky_2iust"]
-sky_material = SubResource("PhysicalSkyMaterial_edcox")
-
-[sub_resource type="Environment" id="Environment_20rw3"]
-background_mode = 2
-sky = SubResource("Sky_2iust")
-tonemap_mode = 1
-ssao_enabled = true
-
-[sub_resource type="Gradient" id="Gradient_ur0vy"]
-colors = PackedColorArray(0, 0.476245, 0.0193456, 1, 0.360494, 0.612721, 0.119744, 1)
-
-[sub_resource type="FastNoiseLite" id="FastNoiseLite_jd3pw"]
-frequency = 0.0027
-
-[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_7akuf"]
-width = 1024
-height = 1024
-in_3d_space = true
-seamless = true
-color_ramp = SubResource("Gradient_ur0vy")
-noise = SubResource("FastNoiseLite_jd3pw")
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_67ysu"]
-albedo_texture = SubResource("NoiseTexture2D_7akuf")
-uv1_scale = Vector3(0.1, 0.1, 0.1)
-uv1_triplanar = true
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gomnb"]
-albedo_texture = ExtResource("2_08fdt")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u0sbk"]
-albedo_texture = ExtResource("3_q4clv")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7j4uu"]
-albedo_texture = ExtResource("4_1ns5t")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[node name="test_world" type="Node3D"]
-
-[node name="Character" parent="." instance=ExtResource("1_e18vq")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = SubResource("Environment_20rw3")
-
-[node name="sun" type="DirectionalLight3D" parent="."]
-transform = Transform3D(0.87959, -0.436605, 0.188936, 0, 0.397148, 0.917755, -0.475732, -0.807248, 0.349328, 0, 0, 0)
-light_energy = 2.0
-shadow_enabled = true
-
-[node name="terrain" type="Node3D" parent="."]
-
-[node name="CSGBox3D" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, -0.5, 10)
-use_collision = true
-size = Vector3(30, 1, 30)
-material = SubResource("StandardMaterial3D_67ysu")
-
-[node name="CSGBox3D2" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D3" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.8, -13)
-use_collision = true
-size = Vector3(4, 0.5, 4)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D4" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 0, 0, 1, -9.5, 1.2, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_u0sbk")
-
-[node name="CSGBox3D5" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 3, -15.5)
-use_collision = true
-size = Vector3(19, 8, 1)
-material = SubResource("StandardMaterial3D_7j4uu")
diff --git a/quality-godot-first-person-2-2.6.1/textures/dark.png b/quality-godot-first-person-2-2.6.1/textures/dark.png
deleted file mode 100644
index 69be211..0000000
Binary files a/quality-godot-first-person-2-2.6.1/textures/dark.png and /dev/null differ
diff --git a/quality-godot-first-person-2-2.6.1/textures/dark.png.import b/quality-godot-first-person-2-2.6.1/textures/dark.png.import
deleted file mode 100644
index 2a82a3f..0000000
--- a/quality-godot-first-person-2-2.6.1/textures/dark.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://pe7a4weirj2g"
-path.s3tc="res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/dark.png"
-dest_files=["res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-2.6.1/textures/green.png b/quality-godot-first-person-2-2.6.1/textures/green.png
deleted file mode 100644
index 7bc7cf8..0000000
Binary files a/quality-godot-first-person-2-2.6.1/textures/green.png and /dev/null differ
diff --git a/quality-godot-first-person-2-2.6.1/textures/green.png.import b/quality-godot-first-person-2-2.6.1/textures/green.png.import
deleted file mode 100644
index 7c7e044..0000000
--- a/quality-godot-first-person-2-2.6.1/textures/green.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cxjxvqmf4boxq"
-path.s3tc="res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/green.png"
-dest_files=["res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-2.6.1/textures/orange.png b/quality-godot-first-person-2-2.6.1/textures/orange.png
deleted file mode 100644
index dec5b59..0000000
Binary files a/quality-godot-first-person-2-2.6.1/textures/orange.png and /dev/null differ
diff --git a/quality-godot-first-person-2-2.6.1/textures/orange.png.import b/quality-godot-first-person-2-2.6.1/textures/orange.png.import
deleted file mode 100644
index 311f8ac..0000000
--- a/quality-godot-first-person-2-2.6.1/textures/orange.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dsv4jm4vydflb"
-path.s3tc="res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/orange.png"
-dest_files=["res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-2.6.1/textures/purple.png b/quality-godot-first-person-2-2.6.1/textures/purple.png
deleted file mode 100644
index 48a51c1..0000000
Binary files a/quality-godot-first-person-2-2.6.1/textures/purple.png and /dev/null differ
diff --git a/quality-godot-first-person-2-2.6.1/textures/purple.png.import b/quality-godot-first-person-2-2.6.1/textures/purple.png.import
deleted file mode 100644
index 9dc0969..0000000
--- a/quality-godot-first-person-2-2.6.1/textures/purple.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cl4kewig3pk7s"
-path="res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/purple.png"
-dest_files=["res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/quality-godot-first-person-2-2.6.1/textures/red.png b/quality-godot-first-person-2-2.6.1/textures/red.png
deleted file mode 100644
index bf1cb17..0000000
Binary files a/quality-godot-first-person-2-2.6.1/textures/red.png and /dev/null differ
diff --git a/quality-godot-first-person-2-2.6.1/textures/red.png.import b/quality-godot-first-person-2-2.6.1/textures/red.png.import
deleted file mode 100644
index c8c15aa..0000000
--- a/quality-godot-first-person-2-2.6.1/textures/red.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d1h161t0v6hau"
-path="res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/red.png"
-dest_files=["res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/quality-godot-first-person-2-main/.gitattributes b/quality-godot-first-person-2-main/.gitattributes
deleted file mode 100644
index 8ad74f7..0000000
--- a/quality-godot-first-person-2-main/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Normalize EOL for all files that Git considers text files.
-* text=auto eol=lf
diff --git a/quality-godot-first-person-2-main/.gitignore b/quality-godot-first-person-2-main/.gitignore
deleted file mode 100644
index 4709183..0000000
--- a/quality-godot-first-person-2-main/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Godot 4+ specific ignores
-.godot/
diff --git a/quality-godot-first-person-2-main/LICENSE b/quality-godot-first-person-2-main/LICENSE
deleted file mode 100644
index f34733d..0000000
--- a/quality-godot-first-person-2-main/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Colormatic
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/quality-godot-first-person-2-main/README.md b/quality-godot-first-person-2-main/README.md
deleted file mode 100644
index 0acb1cb..0000000
--- a/quality-godot-first-person-2-main/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# quality-godot-first-person-2
-Actually good first person controller for the Godot Engine.
-MIT License (credit Colormatic Studios)
-
-This first person controller was made because there aren't many first person controllers for Godot, and the ones that do exist are pretty bad.
-It is highly customizable and comes with many features, QOL, and clean code.
-
-Some parts came from StayAtHomeDev's FPS tutorial. You can find that [here](https://www.youtube.com/playlist?list=PLEHvj4yeNfeF6s-UVs5Zx5TfNYmeCiYwf).
-
-# Directions
-Move with WASD, space to jump, shift to sprint, C to crouch.
-
-**FEATURES:**
-- Extremely configurable
-- In-air momentum
-- Motion smoothing
-- FOV smoothing
-- Movement animations
-- Crouching
-- Sprinting
-- 2 crosshairs/reticles, one is animated (more to come?)
-- Controller/GamePad support (enabled through code, see wiki)
-- In-editor tools (enable editable children to use)
-
-If you make a cool game with this addon, I would love to hear about it!
-
-# Wiki
-**To start out**, you should probably remap all of the movement keys to your own control set.
-
-You can make this a super basic controller by just disabling everything.
-
-**How to add controller/GamePad support**
-- In the controls export group, there is a commented section at the end that says "Uncomment this if you want full controller support". Uncomment that block.
-- Make a key map for each direction (left, right, up, down) and map them to your joystick.
-- Write in these keymaps in the controls section of the player settings.
-- In the `handle_head_rotation` function, there is another block of commented code that says the same thing. Uncomment that too.
-- You should now be able to look around with the joystick. Make sure you add the other controls to the input map. (movement, jumping, crouching, sprinting, etc.)
-
-**Slope/staircase:**
-Credit to [roberto-urbani23](https://github.com/roberto-urbani23)
-In the character inspector, you can uncheck Stop on Slope and set the max angle to 89 (for some reason, 90 will make the player stuck). Also Snap Length to 1 otherwise your character will not remain attached to stairs if you sprint while going downstairs.
-
-**How to change settings:**
-Click on the character node and there should be settings in the "Feature Settings" group.
-
-**How to add animations for a mesh:**
-- Create a function for your animation and attach it to `_physics_process` to call it every frame.
-- Use `input_dir` as a boolean (it is actually a `Vector2`) to know if the player is walking.
-- Use the `state` member variable to tell if the player is sprinting or crouching.
-- Use the `is_on_floor` function to tell if the player is standing or falling.
-
-**How to change reticles (crosshairs):**
-Change the "Default Reticle" setting to your reticle file.
-During runtime:
-Use the `change_reticle` function on the character.
-
-**How to create a new reticle:**
-- Choose a reticle to base it off of.
-- Open that reticle and save it as a new reticle.
-- Remove the script from the reticle and create a new one. (for some reason you have to do this)
-- Edit the reticle to your needs.
-- Follow the "how to change reticles" directions to use it.
-
-**How to use the editor tools:**
-- Enable editable children on the `CharacterBody` node
-- Use the options in the Properties tab to change things
-- These changes apply in runtime as well
diff --git a/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd b/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd
deleted file mode 100644
index 0a3a74f..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/EditorModule.gd
+++ /dev/null
@@ -1,49 +0,0 @@
-@tool
-extends Node
-
-# This does not effect runtime yet but will in the future.
-
-@export_category("Controller Editor Module")
-@export_range(-360.0, 360.0, 0.01, "or_greater", "or_less") var head_y_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_y_rotation = new_rotation
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- update_configuration_warnings()
-@export_range(-90.0, 90.0, 0.01, "or_greater", "or_less") var head_x_rotation : float = 0.0:
- set(new_rotation):
- if HEAD:
- head_x_rotation = new_rotation
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
- update_configuration_warnings()
-
-@export_group("Nodes")
-@export var CHARACTER : CharacterBody3D
-@export var head_path : String = "Head" # Relative to the parent node
-#@export var CAMERA : Camera3D
-#@export var HEADBOB_ANIMATION : AnimationPlayer
-#@export var JUMP_ANIMATION : AnimationPlayer
-#@export var CROUCH_ANIMATION : AnimationPlayer
-#@export var COLLISION_MESH : CollisionShape3D
-
-@onready var HEAD = get_node("../" + head_path)
-
-
-func _ready():
- if !Engine.is_editor_hint():
- #print("not editor")
- HEAD.rotation.y = deg_to_rad(head_y_rotation)
- HEAD.rotation.x = deg_to_rad(head_x_rotation)
-
-
-func _get_configuration_warnings():
- var warnings = []
-
- if head_y_rotation > 360:
- warnings.append("The head rotation is greater than 360")
-
- if head_y_rotation < -360:
- warnings.append("The head rotation is less than -360")
-
- # Returning an empty array gives no warnings
- return warnings
diff --git a/quality-godot-first-person-2-main/addons/fpc/character.gd b/quality-godot-first-person-2-main/addons/fpc/character.gd
deleted file mode 100644
index 5a5f7f7..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/character.gd
+++ /dev/null
@@ -1,488 +0,0 @@
-# COPYRIGHT Colormatic Studios
-# MIT license
-# Quality Godot First Person Controller v2
-
-
-extends CharacterBody3D
-
-
-#region Character Export Group
-
-## The settings for the character's movement and feel.
-@export_category("Character")
-## The speed that the character moves at without crouching or sprinting.
-@export var base_speed : float = 3.0
-## The speed that the character moves at when sprinting.
-@export var sprint_speed : float = 6.0
-## The speed that the character moves at when crouching.
-@export var crouch_speed : float = 1.0
-
-## How fast the character speeds up and slows down when Motion Smoothing is on.
-@export var acceleration : float = 10.0
-## How high the player jumps.
-@export var jump_velocity : float = 4.5
-## How far the player turns when the mouse is moved.
-@export var mouse_sensitivity : float = 0.1
-## Invert the X axis input for the camera.
-@export var invert_camera_x_axis : bool = false
-## Invert the Y axis input for the camera.
-@export var invert_camera_y_axis : bool = false
-## Whether the player can use movement inputs. Does not stop outside forces or jumping. See Jumping Enabled.
-@export var immobile : bool = false
-## The reticle file to import at runtime. By default are in res://addons/fpc/reticles/. Set to an empty string to remove.
-@export_file var default_reticle
-
-#endregion
-
-#region Nodes Export Group
-
-@export_group("Nodes")
-## A reference to the camera for use in the character script. This is the parent node to the camera and is rotated instead of the camera for mouse input.
-@export var HEAD : Node3D
-## A reference to the camera for use in the character script.
-@export var CAMERA : Camera3D
-## A reference to the headbob animation for use in the character script.
-@export var HEADBOB_ANIMATION : AnimationPlayer
-## A reference to the jump animation for use in the character script.
-@export var JUMP_ANIMATION : AnimationPlayer
-## A reference to the crouch animation for use in the character script.
-@export var CROUCH_ANIMATION : AnimationPlayer
-## A reference to the the player's collision shape for use in the character script.
-@export var COLLISION_MESH : CollisionShape3D
-
-#endregion
-
-#region Controls Export Group
-
-# We are using UI controls because they are built into Godot Engine so they can be used right away
-@export_group("Controls")
-## Use the Input Map to map a mouse/keyboard input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controls : Dictionary = {
- LEFT = "ui_left",
- RIGHT = "ui_right",
- FORWARD = "ui_up",
- BACKWARD = "ui_down",
- JUMP = "ui_accept",
- CROUCH = "crouch",
- SPRINT = "sprint",
- PAUSE = "ui_cancel"
- }
-@export_subgroup("Controller Specific")
-## This only affects how the camera is handled, the rest should be covered by adding controller inputs to the existing actions in the Input Map.
-@export var controller_support : bool = false
-## Use the Input Map to map a controller input to an action and add a reference to it to this dictionary to be used in the script.
-@export var controller_controls : Dictionary = {
- LOOK_LEFT = "look_left",
- LOOK_RIGHT = "look_right",
- LOOK_UP = "look_up",
- LOOK_DOWN = "look_down"
- }
-## The sensitivity of the analog stick that controls camera rotation. Lower is less sensitive and higher is more sensitive.
-@export_range(0.001, 1, 0.001) var look_sensitivity : float = 0.035
-
-#endregion
-
-#region Feature Settings Export Group
-
-@export_group("Feature Settings")
-## Enable or disable jumping. Useful for restrictive storytelling environments.
-@export var jumping_enabled : bool = true
-## Whether the player can move in the air or not.
-@export var in_air_momentum : bool = true
-## Smooths the feel of walking.
-@export var motion_smoothing : bool = true
-## Enables or disables sprinting.
-@export var sprint_enabled : bool = true
-## Toggles the sprinting state when button is pressed or requires the player to hold the button down to remain sprinting.
-@export_enum("Hold to Sprint", "Toggle Sprint") var sprint_mode : int = 0
-## Enables or disables crouching.
-@export var crouch_enabled : bool = true
-## Toggles the crouch state when button is pressed or requires the player to hold the button down to remain crouched.
-@export_enum("Hold to Crouch", "Toggle Crouch") var crouch_mode : int = 0
-## Wether sprinting should effect FOV.
-@export var dynamic_fov : bool = true
-## If the player holds down the jump button, should the player keep hopping.
-@export var continuous_jumping : bool = true
-## Enables the view bobbing animation.
-@export var view_bobbing : bool = true
-## Enables an immersive animation when the player jumps and hits the ground.
-@export var jump_animation : bool = true
-## This determines wether the player can use the pause button, not wether the game will actually pause.
-@export var pausing_enabled : bool = true
-## Use with caution.
-@export var gravity_enabled : bool = true
-## If your game changes the gravity value during gameplay, check this property to allow the player to experience the change in gravity.
-@export var dynamic_gravity : bool = false
-
-#endregion
-
-#region Member Variable Initialization
-
-# These are variables used in this script that don't need to be exposed in the editor.
-var speed : float = base_speed
-var current_speed : float = 0.0
-# States: normal, crouching, sprinting
-var state : String = "normal"
-var low_ceiling : bool = false # This is for when the ceiling is too low and the player needs to crouch.
-var was_on_floor : bool = true # Was the player on the floor last frame (for landing animation)
-
-# The reticle should always have a Control node as the root
-var RETICLE : Control
-
-# Get the gravity from the project settings to be synced with RigidBody nodes
-var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity") # Don't set this as a const, see the gravity section in _physics_process
-
-# Stores mouse input for rotating the camera in the physics process
-var mouseInput : Vector2 = Vector2(0,0)
-
-#endregion
-
-
-
-#region Main Control Flow
-
-func _ready():
- #It is safe to comment this line if your game doesn't start with the mouse captured
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
-
- # If the controller is rotated in a certain direction for game design purposes, redirect this rotation into the head.
- HEAD.rotation.y = rotation.y
- rotation.y = 0
-
- if default_reticle:
- change_reticle(default_reticle)
-
- initialize_animations()
- check_controls()
- enter_normal_state()
-
-
-func _process(_delta):
- if pausing_enabled:
- handle_pausing()
-
- update_debug_menu_per_frame()
-
-
-func _physics_process(delta): # Most things happen here.
- # Gravity
- if dynamic_gravity:
- gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
- if not is_on_floor() and gravity and gravity_enabled:
- velocity.y -= gravity * delta
-
- handle_jumping()
-
- var input_dir = Vector2.ZERO
-
- if not immobile: # Immobility works by interrupting user input, so other forces can still be applied to the player
- input_dir = Input.get_vector(controls.LEFT, controls.RIGHT, controls.FORWARD, controls.BACKWARD)
-
- handle_movement(delta, input_dir)
-
- handle_head_rotation()
-
- # The player is not able to stand up if the ceiling is too low
- low_ceiling = $CrouchCeilingDetection.is_colliding()
-
- handle_state(input_dir)
- if dynamic_fov: # This may be changed to an AnimationPlayer
- update_camera_fov()
-
- if view_bobbing:
- play_headbob_animation(input_dir)
-
- if jump_animation:
- play_jump_animation()
-
- update_debug_menu_per_tick()
-
- was_on_floor = is_on_floor() # This must always be at the end of physics_process
-
-#endregion
-
-#region Input Handling
-
-func handle_jumping():
- if jumping_enabled:
- if continuous_jumping: # Hold down the jump button
- if Input.is_action_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity # Adding instead of setting so jumping on slopes works properly
- else:
- if Input.is_action_just_pressed(controls.JUMP) and is_on_floor() and !low_ceiling:
- if jump_animation:
- JUMP_ANIMATION.play("jump", 0.25)
- velocity.y += jump_velocity
-
-
-func handle_movement(delta, input_dir):
- var direction = input_dir.rotated(-HEAD.rotation.y)
- direction = Vector3(direction.x, 0, direction.y)
- move_and_slide()
-
- if in_air_momentum:
- if is_on_floor():
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
- else:
- if motion_smoothing:
- velocity.x = lerp(velocity.x, direction.x * speed, acceleration * delta)
- velocity.z = lerp(velocity.z, direction.z * speed, acceleration * delta)
- else:
- velocity.x = direction.x * speed
- velocity.z = direction.z * speed
-
-
-func handle_head_rotation():
- if invert_camera_x_axis:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity
-
- if invert_camera_y_axis:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity * -1
- else:
- HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity
-
- if controller_support:
- var controller_view_rotation = Input.get_vector(controller_controls.LOOK_DOWN, controller_controls.LOOK_UP, controller_controls.LOOK_RIGHT, controller_controls.LOOK_LEFT) * look_sensitivity # These are inverted because of the nature of 3D rotation.
- if invert_camera_x_axis:
- HEAD.rotation.x += controller_view_rotation.x * -1
- else:
- HEAD.rotation.x += controller_view_rotation.x
-
- if invert_camera_y_axis:
- HEAD.rotation.y += controller_view_rotation.y * -1
- else:
- HEAD.rotation.y += controller_view_rotation.y
-
- mouseInput = Vector2(0,0)
- HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
-
-
-func check_controls(): # If you add a control, you might want to add a check for it here.
- # The actions are being disabled so the engine doesn't halt the entire project in debug mode
- if !InputMap.has_action(controls.JUMP):
- push_error("No control mapped for jumping. Please add an input map control. Disabling jump.")
- jumping_enabled = false
- if !InputMap.has_action(controls.LEFT):
- push_error("No control mapped for move left. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.RIGHT):
- push_error("No control mapped for move right. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.FORWARD):
- push_error("No control mapped for move forward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.BACKWARD):
- push_error("No control mapped for move backward. Please add an input map control. Disabling movement.")
- immobile = true
- if !InputMap.has_action(controls.PAUSE):
- push_error("No control mapped for pause. Please add an input map control. Disabling pausing.")
- pausing_enabled = false
- if !InputMap.has_action(controls.CROUCH):
- push_error("No control mapped for crouch. Please add an input map control. Disabling crouching.")
- crouch_enabled = false
- if !InputMap.has_action(controls.SPRINT):
- push_error("No control mapped for sprint. Please add an input map control. Disabling sprinting.")
- sprint_enabled = false
-
-#endregion
-
-#region State Handling
-
-func handle_state(moving):
- if sprint_enabled:
- if sprint_mode == 0:
- if Input.is_action_pressed(controls.SPRINT) and state != "crouching":
- if moving:
- if state != "sprinting":
- enter_sprint_state()
- else:
- if state == "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
- elif sprint_mode == 1:
- if moving:
- # If the player is holding sprint before moving, handle that scenario
- if Input.is_action_pressed(controls.SPRINT) and state == "normal":
- enter_sprint_state()
- if Input.is_action_just_pressed(controls.SPRINT):
- match state:
- "normal":
- enter_sprint_state()
- "sprinting":
- enter_normal_state()
- elif state == "sprinting":
- enter_normal_state()
-
- if crouch_enabled:
- if crouch_mode == 0:
- if Input.is_action_pressed(controls.CROUCH) and state != "sprinting":
- if state != "crouching":
- enter_crouch_state()
- elif state == "crouching" and !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
- elif crouch_mode == 1:
- if Input.is_action_just_pressed(controls.CROUCH):
- match state:
- "normal":
- enter_crouch_state()
- "crouching":
- if !$CrouchCeilingDetection.is_colliding():
- enter_normal_state()
-
-
-# Any enter state function should only be called once when you want to enter that state, not every frame.
-func enter_normal_state():
- #print("entering normal state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "normal"
- speed = base_speed
-
-func enter_crouch_state():
- #print("entering crouch state")
- state = "crouching"
- speed = crouch_speed
- CROUCH_ANIMATION.play("crouch")
-
-func enter_sprint_state():
- #print("entering sprint state")
- var prev_state = state
- if prev_state == "crouching":
- CROUCH_ANIMATION.play_backwards("crouch")
- state = "sprinting"
- speed = sprint_speed
-
-#endregion
-
-#region Animation Handling
-
-func initialize_animations():
- # Reset the camera position
- # If you want to change the default head height, change these animations.
- HEADBOB_ANIMATION.play("RESET")
- JUMP_ANIMATION.play("RESET")
- CROUCH_ANIMATION.play("RESET")
-
-func play_headbob_animation(moving):
- if moving and is_on_floor():
- var use_headbob_animation : String
- match state:
- "normal","crouching":
- use_headbob_animation = "walk"
- "sprinting":
- use_headbob_animation = "sprint"
-
- var was_playing : bool = false
- if HEADBOB_ANIMATION.current_animation == use_headbob_animation:
- was_playing = true
-
- HEADBOB_ANIMATION.play(use_headbob_animation, 0.25)
- HEADBOB_ANIMATION.speed_scale = (current_speed / base_speed) * 1.75
- if !was_playing:
- HEADBOB_ANIMATION.seek(float(randi() % 2)) # Randomize the initial headbob direction
- # Let me explain that piece of code because it looks like it does the opposite of what it actually does.
- # The headbob animation has two starting positions. One is at 0 and the other is at 1.
- # randi() % 2 returns either 0 or 1, and so the animation randomly starts at one of the starting positions.
- # This code is extremely performant but it makes no sense.
-
- else:
- if HEADBOB_ANIMATION.current_animation == "sprint" or HEADBOB_ANIMATION.current_animation == "walk":
- HEADBOB_ANIMATION.speed_scale = 1
- HEADBOB_ANIMATION.play("RESET", 1)
-
-func play_jump_animation():
- if !was_on_floor and is_on_floor(): # The player just landed
- var facing_direction : Vector3 = CAMERA.get_global_transform().basis.x
- var facing_direction_2D : Vector2 = Vector2(facing_direction.x, facing_direction.z).normalized()
- var velocity_2D : Vector2 = Vector2(velocity.x, velocity.z).normalized()
-
- # Compares velocity direction against the camera direction (via dot product) to determine which landing animation to play.
- var side_landed : int = round(velocity_2D.dot(facing_direction_2D))
-
- if side_landed > 0:
- JUMP_ANIMATION.play("land_right", 0.25)
- elif side_landed < 0:
- JUMP_ANIMATION.play("land_left", 0.25)
- else:
- JUMP_ANIMATION.play("land_center", 0.25)
-
-#endregion
-
-#region Debug Menu
-
-func update_debug_menu_per_frame():
- $UserInterface/DebugPanel.add_property("FPS", Performance.get_monitor(Performance.TIME_FPS), 0)
- var status : String = state
- if !is_on_floor():
- status += " in the air"
- $UserInterface/DebugPanel.add_property("State", status, 4)
-
-
-func update_debug_menu_per_tick():
- # Big thanks to github.com/LorenzoAncora for the concept of the improved debug values
- current_speed = Vector3.ZERO.distance_to(get_real_velocity())
- $UserInterface/DebugPanel.add_property("Speed", snappedf(current_speed, 0.001), 1)
- $UserInterface/DebugPanel.add_property("Target speed", speed, 2)
- var cv : Vector3 = get_real_velocity()
- var vd : Array[float] = [
- snappedf(cv.x, 0.001),
- snappedf(cv.y, 0.001),
- snappedf(cv.z, 0.001)
- ]
- var readable_velocity : String = "X: " + str(vd[0]) + " Y: " + str(vd[1]) + " Z: " + str(vd[2])
- $UserInterface/DebugPanel.add_property("Velocity", readable_velocity, 3)
-
-
-func _unhandled_input(event : InputEvent):
- if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
- mouseInput.x += event.relative.x
- mouseInput.y += event.relative.y
- # Toggle debug menu
- elif event is InputEventKey:
- if event.is_released():
- # Where we're going, we don't need InputMap
- if event.keycode == 4194338: # F7
- $UserInterface/DebugPanel.visible = !$UserInterface/DebugPanel.visible
-
-#endregion
-
-#region Misc Functions
-
-func change_reticle(reticle): # Yup, this function is kinda strange
- if RETICLE:
- RETICLE.queue_free()
-
- RETICLE = load(reticle).instantiate()
- RETICLE.character = self
- $UserInterface.add_child(RETICLE)
-
-
-func update_camera_fov():
- if state == "sprinting":
- CAMERA.fov = lerp(CAMERA.fov, 85.0, 0.3)
- else:
- CAMERA.fov = lerp(CAMERA.fov, 75.0, 0.3)
-
-func handle_pausing():
- if Input.is_action_just_pressed(controls.PAUSE):
- # You may want another node to handle pausing, because this player may get paused too.
- match Input.mouse_mode:
- Input.MOUSE_MODE_CAPTURED:
- Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
- #get_tree().paused = false
- Input.MOUSE_MODE_VISIBLE:
- Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
- #get_tree().paused = false
-
-#endregion
diff --git a/quality-godot-first-person-2-main/addons/fpc/character.tscn b/quality-godot-first-person-2-main/addons/fpc/character.tscn
deleted file mode 100644
index 3cfd7c8..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/character.tscn
+++ /dev/null
@@ -1,455 +0,0 @@
-[gd_scene load_steps=22 format=3 uid="uid://cc1m2a1obsyn4"]
-
-[ext_resource type="Script" path="res://addons/fpc/character.gd" id="1_0t4e8"]
-[ext_resource type="Script" path="res://addons/fpc/EditorModule.gd" id="3_v3ckk"]
-[ext_resource type="Script" path="res://addons/fpc/debug.gd" id="3_x1wcc"]
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kp17n"]
-albedo_color = Color(0.909804, 0.596078, 0, 1)
-clearcoat_enabled = true
-clearcoat_roughness = 0.2
-
-[sub_resource type="CapsuleMesh" id="CapsuleMesh_jw1de"]
-material = SubResource("StandardMaterial3D_kp17n")
-
-[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uy03j"]
-
-[sub_resource type="Animation" id="Animation_j8cx7"]
-resource_name = "RESET"
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-
-[sub_resource type="Animation" id="Animation_5ec5e"]
-resource_name = "crouch"
-length = 0.2
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Mesh:position")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Collision:position")
-tracks/1/interp = 2
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1, 0), Vector3(0, 0.75, 0)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Head:position")
-tracks/2/interp = 2
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Vector3(0, 1.5, 0), Vector3(0, 1.12508, 0)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Mesh:mesh:height")
-tracks/3/interp = 2
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Collision:shape:height")
-tracks/4/interp = 2
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [2.0, 1.5]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_5e5t5"]
-_data = {
-"RESET": SubResource("Animation_j8cx7"),
-"crouch": SubResource("Animation_5ec5e")
-}
-
-[sub_resource type="Animation" id="Animation_gh776"]
-resource_name = "RESET"
-length = 0.001
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_8ku67"]
-resource_name = "sprint"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.06, -0.25, 0, 0.25, -0.01, 0, 0, 0, 0, 0, -0.06, -0.25, 0.01, 0.25, 0.01, 0, 0, 0, 0, 0, 0.06, -0.25, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(0.05, -0.25, 0, 0.2, -0.01, 0, -0.2, 0.000186046, 0.2, 0.000186046, 0.05, -0.2, -0.01, 0.2, -0.01, 0, -0.2, 0, 0.2, 0, 0.05, -0.2, -0.01, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="Animation" id="Animation_lrqmv"]
-resource_name = "walk"
-length = 2.0
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:position:x")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 1, 0, 1, 0),
-"points": PackedFloat32Array(0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, -0.04, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, 0.04, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-tracks/1/type = "bezier"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position:y")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
-"points": PackedFloat32Array(-0.05, -0.25, 0, 0.2, 0.005, 0, -0.2, 0.000186046, 0.2, 0.000186046, -0.05, -0.2, 0.005, 0.2, 0.005, 0, -0.2, 0, 0.2, 0, -0.05, -0.2, 0.005, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_o0unb"]
-_data = {
-"RESET": SubResource("Animation_gh776"),
-"sprint": SubResource("Animation_8ku67"),
-"walk": SubResource("Animation_lrqmv")
-}
-
-[sub_resource type="Animation" id="Animation_fvvjq"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_s07ye"]
-resource_name = "jump"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.6, 3),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_3eyjl"]
-resource_name = "land_center"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_l1rph"]
-resource_name = "land_left"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, 0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_vsknp"]
-resource_name = "land_right"
-length = 1.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera:rotation")
-tracks/0/interp = 2
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(-0.0349066, 0, -0.0174533), Vector3(0, 0, 0)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Camera:position")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.5, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_qeg5r"]
-_data = {
-"RESET": SubResource("Animation_fvvjq"),
-"jump": SubResource("Animation_s07ye"),
-"land_center": SubResource("Animation_3eyjl"),
-"land_left": SubResource("Animation_l1rph"),
-"land_right": SubResource("Animation_vsknp")
-}
-
-[sub_resource type="Theme" id="Theme_wdf0f"]
-MarginContainer/constants/margin_bottom = 10
-MarginContainer/constants/margin_left = 10
-MarginContainer/constants/margin_right = 10
-MarginContainer/constants/margin_top = 10
-
-[sub_resource type="SphereShape3D" id="SphereShape3D_k4wwl"]
-
-[node name="Character" type="CharacterBody3D" node_paths=PackedStringArray("HEAD", "CAMERA", "HEADBOB_ANIMATION", "JUMP_ANIMATION", "CROUCH_ANIMATION", "COLLISION_MESH")]
-transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
-script = ExtResource("1_0t4e8")
-default_reticle = "res://addons/fpc/reticles/reticle_1.tscn"
-HEAD = NodePath("Head")
-CAMERA = NodePath("Head/Camera")
-HEADBOB_ANIMATION = NodePath("Head/HeadbobAnimation")
-JUMP_ANIMATION = NodePath("Head/JumpAnimation")
-CROUCH_ANIMATION = NodePath("CrouchAnimation")
-COLLISION_MESH = NodePath("Collision")
-
-[node name="Mesh" type="MeshInstance3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-mesh = SubResource("CapsuleMesh_jw1de")
-
-[node name="Collision" type="CollisionShape3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("CapsuleShape3D_uy03j")
-
-[node name="CrouchAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_5e5t5")
-}
-
-[node name="Head" type="Node3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
-
-[node name="Camera" type="Camera3D" parent="Head"]
-
-[node name="HeadbobAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_o0unb")
-}
-blend_times = [&"RESET", &"RESET", 0.5, &"RESET", &"walk", 0.5, &"walk", &"RESET", 0.5]
-
-[node name="JumpAnimation" type="AnimationPlayer" parent="Head"]
-libraries = {
-"": SubResource("AnimationLibrary_qeg5r")
-}
-speed_scale = 4.0
-
-[node name="UserInterface" type="Control" parent="."]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 1
-
-[node name="DebugPanel" type="PanelContainer" parent="UserInterface"]
-visible = false
-layout_mode = 0
-offset_left = 10.0
-offset_top = 10.0
-offset_right = 453.0
-offset_bottom = 50.0
-theme = SubResource("Theme_wdf0f")
-script = ExtResource("3_x1wcc")
-
-[node name="MarginContainer" type="MarginContainer" parent="UserInterface/DebugPanel"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="UserInterface/DebugPanel/MarginContainer"]
-layout_mode = 2
-
-[node name="CrouchCeilingDetection" type="ShapeCast3D" parent="."]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-shape = SubResource("SphereShape3D_k4wwl")
-target_position = Vector3(0, 0.5, 0)
-
-[node name="EditorModule" type="Node" parent="."]
-script = ExtResource("3_v3ckk")
diff --git a/quality-godot-first-person-2-main/addons/fpc/debug.gd b/quality-godot-first-person-2-main/addons/fpc/debug.gd
deleted file mode 100644
index efdb7a4..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/debug.gd
+++ /dev/null
@@ -1,18 +0,0 @@
-extends PanelContainer
-
-
-func _process(delta):
- if visible:
- pass
-
-func add_property(title : String, value, order : int): # This can either be called once for a static property or called every frame for a dynamic property
- var target
- target = $MarginContainer/VBoxContainer.find_child(title, true, false) # I have no idea what true and false does here, the function should be more specific
- if !target:
- target = Label.new() # Debug lines are of type Label
- $MarginContainer/VBoxContainer.add_child(target)
- target.name = title
- target.text = title + ": " + str(value)
- elif visible:
- target.text = title + ": " + str(value)
- $MarginContainer/VBoxContainer.move_child(target, order)
diff --git a/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn b/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn
deleted file mode 100644
index 2828124..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_0.tscn
+++ /dev/null
@@ -1,37 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://coqpusufa8a6k"]
-
-[sub_resource type="GDScript" id="GDScript_10f85"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var character : CharacterBody3D
-
-@export_group(\"Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
-
-func update_reticle_settings():
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-"
-
-[node name="Reticle" type="CenterContainer"]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_10f85")
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
diff --git a/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn b/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn
deleted file mode 100644
index bb83b83..0000000
--- a/quality-godot-first-person-2-main/addons/fpc/reticles/reticle_1.tscn
+++ /dev/null
@@ -1,104 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://3mij3cjhkwsm"]
-
-[sub_resource type="GDScript" id="GDScript_a8kpl"]
-script/source = "extends CenterContainer
-
-
-@export_category(\"Reticle\")
-@export_group(\"Nodes\")
-@export var reticle_lines : Array[Line2D]
-@export var character : CharacterBody3D
-
-@export_group(\"Animate\")
-@export var animated_reticle : bool = true
-@export var reticle_speed : float = 0.5
-@export var reticle_spread : float = 4.0
-
-@export_group(\"Dot Settings\")
-@export var dot_size : int = 1
-@export var dot_color : Color = Color.WHITE
-
-@export_group(\"Line Settings\")
-@export var line_color : Color = Color.WHITE
-@export var line_width : int = 2
-@export var line_length : int = 10
-@export var line_distance : int = 5
-@export_enum(\"None\", \"Round\") var cap_mode : int = 0
-
-
-func _process(_delta):
- if visible: # If the reticle is disabled (not visible), don't bother updating it
- update_reticle_settings()
- if animated_reticle:
- animate_reticle_lines()
-
-
-func animate_reticle_lines():
- var vel = character.get_real_velocity()
- var origin = Vector3(0,0,0)
- var pos = Vector2(0,0)
- var speed = origin.distance_to(vel)
-
- reticle_lines[0].position = lerp(reticle_lines[0].position, pos + Vector2(0, -speed * reticle_spread), reticle_speed)
- reticle_lines[1].position = lerp(reticle_lines[1].position, pos + Vector2(-speed * reticle_spread, 0), reticle_speed)
- reticle_lines[2].position = lerp(reticle_lines[2].position, pos + Vector2(speed * reticle_spread, 0), reticle_speed)
- reticle_lines[3].position = lerp(reticle_lines[3].position, pos + Vector2(0, speed * reticle_spread), reticle_speed)
-
-
-func update_reticle_settings():
- # Dot
- $dot.scale.x = dot_size
- $dot.scale.y = dot_size
- $dot.color = dot_color
-
- # Lines
- for line in reticle_lines:
- line.default_color = line_color
- line.width = line_width
- if cap_mode == 0:
- line.begin_cap_mode = Line2D.LINE_CAP_NONE
- line.end_cap_mode = Line2D.LINE_CAP_NONE
- elif cap_mode == 1:
- line.begin_cap_mode = Line2D.LINE_CAP_ROUND
- line.end_cap_mode = Line2D.LINE_CAP_ROUND
-
- # Please someone find a better way to do this
- reticle_lines[0].points[0].y = -line_distance
- reticle_lines[0].points[1].y = -line_length - line_distance
- reticle_lines[1].points[0].x = -line_distance
- reticle_lines[1].points[1].x = -line_length - line_distance
- reticle_lines[2].points[0].x = line_distance
- reticle_lines[2].points[1].x = line_length + line_distance
- reticle_lines[3].points[0].y = line_distance
- reticle_lines[3].points[1].y = line_length + line_distance
-"
-
-[node name="Reticle" type="CenterContainer" node_paths=PackedStringArray("reticle_lines")]
-anchors_preset = 8
-anchor_left = 0.5
-anchor_top = 0.5
-anchor_right = 0.5
-anchor_bottom = 0.5
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_a8kpl")
-reticle_lines = [NodePath("top"), NodePath("left"), NodePath("right"), NodePath("bottom")]
-
-[node name="dot" type="Polygon2D" parent="."]
-polygon = PackedVector2Array(-1, -1, 1, -1, 1, 1, -1, 1)
-
-[node name="top" type="Line2D" parent="."]
-points = PackedVector2Array(0, -5, 0, -15)
-width = 2.0
-
-[node name="left" type="Line2D" parent="."]
-points = PackedVector2Array(-5, 0, -15, 0)
-width = 2.0
-
-[node name="right" type="Line2D" parent="."]
-points = PackedVector2Array(5, 0, 15, 0)
-width = 2.0
-
-[node name="bottom" type="Line2D" parent="."]
-points = PackedVector2Array(0, 5, 0, 15)
-width = 2.0
diff --git a/quality-godot-first-person-2-main/icon.svg b/quality-godot-first-person-2-main/icon.svg
deleted file mode 100644
index ea6ce87..0000000
--- a/quality-godot-first-person-2-main/icon.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
diff --git a/quality-godot-first-person-2-main/icon.svg.import b/quality-godot-first-person-2-main/icon.svg.import
deleted file mode 100644
index 9e0a681..0000000
--- a/quality-godot-first-person-2-main/icon.svg.import
+++ /dev/null
@@ -1,37 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://64npoko7rqya"
-path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://icon.svg"
-dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
-svg/scale=1.0
-editor/scale_with_editor_scale=false
-editor/convert_colors_with_editor_theme=false
diff --git a/quality-godot-first-person-2-main/project.godot b/quality-godot-first-person-2-main/project.godot
deleted file mode 100644
index 4626ad9..0000000
--- a/quality-godot-first-person-2-main/project.godot
+++ /dev/null
@@ -1,65 +0,0 @@
-; Engine configuration file.
-; It's best edited using the editor UI and not directly,
-; since the parameters that go here are not all obvious.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-config_version=5
-
-[application]
-
-config/name="first person controller 2.0"
-run/main_scene="res://test_world.tscn"
-config/features=PackedStringArray("4.3", "Forward Plus")
-config/icon="res://icon.svg"
-
-[display]
-
-window/size/mode=2
-
-[input]
-
-ui_left={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
-]
-}
-ui_right={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
-]
-}
-ui_up={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
-]
-}
-ui_down={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
-]
-}
-crouch={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null)
-]
-}
-sprint={
-"deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
-]
-}
diff --git a/quality-godot-first-person-2-main/test_world.tscn b/quality-godot-first-person-2-main/test_world.tscn
deleted file mode 100644
index b6901b9..0000000
--- a/quality-godot-first-person-2-main/test_world.tscn
+++ /dev/null
@@ -1,106 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://cs4drhmc1bql5"]
-
-[ext_resource type="PackedScene" uid="uid://cc1m2a1obsyn4" path="res://addons/fpc/character.tscn" id="1_e18vq"]
-[ext_resource type="Texture2D" uid="uid://pe7a4weirj2g" path="res://textures/dark.png" id="2_08fdt"]
-[ext_resource type="Texture2D" uid="uid://cxjxvqmf4boxq" path="res://textures/green.png" id="3_q4clv"]
-[ext_resource type="Texture2D" uid="uid://dsv4jm4vydflb" path="res://textures/orange.png" id="4_1ns5t"]
-
-[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_edcox"]
-ground_color = Color(0.160784, 0.815686, 0.905882, 1)
-
-[sub_resource type="Sky" id="Sky_2iust"]
-sky_material = SubResource("PhysicalSkyMaterial_edcox")
-
-[sub_resource type="Environment" id="Environment_20rw3"]
-background_mode = 2
-sky = SubResource("Sky_2iust")
-tonemap_mode = 1
-ssao_enabled = true
-
-[sub_resource type="Gradient" id="Gradient_ur0vy"]
-colors = PackedColorArray(0, 0.476245, 0.0193456, 1, 0.360494, 0.612721, 0.119744, 1)
-
-[sub_resource type="FastNoiseLite" id="FastNoiseLite_jd3pw"]
-frequency = 0.0027
-
-[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_7akuf"]
-width = 1024
-height = 1024
-in_3d_space = true
-seamless = true
-color_ramp = SubResource("Gradient_ur0vy")
-noise = SubResource("FastNoiseLite_jd3pw")
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_67ysu"]
-albedo_texture = SubResource("NoiseTexture2D_7akuf")
-uv1_scale = Vector3(0.1, 0.1, 0.1)
-uv1_triplanar = true
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gomnb"]
-albedo_texture = ExtResource("2_08fdt")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u0sbk"]
-albedo_texture = ExtResource("3_q4clv")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7j4uu"]
-albedo_texture = ExtResource("4_1ns5t")
-metallic = 0.81
-metallic_specular = 0.2
-roughness = 0.5
-uv1_triplanar = true
-uv1_triplanar_sharpness = 0.000850145
-
-[node name="test_world" type="Node3D"]
-
-[node name="Character" parent="." instance=ExtResource("1_e18vq")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = SubResource("Environment_20rw3")
-
-[node name="sun" type="DirectionalLight3D" parent="."]
-transform = Transform3D(0.87959, -0.436605, 0.188936, 0, 0.397148, 0.917755, -0.475732, -0.807248, 0.349328, 0, 0, 0)
-light_energy = 2.0
-shadow_enabled = true
-
-[node name="terrain" type="Node3D" parent="."]
-
-[node name="CSGBox3D" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, -0.5, 10)
-use_collision = true
-size = Vector3(30, 1, 30)
-material = SubResource("StandardMaterial3D_67ysu")
-
-[node name="CSGBox3D2" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D3" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.8, -13)
-use_collision = true
-size = Vector3(4, 0.5, 4)
-material = SubResource("StandardMaterial3D_gomnb")
-
-[node name="CSGBox3D4" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(0.939693, 0.34202, 0, -0.34202, 0.939693, 0, 0, 0, 1, -9.5, 1.2, -10)
-use_collision = true
-size = Vector3(10, 1, 10)
-material = SubResource("StandardMaterial3D_u0sbk")
-
-[node name="CSGBox3D5" type="CSGBox3D" parent="terrain"]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 3, -15.5)
-use_collision = true
-size = Vector3(19, 8, 1)
-material = SubResource("StandardMaterial3D_7j4uu")
diff --git a/quality-godot-first-person-2-main/textures/dark.png b/quality-godot-first-person-2-main/textures/dark.png
deleted file mode 100644
index 69be211..0000000
Binary files a/quality-godot-first-person-2-main/textures/dark.png and /dev/null differ
diff --git a/quality-godot-first-person-2-main/textures/dark.png.import b/quality-godot-first-person-2-main/textures/dark.png.import
deleted file mode 100644
index 2a82a3f..0000000
--- a/quality-godot-first-person-2-main/textures/dark.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://pe7a4weirj2g"
-path.s3tc="res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/dark.png"
-dest_files=["res://.godot/imported/dark.png-6d46f668c80e231a58e570df85aad257.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-main/textures/green.png b/quality-godot-first-person-2-main/textures/green.png
deleted file mode 100644
index 7bc7cf8..0000000
Binary files a/quality-godot-first-person-2-main/textures/green.png and /dev/null differ
diff --git a/quality-godot-first-person-2-main/textures/green.png.import b/quality-godot-first-person-2-main/textures/green.png.import
deleted file mode 100644
index 7c7e044..0000000
--- a/quality-godot-first-person-2-main/textures/green.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cxjxvqmf4boxq"
-path.s3tc="res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/green.png"
-dest_files=["res://.godot/imported/green.png-b4f8ddc6b00d4e627f0e027e2e1193bf.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-main/textures/orange.png b/quality-godot-first-person-2-main/textures/orange.png
deleted file mode 100644
index dec5b59..0000000
Binary files a/quality-godot-first-person-2-main/textures/orange.png and /dev/null differ
diff --git a/quality-godot-first-person-2-main/textures/orange.png.import b/quality-godot-first-person-2-main/textures/orange.png.import
deleted file mode 100644
index 311f8ac..0000000
--- a/quality-godot-first-person-2-main/textures/orange.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dsv4jm4vydflb"
-path.s3tc="res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://textures/orange.png"
-dest_files=["res://.godot/imported/orange.png-6785d3f8216fd22318e8ea839823715b.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=true
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=0
diff --git a/quality-godot-first-person-2-main/textures/purple.png b/quality-godot-first-person-2-main/textures/purple.png
deleted file mode 100644
index 48a51c1..0000000
Binary files a/quality-godot-first-person-2-main/textures/purple.png and /dev/null differ
diff --git a/quality-godot-first-person-2-main/textures/purple.png.import b/quality-godot-first-person-2-main/textures/purple.png.import
deleted file mode 100644
index 9dc0969..0000000
--- a/quality-godot-first-person-2-main/textures/purple.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cl4kewig3pk7s"
-path="res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/purple.png"
-dest_files=["res://.godot/imported/purple.png-23488e84f4f0a47488be2c78494f2155.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/quality-godot-first-person-2-main/textures/red.png b/quality-godot-first-person-2-main/textures/red.png
deleted file mode 100644
index bf1cb17..0000000
Binary files a/quality-godot-first-person-2-main/textures/red.png and /dev/null differ
diff --git a/quality-godot-first-person-2-main/textures/red.png.import b/quality-godot-first-person-2-main/textures/red.png.import
deleted file mode 100644
index c8c15aa..0000000
--- a/quality-godot-first-person-2-main/textures/red.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d1h161t0v6hau"
-path="res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://textures/red.png"
-dest_files=["res://.godot/imported/red.png-3cad0ca19141406d60f5fd2311159a86.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/steam_appid.txt b/steam_appid.txt
deleted file mode 100644
index 36e0826..0000000
--- a/steam_appid.txt
+++ /dev/null
@@ -1 +0,0 @@
-480