From e76a7b1f830348e5e8a45198d0336399b4211816 Mon Sep 17 00:00:00 2001 From: effie Date: Sat, 28 Jun 2025 15:55:28 +1000 Subject: [PATCH] File renaming pass --- game.gd | 1 + game.gd.uid | 1 + game.tscn | 50 +++++ interface/game_cam.gd | 26 +++ interface/game_cam.gd.uid | 1 + main.tscn | 46 ---- map/base_map/grid.gd | 197 ------------------ places/base_place/place.gd | 178 ++++++++++++++++ .../base_place/place.gd.uid | 0 .../base_place/test_place.tscn | 6 +- map/map_manager.gd => places/place_manager.gd | 26 +-- .../place_manager.gd.uid | 0 .../place_manager.tscn | 12 +- project.godot | 30 +++ 14 files changed, 309 insertions(+), 265 deletions(-) create mode 100644 game.gd create mode 100644 game.gd.uid create mode 100644 game.tscn create mode 100644 interface/game_cam.gd create mode 100644 interface/game_cam.gd.uid delete mode 100644 main.tscn delete mode 100644 map/base_map/grid.gd create mode 100644 places/base_place/place.gd rename map/base_map/grid.gd.uid => places/base_place/place.gd.uid (100%) rename map/base_map/test_map.tscn => places/base_place/test_place.tscn (75%) rename map/map_manager.gd => places/place_manager.gd (62%) rename map/map_manager.gd.uid => places/place_manager.gd.uid (100%) rename map/map_manager.tscn => places/place_manager.tscn (54%) diff --git a/game.gd b/game.gd new file mode 100644 index 0000000..61510e1 --- /dev/null +++ b/game.gd @@ -0,0 +1 @@ +extends Node diff --git a/game.gd.uid b/game.gd.uid new file mode 100644 index 0000000..bbbefea --- /dev/null +++ b/game.gd.uid @@ -0,0 +1 @@ +uid://b2ytri51qn3r0 diff --git a/game.tscn b/game.tscn new file mode 100644 index 0000000..dda5d3b --- /dev/null +++ b/game.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=4 format=3 uid="uid://x8xo5b1b3q41"] + +[ext_resource type="Script" uid="uid://b2ytri51qn3r0" path="res://game.gd" id="1_feb5d"] +[ext_resource type="PackedScene" uid="uid://0d1d5e1u2fys" path="res://places/place_manager.tscn" id="2_fc0e3"] +[ext_resource type="Script" uid="uid://cgfibq8ku7tey" path="res://interface/game_cam.gd" id="3_7jktm"] + +[node name="Game" type="Node"] +script = ExtResource("1_feb5d") + +[node name="InterfaceLayer" type="CanvasLayer" parent="."] + +[node name="SelectToggle" type="CheckButton" parent="InterfaceLayer"] +offset_left = 1008.0 +offset_top = 18.0 +offset_right = 1120.0 +offset_bottom = 49.0 +text = "Building" + +[node name="BuildButton" type="Button" parent="InterfaceLayer"] +offset_left = 1033.0 +offset_top = 59.0 +offset_right = 1081.0 +offset_bottom = 90.0 +text = "Build" + +[node name="DestroyButton" type="Button" parent="InterfaceLayer"] +offset_left = 1031.0 +offset_top = 105.0 +offset_right = 1079.0 +offset_bottom = 136.0 +text = "Destroy +" + +[node name="CancelButton" type="Button" parent="InterfaceLayer"] +offset_left = 1031.0 +offset_top = 145.0 +offset_right = 1091.0 +offset_bottom = 176.0 +text = "Cancel" + +[node name="GameCam" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 16.504, 23.621, 15.103) +script = ExtResource("3_7jktm") + +[node name="PlaceManager" parent="." instance=ExtResource("2_fc0e3")] + +[connection signal="toggled" from="InterfaceLayer/SelectToggle" to="PlaceManager" method="_on_build_toggle"] +[connection signal="pressed" from="InterfaceLayer/BuildButton" to="PlaceManager" method="_on_build_button_pressed"] +[connection signal="pressed" from="InterfaceLayer/DestroyButton" to="PlaceManager" method="_on_destroy_button_pressed"] +[connection signal="pressed" from="InterfaceLayer/CancelButton" to="PlaceManager" method="_on_cancel_button_pressed"] diff --git a/interface/game_cam.gd b/interface/game_cam.gd new file mode 100644 index 0000000..d064709 --- /dev/null +++ b/interface/game_cam.gd @@ -0,0 +1,26 @@ +extends Camera3D + +@export var cam_max_pan_speed = 0.5 +@export var cam_max_zoom_speed = 2 + +func _process(delta: float) -> void: + move_camera() + +func move_camera(): + if Input.is_action_pressed("main_cam_up"): + position.z = position.z - cam_max_pan_speed + + if Input.is_action_pressed("main_cam_right"): + position.x = position.x + cam_max_pan_speed + + if Input.is_action_pressed("main_cam_down"): + position.z = position.z + cam_max_pan_speed + + if Input.is_action_pressed("main_cam_left"): + position.x = position.x - cam_max_pan_speed + + if Input.is_action_just_released("main_cam_in"): + fov = fov - cam_max_zoom_speed + + if Input.is_action_just_released("main_cam_out"): + fov = fov + cam_max_zoom_speed diff --git a/interface/game_cam.gd.uid b/interface/game_cam.gd.uid new file mode 100644 index 0000000..55b283e --- /dev/null +++ b/interface/game_cam.gd.uid @@ -0,0 +1 @@ +uid://cgfibq8ku7tey diff --git a/main.tscn b/main.tscn deleted file mode 100644 index 5e7d4da..0000000 --- a/main.tscn +++ /dev/null @@ -1,46 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://x8xo5b1b3q41"] - -[ext_resource type="PackedScene" uid="uid://0d1d5e1u2fys" path="res://map/map_manager.tscn" id="1_ig7tw"] - -[node name="Main" type="Node"] - -[node name="CanvasLayer" type="CanvasLayer" parent="."] - -[node name="SelectToggle" type="CheckButton" parent="CanvasLayer"] -offset_left = 1008.0 -offset_top = 18.0 -offset_right = 1120.0 -offset_bottom = 49.0 -text = "Building" - -[node name="BuildButton" type="Button" parent="CanvasLayer"] -offset_left = 1033.0 -offset_top = 59.0 -offset_right = 1081.0 -offset_bottom = 90.0 -text = "Build" - -[node name="DestroyButton" type="Button" parent="CanvasLayer"] -offset_left = 1031.0 -offset_top = 105.0 -offset_right = 1079.0 -offset_bottom = 136.0 -text = "Destroy -" - -[node name="CancelButton" type="Button" parent="CanvasLayer"] -offset_left = 1031.0 -offset_top = 145.0 -offset_right = 1091.0 -offset_bottom = 176.0 -text = "Cancel" - -[node name="MapManager" parent="." instance=ExtResource("1_ig7tw")] - -[node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 16.504, 23.621, 15.103) - -[connection signal="toggled" from="CanvasLayer/SelectToggle" to="MapManager" method="_build_toggled"] -[connection signal="pressed" from="CanvasLayer/BuildButton" to="MapManager" method="_on_build_button_pressed"] -[connection signal="pressed" from="CanvasLayer/DestroyButton" to="MapManager" method="_on_destroy_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CancelButton" to="MapManager" method="_on_cancel_button_pressed"] diff --git a/map/base_map/grid.gd b/map/base_map/grid.gd deleted file mode 100644 index 09bd3ff..0000000 --- a/map/base_map/grid.gd +++ /dev/null @@ -1,197 +0,0 @@ -extends Node3D - -var gridsize = 32 -var astar_grid_room = AStarGrid2D.new() - -var load_tile = preload("res://tiles/base_tile/tile.tscn") - -var tile_dict = {} - -var selection_drag_dict = {} -var selection_dict = {} - -var tile_count_x_hist = null -var tile_count_z_hist = null - -var build_forbidden = false - -func _ready(): - -# Sets up a simple 2D grid of blank tiles. - - for x in range(gridsize): - for z in range (gridsize): - var pos = Vector3i(x + 0.5,0 ,z + 0.5) - - var tile = load_tile.instantiate() - tile.set_position(pos) - tile.type = 0 - - tile_dict[pos] = tile - - add_child(tile) - - -func build_selection(b): - - if build_forbidden: - print("No fucking building aaaaaa") - return -# When the build or destroy button is clicked, changes the selected tiles to match the button's request - - for i in selection_dict: - var tile_selected = tile_dict[i] - tile_selected.build_this_tile(b) - - selection_dict.clear() - - for i in tile_dict: - if not selection_dict.has(i): - var tile_selected = tile_dict[i] - tile_selected.select_this_tile(false) - -func clear_selection(): - -# When the clear button is clicked, it clears the selected tiles without doing anything. - - for i in tile_dict: - var tile_selected = tile_dict[i] - tile_selected.select_this_tile(false) - - selection_dict.clear() - -func end_select_drag(): - -# Locks in the dragged tiles on mouse-up - - tile_count_x_hist = 0 - tile_count_z_hist = 0 - - selection_dict.merge(selection_drag_dict) - - if not verify_room(): - build_forbidden = true - - selection_drag_dict.clear() - -func draw_tile_click(start_pos): - - var build_start_pos: Vector3i = start_pos.snapped(Vector3i(1, 1, 1)) - tile_count_x_hist = 0 - tile_count_z_hist = 0 - - select_tile(build_start_pos) - -func init_select_drag(float_build_start_pos, float_build_mouse_pos): - - var select_drag_array = [] - - var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0)) - var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0)) - - var tile_count_x = build_mouse_pos.x - build_start_pos.x - var tile_count_z = build_mouse_pos.z - build_start_pos.z - - if not tile_count_x_hist == tile_count_x or not tile_count_z_hist == tile_count_z: - - tile_count_x_hist = tile_count_x - tile_count_z_hist = tile_count_z - - for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1): - for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1): - var select_drag_pos = build_start_pos + Vector3i(x, 0, z) - - select_drag_array.append(select_drag_pos) - - draw_select_drag(select_drag_array) - -func draw_select_drag(array): - - selection_drag_dict.clear() - - for i in tile_dict: - if not selection_dict.has(i): - var tile_selected = tile_dict[i] - tile_selected.select_this_tile(false) - - for i in array: - var id = i - select_tile(id) - -func select_tile(pos): - - if tile_dict.has(pos): - - var tile = tile_dict[pos] - - tile.select_this_tile(true) - - selection_drag_dict[pos] = tile - -func verify_room(): - - if selection_dict == selection_drag_dict: - return true - - var verify_array = selection_dict.keys() - var verify_queue_array = [verify_array[0]] - var verify_checked_array = [] - - while verify_array: - if not verify_queue_array: - return false - - var verify_pos = verify_queue_array[0] - - if selection_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)): - if not verify_checked_array.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)): - if not verify_queue_array.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)): - verify_queue_array.append(Vector3i(verify_pos.x + 1, 0, verify_pos.z)) - - if selection_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)): - if not verify_checked_array.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)): - if not verify_queue_array.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)): - verify_queue_array.append(Vector3i(verify_pos.x - 1, 0, verify_pos.z)) - - if selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)): - if not verify_checked_array.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)): - if not verify_queue_array.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)): - verify_queue_array.append(Vector3i(verify_pos.x, 0, verify_pos.z + 1)) - - if selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)): - if not verify_checked_array.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)): - if not verify_queue_array.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)): - verify_queue_array.append(Vector3i(verify_pos.x, 0, verify_pos.z - 1)) - - verify_checked_array.append(verify_pos) - verify_queue_array.erase(verify_pos) - verify_array.erase(verify_pos) - - return true - - - - - - - #if verify_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)) && not verified.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)): - #verified.append(verify_pos) - #verify_pos = Vector3i(verify_pos.x + 1, 0, verify_pos.z) - #elif verify_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)): - #verified.append(verify_pos) - #verify_pos = Vector3i(verify_pos.x - 1, 0, verify_pos.z) - #elif verify_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)): - #verified.append(verify_pos) - #verify_pos = Vector3i(verify_pos.x, 0, verify_pos.z + 1) - #elif verify_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)): - #verified.append(verify_pos) - #verify_pos = Vector3i(verify_pos.x, 0, verify_pos.z - 1) - #else: - #verify_dict.erase(verify_pos) - #if verify_dict: - #print(verify_dict) - #return false - - return true - #if selection_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)) or (selection_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z))) or (selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1))) or (selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1))): - #verify_dict.erase(verify_pos) diff --git a/places/base_place/place.gd b/places/base_place/place.gd new file mode 100644 index 0000000..0302a7a --- /dev/null +++ b/places/base_place/place.gd @@ -0,0 +1,178 @@ +extends Node3D + +var tile_grid_size = 64 +var astar_grid_room = AStarGrid2D.new() + +var load_tile = preload("res://tiles/base_tile/tile.tscn") + +var tile_dict = {} + +var selection_drag_dict = {} +var selection_dict = {} + +var tile_count_x_hist = null +var tile_count_z_hist = null + +var build_forbidden = false + +func _ready(): + +# Sets up a simple 2D grid of blank tiles. + + for x in range(tile_grid_size): + for z in range (tile_grid_size): + var pos = Vector3i(x + 0.5,0 ,z + 0.5) + + var tile = load_tile.instantiate() + tile.set_position(pos) + tile.type = 0 + + tile_dict[pos] = tile + + add_child(tile) + + +func build_selection(b): + +# When the build or destroy button is clicked, changes the selected tiles to match the button's request + + if build_forbidden: + print("can't build") + return + + for i in selection_dict: + var tile_selected = tile_dict[i] + tile_selected.build_this_tile(b) + + selection_dict.clear() + + for i in tile_dict: + if not selection_dict.has(i): + var tile_selected = tile_dict[i] + tile_selected.select_this_tile(false) + +func clear_selection(): + +# When the clear button is clicked, it clears the selected tiles without doing anything. + + for i in tile_dict: + var tile_selected = tile_dict[i] + tile_selected.select_this_tile(false) + + selection_dict.clear() + +func end_select_drag(): + +# Adds dragged tiles to the current selection on mouse-up + + tile_count_x_hist = 0 + tile_count_z_hist = 0 + + selection_dict.merge(selection_drag_dict) + + if verify_room(): + build_forbidden = false + else: + build_forbidden = true + + selection_drag_dict.clear() + +func draw_tile_click(start_pos): + +# starts a selection drag + + var build_start_pos: Vector3i = start_pos.snapped(Vector3i(1, 1, 1)) + tile_count_x_hist = 0 + tile_count_z_hist = 0 + + if tile_dict.has(build_start_pos): + select_tile(build_start_pos) + +func init_select_drag(float_build_start_pos, float_build_mouse_pos): + +# Creats an array of dragged tiles between mouse start and current position + + var select_drag_array = [] + + var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0)) + var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0)) + + var tile_count_x = build_mouse_pos.x - build_start_pos.x + var tile_count_z = build_mouse_pos.z - build_start_pos.z + + if not tile_count_x_hist == tile_count_x or not tile_count_z_hist == tile_count_z: + + tile_count_x_hist = tile_count_x + tile_count_z_hist = tile_count_z + + for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1): + for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1): + var select_drag_pos = build_start_pos + Vector3i(x, 0, z) + if tile_dict.has(select_drag_pos): + select_drag_array.append(select_drag_pos) + + if select_drag_array: + draw_select_drag(select_drag_array) + +func draw_select_drag(array): + +# Clears previous drag, then calls tile selection on all currently dragged tiles + + selection_drag_dict.clear() + + for i in tile_dict: + if not selection_dict.has(i): + var tile_selected = tile_dict[i] + tile_selected.select_this_tile(false) + + for i in array: + var id = i + select_tile(id) + +func select_tile(pos): + +# Tells tiles to be selected + + var tile = tile_dict[pos] + tile.select_this_tile(true) + selection_drag_dict[pos] = tile + +func verify_room(): + +# Verifies that a given selection is fully contiguous + + if selection_dict == selection_drag_dict: + return true + + var verify_array = selection_dict.keys() + var verify_queue_array = [verify_array[0]] + var verify_checked_array = [] + + while verify_array: + if not verify_queue_array: + print("no good") + return false + + var verify_pos = verify_queue_array.pop_back() + + var verify_neighbor_array = [ + Vector3i(verify_pos.x + 1, 0, verify_pos.z), + Vector3i(verify_pos.x - 1, 0, verify_pos.z), + Vector3i(verify_pos.x, 0, verify_pos.z + 1), + Vector3i(verify_pos.x, 0, verify_pos.z - 1) + ] + + + for n in verify_neighbor_array: + + if selection_dict.has(n): + if not verify_checked_array.has(n): + if not verify_queue_array.has(n): + verify_queue_array.append(n) + + verify_checked_array.append(verify_pos) + + verify_array.erase(verify_pos) + + print("all good") + return true diff --git a/map/base_map/grid.gd.uid b/places/base_place/place.gd.uid similarity index 100% rename from map/base_map/grid.gd.uid rename to places/base_place/place.gd.uid diff --git a/map/base_map/test_map.tscn b/places/base_place/test_place.tscn similarity index 75% rename from map/base_map/test_map.tscn rename to places/base_place/test_place.tscn index 07f3ddd..a9da708 100644 --- a/map/base_map/test_map.tscn +++ b/places/base_place/test_place.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=2 format=3 uid="uid://bujuwgn3y42ek"] -[ext_resource type="Script" uid="uid://n4vvqmlmq5fp" path="res://map/base_map/grid.gd" id="1_2j6sh"] +[ext_resource type="Script" uid="uid://n4vvqmlmq5fp" path="res://places/base_place/place.gd" id="1_5eudc"] -[node name="TestWorld" type="Node3D"] -script = ExtResource("1_2j6sh") +[node name="TestPlace" type="Node3D"] +script = ExtResource("1_5eudc") [node name="Grid" type="Node3D" parent="."] diff --git a/map/map_manager.gd b/places/place_manager.gd similarity index 62% rename from map/map_manager.gd rename to places/place_manager.gd index c4d562a..dca0939 100644 --- a/map/map_manager.gd +++ b/places/place_manager.gd @@ -1,7 +1,7 @@ extends Node3D -var load_map = preload("res://map/base_map/test_map.tscn") -var map = load_map.instantiate() +var load_place = preload("res://places/base_place/test_place.tscn") +var place = load_place.instantiate() var build_enabled = false var is_building = false @@ -9,42 +9,42 @@ var is_building = false var build_start_pos = null func _ready(): - add_child(map) + add_child(place) func _input(event): pass -func _build_toggled(toggled_on): +func _on_build_toggle(toggled_on): build_enabled = toggled_on func toggle_building(event): is_building = event.button_mask func _on_area_3d_input_event(_camera, event, event_position, _normal, _shade_id): + +# Checks input events from the mouse plane + if event.is_action_pressed("select") && build_enabled: build_start_pos = event_position toggle_building(event) - map.draw_tile_click(build_start_pos) + place.draw_tile_click(build_start_pos) if is_building: if event.button_mask: var build_mouse_pos = event_position - map.init_select_drag(build_start_pos, build_mouse_pos) + place.init_select_drag(build_start_pos, build_mouse_pos) if not event.button_mask: toggle_building(event) - map.end_select_drag() - - pass - + place.end_select_drag() func _on_cancel_button_pressed() -> void: - map.clear_selection() + place.clear_selection() func _on_build_button_pressed() -> void: - map.build_selection(true) + place.build_selection(true) func _on_destroy_button_pressed() -> void: - map.build_selection(false) + place.build_selection(false) diff --git a/map/map_manager.gd.uid b/places/place_manager.gd.uid similarity index 100% rename from map/map_manager.gd.uid rename to places/place_manager.gd.uid diff --git a/map/map_manager.tscn b/places/place_manager.tscn similarity index 54% rename from map/map_manager.tscn rename to places/place_manager.tscn index d1d6cdb..6ce29b4 100644 --- a/map/map_manager.tscn +++ b/places/place_manager.tscn @@ -1,22 +1,22 @@ [gd_scene load_steps=4 format=3 uid="uid://0d1d5e1u2fys"] -[ext_resource type="Script" uid="uid://d24sr2dat4lj0" path="res://map/map_manager.gd" id="1_rcbs8"] +[ext_resource type="Script" uid="uid://d24sr2dat4lj0" path="res://places/place_manager.gd" id="1_rcbs8"] [sub_resource type="BoxShape3D" id="BoxShape3D_rcbs8"] size = Vector3(256, 0, 256) [sub_resource type="PrismMesh" id="PrismMesh_rcbs8"] -[node name="MapManager" type="Node3D"] +[node name="PlaceManager" type="Node3D"] script = ExtResource("1_rcbs8") -[node name="Area3D" type="Area3D" parent="."] +[node name="FloorPlane" type="Area3D" parent="."] -[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="FloorPlane"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 128, 0, 128) shape = SubResource("BoxShape3D_rcbs8") -[node name="MeshInstance3D" type="MeshInstance3D" parent="Area3D"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="FloorPlane"] mesh = SubResource("PrismMesh_rcbs8") -[connection signal="input_event" from="Area3D" to="." method="_on_area_3d_input_event"] +[connection signal="input_event" from="FloorPlane" to="." method="_on_area_3d_input_event"] diff --git a/project.godot b/project.godot index fc9ee45..c8eda93 100644 --- a/project.godot +++ b/project.godot @@ -22,6 +22,36 @@ select={ "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,"canceled":false,"pressed":false,"double_click":false,"script":null) ] } +main_cam_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":79,"key_label":0,"unicode":111,"location":0,"echo":false,"script":null) +] +} +main_cam_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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +main_cam_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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +main_cam_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":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null) +] +} +main_cam_in={ +"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":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +main_cam_out={ +"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":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} [physics]