From 76d821a122961a5f6d0aa10620a9897188fddd7a Mon Sep 17 00:00:00 2001 From: Valentin Stark Date: Fri, 17 Feb 2023 17:27:29 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20d'une=20cam=C3=A9ra=20controllable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lding-cfd326195a3819f503b05d8eb324554e.cfg | 3 + ...state-9a4753666002ff049d5a9c0c57bd65af.cfg | 170 ++++++++++++++++++ ...state-cc98a96e095e7c02e6ae0e6036c092ca.cfg | 170 ++++++++++++++++++ ...lding-9a4753666002ff049d5a9c0c57bd65af.cfg | 5 + ...lding-cc98a96e095e7c02e6ae0e6036c092ca.cfg | 5 + ...lding-cb324a8d192fe8f237e7028878b36b87.cfg | 3 + ...lding-e79a9a5109d6b5d4d32e2d8eb1d33ff7.cfg | 3 + ...lding-712fee39703a6fce452f46ab2af105ee.cfg | 3 + ...state-90e479ff3d823138d37d063e789c7715.cfg | 4 +- ...lding-90e479ff3d823138d37d063e789c7715.cfg | 4 +- ...state-eb1f2d74f7033a511a9566ff71bf76c9.cfg | 2 +- ...lding-5cb0280eb8f5951524ad090b32841556.cfg | 3 + .godot/editor/create_recent.Node | 1 + .godot/editor/filesystem_update4 | 7 + .godot/editor/project_metadata.cfg | 8 +- .godot/editor/script_editor_cache.cfg | 84 ++++++++- .godot/global_script_class_cache.cfg | 8 +- .godot/uid_cache.bin | Bin 214 -> 300 bytes Camera3D.gd | 37 ++++ GridMap.tscn | 26 +-- ProceduralGenerator.gd | 8 +- project.godot | 23 +++ 22 files changed, 545 insertions(+), 32 deletions(-) create mode 100644 .godot/editor/CamBase.gd-folding-cfd326195a3819f503b05d8eb324554e.cfg create mode 100644 .godot/editor/CamBase.tscn-editstate-9a4753666002ff049d5a9c0c57bd65af.cfg create mode 100644 .godot/editor/CamBase.tscn-editstate-cc98a96e095e7c02e6ae0e6036c092ca.cfg create mode 100644 .godot/editor/CamBase.tscn-folding-9a4753666002ff049d5a9c0c57bd65af.cfg create mode 100644 .godot/editor/CamBase.tscn-folding-cc98a96e095e7c02e6ae0e6036c092ca.cfg create mode 100644 .godot/editor/Camera3D.gd-folding-cb324a8d192fe8f237e7028878b36b87.cfg create mode 100644 .godot/editor/CameraController.gd-folding-e79a9a5109d6b5d4d32e2d8eb1d33ff7.cfg create mode 100644 .godot/editor/CameraInput.gd-folding-712fee39703a6fce452f46ab2af105ee.cfg create mode 100644 .godot/editor/SelectionBox.gd-folding-5cb0280eb8f5951524ad090b32841556.cfg create mode 100644 Camera3D.gd diff --git a/.godot/editor/CamBase.gd-folding-cfd326195a3819f503b05d8eb324554e.cfg b/.godot/editor/CamBase.gd-folding-cfd326195a3819f503b05d8eb324554e.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/CamBase.gd-folding-cfd326195a3819f503b05d8eb324554e.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/CamBase.tscn-editstate-9a4753666002ff049d5a9c0c57bd65af.cfg b/.godot/editor/CamBase.tscn-editstate-9a4753666002ff049d5a9c0c57bd65af.cfg new file mode 100644 index 0000000..5ec43d3 --- /dev/null +++ b/.godot/editor/CamBase.tscn-editstate-9a4753666002ff049d5a9c0c57bd65af.cfg @@ -0,0 +1,170 @@ +[editor_states] + +Anim={ +"visible": false +} +2D={ +"grid_offset": Vector2(0, 0), +"grid_snap_active": false, +"grid_step": Vector2(8, 8), +"grid_visibility": 1, +"ofs": Vector2(-165, -110), +"primary_grid_steps": 8, +"show_edit_locks": true, +"show_guides": true, +"show_helpers": false, +"show_origin": true, +"show_rulers": true, +"show_transformation_gizmos": true, +"show_viewport": true, +"show_zoom_control": true, +"smart_snap_active": false, +"snap_guides": true, +"snap_node_anchors": true, +"snap_node_center": true, +"snap_node_parent": true, +"snap_node_sides": true, +"snap_other_nodes": true, +"snap_pixel": true, +"snap_relative": false, +"snap_rotation": false, +"snap_rotation_offset": 0.0, +"snap_rotation_step": 0.261799, +"snap_scale": false, +"snap_scale_step": 0.1, +"zoom": 1.0 +} +3D={ +"fov": 70.01, +"gizmos_status": { +"AudioListener3D": 0, +"AudioStreamPlayer3D": 0, +"CPUParticles3D": 0, +"CSGShape3D": 0, +"Camera3D": 0, +"CollisionObject3D": 0, +"CollisionPolygon3D": 0, +"CollisionShape3D": 0, +"Decal": 0, +"FogVolume": 0, +"GPUParticles3D": 0, +"GPUParticlesCollision3D": 0, +"Joint3D": 0, +"Light3D": 0, +"LightmapGI": 0, +"LightmapProbe": 0, +"Marker3D": 0, +"NavigationLink3D": 0, +"NavigationRegion3D": 0, +"OccluderInstance3D": 0, +"Path3D": 0, +"PhysicalBone3D": 0, +"RayCast3D": 0, +"ReflectionProbe": 0, +"ShapeCast3D": 0, +"Skeleton3D": 0, +"SoftBody3D": 0, +"SpringArm3D": 0, +"VehicleWheel3D": 0, +"VisibleOnScreenNotifier3D": 0, +"VoxelGI": 0 +}, +"local_coords": false, +"preview_sun_env": { +"environ_ao_enabled": false, +"environ_enabled": true, +"environ_energy": 1.0, +"environ_gi_enabled": false, +"environ_glow_enabled": true, +"environ_ground_color": Color(0.2, 0.169, 0.133, 1), +"environ_sky_color": Color(0.385, 0.454, 0.55, 1), +"environ_tonemap_enabled": true, +"sun_color": Color(1, 1, 1, 1), +"sun_enabled": true, +"sun_energy": 1.0, +"sun_max_distance": 100.0, +"sun_rotation": Vector2(-1.0472, 2.61799) +}, +"rotate_snap": 15.0, +"scale_snap": 10.0, +"show_grid": true, +"show_origin": true, +"snap_enabled": false, +"translate_snap": 1.0, +"viewport_mode": 1, +"viewports": [{ +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 53.6913, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": true, +"position": Vector3(-0.886687, 1.77527, 4.49194), +"use_environment": false, +"use_orthogonal": true, +"view_type": 0, +"x_rotation": 0.13963, +"y_rotation": -4.46804 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}], +"zfar": 4000.01, +"znear": 0.05 +} diff --git a/.godot/editor/CamBase.tscn-editstate-cc98a96e095e7c02e6ae0e6036c092ca.cfg b/.godot/editor/CamBase.tscn-editstate-cc98a96e095e7c02e6ae0e6036c092ca.cfg new file mode 100644 index 0000000..5ec43d3 --- /dev/null +++ b/.godot/editor/CamBase.tscn-editstate-cc98a96e095e7c02e6ae0e6036c092ca.cfg @@ -0,0 +1,170 @@ +[editor_states] + +Anim={ +"visible": false +} +2D={ +"grid_offset": Vector2(0, 0), +"grid_snap_active": false, +"grid_step": Vector2(8, 8), +"grid_visibility": 1, +"ofs": Vector2(-165, -110), +"primary_grid_steps": 8, +"show_edit_locks": true, +"show_guides": true, +"show_helpers": false, +"show_origin": true, +"show_rulers": true, +"show_transformation_gizmos": true, +"show_viewport": true, +"show_zoom_control": true, +"smart_snap_active": false, +"snap_guides": true, +"snap_node_anchors": true, +"snap_node_center": true, +"snap_node_parent": true, +"snap_node_sides": true, +"snap_other_nodes": true, +"snap_pixel": true, +"snap_relative": false, +"snap_rotation": false, +"snap_rotation_offset": 0.0, +"snap_rotation_step": 0.261799, +"snap_scale": false, +"snap_scale_step": 0.1, +"zoom": 1.0 +} +3D={ +"fov": 70.01, +"gizmos_status": { +"AudioListener3D": 0, +"AudioStreamPlayer3D": 0, +"CPUParticles3D": 0, +"CSGShape3D": 0, +"Camera3D": 0, +"CollisionObject3D": 0, +"CollisionPolygon3D": 0, +"CollisionShape3D": 0, +"Decal": 0, +"FogVolume": 0, +"GPUParticles3D": 0, +"GPUParticlesCollision3D": 0, +"Joint3D": 0, +"Light3D": 0, +"LightmapGI": 0, +"LightmapProbe": 0, +"Marker3D": 0, +"NavigationLink3D": 0, +"NavigationRegion3D": 0, +"OccluderInstance3D": 0, +"Path3D": 0, +"PhysicalBone3D": 0, +"RayCast3D": 0, +"ReflectionProbe": 0, +"ShapeCast3D": 0, +"Skeleton3D": 0, +"SoftBody3D": 0, +"SpringArm3D": 0, +"VehicleWheel3D": 0, +"VisibleOnScreenNotifier3D": 0, +"VoxelGI": 0 +}, +"local_coords": false, +"preview_sun_env": { +"environ_ao_enabled": false, +"environ_enabled": true, +"environ_energy": 1.0, +"environ_gi_enabled": false, +"environ_glow_enabled": true, +"environ_ground_color": Color(0.2, 0.169, 0.133, 1), +"environ_sky_color": Color(0.385, 0.454, 0.55, 1), +"environ_tonemap_enabled": true, +"sun_color": Color(1, 1, 1, 1), +"sun_enabled": true, +"sun_energy": 1.0, +"sun_max_distance": 100.0, +"sun_rotation": Vector2(-1.0472, 2.61799) +}, +"rotate_snap": 15.0, +"scale_snap": 10.0, +"show_grid": true, +"show_origin": true, +"snap_enabled": false, +"translate_snap": 1.0, +"viewport_mode": 1, +"viewports": [{ +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 53.6913, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": true, +"position": Vector3(-0.886687, 1.77527, 4.49194), +"use_environment": false, +"use_orthogonal": true, +"view_type": 0, +"x_rotation": 0.13963, +"y_rotation": -4.46804 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}, { +"auto_orthogonal": false, +"auto_orthogonal_enabled": true, +"cinematic_preview": false, +"display_mode": 20, +"distance": 4.0, +"doppler": false, +"frame_time": false, +"gizmos": true, +"half_res": false, +"information": false, +"listener": false, +"position": Vector3(0, 0, 0), +"use_environment": false, +"use_orthogonal": false, +"view_type": 0, +"x_rotation": 0.5, +"y_rotation": -0.5 +}], +"zfar": 4000.01, +"znear": 0.05 +} diff --git a/.godot/editor/CamBase.tscn-folding-9a4753666002ff049d5a9c0c57bd65af.cfg b/.godot/editor/CamBase.tscn-folding-9a4753666002ff049d5a9c0c57bd65af.cfg new file mode 100644 index 0000000..b263e2c --- /dev/null +++ b/.godot/editor/CamBase.tscn-folding-9a4753666002ff049d5a9c0c57bd65af.cfg @@ -0,0 +1,5 @@ +[folding] + +node_unfolds=[NodePath("."), PackedStringArray("Transform", "Visibility"), NodePath("Camera"), PackedStringArray("Transform")] +resource_unfolds=[] +nodes_folded=[] diff --git a/.godot/editor/CamBase.tscn-folding-cc98a96e095e7c02e6ae0e6036c092ca.cfg b/.godot/editor/CamBase.tscn-folding-cc98a96e095e7c02e6ae0e6036c092ca.cfg new file mode 100644 index 0000000..b263e2c --- /dev/null +++ b/.godot/editor/CamBase.tscn-folding-cc98a96e095e7c02e6ae0e6036c092ca.cfg @@ -0,0 +1,5 @@ +[folding] + +node_unfolds=[NodePath("."), PackedStringArray("Transform", "Visibility"), NodePath("Camera"), PackedStringArray("Transform")] +resource_unfolds=[] +nodes_folded=[] diff --git a/.godot/editor/Camera3D.gd-folding-cb324a8d192fe8f237e7028878b36b87.cfg b/.godot/editor/Camera3D.gd-folding-cb324a8d192fe8f237e7028878b36b87.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/Camera3D.gd-folding-cb324a8d192fe8f237e7028878b36b87.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/CameraController.gd-folding-e79a9a5109d6b5d4d32e2d8eb1d33ff7.cfg b/.godot/editor/CameraController.gd-folding-e79a9a5109d6b5d4d32e2d8eb1d33ff7.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/CameraController.gd-folding-e79a9a5109d6b5d4d32e2d8eb1d33ff7.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/CameraInput.gd-folding-712fee39703a6fce452f46ab2af105ee.cfg b/.godot/editor/CameraInput.gd-folding-712fee39703a6fce452f46ab2af105ee.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/CameraInput.gd-folding-712fee39703a6fce452f46ab2af105ee.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/GridMap.tscn-editstate-90e479ff3d823138d37d063e789c7715.cfg b/.godot/editor/GridMap.tscn-editstate-90e479ff3d823138d37d063e789c7715.cfg index d744408..2516134 100644 --- a/.godot/editor/GridMap.tscn-editstate-90e479ff3d823138d37d063e789c7715.cfg +++ b/.godot/editor/GridMap.tscn-editstate-90e479ff3d823138d37d063e789c7715.cfg @@ -97,14 +97,14 @@ Anim={ "auto_orthogonal_enabled": true, "cinematic_preview": false, "display_mode": 20, -"distance": 24.8694, +"distance": 62.6256, "doppler": false, "frame_time": false, "gizmos": true, "half_res": false, "information": false, "listener": true, -"position": Vector3(-0.886687, 1.77527, 4.49194), +"position": Vector3(0, 0, 16.935), "use_environment": false, "use_orthogonal": true, "view_type": 0, diff --git a/.godot/editor/GridMap.tscn-folding-90e479ff3d823138d37d063e789c7715.cfg b/.godot/editor/GridMap.tscn-folding-90e479ff3d823138d37d063e789c7715.cfg index ef0a352..4522671 100644 --- a/.godot/editor/GridMap.tscn-folding-90e479ff3d823138d37d063e789c7715.cfg +++ b/.godot/editor/GridMap.tscn-folding-90e479ff3d823138d37d063e789c7715.cfg @@ -1,5 +1,5 @@ [folding] -node_unfolds=[NodePath("GridMap"), PackedStringArray("Cell", "Navigation", "Transform"), NodePath("GridMap/Player"), PackedStringArray("Transform", "Visibility"), NodePath("GridMap/Player/MeshInstance3D"), PackedStringArray("Transform"), NodePath("GridMap/Player/Camera3D"), PackedStringArray("Transform"), NodePath("GridMap/DirectionalLight3D"), PackedStringArray("Transform", "Light", "Shadow", "Directional Shadow"), NodePath("WorldEnvironment"), PackedStringArray("environment")] -resource_unfolds=["res://GridMap.tscn::1", PackedStringArray("Resource"), "res://GridMap.tscn::Environment_ph1u4", PackedStringArray("Background", "Volumetric Fog")] +node_unfolds=[NodePath("GridMap"), PackedStringArray("Cell", "Navigation", "Transform"), NodePath("GridMap/DirectionalLight3D"), PackedStringArray("Transform", "Light", "Shadow", "Directional Shadow"), NodePath("GridMap/Camera3D"), PackedStringArray("Transform"), NodePath("WorldEnvironment"), PackedStringArray("environment")] +resource_unfolds=["res://GridMap.tscn::Environment_ph1u4", PackedStringArray("Background", "Volumetric Fog")] nodes_folded=[] diff --git a/.godot/editor/MeshLib.tscn-editstate-eb1f2d74f7033a511a9566ff71bf76c9.cfg b/.godot/editor/MeshLib.tscn-editstate-eb1f2d74f7033a511a9566ff71bf76c9.cfg index 3dba360..f966d10 100644 --- a/.godot/editor/MeshLib.tscn-editstate-eb1f2d74f7033a511a9566ff71bf76c9.cfg +++ b/.godot/editor/MeshLib.tscn-editstate-eb1f2d74f7033a511a9566ff71bf76c9.cfg @@ -106,7 +106,7 @@ Anim={ "listener": true, "position": Vector3(0, 0, 0), "use_environment": false, -"use_orthogonal": false, +"use_orthogonal": true, "view_type": 0, "x_rotation": 0.792341, "y_rotation": -9.66734 diff --git a/.godot/editor/SelectionBox.gd-folding-5cb0280eb8f5951524ad090b32841556.cfg b/.godot/editor/SelectionBox.gd-folding-5cb0280eb8f5951524ad090b32841556.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/SelectionBox.gd-folding-5cb0280eb8f5951524ad090b32841556.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/create_recent.Node b/.godot/editor/create_recent.Node index 53b4dca..89c3b8c 100644 --- a/.godot/editor/create_recent.Node +++ b/.godot/editor/create_recent.Node @@ -1,3 +1,4 @@ +Camera3D SpotLight3D MeshInstance3D DirectionalLight3D diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4 index a63983c..9131ab7 100644 --- a/.godot/editor/filesystem_update4 +++ b/.godot/editor/filesystem_update4 @@ -3,3 +3,10 @@ res://ProceduralGenerator.gd res://scale.tres res://GridMap.tscn res://meshes.meshlib +res://tools/camera/CamBase.tscn +res://utils/camera/CameraController.gd +res://utils/camera/SelectionBox.gd +res://utils/camera/CamBase.tscn +res://utils/camera/CamBase.gd +res://utils/camera/CameraInput.gd +res://Camera3D.gd diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg index edeeaad..1933814 100644 --- a/.godot/editor/project_metadata.cfg +++ b/.godot/editor/project_metadata.cfg @@ -9,8 +9,8 @@ run_reload_scripts=true [recent_files] -scenes=["res://GridMap.tscn", "res://MeshLib.tscn"] -scripts=["res://ProceduralGenerator.gd"] +scenes=["res://utils/camera/CamBase.tscn", "res://tools/camera/CamBase.tscn", "res://GridMap.tscn", "res://MeshLib.tscn"] +scripts=["res://ProceduralGenerator.gd", "res://utils/camera/CamBase.gd", "res://Camera3D.gd", "res://utils/camera/CameraInput.gd", "res://utils/camera/SelectionBox.gd", "res://utils/camera/CameraController.gd"] [color_picker] @@ -23,3 +23,7 @@ project_settings=Rect2(830, 380, 900, 700) [project_settings] advanced_mode=false + +[script_setup] + +last_selected_language="GDScript" diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index 4ca5a05..fc783d0 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -3,11 +3,89 @@ state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), -"column": 17, +"column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 36, -"scroll_position": 14.0, +"row": 8, +"scroll_position": 0.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://utils/camera/CamBase.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 28, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 17, +"scroll_position": 0.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://utils/camera/CameraController.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 4, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 16, +"scroll_position": 5.0, +"selection": true, +"selection_from_column": 2, +"selection_from_line": 16, +"selection_to_column": 4, +"selection_to_line": 16, +"syntax_highlighter": "GDScript" +} + +[res://utils/camera/SelectionBox.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 0, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 16, +"scroll_position": 0.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://utils/camera/CameraInput.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 6, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 15, +"scroll_position": 4.0, +"selection": true, +"selection_from_column": 4, +"selection_from_line": 15, +"selection_to_column": 6, +"selection_to_line": 15, +"syntax_highlighter": "GDScript" +} + +[res://Camera3D.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 19, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 34, +"scroll_position": 0.0, "selection": false, "syntax_highlighter": "GDScript" } diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 1775a2f..5c805b9 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -1 +1,7 @@ -list=Array[Dictionary]([]) +list=Array[Dictionary]([{ +"base": &"Camera3D", +"class": &"CameraController", +"icon": "", +"language": &"GDScript", +"path": "res://utils/camera/CameraController.gd" +}]) diff --git a/.godot/uid_cache.bin b/.godot/uid_cache.bin index 543029f679d7bd97f9670d56c53d3c854725a2c5..92606f41dcef8d76b8a8381751410a165de69522 100644 GIT binary patch delta 96 zcmcb{xQ2<5b0Xu_u#A&|`}|!WbI3C=FchU0Tj}eUnA7XrWPgYJ16EkB^IaZ Ql@urEVJa;x$;7S{08;!Rp#T5? delta 9 QcmZ3(bd8abeInyk01mJM^#A|> diff --git a/Camera3D.gd b/Camera3D.gd new file mode 100644 index 0000000..03d0705 --- /dev/null +++ b/Camera3D.gd @@ -0,0 +1,37 @@ +extends Camera3D + +const MOVE_MARGIN = 20 +const MOVE_SPEED = 30 + +@export var min_zoom: float = 10 +@export var max_zoom: float = 100 + +@export var zoom_sensibility: float = 1.4 + +func _process(delta): + var m_pos = get_viewport().get_mouse_position() + calc_move(m_pos, delta) + if Input.is_action_just_released("zoom_in"): + zoom(-1000) + if Input.is_action_just_released("zoom_out"): + zoom(1000) + + +func calc_move(m_pos, delta): + var v_size = get_viewport().size + var move_vec = Vector3() + if m_pos.x < MOVE_MARGIN: + move_vec.x -= 1 + if m_pos.y < MOVE_MARGIN: + move_vec.z -= 1 + if m_pos.x > v_size.x - MOVE_MARGIN: + move_vec.x += 1 + if m_pos.y > v_size.y - MOVE_MARGIN: + move_vec.z += 1 + move_vec = move_vec.rotated(Vector3(0, 1, 0), rotation_degrees.y) + global_translate(move_vec * delta * MOVE_SPEED) + +func zoom(direction : float): + #Zooming using fov + var new_fov = fov + (sign(direction) * pow(abs(direction),zoom_sensibility)/100 * get_process_delta_time()) + fov = clamp(new_fov,min_zoom,max_zoom) diff --git a/GridMap.tscn b/GridMap.tscn index 97923bb..db57eb0 100644 --- a/GridMap.tscn +++ b/GridMap.tscn @@ -1,10 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://2p5pcpd6p31s"] +[gd_scene load_steps=5 format=3 uid="uid://2p5pcpd6p31s"] [ext_resource type="Script" path="res://ProceduralGenerator.gd" id="1"] [ext_resource type="MeshLibrary" uid="uid://cylktvmebocbc" path="res://meshes.meshlib" id="1_bh3ry"] -[ext_resource type="Script" path="res://Player.gd" id="3"] - -[sub_resource type="CapsuleMesh" id="1"] +[ext_resource type="Script" path="res://Camera3D.gd" id="4_41a7h"] [sub_resource type="Environment" id="Environment_ph1u4"] volumetric_fog_enabled = true @@ -21,21 +19,10 @@ cell_center_x = false cell_center_y = false cell_center_z = false script = ExtResource("1") -ChunkWidth = 64 -ChunkHeight = 64 +ChunkWidth = 128 +ChunkHeight = 128 metadata/_editor_floor_ = Vector3(0, -1, 0) -[node name="Player" type="Node3D" parent="GridMap"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 20, 0) -visible = false -script = ExtResource("3") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="GridMap/Player"] -mesh = SubResource("1") - -[node name="Camera3D" type="Camera3D" parent="GridMap/Player"] -transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, -8.53136, 8.249) - [node name="MapUpdateTimer" type="Timer" parent="GridMap"] wait_time = 0.1 autostart = true @@ -49,6 +36,11 @@ shadow_enabled = true shadow_transmittance_bias = -5.122 directional_shadow_pancake_size = 65.8 +[node name="Camera3D" type="Camera3D" parent="GridMap"] +transform = Transform3D(1, 0, 0, 0, 0.304997, 0.952353, 0, -0.952353, 0.304997, 4.1257, 27.0156, 14.4656) +fov = 99.7 +script = ExtResource("4_41a7h") + [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_ph1u4") diff --git a/ProceduralGenerator.gd b/ProceduralGenerator.gd index 66cbb85..6be099e 100644 --- a/ProceduralGenerator.gd +++ b/ProceduralGenerator.gd @@ -5,7 +5,7 @@ extends GridMap var heightMapTexture = NoiseTexture2D.new() -@onready var player = $Player +@onready var camera = $Camera3D const DEEPWATER = 0 const WATER = 1 @@ -27,9 +27,9 @@ func _ready(): setGridChunk(0, ChunkWidth, 0, ChunkHeight) -func generateGridChunk(playerPos: Vector3) -> void: +func generateGridChunk(cameraPos: Vector3) -> void: clear() - var chunkCenter = local_to_map(playerPos) + var chunkCenter = local_to_map(cameraPos) var rowStart: float = chunkCenter.z - (ChunkHeight / 2) var rowEnd: float = chunkCenter.z + (ChunkHeight / 2) var columnStart: float = chunkCenter.x - (ChunkWidth / 2) @@ -72,4 +72,4 @@ func setGridChunk(columnStart: float, columnEnd: float, rowStart: float, rowEnd: func _on_MapUpdateTimer_timeout(): - generateGridChunk(player.global_transform.origin) + generateGridChunk(camera.global_transform.origin) diff --git a/project.godot b/project.godot index 657e41d..ec6f4fc 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,29 @@ config/icon="res://icon.png" common/drop_mouse_on_gui_input_disabled=true +[input] + +alt_command={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"pressed":false,"double_click":false,"script":null) +] +} +main_command={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"pressed":false,"double_click":false,"script":null) +] +} +zoom_in={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"pressed":false,"double_click":false,"script":null) +] +} +zoom_out={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"pressed":false,"double_click":false,"script":null) +] +} + [physics] common/enable_pause_aware_picking=true