diff --git a/nodes/camera/controllable_camera.gd b/nodes/camera/controllable_camera.gd new file mode 100644 index 0000000..973f4a9 --- /dev/null +++ b/nodes/camera/controllable_camera.gd @@ -0,0 +1,70 @@ +extends Camera3D + +@export var base_move_speed := 5.0 +@export var min_move_speed := 1.0 +@export var max_move_speed := 20.0 +@export var rotation_speed := 0.002 + +var input_delay_over := false +var current_move_speed := base_move_speed +var mouse_delta := Vector2.ZERO +var mouse_pos := Vector2.ZERO + +func _process(delta): + if Input.is_action_just_pressed("camera_control"): + mouse_pos = get_viewport().get_mouse_position() + input_delay_over = false + get_tree().create_timer(0.15).timeout.connect( + func(): + if Input.is_action_pressed("camera_control"): + input_delay_over = true + ) + if Input.is_action_pressed("camera_control") and input_delay_over: + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + handle_movement(delta) + handle_rotation() + else: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + if Input.is_action_just_released("camera_control") and input_delay_over: + Input.warp_mouse(mouse_pos) + +func _unhandled_input(event): + if event is InputEventMouseButton and event.is_pressed(): + handle_scroll_wheel(event) + if event is InputEventMouseMotion: + mouse_delta = event.relative + +func handle_movement(delta: float) -> void: + var input_dir = Vector3.ZERO + if Input.is_key_pressed(KEY_W): + input_dir.z -= 1 + if Input.is_key_pressed(KEY_S): + input_dir.z += 1 + if Input.is_key_pressed(KEY_A): + input_dir.x -= 1 + if Input.is_key_pressed(KEY_D): + input_dir.x += 1 + if Input.is_key_pressed(KEY_E): + input_dir.y += 1 + if Input.is_key_pressed(KEY_Q): + input_dir.y -= 1 + + if input_dir.length() > 0: + input_dir = input_dir.normalized() + translate(input_dir * current_move_speed * delta) + +func handle_rotation() -> void: + var current_rotation_x = rotation.x - mouse_delta.y * rotation_speed + current_rotation_x = clamp(current_rotation_x, -1.5, 1.5) + var current_rotation_y = rotation.y - mouse_delta.x * rotation_speed + rotation = Vector3(current_rotation_x, current_rotation_y, 0) + mouse_delta = Vector2.ZERO + +func handle_scroll_wheel(event: InputEventMouseButton ) -> void: + if event.button_index == MOUSE_BUTTON_WHEEL_UP: + adjust_move_speed(1.0) + elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + adjust_move_speed(-1.0) + +func adjust_move_speed(delta: float) -> void: + current_move_speed = clamp(current_move_speed + delta, min_move_speed, max_move_speed) diff --git a/nodes/camera/controllable_camera.gd.uid b/nodes/camera/controllable_camera.gd.uid new file mode 100644 index 0000000..81b446a --- /dev/null +++ b/nodes/camera/controllable_camera.gd.uid @@ -0,0 +1 @@ +uid://le0spo0q018k diff --git a/nodes/camera/controllable_camera.tscn b/nodes/camera/controllable_camera.tscn new file mode 100644 index 0000000..c981e06 --- /dev/null +++ b/nodes/camera/controllable_camera.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://cy0nvmw51bwof"] + +[ext_resource type="Script" uid="uid://le0spo0q018k" path="res://nodes/camera/controllable_camera.gd" id="1_fgom1"] + +[node name="ControllableCamera" type="Camera3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +script = ExtResource("1_fgom1") + +[node name="VoxelViewer" type="VoxelViewer" parent="."] diff --git a/scenes/coding/code_runner.gd b/nodes/coding/code_runner.gd similarity index 95% rename from scenes/coding/code_runner.gd rename to nodes/coding/code_runner.gd index 1efd9ed..ac3b771 100644 --- a/scenes/coding/code_runner.gd +++ b/nodes/coding/code_runner.gd @@ -2,7 +2,7 @@ extends Node @onready var code_editor := $%Code as CodeEdit @onready var memory := $%Memory as VBoxContainer -@onready var memory_entry := load("res://memory_entry.tscn") as PackedScene +@onready var memory_entry := load("uid://dqwi5rekytyds") as PackedScene var cobor_vm := CoborVirtualMachine.new() func _ready() -> void: diff --git a/scenes/coding/code_runner.gd.uid b/nodes/coding/code_runner.gd.uid similarity index 100% rename from scenes/coding/code_runner.gd.uid rename to nodes/coding/code_runner.gd.uid diff --git a/scenes/coding/code_runner.tscn b/nodes/coding/code_runner.tscn similarity index 98% rename from scenes/coding/code_runner.tscn rename to nodes/coding/code_runner.tscn index 4671074..9937f3b 100644 --- a/scenes/coding/code_runner.tscn +++ b/nodes/coding/code_runner.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://7q00x01xdsal"] -[ext_resource type="Script" uid="uid://brnfd6h7eh0n7" path="res://scenes/coding/code_runner.gd" id="1_mphwn"] +[ext_resource type="Script" uid="uid://brnfd6h7eh0n7" path="res://nodes/coding/code_runner.gd" id="1_mphwn"] [node name="CodeRunner" type="Node"] script = ExtResource("1_mphwn") diff --git a/scenes/coding/memory_entry.tscn b/nodes/coding/memory_entry.tscn similarity index 100% rename from scenes/coding/memory_entry.tscn rename to nodes/coding/memory_entry.tscn diff --git a/nodes/game.tscn b/nodes/game.tscn new file mode 100644 index 0000000..880061b --- /dev/null +++ b/nodes/game.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://d0b7m4vykcfy2"] + +[node name="Game" type="Node"] diff --git a/nodes/robots/Robots.tscn b/nodes/robots/Robots.tscn new file mode 100644 index 0000000..f7ae22e --- /dev/null +++ b/nodes/robots/Robots.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=18 format=3 uid="uid://b84ihb5xw37pm"] + +[ext_resource type="PackedScene" uid="uid://cy0nvmw51bwof" path="res://nodes/camera/controllable_camera.tscn" id="1_ecqtg"] +[ext_resource type="Script" uid="uid://bnw0h8cuyf3g5" path="res://nodes/robots/robot.gd" id="1_nnl6p"] +[ext_resource type="VoxelBlockyLibrary" uid="uid://bsue4rd3wdfsl" path="res://nodes/word/BlockLibrary.tres" id="1_r886l"] +[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://nodes/word/BlockMaterial.tres" id="2_nnl6p"] +[ext_resource type="PackedScene" uid="uid://ddyulj4dsrkms" path="res://nodes/word/terrain_editor.tscn" id="4_llm6e"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1sxe"] +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_0wfyh"] +sky_material = SubResource("ProceduralSkyMaterial_e1sxe") + +[sub_resource type="Environment" id="Environment_5yot8"] +background_mode = 2 +sky = SubResource("Sky_0wfyh") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o5qli"] +albedo_color = Color(0.313808, 0.455394, 0.721014, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_oo1c2"] +material = SubResource("StandardMaterial3D_o5qli") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r886l"] +albedo_color = Color(0.999686, 0.38438, 0, 1) + +[sub_resource type="PrismMesh" id="PrismMesh_nnl6p"] +material = SubResource("StandardMaterial3D_r886l") +size = Vector3(0.5, 0.5, 0.25) + +[sub_resource type="TorusMesh" id="TorusMesh_llm6e"] +inner_radius = 0.75 +outer_radius = 0.8 +rings = 20 +ring_segments = 6 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jq1ic"] +emission_enabled = true +emission = Color(0, 1, 1, 1) +emission_energy_multiplier = 3.0 + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_llm6e"] +height = 1.0 + +[sub_resource type="VoxelGeneratorFlat" id="VoxelGeneratorFlat_llm6e"] +channel = 0 + +[sub_resource type="VoxelMesherBlocky" id="VoxelMesherBlocky_ofs8c"] +library = ExtResource("1_r886l") + +[node name="Robots" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_5yot8") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, 0) +shadow_enabled = true + +[node name="Robot" type="CharacterBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.5, 0.5) +script = ExtResource("1_nnl6p") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Robot"] +mesh = SubResource("BoxMesh_oo1c2") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Robot"] +transform = Transform3D(-1, 1.50996e-07, -6.60024e-15, 0, -4.37114e-08, -1, -1.50996e-07, -1, 4.37114e-08, 0, 0.50484, -0.3) +mesh = SubResource("PrismMesh_nnl6p") + +[node name="indicator" type="Node3D" parent="Robot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) +visible = false + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="Robot/indicator"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +mesh = SubResource("TorusMesh_llm6e") +skeleton = NodePath("../..") +surface_material_override/0 = SubResource("StandardMaterial3D_jq1ic") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="Robot/indicator"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0) +mesh = SubResource("TorusMesh_llm6e") +skeleton = NodePath("../..") +surface_material_override/0 = SubResource("StandardMaterial3D_jq1ic") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="Robot/indicator"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2, 0) +mesh = SubResource("TorusMesh_llm6e") +skeleton = NodePath("../..") +surface_material_override/0 = SubResource("StandardMaterial3D_jq1ic") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Robot"] +shape = SubResource("CapsuleShape3D_llm6e") + +[node name="VoxelTerrain" type="VoxelTerrain" parent="."] +generator = SubResource("VoxelGeneratorFlat_llm6e") +mesher = SubResource("VoxelMesherBlocky_ofs8c") +bounds = AABB(-1040, -32, -1040, 2080, 96, 2080) +material_override = ExtResource("2_nnl6p") + +[node name="TerrainEditor" parent="VoxelTerrain" instance=ExtResource("4_llm6e")] + +[node name="ControllableCamera" parent="." instance=ExtResource("1_ecqtg")] +transform = Transform3D(0.97668, -0.143377, 0.159808, 0, 0.744336, 0.667805, -0.214699, -0.652232, 0.726979, 1.39679, 4.07542, 4.92893) + +[connection signal="input_event" from="Robot" to="Robot" method="_on_input_event"] diff --git a/nodes/robots/robot.gd b/nodes/robots/robot.gd new file mode 100644 index 0000000..83c68cf --- /dev/null +++ b/nodes/robots/robot.gd @@ -0,0 +1,56 @@ +extends CharacterBody3D + +@onready var terrain := get_node("../VoxelTerrain") as VoxelTerrain + +var selected := false +var path : Array[Vector3i] + +func _on_input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void: + if event is InputEventMouseButton and event.is_pressed(): + var button_event = event as InputEventMouseButton + if button_event.button_index == MOUSE_BUTTON_LEFT: + $indicator.visible = true + selected = true + elif button_event.button_index == MOUSE_BUTTON_RIGHT: + $indicator.visible = false + selected = false + +func _unhandled_input(event: InputEvent) -> void: + if selected: + if event is InputEventMouseButton and event.is_pressed(): + var button_event = event as InputEventMouseButton + if button_event.button_index == MOUSE_BUTTON_LEFT: + move_to_mouse_click() + elif button_event.button_index == MOUSE_BUTTON_RIGHT: + pass + +func move_to_mouse_click(): + var mouse_pos_2d := get_viewport().get_mouse_position() + var current_camera := get_viewport().get_camera_3d() + var origin := current_camera.project_ray_origin(mouse_pos_2d) + var dir := current_camera.project_ray_normal(mouse_pos_2d) + var res := terrain.get_voxel_tool().raycast(origin, dir, 100) + var path_finder := VoxelAStarGrid3D.new() + path_finder.set_terrain(terrain) + path_finder.set_region(AABB(Vector3.ONE * -100, Vector3.ONE * 200)) + path = path_finder.find_path(Vector3i(global_position), res.previous_position) + path.append(res.previous_position) + for step in path: + print(step) + +func _process(delta: float) -> void: + if not path.is_empty(): + var next_position := Vector3(path[0]) + Vector3.ONE * 0.5; + if path.size() == 1: + if next_position.distance_to(global_position) < 0.1: + rotation.x = 0 + rotation.y = round(rotation.y/(PI/2))*PI/2 + rotation.z = 0 + print("arrived") + if next_position.distance_to(global_position) < 0.1: + global_position = next_position + path.remove_at(0) + else: + look_at(next_position) + velocity = (next_position - global_position).normalized() * 5 + move_and_slide() diff --git a/nodes/robots/robot.gd.uid b/nodes/robots/robot.gd.uid new file mode 100644 index 0000000..878e5a5 --- /dev/null +++ b/nodes/robots/robot.gd.uid @@ -0,0 +1 @@ +uid://bnw0h8cuyf3g5 diff --git a/scenes/word/BlockLibrary.tres b/nodes/word/BlockLibrary.tres similarity index 92% rename from scenes/word/BlockLibrary.tres rename to nodes/word/BlockLibrary.tres index 1c156e0..58cc3a6 100644 --- a/scenes/word/BlockLibrary.tres +++ b/nodes/word/BlockLibrary.tres @@ -1,6 +1,6 @@ [gd_resource type="VoxelBlockyLibrary" load_steps=4 format=3 uid="uid://bsue4rd3wdfsl"] -[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://scenes/word/BlockMaterial.tres" id="1_evy8o"] +[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://nodes/word/BlockMaterial.tres" id="1_evy8o"] [sub_resource type="VoxelBlockyModelEmpty" id="VoxelBlockyModelEmpty_o5qli"] diff --git a/scenes/word/BlockMaterial.tres b/nodes/word/BlockMaterial.tres similarity index 80% rename from scenes/word/BlockMaterial.tres rename to nodes/word/BlockMaterial.tres index aa78859..aa71d2f 100644 --- a/scenes/word/BlockMaterial.tres +++ b/nodes/word/BlockMaterial.tres @@ -1,6 +1,6 @@ [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://de6s8en5fcyyw"] -[ext_resource type="Texture2D" uid="uid://bcctuptks33yd" path="res://scenes/word/blocky_game_atlas.webp" id="1_nmlo6"] +[ext_resource type="Texture2D" uid="uid://bcctuptks33yd" path="res://nodes/word/blocky_game_atlas.webp" id="1_nmlo6"] [resource] albedo_texture = ExtResource("1_nmlo6") diff --git a/scenes/word/blocky_game_atlas.webp b/nodes/word/blocky_game_atlas.webp similarity index 100% rename from scenes/word/blocky_game_atlas.webp rename to nodes/word/blocky_game_atlas.webp diff --git a/scenes/word/blocky_game_atlas.webp.import b/nodes/word/blocky_game_atlas.webp.import similarity index 69% rename from scenes/word/blocky_game_atlas.webp.import rename to nodes/word/blocky_game_atlas.webp.import index 27e058b..f27d625 100644 --- a/scenes/word/blocky_game_atlas.webp.import +++ b/nodes/word/blocky_game_atlas.webp.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://bcctuptks33yd" -path.s3tc="res://.godot/imported/blocky_game_atlas.webp-6bd280431e13b10c6f5b7a80949a8f67.s3tc.ctex" +path.s3tc="res://.godot/imported/blocky_game_atlas.webp-87ad14449ec94b96fe28d0038a51ce08.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://scenes/word/blocky_game_atlas.webp" -dest_files=["res://.godot/imported/blocky_game_atlas.webp-6bd280431e13b10c6f5b7a80949a8f67.s3tc.ctex"] +source_file="res://nodes/word/blocky_game_atlas.webp" +dest_files=["res://.godot/imported/blocky_game_atlas.webp-87ad14449ec94b96fe28d0038a51ce08.s3tc.ctex"] [params] diff --git a/nodes/word/terrain_editor.gd b/nodes/word/terrain_editor.gd new file mode 100644 index 0000000..11f4fa7 --- /dev/null +++ b/nodes/word/terrain_editor.gd @@ -0,0 +1,32 @@ +extends Node + +@onready var voxelTool := (get_parent() as VoxelTerrain).get_voxel_tool() + +var block_edit := false + +func _unhandled_input(event): + if event is InputEventMouseButton and event.is_pressed(): + if block_edit: + if event.button_index == MOUSE_BUTTON_LEFT: + perform_block_action(true) + elif event.button_index == MOUSE_BUTTON_RIGHT: + get_tree().create_timer(0.15).timeout.connect( + func(): + if not Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT): + perform_block_action(false) + ) + +func perform_block_action(add_block:bool)->void: + var mouse_pos_2d := get_viewport().get_mouse_position() + var current_camera := get_viewport().get_camera_3d() + var origin := current_camera.project_ray_origin(mouse_pos_2d) + var dir := current_camera.project_ray_normal(mouse_pos_2d) + var res := voxelTool.raycast(origin, dir, 50) + if res != null: + if add_block: + voxelTool.set_voxel(res.previous_position, 1) + else: + voxelTool.set_voxel(res.position, 0) + +func _on_button_toggled(toggled_on: bool) -> void: + block_edit = toggled_on diff --git a/nodes/word/terrain_editor.gd.uid b/nodes/word/terrain_editor.gd.uid new file mode 100644 index 0000000..dc182cd --- /dev/null +++ b/nodes/word/terrain_editor.gd.uid @@ -0,0 +1 @@ +uid://vnjdiql72brq diff --git a/nodes/word/terrain_editor.tscn b/nodes/word/terrain_editor.tscn new file mode 100644 index 0000000..c60a983 --- /dev/null +++ b/nodes/word/terrain_editor.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=3 uid="uid://ddyulj4dsrkms"] + +[ext_resource type="Script" uid="uid://vnjdiql72brq" path="res://nodes/word/terrain_editor.gd" id="1_6evft"] + +[node name="TerrainEditor" type="Node"] +script = ExtResource("1_6evft") + +[node name="Control" type="HBoxContainer" parent="."] +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 + +[node name="Button" type="Button" parent="Control"] +layout_mode = 2 +toggle_mode = true +text = "Block Edit" + +[connection signal="toggled" from="Control/Button" to="." method="_on_button_toggled"] diff --git a/scenes/word/voxel_world.tscn b/nodes/word/voxel_world.tscn similarity index 64% rename from scenes/word/voxel_world.tscn rename to nodes/word/voxel_world.tscn index f13132b..6b1b29b 100644 --- a/scenes/word/voxel_world.tscn +++ b/nodes/word/voxel_world.tscn @@ -1,7 +1,9 @@ -[gd_scene load_steps=9 format=3 uid="uid://bp6ewa3urgac8"] +[gd_scene load_steps=11 format=3 uid="uid://bp6ewa3urgac8"] -[ext_resource type="VoxelBlockyLibrary" uid="uid://bsue4rd3wdfsl" path="res://scenes/word/BlockLibrary.tres" id="1_yf87h"] -[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://scenes/word/BlockMaterial.tres" id="2_j4yt8"] +[ext_resource type="VoxelBlockyLibrary" uid="uid://bsue4rd3wdfsl" path="res://nodes/word/BlockLibrary.tres" id="1_yf87h"] +[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://nodes/word/BlockMaterial.tres" id="2_j4yt8"] +[ext_resource type="PackedScene" uid="uid://cy0nvmw51bwof" path="res://nodes/camera/controllable_camera.tscn" id="3_tcius"] +[ext_resource type="PackedScene" uid="uid://ddyulj4dsrkms" path="res://nodes/word/terrain_editor.tscn" id="3_v3kfg"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_gadlc"] sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) @@ -14,13 +16,13 @@ sky_material = SubResource("ProceduralSkyMaterial_gadlc") background_mode = 2 sky = SubResource("Sky_t8uwy") -[sub_resource type="FastNoiseLite" id="FastNoiseLite_3juxb"] +[sub_resource type="FastNoiseLite" id="FastNoiseLite_v3kfg"] [sub_resource type="VoxelGeneratorNoise2D" id="VoxelGeneratorNoise2D_mko3u"] channel = 0 height_start = 0.0 height_range = 20.0 -noise = SubResource("FastNoiseLite_3juxb") +noise = SubResource("FastNoiseLite_v3kfg") [sub_resource type="VoxelMesherBlocky" id="VoxelMesherBlocky_3tbtj"] library = ExtResource("1_yf87h") @@ -34,14 +36,14 @@ environment = SubResource("Environment_5g68j") transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, 0) shadow_enabled = true -[node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(-0.237189, -0.550881, 0.80017, 0, 0.823674, 0.567063, -0.971464, 0.134501, -0.195367, -10.8207, 13.7772, -16.0504) - -[node name="VoxelViewer" type="VoxelViewer" parent="Camera3D"] - [node name="VoxelTerrain" type="VoxelTerrain" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0) generator = SubResource("VoxelGeneratorNoise2D_mko3u") mesher = SubResource("VoxelMesherBlocky_3tbtj") bounds = AABB(-1040, -32, -1040, 2080, 96, 2080) material_override = ExtResource("2_j4yt8") + +[node name="TerrainEditor" parent="VoxelTerrain" instance=ExtResource("3_v3kfg")] + +[node name="ControllableCamera" parent="." instance=ExtResource("3_tcius")] +transform = Transform3D(-0.61081, -0.620921, 0.491291, 0, 0.620492, 0.784213, -0.791777, 0.479005, -0.379003, 34.4662, 28.9798, -20.4) diff --git a/project.godot b/project.godot index 863d51a..db2e783 100644 --- a/project.godot +++ b/project.godot @@ -11,6 +11,24 @@ config_version=5 [application] config/name="Cobor" -run/main_scene="uid://7q00x01xdsal" +run/main_scene="uid://d0b7m4vykcfy2" config/features=PackedStringArray("4.4") config/icon="res://icon.svg" + +[input] + +camera_control={ +"deadzone": 0.2, +"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":2,"position":Vector2(127, 25),"global_position":Vector2(136, 73),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +left_click={ +"deadzone": 0.2, +"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":1,"position":Vector2(229, 14),"global_position":Vector2(238, 62),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +right_click={ +"deadzone": 0.2, +"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":2,"position":Vector2(61, 10),"global_position":Vector2(70, 58),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} diff --git a/scenes/entities/Robots.tscn b/scenes/entities/Robots.tscn deleted file mode 100644 index 0a124d5..0000000 --- a/scenes/entities/Robots.tscn +++ /dev/null @@ -1,55 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://b84ihb5xw37pm"] - -[ext_resource type="VoxelBlockyLibrary" uid="uid://bsue4rd3wdfsl" path="res://scenes/word/BlockLibrary.tres" id="1_r886l"] -[ext_resource type="Material" uid="uid://de6s8en5fcyyw" path="res://scenes/word/BlockMaterial.tres" id="2_nnl6p"] - -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1sxe"] -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_0wfyh"] -sky_material = SubResource("ProceduralSkyMaterial_e1sxe") - -[sub_resource type="Environment" id="Environment_5yot8"] -background_mode = 2 -sky = SubResource("Sky_0wfyh") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o5qli"] -albedo_color = Color(0.313808, 0.455394, 0.721014, 1) - -[sub_resource type="BoxMesh" id="BoxMesh_oo1c2"] -material = SubResource("StandardMaterial3D_o5qli") - -[sub_resource type="VoxelGeneratorFlat" id="VoxelGeneratorFlat_r886l"] -channel = 0 - -[sub_resource type="VoxelMesherBlocky" id="VoxelMesherBlocky_na0f1"] -library = ExtResource("1_r886l") - -[node name="Robots" type="Node"] - -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource("Environment_5yot8") - -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, 0) -shadow_enabled = true - -[node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(0.0323208, -0.600077, 0.799289, 0, 0.799707, 0.600391, -0.999478, -0.0194051, 0.0258472, 5.78515, 9.22018, 0.62065) - -[node name="VoxelViewer" type="VoxelViewer" parent="Camera3D"] - -[node name="Robot" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Robot"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) -mesh = SubResource("BoxMesh_oo1c2") - -[node name="VoxelTerrain" type="VoxelTerrain" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0) -generator = SubResource("VoxelGeneratorFlat_r886l") -mesher = SubResource("VoxelMesherBlocky_na0f1") -bounds = AABB(-1040, -32, -1040, 2080, 96, 2080) -material_override = ExtResource("2_nnl6p")