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

This commit is contained in:
Christen Lofland
2024-04-10 11:52:08 -05:00
parent d190e73ad3
commit 3ef6a15741
5 changed files with 107 additions and 149 deletions

View File

@@ -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()

View File

@@ -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"]

View File

@@ -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

View File

@@ -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")

View File

@@ -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)
]
}