diff --git a/Models/FreeRoam/Generic/1StageGenericRoom.glb b/Models/FreeRoam/Generic/1StageGenericRoom.glb new file mode 100644 index 0000000..aafa87a Binary files /dev/null and b/Models/FreeRoam/Generic/1StageGenericRoom.glb differ diff --git a/Models/FreeRoam/Generic/1StageGenericRoom.glb.import b/Models/FreeRoam/Generic/1StageGenericRoom.glb.import new file mode 100644 index 0000000..3f9acc7 --- /dev/null +++ b/Models/FreeRoam/Generic/1StageGenericRoom.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ddqduheks5ltu" +path="res://.godot/imported/1StageGenericRoom.glb-6a3c6bdfc7f4280486b32068eab22056.scn" + +[deps] + +source_file="res://Models/FreeRoam/Generic/1StageGenericRoom.glb" +dest_files=["res://.godot/imported/1StageGenericRoom.glb-6a3c6bdfc7f4280486b32068eab22056.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png b/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png new file mode 100644 index 0000000..fbd4ba3 Binary files /dev/null and b/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png differ diff --git a/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png.import b/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png.import new file mode 100644 index 0000000..5300bdf --- /dev/null +++ b/Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png.import @@ -0,0 +1,39 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlclfn5iofioh" +path.s3tc="res://.godot/imported/1StageGenericRoom_90sCarpet.png-bd549f83254dc1e8f855331c781377cc.s3tc.ctex" +path.etc2="res://.godot/imported/1StageGenericRoom_90sCarpet.png-bd549f83254dc1e8f855331c781377cc.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "bec1df9050ab55c447f4ed9478448586" +} + +[deps] + +source_file="res://Models/FreeRoam/Generic/1StageGenericRoom_90sCarpet.png" +dest_files=["res://.godot/imported/1StageGenericRoom_90sCarpet.png-bd549f83254dc1e8f855331c781377cc.s3tc.ctex", "res://.godot/imported/1StageGenericRoom_90sCarpet.png-bd549f83254dc1e8f855331c781377cc.etc2.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/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj b/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj new file mode 100644 index 0000000..064b3f1 --- /dev/null +++ b/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj @@ -0,0 +1,81 @@ +# Blender 4.5.0 +# www.blender.org +mtllib Generic1StageRoomCollider.mtl +o RoomCollide +v 9.800000 0.000000 12.800000 +v -2.400000 0.800000 -1.200000 +v 2.400000 0.800000 -1.200000 +v -2.400000 3.000000 -1.200000 +v 2.400000 3.000000 -1.200000 +v -3.600000 0.800000 -1.000000 +v -3.600000 3.000000 -1.000000 +v 3.600000 0.800000 -1.000000 +v 3.600000 3.000000 -1.000000 +v 3.800000 0.000000 -0.400000 +v 9.800000 0.000000 -0.400000 +v 3.800000 3.800000 -0.400000 +v 9.800000 0.000000 10.400001 +v 9.800000 3.800000 10.400001 +v 7.400000 0.000000 12.800001 +v 7.400000 3.800000 12.800001 +v -9.800001 0.000000 12.800001 +v -9.800001 3.800000 12.800001 +v -9.800001 0.000000 -0.399999 +v -9.800001 3.800000 -0.399999 +v -3.800001 0.000000 -0.399999 +v -3.800001 3.800000 -0.399999 +v 9.800000 3.800000 -0.400000 +v 9.800000 3.800000 12.800000 +v -0.600000 0.800000 0.050000 +v -0.600000 1.800000 0.050000 +v -0.600000 0.800000 -0.350000 +v -0.600000 1.800000 -0.350000 +v 0.600000 0.800000 0.050000 +v 0.600000 1.800000 0.050000 +v 0.600000 0.800000 -0.350000 +v 0.600000 1.800000 -0.350000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn 0.1644 -0.0000 0.9864 +vn -0.1644 -0.0000 0.9864 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.0000 -0.7071 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +s 0 +f 17/1/1 1/2/1 11/3/1 19/4/1 +f 2/1/2 3/2/2 5/3/2 4/4/2 +f 2/1/3 4/4/3 7/4/3 6/1/3 +f 5/3/4 3/2/4 8/2/4 9/3/4 +f 10/1/2 11/2/2 23/3/2 12/4/2 +f 23/3/5 11/2/5 13/2/5 14/3/5 +f 14/3/6 13/2/6 15/2/6 16/3/6 +f 16/3/7 15/2/7 17/2/7 18/3/7 +f 18/3/8 17/2/8 19/2/8 20/3/8 +f 20/3/2 19/2/2 21/2/2 22/3/2 +f 18/1/1 24/2/1 23/3/1 20/4/1 +f 25/5/5 26/6/5 28/7/5 27/8/5 +f 27/8/7 28/7/7 32/9/7 31/10/7 +f 31/10/8 32/9/8 30/11/8 29/12/8 +f 29/12/2 30/11/2 26/13/2 25/14/2 +f 27/15/9 31/10/9 29/12/9 25/16/9 +f 32/9/1 28/17/1 26/18/1 30/11/1 diff --git a/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj.import b/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj.import new file mode 100644 index 0000000..9c432ef --- /dev/null +++ b/Models/FreeRoam/Generic/Generic1StageRoomCollider.obj.import @@ -0,0 +1,25 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://cf4oa43hi1w5t" +path="res://.godot/imported/Generic1StageRoomCollider.obj-798f30ef545feb54a49751cc883ac6db.mesh" + +[deps] + +files=["res://.godot/imported/Generic1StageRoomCollider.obj-798f30ef545feb54a49751cc883ac6db.mesh"] + +source_file="res://Models/FreeRoam/Generic/Generic1StageRoomCollider.obj" +dest_files=["res://.godot/imported/Generic1StageRoomCollider.obj-798f30ef545feb54a49751cc883ac6db.mesh", "res://.godot/imported/Generic1StageRoomCollider.obj-798f30ef545feb54a49751cc883ac6db.mesh"] + +[params] + +generate_tangents=true +generate_lods=true +generate_shadow_mesh=true +generate_lightmap_uv2=false +generate_lightmap_uv2_texel_size=0.2 +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +force_disable_mesh_compression=false diff --git a/Models/FreeRoam/Generic/Generic1StageStageCollider.obj b/Models/FreeRoam/Generic/Generic1StageStageCollider.obj new file mode 100644 index 0000000..b0e028f --- /dev/null +++ b/Models/FreeRoam/Generic/Generic1StageStageCollider.obj @@ -0,0 +1,64 @@ +# Blender 4.5.0 +# www.blender.org +mtllib Generic1StageStageCollider.mtl +o StageCollide +v -3.800000 0.000000 0.300000 +v -3.800000 0.800000 0.300000 +v -3.800000 0.000000 -2.600000 +v 3.800000 0.000000 0.300000 +v 3.800000 0.800000 0.300000 +v 3.800000 0.000000 -2.600000 +v 3.800000 0.800000 -2.600000 +v -3.800000 0.800000 -2.600000 +v -3.800000 0.800000 -0.400000 +v -3.800000 3.700000 -0.400000 +v 3.800000 3.700000 -2.600000 +v 3.800000 0.800000 -0.400000 +v 3.800000 3.700000 -0.400000 +v -3.800000 3.700000 0.300000 +v -3.800000 3.800000 0.300000 +v -3.800000 3.700000 -2.600000 +v -3.800000 3.800000 -2.600000 +v 3.800000 3.700000 0.300000 +v 3.800000 3.800000 0.300000 +v 3.800000 3.800000 -2.600000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +s 0 +f 1/1/1 2/2/1 8/3/1 3/4/1 +f 3/4/2 8/3/2 7/5/2 6/6/2 +f 6/6/3 7/5/3 5/7/3 4/8/3 +f 4/8/4 5/7/4 2/9/4 1/10/4 +f 3/11/5 6/6/5 4/8/5 1/12/5 +f 7/5/6 8/13/6 2/14/6 5/7/6 +f 14/1/1 15/2/1 17/3/1 16/4/1 +f 10/15/3 9/16/3 8/17/3 16/18/3 +f 11/18/1 7/17/1 12/17/1 13/18/1 +f 16/4/2 17/3/2 20/5/2 11/6/2 +f 16/18/4 8/17/4 7/17/4 11/18/4 +f 11/6/3 20/5/3 19/7/3 18/8/3 +f 18/8/4 19/7/4 15/9/4 14/10/4 +f 16/11/5 11/6/5 18/8/5 14/12/5 +f 20/5/6 17/13/6 15/14/6 19/7/6 diff --git a/Models/FreeRoam/Generic/Generic1StageStageCollider.obj.import b/Models/FreeRoam/Generic/Generic1StageStageCollider.obj.import new file mode 100644 index 0000000..2095e78 --- /dev/null +++ b/Models/FreeRoam/Generic/Generic1StageStageCollider.obj.import @@ -0,0 +1,25 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://cxetf6uisjlwr" +path="res://.godot/imported/Generic1StageStageCollider.obj-7bc61f56b310e9438b48171606d833d5.mesh" + +[deps] + +files=["res://.godot/imported/Generic1StageStageCollider.obj-7bc61f56b310e9438b48171606d833d5.mesh"] + +source_file="res://Models/FreeRoam/Generic/Generic1StageStageCollider.obj" +dest_files=["res://.godot/imported/Generic1StageStageCollider.obj-7bc61f56b310e9438b48171606d833d5.mesh", "res://.godot/imported/Generic1StageStageCollider.obj-7bc61f56b310e9438b48171606d833d5.mesh"] + +[params] + +generate_tangents=true +generate_lods=true +generate_shadow_mesh=true +generate_lightmap_uv2=false +generate_lightmap_uv2_texel_size=0.2 +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +force_disable_mesh_compression=false diff --git a/Scenes/EditorStages/1Stage.tscn b/Scenes/EditorStages/1Stage.tscn index 8396d10..f96122c 100644 --- a/Scenes/EditorStages/1Stage.tscn +++ b/Scenes/EditorStages/1Stage.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=14 format=3 uid="uid://bl4wyf7wq84i"] +[gd_scene load_steps=15 format=3 uid="uid://bl4wyf7wq84i"] [ext_resource type="PackedScene" uid="uid://doxu4tb5jfoqp" path="res://Models/Cyberamics/Cyber Munch.glb" id="1_3gw4q"] +[ext_resource type="PackedScene" uid="uid://ddqduheks5ltu" path="res://Models/FreeRoam/Generic/1StageGenericRoom.glb" id="1_bg74u"] [ext_resource type="Script" uid="uid://du3pqtf3jixvl" path="res://Scripts/CyberamicController.gd" id="2_abugi"] [ext_resource type="PackedScene" uid="uid://ba7i8p8olef2s" path="res://Models/Cyberamics/Cyber Jasper.glb" id="3_sntwi"] [ext_resource type="PackedScene" uid="uid://c5fgw7t45p7r6" path="res://Models/Cyberamics/Cyber Chuck.glb" id="4_ryg5o"] @@ -18,6 +19,8 @@ ambient_light_source = 1 [node name="1Stage" type="Node3D"] +[node name="1StageGenericRoom" parent="." instance=ExtResource("1_bg74u")] + [node name="StageModel" parent="." instance=ExtResource("8_3gw4q")] [node name="Chuck" parent="." instance=ExtResource("4_ryg5o")] diff --git a/Scenes/FreeRoam/Generic/Generic1Stage.tscn b/Scenes/FreeRoam/Generic/Generic1Stage.tscn new file mode 100644 index 0000000..bd93e96 --- /dev/null +++ b/Scenes/FreeRoam/Generic/Generic1Stage.tscn @@ -0,0 +1,379 @@ +[gd_scene load_steps=20 format=3 uid="uid://b6rem1te85htp"] + +[ext_resource type="PackedScene" uid="uid://ddqduheks5ltu" path="res://Models/FreeRoam/Generic/1StageGenericRoom.glb" id="1_8m4fm"] +[ext_resource type="PackedScene" uid="uid://bf4aq55iy3yey" path="res://Models/1Stage/1StageGeneric.glb" id="2_ncqi6"] +[ext_resource type="PackedScene" uid="uid://c5fgw7t45p7r6" path="res://Models/Cyberamics/Cyber Chuck.glb" id="3_r26gl"] +[ext_resource type="Script" uid="uid://du3pqtf3jixvl" path="res://Scripts/CyberamicController.gd" id="4_fdybi"] +[ext_resource type="PackedScene" uid="uid://d34xfaignny8j" path="res://Models/Cyberamics/Cyber Helen.glb" id="5_0hrbq"] +[ext_resource type="PackedScene" uid="uid://doxu4tb5jfoqp" path="res://Models/Cyberamics/Cyber Munch.glb" id="6_5nqmm"] +[ext_resource type="PackedScene" uid="uid://ba7i8p8olef2s" path="res://Models/Cyberamics/Cyber Jasper.glb" id="7_cw8uy"] +[ext_resource type="PackedScene" uid="uid://bp5u5t6yu4ejy" path="res://Models/Cyberamics/Cyber Pasqually.glb" id="8_qaqoe"] +[ext_resource type="Script" uid="uid://d1p4ite8ts2wi" path="res://Scripts/LightController.gd" id="9_yvbl1"] +[ext_resource type="PackedScene" uid="uid://bju74jawdmt6y" path="res://Models/1Stage/1StageGenericOrganLightsInner.glb" id="10_shuix"] +[ext_resource type="PackedScene" uid="uid://dxejch2vv4k20" path="res://Models/1Stage/1StageGenericOrganLightsMiddle.glb" id="11_4t0m2"] +[ext_resource type="PackedScene" uid="uid://dm3wfbhs34bkd" path="res://Models/1Stage/1StageGenericOrganLightsOuter.glb" id="12_rs0sv"] +[ext_resource type="PackedScene" uid="uid://mvv5sjk3vbtl" path="res://Scenes/Props/HelicopterLight.tscn" id="13_1oq0m"] +[ext_resource type="PackedScene" uid="uid://cdk6hwb4hi2wc" path="res://Scripts/Player/player.tscn" id="14_ncqi6"] +[ext_resource type="ArrayMesh" uid="uid://cxetf6uisjlwr" path="res://Models/FreeRoam/Generic/Generic1StageStageCollider.obj" id="15_fdybi"] +[ext_resource type="ArrayMesh" uid="uid://cf4oa43hi1w5t" path="res://Models/FreeRoam/Generic/Generic1StageRoomCollider.obj" id="16_0hrbq"] + +[sub_resource type="Environment" id="Environment_0tsrs"] +ambient_light_source = 1 + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_5nqmm"] +data = PackedVector3Array(-3.8, 0.8, 0.3, -3.8, 0, 0.3, -3.8, 0.8, -2.6, -3.8, 0.8, -2.6, -3.8, 0, 0.3, -3.8, 0, -2.6, -3.8, 0.8, -2.6, -3.8, 0, -2.6, 3.8, 0.8, -2.6, 3.8, 0.8, -2.6, -3.8, 0, -2.6, 3.8, 0, -2.6, 3.8, 0.8, -2.6, 3.8, 0, -2.6, 3.8, 0.8, 0.3, 3.8, 0.8, 0.3, 3.8, 0, -2.6, 3.8, 0, 0.3, 3.8, 0.8, 0.3, 3.8, 0, 0.3, -3.8, 0.8, 0.3, -3.8, 0.8, 0.3, 3.8, 0, 0.3, -3.8, 0, 0.3, 3.8, 0, -2.6, -3.8, 0, -2.6, 3.8, 0, 0.3, 3.8, 0, 0.3, -3.8, 0, -2.6, -3.8, 0, 0.3, -3.8, 0.8, -2.6, 3.8, 0.8, -2.6, -3.8, 0.8, 0.3, -3.8, 0.8, 0.3, 3.8, 0.8, -2.6, 3.8, 0.8, 0.3, -3.8, 3.8, 0.3, -3.8, 3.7, 0.3, -3.8, 3.8, -2.6, -3.8, 3.8, -2.6, -3.8, 3.7, 0.3, -3.8, 3.7, -2.6, -3.8, 0.8, -0.4, -3.8, 3.7, -0.4, -3.8, 0.8, -2.6, -3.8, 0.8, -2.6, -3.8, 3.7, -0.4, -3.8, 3.7, -2.6, 3.8, 0.8, -2.6, 3.8, 3.7, -2.6, 3.8, 0.8, -0.4, 3.8, 0.8, -0.4, 3.8, 3.7, -2.6, 3.8, 3.7, -0.4, -3.8, 3.8, -2.6, -3.8, 3.7, -2.6, 3.8, 3.8, -2.6, 3.8, 3.8, -2.6, -3.8, 3.7, -2.6, 3.8, 3.7, -2.6, -3.8, 0.8, -2.6, -3.8, 3.7, -2.6, 3.8, 0.8, -2.6, 3.8, 0.8, -2.6, -3.8, 3.7, -2.6, 3.8, 3.7, -2.6, 3.8, 3.8, -2.6, 3.8, 3.7, -2.6, 3.8, 3.8, 0.3, 3.8, 3.8, 0.3, 3.8, 3.7, -2.6, 3.8, 3.7, 0.3, 3.8, 3.8, 0.3, 3.8, 3.7, 0.3, -3.8, 3.8, 0.3, -3.8, 3.8, 0.3, 3.8, 3.7, 0.3, -3.8, 3.7, 0.3, 3.8, 3.7, -2.6, -3.8, 3.7, -2.6, 3.8, 3.7, 0.3, 3.8, 3.7, 0.3, -3.8, 3.7, -2.6, -3.8, 3.7, 0.3, -3.8, 3.8, -2.6, 3.8, 3.8, -2.6, -3.8, 3.8, 0.3, -3.8, 3.8, 0.3, 3.8, 3.8, -2.6, 3.8, 3.8, 0.3) + +[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_cw8uy"] +data = PackedVector3Array(9.8, 0, 12.8, -9.8, 0, 12.8, 9.8, 0, -0.4, 9.8, 0, -0.4, -9.8, 0, 12.8, -9.8, 0, -0.4, 2.4, 0.8, -1.2, -2.4, 0.8, -1.2, 2.4, 3, -1.2, 2.4, 3, -1.2, -2.4, 0.8, -1.2, -2.4, 3, -1.2, -2.4, 3, -1.2, -2.4, 0.8, -1.2, -3.6, 3, -1, -3.6, 3, -1, -2.4, 0.8, -1.2, -3.6, 0.8, -1, 2.4, 0.8, -1.2, 2.4, 3, -1.2, 3.6, 0.8, -1, 3.6, 0.8, -1, 2.4, 3, -1.2, 3.6, 3, -1, 9.8, 0, -0.4, 3.8, 0, -0.4, 9.8, 3.8, -0.4, 9.8, 3.8, -0.4, 3.8, 0, -0.4, 3.8, 3.8, -0.4, 9.8, 0, -0.4, 9.8, 3.8, -0.4, 9.8, 0, 10.4, 9.8, 0, 10.4, 9.8, 3.8, -0.4, 9.8, 3.8, 10.4, 9.8, 0, 10.4, 9.8, 3.8, 10.4, 7.4, 0, 12.8, 7.4, 0, 12.8, 9.8, 3.8, 10.4, 7.4, 3.8, 12.8, 7.4, 0, 12.8, 7.4, 3.8, 12.8, -9.8, 0, 12.8, -9.8, 0, 12.8, 7.4, 3.8, 12.8, -9.8, 3.8, 12.8, -9.8, 0, 12.8, -9.8, 3.8, 12.8, -9.8, 0, -0.4, -9.8, 0, -0.4, -9.8, 3.8, 12.8, -9.8, 3.8, -0.4, -9.8, 0, -0.4, -9.8, 3.8, -0.4, -3.8, 0, -0.4, -3.8, 0, -0.4, -9.8, 3.8, -0.4, -3.8, 3.8, -0.4, 9.8, 3.8, 12.8, -9.8, 3.8, 12.8, 9.8, 3.8, -0.4, 9.8, 3.8, -0.4, -9.8, 3.8, 12.8, -9.8, 3.8, -0.4, -0.6, 1.8, 0.05, -0.6, 0.8, 0.05, -0.6, 1.8, -0.35, -0.6, 1.8, -0.35, -0.6, 0.8, 0.05, -0.6, 0.8, -0.35, -0.6, 1.8, -0.35, -0.6, 0.8, -0.35, 0.6, 1.8, -0.35, 0.6, 1.8, -0.35, -0.6, 0.8, -0.35, 0.6, 0.8, -0.35, 0.6, 1.8, -0.35, 0.6, 0.8, -0.35, 0.6, 1.8, 0.05, 0.6, 1.8, 0.05, 0.6, 0.8, -0.35, 0.6, 0.8, 0.05, 0.6, 1.8, 0.05, 0.6, 0.8, 0.05, -0.6, 1.8, 0.05, -0.6, 1.8, 0.05, 0.6, 0.8, 0.05, -0.6, 0.8, 0.05, 0.6, 0.8, -0.35, -0.6, 0.8, -0.35, 0.6, 0.8, 0.05, 0.6, 0.8, 0.05, -0.6, 0.8, -0.35, -0.6, 0.8, 0.05, -0.6, 1.8, -0.35, 0.6, 1.8, -0.35, -0.6, 1.8, 0.05, -0.6, 1.8, 0.05, 0.6, 1.8, -0.35, 0.6, 1.8, 0.05) + +[node name="Generic1Stage" type="Node3D"] + +[node name="1StageGenericRoom" parent="." instance=ExtResource("1_8m4fm")] + +[node name="StageModel" parent="." instance=ExtResource("2_ncqi6")] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_0tsrs") + +[node name="Room Lights" type="Node3D" parent="."] + +[node name="OmniLight3D" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 4, 3.5, 2) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D2" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -4, 3.5, 2) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D3" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 3.5, 2) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D4" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 6.86654, 3.5, 1.90623) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D5" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -7, 3.5, 2) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D6" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 4, 3.5, 11) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D7" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -4, 3.5, 11) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D8" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 3.5, 11) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D9" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 6.86654, 3.5, 10.9062) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D10" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -7, 3.5, 11) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D11" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 4, 3.5, 6.5) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D12" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -4, 3.5, 6.5) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D13" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 3.5, 6.5) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D14" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 6.86654, 3.5, 6.5) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="OmniLight3D15" type="SpotLight3D" parent="Room Lights"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -7, 3.5, 6.5) +light_color = Color(0.709804, 0.67451, 0.623529, 1) +light_energy = 2.0 +spot_angle = 90.0 + +[node name="StageAssets" type="Node3D" parent="."] + +[node name="Chuck" parent="StageAssets" instance=ExtResource("3_r26gl")] +transform = Transform3D(0.579556, 0, 0.155291, 0, 0.6, 0, -0.155291, 0, 0.579556, -2.6, 1.52, -0.6) +script = ExtResource("4_fdybi") + +[node name="Helen" parent="StageAssets" instance=ExtResource("5_0hrbq")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -1.2, 1.52, -0.7) +script = ExtResource("4_fdybi") + +[node name="Munch" parent="StageAssets" instance=ExtResource("6_5nqmm")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 1.52, -0.7) +script = ExtResource("4_fdybi") + +[node name="Jasper" parent="StageAssets" instance=ExtResource("7_cw8uy")] +transform = Transform3D(0.579556, 0, -0.155291, 0, 0.6, 0, 0.155291, 0, 0.579556, 1.5, 1.4, -0.8) +script = ExtResource("4_fdybi") + +[node name="Pasqually" parent="StageAssets" instance=ExtResource("8_qaqoe")] +transform = Transform3D(0.519615, 0, -0.3, 0, 0.6, 0, 0.3, 0, 0.519615, 3, 1.4, -0.8) +script = ExtResource("4_fdybi") + +[node name="Spots" type="Node3D" parent="StageAssets"] +script = ExtResource("9_yvbl1") + +[node name="Chuck" type="SpotLight3D" parent="StageAssets/Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, -2.6, 3.7, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 5.0 + +[node name="Helen" type="SpotLight3D" parent="StageAssets/Spots"] +transform = Transform3D(1, -5.67102e-08, 2.31578e-07, -9.98193e-10, 0.970296, 0.241922, -2.38419e-07, -0.241922, 0.970296, -1.2, 3.7, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 5.0 + +[node name="Munch" type="SpotLight3D" parent="StageAssets/Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 0, 3.7, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 5.0 + +[node name="Jasper" type="SpotLight3D" parent="StageAssets/Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 1.5, 3.6, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 5.0 + +[node name="Pasqually" type="SpotLight3D" parent="StageAssets/Spots"] +transform = Transform3D(1, 0, 0, 0, 0.970296, 0.241922, 0, -0.241922, 0.970296, 3, 3.6, 5) +visible = false +light_color = Color(1, 0.960784, 0.85098, 1) +light_energy = 0.8 +spot_range = 8.0 +spot_attenuation = -1.0 +spot_angle = 5.0 + +[node name="Organ" type="Node3D" parent="StageAssets"] +script = ExtResource("9_yvbl1") + +[node name="Inner" parent="StageAssets/Organ" instance=ExtResource("10_shuix")] +visible = false + +[node name="Middle" parent="StageAssets/Organ" instance=ExtResource("11_4t0m2")] +visible = false + +[node name="Outer" parent="StageAssets/Organ" instance=ExtResource("12_rs0sv")] +visible = false + +[node name="Face Amber" type="OmniLight3D" parent="StageAssets/Organ"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0.1) +visible = false +light_color = Color(1, 0.501961, 0, 1) +light_energy = 0.1 + +[node name="Face Blue" type="Node3D" parent="StageAssets/Organ"] +visible = false + +[node name="FB1" type="OmniLight3D" parent="StageAssets/Organ/Face Blue"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.35, 1.7, 0.1) +light_color = Color(0, 0.501961, 1, 1) +light_energy = 0.1 + +[node name="FB2" type="OmniLight3D" parent="StageAssets/Organ/Face Blue"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35, 1.7, 0.1) +light_color = Color(0, 0.501961, 1, 1) +light_energy = 0.1 + +[node name="Floods" type="Node3D" parent="StageAssets"] +script = ExtResource("9_yvbl1") + +[node name="CEC Red" type="SpotLight3D" parent="StageAssets/Floods"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -2.9, 3.5, 0) +visible = false +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="CEC Amber" type="SpotLight3D" parent="StageAssets/Floods"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -2.6, 3.5, 0) +visible = false +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="CEC Blue" type="SpotLight3D" parent="StageAssets/Floods"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -2.3, 3.5, 0) +visible = false +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="Main Red" type="Node3D" parent="StageAssets/Floods"] +visible = false + +[node name="MR1" type="SpotLight3D" parent="StageAssets/Floods/Main Red"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -1.5, 3.5, 0) +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="MR2" type="SpotLight3D" parent="StageAssets/Floods/Main Red"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.25, 3.5, 0) +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="MR3" type="SpotLight3D" parent="StageAssets/Floods/Main Red"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 2, 3.5, 0) +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="Main Amber" type="Node3D" parent="StageAssets/Floods"] +visible = false + +[node name="MA1" type="SpotLight3D" parent="StageAssets/Floods/Main Amber"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -1, 3.5, 0) +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="MA2" type="SpotLight3D" parent="StageAssets/Floods/Main Amber"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.75, 3.5, 0) +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="MA3" type="SpotLight3D" parent="StageAssets/Floods/Main Amber"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 2.5, 3.5, 0) +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="Main Blue" type="Node3D" parent="StageAssets/Floods"] +visible = false + +[node name="MB1" type="SpotLight3D" parent="StageAssets/Floods/Main Blue"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, -0.5, 3.5, 0) +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="MB2" type="SpotLight3D" parent="StageAssets/Floods/Main Blue"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 1.25, 3.5, 0) +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="MB3" type="SpotLight3D" parent="StageAssets/Floods/Main Blue"] +transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 3, 3.5, 0) +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="Backdrop" type="Node3D" parent="StageAssets"] +script = ExtResource("9_yvbl1") + +[node name="Red" type="Node3D" parent="StageAssets/Backdrop"] +visible = false + +[node name="MR1" type="SpotLight3D" parent="StageAssets/Backdrop/Red"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, -1.5, 1, -1.25) +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="MR2" type="SpotLight3D" parent="StageAssets/Backdrop/Red"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, 0.5, 1, -1.25) +light_color = Color(1, 0, 0, 1) +light_energy = 2.0 + +[node name="Amber" type="Node3D" parent="StageAssets/Backdrop"] +visible = false + +[node name="MA1" type="SpotLight3D" parent="StageAssets/Backdrop/Amber"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, -1, 1, -1.25) +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="MA2" type="SpotLight3D" parent="StageAssets/Backdrop/Amber"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, 1, 1, -1.25) +light_color = Color(1, 0.498039, 0, 1) +light_energy = 2.0 + +[node name="Blue" type="Node3D" parent="StageAssets/Backdrop"] +visible = false + +[node name="MB1" type="SpotLight3D" parent="StageAssets/Backdrop/Blue"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, -0.5, 1, -1.25) +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="MB2" type="SpotLight3D" parent="StageAssets/Backdrop/Blue"] +transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, 1.5, 1, -1.25) +light_color = Color(0, 0.498039, 1, 1) +light_energy = 2.0 + +[node name="Special" type="Node3D" parent="StageAssets"] +script = ExtResource("9_yvbl1") + +[node name="Kick Drum" type="OmniLight3D" parent="StageAssets/Special"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 1.2, 0) +visible = false +light_color = Color(1, 0, 0, 1) +light_energy = 0.25 + +[node name="Special Helicopter" parent="StageAssets" instance=ExtResource("13_1oq0m")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 3, 4) + +[node name="Player" parent="." instance=ExtResource("14_ncqi6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) + +[node name="StageCollider" type="StaticBody3D" parent="."] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="StageCollider"] +visible = false +mesh = ExtResource("15_fdybi") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StageCollider"] +shape = SubResource("ConcavePolygonShape3D_5nqmm") + +[node name="RoomCollider" type="StaticBody3D" parent="."] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="RoomCollider"] +visible = false +mesh = ExtResource("16_0hrbq") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RoomCollider"] +shape = SubResource("ConcavePolygonShape3D_cw8uy") diff --git a/Scenes/GUI/MainMenu.tscn b/Scenes/GUI/MainMenu.tscn index 034f6f2..4251610 100644 --- a/Scenes/GUI/MainMenu.tscn +++ b/Scenes/GUI/MainMenu.tscn @@ -443,6 +443,7 @@ text = "Global: Fullscreen: F11 or Alt+Enter In Editor: + Fullscreen camera view: ESC Play/Pause: Space Play Reverse: Shift + Space @@ -468,8 +469,11 @@ text = " In Free Roam: + Move: W, A, S, D Jump: Space +Crouch: Right Control +Run: Right Shift Open Menu: ESC" [node name="CreditsScreen" type="Control" parent="."] @@ -553,12 +557,12 @@ Project Oversight: Persephone (KawaiiZenbo) Interface Design: Persephone Simulator Backend: Persephone -3-Stage Bot Models: Persephone -Cyberamic Bot Models: Persephone -C-Stage Model: Persephone -Cyberamic Iris Textures: Avery -Chuck E's Corner Stage: Luigigamin212 -Balcony Stage Model: ToastHQ +Models: +Persephone: Helen House, Cyberamics, 1-Stage, C-Stage, +Prototype Road Stage +Luigigamin212: Chuck E's Corner +ToastHQ: Balcony Stage, 3-Stage, 3-Stage Bots +Avery: Cyberamic Iris Textures This project is not associated with CEC Entertainment LLC. or Creative Engineering Inc." diff --git a/Scripts/Configs/FreeRoamMaps.gd b/Scripts/Configs/FreeRoamMaps.gd new file mode 100644 index 0000000..03c34b2 --- /dev/null +++ b/Scripts/Configs/FreeRoamMaps.gd @@ -0,0 +1,12 @@ +extends Node + +var Generic1Stage = { + "name": "Generic 1 Stage", + "scene": "res://Scenes/FreeRoam/Generic/Generic1Stage.tscn", + "stage": Stages.Cyber1Stage, + "stage_base_path": "Generic1Stage/StageAssets" +} + +var MapIndex = { + "Generic 1 Stage": Generic1Stage +} diff --git a/Scripts/Configs/FreeRoamMaps.gd.uid b/Scripts/Configs/FreeRoamMaps.gd.uid new file mode 100644 index 0000000..03c5861 --- /dev/null +++ b/Scripts/Configs/FreeRoamMaps.gd.uid @@ -0,0 +1 @@ +uid://bicum1ifw4mph diff --git a/Scripts/MainMenu.gd b/Scripts/MainMenu.gd index 11c27c3..fa1e953 100644 --- a/Scripts/MainMenu.gd +++ b/Scripts/MainMenu.gd @@ -49,6 +49,7 @@ func _on_controls_button_pressed() -> void: $ControlsScreen.visible = true func _on_free_roam_button_pressed() -> void: + get_tree().change_scene_to_file(FreeRoamMaps.Generic1Stage["scene"]) $FreeRoamChooseScreen.visible = true func _on_mods_button_pressed() -> void: diff --git a/Scripts/Player/player.gd b/Scripts/Player/player.gd new file mode 100644 index 0000000..3b6c3f9 --- /dev/null +++ b/Scripts/Player/player.gd @@ -0,0 +1,101 @@ +class_name Player extends CharacterBody3D + +var SPEED_BASE: float = 4 +var SPEED_CROUCHED: float = 2 +var SPEED_RUNNING: float = 7 +var SPEED_CROUCH_RUN: float = 3 + +var speed: float = SPEED_BASE # m/s +var acceleration: float = 100 # m/s^2 + +var jump_height: float = 1 # m +var camera_sens: float = 3 + +var jumping: bool = false +var crouched: bool = false +var running: bool = false +var mouse_captured: bool = false + +var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") + +var move_dir: Vector2 # Input direction for movement +var look_dir: Vector2 # Input direction for look/aim + +var walk_vel: Vector3 # Walking velocity +var grav_vel: Vector3 # Gravity velocity +var jump_vel: Vector3 # Jumping velocity + +@onready var camera: Camera3D = $Camera + +func _ready() -> void: + capture_mouse() + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventMouseMotion: + look_dir = event.relative * 0.001 + if mouse_captured: _rotate_camera() + +func _physics_process(delta: float) -> void: + if Input.is_action_just_pressed(&"freeroam_jump"): jumping = true + elif Input.is_action_just_pressed(&"freeroam_crouch"): + $CShape.shape.height = 1.0 + $Camera.position.y = 1.0 + if (running): speed = SPEED_CROUCH_RUN + else: speed = SPEED_CROUCHED + crouched = true + elif Input.is_action_just_released(&"freeroam_crouch"): + $CShape.shape.height = 1.8 + $Camera.position.y = 1.7 + if (running): speed = SPEED_RUNNING + else: speed = SPEED_BASE + crouched = false + elif Input.is_action_just_pressed(&"freeroam_run"): + if (crouched): speed = SPEED_CROUCH_RUN + else: speed = SPEED_RUNNING + running = true + elif Input.is_action_just_released(&"freeroam_run"): + if (crouched): speed = SPEED_CROUCHED + else: speed = SPEED_BASE + running = false + + if mouse_captured: _handle_joypad_camera_rotation(delta) + velocity = _walk(delta) + _gravity(delta) + _jump(delta) + move_and_slide() + +func capture_mouse() -> void: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + mouse_captured = true + +func release_mouse() -> void: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + mouse_captured = false + +func _rotate_camera(sens_mod: float = 1.0) -> void: + camera.rotation.y -= look_dir.x * camera_sens * sens_mod + camera.rotation.x = clamp(camera.rotation.x - look_dir.y * camera_sens * sens_mod, -1.5, 1.5) + +func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void: + var joypad_dir: Vector2 = Input.get_vector(&"freeroam_look_left", &"freeroam_look_right", &"freeroam_look_up", &"freeroam_look_down") + if joypad_dir.length() > 0: + look_dir += joypad_dir * delta + _rotate_camera(sens_mod) + look_dir = Vector2.ZERO + +func _walk(delta: float) -> Vector3: + move_dir = Input.get_vector(&"freeroam_move_left", &"freeroam_move_right", &"freeroam_move_forward", &"freeroam_move_backward") + var _forward: Vector3 = camera.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y) + var walk_dir: Vector3 = Vector3(_forward.x, 0, _forward.z).normalized() + walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta) + return walk_vel + +func _gravity(delta: float) -> Vector3: + grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta) + return grav_vel + +func _jump(delta: float) -> Vector3: + if jumping: + if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0) + jumping = false + return jump_vel + jump_vel = Vector3.ZERO if is_on_floor() or is_on_ceiling_only() else jump_vel.move_toward(Vector3.ZERO, gravity * delta) + return jump_vel diff --git a/Scripts/Player/player.gd.uid b/Scripts/Player/player.gd.uid new file mode 100644 index 0000000..32971b5 --- /dev/null +++ b/Scripts/Player/player.gd.uid @@ -0,0 +1 @@ +uid://b0c02p6ckmpdq diff --git a/Scripts/Player/player.tscn b/Scripts/Player/player.tscn new file mode 100644 index 0000000..19769de --- /dev/null +++ b/Scripts/Player/player.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=3 uid="uid://cdk6hwb4hi2wc"] + +[ext_resource type="Script" uid="uid://b0c02p6ckmpdq" path="res://Scripts/Player/player.gd" id="1_2f8j2"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3rsb5"] +radius = 0.3 +height = 1.8 + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_2f8j2") + +[node name="CShape" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) +shape = SubResource("CapsuleShape3D_3rsb5") +debug_color = Color(0.141176, 0.427451, 0.92549, 0.784314) + +[node name="Camera" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0) +fov = 80.0 diff --git a/project.godot b/project.godot index bca1735..0b36ecd 100644 --- a/project.godot +++ b/project.godot @@ -24,6 +24,7 @@ config/windows_native_icon="res://UI/icon.ico" Cosmetics="*res://Scripts/Configs/Cosmetics.gd" Stages="*res://Scripts/Configs/Stages.gd" +FreeRoamMaps="*res://Scripts/Configs/FreeRoamMaps.gd" [display] @@ -398,6 +399,78 @@ fullscreen={ , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"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) ] } +freeroam_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) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) +] +} +freeroam_move_backward={ +"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) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) +] +} +freeroam_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) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) +] +} +freeroam_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) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) +] +} +freeroam_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) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +] +} +freeroam_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) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) +] +} +freeroam_open_menu={ +"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) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) +] +} +freeroam_look_up={ +"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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) +] +} +freeroam_look_down={ +"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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) +] +} +freeroam_look_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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) +] +} +freeroam_look_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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) +] +} +freeroam_run={ +"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) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":7,"pressure":0.0,"pressed":true,"script":null) +] +} [rendering]