Преглед изворни кода

Update 2.5D GDScript demo to display the editor plugin in Godot 4.

Christen Lofland пре 1 година
родитељ
комит
3ef6a15741

+ 7 - 4
misc/2.5d/addons/node25d/main_screen/gizmo_25d.gd

@@ -22,11 +22,12 @@ var dominant_axis
 @onready var lines_root = $Lines
 @onready var lines = [$Lines/X, $Lines/Y, $Lines/Z]
 
+
 func _process(_delta):
 	if not lines:
-		return # Somehow this node hasn't been set up yet.
+		return  # Somehow this node hasn't been set up yet.
 	if not node_25d:
-		return # We're most likely viewing the Gizmo25D scene.
+		return  # We're most likely viewing the Gizmo25D scene.
 	# While getting the mouse position works in any viewport, it doesn't do
 	# anything significant unless the mouse is in the 2.5D viewport.
 	var mouse_position = get_local_mouse_position()
@@ -35,7 +36,7 @@ func _process(_delta):
 		var closest_distance = 20.0
 		dominant_axis = -1
 		for i in range(3):
-			lines[i].modulate.a = 0.8 # Unrelated, but needs a loop too.
+			lines[i].modulate.a = 0.8  # Unrelated, but needs a loop too.
 			var distance = _distance_to_segment_at_index(i, mouse_position)
 			if distance < closest_distance:
 				closest_distance = distance
@@ -70,7 +71,9 @@ func _process(_delta):
 		# Make sure the gizmo is located at the object.
 		global_position = node_25d.global_position
 		if ROUGHLY_ROUND_TO_PIXELS:
-			spatial_node.transform.origin = (spatial_node.transform.origin * Node25D.SCALE).round() / Node25D.SCALE
+			spatial_node.transform.origin = (
+				(spatial_node.transform.origin * Node25D.SCALE).round() / Node25D.SCALE
+			)
 	# Move the gizmo lines appropriately.
 	lines_root.global_position = node_25d.global_position
 	node_25d.property_list_changed_notify()

+ 38 - 97
misc/2.5d/addons/node25d/main_screen/main_screen_25d.tscn

@@ -1,173 +1,114 @@
-[gd_scene load_steps=5 format=2]
+[gd_scene load_steps=5 format=3 uid="uid://d3xt5cbt06bfy"]
 
-[ext_resource path="res://addons/node25d/main_screen/viewport_25d.gd" type="Script" id=1]
-[ext_resource path="res://addons/node25d/main_screen/view_mode_button_group.tres" type="ButtonGroup" id=2]
+[ext_resource type="Script" path="res://addons/node25d/main_screen/viewport_25d.gd" id="1"]
+[ext_resource type="ButtonGroup" path="res://addons/node25d/main_screen/view_mode_button_group.tres" id="2"]
 
-[sub_resource type="ViewportTexture" id=1]
+[sub_resource type="ViewportTexture" id="1"]
 viewport_path = NodePath("Viewport25D/Viewport2D")
 
-[sub_resource type="ViewportTexture" id=2]
+[sub_resource type="ViewportTexture" id="2"]
 viewport_path = NodePath("Viewport25D/ViewportOverlay")
 
 [node name="MainScreen25D" type="VBoxContainer"]
+anchors_preset = 15
 anchor_right = 1.0
 anchor_bottom = 1.0
 size_flags_horizontal = 3
 size_flags_vertical = 3
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="TopBar" type="HBoxContainer" parent="."]
-offset_right = 1600.0
-offset_bottom = 32.0
-rect_min_size = Vector2(0, 32)
+layout_mode = 2
 size_flags_horizontal = 3
 
 [node name="ViewModeButtons" type="HBoxContainer" parent="TopBar"]
-offset_right = 798.0
-offset_bottom = 32.0
+layout_mode = 2
 size_flags_horizontal = 3
 
 [node name="45Degree" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_right = 94.0
-offset_bottom = 32.0
-pressed = true
-group = ExtResource( 2 )
+layout_mode = 2
+button_pressed = true
+button_group = ExtResource("2")
 text = "45 Degree"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="Isometric" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_left = 98.0
-offset_right = 188.0
-offset_bottom = 32.0
-group = ExtResource( 2 )
+layout_mode = 2
+button_group = ExtResource("2")
 text = "Isometric"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="TopDown" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_left = 192.0
-offset_right = 283.0
-offset_bottom = 32.0
-group = ExtResource( 2 )
+layout_mode = 2
+button_group = ExtResource("2")
 text = "Top Down"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="FrontSide" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_left = 287.0
-offset_right = 379.0
-offset_bottom = 32.0
-group = ExtResource( 2 )
+layout_mode = 2
+button_group = ExtResource("2")
 text = "Front Side"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="ObliqueY" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_left = 383.0
-offset_right = 473.0
-offset_bottom = 32.0
-group = ExtResource( 2 )
+layout_mode = 2
+button_group = ExtResource("2")
 text = "Oblique Y"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="ObliqueZ" type="CheckBox" parent="TopBar/ViewModeButtons"]
-offset_left = 477.0
-offset_right = 568.0
-offset_bottom = 32.0
-group = ExtResource( 2 )
+layout_mode = 2
+button_group = ExtResource("2")
 text = "Oblique Z"
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="Zoom" type="HBoxContainer" parent="TopBar"]
-offset_left = 802.0
-offset_right = 1600.0
-offset_bottom = 32.0
+layout_mode = 2
 size_flags_horizontal = 3
 alignment = 2
 
 [node name="ZoomOut" type="Button" parent="TopBar/Zoom"]
-offset_left = 680.0
-offset_right = 710.0
-offset_bottom = 32.0
-rect_min_size = Vector2(30, 0)
+layout_mode = 2
 text = "-"
 
 [node name="ZoomPercent" type="Label" parent="TopBar/Zoom"]
-offset_left = 714.0
-offset_top = 9.0
-offset_right = 764.0
-offset_bottom = 23.0
-rect_min_size = Vector2(50, 0)
+layout_mode = 2
 text = "100%"
-align = 1
+horizontal_alignment = 1
 clip_text = true
 
 [node name="ZoomReset" type="Button" parent="TopBar/Zoom/ZoomPercent"]
 modulate = Color(1, 1, 1, 0)
+layout_mode = 0
 anchor_right = 1.0
 anchor_bottom = 1.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="ZoomIn" type="Button" parent="TopBar/Zoom"]
-offset_left = 768.0
-offset_right = 798.0
-offset_bottom = 32.0
-rect_min_size = Vector2(30, 0)
+layout_mode = 2
 text = "+"
 
 [node name="Viewport25D" type="ColorRect" parent="."]
-offset_top = 36.0
-offset_right = 1600.0
-offset_bottom = 900.0
-rect_clip_content = true
+layout_mode = 2
 size_flags_horizontal = 3
 size_flags_vertical = 3
 color = Color(0.301961, 0.301961, 0.301961, 1)
-script = ExtResource( 1 )
+script = ExtResource("1")
 
 [node name="Viewport2D" type="SubViewport" parent="Viewport25D"]
-size = Vector2(1600, 864)
-transparent_bg = true
 disable_3d = true
-usage = 1
-render_target_v_flip = true
+transparent_bg = true
+size = Vector2i(1600, 864)
 
 [node name="ViewportOverlay" type="SubViewport" parent="Viewport25D"]
-size = Vector2(1600, 864)
-transparent_bg = true
 disable_3d = true
-usage = 1
-render_target_v_flip = true
+transparent_bg = true
+size = Vector2i(1600, 864)
 
 [node name="ViewportTexture" type="TextureRect" parent="Viewport25D"]
+layout_mode = 0
 anchor_right = 1.0
 anchor_bottom = 1.0
-texture = SubResource( 1 )
-expand = true
-__meta__ = {
-"_edit_use_anchors_": false
-}
+texture = SubResource("1")
+expand_mode = 1
 
 [node name="Overlay" type="TextureRect" parent="Viewport25D/ViewportTexture"]
+layout_mode = 0
 anchor_right = 1.0
 anchor_bottom = 1.0
-texture = SubResource( 2 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
+texture = SubResource("2")
 
 [connection signal="pressed" from="TopBar/Zoom/ZoomOut" to="Viewport25D" method="_on_ZoomOut_pressed"]
 [connection signal="pressed" from="TopBar/Zoom/ZoomPercent/ZoomReset" to="Viewport25D" method="_on_ZoomReset_pressed"]

+ 15 - 11
misc/2.5d/addons/node25d/main_screen/viewport_25d.gd

@@ -7,15 +7,16 @@ var pan_center: Vector2
 var viewport_center: Vector2
 var view_mode_index := 0
 
-var editor_interface: EditorInterface # Set in node25d_plugin.gd
+var editor_interface: EditorInterface  # Set in node25d_plugin.gd
 var moving = false
 
 @onready var viewport_2d = $Viewport2D
 @onready var viewport_overlay = $ViewportOverlay
-@onready var view_mode_button_group: ButtonGroup = $"../TopBar/ViewModeButtons/45Degree".group
+@onready var view_mode_button_group: ButtonGroup = $"../TopBar/ViewModeButtons/45Degree".button_group
 @onready var zoom_label: Label = $"../TopBar/Zoom/ZoomPercent"
 @onready var gizmo_25d_scene = preload("res://addons/node25d/main_screen/gizmo_25d.tscn")
 
+
 func _ready():
 	# Give Godot a chance to fully load the scene. Should take two frames.
 	await get_tree().process_frame
@@ -29,17 +30,19 @@ func _ready():
 	# Alright, we're loaded up. Now check if we have a valid world and assign it.
 	var world_2d = edited_scene_root.get_viewport().world_2d
 	if world_2d == get_viewport().world_2d:
-		return # This is the MainScreen25D scene opened in the editor!
+		return  # This is the MainScreen25D scene opened in the editor!
 	viewport_2d.world_2d = world_2d
 
 
-func _process(delta):
-	if not editor_interface: # Something's not right... bail!
+func _process(_delta):
+	if not editor_interface:  # Something's not right... bail!
 		return
 
 	# View mode polling.
 	var view_mode_changed_this_frame = false
-	var new_view_mode = view_mode_button_group.get_pressed_button().get_index()
+	var new_view_mode = -1
+	if view_mode_button_group.get_pressed_button():
+		new_view_mode = view_mode_button_group.get_pressed_button().get_index()
 	if view_mode_index != new_view_mode:
 		view_mode_index = new_view_mode
 		view_mode_changed_this_frame = true
@@ -123,14 +126,15 @@ func _gui_input(event):
 
 
 func _recursive_change_view_mode(current_node):
-	if current_node.has_method("set_view_mode"):
-		current_node.set_view_mode(view_mode_index)
-	for child in current_node.get_children():
-		_recursive_change_view_mode(child)
+	if current_node:
+		if current_node.has_method("set_view_mode"):
+			current_node.set_view_mode(view_mode_index)
+		for child in current_node.get_children():
+			_recursive_change_view_mode(child)
 
 
 func _get_zoom_amount():
-	var zoom_amount = pow(1.05476607648, zoom_level) # 13th root of 2
+	var zoom_amount = pow(1.05476607648, zoom_level)  # 13th root of 2
 	zoom_label.text = str(round(zoom_amount * 1000) / 10) + "%"
 	return zoom_amount
 

+ 23 - 13
misc/2.5d/addons/node25d/node25d_plugin.gd

@@ -5,43 +5,53 @@ const MainPanel = preload("res://addons/node25d/main_screen/main_screen_25d.tscn
 
 var main_panel_instance
 
+
 func _enter_tree():
 	main_panel_instance = MainPanel.instantiate()
 	main_panel_instance.get_child(1).editor_interface = get_editor_interface()
 
 	# Add the main panel to the editor's main viewport.
-	get_editor_interface().get_editor_viewport().add_child(main_panel_instance)
+	EditorInterface.get_editor_main_screen().add_child(main_panel_instance)
 
 	# Hide the main panel.
-	make_visible(false)
+	_make_visible(false)
 	# When this plugin node enters tree, add the custom types.
 	add_custom_type("Node25D", "Node2D", preload("node_25d.gd"), preload("icons/node_25d_icon.png"))
-	add_custom_type("YSort25D", "Node", preload("y_sort_25d.gd"), preload("icons/y_sort_25d_icon.png"))
-	add_custom_type("ShadowMath25D", "CharacterBody3D", preload("shadow_math_25d.gd"), preload("icons/shadow_math_25d_icon.png"))
+	add_custom_type(
+		"YSort25D", "Node", preload("y_sort_25d.gd"), preload("icons/y_sort_25d_icon.png")
+	)
+	add_custom_type(
+		"ShadowMath25D",
+		"CharacterBody3D",
+		preload("shadow_math_25d.gd"),
+		preload("icons/shadow_math_25d_icon.png")
+	)
 
 
 func _exit_tree():
-	main_panel_instance.queue_free()
+	if main_panel_instance:
+		main_panel_instance.queue_free()
 	# When the plugin node exits the tree, remove the custom types.
 	remove_custom_type("ShadowMath25D")
 	remove_custom_type("YSort25D")
 	remove_custom_type("Node25D")
 
 
-func has_main_screen():
+func _has_main_screen():
 	return true
 
 
-func make_visible(visible):
-	if visible:
-		main_panel_instance.show()
-	else:
-		main_panel_instance.hide()
+func _make_visible(visible):
+	if main_panel_instance:
+		if visible:
+			main_panel_instance.show()
+		else:
+			main_panel_instance.hide()
 
 
-func get_plugin_name():
+func _get_plugin_name():
 	return "2.5D"
 
 
-func get_plugin_icon():
+func _get_plugin_icon():
 	return preload("res://addons/node25d/icons/viewport_25d.svg")

+ 24 - 24
misc/2.5d/project.godot

@@ -16,7 +16,7 @@ in Godot by mixing 2D and 3D nodes. It also adds a
 2.5D editor viewport for easily editing 2.5D levels."
 config/tags=PackedStringArray("2d", "demo", "official")
 run/main_scene="res://assets/demo_scene.tscn"
-config/features=PackedStringArray("4.2")
+config/features=PackedStringArray("4.3")
 config/icon="res://icon.webp"
 
 [display]
@@ -34,120 +34,120 @@ enabled=PackedStringArray("res://addons/node25d/plugin.cfg")
 
 move_right={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }
 move_left={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }
 move_forward={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }
 move_back={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }
 movement_modifier={
 "deadzone": 0.2,
 "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }
 jump={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 reset_position={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":82,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":82,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 forty_five_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":85,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":85,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 isometric_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":73,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":73,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 top_down_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":79,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":79,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 front_side_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":74,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":74,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 oblique_y_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":75,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":75,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":4,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 oblique_z_mode={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":76,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":76,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 toggle_isometric_controls={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":84,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":84,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":8,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 toggle_control_hints={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":10,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 move_clockwise={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 move_counterclockwise={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":6,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 view_cube_demo={
 "deadzone": 0.2,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":67,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":67,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
 ]
 }
 exit={
 "deadzone": 0.2,
 "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
 ]
 }