From b36df139828d1beda7334472e95bb33841367974 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Sat, 3 May 2025 15:53:42 +0200 Subject: [PATCH] Adjust bullet speed, update collectable node structure, and enhance marketplace layout; add marketplace button resource --- addons/godot-console | 1 + addons/guide/debugger/guide_debugger.gd | 104 ----- addons/guide/debugger/guide_debugger.gd.uid | 1 - addons/guide/debugger/guide_debugger.tscn | 50 --- .../action_mapping_editor.gd | 138 ------- .../action_mapping_editor.gd.uid | 1 - .../action_mapping_editor.tscn | 43 --- .../guide/editor/action_slot/action_slot.gd | 57 --- .../editor/action_slot/action_slot.gd.uid | 1 - .../guide/editor/action_slot/action_slot.tscn | 16 - addons/guide/editor/array_edit/array_edit.gd | 113 ------ .../guide/editor/array_edit/array_edit.gd.uid | 1 - .../guide/editor/array_edit/array_edit.tscn | 88 ----- .../editor/array_edit/array_edit_item.gd | 84 ---- .../editor/array_edit/array_edit_item.gd.uid | 1 - .../editor/array_edit/array_edit_item.tscn | 83 ---- addons/guide/editor/array_edit/dragger.gd | 8 - addons/guide/editor/array_edit/dragger.gd.uid | 1 - .../editor/binding_dialog/binding_dialog.gd | 148 ------- .../binding_dialog/binding_dialog.gd.uid | 1 - .../editor/binding_dialog/binding_dialog.tscn | 216 ----------- addons/guide/editor/class_scanner.gd | 91 ----- addons/guide/editor/class_scanner.gd.uid | 1 - .../editor/input_display/input_display.gd | 39 -- .../editor/input_display/input_display.gd.uid | 1 - .../editor/input_display/input_display.tscn | 18 - .../input_mapping_editor.gd | 299 -------------- .../input_mapping_editor.gd.uid | 1 - .../input_mapping_editor.tscn | 140 ------- addons/guide/editor/logo_editor_small.svg | 24 -- .../guide/editor/logo_editor_small.svg.import | 38 -- .../mapping_context_editor.gd | 159 -------- .../mapping_context_editor.gd.uid | 1 - .../mapping_context_editor.tscn | 58 --- .../editor/modifier_slot/modifier_slot.gd | 14 - .../editor/modifier_slot/modifier_slot.gd.uid | 1 - .../editor/modifier_slot/modifier_slot.tscn | 18 - .../editor/resource_slot/resource_slot.gd | 106 ----- .../editor/resource_slot/resource_slot.gd.uid | 1 - .../guide/editor/trigger_slot/trigger_slot.gd | 14 - .../editor/trigger_slot/trigger_slot.gd.uid | 1 - .../editor/trigger_slot/trigger_slot.tscn | 20 - addons/guide/editor/utils.gd | 22 -- addons/guide/editor/utils.gd.uid | 1 - addons/guide/guide.gd | 365 ------------------ addons/guide/guide.gd.uid | 1 - addons/guide/guide_action.gd | 254 ------------ addons/guide/guide_action.gd.uid | 1 - addons/guide/guide_action.svg | 7 - addons/guide/guide_action.svg.import | 38 -- addons/guide/guide_action_mapping.gd | 21 - addons/guide/guide_action_mapping.gd.uid | 1 - addons/guide/guide_input_mapping.gd | 177 --------- addons/guide/guide_input_mapping.gd.uid | 1 - addons/guide/guide_input_tracker.gd | 26 -- addons/guide/guide_input_tracker.gd.uid | 1 - addons/guide/guide_internal.svg | 12 - addons/guide/guide_internal.svg.import | 38 -- addons/guide/guide_mapping_context.gd | 30 -- addons/guide/guide_mapping_context.gd.uid | 1 - addons/guide/guide_mapping_context.svg | 9 - addons/guide/guide_mapping_context.svg.import | 38 -- addons/guide/guide_reset.gd | 13 - addons/guide/guide_reset.gd.uid | 1 - addons/guide/guide_set.gd | 40 -- addons/guide/guide_set.gd.uid | 1 - addons/guide/inputs/guide_input.gd | 50 --- addons/guide/inputs/guide_input.gd.uid | 1 - addons/guide/inputs/guide_input.svg | 12 - addons/guide/inputs/guide_input.svg.import | 38 -- addons/guide/inputs/guide_input_action.gd | 59 --- addons/guide/inputs/guide_input_action.gd.uid | 1 - addons/guide/inputs/guide_input_any.gd | 115 ------ addons/guide/inputs/guide_input_any.gd.uid | 1 - .../guide/inputs/guide_input_joy_axis_1d.gd | 43 --- .../inputs/guide_input_joy_axis_1d.gd.uid | 1 - .../guide/inputs/guide_input_joy_axis_2d.gd | 58 --- .../inputs/guide_input_joy_axis_2d.gd.uid | 1 - addons/guide/inputs/guide_input_joy_base.gd | 35 -- .../guide/inputs/guide_input_joy_base.gd.uid | 1 - addons/guide/inputs/guide_input_joy_button.gd | 44 --- .../inputs/guide_input_joy_button.gd.uid | 1 - addons/guide/inputs/guide_input_key.gd | 127 ------ addons/guide/inputs/guide_input_key.gd.uid | 1 - .../guide/inputs/guide_input_mouse_axis_1d.gd | 47 --- .../inputs/guide_input_mouse_axis_1d.gd.uid | 1 - .../guide/inputs/guide_input_mouse_axis_2d.gd | 35 -- .../inputs/guide_input_mouse_axis_2d.gd.uid | 1 - .../guide/inputs/guide_input_mouse_button.gd | 65 ---- .../inputs/guide_input_mouse_button.gd.uid | 1 - .../inputs/guide_input_mouse_position.gd | 41 -- .../inputs/guide_input_mouse_position.gd.uid | 1 - .../guide/inputs/guide_input_touch_angle.gd | 83 ---- .../inputs/guide_input_touch_angle.gd.uid | 1 - .../guide/inputs/guide_input_touch_axis_1d.gd | 44 --- .../inputs/guide_input_touch_axis_1d.gd.uid | 1 - .../guide/inputs/guide_input_touch_axis_2d.gd | 27 -- .../inputs/guide_input_touch_axis_2d.gd.uid | 1 - .../inputs/guide_input_touch_axis_base.gd | 46 --- .../inputs/guide_input_touch_axis_base.gd.uid | 1 - addons/guide/inputs/guide_input_touch_base.gd | 22 -- .../inputs/guide_input_touch_base.gd.uid | 1 - .../inputs/guide_input_touch_distance.gd | 72 ---- .../inputs/guide_input_touch_distance.gd.uid | 1 - .../inputs/guide_input_touch_position.gd | 47 --- .../inputs/guide_input_touch_position.gd.uid | 1 - addons/guide/inputs/guide_touch_state.gd | 73 ---- addons/guide/inputs/guide_touch_state.gd.uid | 1 - addons/guide/modifiers/guide_modifier.gd | 23 -- addons/guide/modifiers/guide_modifier.gd.uid | 1 - addons/guide/modifiers/guide_modifier.svg | 12 - .../guide/modifiers/guide_modifier.svg.import | 38 -- .../guide_modifier_3d_coordinates.gd | 53 --- .../guide_modifier_3d_coordinates.gd.uid | 1 - .../guide_modifier_8_way_direction.gd | 47 --- .../guide_modifier_8_way_direction.gd.uid | 1 - .../guide_modifier_canvas_coordinates.gd | 35 -- .../guide_modifier_canvas_coordinates.gd.uid | 1 - .../guide/modifiers/guide_modifier_curve.gd | 51 --- .../modifiers/guide_modifier_curve.gd.uid | 1 - .../modifiers/guide_modifier_deadzone.gd | 63 --- .../modifiers/guide_modifier_deadzone.gd.uid | 1 - .../modifiers/guide_modifier_input_swizzle.gd | 43 --- .../guide_modifier_input_swizzle.gd.uid | 1 - .../modifiers/guide_modifier_map_range.gd | 67 ---- .../modifiers/guide_modifier_map_range.gd.uid | 1 - .../guide/modifiers/guide_modifier_negate.gd | 52 --- .../modifiers/guide_modifier_negate.gd.uid | 1 - .../modifiers/guide_modifier_normalize.gd | 17 - .../modifiers/guide_modifier_normalize.gd.uid | 1 - .../guide_modifier_positive_negative.gd | 65 ---- .../guide_modifier_positive_negative.gd.uid | 1 - .../guide/modifiers/guide_modifier_scale.gd | 35 -- .../modifiers/guide_modifier_scale.gd.uid | 1 - .../guide_modifier_virtual_cursor.gd | 105 ----- .../guide_modifier_virtual_cursor.gd.uid | 1 - .../guide_modifier_window_relative.gd | 26 -- .../guide_modifier_window_relative.gd.uid | 1 - addons/guide/plugin.cfg | 7 - addons/guide/plugin.gd | 45 --- addons/guide/plugin.gd.uid | 1 - .../guide/remapping/guide_input_detector.gd | 281 -------------- .../remapping/guide_input_detector.gd.uid | 1 - addons/guide/remapping/guide_remapper.gd | 307 --------------- addons/guide/remapping/guide_remapper.gd.uid | 1 - .../guide/remapping/guide_remapping_config.gd | 85 ---- .../remapping/guide_remapping_config.gd.uid | 1 - addons/guide/triggers/guide_trigger.gd | 65 ---- addons/guide/triggers/guide_trigger.gd.uid | 1 - addons/guide/triggers/guide_trigger.svg | 12 - .../guide/triggers/guide_trigger.svg.import | 38 -- .../triggers/guide_trigger_chorded_action.gd | 28 -- .../guide_trigger_chorded_action.gd.uid | 1 - addons/guide/triggers/guide_trigger_combo.gd | 117 ------ .../guide/triggers/guide_trigger_combo.gd.uid | 1 - .../guide_trigger_combo_cancel_action.gd | 27 -- .../guide_trigger_combo_cancel_action.gd.uid | 1 - .../triggers/guide_trigger_combo_step.gd | 29 -- .../triggers/guide_trigger_combo_step.gd.uid | 1 - addons/guide/triggers/guide_trigger_down.gd | 20 - .../guide/triggers/guide_trigger_down.gd.uid | 1 - addons/guide/triggers/guide_trigger_hold.gd | 43 --- .../guide/triggers/guide_trigger_hold.gd.uid | 1 - .../guide/triggers/guide_trigger_pressed.gd | 22 -- .../triggers/guide_trigger_pressed.gd.uid | 1 - addons/guide/triggers/guide_trigger_pulse.gd | 86 ----- .../guide/triggers/guide_trigger_pulse.gd.uid | 1 - .../guide/triggers/guide_trigger_released.gd | 21 - .../triggers/guide_trigger_released.gd.uid | 1 - .../guide/triggers/guide_trigger_stability.gd | 72 ---- .../triggers/guide_trigger_stability.gd.uid | 1 - addons/guide/triggers/guide_trigger_tap.gd | 48 --- .../guide/triggers/guide_trigger_tap.gd.uid | 1 - addons/guide/ui/guide_icon_renderer.gd | 30 -- addons/guide/ui/guide_icon_renderer.gd.uid | 1 - addons/guide/ui/guide_input_formatter.gd | 358 ----------------- addons/guide/ui/guide_input_formatter.gd.uid | 1 - addons/guide/ui/guide_text_provider.gd | 22 -- addons/guide/ui/guide_text_provider.gd.uid | 1 - addons/guide/ui/icon_maker/icon_maker.gd | 103 ----- addons/guide/ui/icon_maker/icon_maker.gd.uid | 1 - addons/guide/ui/icon_maker/icon_maker.tscn | 24 -- .../controllers/controller_renderer.gd | 171 -------- .../controllers/controller_renderer.gd.uid | 1 - .../controllers/controller_renderer.tscn | 135 ------- .../playstation/icons/PS5_Circle.png | Bin 5361 -> 0 bytes .../playstation/icons/PS5_Circle.png.import | 34 -- .../playstation/icons/PS5_Cross.png | Bin 4539 -> 0 bytes .../playstation/icons/PS5_Cross.png.import | 34 -- .../playstation/icons/PS5_Dpad.png | Bin 6137 -> 0 bytes .../playstation/icons/PS5_Dpad.png.import | 34 -- .../playstation/icons/PS5_Dpad_Down.png | Bin 6180 -> 0 bytes .../icons/PS5_Dpad_Down.png.import | 34 -- .../playstation/icons/PS5_Dpad_Left.png | Bin 5902 -> 0 bytes .../icons/PS5_Dpad_Left.png.import | 34 -- .../playstation/icons/PS5_Dpad_Right.png | Bin 5943 -> 0 bytes .../icons/PS5_Dpad_Right.png.import | 34 -- .../playstation/icons/PS5_Dpad_Up.png | Bin 5979 -> 0 bytes .../playstation/icons/PS5_Dpad_Up.png.import | 34 -- .../controllers/playstation/icons/PS5_L1.png | Bin 2758 -> 0 bytes .../playstation/icons/PS5_L1.png.import | 34 -- .../controllers/playstation/icons/PS5_L2.png | Bin 2968 -> 0 bytes .../playstation/icons/PS5_L2.png.import | 34 -- .../playstation/icons/PS5_Left_Stick.png | Bin 5125 -> 0 bytes .../icons/PS5_Left_Stick.png.import | 34 -- .../icons/PS5_Left_Stick_Click.png | Bin 3046 -> 0 bytes .../icons/PS5_Left_Stick_Click.png.import | 34 -- .../playstation/icons/PS5_Microphone.png | Bin 1654 -> 0 bytes .../icons/PS5_Microphone.png.import | 34 -- .../playstation/icons/PS5_Options.png | Bin 2858 -> 0 bytes .../playstation/icons/PS5_Options.png.import | 34 -- .../playstation/icons/PS5_Options_Alt.png | Bin 3224 -> 0 bytes .../icons/PS5_Options_Alt.png.import | 34 -- .../controllers/playstation/icons/PS5_R1.png | Bin 2947 -> 0 bytes .../playstation/icons/PS5_R1.png.import | 34 -- .../controllers/playstation/icons/PS5_R2.png | Bin 3156 -> 0 bytes .../playstation/icons/PS5_R2.png.import | 34 -- .../playstation/icons/PS5_Right_Stick.png | Bin 5432 -> 0 bytes .../icons/PS5_Right_Stick.png.import | 34 -- .../icons/PS5_Right_Stick_Click.png | Bin 3360 -> 0 bytes .../icons/PS5_Right_Stick_Click.png.import | 34 -- .../playstation/icons/PS5_Share.png | Bin 3114 -> 0 bytes .../playstation/icons/PS5_Share.png.import | 34 -- .../playstation/icons/PS5_Share_Alt.png | Bin 3071 -> 0 bytes .../icons/PS5_Share_Alt.png.import | 34 -- .../playstation/icons/PS5_Square.png | Bin 4315 -> 0 bytes .../playstation/icons/PS5_Square.png.import | 34 -- .../playstation/icons/PS5_Touch_Pad.png | Bin 1422 -> 0 bytes .../icons/PS5_Touch_Pad.png.import | 34 -- .../playstation/icons/PS5_Triangle.png | Bin 4722 -> 0 bytes .../playstation/icons/PS5_Triangle.png.import | 34 -- .../playstation_controller_renderer.tscn | 101 ----- .../controllers/switch/icons/Switch_A.png | Bin 3780 -> 0 bytes .../switch/icons/Switch_A.png.import | 34 -- .../controllers/switch/icons/Switch_B.png | Bin 3788 -> 0 bytes .../switch/icons/Switch_B.png.import | 34 -- .../switch/icons/Switch_Controller_Left.png | Bin 1496 -> 0 bytes .../icons/Switch_Controller_Left.png.import | 34 -- .../switch/icons/Switch_Controller_Right.png | Bin 1190 -> 0 bytes .../icons/Switch_Controller_Right.png.import | 34 -- .../switch/icons/Switch_Controllers.png | Bin 1836 -> 0 bytes .../icons/Switch_Controllers.png.import | 34 -- .../icons/Switch_Controllers_Separate.png | Bin 2069 -> 0 bytes .../Switch_Controllers_Separate.png.import | 34 -- .../controllers/switch/icons/Switch_Down.png | Bin 3578 -> 0 bytes .../switch/icons/Switch_Down.png.import | 34 -- .../controllers/switch/icons/Switch_Dpad.png | Bin 2082 -> 0 bytes .../switch/icons/Switch_Dpad.png.import | 34 -- .../switch/icons/Switch_Dpad_Down.png | Bin 2379 -> 0 bytes .../switch/icons/Switch_Dpad_Down.png.import | 34 -- .../switch/icons/Switch_Dpad_Left.png | Bin 2408 -> 0 bytes .../switch/icons/Switch_Dpad_Left.png.import | 34 -- .../switch/icons/Switch_Dpad_Right.png | Bin 2397 -> 0 bytes .../switch/icons/Switch_Dpad_Right.png.import | 34 -- .../switch/icons/Switch_Dpad_Up.png | Bin 2418 -> 0 bytes .../switch/icons/Switch_Dpad_Up.png.import | 34 -- .../controllers/switch/icons/Switch_Home.png | Bin 4631 -> 0 bytes .../switch/icons/Switch_Home.png.import | 34 -- .../controllers/switch/icons/Switch_LB.png | Bin 2799 -> 0 bytes .../switch/icons/Switch_LB.png.import | 34 -- .../controllers/switch/icons/Switch_LT.png | Bin 2808 -> 0 bytes .../switch/icons/Switch_LT.png.import | 34 -- .../controllers/switch/icons/Switch_Left.png | Bin 3586 -> 0 bytes .../switch/icons/Switch_Left.png.import | 34 -- .../switch/icons/Switch_Left_Stick.png | Bin 4299 -> 0 bytes .../switch/icons/Switch_Left_Stick.png.import | 34 -- .../switch/icons/Switch_Left_Stick_Click.png | Bin 3046 -> 0 bytes .../icons/Switch_Left_Stick_Click.png.import | 34 -- .../controllers/switch/icons/Switch_Minus.png | Bin 356 -> 0 bytes .../switch/icons/Switch_Minus.png.import | 34 -- .../controllers/switch/icons/Switch_Plus.png | Bin 764 -> 0 bytes .../switch/icons/Switch_Plus.png.import | 34 -- .../controllers/switch/icons/Switch_RB.png | Bin 3306 -> 0 bytes .../switch/icons/Switch_RB.png.import | 34 -- .../controllers/switch/icons/Switch_RT.png | Bin 3066 -> 0 bytes .../switch/icons/Switch_RT.png.import | 34 -- .../controllers/switch/icons/Switch_Right.png | Bin 3495 -> 0 bytes .../switch/icons/Switch_Right.png.import | 34 -- .../switch/icons/Switch_Right_Stick.png | Bin 4578 -> 0 bytes .../icons/Switch_Right_Stick.png.import | 34 -- .../switch/icons/Switch_Right_Stick_Click.png | Bin 3360 -> 0 bytes .../icons/Switch_Right_Stick_Click.png.import | 34 -- .../switch/icons/Switch_Square.png | Bin 1891 -> 0 bytes .../switch/icons/Switch_Square.png.import | 34 -- .../controllers/switch/icons/Switch_Up.png | Bin 3422 -> 0 bytes .../switch/icons/Switch_Up.png.import | 34 -- .../controllers/switch/icons/Switch_X.png | Bin 4011 -> 0 bytes .../switch/icons/Switch_X.png.import | 34 -- .../controllers/switch/icons/Switch_Y.png | Bin 3736 -> 0 bytes .../switch/icons/Switch_Y.png.import | 34 -- .../switch/switch_controller_renderer.tscn | 101 ----- .../controllers/xbox/icons/XboxSeriesX_A.png | Bin 3912 -> 0 bytes .../xbox/icons/XboxSeriesX_A.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_B.png | Bin 3840 -> 0 bytes .../xbox/icons/XboxSeriesX_B.png.import | 34 -- .../xbox/icons/XboxSeriesX_Dpad.png | Bin 3226 -> 0 bytes .../xbox/icons/XboxSeriesX_Dpad.png.import | 34 -- .../xbox/icons/XboxSeriesX_Dpad_Down.png | Bin 3539 -> 0 bytes .../icons/XboxSeriesX_Dpad_Down.png.import | 34 -- .../xbox/icons/XboxSeriesX_Dpad_Left.png | Bin 3466 -> 0 bytes .../icons/XboxSeriesX_Dpad_Left.png.import | 34 -- .../xbox/icons/XboxSeriesX_Dpad_Right.png | Bin 3417 -> 0 bytes .../icons/XboxSeriesX_Dpad_Right.png.import | 34 -- .../xbox/icons/XboxSeriesX_Dpad_Up.png | Bin 3584 -> 0 bytes .../xbox/icons/XboxSeriesX_Dpad_Up.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_LB.png | Bin 2923 -> 0 bytes .../xbox/icons/XboxSeriesX_LB.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_LT.png | Bin 2584 -> 0 bytes .../xbox/icons/XboxSeriesX_LT.png.import | 34 -- .../xbox/icons/XboxSeriesX_Left_Stick.png | Bin 5196 -> 0 bytes .../icons/XboxSeriesX_Left_Stick.png.import | 34 -- .../icons/XboxSeriesX_Left_Stick_Click.png | Bin 3006 -> 0 bytes .../XboxSeriesX_Left_Stick_Click.png.import | 34 -- .../xbox/icons/XboxSeriesX_Menu.png | Bin 3349 -> 0 bytes .../xbox/icons/XboxSeriesX_Menu.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_RB.png | Bin 2779 -> 0 bytes .../xbox/icons/XboxSeriesX_RB.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_RT.png | Bin 2933 -> 0 bytes .../xbox/icons/XboxSeriesX_RT.png.import | 34 -- .../xbox/icons/XboxSeriesX_Right_Stick.png | Bin 5506 -> 0 bytes .../icons/XboxSeriesX_Right_Stick.png.import | 34 -- .../icons/XboxSeriesX_Right_Stick_Click.png | Bin 3314 -> 0 bytes .../XboxSeriesX_Right_Stick_Click.png.import | 34 -- .../xbox/icons/XboxSeriesX_Share.png | Bin 2812 -> 0 bytes .../xbox/icons/XboxSeriesX_Share.png.import | 34 -- .../xbox/icons/XboxSeriesX_View.png | Bin 3382 -> 0 bytes .../xbox/icons/XboxSeriesX_View.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_X.png | Bin 4065 -> 0 bytes .../xbox/icons/XboxSeriesX_X.png.import | 34 -- .../controllers/xbox/icons/XboxSeriesX_Y.png | Bin 3819 -> 0 bytes .../xbox/icons/XboxSeriesX_Y.png.import | 34 -- .../xbox/xbox_controller_renderer.tscn | 101 ----- .../ui/renderers/joy/icons/button_empty.png | Bin 5164 -> 0 bytes .../joy/icons/button_empty.png.import | 34 -- .../ui/renderers/joy/icons/stick_empty.png | Bin 6710 -> 0 bytes .../joy/icons/stick_empty.png.import | 34 -- addons/guide/ui/renderers/joy/joy_renderer.gd | 69 ---- .../ui/renderers/joy/joy_renderer.gd.uid | 1 - .../guide/ui/renderers/joy/joy_renderer.tscn | 63 --- .../ui/renderers/keyboard/Lato-Black.ttf | Bin 69500 -> 0 bytes .../renderers/keyboard/Lato-Black.ttf.import | 35 -- .../keyboard/icons/Blank_White_Normal.png | Bin 1160 -> 0 bytes .../icons/Blank_White_Normal.png.import | 34 -- .../ui/renderers/keyboard/key_renderer.gd | 17 - .../ui/renderers/keyboard/key_renderer.gd.uid | 1 - .../ui/renderers/keyboard/key_renderer.tscn | 36 -- .../ui/renderers/misc/action_renderer.gd | 11 - .../ui/renderers/misc/action_renderer.gd.uid | 1 - .../ui/renderers/misc/action_renderer.tscn | 16 - .../ui/renderers/misc/fallback_renderer.gd | 11 - .../renderers/misc/fallback_renderer.gd.uid | 1 - .../ui/renderers/misc/fallback_renderer.tscn | 20 - .../ui/renderers/mouse/icons/Mouse_Cursor.png | Bin 4728 -> 0 bytes .../mouse/icons/Mouse_Cursor.png.import | 34 -- .../mouse/icons/Mouse_Left_Key_Light.png | Bin 3362 -> 0 bytes .../icons/Mouse_Left_Key_Light.png.import | 34 -- .../mouse/icons/Mouse_Middle_Key_Light.png | Bin 3242 -> 0 bytes .../icons/Mouse_Middle_Key_Light.png.import | 34 -- .../mouse/icons/Mouse_Right_Key_Light.png | Bin 3340 -> 0 bytes .../icons/Mouse_Right_Key_Light.png.import | 34 -- .../mouse/icons/Mouse_Side_Key_1_Light.png | Bin 5635 -> 0 bytes .../icons/Mouse_Side_Key_1_Light.png.import | 34 -- .../mouse/icons/Mouse_Side_Key_2_Light.png | Bin 5584 -> 0 bytes .../icons/Mouse_Side_Key_2_Light.png.import | 34 -- .../mouse/icons/Mouse_Simple_Key_Light.png | Bin 3252 -> 0 bytes .../icons/Mouse_Simple_Key_Light.png.import | 34 -- .../ui/renderers/mouse/mouse_renderer.gd | 87 ----- .../ui/renderers/mouse/mouse_renderer.gd.uid | 1 - .../ui/renderers/mouse/mouse_renderer.tscn | 124 ------ addons/guide/ui/renderers/textures/action.svg | 10 - .../ui/renderers/textures/action.svg.import | 37 -- .../textures/arrow_all_directions.svg | 8 - .../textures/arrow_all_directions.svg.import | 37 -- .../ui/renderers/textures/arrow_down.svg | 8 - .../renderers/textures/arrow_down.svg.import | 37 -- .../renderers/textures/arrow_horizontal.svg | 8 - .../textures/arrow_horizontal.svg.import | 37 -- .../ui/renderers/textures/arrow_left.svg | 8 - .../renderers/textures/arrow_left.svg.import | 37 -- .../ui/renderers/textures/arrow_right.svg | 8 - .../renderers/textures/arrow_right.svg.import | 37 -- .../guide/ui/renderers/textures/arrow_up.svg | 8 - .../ui/renderers/textures/arrow_up.svg.import | 37 -- .../ui/renderers/textures/arrow_vertical.svg | 8 - .../textures/arrow_vertical.svg.import | 37 -- .../renderers/touch/icons/touch_1_finger.png | Bin 5698 -> 0 bytes .../touch/icons/touch_1_finger.png.import | 34 -- .../renderers/touch/icons/touch_2_fingers.png | Bin 6395 -> 0 bytes .../touch/icons/touch_2_fingers.png.import | 34 -- .../renderers/touch/icons/touch_3_fingers.png | Bin 6746 -> 0 bytes .../touch/icons/touch_3_fingers.png.import | 34 -- .../renderers/touch/icons/touch_4_fingers.png | Bin 7210 -> 0 bytes .../touch/icons/touch_4_fingers.png.import | 34 -- .../ui/renderers/touch/icons/touch_rotate.png | Bin 5245 -> 0 bytes .../touch/icons/touch_rotate.png.import | 34 -- .../ui/renderers/touch/icons/touch_zoom.png | Bin 5053 -> 0 bytes .../touch/icons/touch_zoom.png.import | 34 -- .../ui/renderers/touch/touch_renderer.gd | 73 ---- .../ui/renderers/touch/touch_renderer.gd.uid | 1 - .../ui/renderers/touch/touch_renderer.tscn | 93 ----- .../controllers/controller_text_provider.gd | 115 ------ .../controller_text_provider.gd.uid | 1 - .../playstation_controller_text_provider.gd | 37 -- ...laystation_controller_text_provider.gd.uid | 1 - .../switch/switch_controller_text_provider.gd | 37 -- .../switch_controller_text_provider.gd.uid | 1 - .../xbox/xbox_controller_text_provider.gd | 37 -- .../xbox/xbox_controller_text_provider.gd.uid | 1 - .../text_providers/default_text_provider.gd | 141 ------- .../default_text_provider.gd.uid | 1 - objects/bullet.tscn | 2 +- objects/child.tscn | 3 +- objects/marketplace.tscn | 12 +- objects/marketplace_button.tscn | 11 + project.godot | 4 +- resources/input/move.tres | 13 - resources/input/walk_mode.tres | 101 ----- scripts/hud.gd | 6 +- scripts/marketplace.gd | 4 +- scripts/steam_integration.gd | 1 - 420 files changed, 31 insertions(+), 12282 deletions(-) create mode 160000 addons/godot-console delete mode 100644 addons/guide/debugger/guide_debugger.gd delete mode 100644 addons/guide/debugger/guide_debugger.gd.uid delete mode 100644 addons/guide/debugger/guide_debugger.tscn delete mode 100644 addons/guide/editor/action_mapping_editor/action_mapping_editor.gd delete mode 100644 addons/guide/editor/action_mapping_editor/action_mapping_editor.gd.uid delete mode 100644 addons/guide/editor/action_mapping_editor/action_mapping_editor.tscn delete mode 100644 addons/guide/editor/action_slot/action_slot.gd delete mode 100644 addons/guide/editor/action_slot/action_slot.gd.uid delete mode 100644 addons/guide/editor/action_slot/action_slot.tscn delete mode 100644 addons/guide/editor/array_edit/array_edit.gd delete mode 100644 addons/guide/editor/array_edit/array_edit.gd.uid delete mode 100644 addons/guide/editor/array_edit/array_edit.tscn delete mode 100644 addons/guide/editor/array_edit/array_edit_item.gd delete mode 100644 addons/guide/editor/array_edit/array_edit_item.gd.uid delete mode 100644 addons/guide/editor/array_edit/array_edit_item.tscn delete mode 100644 addons/guide/editor/array_edit/dragger.gd delete mode 100644 addons/guide/editor/array_edit/dragger.gd.uid delete mode 100644 addons/guide/editor/binding_dialog/binding_dialog.gd delete mode 100644 addons/guide/editor/binding_dialog/binding_dialog.gd.uid delete mode 100644 addons/guide/editor/binding_dialog/binding_dialog.tscn delete mode 100644 addons/guide/editor/class_scanner.gd delete mode 100644 addons/guide/editor/class_scanner.gd.uid delete mode 100644 addons/guide/editor/input_display/input_display.gd delete mode 100644 addons/guide/editor/input_display/input_display.gd.uid delete mode 100644 addons/guide/editor/input_display/input_display.tscn delete mode 100644 addons/guide/editor/input_mapping_editor/input_mapping_editor.gd delete mode 100644 addons/guide/editor/input_mapping_editor/input_mapping_editor.gd.uid delete mode 100644 addons/guide/editor/input_mapping_editor/input_mapping_editor.tscn delete mode 100644 addons/guide/editor/logo_editor_small.svg delete mode 100644 addons/guide/editor/logo_editor_small.svg.import delete mode 100644 addons/guide/editor/mapping_context_editor/mapping_context_editor.gd delete mode 100644 addons/guide/editor/mapping_context_editor/mapping_context_editor.gd.uid delete mode 100644 addons/guide/editor/mapping_context_editor/mapping_context_editor.tscn delete mode 100644 addons/guide/editor/modifier_slot/modifier_slot.gd delete mode 100644 addons/guide/editor/modifier_slot/modifier_slot.gd.uid delete mode 100644 addons/guide/editor/modifier_slot/modifier_slot.tscn delete mode 100644 addons/guide/editor/resource_slot/resource_slot.gd delete mode 100644 addons/guide/editor/resource_slot/resource_slot.gd.uid delete mode 100644 addons/guide/editor/trigger_slot/trigger_slot.gd delete mode 100644 addons/guide/editor/trigger_slot/trigger_slot.gd.uid delete mode 100644 addons/guide/editor/trigger_slot/trigger_slot.tscn delete mode 100644 addons/guide/editor/utils.gd delete mode 100644 addons/guide/editor/utils.gd.uid delete mode 100644 addons/guide/guide.gd delete mode 100644 addons/guide/guide.gd.uid delete mode 100644 addons/guide/guide_action.gd delete mode 100644 addons/guide/guide_action.gd.uid delete mode 100644 addons/guide/guide_action.svg delete mode 100644 addons/guide/guide_action.svg.import delete mode 100644 addons/guide/guide_action_mapping.gd delete mode 100644 addons/guide/guide_action_mapping.gd.uid delete mode 100644 addons/guide/guide_input_mapping.gd delete mode 100644 addons/guide/guide_input_mapping.gd.uid delete mode 100644 addons/guide/guide_input_tracker.gd delete mode 100644 addons/guide/guide_input_tracker.gd.uid delete mode 100644 addons/guide/guide_internal.svg delete mode 100644 addons/guide/guide_internal.svg.import delete mode 100644 addons/guide/guide_mapping_context.gd delete mode 100644 addons/guide/guide_mapping_context.gd.uid delete mode 100644 addons/guide/guide_mapping_context.svg delete mode 100644 addons/guide/guide_mapping_context.svg.import delete mode 100644 addons/guide/guide_reset.gd delete mode 100644 addons/guide/guide_reset.gd.uid delete mode 100644 addons/guide/guide_set.gd delete mode 100644 addons/guide/guide_set.gd.uid delete mode 100644 addons/guide/inputs/guide_input.gd delete mode 100644 addons/guide/inputs/guide_input.gd.uid delete mode 100644 addons/guide/inputs/guide_input.svg delete mode 100644 addons/guide/inputs/guide_input.svg.import delete mode 100644 addons/guide/inputs/guide_input_action.gd delete mode 100644 addons/guide/inputs/guide_input_action.gd.uid delete mode 100644 addons/guide/inputs/guide_input_any.gd delete mode 100644 addons/guide/inputs/guide_input_any.gd.uid delete mode 100644 addons/guide/inputs/guide_input_joy_axis_1d.gd delete mode 100644 addons/guide/inputs/guide_input_joy_axis_1d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_joy_axis_2d.gd delete mode 100644 addons/guide/inputs/guide_input_joy_axis_2d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_joy_base.gd delete mode 100644 addons/guide/inputs/guide_input_joy_base.gd.uid delete mode 100644 addons/guide/inputs/guide_input_joy_button.gd delete mode 100644 addons/guide/inputs/guide_input_joy_button.gd.uid delete mode 100644 addons/guide/inputs/guide_input_key.gd delete mode 100644 addons/guide/inputs/guide_input_key.gd.uid delete mode 100644 addons/guide/inputs/guide_input_mouse_axis_1d.gd delete mode 100644 addons/guide/inputs/guide_input_mouse_axis_1d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_mouse_axis_2d.gd delete mode 100644 addons/guide/inputs/guide_input_mouse_axis_2d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_mouse_button.gd delete mode 100644 addons/guide/inputs/guide_input_mouse_button.gd.uid delete mode 100644 addons/guide/inputs/guide_input_mouse_position.gd delete mode 100644 addons/guide/inputs/guide_input_mouse_position.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_angle.gd delete mode 100644 addons/guide/inputs/guide_input_touch_angle.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_axis_1d.gd delete mode 100644 addons/guide/inputs/guide_input_touch_axis_1d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_axis_2d.gd delete mode 100644 addons/guide/inputs/guide_input_touch_axis_2d.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_axis_base.gd delete mode 100644 addons/guide/inputs/guide_input_touch_axis_base.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_base.gd delete mode 100644 addons/guide/inputs/guide_input_touch_base.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_distance.gd delete mode 100644 addons/guide/inputs/guide_input_touch_distance.gd.uid delete mode 100644 addons/guide/inputs/guide_input_touch_position.gd delete mode 100644 addons/guide/inputs/guide_input_touch_position.gd.uid delete mode 100644 addons/guide/inputs/guide_touch_state.gd delete mode 100644 addons/guide/inputs/guide_touch_state.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier.gd delete mode 100644 addons/guide/modifiers/guide_modifier.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier.svg delete mode 100644 addons/guide/modifiers/guide_modifier.svg.import delete mode 100644 addons/guide/modifiers/guide_modifier_3d_coordinates.gd delete mode 100644 addons/guide/modifiers/guide_modifier_3d_coordinates.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_8_way_direction.gd delete mode 100644 addons/guide/modifiers/guide_modifier_8_way_direction.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_canvas_coordinates.gd delete mode 100644 addons/guide/modifiers/guide_modifier_canvas_coordinates.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_curve.gd delete mode 100644 addons/guide/modifiers/guide_modifier_curve.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_deadzone.gd delete mode 100644 addons/guide/modifiers/guide_modifier_deadzone.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_input_swizzle.gd delete mode 100644 addons/guide/modifiers/guide_modifier_input_swizzle.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_map_range.gd delete mode 100644 addons/guide/modifiers/guide_modifier_map_range.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_negate.gd delete mode 100644 addons/guide/modifiers/guide_modifier_negate.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_normalize.gd delete mode 100644 addons/guide/modifiers/guide_modifier_normalize.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_positive_negative.gd delete mode 100644 addons/guide/modifiers/guide_modifier_positive_negative.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_scale.gd delete mode 100644 addons/guide/modifiers/guide_modifier_scale.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_virtual_cursor.gd delete mode 100644 addons/guide/modifiers/guide_modifier_virtual_cursor.gd.uid delete mode 100644 addons/guide/modifiers/guide_modifier_window_relative.gd delete mode 100644 addons/guide/modifiers/guide_modifier_window_relative.gd.uid delete mode 100644 addons/guide/plugin.cfg delete mode 100644 addons/guide/plugin.gd delete mode 100644 addons/guide/plugin.gd.uid delete mode 100644 addons/guide/remapping/guide_input_detector.gd delete mode 100644 addons/guide/remapping/guide_input_detector.gd.uid delete mode 100644 addons/guide/remapping/guide_remapper.gd delete mode 100644 addons/guide/remapping/guide_remapper.gd.uid delete mode 100644 addons/guide/remapping/guide_remapping_config.gd delete mode 100644 addons/guide/remapping/guide_remapping_config.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger.gd delete mode 100644 addons/guide/triggers/guide_trigger.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger.svg delete mode 100644 addons/guide/triggers/guide_trigger.svg.import delete mode 100644 addons/guide/triggers/guide_trigger_chorded_action.gd delete mode 100644 addons/guide/triggers/guide_trigger_chorded_action.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_combo.gd delete mode 100644 addons/guide/triggers/guide_trigger_combo.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_combo_cancel_action.gd delete mode 100644 addons/guide/triggers/guide_trigger_combo_cancel_action.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_combo_step.gd delete mode 100644 addons/guide/triggers/guide_trigger_combo_step.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_down.gd delete mode 100644 addons/guide/triggers/guide_trigger_down.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_hold.gd delete mode 100644 addons/guide/triggers/guide_trigger_hold.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_pressed.gd delete mode 100644 addons/guide/triggers/guide_trigger_pressed.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_pulse.gd delete mode 100644 addons/guide/triggers/guide_trigger_pulse.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_released.gd delete mode 100644 addons/guide/triggers/guide_trigger_released.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_stability.gd delete mode 100644 addons/guide/triggers/guide_trigger_stability.gd.uid delete mode 100644 addons/guide/triggers/guide_trigger_tap.gd delete mode 100644 addons/guide/triggers/guide_trigger_tap.gd.uid delete mode 100644 addons/guide/ui/guide_icon_renderer.gd delete mode 100644 addons/guide/ui/guide_icon_renderer.gd.uid delete mode 100644 addons/guide/ui/guide_input_formatter.gd delete mode 100644 addons/guide/ui/guide_input_formatter.gd.uid delete mode 100644 addons/guide/ui/guide_text_provider.gd delete mode 100644 addons/guide/ui/guide_text_provider.gd.uid delete mode 100644 addons/guide/ui/icon_maker/icon_maker.gd delete mode 100644 addons/guide/ui/icon_maker/icon_maker.gd.uid delete mode 100644 addons/guide/ui/icon_maker/icon_maker.tscn delete mode 100644 addons/guide/ui/renderers/controllers/controller_renderer.gd delete mode 100644 addons/guide/ui/renderers/controllers/controller_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/controllers/controller_renderer.tscn delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Cross.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Cross.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_L2.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_L2.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_R1.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_R1.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_R2.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_R2.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Share.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Share.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Share_Alt.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Share_Alt.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Square.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Square.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png delete mode 100644 addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png.import delete mode 100644 addons/guide/ui/renderers/controllers/playstation/playstation_controller_renderer.tscn delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_A.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_A.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Left.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Left.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Right.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Right.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Down.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Down.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Left.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Left.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Home.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Home.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Plus.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Plus.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Up.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Up.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png delete mode 100644 addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png.import delete mode 100644 addons/guide/ui/renderers/controllers/switch/switch_controller_renderer.tscn delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_A.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_A.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_B.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_B.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Left.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Left.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Up.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Up.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_LB.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_LB.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_LT.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_LT.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RB.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RB.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RT.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RT.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Y.png delete mode 100644 addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Y.png.import delete mode 100644 addons/guide/ui/renderers/controllers/xbox/xbox_controller_renderer.tscn delete mode 100644 addons/guide/ui/renderers/joy/icons/button_empty.png delete mode 100644 addons/guide/ui/renderers/joy/icons/button_empty.png.import delete mode 100644 addons/guide/ui/renderers/joy/icons/stick_empty.png delete mode 100644 addons/guide/ui/renderers/joy/icons/stick_empty.png.import delete mode 100644 addons/guide/ui/renderers/joy/joy_renderer.gd delete mode 100644 addons/guide/ui/renderers/joy/joy_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/joy/joy_renderer.tscn delete mode 100644 addons/guide/ui/renderers/keyboard/Lato-Black.ttf delete mode 100644 addons/guide/ui/renderers/keyboard/Lato-Black.ttf.import delete mode 100644 addons/guide/ui/renderers/keyboard/icons/Blank_White_Normal.png delete mode 100644 addons/guide/ui/renderers/keyboard/icons/Blank_White_Normal.png.import delete mode 100644 addons/guide/ui/renderers/keyboard/key_renderer.gd delete mode 100644 addons/guide/ui/renderers/keyboard/key_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/keyboard/key_renderer.tscn delete mode 100644 addons/guide/ui/renderers/misc/action_renderer.gd delete mode 100644 addons/guide/ui/renderers/misc/action_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/misc/action_renderer.tscn delete mode 100644 addons/guide/ui/renderers/misc/fallback_renderer.gd delete mode 100644 addons/guide/ui/renderers/misc/fallback_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/misc/fallback_renderer.tscn delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Cursor.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Cursor.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Right_Key_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Right_Key_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Simple_Key_Light.png delete mode 100644 addons/guide/ui/renderers/mouse/icons/Mouse_Simple_Key_Light.png.import delete mode 100644 addons/guide/ui/renderers/mouse/mouse_renderer.gd delete mode 100644 addons/guide/ui/renderers/mouse/mouse_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/mouse/mouse_renderer.tscn delete mode 100644 addons/guide/ui/renderers/textures/action.svg delete mode 100644 addons/guide/ui/renderers/textures/action.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_all_directions.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_all_directions.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_down.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_down.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_horizontal.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_horizontal.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_left.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_left.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_right.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_right.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_up.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_up.svg.import delete mode 100644 addons/guide/ui/renderers/textures/arrow_vertical.svg delete mode 100644 addons/guide/ui/renderers/textures/arrow_vertical.svg.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_1_finger.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_1_finger.png.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_2_fingers.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_2_fingers.png.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_3_fingers.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_3_fingers.png.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_4_fingers.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_4_fingers.png.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_rotate.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_rotate.png.import delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_zoom.png delete mode 100644 addons/guide/ui/renderers/touch/icons/touch_zoom.png.import delete mode 100644 addons/guide/ui/renderers/touch/touch_renderer.gd delete mode 100644 addons/guide/ui/renderers/touch/touch_renderer.gd.uid delete mode 100644 addons/guide/ui/renderers/touch/touch_renderer.tscn delete mode 100644 addons/guide/ui/text_providers/controllers/controller_text_provider.gd delete mode 100644 addons/guide/ui/text_providers/controllers/controller_text_provider.gd.uid delete mode 100644 addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd delete mode 100644 addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd.uid delete mode 100644 addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd delete mode 100644 addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd.uid delete mode 100644 addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd delete mode 100644 addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd.uid delete mode 100644 addons/guide/ui/text_providers/default_text_provider.gd delete mode 100644 addons/guide/ui/text_providers/default_text_provider.gd.uid create mode 100644 objects/marketplace_button.tscn delete mode 100644 resources/input/move.tres delete mode 100644 resources/input/walk_mode.tres diff --git a/addons/godot-console b/addons/godot-console new file mode 160000 index 0000000..5315f2b --- /dev/null +++ b/addons/godot-console @@ -0,0 +1 @@ +Subproject commit 5315f2beddbc4e13353666dcb22d29e2a5a9a287 diff --git a/addons/guide/debugger/guide_debugger.gd b/addons/guide/debugger/guide_debugger.gd deleted file mode 100644 index 346a5d1..0000000 --- a/addons/guide/debugger/guide_debugger.gd +++ /dev/null @@ -1,104 +0,0 @@ -extends MarginContainer - -@onready var _actions:Container = %Actions -@onready var _inputs:Container = %Inputs -@onready var _priorities:Container = %Priorities -@onready var _formatter:GUIDEInputFormatter = GUIDEInputFormatter.for_active_contexts() - - -func _ready(): - process_mode = Node.PROCESS_MODE_ALWAYS - GUIDE.input_mappings_changed.connect(_update_priorities) - _update_priorities() - -func _process(delta): - if not is_visible_in_tree(): - return - - var index:int = 0 - for mapping in GUIDE._active_action_mappings: - var action:GUIDEAction = mapping.action - - var action_name:String = action.name - if action_name == "": - action_name = action._editor_name() - - var action_state:String = "" - match(action._last_state): - GUIDEAction.GUIDEActionState.COMPLETED: - action_state = "Completed" - GUIDEAction.GUIDEActionState.ONGOING: - action_state = "Ongoing" - GUIDEAction.GUIDEActionState.TRIGGERED: - action_state = "Triggered" - - var action_value:String = "" - match(action.action_value_type): - GUIDEAction.GUIDEActionValueType.BOOL: - action_value = str(action.value_bool) - GUIDEAction.GUIDEActionValueType.AXIS_1D: - action_value = str(action.value_axis_1d) - GUIDEAction.GUIDEActionValueType.AXIS_2D: - action_value = str(action.value_axis_2d) - GUIDEAction.GUIDEActionValueType.AXIS_3D: - action_value = str(action.value_axis_3d) - - - - - var label := _get_label(_actions, index) - label.text = "[%s] %s - %s" % [action_name, action_state, action_value] - - index += 1 - - # Clean out all labels we don't need anymore - _cleanup(_actions, index) - - index = 0 - for input in GUIDE._active_inputs: - var input_label = _formatter.input_as_text(input, false) - var input_value:String = str(input._value) - - var label := _get_label(_inputs, index) - label.text = "%s - %s" % [input_label, input_value] - index += 1 - - _cleanup(_inputs, index) - - -func _get_label(container:Container, index:int) -> Label: - var label:Label = null - if container.get_child_count() > index: - # reuse existing label - label = container.get_child(index) - else: - # make a new one - label = Label.new() - label.mouse_filter = Control.MOUSE_FILTER_IGNORE - container.add_child(label) - return label - -func _cleanup(container:Container, index:int) -> void: - while container.get_child_count() > index: - var to_free = container.get_child(index) - container.remove_child(to_free) - to_free.queue_free() - -func _update_priorities(): - # since we don't update these per frame, we can just clear them out and - # rebuild them when mapping contexts change - _cleanup(_priorities, 0) - - for mapping:GUIDEActionMapping in GUIDE._active_action_mappings: - var action := mapping.action - if GUIDE._actions_sharing_input.has(action): - var label := Label.new() - var names = ", ".join(GUIDE._actions_sharing_input[action].map(func(it): return it._editor_name())) - label.text = "[%s] > [%s]" % [action._editor_name(), names] - _priorities.add_child(label) - - - if _priorities.get_child_count() == 0: - var label := Label.new() - label.text = "" - _priorities.add_child(label) diff --git a/addons/guide/debugger/guide_debugger.gd.uid b/addons/guide/debugger/guide_debugger.gd.uid deleted file mode 100644 index e9b088a..0000000 --- a/addons/guide/debugger/guide_debugger.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cvb8o2louvxsw diff --git a/addons/guide/debugger/guide_debugger.tscn b/addons/guide/debugger/guide_debugger.tscn deleted file mode 100644 index 5767419..0000000 --- a/addons/guide/debugger/guide_debugger.tscn +++ /dev/null @@ -1,50 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dkr80d2pi0d41"] - -[ext_resource type="Script" uid="uid://cvb8o2louvxsw" path="res://addons/guide/debugger/guide_debugger.gd" id="1_ckdvj"] - -[node name="GuideDebugger" type="MarginContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -script = ExtResource("1_ckdvj") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 2 -mouse_filter = 2 - -[node name="Label" type="Label" parent="VBoxContainer"] -layout_mode = 2 -text = "G.U.I.D.E - Debugger" - -[node name="Label2" type="Label" parent="VBoxContainer"] -layout_mode = 2 -text = "Actions" - -[node name="Actions" type="VFlowContainer" parent="VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 -mouse_filter = 2 - -[node name="Label3" type="Label" parent="VBoxContainer"] -layout_mode = 2 -text = "Inputs" - -[node name="Inputs" type="VFlowContainer" parent="VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 -mouse_filter = 2 - -[node name="Label4" type="Label" parent="VBoxContainer"] -layout_mode = 2 -text = "Action Priority" - -[node name="Priorities" type="VFlowContainer" parent="VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 -mouse_filter = 2 diff --git a/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd b/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd deleted file mode 100644 index 03dbdd8..0000000 --- a/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd +++ /dev/null @@ -1,138 +0,0 @@ -@tool -extends MarginContainer - -const ActionSlot = preload("../action_slot/action_slot.gd") -const Utils = preload("../utils.gd") -const ArrayEdit = preload("../array_edit/array_edit.gd") - -signal delete_requested() -signal duplicate_requested() - -@export var input_mapping_editor_scene:PackedScene -@onready var _action_slot:ActionSlot = %ActionSlot -@onready var _input_mappings:ArrayEdit = %InputMappings - -const ClassScanner = preload("../class_scanner.gd") - -var _plugin:EditorPlugin -var _scanner:ClassScanner -var _undo_redo:EditorUndoRedoManager - -var _mapping:GUIDEActionMapping - -func _ready(): - _action_slot.action_changed.connect(_on_action_changed) - _input_mappings.delete_requested.connect(_on_input_mapping_delete_requested) - _input_mappings.add_requested.connect(_on_input_mappings_add_requested) - _input_mappings.move_requested.connect(_on_input_mappings_move_requested) - _input_mappings.clear_requested.connect(_on_input_mappings_clear_requested) - _input_mappings.duplicate_requested.connect(_on_input_mappings_duplicate_requested) - _input_mappings.collapse_state_changed.connect(_on_input_mappings_collapse_state_changed) - -func initialize(plugin:EditorPlugin, scanner:ClassScanner): - _plugin = plugin - _scanner = scanner - _undo_redo = _plugin.get_undo_redo() - - -func edit(mapping:GUIDEActionMapping): - assert(_mapping == null) - _mapping = mapping - - _mapping.changed.connect(_update) - - _update() - - -func _update(): - _input_mappings.clear() - - _action_slot.action = _mapping.action - - for i in _mapping.input_mappings.size(): - var input_mapping = _mapping.input_mappings[i] - var input_mapping_editor = input_mapping_editor_scene.instantiate() - _input_mappings.add_item(input_mapping_editor) - - input_mapping_editor.initialize(_plugin, _scanner) - input_mapping_editor.edit(input_mapping) - - _input_mappings.collapsed = _mapping.get_meta("_guide_input_mappings_collapsed", false) - -func _on_action_changed(): - _undo_redo.create_action("Change action") - _undo_redo.add_do_property(_mapping, "action", _action_slot.action) - _undo_redo.add_undo_property(_mapping, "action", _mapping.action) - _undo_redo.commit_action() - - -func _on_input_mappings_add_requested(): - var values = _mapping.input_mappings.duplicate() - var new_mapping = GUIDEInputMapping.new() - values.append(new_mapping) - - _undo_redo.create_action("Add input mapping") - - _undo_redo.add_do_property(_mapping, "input_mappings", values) - _undo_redo.add_undo_property(_mapping, "input_mappings", _mapping.input_mappings) - - _undo_redo.commit_action() - - -func _on_input_mapping_delete_requested(index:int): - var values = _mapping.input_mappings.duplicate() - values.remove_at(index) - - _undo_redo.create_action("Delete input mapping") - _undo_redo.add_do_property(_mapping, "input_mappings", values) - _undo_redo.add_undo_property(_mapping, "input_mappings", _mapping.input_mappings) - - _undo_redo.commit_action() - - -func _on_input_mappings_move_requested(from:int, to:int): - var values = _mapping.input_mappings.duplicate() - var mapping = values[from] - values.remove_at(from) - if from < to: - to -= 1 - values.insert(to, mapping) - - _undo_redo.create_action("Move input mapping") - _undo_redo.add_do_property(_mapping, "input_mappings", values) - _undo_redo.add_undo_property(_mapping, "input_mappings", _mapping.input_mappings) - - _undo_redo.commit_action() - - -func _on_input_mappings_clear_requested(): - var values:Array[GUIDEInputMapping] = [] - _undo_redo.create_action("Clear input mappings") - _undo_redo.add_do_property(_mapping, "input_mappings", values) - _undo_redo.add_undo_property(_mapping, "input_mappings", _mapping.input_mappings) - - _undo_redo.commit_action() - -func _on_input_mappings_duplicate_requested(index:int): - var values = _mapping.input_mappings.duplicate() - var copy:GUIDEInputMapping = values[index].duplicate() - copy.input = Utils.duplicate_if_inline(copy.input) - - for i in copy.modifiers.size(): - copy.modifiers[i] = Utils.duplicate_if_inline(copy.modifiers[i]) - - for i in copy.triggers.size(): - copy.triggers[i] = Utils.duplicate_if_inline(copy.triggers[i]) - - # insert copy after original - values.insert(index+1, copy) - - _undo_redo.create_action("Duplicate input mapping") - _undo_redo.add_do_property(_mapping, "input_mappings", values) - _undo_redo.add_undo_property(_mapping, "input_mappings", _mapping.input_mappings) - - _undo_redo.commit_action() - - -func _on_input_mappings_collapse_state_changed(new_state:bool): - _mapping.set_meta("_guide_input_mappings_collapsed", new_state) diff --git a/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd.uid b/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd.uid deleted file mode 100644 index e216155..0000000 --- a/addons/guide/editor/action_mapping_editor/action_mapping_editor.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dib57ucg64xa0 diff --git a/addons/guide/editor/action_mapping_editor/action_mapping_editor.tscn b/addons/guide/editor/action_mapping_editor/action_mapping_editor.tscn deleted file mode 100644 index a1f5faa..0000000 --- a/addons/guide/editor/action_mapping_editor/action_mapping_editor.tscn +++ /dev/null @@ -1,43 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://361aipcef24h"] - -[ext_resource type="Script" uid="uid://dib57ucg64xa0" path="res://addons/guide/editor/action_mapping_editor/action_mapping_editor.gd" id="1_2k0pi"] -[ext_resource type="PackedScene" uid="uid://du4x7ng6ntuk4" path="res://addons/guide/editor/action_slot/action_slot.tscn" id="1_hguf2"] -[ext_resource type="PackedScene" uid="uid://c323mdijdhktg" path="res://addons/guide/editor/input_mapping_editor/input_mapping_editor.tscn" id="2_a8nbp"] -[ext_resource type="PackedScene" uid="uid://cly0ff32fvpb2" path="res://addons/guide/editor/array_edit/array_edit.tscn" id="4_ehr5j"] - -[node name="ActionMappingEditor" type="MarginContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_vertical = 0 -theme_override_constants/margin_bottom = 5 -script = ExtResource("1_2k0pi") -input_mapping_editor_scene = ExtResource("2_a8nbp") - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_vertical = 0 - -[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 0 - -[node name="ActionSlot" parent="HBoxContainer/HBoxContainer" instance=ExtResource("1_hguf2")] -unique_name_in_owner = true -layout_mode = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 0 -size_flags_stretch_ratio = 4.0 - -[node name="InputMappings" parent="HBoxContainer/VBoxContainer" instance=ExtResource("4_ehr5j")] -unique_name_in_owner = true -layout_mode = 2 -title = "Input mappings" -add_tooltip = "Add input mapping" -clear_tooltip = "Clear input mappings" diff --git a/addons/guide/editor/action_slot/action_slot.gd b/addons/guide/editor/action_slot/action_slot.gd deleted file mode 100644 index 4108d3b..0000000 --- a/addons/guide/editor/action_slot/action_slot.gd +++ /dev/null @@ -1,57 +0,0 @@ -@tool -extends LineEdit - -signal action_changed() - -var index:int - -var action:GUIDEAction: - set(value): - if is_instance_valid(action): - action.changed.disconnect(_refresh) - - action = value - - if is_instance_valid(action): - action.changed.connect(_refresh) - - # action_changed can only be emitted by - # dragging an action into this, not when setting - # the property - _refresh() - - -func _refresh(): - if not is_instance_valid(action): - text = "" - tooltip_text = "" - else: - text = action._editor_name() - tooltip_text = action.resource_path - -func _can_drop_data(at_position, data) -> bool: - if not data is Dictionary: - return false - - if data.has("files"): - for file in data["files"]: - if ResourceLoader.load(file) is GUIDEAction: - return true - - return false - - -func _drop_data(at_position, data) -> void: - - for file in data["files"]: - var item = ResourceLoader.load(file) - if item is GUIDEAction: - action = item - action_changed.emit() - -func _gui_input(event): - if event is InputEventMouseButton: - if event.pressed and event.button_index == MOUSE_BUTTON_LEFT: - if is_instance_valid(action): - EditorInterface.edit_resource(action) - diff --git a/addons/guide/editor/action_slot/action_slot.gd.uid b/addons/guide/editor/action_slot/action_slot.gd.uid deleted file mode 100644 index fb2b464..0000000 --- a/addons/guide/editor/action_slot/action_slot.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dvwfhry6u83db diff --git a/addons/guide/editor/action_slot/action_slot.tscn b/addons/guide/editor/action_slot/action_slot.tscn deleted file mode 100644 index 91a540d..0000000 --- a/addons/guide/editor/action_slot/action_slot.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://du4x7ng6ntuk4"] - -[ext_resource type="Script" uid="uid://dvwfhry6u83db" path="res://addons/guide/editor/action_slot/action_slot.gd" id="1_w5nxd"] - -[node name="ActionSlot" type="LineEdit"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 0 -text = "Name" -editable = false -selecting_enabled = false -script = ExtResource("1_w5nxd") diff --git a/addons/guide/editor/array_edit/array_edit.gd b/addons/guide/editor/array_edit/array_edit.gd deleted file mode 100644 index 0c5bfaa..0000000 --- a/addons/guide/editor/array_edit/array_edit.gd +++ /dev/null @@ -1,113 +0,0 @@ -@tool -extends Container -const Utils = preload("../utils.gd") - -@export var item_scene:PackedScene - -@export var title:String = "": - set(value): - title = value - _refresh() - -@export var add_tooltip:String: - set(value): - add_tooltip = value - _refresh() - -@export var clear_tooltip:String: - set(value): - clear_tooltip = value - _refresh() - -@export var item_separation:int = 8: - set(value): - item_separation = value - _refresh() - - -@export var collapsed:bool = false: - set(value): - collapsed = value - _refresh() - -signal add_requested() -signal delete_requested(index:int) -signal move_requested(from:int, to:int) -signal insert_requested(index:int) -signal duplicate_requested(index:int) -signal clear_requested() -signal collapse_state_changed(collapsed:bool) - -@onready var _add_button:Button = %AddButton -@onready var _clear_button:Button = %ClearButton -@onready var _contents:Container = %Contents -@onready var _title_label:Label = %TitleLabel -@onready var _collapse_button:Button = %CollapseButton -@onready var _expand_button:Button = %ExpandButton -@onready var _count_label:Label = %CountLabel - -func _ready(): - _add_button.icon = get_theme_icon("Add", "EditorIcons") - _add_button.pressed.connect(func(): add_requested.emit()) - - _clear_button.icon = get_theme_icon("Clear", "EditorIcons") - _clear_button.pressed.connect(func(): clear_requested.emit()) - - _collapse_button.icon = get_theme_icon("Collapse", "EditorIcons") - _collapse_button.pressed.connect(_on_collapse_pressed) - - _expand_button.icon = get_theme_icon("Forward", "EditorIcons") - _expand_button.pressed.connect(_on_expand_pressed) - - - _refresh() - - -func _refresh(): - if is_instance_valid(_add_button): - _add_button.tooltip_text = add_tooltip - if is_instance_valid(_clear_button): - _clear_button.tooltip_text = clear_tooltip - _clear_button.visible = _contents.get_child_count() > 0 - - if is_instance_valid(_contents): - _contents.add_theme_constant_override("separation", item_separation) - _contents.visible = not collapsed - - if is_instance_valid(_collapse_button): - _collapse_button.visible = not collapsed - - if is_instance_valid(_expand_button): - _expand_button.visible = collapsed - - if is_instance_valid(_title_label): - _title_label.text = title - - if is_instance_valid(_count_label): - _count_label.text = "(%s)" % [_contents.get_child_count()] - - -func clear(): - Utils.clear(_contents) - _refresh() - - -func add_item(new_item:Control): - var item_wrapper = item_scene.instantiate() - _contents.add_child(item_wrapper) - item_wrapper.initialize(new_item) - item_wrapper.move_requested.connect(func(from:int, to:int): move_requested.emit(from, to)) - item_wrapper.delete_requested.connect(func(idx:int): delete_requested.emit(idx) ) - item_wrapper.duplicate_requested.connect(func(idx:int): duplicate_requested.emit(idx) ) - _refresh() - - -func _on_collapse_pressed(): - collapsed = true - collapse_state_changed.emit(true) - - -func _on_expand_pressed(): - collapsed = false - collapse_state_changed.emit(false) - diff --git a/addons/guide/editor/array_edit/array_edit.gd.uid b/addons/guide/editor/array_edit/array_edit.gd.uid deleted file mode 100644 index 05264dd..0000000 --- a/addons/guide/editor/array_edit/array_edit.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dklq5gtpunho2 diff --git a/addons/guide/editor/array_edit/array_edit.tscn b/addons/guide/editor/array_edit/array_edit.tscn deleted file mode 100644 index dd861cd..0000000 --- a/addons/guide/editor/array_edit/array_edit.tscn +++ /dev/null @@ -1,88 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://cly0ff32fvpb2"] - -[ext_resource type="Script" uid="uid://dklq5gtpunho2" path="res://addons/guide/editor/array_edit/array_edit.gd" id="1_y3qyt"] -[ext_resource type="PackedScene" uid="uid://cjabwsa4gmlpp" path="res://addons/guide/editor/array_edit/array_edit_item.tscn" id="2_n3ncl"] - -[sub_resource type="Image" id="Image_2nfri"] -data = { -"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id="ImageTexture_uapko"] -image = SubResource("Image_2nfri") - -[node name="Array" type="MarginContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_y3qyt") -item_scene = ExtResource("2_n3ncl") -item_separation = 10 - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 2 - -[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] -layout_mode = 2 - -[node name="Panel" type="Panel" parent="VBoxContainer/MarginContainer"] -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer"] -layout_mode = 2 - -[node name="CollapseButton" type="Button" parent="VBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(32, 0) -layout_mode = 2 -size_flags_horizontal = 0 -tooltip_text = "Collapse" -icon = SubResource("ImageTexture_uapko") - -[node name="ExpandButton" type="Button" parent="VBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(48, 0) -layout_mode = 2 -size_flags_horizontal = 0 -tooltip_text = "Expand" -icon = SubResource("ImageTexture_uapko") - -[node name="AddButton" type="Button" parent="VBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 0 -icon = SubResource("ImageTexture_uapko") - -[node name="ClearButton" type="Button" parent="VBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -size_flags_horizontal = 0 -icon = SubResource("ImageTexture_uapko") - -[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/HBoxContainer"] -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer/HBoxContainer/MarginContainer"] -layout_mode = 2 - -[node name="TitleLabel" type="Label" parent="VBoxContainer/MarginContainer/HBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 - -[node name="CountLabel" type="Label" parent="VBoxContainer/MarginContainer/HBoxContainer/MarginContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -text = "(0)" - -[node name="Contents" type="VBoxContainer" parent="VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -theme_override_constants/separation = 10 diff --git a/addons/guide/editor/array_edit/array_edit_item.gd b/addons/guide/editor/array_edit/array_edit_item.gd deleted file mode 100644 index 13c8a03..0000000 --- a/addons/guide/editor/array_edit/array_edit_item.gd +++ /dev/null @@ -1,84 +0,0 @@ -@tool -extends Container -const Utils = preload("../utils.gd") -const Dragger = preload("dragger.gd") - -signal move_requested(from:int, to:int) -signal delete_requested(index:int) -signal duplicate_requested(index:int) - -@onready var _dragger:Dragger = %Dragger -@onready var _content:Container = %Content -@onready var _before_indicator:ColorRect = %BeforeIndicator -@onready var _after_indicator:ColorRect = %AfterIndicator -@onready var _popup_menu:PopupMenu = %PopupMenu - - -const ID_DELETE = 2 -const ID_DUPLICATE = 3 - -func _ready(): - _dragger.icon = get_theme_icon("GuiSpinboxUpdown", "EditorIcons") - _before_indicator.color = get_theme_color("box_selection_stroke_color", "Editor") - _after_indicator.color = get_theme_color("box_selection_stroke_color", "Editor") - _before_indicator.visible = false - _after_indicator.visible = false - _dragger._parent_array = get_parent() - _dragger._index = get_index() - _dragger.pressed.connect(_show_popup_menu) - - _popup_menu.clear() - _popup_menu.add_icon_item(get_theme_icon("Duplicate", "EditorIcons"), "Duplicate", ID_DUPLICATE) - _popup_menu.add_icon_item(get_theme_icon("Remove", "EditorIcons"), "Delete", ID_DELETE) - _popup_menu.id_pressed.connect(_on_popup_menu_id_pressed) - -func initialize(content:Control): - Utils.clear(_content) - _content.add_child(content) - - -func _can_drop_data(at_position:Vector2, data) -> bool: - if data is Dictionary and data.has("parent_array") and data.parent_array == get_parent() and data.index != get_index(): - var height = size.y - - var is_before = not _is_last_child() or (at_position.y < height/2.0) - if is_before and data.index == get_index() - 1: - # don't allow the previous child to be inserted at its - # own position - return false - - _before_indicator.visible = is_before - _after_indicator.visible = not is_before - return true - - return false - - -func _drop_data(at_position, data): - var height = size.y - var is_before = not _is_last_child() or (at_position.y < height/2.0) - var from = data.index - var to = get_index() if is_before else get_index() + 1 - move_requested.emit(data.index, to) - _before_indicator.visible = false - _after_indicator.visible = false - -func _is_last_child() -> bool: - return get_index() == get_parent().get_child_count() - 1 - - -func _on_mouse_exited(): - _before_indicator.visible = false - _after_indicator.visible = false - - -func _show_popup_menu(): - _popup_menu.popup(Rect2(get_global_mouse_position(), Vector2.ZERO)) - - -func _on_popup_menu_id_pressed(id:int): - match id: - ID_DELETE: - delete_requested.emit(get_index()) - ID_DUPLICATE: - duplicate_requested.emit(get_index()) diff --git a/addons/guide/editor/array_edit/array_edit_item.gd.uid b/addons/guide/editor/array_edit/array_edit_item.gd.uid deleted file mode 100644 index f01b535..0000000 --- a/addons/guide/editor/array_edit/array_edit_item.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://86p0b71yit85 diff --git a/addons/guide/editor/array_edit/array_edit_item.tscn b/addons/guide/editor/array_edit/array_edit_item.tscn deleted file mode 100644 index 65763a4..0000000 --- a/addons/guide/editor/array_edit/array_edit_item.tscn +++ /dev/null @@ -1,83 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://cjabwsa4gmlpp"] - -[ext_resource type="Script" uid="uid://86p0b71yit85" path="res://addons/guide/editor/array_edit/array_edit_item.gd" id="1_ujx05"] -[ext_resource type="Script" uid="uid://bobwrqyqm5lax" path="res://addons/guide/editor/array_edit/dragger.gd" id="2_53e2r"] - -[sub_resource type="Image" id="Image_p1tee"] -data = { -"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id="ImageTexture_uapko"] -image = SubResource("Image_p1tee") - -[node name="ArrayEditItem" type="MarginContainer"] -anchors_preset = 10 -anchor_right = 1.0 -offset_bottom = 8.0 -grow_horizontal = 2 -script = ExtResource("1_ujx05") - -[node name="MarginContainer" type="MarginContainer" parent="."] -layout_mode = 2 -theme_override_constants/margin_top = 2 -theme_override_constants/margin_bottom = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] -layout_mode = 2 - -[node name="Dragger" type="Button" parent="MarginContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 0 -tooltip_text = "Drag to reorder, click for options." -focus_mode = 0 -mouse_filter = 1 -icon = SubResource("ImageTexture_uapko") -script = ExtResource("2_53e2r") - -[node name="Content" type="MarginContainer" parent="MarginContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 2 -mouse_filter = 2 - -[node name="BeforeIndicator" type="ColorRect" parent="VBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(0, 2) -layout_mode = 2 -mouse_filter = 2 -color = Color(0, 0, 0, 1) - -[node name="Control" type="Control" parent="VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -mouse_filter = 2 - -[node name="AfterIndicator" type="ColorRect" parent="VBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(0, 2) -layout_mode = 2 -mouse_filter = 2 -color = Color(0, 0, 0, 1) - -[node name="PopupMenu" type="PopupMenu" parent="."] -unique_name_in_owner = true -item_count = 2 -item_0/text = "Duplicate" -item_0/icon = SubResource("ImageTexture_uapko") -item_0/id = 3 -item_1/text = "Delete" -item_1/icon = SubResource("ImageTexture_uapko") -item_1/id = 2 - -[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/addons/guide/editor/array_edit/dragger.gd b/addons/guide/editor/array_edit/dragger.gd deleted file mode 100644 index 629283e..0000000 --- a/addons/guide/editor/array_edit/dragger.gd +++ /dev/null @@ -1,8 +0,0 @@ -@tool -extends Button - -var _parent_array:Variant -var _index:int - -func _get_drag_data(at_position): - return { "parent_array" : _parent_array, "index" : _index } diff --git a/addons/guide/editor/array_edit/dragger.gd.uid b/addons/guide/editor/array_edit/dragger.gd.uid deleted file mode 100644 index 58e140a..0000000 --- a/addons/guide/editor/array_edit/dragger.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bobwrqyqm5lax diff --git a/addons/guide/editor/binding_dialog/binding_dialog.gd b/addons/guide/editor/binding_dialog/binding_dialog.gd deleted file mode 100644 index 96a1b02..0000000 --- a/addons/guide/editor/binding_dialog/binding_dialog.gd +++ /dev/null @@ -1,148 +0,0 @@ -@tool -extends Window - -const ClassScanner = preload("../class_scanner.gd") -const Utils = preload("../utils.gd") - -signal input_selected(input:GUIDEInput) - -@onready var _input_display = %InputDisplay -@onready var _available_types:Container = %AvailableTypes -@onready var _none_available:Control = %NoneAvailable -@onready var _some_available:Control = %SomeAvailable -@onready var _select_bool_button:Button = %SelectBoolButton -@onready var _select_1d_button:Button = %Select1DButton -@onready var _select_2d_button:Button = %Select2DButton -@onready var _select_3d_button:Button = %Select3DButton -@onready var _instructions_label:Label = %InstructionsLabel -@onready var _accept_detection_button:Button = %AcceptDetectionButton -@onready var _input_detector:GUIDEInputDetector = %InputDetector -@onready var _detect_bool_button:Button = %DetectBoolButton -@onready var _detect_1d_button:Button = %Detect1DButton -@onready var _detect_2d_button:Button = %Detect2DButton -@onready var _detect_3d_button:Button = %Detect3DButton - -var _scanner:ClassScanner -var _last_detected_input:GUIDEInput - - -func initialize(scanner:ClassScanner): - _scanner = scanner - _setup_dialog() - -func _setup_dialog(): - # we need to bind this here. if we bind it in the editor, the editor - # will crash when opening the scene because it will delete the node it - # just tries to edit. - focus_exited.connect(_on_close_requested) - - _show_inputs_of_value_type(GUIDEAction.GUIDEActionValueType.BOOL) - _instructions_label.text = tr("Press one of the buttons above to detect an input.") - _accept_detection_button.visible = false - - -func _on_close_requested(): - hide() - queue_free() - - -func _show_inputs_of_value_type(type:GUIDEAction.GUIDEActionValueType) -> void: - var items:Array[GUIDEInput] = [] - - _select_bool_button.set_pressed_no_signal(type == GUIDEAction.GUIDEActionValueType.BOOL) - _select_1d_button.set_pressed_no_signal(type == GUIDEAction.GUIDEActionValueType.AXIS_1D) - _select_2d_button.set_pressed_no_signal(type == GUIDEAction.GUIDEActionValueType.AXIS_2D) - _select_3d_button.set_pressed_no_signal(type == GUIDEAction.GUIDEActionValueType.AXIS_3D) - - var all_inputs = _scanner.find_inheritors("GUIDEInput") - for script in all_inputs.values(): - var dummy:GUIDEInput = script.new() - if dummy._native_value_type() == type: - items.append(dummy) - - _some_available.visible = not items.is_empty() - _none_available.visible = items.is_empty() - - if items.is_empty(): - return - - items.sort_custom(func(a,b): return a._editor_name().nocasecmp_to(b._editor_name()) < 0) - Utils.clear(_available_types) - - for item in items: - var button = Button.new() - button.text = item._editor_name() - button.tooltip_text = item._editor_description() - button.pressed.connect(_deliver.bind(item)) - button.size_flags_horizontal = Control.SIZE_EXPAND_FILL - - _available_types.add_child(button) - - -func _deliver(input:GUIDEInput): - input_selected.emit(input) - hide() - queue_free() - - -func _on_select_bool_button_pressed(): - _show_inputs_of_value_type(GUIDEAction.GUIDEActionValueType.BOOL) - - -func _on_select_1d_button_pressed(): - _show_inputs_of_value_type(GUIDEAction.GUIDEActionValueType.AXIS_1D) - - -func _on_select_2d_button_pressed(): - _show_inputs_of_value_type(GUIDEAction.GUIDEActionValueType.AXIS_2D) - - -func _on_select_3d_button_pressed(): - _show_inputs_of_value_type(GUIDEAction.GUIDEActionValueType.AXIS_3D) - - -func _on_input_detector_detection_started(): - _instructions_label.text = tr("Actuate the input now...") - - -func _on_input_detector_input_detected(input:GUIDEInput): - _instructions_label.visible = false - _input_display.visible = true - _input_display.input = input - _accept_detection_button.visible = true - _last_detected_input = input - - -func _begin_detect_input(type:GUIDEAction.GUIDEActionValueType): - _last_detected_input = null - _instructions_label.visible = true - _instructions_label.text = tr("Get ready...") - _accept_detection_button.visible = false - _input_display.visible = false - _input_detector.detect(type) - - -func _on_detect_bool_button_pressed(): - _detect_bool_button.release_focus() - _begin_detect_input(GUIDEAction.GUIDEActionValueType.BOOL) - - -func _on_detect_1d_button_pressed(): - _detect_1d_button.release_focus() - _begin_detect_input(GUIDEAction.GUIDEActionValueType.AXIS_1D) - - -func _on_detect_2d_button_pressed(): - _detect_2d_button.release_focus() - _begin_detect_input(GUIDEAction.GUIDEActionValueType.AXIS_2D) - - -func _on_detect_3d_button_pressed(): - _detect_3d_button.release_focus() - _begin_detect_input(GUIDEAction.GUIDEActionValueType.AXIS_3D) - - -func _on_accept_detection_button_pressed(): - input_selected.emit(_last_detected_input) - hide() - queue_free diff --git a/addons/guide/editor/binding_dialog/binding_dialog.gd.uid b/addons/guide/editor/binding_dialog/binding_dialog.gd.uid deleted file mode 100644 index 02e0ed3..0000000 --- a/addons/guide/editor/binding_dialog/binding_dialog.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://clwmpekkvd0gq diff --git a/addons/guide/editor/binding_dialog/binding_dialog.tscn b/addons/guide/editor/binding_dialog/binding_dialog.tscn deleted file mode 100644 index 7a478ef..0000000 --- a/addons/guide/editor/binding_dialog/binding_dialog.tscn +++ /dev/null @@ -1,216 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://dic27bm4pfw3q"] - -[ext_resource type="Script" uid="uid://clwmpekkvd0gq" path="res://addons/guide/editor/binding_dialog/binding_dialog.gd" id="1_tknjd"] -[ext_resource type="PackedScene" uid="uid://dsv7s6tfmnsrs" path="res://addons/guide/editor/input_display/input_display.tscn" id="2_83ieu"] -[ext_resource type="Script" uid="uid://c5823o2wpiamt" path="res://addons/guide/remapping/guide_input_detector.gd" id="3_c6q6r"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3e874"] -content_margin_left = 4.0 -content_margin_top = 4.0 -content_margin_right = 4.0 -content_margin_bottom = 4.0 -bg_color = Color(1, 0.365, 0.365, 1) -draw_center = false -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -corner_detail = 1 - -[node name="BindingDialog" type="Window"] -title = "Input Configuration" -initial_position = 4 -size = Vector2i(1200, 600) -popup_window = true -min_size = Vector2i(1200, 600) -script = ExtResource("1_tknjd") - -[node name="MarginContainer" type="MarginContainer" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_bottom = 5 - -[node name="BGPanel" type="Panel" parent="MarginContainer"] -unique_name_in_owner = true -layout_mode = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_3e874") - -[node name="MarginContainer" type="MarginContainer" parent="MarginContainer"] -layout_mode = 2 -theme_override_constants/margin_left = 5 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 5 -theme_override_constants/margin_bottom = 5 - -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/MarginContainer"] -layout_mode = 2 - -[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/MarginContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="LeftPanel" type="Panel" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer"] -unique_name_in_owner = true -layout_mode = 2 - -[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer"] -layout_mode = 2 -theme_override_constants/margin_left = 5 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 5 -theme_override_constants/margin_bottom = 5 - -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -theme_override_constants/separation = 10 - -[node name="Label" type="Label" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer"] -layout_mode = 2 -text = "Detect Input" -horizontal_alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer"] -layout_mode = 2 - -[node name="DetectBoolButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 -text = "Boolean" - -[node name="Detect1DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 -text = "1D" - -[node name="Detect2DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 -text = "2D" - -[node name="Detect3DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(80, 0) -layout_mode = 2 -size_flags_horizontal = 3 -text = "3D" - -[node name="InstructionsLabel" type="Label" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 6 -text = "3..2..1.." -horizontal_alignment = 1 -vertical_alignment = 1 -autowrap_mode = 2 - -[node name="InputDisplay" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_83ieu")] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 6 - -[node name="AcceptDetectionButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 4 -text = "Accept" - -[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/MarginContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="RightPanel" type="Panel" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2"] -unique_name_in_owner = true -layout_mode = 2 - -[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2"] -layout_mode = 2 -theme_override_constants/margin_left = 5 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 5 -theme_override_constants/margin_bottom = 5 - -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -theme_override_constants/separation = 10 - -[node name="Label" type="Label" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer"] -layout_mode = 2 -text = "Select Input" -horizontal_alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer"] -layout_mode = 2 - -[node name="SelectBoolButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(80, 0) -layout_mode = 2 -size_flags_horizontal = 3 -toggle_mode = true -text = "Boolean" - -[node name="Select1DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(80, 0) -layout_mode = 2 -size_flags_horizontal = 3 -toggle_mode = true -text = "1D" - -[node name="Select2DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(80, 0) -layout_mode = 2 -size_flags_horizontal = 3 -toggle_mode = true -text = "2D" - -[node name="Select3DButton" type="Button" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(80, 0) -layout_mode = 2 -size_flags_horizontal = 3 -toggle_mode = true -text = "3D" - -[node name="NoneAvailable" type="Label" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 6 -size_flags_vertical = 6 -text = "No matching inputs available." - -[node name="SomeAvailable" type="ScrollContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 - -[node name="AvailableTypes" type="VBoxContainer" parent="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/SomeAvailable"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="InputDetector" type="Node" parent="."] -unique_name_in_owner = true -script = ExtResource("3_c6q6r") - -[connection signal="close_requested" from="." to="." method="_on_close_requested"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer/DetectBoolButton" to="." method="_on_detect_bool_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer/Detect1DButton" to="." method="_on_detect_1d_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer/Detect2DButton" to="." method="_on_detect_2d_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer/Detect3DButton" to="." method="_on_detect_3d_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer/MarginContainer/VBoxContainer/AcceptDetectionButton" to="." method="_on_accept_detection_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer/SelectBoolButton" to="." method="_on_select_bool_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer/Select1DButton" to="." method="_on_select_1d_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer/Select2DButton" to="." method="_on_select_2d_button_pressed"] -[connection signal="pressed" from="MarginContainer/MarginContainer/HBoxContainer/MarginContainer2/MarginContainer/VBoxContainer/HBoxContainer/Select3DButton" to="." method="_on_select_3d_button_pressed"] -[connection signal="detection_started" from="InputDetector" to="." method="_on_input_detector_detection_started"] -[connection signal="input_detected" from="InputDetector" to="." method="_on_input_detector_input_detected"] diff --git a/addons/guide/editor/class_scanner.gd b/addons/guide/editor/class_scanner.gd deleted file mode 100644 index d37e3da..0000000 --- a/addons/guide/editor/class_scanner.gd +++ /dev/null @@ -1,91 +0,0 @@ -## Scanner to find inheriting classes. Used to detect inheritors of -## modifiers and triggers. Ideally this would be built into the editor -## but sometimes one has to hack their way around the limitations. -## This only scans to the extent needed to drive the UI, it's not a general -## purpose implementation. -@tool - -const GUIDESet = preload("../guide_set.gd") - -var _dirty:bool = true - -# looks like we only get very limited access to the script's inheritance tree, -# so we need to do a little caching ourselves -var _script_lut:Dictionary = {} - -func _init(): - EditorInterface.get_resource_filesystem().script_classes_updated.connect(_mark_dirty) - - -func _mark_dirty(): - _dirty = true - -## Returns all classes that directly or indirectly inherit from the -## given class. Only works for scripts in the project, e.g. doesn't -## scan the whole class_db. Key is class name, value is the Script instance -func find_inheritors(clazz_name:StringName) -> Dictionary: - var result:Dictionary = {} - - var root := EditorInterface.get_resource_filesystem().get_filesystem() - - # rebuild the LUT when needed - if _dirty: - _script_lut.clear() - _scan(root) - _dirty = false - - - var open_set:GUIDESet = GUIDESet.new() - # a closed set just to avoid infinite loops, we'll never - # look at the same class more than once. - var closed_set:GUIDESet = GUIDESet.new() - - open_set.add(clazz_name) - - while not open_set.is_empty(): - var next = open_set.pull() - closed_set.add(next) - if not _script_lut.has(next): - # we don't know this script, ignore, move on - continue - - # now find all scripts that extend the one we - # are looking at - for item:ScriptInfo in _script_lut.values(): - if item.extendz == next: - # put them into the result - result[item.clazz_name] = item.clazz_script - # and put their class in the open set - # unless we already looked at it. - if not closed_set.has(item.clazz_name): - open_set.add(item.clazz_name) - - return result - - -func _scan(folder:EditorFileSystemDirectory): - for i in folder.get_file_count(): - var script_clazz = folder.get_file_script_class_name(i) - if script_clazz != "": - var info := _script_lut.get(script_clazz) - if info == null: - info = ScriptInfo.new() - info.clazz_name = script_clazz - info.clazz_script = ResourceLoader.load(folder.get_file_path(i)) - _script_lut[script_clazz] = info - - var script_extendz = folder.get_file_script_class_extends(i) - info.extendz = script_extendz - - for i in folder.get_subdir_count(): - _scan(folder.get_subdir(i)) - - -class ScriptInfo: - var clazz_name:StringName - var extendz:StringName - var clazz_script:Script - - func _to_string() -> String: - return clazz_name + ":" + extendz - diff --git a/addons/guide/editor/class_scanner.gd.uid b/addons/guide/editor/class_scanner.gd.uid deleted file mode 100644 index d4a4d2f..0000000 --- a/addons/guide/editor/class_scanner.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://x1bami7hx7qc diff --git a/addons/guide/editor/input_display/input_display.gd b/addons/guide/editor/input_display/input_display.gd deleted file mode 100644 index eb21aef..0000000 --- a/addons/guide/editor/input_display/input_display.gd +++ /dev/null @@ -1,39 +0,0 @@ -@tool -extends RichTextLabel -signal clicked() - -var _formatter:GUIDEInputFormatter = GUIDEInputFormatter.new(64) - -var input:GUIDEInput: - set(value): - if value == input: - return - - if is_instance_valid(input): - input.changed.disconnect(_refresh) - - input = value - - if is_instance_valid(input): - input.changed.connect(_refresh) - - _refresh() - -func _refresh(): - if not is_instance_valid(input): - parse_bbcode("[center][i][/i][/center]") - tooltip_text = "" - return - - var text := await _formatter.input_as_richtext_async(input, false) - parse_bbcode("[center]" + text + "[/center]") - tooltip_text = _formatter.input_as_text(input) - - -func _gui_input(event): - if event is InputEventMouseButton: - if event.pressed and event.button_index == MOUSE_BUTTON_LEFT: - clicked.emit() - - - diff --git a/addons/guide/editor/input_display/input_display.gd.uid b/addons/guide/editor/input_display/input_display.gd.uid deleted file mode 100644 index 7d03ed3..0000000 --- a/addons/guide/editor/input_display/input_display.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://opxaniicinft diff --git a/addons/guide/editor/input_display/input_display.tscn b/addons/guide/editor/input_display/input_display.tscn deleted file mode 100644 index d15e0f0..0000000 --- a/addons/guide/editor/input_display/input_display.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dsv7s6tfmnsrs"] - -[ext_resource type="Script" uid="uid://opxaniicinft" path="res://addons/guide/editor/input_display/input_display.gd" id="1_ne6sd"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0bp65"] - -[node name="InputDisplay" type="RichTextLabel"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -theme_override_styles/normal = SubResource("StyleBoxEmpty_0bp65") -bbcode_enabled = true -fit_content = true -script = ExtResource("1_ne6sd") diff --git a/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd b/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd deleted file mode 100644 index e4c428c..0000000 --- a/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd +++ /dev/null @@ -1,299 +0,0 @@ -@tool -extends MarginContainer - -const ArrayEdit = preload("../array_edit/array_edit.gd") -const ClassScanner = preload("../class_scanner.gd") -const Utils = preload("../utils.gd") - -@export var modifier_slot_scene:PackedScene -@export var trigger_slot_scene:PackedScene -@export var binding_dialog_scene:PackedScene - -@onready var _edit_input_mapping_button:Button = %EditInputMappingButton -@onready var _input_display = %InputDisplay -@onready var _edit_input_button:Button = %EditInputButton -@onready var _clear_input_button:Button = %ClearInputButton - -@onready var _modifiers:ArrayEdit = %Modifiers -@onready var _add_modifier_popup:PopupMenu = %AddModifierPopup - -@onready var _triggers:ArrayEdit = %Triggers -@onready var _add_trigger_popup:PopupMenu = %AddTriggerPopup - -var _plugin:EditorPlugin -var _scanner:ClassScanner -var _undo_redo:EditorUndoRedoManager - -var _mapping:GUIDEInputMapping - -func _ready(): - _edit_input_button.icon = get_theme_icon("Edit", "EditorIcons") - _clear_input_button.icon = get_theme_icon("Remove", "EditorIcons") - _edit_input_mapping_button.icon = get_theme_icon("Tools", "EditorIcons") - - _modifiers.add_requested.connect(_on_modifiers_add_requested) - _modifiers.delete_requested.connect(_on_modifier_delete_requested) - _modifiers.duplicate_requested.connect(_on_modifier_duplicate_requested) - _modifiers.move_requested.connect(_on_modifier_move_requested) - _modifiers.clear_requested.connect(_on_modifiers_clear_requested) - _modifiers.collapse_state_changed.connect(_on_modifiers_collapse_state_changed) - - _triggers.add_requested.connect(_on_triggers_add_requested) - _triggers.delete_requested.connect(_on_trigger_delete_requested) - _triggers.duplicate_requested.connect(_on_trigger_duplicate_requested) - _triggers.move_requested.connect(_on_trigger_move_requested) - _triggers.clear_requested.connect(_on_triggers_clear_requested) - _triggers.collapse_state_changed.connect(_on_triggers_collapse_state_changed) - - -func initialize(plugin:EditorPlugin, scanner:ClassScanner) -> void: - _plugin = plugin - _scanner = scanner - _undo_redo = plugin.get_undo_redo() - _input_display.clicked.connect(_on_input_display_clicked) - - -func edit(mapping:GUIDEInputMapping) -> void: - assert(_mapping == null) - _mapping = mapping - _mapping.changed.connect(_update) - _update() - - -func _update(): - _modifiers.clear() - _triggers.clear() - - _input_display.input = _mapping.input - for i in _mapping.modifiers.size(): - var modifier_slot = modifier_slot_scene.instantiate() - _modifiers.add_item(modifier_slot) - - modifier_slot.modifier = _mapping.modifiers[i] - modifier_slot.changed.connect(_on_modifier_changed.bind(i, modifier_slot)) - - for i in _mapping.triggers.size(): - var trigger_slot = trigger_slot_scene.instantiate() - _triggers.add_item(trigger_slot) - - trigger_slot.trigger = _mapping.triggers[i] - trigger_slot.changed.connect(_on_trigger_changed.bind(i, trigger_slot)) - - _modifiers.collapsed = _mapping.get_meta("_guide_modifiers_collapsed", false) - _triggers.collapsed = _mapping.get_meta("_guide_triggers_collapsed", false) - - -func _on_modifiers_add_requested(): - _fill_popup(_add_modifier_popup, "GUIDEModifier") - _add_modifier_popup.popup(Rect2(get_global_mouse_position(), Vector2.ZERO)) - - -func _on_triggers_add_requested(): - _fill_popup(_add_trigger_popup, "GUIDETrigger") - _add_trigger_popup.popup(Rect2(get_global_mouse_position(), Vector2.ZERO)) - - -func _fill_popup(popup:PopupMenu, base_clazz:StringName): - popup.clear(true) - - var inheritors := _scanner.find_inheritors(base_clazz) - for type in inheritors.keys(): - var class_script:Script = inheritors[type] - var dummy = class_script.new() - popup.add_item(dummy._editor_name()) - popup.set_item_tooltip(popup.item_count -1, dummy._editor_description()) - popup.set_item_metadata(popup.item_count - 1, class_script) - -func _on_input_display_clicked(): - if is_instance_valid(_mapping.input): - EditorInterface.edit_resource(_mapping.input) - - -func _on_input_changed(input:GUIDEInput): - _undo_redo.create_action("Change input") - - _undo_redo.add_do_property(_mapping, "input", input) - _undo_redo.add_undo_property(_mapping, "input", _mapping.input) - - _undo_redo.commit_action() - - if is_instance_valid(input): - EditorInterface.edit_resource(input) - - -func _on_edit_input_button_pressed(): - var dialog:Window = binding_dialog_scene.instantiate() - EditorInterface.popup_dialog_centered(dialog) - dialog.initialize(_scanner) - dialog.input_selected.connect(_on_input_changed) - - -func _on_clear_input_button_pressed(): - _undo_redo.create_action("Delete bound input") - - _undo_redo.add_do_property(_mapping, "input", null) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.input) - - _undo_redo.commit_action() - - -func _on_add_modifier_popup_index_pressed(index:int) -> void: - var script = _add_modifier_popup.get_item_metadata(index) - var new_modifier = script.new() - - _undo_redo.create_action("Add " + new_modifier._editor_name() + " modifier") - var modifiers = _mapping.modifiers.duplicate() - modifiers.append(new_modifier) - - _undo_redo.add_do_property(_mapping, "modifiers", modifiers) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - - -func _on_add_trigger_popup_index_pressed(index): - var script = _add_trigger_popup.get_item_metadata(index) - var new_trigger = script.new() - - _undo_redo.create_action("Add " + new_trigger._editor_name() + " trigger") - var triggers = _mapping.triggers.duplicate() - triggers.append(new_trigger) - - _undo_redo.add_do_property(_mapping, "triggers", triggers) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - - -func _on_modifier_changed(index:int, slot) -> void: - var new_modifier = slot.modifier - - _undo_redo.create_action("Replace modifier") - var modifiers = _mapping.modifiers.duplicate() - modifiers[index] = new_modifier - - _undo_redo.add_do_property(_mapping, "modifiers", modifiers) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - - -func _on_trigger_changed(index:int, slot) -> void: - var new_trigger = slot.trigger - - _undo_redo.create_action("Replace trigger") - var triggers = _mapping.triggers.duplicate() - triggers[index] = new_trigger - - _undo_redo.add_do_property(_mapping, "triggers", triggers) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - - -func _on_modifier_move_requested(from:int, to:int) -> void: - _undo_redo.create_action("Move modifier") - var modifiers = _mapping.modifiers.duplicate() - var modifier = modifiers[from] - modifiers.remove_at(from) - if from < to: - to -= 1 - modifiers.insert(to, modifier) - - _undo_redo.add_do_property(_mapping, "modifiers", modifiers) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - - -func _on_trigger_move_requested(from:int, to:int) -> void: - _undo_redo.create_action("Move trigger") - var triggers = _mapping.triggers.duplicate() - var trigger = triggers[from] - triggers.remove_at(from) - if from < to: - to -= 1 - triggers.insert(to, trigger) - - _undo_redo.add_do_property(_mapping, "triggers", triggers) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - -func _on_modifier_duplicate_requested(index:int) -> void: - _undo_redo.create_action("Duplicate modifier") - var modifiers = _mapping.modifiers.duplicate() - var copy = Utils.duplicate_if_inline(modifiers[index]) - modifiers.insert(index+1, copy) - - _undo_redo.add_do_property(_mapping, "modifiers", modifiers) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - -func _on_trigger_duplicate_requested(index:int) -> void: - _undo_redo.create_action("Duplicate trigger") - var triggers = _mapping.triggers.duplicate() - var copy = Utils.duplicate_if_inline(triggers[index]) - triggers.insert(index+1, copy) - - _undo_redo.add_do_property(_mapping, "triggers", triggers) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - - - -func _on_modifier_delete_requested(index:int) -> void: - _undo_redo.create_action("Delete modifier") - var modifiers = _mapping.modifiers.duplicate() - modifiers.remove_at(index) - - _undo_redo.add_do_property(_mapping, "modifiers", modifiers) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - - -func _on_trigger_delete_requested(index:int) -> void: - _undo_redo.create_action("Delete trigger") - var triggers = _mapping.triggers.duplicate() - triggers.remove_at(index) - - _undo_redo.add_do_property(_mapping, "triggers", triggers) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - - -func _on_modifiers_clear_requested() -> void: - _undo_redo.create_action("Clear modifiers") - # if this is inlined into the do_property, then it doesn't work - # so lets keep it a local variable - var value:Array[GUIDEModifier] = [] - _undo_redo.add_do_property(_mapping, "modifiers", value) - _undo_redo.add_undo_property(_mapping, "modifiers", _mapping.modifiers) - - _undo_redo.commit_action() - - -func _on_triggers_clear_requested() -> void: - _undo_redo.create_action("Clear triggers") - # if this is inlined into the do_property, then it doesn't work - # so lets keep it a local variable - var value:Array[GUIDETrigger] = [] - _undo_redo.add_do_property(_mapping, "triggers", value) - _undo_redo.add_undo_property(_mapping, "triggers", _mapping.triggers) - - _undo_redo.commit_action() - - -func _on_modifiers_collapse_state_changed(new_state:bool): - _mapping.set_meta("_guide_modifiers_collapsed", new_state) - -func _on_triggers_collapse_state_changed(new_state:bool): - _mapping.set_meta("_guide_triggers_collapsed", new_state) - - -func _on_edit_input_mapping_button_pressed(): - EditorInterface.edit_resource(_mapping) diff --git a/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd.uid b/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd.uid deleted file mode 100644 index 615391d..0000000 --- a/addons/guide/editor/input_mapping_editor/input_mapping_editor.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bw0ejqqmxnh46 diff --git a/addons/guide/editor/input_mapping_editor/input_mapping_editor.tscn b/addons/guide/editor/input_mapping_editor/input_mapping_editor.tscn deleted file mode 100644 index f787576..0000000 --- a/addons/guide/editor/input_mapping_editor/input_mapping_editor.tscn +++ /dev/null @@ -1,140 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://c323mdijdhktg"] - -[ext_resource type="PackedScene" uid="uid://dsv7s6tfmnsrs" path="res://addons/guide/editor/input_display/input_display.tscn" id="1_pg8n3"] -[ext_resource type="Script" uid="uid://bw0ejqqmxnh46" path="res://addons/guide/editor/input_mapping_editor/input_mapping_editor.gd" id="1_xsluc"] -[ext_resource type="PackedScene" uid="uid://ck5a30syo6bpo" path="res://addons/guide/editor/modifier_slot/modifier_slot.tscn" id="2_uhbrq"] -[ext_resource type="PackedScene" uid="uid://tk30wnstb0ku" path="res://addons/guide/editor/trigger_slot/trigger_slot.tscn" id="3_e0jys"] -[ext_resource type="PackedScene" uid="uid://dic27bm4pfw3q" path="res://addons/guide/editor/binding_dialog/binding_dialog.tscn" id="4_oepf3"] -[ext_resource type="PackedScene" uid="uid://cly0ff32fvpb2" path="res://addons/guide/editor/array_edit/array_edit.tscn" id="6_jekhk"] - -[sub_resource type="Image" id="Image_uu37q"] -data = { -"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), -"format": "RGBA8", -"height": 16, -"mipmaps": false, -"width": 16 -} - -[sub_resource type="ImageTexture" id="ImageTexture_y0eyy"] -image = SubResource("Image_uu37q") - -[node name="InputMappingEditor" type="MarginContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_vertical = 0 -script = ExtResource("1_xsluc") -modifier_slot_scene = ExtResource("2_uhbrq") -trigger_slot_scene = ExtResource("3_e0jys") -binding_dialog_scene = ExtResource("4_oepf3") - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_vertical = 0 -theme_override_constants/separation = 8 - -[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_vertical = 0 - -[node name="Panel" type="Panel" parent="HBoxContainer/MarginContainer"] -visible = false -layout_mode = 2 - -[node name="EditInputMappingButton" type="Button" parent="HBoxContainer/MarginContainer"] -unique_name_in_owner = true -layout_mode = 2 -tooltip_text = "Open input mapping in inspector" -icon = SubResource("ImageTexture_y0eyy") -flat = true - -[node name="MarginContainer1" type="MarginContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="Panel" type="Panel" parent="HBoxContainer/MarginContainer1"] -visible = false -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/MarginContainer1"] -layout_mode = 2 - -[node name="InputDisplay" parent="HBoxContainer/MarginContainer1/HBoxContainer" instance=ExtResource("1_pg8n3")] -unique_name_in_owner = true -layout_mode = 2 -scroll_active = false - -[node name="EditInputButton" type="Button" parent="HBoxContainer/MarginContainer1/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 0 -tooltip_text = "Edit bound input..." -icon = SubResource("ImageTexture_y0eyy") -flat = true - -[node name="ClearInputButton" type="Button" parent="HBoxContainer/MarginContainer1/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 0 -tooltip_text = "Delete bound input" -icon = SubResource("ImageTexture_y0eyy") -flat = true - -[node name="MarginContainer2" type="MarginContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 2.0 - -[node name="Panel" type="Panel" parent="HBoxContainer/MarginContainer2"] -visible = false -layout_mode = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/MarginContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 0 -size_flags_stretch_ratio = 2.0 - -[node name="Modifiers" parent="HBoxContainer/MarginContainer2/VBoxContainer" instance=ExtResource("6_jekhk")] -unique_name_in_owner = true -layout_mode = 2 -title = "Modifiers" -add_tooltip = "Add modifier..." -clear_tooltip = "Clear modifiers" - -[node name="AddModifierPopup" type="PopupMenu" parent="HBoxContainer/MarginContainer2/VBoxContainer"] -unique_name_in_owner = true - -[node name="MarginContainer3" type="MarginContainer" parent="HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 2.0 - -[node name="Panel" type="Panel" parent="HBoxContainer/MarginContainer3"] -visible = false -layout_mode = 2 - -[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/MarginContainer3"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 0 -size_flags_stretch_ratio = 2.0 - -[node name="Triggers" parent="HBoxContainer/MarginContainer3/VBoxContainer2" instance=ExtResource("6_jekhk")] -unique_name_in_owner = true -layout_mode = 2 -title = "Triggers" -add_tooltip = "Add trigger..." -clear_tooltip = "Clear triggers" - -[node name="AddTriggerPopup" type="PopupMenu" parent="HBoxContainer/MarginContainer3/VBoxContainer2"] -unique_name_in_owner = true - -[connection signal="pressed" from="HBoxContainer/MarginContainer/EditInputMappingButton" to="." method="_on_edit_input_mapping_button_pressed"] -[connection signal="pressed" from="HBoxContainer/MarginContainer1/HBoxContainer/EditInputButton" to="." method="_on_edit_input_button_pressed"] -[connection signal="pressed" from="HBoxContainer/MarginContainer1/HBoxContainer/ClearInputButton" to="." method="_on_clear_input_button_pressed"] -[connection signal="index_pressed" from="HBoxContainer/MarginContainer2/VBoxContainer/AddModifierPopup" to="." method="_on_add_modifier_popup_index_pressed"] -[connection signal="index_pressed" from="HBoxContainer/MarginContainer3/VBoxContainer2/AddTriggerPopup" to="." method="_on_add_trigger_popup_index_pressed"] diff --git a/addons/guide/editor/logo_editor_small.svg b/addons/guide/editor/logo_editor_small.svg deleted file mode 100644 index 38b6805..0000000 --- a/addons/guide/editor/logo_editor_small.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/addons/guide/editor/logo_editor_small.svg.import b/addons/guide/editor/logo_editor_small.svg.import deleted file mode 100644 index 50a40ea..0000000 --- a/addons/guide/editor/logo_editor_small.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cap7e0f05pj8j" -path="res://.godot/imported/logo_editor_small.svg-a18f1eaff840dcdf5215ef26c289caf9.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/editor/logo_editor_small.svg" -dest_files=["res://.godot/imported/logo_editor_small.svg-a18f1eaff840dcdf5215ef26c289caf9.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd b/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd deleted file mode 100644 index 8f7882c..0000000 --- a/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd +++ /dev/null @@ -1,159 +0,0 @@ -@tool -extends MarginContainer - -const ClassScanner = preload("../class_scanner.gd") -const Utils = preload("../utils.gd") -const ArrayEdit = preload("../array_edit/array_edit.gd") - -@export var action_mapping_editor_scene:PackedScene - -@onready var _title_label:Label = %TitleLabel -@onready var _action_mappings:ArrayEdit = %ActionMappings -@onready var _editing_view:Control = %EditingView -@onready var _empty_view = %EmptyView - -var _plugin:EditorPlugin -var _current_context:GUIDEMappingContext -var _undo_redo:EditorUndoRedoManager -var _scanner:ClassScanner - - -func _ready(): - _title_label.add_theme_font_override("font", get_theme_font("title", "EditorFonts")) - _scanner = ClassScanner.new() - - _editing_view.visible = false - _empty_view.visible = true - - _action_mappings.add_requested.connect(_on_action_mappings_add_requested) - _action_mappings.move_requested.connect(_on_action_mappings_move_requested) - _action_mappings.delete_requested.connect(_on_action_mapping_delete_requested) - _action_mappings.clear_requested.connect(_on_action_mappings_clear_requested) - _action_mappings.duplicate_requested.connect(_on_action_mapping_duplicate_requested) - _action_mappings.collapse_state_changed.connect(_on_action_mappings_collapse_state_changed) - -func initialize(plugin:EditorPlugin) -> void: - _plugin = plugin - _undo_redo = plugin.get_undo_redo() - - -func edit(context:GUIDEMappingContext) -> void: - if is_instance_valid(_current_context): - _current_context.changed.disconnect(_refresh) - - _current_context = context - - if is_instance_valid(_current_context): - _current_context.changed.connect(_refresh) - - _refresh() - - -func _refresh(): - _editing_view.visible = is_instance_valid(_current_context) - _empty_view.visible = not is_instance_valid(_current_context) - - if not is_instance_valid(_current_context): - return - - _title_label.text = _current_context._editor_name() - _title_label.tooltip_text = _current_context.resource_path - - _action_mappings.clear() - - for i in _current_context.mappings.size(): - var mapping = _current_context.mappings[i] - - var mapping_editor = action_mapping_editor_scene.instantiate() - mapping_editor.initialize(_plugin, _scanner) - - _action_mappings.add_item(mapping_editor) - - mapping_editor.edit(mapping) - - _action_mappings.collapsed = _current_context.get_meta("_guide_action_mappings_collapsed", false) - -func _on_action_mappings_add_requested(): - var mappings = _current_context.mappings.duplicate() - var new_mapping := GUIDEActionMapping.new() - # don't set an action because they should come from the file system - mappings.append(new_mapping) - - _undo_redo.create_action("Add action mapping") - - _undo_redo.add_do_property(_current_context, "mappings", mappings) - _undo_redo.add_undo_property(_current_context, "mappings", _current_context.mappings) - - _undo_redo.commit_action() - - -func _on_action_mappings_move_requested(from:int, to:int): - var mappings = _current_context.mappings.duplicate() - var mapping = mappings[from] - mappings.remove_at(from) - if from < to: - to -= 1 - mappings.insert(to, mapping) - - _undo_redo.create_action("Move action mapping") - - _undo_redo.add_do_property(_current_context, "mappings", mappings) - _undo_redo.add_undo_property(_current_context, "mappings", _current_context.mappings) - - _undo_redo.commit_action() - - -func _on_action_mapping_delete_requested(index:int): - var mappings = _current_context.mappings.duplicate() - mappings.remove_at(index) - - _undo_redo.create_action("Delete action mapping") - - _undo_redo.add_do_property(_current_context, "mappings", mappings) - _undo_redo.add_undo_property(_current_context, "mappings", _current_context.mappings) - - _undo_redo.commit_action() - - -func _on_action_mappings_clear_requested(): - var mappings:Array[GUIDEActionMapping] = [] - - _undo_redo.create_action("Clear action mappings") - - _undo_redo.add_do_property(_current_context, "mappings", mappings) - _undo_redo.add_undo_property(_current_context, "mappings", _current_context.mappings) - - _undo_redo.commit_action() - -func _on_action_mapping_duplicate_requested(index:int): - var mappings = _current_context.mappings.duplicate() - var to_duplicate:GUIDEActionMapping = mappings[index] - - var copy = GUIDEActionMapping.new() - # don't set the action, because each mapping should have a unique mapping - for input_mapping:GUIDEInputMapping in to_duplicate.input_mappings: - var copied_input_mapping := GUIDEInputMapping.new() - copied_input_mapping.input = Utils.duplicate_if_inline(input_mapping.input) - for modifier in input_mapping.modifiers: - copied_input_mapping.modifiers.append(Utils.duplicate_if_inline(modifier)) - - for trigger in input_mapping.triggers: - copied_input_mapping.triggers.append(Utils.duplicate_if_inline(trigger)) - - copy.input_mappings.append(copied_input_mapping) - - # insert the copy after the copied mapping - mappings.insert(index+1, copy) - - - _undo_redo.create_action("Duplicate action mapping") - - _undo_redo.add_do_property(_current_context, "mappings", mappings) - _undo_redo.add_undo_property(_current_context, "mappings", _current_context.mappings) - - _undo_redo.commit_action() - -func _on_action_mappings_collapse_state_changed(new_state:bool): - _current_context.set_meta("_guide_action_mappings_collapsed", new_state) - - diff --git a/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd.uid b/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd.uid deleted file mode 100644 index 8c80101..0000000 --- a/addons/guide/editor/mapping_context_editor/mapping_context_editor.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://28b86h1tj4ne diff --git a/addons/guide/editor/mapping_context_editor/mapping_context_editor.tscn b/addons/guide/editor/mapping_context_editor/mapping_context_editor.tscn deleted file mode 100644 index 2fbf257..0000000 --- a/addons/guide/editor/mapping_context_editor/mapping_context_editor.tscn +++ /dev/null @@ -1,58 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://dm3hott3tfvwe"] - -[ext_resource type="Script" uid="uid://28b86h1tj4ne" path="res://addons/guide/editor/mapping_context_editor/mapping_context_editor.gd" id="1_vytdu"] -[ext_resource type="PackedScene" uid="uid://361aipcef24h" path="res://addons/guide/editor/action_mapping_editor/action_mapping_editor.tscn" id="2_qb3p8"] -[ext_resource type="PackedScene" uid="uid://cly0ff32fvpb2" path="res://addons/guide/editor/array_edit/array_edit.tscn" id="3_x7h5x"] - -[node name="MappingContextEditor" type="MarginContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -theme_override_constants/margin_left = 5 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 5 -theme_override_constants/margin_bottom = 5 -script = ExtResource("1_vytdu") -action_mapping_editor_scene = ExtResource("2_qb3p8") - -[node name="EditingView" type="VBoxContainer" parent="."] -unique_name_in_owner = true -layout_mode = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="EditingView"] -layout_mode = 2 - -[node name="TitleLabel" type="Label" parent="EditingView/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 6 -text = "narf.tres" -horizontal_alignment = 1 - -[node name="MarginContainer" type="MarginContainer" parent="EditingView"] -layout_mode = 2 -theme_override_constants/margin_bottom = 5 - -[node name="ScrollContainer" type="ScrollContainer" parent="EditingView"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="ActionMappings" parent="EditingView/ScrollContainer" instance=ExtResource("3_x7h5x")] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 -title = "Action mappings" -add_tooltip = "Add action mapping" -clear_tooltip = "Clear action mappings" - -[node name="EmptyView" type="CenterContainer" parent="."] -unique_name_in_owner = true -layout_mode = 2 - -[node name="Label" type="Label" parent="EmptyView"] -layout_mode = 2 -text = "Create and open a GUIDEMappingContext to get started." diff --git a/addons/guide/editor/modifier_slot/modifier_slot.gd b/addons/guide/editor/modifier_slot/modifier_slot.gd deleted file mode 100644 index 30dc53d..0000000 --- a/addons/guide/editor/modifier_slot/modifier_slot.gd +++ /dev/null @@ -1,14 +0,0 @@ -@tool -extends "../resource_slot/resource_slot.gd" - -var modifier:GUIDEModifier: - set(value): - _value = value - get: - return _value - -func _accepts_drop_data(data:Resource) -> bool: - return data is GUIDEModifier - - - diff --git a/addons/guide/editor/modifier_slot/modifier_slot.gd.uid b/addons/guide/editor/modifier_slot/modifier_slot.gd.uid deleted file mode 100644 index eef3c4a..0000000 --- a/addons/guide/editor/modifier_slot/modifier_slot.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://s2eppvhqc6wn diff --git a/addons/guide/editor/modifier_slot/modifier_slot.tscn b/addons/guide/editor/modifier_slot/modifier_slot.tscn deleted file mode 100644 index c6b5636..0000000 --- a/addons/guide/editor/modifier_slot/modifier_slot.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://ck5a30syo6bpo"] - -[ext_resource type="Script" uid="uid://s2eppvhqc6wn" path="res://addons/guide/editor/modifier_slot/modifier_slot.gd" id="1_273m5"] - -[node name="LineEdit" type="LineEdit"] -offset_right = 1920.0 -offset_bottom = 31.0 -size_flags_horizontal = 3 -size_flags_vertical = 0 -text = "Name" -editable = false -context_menu_enabled = false -virtual_keyboard_enabled = false -shortcut_keys_enabled = false -middle_mouse_paste_enabled = false -selecting_enabled = false -drag_and_drop_selection_enabled = false -script = ExtResource("1_273m5") diff --git a/addons/guide/editor/resource_slot/resource_slot.gd b/addons/guide/editor/resource_slot/resource_slot.gd deleted file mode 100644 index d54ec95..0000000 --- a/addons/guide/editor/resource_slot/resource_slot.gd +++ /dev/null @@ -1,106 +0,0 @@ -@tool -extends LineEdit - -signal changed() -const Utils = preload("../utils.gd") - -func _ready(): - editable = false - context_menu_enabled = false - virtual_keyboard_enabled = false - shortcut_keys_enabled = false - selecting_enabled = false - drag_and_drop_selection_enabled = false - middle_mouse_paste_enabled = false - -## The underlying resource. This is opened for editing when the user clicks on the control. Its also -## used when dragging from the control. -var _value:Resource = null: - set(value): - if _value == value: - return - - # stop tracking changes to the old resource (if any) - if is_instance_valid(_value): - _value.changed.disconnect(_update_from_value) - - _value = value - - # track changes to the resource itself - if is_instance_valid(_value): - _value.changed.connect(_update_from_value) - - _update_from_value() - changed.emit() - -func _update_from_value(): - if not is_instance_valid(_value): - text = "" - tooltip_text = "" - remove_theme_color_override("font_uneditable_color") - else: - text = _value._editor_name() - tooltip_text = _value.resource_path - # if the value is shared, we override the font color to indicate that - if not Utils.is_inline(_value): - add_theme_color_override("font_uneditable_color", get_theme_color("accent_color", "Editor")) - queue_redraw() - else: - remove_theme_color_override("font_uneditable_color") - -## Can be overridden to handle the drop data. This method is called when the user drops something on the control. -## If the value should be updated ,this method should set the _value property. -func _do_drop_data(data:Resource): - _value = data - - -## Whether this control can accept drop data. This method is called when the user drags something over the control. -func _accepts_drop_data(data:Resource) -> bool: - return false - -func _can_drop_data(at_position, data) -> bool: - if data is Resource: - return _accepts_drop_data(data) - - if not data is Dictionary: - return false - - if data.has("files"): - for file in data["files"]: - if _accepts_drop_data(ResourceLoader.load(file)): - return true - - return false - - -func _drop_data(at_position, data) -> void: - if data is Resource: - _do_drop_data(data) - return - - for file in data["files"]: - var item := ResourceLoader.load(file) - _do_drop_data(item) - - -func _get_drag_data(at_position: Vector2) -> Variant: - if is_instance_valid(_value): - var _preview := TextureRect.new() - _preview.texture = get_theme_icon("File", "EditorIcons") - set_drag_preview(_preview) - # if the value is shared, we just hand out the resource path - if not Utils.is_inline(_value): - return {"files": [_value.resource_path]} - else: - # otherwise we hand out a shallow copy - return _value.duplicate() - else: - return null - -func _gui_input(event): - if event is InputEventMouseButton: - if event.pressed and event.button_index == MOUSE_BUTTON_LEFT: - if is_instance_valid(_value): - EditorInterface.edit_resource(_value) - - diff --git a/addons/guide/editor/resource_slot/resource_slot.gd.uid b/addons/guide/editor/resource_slot/resource_slot.gd.uid deleted file mode 100644 index 545ac0d..0000000 --- a/addons/guide/editor/resource_slot/resource_slot.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b8d5q5qpelshd diff --git a/addons/guide/editor/trigger_slot/trigger_slot.gd b/addons/guide/editor/trigger_slot/trigger_slot.gd deleted file mode 100644 index 70cb053..0000000 --- a/addons/guide/editor/trigger_slot/trigger_slot.gd +++ /dev/null @@ -1,14 +0,0 @@ -@tool -extends "../resource_slot/resource_slot.gd" - -var trigger:GUIDETrigger: - set(value): - _value = value - get: - return _value - -func _accepts_drop_data(data:Resource) -> bool: - return data is GUIDETrigger - - - diff --git a/addons/guide/editor/trigger_slot/trigger_slot.gd.uid b/addons/guide/editor/trigger_slot/trigger_slot.gd.uid deleted file mode 100644 index 81f42e1..0000000 --- a/addons/guide/editor/trigger_slot/trigger_slot.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://doajsqn833r5e diff --git a/addons/guide/editor/trigger_slot/trigger_slot.tscn b/addons/guide/editor/trigger_slot/trigger_slot.tscn deleted file mode 100644 index 35d77e0..0000000 --- a/addons/guide/editor/trigger_slot/trigger_slot.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://tk30wnstb0ku"] - -[ext_resource type="Script" uid="uid://doajsqn833r5e" path="res://addons/guide/editor/trigger_slot/trigger_slot.gd" id="1_wxafc"] - -[node name="LineEdit" type="LineEdit"] -unique_name_in_owner = true -offset_right = 1920.0 -offset_bottom = 31.0 -size_flags_horizontal = 3 -size_flags_vertical = 0 -tooltip_text = "Delete trigger" -text = "Name" -editable = false -context_menu_enabled = false -virtual_keyboard_enabled = false -shortcut_keys_enabled = false -middle_mouse_paste_enabled = false -selecting_enabled = false -drag_and_drop_selection_enabled = false -script = ExtResource("1_wxafc") diff --git a/addons/guide/editor/utils.gd b/addons/guide/editor/utils.gd deleted file mode 100644 index f3549af..0000000 --- a/addons/guide/editor/utils.gd +++ /dev/null @@ -1,22 +0,0 @@ -## Removes and frees all children of a node. -static func clear(node:Node): - if not is_instance_valid(node): - return - for child in node.get_children(): - node.remove_child(child) - child.queue_free() - - -## Checks if the given resource is an inline resource. If so, returns a shallow copy, -## otherwise returns the resource. If the resource is null, returns null. -static func duplicate_if_inline(resource:Resource) -> Resource: - if is_inline(resource): - return resource.duplicate() - return resource - - -## Checks if the given resource is an inline resource. -static func is_inline(resource:Resource) -> bool: - if resource == null: - return false - return resource.resource_path.contains("::") or resource.resource_path == "" \ No newline at end of file diff --git a/addons/guide/editor/utils.gd.uid b/addons/guide/editor/utils.gd.uid deleted file mode 100644 index b1542cf..0000000 --- a/addons/guide/editor/utils.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d02ft0qt2ilsr diff --git a/addons/guide/guide.gd b/addons/guide/guide.gd deleted file mode 100644 index 1f8f19f..0000000 --- a/addons/guide/guide.gd +++ /dev/null @@ -1,365 +0,0 @@ -extends Node - -const GUIDESet = preload("guide_set.gd") -const GUIDEReset = preload("guide_reset.gd") -const GUIDEInputTracker = preload("guide_input_tracker.gd") - -## This is emitted whenever input mappings change (either due to mapping -## contexts being enabled/disabled or remapping configs being re-applied or -## joystick devices being connected/disconnected). -## This is useful for updating UI prompts. -signal input_mappings_changed() - -## The currently active contexts. Key is the context, value is the priority -var _active_contexts:Dictionary = {} -## The currently active action mappings. -var _active_action_mappings:Array[GUIDEActionMapping] = [] - -## The currently active remapping config. -var _active_remapping_config:GUIDERemappingConfig - -## All currently active inputs as collected from the active input mappings -var _active_inputs:Array[GUIDEInput] = [] - -## A dictionary of actions sharing input. Key is the action, value -## is an array of lower-priority actions that share input with the -## key action. -var _actions_sharing_input:Dictionary = {} - -## A reference to the reset node which resets inputs that need a reset per frame -## This is an extra node because the reset should run at the end of the frame -## before new input is processed at the beginning of the frame. -var _reset_node:GUIDEReset - - -func _ready(): - process_mode = Node.PROCESS_MODE_ALWAYS - _reset_node = GUIDEReset.new() - add_child(_reset_node) - # attach to the current viewport to get input events - GUIDEInputTracker._instrument.call_deferred(get_viewport()) - - get_tree().node_added.connect(_on_node_added) - - # Emit a change of input mappings whenever a joystick was connected - # or disconnected. - Input.joy_connection_changed.connect(func(ig, ig2): input_mappings_changed.emit()) - - -## Called when a node is added to the tree. If the node is a window -## GUIDE will instrument it to get events when the window is focused. -func _on_node_added(node:Node) -> void: - if not node is Window: - return - - GUIDEInputTracker._instrument(node) - - -## Injects input into GUIDE. GUIDE will call this automatically but -## can also be used to manually inject input for GUIDE to handle -func inject_input(event:InputEvent) -> void: - if event is InputEventAction: - return # we don't react to Godot's built-in events - - for input:GUIDEInput in _active_inputs: - input._input(event) - - -## Applies an input remapping config. This will override all input bindings in the -## currently loaded mapping contexts with the bindings from the configuration. -## Note that GUIDE will not track changes to the remapping config. If your remapping -## config changes, you will need to call this method again. -func set_remapping_config(config:GUIDERemappingConfig) -> void: - _active_remapping_config = config - _update_caches() - - -## Enables the given context with the given priority. Lower numbers have higher priority. If -## disable_others is set to true, all other currently enabled mapping contexts will be disabled. -func enable_mapping_context(context:GUIDEMappingContext, disable_others:bool = false, priority:int = 0): - if not is_instance_valid(context): - push_error("Null context given. Ignoring.") - return - - if disable_others: - _active_contexts.clear() - - _active_contexts[context] = priority - _update_caches() - - -## Disables the given mapping context. -func disable_mapping_context(context:GUIDEMappingContext): - if not is_instance_valid(context): - push_error("Null context given. Ignoring.") - return - - _active_contexts.erase(context) - _update_caches() - - -## Checks whether the given mapping context is currently enabled. -func is_mapping_context_enabled(context:GUIDEMappingContext) -> bool: - return _active_contexts.has(context) - - -## Returns the currently enabled mapping contexts -func get_enabled_mapping_contexts() -> Array[GUIDEMappingContext]: - var result:Array[GUIDEMappingContext] = [] - for key in _active_contexts.keys(): - result.append(key) - return result - - -## Processes all currently active actions -func _process(delta:float) -> void: - var blocked_actions:GUIDESet = GUIDESet.new() - - for action_mapping:GUIDEActionMapping in _active_action_mappings: - - var action:GUIDEAction = action_mapping.action - - # Walk over all input mappings for this action and consolidate state - # and result value. - var consolidated_value:Vector3 = Vector3.ZERO - var consolidated_trigger_state:GUIDETrigger.GUIDETriggerState - - for input_mapping:GUIDEInputMapping in action_mapping.input_mappings: - input_mapping._update_state(delta, action.action_value_type) - consolidated_value += input_mapping._value - consolidated_trigger_state = max(consolidated_trigger_state, input_mapping._state) - - # we do the blocking check only here because triggers may need to run anyways - # (e.g. to collect hold times). - if blocked_actions.has(action): - consolidated_trigger_state = GUIDETrigger.GUIDETriggerState.NONE - - if action.block_lower_priority_actions and \ - consolidated_trigger_state == GUIDETrigger.GUIDETriggerState.TRIGGERED and \ - _actions_sharing_input.has(action): - for blocked_action in _actions_sharing_input[action]: - blocked_actions.add(blocked_action) - - - # Now state change events. - match(action._last_state): - GUIDEAction.GUIDEActionState.TRIGGERED: - match(consolidated_trigger_state): - GUIDETrigger.GUIDETriggerState.NONE: - action._completed(consolidated_value) - GUIDETrigger.GUIDETriggerState.ONGOING: - action._ongoing(consolidated_value, delta) - GUIDETrigger.GUIDETriggerState.TRIGGERED: - action._triggered(consolidated_value, delta) - - GUIDEAction.GUIDEActionState.ONGOING: - match(consolidated_trigger_state): - GUIDETrigger.GUIDETriggerState.NONE: - action._cancelled(consolidated_value) - GUIDETrigger.GUIDETriggerState.ONGOING: - action._ongoing(consolidated_value, delta) - GUIDETrigger.GUIDETriggerState.TRIGGERED: - action._triggered(consolidated_value, delta) - - GUIDEAction.GUIDEActionState.COMPLETED: - match(consolidated_trigger_state): - GUIDETrigger.GUIDETriggerState.NONE: - # make sure the value updated but don't emit any other events - action._update_value(consolidated_value) - GUIDETrigger.GUIDETriggerState.ONGOING: - action._started(consolidated_value) - GUIDETrigger.GUIDETriggerState.TRIGGERED: - action._triggered(consolidated_value, delta) - -func _update_caches(): - # Notify existing inputs that they aren no longer required - for input:GUIDEInput in _active_inputs: - input._reset() - input._end_usage() - - # Cancel all actions, so they don't remain in weird states. - for mapping:GUIDEActionMapping in _active_action_mappings: - match mapping.action._last_state: - GUIDEAction.GUIDEActionState.ONGOING: - mapping.action._cancelled(Vector3.ZERO) - GUIDEAction.GUIDEActionState.TRIGGERED: - mapping.action._completed(Vector3.ZERO) - # notify all modifiers they are no longer in use - for input_mapping in mapping.input_mappings: - for modifier in input_mapping.modifiers: - modifier._end_usage() - - _active_inputs.clear() - _active_action_mappings.clear() - _actions_sharing_input.clear() - - var sorted_contexts:Array[Dictionary] = [] - - for context:GUIDEMappingContext in _active_contexts.keys(): - sorted_contexts.append({"context": context, "priority": _active_contexts[context]}) - - sorted_contexts.sort_custom( func(a,b): return a.priority < b.priority ) - - # The actions we already have processed. Same action may appear in different - # contexts, so if we find the same action twice, only the first instance wins. - var processed_actions:GUIDESet = GUIDESet.new() - var consolidated_inputs:GUIDESet = GUIDESet.new() - - for entry:Dictionary in sorted_contexts: - var context:GUIDEMappingContext = entry.context - for action_mapping:GUIDEActionMapping in context.mappings: - var action := action_mapping.action - # If the action was already configured in a higher priority context, - # we'll skip it. - if processed_actions.has(action): - # skip - continue - - processed_actions.add(action) - - # We consolidate the inputs here, so we'll internally build a new - # action mapping that uses consolidated inputs rather than the - # original ones. This achieves multiple things: - # - if two actions check for the same input, we only need to - # process the input once instead of twice. - # - it allows us to prioritize input, if two actions check for - # the same input. This way the first action can consume the - # input and not have it affect further actions. - # - we make sure nobody shares triggers as they are stateful and - # should not be shared. - - var effective_mapping = GUIDEActionMapping.new() - effective_mapping.action = action - - # now update the input mappings - for index in action_mapping.input_mappings.size(): - var bound_input:GUIDEInput = action_mapping.input_mappings[index].input - - # if the mapping has an override for the input, apply it. - if _active_remapping_config != null and \ - _active_remapping_config._has(context, action, index): - bound_input = _active_remapping_config._get_bound_input_or_null(context, action, index) - - # make a new input mapping - var new_input_mapping := GUIDEInputMapping.new() - - # can be null for combo mappings, so check that - if bound_input != null: - # check if we already have this kind of input - var existing = consolidated_inputs.first_match(func(it:GUIDEInput): return it.is_same_as(bound_input)) - if existing != null: - # if we have this already, use the instance we have - bound_input = existing - else: - # otherwise register this input into the consolidated input - consolidated_inputs.add(bound_input) - - new_input_mapping.input = bound_input - # modifiers cannot be re-bound so we can just use the one - # from the original configuration. this is also needed for shared - # modifiers to work. - new_input_mapping.modifiers = action_mapping.input_mappings[index].modifiers - # triggers also cannot be re-bound but we still make a copy - # to ensure that no shared triggers exist. - new_input_mapping.triggers = [] - - for trigger in action_mapping.input_mappings[index].triggers: - new_input_mapping.triggers.append(trigger.duplicate()) - - new_input_mapping._initialize() - - # and add it to the new mapping - effective_mapping.input_mappings.append(new_input_mapping) - - - # if any binding remains, add the mapping to the list of active - # action mappings - if not effective_mapping.input_mappings.is_empty(): - _active_action_mappings.append(effective_mapping) - - # now we have a new set of active inputs - for input:GUIDEInput in consolidated_inputs.values(): - _active_inputs.append(input) - - # prepare the action input share lookup table - for i:int in _active_action_mappings.size(): - - var mapping = _active_action_mappings[i] - - if mapping.action.block_lower_priority_actions: - # first find out if the action uses any chorded actions and - # collect all inputs that this action uses - var chorded_actions:GUIDESet = GUIDESet.new() - var inputs:GUIDESet = GUIDESet.new() - var blocked_actions:GUIDESet = GUIDESet.new() - for input_mapping:GUIDEInputMapping in mapping.input_mappings: - if input_mapping.input != null: - inputs.add(input_mapping.input) - - for trigger:GUIDETrigger in input_mapping.triggers: - if trigger is GUIDETriggerChordedAction and trigger.action != null: - chorded_actions.add(trigger.action) - - # Now the action that has a chorded action (A) needs to make sure that - # the chorded action it depends upon (B) is not blocked (otherwise A would - # never trigger) and if that chorded action (B) in turn depends on chorded actions. So - # if chorded actions build a chain, we need to keep the full - # chain unblocked. In addition we need to add the inputs of all - # these chorded actions to the list of blocked inputs. - for j:int in range(i+1, _active_action_mappings.size()): - var inner_mapping = _active_action_mappings[j] - # this is a chorded action that is used by one other action - # in the chain. - if chorded_actions.has(inner_mapping.action): - for input_mapping:GUIDEInputMapping in inner_mapping.input_mappings: - # put all of its inputs into the list of blocked inputs - if input_mapping.input != null: - inputs.add(input_mapping.input) - - # also if this mapping in turn again depends on a chorded - # action, ad this one to the list of chorded actions - for trigger:GUIDETrigger in input_mapping.triggers: - if trigger is GUIDETriggerChordedAction and trigger.action != null: - chorded_actions.add(trigger.action) - - # now find lower priority actions that share input - for j:int in range(i+1, _active_action_mappings.size()): - var inner_mapping = _active_action_mappings[j] - if chorded_actions.has(inner_mapping.action): - continue - - for input_mapping:GUIDEInputMapping in inner_mapping.input_mappings: - if input_mapping.input == null: - continue - - # because we consolidated input, we can now do an == comparison - # to find equal input. - if inputs.has(input_mapping.input): - blocked_actions.add(inner_mapping.action) - # we can continue to the next action - break - - if not blocked_actions.is_empty(): - _actions_sharing_input[mapping.action] = blocked_actions.values() - - # finally collect which inputs we need to reset per frame - _reset_node._inputs_to_reset.clear() - for input:GUIDEInput in _active_inputs: - if input._needs_reset(): - _reset_node._inputs_to_reset.append(input) - # Notify inputs that GUIDE is about to use them - input._begin_usage() - - for mapping in _active_action_mappings: - for input_mapping in mapping.input_mappings: - # notify modifiers they will be used. - for modifier in input_mapping.modifiers: - modifier._begin_usage() - - # and copy over the hold time threshold from the mapping - mapping.action._trigger_hold_threshold = input_mapping._trigger_hold_threshold - - # and notify interested parties that the input mappings have changed - input_mappings_changed.emit() - - diff --git a/addons/guide/guide.gd.uid b/addons/guide/guide.gd.uid deleted file mode 100644 index 24fc575..0000000 --- a/addons/guide/guide.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://vi2w3bhxo3u6 diff --git a/addons/guide/guide_action.gd b/addons/guide/guide_action.gd deleted file mode 100644 index a92ef64..0000000 --- a/addons/guide/guide_action.gd +++ /dev/null @@ -1,254 +0,0 @@ -@tool -@icon("res://addons/guide/guide_action.svg") -class_name GUIDEAction -extends Resource - -enum GUIDEActionValueType { - BOOL = 0, - AXIS_1D = 1, - AXIS_2D = 2, - AXIS_3D = 3 -} - -enum GUIDEActionState { - TRIGGERED, - ONGOING, - COMPLETED -} - -## The name of this action. Required when this action should be used as -## Godot action. Also displayed in the debugger. -@export var name:StringName: - set(value): - if name == value: - return - name = value - emit_changed() - - -## The action value type. -@export var action_value_type: GUIDEActionValueType = GUIDEActionValueType.BOOL: - set(value): - if action_value_type == value: - return - action_value_type = value - emit_changed() - -## If this action triggers, lower-priority actions cannot trigger -## if they share input with this action unless these actions are -## chorded with this action. -@export var block_lower_priority_actions:bool = true: - set(value): - if block_lower_priority_actions == value: - return - block_lower_priority_actions = value - emit_changed() - - -@export_category("Godot Actions") -## If true, then this action will be emitted into Godot's -## built-in action system. This can be helpful to interact with -## code using this system, like Godot's UI system. Actions -## will be emitted on trigger and completion (e.g. button down -## and button up). -@export var emit_as_godot_actions:bool = false: - set(value): - if emit_as_godot_actions == value: - return - emit_as_godot_actions = value - emit_changed() - - -@export_category("Action Remapping") - -## If true, players can remap this action. To be remappable, make sure -## that a name and the action type are properly set. -@export var is_remappable:bool: - set(value): - if is_remappable == value: - return - is_remappable = value - emit_changed() - -## The display name of the action shown to the player. -@export var display_name:String: - set(value): - if display_name == value: - return - display_name = value - emit_changed() - -## The display category of the action shown to the player. -@export var display_category:String: - set(value): - if display_category == value: - return - display_category = value - emit_changed() - -## Emitted every frame while the action is triggered. -signal triggered() - -## Emitted when the action started evaluating. -signal started() - -## Emitted every frame while the action is still evaluating. -signal ongoing() - -## Emitted when the action finished evaluating. -signal completed() - -## Emitted when the action was cancelled. -signal cancelled() - -var _last_state:GUIDEActionState = GUIDEActionState.COMPLETED - -var _value_bool:bool -## Returns the value of this action as bool. -var value_bool:bool: - get: return _value_bool - -## Returns the value of this action as float. -var value_axis_1d:float: - get: return _value.x - -var _value_axis_2d:Vector2 = Vector2.ZERO -## Returns the value of this action as Vector2. -var value_axis_2d:Vector2: - get: return _value_axis_2d - -var _value:Vector3 = Vector3.ZERO -## Returns the value of this action as Vector3. -var value_axis_3d:Vector3: - get: return _value - - -var _elapsed_seconds:float -## The amount of seconds elapsed since the action started evaluating. -var elapsed_seconds:float: - get: return _elapsed_seconds - -var _elapsed_ratio:float -## The ratio of the elapsed time to the hold time. This is a percentage -## of the hold time that has passed. If the action has no hold time, this will -## be 0 when the action is not triggered and 1 when the action is triggered. -## Otherwise, this will be a value between 0 and 1. -var elapsed_ratio:float: - get: return _elapsed_ratio - -var _triggered_seconds:float -## The amount of seconds elapsed since the action triggered. -var triggered_seconds:float: - get: return _triggered_seconds - - -## This is a hint for how long the input must remain actuated (in seconds) before the action triggers. -## It depends on the mapping in which this action is used. If the mapping has no hold trigger it will be -1. -## In general, you should not access this variable directly, but rather the `elapsed_ratio` property of the action -## which is a percentage of the hold time that has passed. -var _trigger_hold_threshold:float = -1.0 - -func _triggered(value:Vector3, delta:float) -> void: - _triggered_seconds += delta - _elapsed_ratio = 1.0 - _update_value(value) - _last_state = GUIDEActionState.TRIGGERED - triggered.emit() - _emit_godot_action_maybe(true) - -func _started(value:Vector3) -> void: - _elapsed_ratio = 0.0 - _update_value(value) - _last_state = GUIDEActionState.ONGOING - started.emit() - ongoing.emit() - -func _ongoing(value:Vector3, delta:float) -> void: - _elapsed_seconds += delta - if _trigger_hold_threshold > 0: - _elapsed_ratio = _elapsed_seconds / _trigger_hold_threshold - _update_value(value) - var was_triggered:bool = _last_state == GUIDEActionState.TRIGGERED - _last_state = GUIDEActionState.ONGOING - ongoing.emit() - # if the action reverts from triggered to ongoing, this counts as - # releasing the action for the godot action system. - if was_triggered: - _emit_godot_action_maybe(false) - - -func _cancelled(value:Vector3) -> void: - _elapsed_seconds = 0 - _elapsed_ratio = 0 - _update_value(value) - _last_state = GUIDEActionState.COMPLETED - cancelled.emit() - completed.emit() - -func _completed(value:Vector3) -> void: - _elapsed_seconds = 0 - _elapsed_ratio = 0 - _triggered_seconds = 0 - _update_value(value) - _last_state = GUIDEActionState.COMPLETED - completed.emit() - _emit_godot_action_maybe(false) - -func _emit_godot_action_maybe(pressed:bool) -> void: - if not emit_as_godot_actions: - return - - if name.is_empty(): - push_error("Cannot emit action into Godot's system because name is empty.") - return - - var godot_action = InputEventAction.new() - godot_action.action = name - godot_action.strength = _value.x - godot_action.pressed = pressed - Input.parse_input_event(godot_action) - -func _update_value(value:Vector3): - match action_value_type: - GUIDEActionValueType.BOOL, GUIDEActionValueType.AXIS_1D: - _value_bool = abs(value.x) > 0 - _value_axis_2d = Vector2(abs(value.x), 0) - _value = Vector3(value.x, 0, 0) - GUIDEActionValueType.AXIS_2D: - _value_bool = abs(value.x) > 0 - _value_axis_2d = Vector2(value.x, value.y) - _value = Vector3(value.x, value.y, 0) - GUIDEActionValueType.AXIS_3D: - _value_bool = abs(value.x) > 0 - _value_axis_2d = Vector2(value.x, value.y) - _value = value - -## Returns whether the action is currently triggered. Can be used for a -## polling style input. -func is_triggered() -> bool: - return _last_state == GUIDEActionState.TRIGGERED - - -## Returns whether the action is currently completed. Can be used for a -## polling style input. -func is_completed() -> bool: - return _last_state == GUIDEActionState.COMPLETED - - -## Returns whether the action is currently completed. Can be used for a -## polling style input. -func is_ongoing() -> bool: - return _last_state == GUIDEActionState.ONGOING - - -func _editor_name() -> String: - # Try to give the most user friendly name - if display_name != "": - return display_name - - if name != "": - return name - - return resource_path.get_file().replace(".tres", "") - - diff --git a/addons/guide/guide_action.gd.uid b/addons/guide/guide_action.gd.uid deleted file mode 100644 index e47fdb6..0000000 --- a/addons/guide/guide_action.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://5yg21xllntrk diff --git a/addons/guide/guide_action.svg b/addons/guide/guide_action.svg deleted file mode 100644 index b39120c..0000000 --- a/addons/guide/guide_action.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/addons/guide/guide_action.svg.import b/addons/guide/guide_action.svg.import deleted file mode 100644 index a55db27..0000000 --- a/addons/guide/guide_action.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bei7cw115tks0" -path="res://.godot/imported/guide_action.svg-4d1dfb47183d95c4796078798ce2d0ab.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/guide_action.svg" -dest_files=["res://.godot/imported/guide_action.svg-4d1dfb47183d95c4796078798ce2d0ab.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/guide_action_mapping.gd b/addons/guide/guide_action_mapping.gd deleted file mode 100644 index f965b9f..0000000 --- a/addons/guide/guide_action_mapping.gd +++ /dev/null @@ -1,21 +0,0 @@ -@icon("res://addons/guide/guide_internal.svg") -@tool -## An action to input mapping -class_name GUIDEActionMapping -extends Resource - -## The action to be mapped -@export var action:GUIDEAction: - set(value): - if value == action: - return - action = value - emit_changed() - -## A set of input mappings that can trigger the action -@export var input_mappings:Array[GUIDEInputMapping] = []: - set(value): - if value == input_mappings: - return - input_mappings = value - emit_changed() diff --git a/addons/guide/guide_action_mapping.gd.uid b/addons/guide/guide_action_mapping.gd.uid deleted file mode 100644 index 6051422..0000000 --- a/addons/guide/guide_action_mapping.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://5huk51k6eqa8 diff --git a/addons/guide/guide_input_mapping.gd b/addons/guide/guide_input_mapping.gd deleted file mode 100644 index 62d4dd9..0000000 --- a/addons/guide/guide_input_mapping.gd +++ /dev/null @@ -1,177 +0,0 @@ -@icon("res://addons/guide/guide_internal.svg") -@tool -## A mapping from actuated input to a trigger result -class_name GUIDEInputMapping -extends Resource - -## Whether the remapping configuration in this input mapping -## should override the configuration of the bound action. Enable -## this, to give a key a custom name or category for remapping. -@export var override_action_settings:bool = false: - set(value): - if override_action_settings == value: - return - override_action_settings = value - emit_changed() - -## If true, players can remap this input mapping. Note that the -## action to which this input is bound also needs to be remappable -## for this setting to have an effect. -@export var is_remappable:bool = false: - set(value): - if is_remappable == value: - return - is_remappable = value - emit_changed() - -## The display name of the input mapping shown to the player. If empty, -## the display name of the action is used. -@export var display_name:String = "": - set(value): - if display_name == value: - return - display_name = value - emit_changed() - -## The display category of the input mapping. If empty, the display name of the -## action is used. -@export var display_category:String = "": - set(value): - if display_category == value: - return - display_category = value - emit_changed() - - -@export_group("Mappings") -## The input to be actuated -@export var input:GUIDEInput: - set(value): - if value == input: - return - input = value - emit_changed() - - -## A list of modifiers that preprocess the actuated input before -## it is fed to the triggers. -@export var modifiers:Array[GUIDEModifier] = []: - set(value): - if value == modifiers: - return - modifiers = value - emit_changed() - - -## A list of triggers that could trigger the mapped action. -@export var triggers:Array[GUIDETrigger] = []: - set(value): - if value == triggers: - return - triggers = value - emit_changed() - -## Hint for how long the input must remain actuated (in seconds) before the mapping triggers. -## If the mapping has no hold trigger it will be -1. If it has multiple hold triggers -## the shortest hold time will be used. -var _trigger_hold_threshold:float = -1.0 - -var _state:GUIDETrigger.GUIDETriggerState = GUIDETrigger.GUIDETriggerState.NONE -var _value:Vector3 = Vector3.ZERO - -var _trigger_list:Array[GUIDETrigger] = [] -var _implicit_count:int = 0 -var _explicit_count:int = 0 - -## Called when the mapping is started to be used by GUIDE. Calculates -## the number of implicit and explicit triggers so we don't need to do this -## per frame. Also creates a default trigger when none is set. -func _initialize() -> void : - _trigger_list.clear() - - _implicit_count = 0 - _explicit_count = 0 - _trigger_hold_threshold = -1.0 - - if triggers.is_empty(): - # make a default trigger and use that - var default_trigger = GUIDETriggerDown.new() - default_trigger.actuation_threshold = 0 - _explicit_count = 1 - _trigger_list.append(default_trigger) - return - - for trigger in triggers: - match trigger._get_trigger_type(): - GUIDETrigger.GUIDETriggerType.EXPLICIT: - _explicit_count += 1 - GUIDETrigger.GUIDETriggerType.IMPLICIT: - _implicit_count += 1 - _trigger_list.append(trigger) - - # collect the hold threshold for hinting the UI about how long - # the input must be held down. This is only relevant for hold triggers - if trigger is GUIDETriggerHold: - if _trigger_hold_threshold == -1: - _trigger_hold_threshold = trigger.hold_treshold - else: - _trigger_hold_threshold = min(_trigger_hold_threshold, trigger.hold_treshold) - - - -func _update_state(delta:float, value_type:GUIDEAction.GUIDEActionValueType): - # Collect the current input value - var input_value:Vector3 = input._value if input != null else Vector3.ZERO - - # Run it through all modifiers - for modifier:GUIDEModifier in modifiers: - input_value = modifier._modify_input(input_value, delta, value_type) - - _value = input_value - - var triggered_implicits:int = 0 - var triggered_explicits:int = 0 - var triggered_blocked:int = 0 - - # Run over all triggers - var result:int = GUIDETrigger.GUIDETriggerState.NONE - for trigger:GUIDETrigger in _trigger_list: - var trigger_result:GUIDETrigger.GUIDETriggerState = trigger._update_state(_value, delta, value_type) - trigger._last_value = _value - - var trigger_type = trigger._get_trigger_type() - if trigger_result == GUIDETrigger.GUIDETriggerState.TRIGGERED: - match trigger_type: - GUIDETrigger.GUIDETriggerType.EXPLICIT: - triggered_explicits += 1 - GUIDETrigger.GUIDETriggerType.IMPLICIT: - triggered_implicits += 1 - GUIDETrigger.GUIDETriggerType.BLOCKING: - triggered_blocked += 1 - - # we only care about the nuances of explicit triggers. implicits and blocking - # can only really return yes or no, so they have no nuance - if trigger_type == GUIDETrigger.GUIDETriggerType.EXPLICIT: - # Higher value results take precedence over lower value results - result = max(result, trigger_result) - - # final collection - if triggered_blocked > 0: - # some blocker triggered which means that this cannot succeed - _state = GUIDETrigger.GUIDETriggerState.NONE - return - - if triggered_implicits < _implicit_count: - # not all implicits triggered, which also fails this binding - _state = GUIDETrigger.GUIDETriggerState.NONE - return - - if _explicit_count == 0 and _implicit_count > 0: - # if no explicits exist, its enough when all implicits trigger - _state = GUIDETrigger.GUIDETriggerState.TRIGGERED - return - - # return the best result - _state = result - - diff --git a/addons/guide/guide_input_mapping.gd.uid b/addons/guide/guide_input_mapping.gd.uid deleted file mode 100644 index ac5bd67..0000000 --- a/addons/guide/guide_input_mapping.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c5pstcepgwkmy diff --git a/addons/guide/guide_input_tracker.gd b/addons/guide/guide_input_tracker.gd deleted file mode 100644 index 6dd7ef1..0000000 --- a/addons/guide/guide_input_tracker.gd +++ /dev/null @@ -1,26 +0,0 @@ -## Tracker that tracks input for a window and injects it into GUIDE. -## Will automatically keep track of sub-windows. -extends Node - -## Instruments a sub-window so it forwards input events to GUIDE. -static func _instrument(viewport:Viewport): - if viewport.has_meta("x-guide-instrumented"): - return - - var tracker = preload("guide_input_tracker.gd").new() - tracker.process_mode = Node.PROCESS_MODE_ALWAYS - viewport.add_child(tracker, false, Node.INTERNAL_MODE_BACK) - viewport.gui_focus_changed.connect(tracker._control_focused) - -## Catches unhandled input and forwards it to GUIDE -func _unhandled_input(event:InputEvent): - GUIDE.inject_input(event) - -## Some ... creative code ... to catch events from popup windows -## that are spawned by Godot's control nodes. -func _control_focused(control:Control): - if control is OptionButton or control is ColorPickerButton \ - or control is MenuButton or control is TabContainer: - _instrument(control.get_popup()) - - diff --git a/addons/guide/guide_input_tracker.gd.uid b/addons/guide/guide_input_tracker.gd.uid deleted file mode 100644 index ee72812..0000000 --- a/addons/guide/guide_input_tracker.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cf4x5dukw63wg diff --git a/addons/guide/guide_internal.svg b/addons/guide/guide_internal.svg deleted file mode 100644 index 78d42de..0000000 --- a/addons/guide/guide_internal.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/addons/guide/guide_internal.svg.import b/addons/guide/guide_internal.svg.import deleted file mode 100644 index f235301..0000000 --- a/addons/guide/guide_internal.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ddkj7kntb4fit" -path="res://.godot/imported/guide_internal.svg-560a143a1e289215e72d8844f5173844.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/guide_internal.svg" -dest_files=["res://.godot/imported/guide_internal.svg-560a143a1e289215e72d8844f5173844.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/guide_mapping_context.gd b/addons/guide/guide_mapping_context.gd deleted file mode 100644 index 097205b..0000000 --- a/addons/guide/guide_mapping_context.gd +++ /dev/null @@ -1,30 +0,0 @@ -@tool -@icon("res://addons/guide/guide_mapping_context.svg") -class_name GUIDEMappingContext -extends Resource - -const GUIDESet = preload("guide_set.gd") - -## The display name for this mapping context during action remapping -@export var display_name:String: - set(value): - if value == display_name: - return - display_name = value - emit_changed() - -## The mappings. Do yourself a favour and use the G.U.I.D.E panel -## to edit these. -@export var mappings:Array[GUIDEActionMapping] = []: - set(value): - if value == mappings: - return - mappings = value - emit_changed() - - -func _editor_name() -> String: - if display_name.is_empty(): - return resource_path.get_file() - else: - return display_name diff --git a/addons/guide/guide_mapping_context.gd.uid b/addons/guide/guide_mapping_context.gd.uid deleted file mode 100644 index 3e1a8f1..0000000 --- a/addons/guide/guide_mapping_context.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ddr05cbbemxru diff --git a/addons/guide/guide_mapping_context.svg b/addons/guide/guide_mapping_context.svg deleted file mode 100644 index eaa1abf..0000000 --- a/addons/guide/guide_mapping_context.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/addons/guide/guide_mapping_context.svg.import b/addons/guide/guide_mapping_context.svg.import deleted file mode 100644 index 6f740b7..0000000 --- a/addons/guide/guide_mapping_context.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bcwpqc8016n7b" -path="res://.godot/imported/guide_mapping_context.svg-025f10fbbdb2bb11a96754ab9b725bea.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/guide_mapping_context.svg" -dest_files=["res://.godot/imported/guide_mapping_context.svg-025f10fbbdb2bb11a96754ab9b725bea.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/guide_reset.gd b/addons/guide/guide_reset.gd deleted file mode 100644 index b77817d..0000000 --- a/addons/guide/guide_reset.gd +++ /dev/null @@ -1,13 +0,0 @@ -extends Node - - -var _inputs_to_reset:Array[GUIDEInput] = [] - -func _enter_tree() -> void: - # this should run at the end of the frame, so we put in a low priority (= high number) - process_priority = 10000000 - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - for input:GUIDEInput in _inputs_to_reset: - input._reset() diff --git a/addons/guide/guide_reset.gd.uid b/addons/guide/guide_reset.gd.uid deleted file mode 100644 index d609534..0000000 --- a/addons/guide/guide_reset.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cmsafc4hu0qay diff --git a/addons/guide/guide_set.gd b/addons/guide/guide_set.gd deleted file mode 100644 index d439c91..0000000 --- a/addons/guide/guide_set.gd +++ /dev/null @@ -1,40 +0,0 @@ -## Helper class for modelling sets -var _values:Dictionary = {} - -func add(value:Variant) -> void: - _values[value] = value - - -func remove(value:Variant) -> void: - _values.erase(value) - - -func clear() -> void: - _values.clear() - -func is_empty() -> bool: - return _values.is_empty() - - -func pull() -> Variant: - if is_empty(): - return null - - var key = _values.keys()[0] - remove(key) - return key - - -func has(value:Variant) -> bool: - return _values.has(value) - -## Returns the first item for which the given matcher function returns -## a true value. -func first_match(matcher:Callable) -> Variant: - for key in _values.keys(): - if matcher.call(key): - return key - return null - -func values() -> Array: - return _values.keys() diff --git a/addons/guide/guide_set.gd.uid b/addons/guide/guide_set.gd.uid deleted file mode 100644 index 7e49fd6..0000000 --- a/addons/guide/guide_set.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://gyx7afc0uhnc diff --git a/addons/guide/inputs/guide_input.gd b/addons/guide/inputs/guide_input.gd deleted file mode 100644 index cde42fa..0000000 --- a/addons/guide/inputs/guide_input.gd +++ /dev/null @@ -1,50 +0,0 @@ -@tool -@icon("res://addons/guide/inputs/guide_input.svg") -## A class representing some actuated input. -class_name GUIDEInput -extends Resource - -## The current valueo f this input. Depending on the input type only parts of the -## returned vector may be relevant. -var _value:Vector3 = Vector3.ZERO - -## Whether this input needs a reset per frame. _input is only called when -## there is input happening, but some GUIDE inputs may need to be reset -## in the absence of input. -func _needs_reset() -> bool: - return false - -## Resets the input value to the default value. Is called once per frame if -## _needs_reset returns true. -func _reset() -> void: - _value = Vector3.ZERO - -## Called when an input event happens. Should update the -## the input value of this input. -func _input(event:InputEvent): - pass - -## Returns whether this input is the same input as the other input. -func is_same_as(other:GUIDEInput) -> bool: - return false - -## Called when the input is started to be used by GUIDE. Can be used to perform -## initializations. -func _begin_usage() -> void : - pass - -## Called, when the input is no longer used by GUIDE. Can be used to perform -## cleanup. -func _end_usage() -> void: - pass - - -func _editor_name() -> String: - return "" - -func _editor_description() -> String: - return "" - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return -1 diff --git a/addons/guide/inputs/guide_input.gd.uid b/addons/guide/inputs/guide_input.gd.uid deleted file mode 100644 index aa82289..0000000 --- a/addons/guide/inputs/guide_input.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cc26qctfgfohf diff --git a/addons/guide/inputs/guide_input.svg b/addons/guide/inputs/guide_input.svg deleted file mode 100644 index 7e2314f..0000000 --- a/addons/guide/inputs/guide_input.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/addons/guide/inputs/guide_input.svg.import b/addons/guide/inputs/guide_input.svg.import deleted file mode 100644 index 458a207..0000000 --- a/addons/guide/inputs/guide_input.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://oku7f5t0ox3r" -path="res://.godot/imported/guide_input.svg-d7e8ae255db039e6a02cccc3f844cc0e.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/inputs/guide_input.svg" -dest_files=["res://.godot/imported/guide_input.svg-d7e8ae255db039e6a02cccc3f844cc0e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/inputs/guide_input_action.gd b/addons/guide/inputs/guide_input_action.gd deleted file mode 100644 index 3c677a0..0000000 --- a/addons/guide/inputs/guide_input_action.gd +++ /dev/null @@ -1,59 +0,0 @@ -## An input that mirrors the action's value while the action is triggered. -@tool -class_name GUIDEInputAction -extends GUIDEInput - -## The action that this input should mirror. This is live tracked, so any change in -## the action will update the input. -@export var action:GUIDEAction: - set(value): - if value == action: - return - action = value - emit_changed() - -func _begin_usage(): - if is_instance_valid(action): - action.triggered.connect(_on) - action.completed.connect(_off) - action.ongoing.connect(_off) - if action.is_triggered(): - _on() - return - # not triggered or no action. - _off() - - -func _end_usage(): - if is_instance_valid(action): - action.triggered.disconnect(_on) - action.completed.disconnect(_off) - action.ongoing.disconnect(_off) - - -func _on() -> void: - # on is only called when the action is actually existing, so this is - # always not-null here - _value = action.value_axis_3d - -func _off() -> void: - _value = Vector3.ZERO - - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputAction and other.action == action - - -func _to_string(): - return "(GUIDEInputAction: " + str(action) + ")" - -func _editor_name() -> String: - return "Action" - - -func _editor_description() -> String: - return "An input that mirrors the action's value while the action is triggered." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_3D diff --git a/addons/guide/inputs/guide_input_action.gd.uid b/addons/guide/inputs/guide_input_action.gd.uid deleted file mode 100644 index 3b1843b..0000000 --- a/addons/guide/inputs/guide_input_action.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d0pj4nsxevy2q diff --git a/addons/guide/inputs/guide_input_any.gd b/addons/guide/inputs/guide_input_any.gd deleted file mode 100644 index 5cbd1b5..0000000 --- a/addons/guide/inputs/guide_input_any.gd +++ /dev/null @@ -1,115 +0,0 @@ -## Input that triggers if any input from the given device class -## is given. Only looks for button inputs, not axis inputs as axes -## have a tendency to accidentally trigger. -@tool -class_name GUIDEInputAny -extends GUIDEInput - - -## Should input from mouse buttons be considered? Deprecated, use -## mouse_buttons instead. -## @deprecated -var mouse:bool: - get: return mouse_buttons - set(value): mouse_buttons = value - -## Should input from joy buttons be considered. Deprecated, use -## joy_buttons instead. -## @deprecated -var joy:bool: - get: return joy_buttons - set(value): joy_buttons = value - -## Should input from mouse buttons be considered? -@export var mouse_buttons:bool = false - -## Should input from mouse movement be considered? -@export var mouse_movement:bool = false - -## Minimum movement distance of the mouse before it is considered -## moving. -@export var minimum_mouse_movement_distance:float = 1.0 - -## Should input from gamepad/joystick buttons be considered? -@export var joy_buttons:bool = false - -## Should input from gamepad/joystick axes be considered? -@export var joy_axes:bool = false - -## Minimum strength of a single joy axis actuation before it is considered -## as actuated. -@export var minimum_joy_axis_actuation_strength:float = 0.2 - -## Should input from the keyboard be considered? -@export var keyboard:bool = false - -## Should input from touch be considered? -@export var touch:bool = false - - -func _needs_reset() -> bool: - # Needs reset because we cannot detect the absence of input. - return true - -func _input(event:InputEvent): - if mouse_buttons and event is InputEventMouseButton: - _value = Vector3.RIGHT - return - - if mouse_movement and event is InputEventMouseMotion \ - and event.relative.length() >= minimum_mouse_movement_distance: - _value = Vector3.RIGHT - return - - if joy_buttons and event is InputEventJoypadButton: - _value = Vector3.RIGHT - return - - if joy_axes and event is InputEventJoypadMotion \ - and abs(event.axis_value) >= minimum_joy_axis_actuation_strength: - _value = Vector3.RIGHT - return - - if keyboard and event is InputEventKey: - _value = Vector3.RIGHT - return - - if touch and (event is InputEventScreenTouch or event is InputEventScreenDrag): - _value = Vector3.RIGHT - return - - _value = Vector3.ZERO - - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputAny and \ - other.mouse == mouse and \ - other.joy == joy and \ - other.keyboard == keyboard - -func _editor_name() -> String: - return "Any Input" - - -func _editor_description() -> String: - return "Input that triggers if any input from the given device class is given." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.BOOL - -# support for legacy properties -func _get_property_list(): - return [ - { - "name": "mouse", - "type": TYPE_BOOL, - "usage": PROPERTY_USAGE_NO_EDITOR - }, - { - "name": "joy", - "type": TYPE_BOOL, - "usage": PROPERTY_USAGE_NO_EDITOR - } - ] - diff --git a/addons/guide/inputs/guide_input_any.gd.uid b/addons/guide/inputs/guide_input_any.gd.uid deleted file mode 100644 index 2d7f4e1..0000000 --- a/addons/guide/inputs/guide_input_any.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bpnm06nodv3y8 diff --git a/addons/guide/inputs/guide_input_joy_axis_1d.gd b/addons/guide/inputs/guide_input_joy_axis_1d.gd deleted file mode 100644 index 54c4ae6..0000000 --- a/addons/guide/inputs/guide_input_joy_axis_1d.gd +++ /dev/null @@ -1,43 +0,0 @@ -## Input from a single joy axis. -@tool -class_name GUIDEInputJoyAxis1D -extends GUIDEInputJoyBase - -## The joy axis to sample -@export var axis:JoyAxis = JOY_AXIS_LEFT_X: - set(value): - if value == axis: - return - axis = value - emit_changed() - -func _input(event:InputEvent): - if not event is InputEventJoypadMotion: - return - - if event.axis != axis: - return - - if joy_index > -1 and event.device != _joy_id: - return - - _value.x = event.axis_value - - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputJoyAxis1D and \ - other.axis == axis and \ - other.joy_index == joy_index - -func _to_string(): - return "(GUIDEInputJoyAxis1D: axis=" + str(axis) + ", joy_index=" + str(joy_index) + ")" - -func _editor_name() -> String: - return "Joy Axis 1D" - -func _editor_description() -> String: - return "The input from a single joy axis." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_1D diff --git a/addons/guide/inputs/guide_input_joy_axis_1d.gd.uid b/addons/guide/inputs/guide_input_joy_axis_1d.gd.uid deleted file mode 100644 index 2035548..0000000 --- a/addons/guide/inputs/guide_input_joy_axis_1d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ca5ylmpi6a6fm diff --git a/addons/guide/inputs/guide_input_joy_axis_2d.gd b/addons/guide/inputs/guide_input_joy_axis_2d.gd deleted file mode 100644 index 46359f9..0000000 --- a/addons/guide/inputs/guide_input_joy_axis_2d.gd +++ /dev/null @@ -1,58 +0,0 @@ -## Input from two joy axes. -class_name GUIDEInputJoyAxis2D -extends GUIDEInputJoyBase - -## The joy axis to sample for x input. -@export var x:JoyAxis = JOY_AXIS_LEFT_X: - set(value): - if value == x: - return - x = value - emit_changed() - - -## The joy axis to sample for y input. -@export var y:JoyAxis = JOY_AXIS_LEFT_Y: - set(value): - if value == y: - return - y = value - emit_changed() - - -func _input(event:InputEvent): - if not event is InputEventJoypadMotion: - return - - if event.axis != x and event.axis != y: - return - - if joy_index > -1 and event.device != _joy_id: - return - - if event.axis == x: - _value.x = event.axis_value - return - - if event.axis == y: - _value.y = event.axis_value - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputJoyAxis2D and \ - other.x == x and \ - other.y == y and \ - other.joy_index == joy_index - -func _to_string(): - return "(GUIDEInputJoyAxis2D: x=" + str(x) + ", y=" + str(y) + ", joy_index=" + str(joy_index) + ")" - - -func _editor_name() -> String: - return "Joy Axis 2D" - -func _editor_description() -> String: - return "The input from two Joy axes. Usually from a stick." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_2D diff --git a/addons/guide/inputs/guide_input_joy_axis_2d.gd.uid b/addons/guide/inputs/guide_input_joy_axis_2d.gd.uid deleted file mode 100644 index c326c4d..0000000 --- a/addons/guide/inputs/guide_input_joy_axis_2d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c0scrj0tgjhba diff --git a/addons/guide/inputs/guide_input_joy_base.gd b/addons/guide/inputs/guide_input_joy_base.gd deleted file mode 100644 index 621012b..0000000 --- a/addons/guide/inputs/guide_input_joy_base.gd +++ /dev/null @@ -1,35 +0,0 @@ -## Base class for joystick inputs. -@tool -class_name GUIDEInputJoyBase -extends GUIDEInput - -## The index of the connected joy pad to check. If -1 checks all joypads. -@export var joy_index:int = -1: - set(value): - if value == joy_index: - return - joy_index = value - emit_changed() - -## Cached joystick ID if we use a joy index. -var _joy_id:int = -2 - -func _begin_usage(): - Input.joy_connection_changed.connect(_update_joy_id) - _update_joy_id(null, null) - -func _end_usage(): - Input.joy_connection_changed.disconnect(_update_joy_id) - -func _update_joy_id(_ignore, _ignore2): - if joy_index < 0: - return - - var joypads:Array[int] = Input.get_connected_joypads() - if joy_index < joypads.size(): - _joy_id = joypads[joy_index] - else: - push_warning("Only ", joypads.size(), " joy pads/sticks connected. Cannot sample in put from index ", joy_index, ".") - _joy_id = -2 - - diff --git a/addons/guide/inputs/guide_input_joy_base.gd.uid b/addons/guide/inputs/guide_input_joy_base.gd.uid deleted file mode 100644 index ad7e1b7..0000000 --- a/addons/guide/inputs/guide_input_joy_base.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cmkk3acwkqnam diff --git a/addons/guide/inputs/guide_input_joy_button.gd b/addons/guide/inputs/guide_input_joy_button.gd deleted file mode 100644 index 8a83306..0000000 --- a/addons/guide/inputs/guide_input_joy_button.gd +++ /dev/null @@ -1,44 +0,0 @@ -@tool -class_name GUIDEInputJoyButton -extends GUIDEInputJoyBase - -@export var button:JoyButton = JOY_BUTTON_A: - set(value): - if value == button: - return - button = value - emit_changed() - -func _input(event:InputEvent): - if not event is InputEventJoypadButton: - return - - if event.button_index != button: - return - - - if joy_index > -1 and event.device != _joy_id: - return - - _value.x = 1.0 if event.pressed else 0.0 - - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputJoyButton and \ - other.button == button and \ - other.joy_index == joy_index - - -func _to_string(): - return "(GUIDEInputJoyButton: button=" + str(button) + ", joy_index=" + str(joy_index) + ")" - - -func _editor_name() -> String: - return "Joy Button" - -func _editor_description() -> String: - return "A button press from a joy button." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.BOOL diff --git a/addons/guide/inputs/guide_input_joy_button.gd.uid b/addons/guide/inputs/guide_input_joy_button.gd.uid deleted file mode 100644 index 37f3ed2..0000000 --- a/addons/guide/inputs/guide_input_joy_button.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cqpxl8nxcex4m diff --git a/addons/guide/inputs/guide_input_key.gd b/addons/guide/inputs/guide_input_key.gd deleted file mode 100644 index 06b79cf..0000000 --- a/addons/guide/inputs/guide_input_key.gd +++ /dev/null @@ -1,127 +0,0 @@ -@tool -class_name GUIDEInputKey -extends GUIDEInput - -## The physical keycode of the key. -@export var key:Key: - set(value): - if value == key: - return - key = value - emit_changed() - - -@export_group("Modifiers") -## Whether shift must be pressed. -@export var shift:bool = false: - set(value): - if value == shift: - return - shift = value - emit_changed() - -## Whether control must be pressed. -@export var control:bool = false: - set(value): - if value == control: - return - control = value - emit_changed() - -## Whether alt must be pressed. -@export var alt:bool = false: - set(value): - if value == alt: - return - alt = value - emit_changed() - - -## Whether meta/win/cmd must be pressed. -@export var meta:bool = false: - set(value): - if value == meta: - return - meta = value - emit_changed() - -## Whether this input should fire if additional -## modifier keys are currently pressed. -@export var allow_additional_modifiers:bool = true: - set(value): - if value == allow_additional_modifiers: - return - allow_additional_modifiers = value - emit_changed() - - - -func _input(event:InputEvent): - if not event is InputEventKey: - return - - # we start assuming the key is not pressed right now - _value.x = 0.0 - - # the key itself must be pressed - if not Input.is_physical_key_pressed(key): - return - - # every required modifier must be pressed - if shift and not Input.is_physical_key_pressed(KEY_SHIFT): - return - - if control and not Input.is_physical_key_pressed(KEY_CTRL): - return - - if alt and not Input.is_physical_key_pressed(KEY_ALT): - return - - if meta and not Input.is_physical_key_pressed(KEY_META): - return - - # unless additional modifiers are allowed, every - # unselected modifier must not be pressed (except if the - # bound key is actually the modifier itself) - - if not allow_additional_modifiers: - if not shift and key != KEY_SHIFT and Input.is_physical_key_pressed(KEY_SHIFT): - return - - if not control and key != KEY_CTRL and Input.is_physical_key_pressed(KEY_CTRL): - return - - if not alt and key != KEY_ALT and Input.is_physical_key_pressed(KEY_ALT): - return - - if not meta and key != KEY_META and Input.is_physical_key_pressed(KEY_META): - return - - # we're still here, so all required keys are pressed and - # no extra keys are pressed - - _value.x = 1.0 - - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputKey \ - and other.key == key \ - and other.shift == shift \ - and other.control == control \ - and other.alt == alt \ - and other.meta == meta \ - and other.allow_additional_modifiers == allow_additional_modifiers - -func _to_string(): - return "(GUIDEInputKey: key=" + str(key) + ", shift=" + str(shift) + ", alt=" + str(alt) + ", control=" + str(control) + ", meta="+ str(meta) + ")" - - -func _editor_name() -> String: - return "Key" - -func _editor_description() -> String: - return "A button press on the keyboard." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.BOOL diff --git a/addons/guide/inputs/guide_input_key.gd.uid b/addons/guide/inputs/guide_input_key.gd.uid deleted file mode 100644 index 14a3398..0000000 --- a/addons/guide/inputs/guide_input_key.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://coygbn3kos0l6 diff --git a/addons/guide/inputs/guide_input_mouse_axis_1d.gd b/addons/guide/inputs/guide_input_mouse_axis_1d.gd deleted file mode 100644 index c489349..0000000 --- a/addons/guide/inputs/guide_input_mouse_axis_1d.gd +++ /dev/null @@ -1,47 +0,0 @@ -@tool -class_name GUIDEInputMouseAxis1D -extends GUIDEInput - -enum GUIDEInputMouseAxis { - X, - Y -} - -@export var axis:GUIDEInputMouseAxis: - set(value): - if value == axis: - return - axis = value - emit_changed() - -# we don't get mouse updates when the mouse is not moving, so this needs to be -# reset every frame -func _needs_reset() -> bool: - return true - -func _input(event:InputEvent) -> void: - if event is InputEventMouseMotion: - match axis: - GUIDEInputMouseAxis.X: - _value.x = event.relative.x - GUIDEInputMouseAxis.Y: - _value.x = event.relative.y - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputMouseAxis1D and other.axis == axis - -func _to_string(): - return "(GUIDEInputMouseAxis1D: axis=" + str(axis) + ")" - - -func _editor_name() -> String: - return "Mouse Axis 1D" - - -func _editor_description() -> String: - return "Relative mouse movement on a single axis." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_1D diff --git a/addons/guide/inputs/guide_input_mouse_axis_1d.gd.uid b/addons/guide/inputs/guide_input_mouse_axis_1d.gd.uid deleted file mode 100644 index 01ad281..0000000 --- a/addons/guide/inputs/guide_input_mouse_axis_1d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bplyuyag4727p diff --git a/addons/guide/inputs/guide_input_mouse_axis_2d.gd b/addons/guide/inputs/guide_input_mouse_axis_2d.gd deleted file mode 100644 index bdefe76..0000000 --- a/addons/guide/inputs/guide_input_mouse_axis_2d.gd +++ /dev/null @@ -1,35 +0,0 @@ -@tool -class_name GUIDEInputMouseAxis2D -extends GUIDEInput - - -# we don't get mouse updates when the mouse is not moving, so this needs to be -# reset every frame -func _needs_reset() -> bool: - return true - -func _input(event:InputEvent) -> void: - if not event is InputEventMouseMotion: - return - - _value.x = event.relative.x - _value.y = event.relative.y - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputMouseAxis2D - - -func _to_string(): - return "(GUIDEInputMouseAxis2D)" - - -func _editor_name() -> String: - return "Mouse Axis 2D" - - -func _editor_description() -> String: - return "Relative mouse movement on 2 axes." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_2D diff --git a/addons/guide/inputs/guide_input_mouse_axis_2d.gd.uid b/addons/guide/inputs/guide_input_mouse_axis_2d.gd.uid deleted file mode 100644 index 044a489..0000000 --- a/addons/guide/inputs/guide_input_mouse_axis_2d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://7a503o6hblhk diff --git a/addons/guide/inputs/guide_input_mouse_button.gd b/addons/guide/inputs/guide_input_mouse_button.gd deleted file mode 100644 index e5315e9..0000000 --- a/addons/guide/inputs/guide_input_mouse_button.gd +++ /dev/null @@ -1,65 +0,0 @@ -@tool -class_name GUIDEInputMouseButton -extends GUIDEInput - - -@export var button:MouseButton = MOUSE_BUTTON_LEFT: - set(value): - if value == button: - return - button = value - emit_changed() - - -func _needs_reset(): - # mouse wheel up and down can potentially send multiple inputs within a single frame - # so we need to smooth this out a bit. - return button == MOUSE_BUTTON_WHEEL_UP or button == MOUSE_BUTTON_WHEEL_DOWN - -var _reset_to:Vector3 -var _was_pressed_this_frame:bool - -func _reset() -> void: - _was_pressed_this_frame = false - _value = _reset_to - - -func _input(event:InputEvent): - if not event is InputEventMouseButton: - return - - if event.button_index != button: - return - - - if _needs_reset(): - # we always reset to the last event we received in a frame - # so after the frame is over we're still in sync. - _reset_to.x = 1.0 if event.pressed else 0.0 - - if event.pressed: - _was_pressed_this_frame = true - - if not event.pressed and _was_pressed_this_frame: - # keep pressed state for this frame - return - - _value.x = 1.0 if event.pressed else 0.0 - -func is_same_as(other:GUIDEInput) -> bool: - return other is GUIDEInputMouseButton and other.button == button - - -func _to_string(): - return "(GUIDEInputMouseButton: button=" + str(button) + ")" - - -func _editor_name() -> String: - return "Mouse Button" - -func _editor_description() -> String: - return "A press of a mouse button. The mouse wheel is also a button." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.BOOL diff --git a/addons/guide/inputs/guide_input_mouse_button.gd.uid b/addons/guide/inputs/guide_input_mouse_button.gd.uid deleted file mode 100644 index f80f0fa..0000000 --- a/addons/guide/inputs/guide_input_mouse_button.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bjsqx0ldaanm0 diff --git a/addons/guide/inputs/guide_input_mouse_position.gd b/addons/guide/inputs/guide_input_mouse_position.gd deleted file mode 100644 index c3389b4..0000000 --- a/addons/guide/inputs/guide_input_mouse_position.gd +++ /dev/null @@ -1,41 +0,0 @@ -@tool -class_name GUIDEInputMousePosition -extends GUIDEInput - - -func _begin_usage() -> void : - _update_mouse_position() - - -func _input(event:InputEvent) -> void: - if not event is InputEventMouseMotion: - return - - _update_mouse_position() - - -func _update_mouse_position(): - var position:Vector2 = Engine.get_main_loop().root.get_mouse_position() - - _value.x = position.x - _value.y = position.y - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputMousePosition - - -func _to_string(): - return "(GUIDEInputMousePosition)" - - -func _editor_name() -> String: - return "Mouse Position" - - -func _editor_description() -> String: - return "Position of the mouse in the main viewport." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_2D diff --git a/addons/guide/inputs/guide_input_mouse_position.gd.uid b/addons/guide/inputs/guide_input_mouse_position.gd.uid deleted file mode 100644 index f4a437a..0000000 --- a/addons/guide/inputs/guide_input_mouse_position.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d2qonq7dcfqc1 diff --git a/addons/guide/inputs/guide_input_touch_angle.gd b/addons/guide/inputs/guide_input_touch_angle.gd deleted file mode 100644 index 01fb829..0000000 --- a/addons/guide/inputs/guide_input_touch_angle.gd +++ /dev/null @@ -1,83 +0,0 @@ -## Input representing angle changes between two fingers. -@tool -class_name GUIDEInputTouchAngle -extends GUIDEInput - -const GUIDETouchState = preload("guide_touch_state.gd") - -## Unit in which the angle should be provided -enum AngleUnit { - ## Angle is provided in radians - RADIANS = 0, - ## Angle is provided in degrees. - DEGREES = 1 -} - -## The unit in which the angle should be provided -@export var unit:AngleUnit = AngleUnit.RADIANS - -var _initial_angle:float = INF - -# We use the reset call to calculate the angle for this frame -# so it can serve as reference for the next frame -func _needs_reset() -> bool: - return true - -func _reset(): - var angle = _calculate_angle() - # update initial angle when input is actuated or stops being actuated - if is_finite(_initial_angle) != is_finite(angle): - _initial_angle = angle - -func _input(event:InputEvent) -> void: - if not GUIDETouchState.process_input_event(event): - # not touch-related - return - - var angle := _calculate_angle() - # if either current angle or initial angle is not set, - # we are zero - if not is_finite(angle) or not is_finite(_initial_angle): - _value = Vector3.ZERO - return - - # we assume that _initial_distance is never 0 because - # you cannot have two fingers physically at the same place - # on a touch screen - _value = Vector3(angle - _initial_angle, 0, 0) - - -func _calculate_angle() -> float: - var pos1:Vector2 = GUIDETouchState.get_finger_position(0, 2) - # if we have no position for first finger, we can immediately abort - if not pos1.is_finite(): - return INF - - var pos2:Vector2 = GUIDETouchState.get_finger_position(1, 2) - # if there is no second finger, we can abort as well - if not pos2.is_finite(): - return INF - - # calculate distance for the fingers - return -pos1.angle_to_point(pos2) - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchAngle and \ - other.unit == unit - - -func _to_string(): - return "(GUIDEInputTouchAngle unit=" + ("radians" if unit == AngleUnit.RADIANS else "degrees") + ")" - - -func _editor_name() -> String: - return "Touch Angle" - - -func _editor_description() -> String: - return "Angle changes of two touching fingers." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_1D diff --git a/addons/guide/inputs/guide_input_touch_angle.gd.uid b/addons/guide/inputs/guide_input_touch_angle.gd.uid deleted file mode 100644 index e6e78fa..0000000 --- a/addons/guide/inputs/guide_input_touch_angle.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d15fohvathk0t diff --git a/addons/guide/inputs/guide_input_touch_axis_1d.gd b/addons/guide/inputs/guide_input_touch_axis_1d.gd deleted file mode 100644 index 3615efa..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_1d.gd +++ /dev/null @@ -1,44 +0,0 @@ -@tool -class_name GUIDEInputTouchAxis1D -extends GUIDEInputTouchAxisBase - -enum GUIDEInputTouchAxis { - X, - Y -} - -@export var axis:GUIDEInputTouchAxis: - set(value): - if value == axis: - return - axis = value - emit_changed() - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchAxis1D and \ - other.finger_count == finger_count and \ - other.finger_index == finger_index and \ - other.axis == axis - -func _apply_value(value:Vector2): - match axis: - GUIDEInputTouchAxis.X: - _value = Vector3(value.x, 0, 0) - GUIDEInputTouchAxis.Y: - _value = Vector3(value.y, 0, 0) - -func _to_string(): - return "(GUIDEInputTouchAxis1D finger_count=" + str(finger_count) + \ - " finger_index=" + str(finger_index) +" axis=" + ("X" if axis == GUIDEInputTouchAxis.X else "Y") + ")" - - -func _editor_name() -> String: - return "Touch Axis1D" - - -func _editor_description() -> String: - return "Relative movement of a touching finger on a single axis." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_1D diff --git a/addons/guide/inputs/guide_input_touch_axis_1d.gd.uid b/addons/guide/inputs/guide_input_touch_axis_1d.gd.uid deleted file mode 100644 index f62efb6..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_1d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ducu74n37r83t diff --git a/addons/guide/inputs/guide_input_touch_axis_2d.gd b/addons/guide/inputs/guide_input_touch_axis_2d.gd deleted file mode 100644 index 13b79d7..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_2d.gd +++ /dev/null @@ -1,27 +0,0 @@ -@tool -class_name GUIDEInputTouchAxis2D -extends GUIDEInputTouchAxisBase - -func _apply_value(value:Vector2): - _value = Vector3(value.x, value.y, 0) - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchAxis2D and \ - other.finger_count == finger_count and \ - other.finger_index == finger_index - - -func _to_string(): - return "(GUIDEInputTouchAxis2D finger_count=" + str(finger_count) + \ - " finger_index=" + str(finger_index) +")" - - -func _editor_name() -> String: - return "Touch Axis2D" - - -func _editor_description() -> String: - return "2D relative movement of a touching finger." - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_2D diff --git a/addons/guide/inputs/guide_input_touch_axis_2d.gd.uid b/addons/guide/inputs/guide_input_touch_axis_2d.gd.uid deleted file mode 100644 index 648aee5..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_2d.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://eai5rm24dsmq diff --git a/addons/guide/inputs/guide_input_touch_axis_base.gd b/addons/guide/inputs/guide_input_touch_axis_base.gd deleted file mode 100644 index 3a2ab9f..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_base.gd +++ /dev/null @@ -1,46 +0,0 @@ -## Base class for axis-like touch input. -@tool -class_name GUIDEInputTouchAxisBase -extends GUIDEInputTouchBase - -const GUIDETouchState = preload("guide_touch_state.gd") - -var _last_position:Vector2 = Vector2.INF - -# We use the reset call to calculate the position for this frame -# so it can serve as reference for the next frame -func _needs_reset() -> bool: - return true - -func _reset() -> void: - _last_position = GUIDETouchState.get_finger_position(finger_index, finger_count) - _apply_value(_calculate_value(_last_position)) - -func _input(event:InputEvent) -> void: - if not GUIDETouchState.process_input_event(event): - # not touch-related - return - - # calculate live position from the cache - var new_position:Vector2 = GUIDETouchState.get_finger_position(finger_index, finger_count) - - _apply_value(_calculate_value(new_position)) - -func _apply_value(value:Vector2): - pass - -func _calculate_value(new_position:Vector2) -> Vector2: - # if we cannot calculate a delta because old or new position - # are undefined, we say the delta is zero - if not _last_position.is_finite() or not new_position.is_finite(): - return Vector2.ZERO - - return new_position - _last_position - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchAxis2D and \ - other.finger_count == finger_count and \ - other.finger_index == finger_index - - diff --git a/addons/guide/inputs/guide_input_touch_axis_base.gd.uid b/addons/guide/inputs/guide_input_touch_axis_base.gd.uid deleted file mode 100644 index 02e26f1..0000000 --- a/addons/guide/inputs/guide_input_touch_axis_base.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cvdj3th7gnnae diff --git a/addons/guide/inputs/guide_input_touch_base.gd b/addons/guide/inputs/guide_input_touch_base.gd deleted file mode 100644 index 7f9aa0b..0000000 --- a/addons/guide/inputs/guide_input_touch_base.gd +++ /dev/null @@ -1,22 +0,0 @@ -## Base class for generic touch input -@tool -class_name GUIDEInputTouchBase -extends GUIDEInput - -## The number of fingers to be tracked. -@export_range(1, 5, 1, "or_greater") var finger_count:int = 1: - set(value): - if value < 1: - value = 1 - finger_count = value - emit_changed() - -## The index of the finger for which the position/delta should be reported -## (0 = first finger, 1 = second finger, etc.). If -1, reports the average position/delta for -## all fingers currently touching. -@export_range(-1, 4, 1, "or_greater") var finger_index:int = 0: - set(value): - if value < -1: - value = -1 - finger_index = value - emit_changed() diff --git a/addons/guide/inputs/guide_input_touch_base.gd.uid b/addons/guide/inputs/guide_input_touch_base.gd.uid deleted file mode 100644 index 46d07a3..0000000 --- a/addons/guide/inputs/guide_input_touch_base.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cub7x2ywiba1s diff --git a/addons/guide/inputs/guide_input_touch_distance.gd b/addons/guide/inputs/guide_input_touch_distance.gd deleted file mode 100644 index c4263a5..0000000 --- a/addons/guide/inputs/guide_input_touch_distance.gd +++ /dev/null @@ -1,72 +0,0 @@ -## Input representing the distance changes between two fingers. -@tool -class_name GUIDEInputTouchDistance -extends GUIDEInput - -const GUIDETouchState = preload("guide_touch_state.gd") - -var _initial_distance:float = INF - -# We use the reset call to calculate the distance for this frame -# so it can serve as reference for the next frame -func _needs_reset() -> bool: - return true - -func _reset(): - var distance = _calculate_distance() - # update initial distance when input is actuated or stops being actuated - if is_finite(_initial_distance) != is_finite(distance): - _initial_distance = distance - - -func _input(event:InputEvent) -> void: - if not GUIDETouchState.process_input_event(event): - # not touch-related - return - - var distance := _calculate_distance() - # if either current distance or initial distance is not set, - # we are zero - if not is_finite(distance) or not is_finite(_initial_distance): - _value = Vector3.ZERO - return - - # we assume that _initial_distance is never 0 because - # you cannot have two fingers physically at the same place - # on a touch screen - _value = Vector3(distance / _initial_distance, 0, 0) - - -func _calculate_distance() -> float: - var pos1:Vector2 = GUIDETouchState.get_finger_position(0, 2) - # if we have no position for first finger, we can immediately abort - if not pos1.is_finite(): - return INF - - var pos2:Vector2 = GUIDETouchState.get_finger_position(1, 2) - # if there is no second finger, we can abort as well - if not pos2.is_finite(): - return INF - - # calculate distance for the fingers - return pos1.distance_to(pos2) - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchDistance - - -func _to_string(): - return "(GUIDEInputTouchDistance)" - - -func _editor_name() -> String: - return "Touch Distance" - - -func _editor_description() -> String: - return "Distance of two touching fingers." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_1D diff --git a/addons/guide/inputs/guide_input_touch_distance.gd.uid b/addons/guide/inputs/guide_input_touch_distance.gd.uid deleted file mode 100644 index 591e93a..0000000 --- a/addons/guide/inputs/guide_input_touch_distance.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dcoinm0y1mrow diff --git a/addons/guide/inputs/guide_input_touch_position.gd b/addons/guide/inputs/guide_input_touch_position.gd deleted file mode 100644 index 7778987..0000000 --- a/addons/guide/inputs/guide_input_touch_position.gd +++ /dev/null @@ -1,47 +0,0 @@ -@tool -class_name GUIDEInputTouchPosition -extends GUIDEInputTouchBase - -const GUIDETouchState = preload("guide_touch_state.gd") - - -func _begin_usage(): - _value = Vector3.INF - - -func _input(event:InputEvent) -> void: - # update touch state - if not GUIDETouchState.process_input_event(event): - # not touch-related - return - - # update finger position - var position := GUIDETouchState.get_finger_position(finger_index, finger_count) - if not position.is_finite(): - _value = Vector3.INF - return - - _value = Vector3(position.x, position.y, 0) - - -func is_same_as(other:GUIDEInput): - return other is GUIDEInputTouchPosition and \ - other.finger_count == finger_count and \ - other.finger_index == finger_index - - -func _to_string(): - return "(GUIDEInputTouchPosition finger_count=" + str(finger_count) + \ - " finger_index=" + str(finger_index) +")" - - -func _editor_name() -> String: - return "Touch Position" - - -func _editor_description() -> String: - return "Position of a touching finger." - - -func _native_value_type() -> GUIDEAction.GUIDEActionValueType: - return GUIDEAction.GUIDEActionValueType.AXIS_2D diff --git a/addons/guide/inputs/guide_input_touch_position.gd.uid b/addons/guide/inputs/guide_input_touch_position.gd.uid deleted file mode 100644 index 563d7b5..0000000 --- a/addons/guide/inputs/guide_input_touch_position.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d1p3u6rttnlfp diff --git a/addons/guide/inputs/guide_touch_state.gd b/addons/guide/inputs/guide_touch_state.gd deleted file mode 100644 index dd10fb8..0000000 --- a/addons/guide/inputs/guide_touch_state.gd +++ /dev/null @@ -1,73 +0,0 @@ -@tool -## Shared information about current touch state. This simplifies implementation of the touch inputs -## and avoids having to process the same events multiple times. - -# Cached finger positions -static var _finger_positions:Dictionary = {} - -# Events processed this frame. -static var _processed_events:Dictionary = {} - -# Last frame we were called -static var _last_frame:int = -1 - - -## Processes an input event and updates touch state. Returns true, if the given event -## was touch-related. -static func process_input_event(event:InputEvent) -> bool: - if not event is InputEventScreenTouch and not event is InputEventScreenDrag: - return false - - var this_frame = Engine.get_process_frames() - - # if we are in a new frame, clear the processed events - if this_frame != _last_frame: - _last_frame = this_frame - _processed_events.clear() - - # if the event already was processed, skip processing it again - if _processed_events.has(event): - return true - - _processed_events[event] = true - - var index:int = event.index - - if event is InputEventScreenTouch: - if event.pressed: - _finger_positions[index] = event.position - else: - _finger_positions.erase(index) - - if event is InputEventScreenDrag: - _finger_positions[index] = event.position - - return true - - -## Gets the finger position of the finger at the given index. -## If finger_index is < 0, returns the average of all finger positions. -## Will only return a position if the amount of fingers -## currently touching matches finger_count. -## -## If no finger position can be determined, returns Vector2.INF. -static func get_finger_position(finger_index:int, finger_count:int) -> Vector2: - # if we have no finger positions right now, we can cut it short here - if _finger_positions.is_empty(): - return Vector2.INF - - # If the finger count doesn't match we have no position right now - if _finger_positions.size() != finger_count: - return Vector2.INF - - # if a finger index is set, use this fingers position, if available - if finger_index > -1: - return _finger_positions.get(finger_index, Vector2.INF) - - - var result = Vector2.ZERO - for value in _finger_positions.values(): - result += value - - result /= float(finger_count) - return result diff --git a/addons/guide/inputs/guide_touch_state.gd.uid b/addons/guide/inputs/guide_touch_state.gd.uid deleted file mode 100644 index e92311c..0000000 --- a/addons/guide/inputs/guide_touch_state.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c7sumc65pe5ba diff --git a/addons/guide/modifiers/guide_modifier.gd b/addons/guide/modifiers/guide_modifier.gd deleted file mode 100644 index 6253480..0000000 --- a/addons/guide/modifiers/guide_modifier.gd +++ /dev/null @@ -1,23 +0,0 @@ -@tool -@icon("res://addons/guide/modifiers/guide_modifier.svg") -class_name GUIDEModifier -extends Resource - -## Called when the modifier is started to be used by GUIDE. Can be used to perform -## initializations. -func _begin_usage() -> void : - pass - -## Called, when the modifier is no longer used by GUIDE. Can be used to perform -## cleanup. -func _end_usage() -> void: - pass - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - return input - -func _editor_name() -> String: - return "" - -func _editor_description() -> String: - return "" diff --git a/addons/guide/modifiers/guide_modifier.gd.uid b/addons/guide/modifiers/guide_modifier.gd.uid deleted file mode 100644 index 767390b..0000000 --- a/addons/guide/modifiers/guide_modifier.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dokohnxlptadc diff --git a/addons/guide/modifiers/guide_modifier.svg b/addons/guide/modifiers/guide_modifier.svg deleted file mode 100644 index e51d736..0000000 --- a/addons/guide/modifiers/guide_modifier.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/addons/guide/modifiers/guide_modifier.svg.import b/addons/guide/modifiers/guide_modifier.svg.import deleted file mode 100644 index 3d85142..0000000 --- a/addons/guide/modifiers/guide_modifier.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://j64d8n4am2uh" -path="res://.godot/imported/guide_modifier.svg-8cf939ca3244410aba00f7b558561d72.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/modifiers/guide_modifier.svg" -dest_files=["res://.godot/imported/guide_modifier.svg-8cf939ca3244410aba00f7b558561d72.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/modifiers/guide_modifier_3d_coordinates.gd b/addons/guide/modifiers/guide_modifier_3d_coordinates.gd deleted file mode 100644 index 21abb90..0000000 --- a/addons/guide/modifiers/guide_modifier_3d_coordinates.gd +++ /dev/null @@ -1,53 +0,0 @@ -## Converts a position input in viewport coordinates (e.g. from the mouse position input) -## into 3D coordinates (e.g. 3D world coordinates). Useful to get a 3D 'world' position. -## Returns a Vector3.INF if no 3D world coordinates can be determined. -@tool -class_name GUIDEModifier3DCoordinates -extends GUIDEModifier - -## The maximum depth of the ray cast used to detect the 3D position. -@export var max_depth:float = 1000.0 - -## Whether the rays cast should collide with areas. -@export var collide_with_areas:bool = false - -## Collision mask to use for the ray cast. -@export_flags_3d_physics var collision_mask:int - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - # if we collide with nothing, no need to even try - if collision_mask == 0: - return Vector3.INF - - if not input.is_finite(): - return Vector3.INF - - var viewport = Engine.get_main_loop().root - var camera:Camera3D = viewport.get_camera_3d() - if camera == null: - return Vector3.INF - - - var input_position:Vector2 = Vector2(input.x, input.y) - - var from:Vector3 = camera.project_ray_origin(input_position) - var to:Vector3 = from + camera.project_ray_normal(input_position) * max_depth - var query:= PhysicsRayQueryParameters3D.create(from, to, collision_mask) - query.collide_with_areas = collide_with_areas - - var result = viewport.world_3d.direct_space_state.intersect_ray(query) - if result.has("position"): - return result.position - - return Vector3.INF - - - -func _editor_name() -> String: - return "3D coordinates" - - -func _editor_description() -> String: - return "Converts a position input in viewport coordinates (e.g. from the mouse position input)\n" + \ - "into 3D coordinates (e.g. 3D world coordinates). Useful to get a 3D 'world' position." diff --git a/addons/guide/modifiers/guide_modifier_3d_coordinates.gd.uid b/addons/guide/modifiers/guide_modifier_3d_coordinates.gd.uid deleted file mode 100644 index a0499da..0000000 --- a/addons/guide/modifiers/guide_modifier_3d_coordinates.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bytclrko2xc4j diff --git a/addons/guide/modifiers/guide_modifier_8_way_direction.gd b/addons/guide/modifiers/guide_modifier_8_way_direction.gd deleted file mode 100644 index 8ae2954..0000000 --- a/addons/guide/modifiers/guide_modifier_8_way_direction.gd +++ /dev/null @@ -1,47 +0,0 @@ -@tool -## A filter that converts a 2D input into a boolean that is true when the -## input direction matches the selected direction. Note, that north is negative Y, -## because in Godot negative Y is up. -class_name GUIDEModifier8WayDirection -extends GUIDEModifier - -enum GUIDEDirection { - EAST = 0, - NORTH_EAST = 1, - NORTH = 2, - NORTH_WEST = 3, - WEST = 4, - SOUTH_WEST = 5, - SOUTH = 6, - SOUTH_EAST = 7 -} - -## The direction in which the input should point. -@export var direction:GUIDEDirection = GUIDEDirection.EAST - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - if input.is_zero_approx(): - return Vector3.ZERO - - - - # get the angle in which the direction is pointing in radians. - var angle_radians = atan2( -input.y, input.x ); - var octant = roundi( 8 * angle_radians / TAU + 8 ) % 8; - if octant == direction: - return Vector3.RIGHT # (1, 0, 0) indicating boolean true - else: - return Vector3.ZERO - - -func _editor_name() -> String: - return "8-way direction" - - -func _editor_description() -> String: - return "Converts a 2D input into a boolean that is true when the\n" + \ - "input direction matches the selected direction. Note, that north is negative Y,\n" + \ - "because in Godot negative Y is up." diff --git a/addons/guide/modifiers/guide_modifier_8_way_direction.gd.uid b/addons/guide/modifiers/guide_modifier_8_way_direction.gd.uid deleted file mode 100644 index 8c564e0..0000000 --- a/addons/guide/modifiers/guide_modifier_8_way_direction.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c23dvin8kx35m diff --git a/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd b/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd deleted file mode 100644 index 23a5938..0000000 --- a/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd +++ /dev/null @@ -1,35 +0,0 @@ -## Converts a position input in viewport coordinates (e.g. from the mouse position input) -## into canvas coordinates (e.g. 2D world coordinates). Useful to get a 2D 'world' position. -@tool -class_name GUIDEModifierCanvasCoordinates -extends GUIDEModifier - -## If checked, the input will be treated as relative input (position change) -## rather than absolute input (position). -@export var relative_input:bool: - set(value): - relative_input = value - emit_changed() - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - var viewport = Engine.get_main_loop().root - var transform = viewport.canvas_transform.affine_inverse() - var coordinates = transform * Vector2(input.x, input.y) - - if relative_input: - var origin = transform * Vector2.ZERO - coordinates -= origin - - return Vector3(coordinates.x, coordinates.y, input.z) - - -func _editor_name() -> String: - return "Canvas coordinates" - - -func _editor_description() -> String: - return "Converts a position input in viewport coordinates (e.g. from the mouse position input)\n" + \ - "into canvas coordinates (e.g. 2D world coordinates). Useful to get a 2D 'world' position." diff --git a/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd.uid b/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd.uid deleted file mode 100644 index 97fdc28..0000000 --- a/addons/guide/modifiers/guide_modifier_canvas_coordinates.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c7276omec30hi diff --git a/addons/guide/modifiers/guide_modifier_curve.gd b/addons/guide/modifiers/guide_modifier_curve.gd deleted file mode 100644 index bb55b11..0000000 --- a/addons/guide/modifiers/guide_modifier_curve.gd +++ /dev/null @@ -1,51 +0,0 @@ -@tool -## Applies a separate curve to each input axis. -class_name GUIDEModifierCurve -extends GUIDEModifier - - -## The curve to apply to the x axis -@export var curve: Curve = default_curve() - -## Apply modifier to X axis -@export var x: bool = true - -## Apply modifier to Y axis -@export var y: bool = true - -## Apply modifier to Z axis -@export var z: bool = true - - -## Create default curve resource with a smoothstep, 0.0 - 1.0 input/output range -static func default_curve() -> Curve: - var curve = Curve.new() - curve.add_point(Vector2(0.0, 0.0)) - curve.add_point(Vector2(1.0, 1.0)) - - return curve - - -func _modify_input(input: Vector3, delta: float, value_type: GUIDEAction.GUIDEActionValueType) -> Vector3: - # Curve should never be null - if curve == null: - push_error("No curve added to Curve modifier.") - return input - - if not input.is_finite(): - return Vector3.INF - - # Return vector with enabled axes modified, others remain unchanged. - return Vector3( - curve.sample(input.x) if x else input.x, - curve.sample(input.y) if y else input.y, - curve.sample(input.z) if z else input.z - ) - - -func _editor_name() -> String: - return "Curve" - - -func _editor_description() -> String: - return "Applies a curve to each input axis." diff --git a/addons/guide/modifiers/guide_modifier_curve.gd.uid b/addons/guide/modifiers/guide_modifier_curve.gd.uid deleted file mode 100644 index 15914d6..0000000 --- a/addons/guide/modifiers/guide_modifier_curve.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bj2jogowcg505 diff --git a/addons/guide/modifiers/guide_modifier_deadzone.gd b/addons/guide/modifiers/guide_modifier_deadzone.gd deleted file mode 100644 index b40a00c..0000000 --- a/addons/guide/modifiers/guide_modifier_deadzone.gd +++ /dev/null @@ -1,63 +0,0 @@ -@tool -## Inputs between the lower and upper threshold are mapped 0 -> 1. -## Values outside the thresholds are clamped. -class_name GUIDEModifierDeadzone -extends GUIDEModifier - -## Lower threshold for the deadzone. -@export_range(0,1) var lower_threshold:float = 0.2: - set(value): - if value > upper_threshold: - lower_threshold = upper_threshold - else: - lower_threshold = value - emit_changed() - - -## Upper threshold for the deadzone. -@export_range(0,1) var upper_threshold:float = 1.0: - set(value): - if value < lower_threshold: - upper_threshold = lower_threshold - else: - upper_threshold = value - emit_changed() - - -func _rescale(value:float) -> float: - return min(1.0, (max(0.0, abs(value) - lower_threshold) / (upper_threshold - lower_threshold))) * sign(value) - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if upper_threshold <= lower_threshold: - return input - - if not input.is_finite(): - return Vector3.INF - - match value_type: - GUIDEAction.GUIDEActionValueType.BOOL, GUIDEAction.GUIDEActionValueType.AXIS_1D: - return Vector3(_rescale(input.x), input.y, input.z) - - GUIDEAction.GUIDEActionValueType.AXIS_2D: - var v2d = Vector2(input.x, input.y) - if v2d.is_zero_approx(): - return Vector3(0, 0, input.z) - v2d = v2d.normalized() * _rescale(v2d.length()) - return Vector3(v2d.x, v2d.y, input.z) - - GUIDEAction.GUIDEActionValueType.AXIS_3D: - if input.is_zero_approx(): - return Vector3.ZERO - return input.normalized() * _rescale(input.length()) - _: - push_error("Unsupported value type. This is a bug. Please report it.") - return input - - -func _editor_name() -> String: - return "Deadzone" - -func _editor_description() -> String: - return "Inputs between the lower and upper threshold are mapped 0 -> 1.\n" + \ - "Values outside the thresholds are clamped." diff --git a/addons/guide/modifiers/guide_modifier_deadzone.gd.uid b/addons/guide/modifiers/guide_modifier_deadzone.gd.uid deleted file mode 100644 index e1a98ab..0000000 --- a/addons/guide/modifiers/guide_modifier_deadzone.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dxbj570e2ki2p diff --git a/addons/guide/modifiers/guide_modifier_input_swizzle.gd b/addons/guide/modifiers/guide_modifier_input_swizzle.gd deleted file mode 100644 index 115a50f..0000000 --- a/addons/guide/modifiers/guide_modifier_input_swizzle.gd +++ /dev/null @@ -1,43 +0,0 @@ -## Swizzle the input vector components. Useful to map 1D input to 2D or vice versa. -@tool -class_name GUIDEModifierInputSwizzle -extends GUIDEModifier - -enum GUIDEInputSwizzleOperation { - ## Swap X and Y axes. - YXZ, - ## Swap X and Z axes. - ZYX, - ## Swap Y and Z axes. - XZY, - ## Y to X, Z to Y, X to Z. - YZX, - ## Y to Z, Z to X, X to Y. - ZXY -} - -## The new order into which the input should be brought. -@export var order:GUIDEInputSwizzleOperation = GUIDEInputSwizzleOperation.YXZ - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - match order: - GUIDEInputSwizzleOperation.YXZ: - return Vector3(input.y, input.x, input.z) - GUIDEInputSwizzleOperation.ZYX: - return Vector3(input.z, input.y, input.x) - GUIDEInputSwizzleOperation.XZY: - return Vector3(input.x, input.z, input.y) - GUIDEInputSwizzleOperation.YZX: - return Vector3(input.y, input.z, input.x) - GUIDEInputSwizzleOperation.ZXY: - return Vector3(input.z, input.x, input.y) - _: - push_error("Unknown order ", order , " this is most likely a bug, please report it.") - return input - -func _editor_name() -> String: - return "Input Swizzle" - -func _editor_description() -> String: - return "Swizzle the input vector components. Useful to map 1D input to 2D or vice versa." diff --git a/addons/guide/modifiers/guide_modifier_input_swizzle.gd.uid b/addons/guide/modifiers/guide_modifier_input_swizzle.gd.uid deleted file mode 100644 index fab4a41..0000000 --- a/addons/guide/modifiers/guide_modifier_input_swizzle.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bpk8r5v7hvw32 diff --git a/addons/guide/modifiers/guide_modifier_map_range.gd b/addons/guide/modifiers/guide_modifier_map_range.gd deleted file mode 100644 index 65f2275..0000000 --- a/addons/guide/modifiers/guide_modifier_map_range.gd +++ /dev/null @@ -1,67 +0,0 @@ -@tool -## Maps an input range to an output range and optionally clamps the output. -class_name GUIDEModifierMapRange -extends GUIDEModifier - -## Should the output be clamped to the range? -@export var apply_clamp:bool = true - -## The minimum input value -@export var input_min:float = 0.0 - -## The maximum input value -@export var input_max:float = 1.0 - -## The minimum output value -@export var output_min:float = 0.0 - -## The maximum output value -@export var output_max:float = 1.0 - -## Apply modifier to X axis -@export var x:bool = true - -## Apply modifier to Y axis -@export var y:bool = true - -## Apply modifier to Z axis -@export var z:bool = true - -var _omin:float -var _omax:float - -func _begin_usage(): - # we calculate the min and max of the output range here, so we can use them later and don't have to - # recalculate them every time the modifier is used - _omin = min(output_min, output_max) - _omax = max(output_min, output_max) - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - var x_value:float = remap(input.x, input_min, input_max, output_min, output_max) - var y_value:float = remap(input.y, input_min, input_max, output_min, output_max) - var z_value:float = remap(input.z, input_min, input_max, output_min, output_max) - - if apply_clamp: - # clamp doesn't handle reverse ranges, so we need to use our calculated normalized output range - # to clamp the output values - x_value = clamp(x_value, _omin, _omax) - y_value = clamp(y_value, _omin, _omax) - z_value = clamp(z_value, _omin, _omax) - - # Return vector with enabled axes set, others unchanged - return Vector3( - x_value if x else input.x, - y_value if y else input.y, - z_value if z else input.z, - ) - - -func _editor_name() -> String: - return "Map Range" - - -func _editor_description() -> String: - return "Maps an input range to an output range and optionally clamps the output" diff --git a/addons/guide/modifiers/guide_modifier_map_range.gd.uid b/addons/guide/modifiers/guide_modifier_map_range.gd.uid deleted file mode 100644 index 30950ef..0000000 --- a/addons/guide/modifiers/guide_modifier_map_range.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://clqbj0xevb64q diff --git a/addons/guide/modifiers/guide_modifier_negate.gd b/addons/guide/modifiers/guide_modifier_negate.gd deleted file mode 100644 index 895d1ef..0000000 --- a/addons/guide/modifiers/guide_modifier_negate.gd +++ /dev/null @@ -1,52 +0,0 @@ -## Inverts input per axis. -@tool -class_name GUIDEModifierNegate -extends GUIDEModifier - -## Whether the X axis should be inverted. -@export var x:bool = true: - set(value): - if x == value: - return - x = value - _update_caches() - emit_changed() - -## Whether the Y axis should be inverted. -@export var y:bool = true: - set(value): - if y == value: - return - y = value - _update_caches() - emit_changed() - -## Whether the Z axis should be inverted. -@export var z:bool = true: - set(value): - if z == value: - return - z = value - _update_caches() - emit_changed() - -var _multiplier:Vector3 = Vector3.ONE * -1 - -func _update_caches(): - _multiplier.x = -1 if x else 1 - _multiplier.y = -1 if y else 1 - _multiplier.z = -1 if z else 1 - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - return input * _multiplier - -func _editor_name() -> String: - return "Negate" - - -func _editor_description() -> String: - return "Inverts input per axis." diff --git a/addons/guide/modifiers/guide_modifier_negate.gd.uid b/addons/guide/modifiers/guide_modifier_negate.gd.uid deleted file mode 100644 index e03b9e3..0000000 --- a/addons/guide/modifiers/guide_modifier_negate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b58e004vuk1hd diff --git a/addons/guide/modifiers/guide_modifier_normalize.gd b/addons/guide/modifiers/guide_modifier_normalize.gd deleted file mode 100644 index 7b10f52..0000000 --- a/addons/guide/modifiers/guide_modifier_normalize.gd +++ /dev/null @@ -1,17 +0,0 @@ -## Normalizes the input vector. -@tool -class_name GUIDEModifierNormalize -extends GUIDEModifier - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - return input.normalized() - -func _editor_name() -> String: - return "Normalize" - - -func _editor_description() -> String: - return "Normalizes the input vector." diff --git a/addons/guide/modifiers/guide_modifier_normalize.gd.uid b/addons/guide/modifiers/guide_modifier_normalize.gd.uid deleted file mode 100644 index 62d6f99..0000000 --- a/addons/guide/modifiers/guide_modifier_normalize.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bu0gmehf5nomv diff --git a/addons/guide/modifiers/guide_modifier_positive_negative.gd b/addons/guide/modifiers/guide_modifier_positive_negative.gd deleted file mode 100644 index 1f0ce35..0000000 --- a/addons/guide/modifiers/guide_modifier_positive_negative.gd +++ /dev/null @@ -1,65 +0,0 @@ -## Limits inputs to positive or negative values. -@tool -class_name GUIDEModifierPositiveNegative -extends GUIDEModifier - -enum LimitRange { - POSITIVE = 1, - NEGATIVE = 2 -} - -## The range of numbers to which the input should be limited -@export var range:LimitRange = LimitRange.POSITIVE - -## Whether the X axis should be affected. -@export var x:bool = true: - set(value): - if x == value: - return - x = value - emit_changed() - -## Whether the Y axis should be affected. -@export var y:bool = true: - set(value): - if y == value: - return - y = value - emit_changed() - -## Whether the Z axis should be affected. -@export var z:bool = true: - set(value): - if z == value: - return - z = value - emit_changed() - - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - match range: - LimitRange.POSITIVE: - return Vector3( - max(0, input.x) if x else input.x, \ - max(0, input.y) if y else input.y, \ - max(0, input.z) if z else input.z \ - ) - LimitRange.NEGATIVE: - return Vector3( - min(0, input.x) if x else input.x, \ - min(0, input.y) if y else input.y, \ - min(0, input.z) if z else input.z \ - ) - # should never happen - return input - -func _editor_name() -> String: - return "Positive/Negative" - - -func _editor_description() -> String: - return "Clamps the input to positive or negative values." diff --git a/addons/guide/modifiers/guide_modifier_positive_negative.gd.uid b/addons/guide/modifiers/guide_modifier_positive_negative.gd.uid deleted file mode 100644 index 7b73978..0000000 --- a/addons/guide/modifiers/guide_modifier_positive_negative.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://u7w48jae3w24 diff --git a/addons/guide/modifiers/guide_modifier_scale.gd b/addons/guide/modifiers/guide_modifier_scale.gd deleted file mode 100644 index 68e0564..0000000 --- a/addons/guide/modifiers/guide_modifier_scale.gd +++ /dev/null @@ -1,35 +0,0 @@ -@tool -## Scales the input by the given value and optionally, delta time. -class_name GUIDEModifierScale -extends GUIDEModifier - -## The scale by which the input should be scaled. -@export var scale:Vector3 = Vector3.ONE: - set(value): - scale = value - emit_changed() - - -## If true, delta time will be multiplied in addition to the scale. -@export var apply_delta_time:bool = false: - set(value): - apply_delta_time = value - emit_changed() - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - if apply_delta_time: - return input * scale * delta - else: - return input * scale - - -func _editor_name() -> String: - return "Scale" - - -func _editor_description() -> String: - return "Scales the input by the given value and optionally, delta time." diff --git a/addons/guide/modifiers/guide_modifier_scale.gd.uid b/addons/guide/modifiers/guide_modifier_scale.gd.uid deleted file mode 100644 index 3ef24d8..0000000 --- a/addons/guide/modifiers/guide_modifier_scale.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dpl2ij36k6sfp diff --git a/addons/guide/modifiers/guide_modifier_virtual_cursor.gd b/addons/guide/modifiers/guide_modifier_virtual_cursor.gd deleted file mode 100644 index 79ada82..0000000 --- a/addons/guide/modifiers/guide_modifier_virtual_cursor.gd +++ /dev/null @@ -1,105 +0,0 @@ -## Stateful modifier which provides a virtual "mouse" cursor driven by input. The modifier -## returns the current cursor position in pixels releative to the origin of the currently -## active window. -@tool -class_name GUIDEModifierVirtualCursor -extends GUIDEModifier - -enum ScreenScale { - ## Input is not scaled with input screen size. This means that the cursor will - ## visually move slower on higher resolutions. - NONE = 0, - ## Input is scaled with the longer axis of the screen size (e.g. width in - ## landscape mode, height in portrait mode). The cursor will move with - ## the same visual speed on all resolutions. - LONGER_AXIS = 1, - ## Input is scaled with the shorter axis of the screen size (e.g. height in - ## landscape mode, width in portrait mode). The cursor will move with the - ## same visual speed on all resolutions. - SHORTER_AXIS = 2 -} - -## The initial position of the virtual cursor (given in screen relative coordinates) -@export var initial_position:Vector2 = Vector2(0.5, 0.5): - set(value): - initial_position = value.clamp(Vector2.ZERO, Vector2.ONE) - -## The cursor movement speed in pixels. -@export var speed:Vector3 = Vector3.ONE - -## Screen scaling to be applied to the cursor movement. This controls -## whether the cursor movement speed is resolution dependent or not. -## If set to anything but [code]None[/code] then the input value will -## be multiplied with the window width/height depending on the setting. -@export var screen_scale:ScreenScale = ScreenScale.LONGER_AXIS - -## The scale by which the input should be scaled. -## @deprecated: use [member speed] instead. -var scale:Vector3: - get: return speed - set(value): speed = value - -## If true, the cursor movement speed is in pixels per second, otherwise it is in pixels -## per frame. -@export var apply_delta_time:bool = true - - -## Cursor offset in pixels. -var _offset:Vector3 = Vector3.ZERO - -## Returns the scaled screen size. This takes Godot's scaling factor for windows into account. -func _get_scaled_screen_size(): - # Get window size, including scaling factor - var window = Engine.get_main_loop().get_root() - return window.get_screen_transform().affine_inverse() * Vector2(window.size) - -func _begin_usage(): - var window_size = _get_scaled_screen_size() - _offset = Vector3(window_size.x * initial_position.x, window_size.y * initial_position.y, 0) - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - # input is invalid, so just return current cursor position - return _offset - - var window_size = _get_scaled_screen_size() - input *= speed - - if apply_delta_time: - input *= delta - - var screen_scale_factor:float = 1.0 - match screen_scale: - ScreenScale.LONGER_AXIS: - screen_scale_factor = max(window_size.x, window_size.y) - ScreenScale.SHORTER_AXIS: - screen_scale_factor = min(window_size.x, window_size.y) - - input *= screen_scale_factor - - # apply input and clamp to window size - _offset = (_offset + input).clamp(Vector3.ZERO, Vector3(window_size.x, window_size.y, 0)) - - return _offset - -func _editor_name() -> String: - return "Virtual Cursor" - - -func _editor_description() -> String: - return "Stateful modifier which provides a virtual \"mouse\" cursor driven by input. The modifier\n" + \ - "returns the current cursor position in pixels releative to the origin of the currently \n" + \ - "active window." - - -# support for legacy properties -func _get_property_list(): - return [ - { - "name": "scale", - "type": TYPE_VECTOR3, - "usage": PROPERTY_USAGE_NO_EDITOR - } - ] - diff --git a/addons/guide/modifiers/guide_modifier_virtual_cursor.gd.uid b/addons/guide/modifiers/guide_modifier_virtual_cursor.gd.uid deleted file mode 100644 index 33b3f18..0000000 --- a/addons/guide/modifiers/guide_modifier_virtual_cursor.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ce4p4fmma1jkd diff --git a/addons/guide/modifiers/guide_modifier_window_relative.gd b/addons/guide/modifiers/guide_modifier_window_relative.gd deleted file mode 100644 index 66c88d7..0000000 --- a/addons/guide/modifiers/guide_modifier_window_relative.gd +++ /dev/null @@ -1,26 +0,0 @@ -## Converts the value of the input into window-relative units between 0 and 1. -## E.g. if a mouse cursor moves half a screen to the right and down, then -## this modifier will return (0.5, 0.5). -@tool -class_name GUIDEModifierWindowRelative -extends GUIDEModifier - - -func _modify_input(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> Vector3: - if not input.is_finite(): - return Vector3.INF - - var window = Engine.get_main_loop().get_root() - # We want real pixels, so we need to factor in any scaling that the window does. - var window_size:Vector2 = window.get_screen_transform().affine_inverse() * Vector2(window.size) - return Vector3(input.x / window_size.x, input.y / window_size.y, input.z) - - -func _editor_name() -> String: - return "Window relative" - - -func _editor_description() -> String: - return "Converts the value of the input into window-relative units between 0 and 1.\n" + \ - "E.g. if a mouse cursor moves half a screen to the right and down, then \n" + \ - "this modifier will return (0.5, 0.5)." diff --git a/addons/guide/modifiers/guide_modifier_window_relative.gd.uid b/addons/guide/modifiers/guide_modifier_window_relative.gd.uid deleted file mode 100644 index 763f219..0000000 --- a/addons/guide/modifiers/guide_modifier_window_relative.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://baxa8ht35rrdo diff --git a/addons/guide/plugin.cfg b/addons/guide/plugin.cfg deleted file mode 100644 index 81e6856..0000000 --- a/addons/guide/plugin.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[plugin] - -name="Godot Unified Input Detection Engine (G.U.I.D.E)" -description="" -author="Jan Thomä" -version="0.5.2" -script="plugin.gd" diff --git a/addons/guide/plugin.gd b/addons/guide/plugin.gd deleted file mode 100644 index cb5410b..0000000 --- a/addons/guide/plugin.gd +++ /dev/null @@ -1,45 +0,0 @@ -@tool -extends EditorPlugin -const MainPanel = preload("editor/mapping_context_editor/mapping_context_editor.tscn") - -var _main_panel:Control - - -func _enable_plugin(): - add_autoload_singleton("GUIDE", "res://addons/guide/guide.gd") - -func _enter_tree() -> void: - _main_panel = MainPanel.instantiate() - _main_panel.initialize(self) - EditorInterface.get_editor_main_screen().add_child(_main_panel) - # Hide the main panel. Very much required. - _make_visible(false) - -func _exit_tree() -> void: - if is_instance_valid(_main_panel): - _main_panel.queue_free() - GUIDEInputFormatter.cleanup() - -func _disable_plugin(): - remove_autoload_singleton("GUIDE") - - -func _edit(object): - if object is GUIDEMappingContext: - _main_panel.edit(object) - -func _get_plugin_name() -> String: - return "G.U.I.D.E" - -func _get_plugin_icon() -> Texture2D: - return preload("res://addons/guide/editor/logo_editor_small.svg") - -func _has_main_screen() -> bool: - return true - -func _handles(object:Variant) -> bool: - return object is GUIDEMappingContext - -func _make_visible(visible): - if is_instance_valid(_main_panel): - _main_panel.visible = visible diff --git a/addons/guide/plugin.gd.uid b/addons/guide/plugin.gd.uid deleted file mode 100644 index 05871a6..0000000 --- a/addons/guide/plugin.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dv2jpc2lupuwk diff --git a/addons/guide/remapping/guide_input_detector.gd b/addons/guide/remapping/guide_input_detector.gd deleted file mode 100644 index 6b2a5d0..0000000 --- a/addons/guide/remapping/guide_input_detector.gd +++ /dev/null @@ -1,281 +0,0 @@ -@tool -## Helper node for detecting inputs. Detects the next input matching a specification and -## emits a signal with the detected input. -class_name GUIDEInputDetector -extends Node - -## The device type for which the input should be filtered. -enum DeviceType { - ## Only detect input from keyboard. - KEYBOARD = 1, - ## Only detect input from the mouse. - MOUSE = 2, - ## Only detect input from joysticks/gamepads. - JOY = 4 - # touch doesn't make a lot of sense as this is usually - # not remappable. -} - -## Which joy index should be used for detected joy events -enum JoyIndex { - # Use -1, so the detected input will match any joystick - ANY = 0, - # Use the actual index of the detected joystick. - DETECTED = 1 -} - -## A countdown between initiating a dection and the actual start of the -## detection. This is useful because when the user clicks a button to -## start a detection, we want to make sure that the player is actually -## ready (and not accidentally moves anything). If set to 0, no countdown -## will be started. -@export_range(0, 2, 0.1, "or_greater") var detection_countdown_seconds:float = 0.5 - -## Minimum amplitude to detect any axis. -@export_range(0, 1, 0.1, "or_greater") var minimum_axis_amplitude:float = 0.2 - -## If any of these inputs is encountered, the detector will -## treat this as "abort detection". -@export var abort_detection_on:Array[GUIDEInput] = [] - -## Which joy index should be returned for detected joy events. -@export var use_joy_index:JoyIndex = JoyIndex.ANY - -## Whether trigger buttons on controllers should be detected when -## then action value type is limited to boolean. -@export var allow_triggers_for_boolean_actions:bool = true - -## Emitted when the detection has started (e.g. countdown has elapsed). -## Can be used to signal this to the player. -signal detection_started() - -## Emitted when the input detector detects an input of the given type. -## If detection was aborted the given input is null. -signal input_detected(input:GUIDEInput) - -# The timer for the detection countdown. -var _timer:Timer - - - -func _ready(): - _timer = Timer.new() - _timer.one_shot = true - add_child(_timer, false, Node.INTERNAL_MODE_FRONT) - _timer.timeout.connect(_begin_detection) - -var _is_detecting:bool - -## Whether the input detector is currently detecting input. -var is_detecting:bool: - get: return _is_detecting - -var _value_type:GUIDEAction.GUIDEActionValueType -var _device_types:Array[DeviceType] = [] - -## Detects a boolean input type. -func detect_bool(device_types:Array[DeviceType] = []) -> void: - detect(GUIDEAction.GUIDEActionValueType.BOOL, device_types) - - -## Detects a 1D axis input type. -func detect_axis_1d(device_types:Array[DeviceType] = []) -> void: - detect(GUIDEAction.GUIDEActionValueType.AXIS_1D, device_types) - - -## Detects a 2D axis input type. -func detect_axis_2d(device_types:Array[DeviceType] = []) -> void: - detect(GUIDEAction.GUIDEActionValueType.AXIS_2D, device_types) - - -## Detects a 3D axis input type. -func detect_axis_3d(device_types:Array[DeviceType] = []) -> void: - detect(GUIDEAction.GUIDEActionValueType.AXIS_3D, device_types) - - -## Aborts a running detection. If no detection currently runs -## does nothing. -func abort_detection() -> void: - _timer.stop() - if _is_detecting: - _is_detecting = false - input_detected.emit(null) - -## Detects the given input type. If device types are given -## will only detect inputs from the given device types. -## Otherwise will detect inputs from all supported device types. -func detect(value_type:GUIDEAction.GUIDEActionValueType, - device_types:Array[DeviceType] = []) -> void: - if device_types == null: - push_error("Device types must not be null. Supply an empty array if you want to detect input from all devices.") - return - - # reset all abort inputs - for input in abort_detection_on: - input._reset() - - abort_detection() - _value_type = value_type - _device_types = device_types - _timer.start(detection_countdown_seconds) - - -func _begin_detection(): - _is_detecting = true - detection_started.emit() - - -func _input(event:InputEvent) -> void: - if not _is_detecting: - return - - # feed the event into the abort inputs - for input in abort_detection_on: - input._input(event) - # if it triggers, we abort - if input._value.is_finite() and input._value.length() > 0: - # eat the input so it doesn't accidentally trigger something else - get_viewport().set_input_as_handled() - abort_detection() - return - - # check if the event matches the device type we are - # looking for - if not _matches_device_types(event): - return - - # then check if it can be mapped to the desired - # value type - match _value_type: - GUIDEAction.GUIDEActionValueType.BOOL: - _try_detect_bool(event) - GUIDEAction.GUIDEActionValueType.AXIS_1D: - _try_detect_axis_1d(event) - GUIDEAction.GUIDEActionValueType.AXIS_2D: - _try_detect_axis_2d(event) - GUIDEAction.GUIDEActionValueType.AXIS_3D: - _try_detect_axis_3d(event) - - -func _matches_device_types(event:InputEvent) -> bool: - if _device_types.is_empty(): - return true - - if event is InputEventKey: - return _device_types.has(DeviceType.KEYBOARD) - - if event is InputEventMouse: - return _device_types.has(DeviceType.MOUSE) - - if event is InputEventJoypadButton or event is InputEventJoypadMotion: - return _device_types.has(DeviceType.JOY) - - return false - - -func _try_detect_bool(event:InputEvent) -> void: - if event is InputEventKey and event.is_released(): - var result := GUIDEInputKey.new() - result.key = event.physical_keycode - result.shift = event.shift_pressed - result.control = event.ctrl_pressed - result.meta = event.meta_pressed - result.alt = event.alt_pressed - _deliver(result) - return - - if event is InputEventMouseButton and event.is_released(): - var result := GUIDEInputMouseButton.new() - result.button = event.button_index - _deliver(result) - return - - if event is InputEventJoypadButton and event.is_released(): - var result := GUIDEInputJoyButton.new() - result.button = event.button_index - result.joy_index = _find_joy_index(event.device) - _deliver(result) - - if allow_triggers_for_boolean_actions: - # only allow joypad trigger buttons - if not (event is InputEventJoypadMotion): - return - if event.axis != JOY_AXIS_TRIGGER_LEFT and \ - event.axis != JOY_AXIS_TRIGGER_RIGHT: - return - - var result := GUIDEInputJoyAxis1D.new() - result.axis = event.axis - result.joy_index = _find_joy_index(event.device) - _deliver(result) - - - -func _try_detect_axis_1d(event:InputEvent) -> void: - if event is InputEventMouseMotion: - var result := GUIDEInputMouseAxis1D.new() - # Pick the direction in which the mouse was moved more. - if abs(event.relative.x) > abs(event.relative.y): - result.axis = GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.X - else: - result.axis = GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.Y - _deliver(result) - return - - if event is InputEventJoypadMotion: - if abs(event.axis_value) < minimum_axis_amplitude: - return - - var result := GUIDEInputJoyAxis1D.new() - result.axis = event.axis - result.joy_index = _find_joy_index(event.device) - _deliver(result) - - -func _try_detect_axis_2d(event:InputEvent) -> void: - if event is InputEventMouseMotion: - var result := GUIDEInputMouseAxis2D.new() - _deliver(result) - return - - if event is InputEventJoypadMotion: - if event.axis_value < minimum_axis_amplitude: - return - - var result := GUIDEInputJoyAxis2D.new() - match event.axis: - JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y: - result.x = JOY_AXIS_LEFT_X - result.y = JOY_AXIS_LEFT_Y - JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y: - result.x = JOY_AXIS_RIGHT_X - result.y = JOY_AXIS_RIGHT_Y - _: - # not supported for detection - return - result.joy_index = _find_joy_index(event.device) - _deliver(result) - return - - -func _try_detect_axis_3d(event:InputEvent) -> void: - # currently no input for 3D - pass - - -func _find_joy_index(device_id:int) -> int: - if use_joy_index == JoyIndex.ANY: - return -1 - - var pads := Input.get_connected_joypads() - for i in pads.size(): - if pads[i] == device_id: - return i - - return -1 - -func _deliver(input:GUIDEInput) -> void: - _is_detecting = false - # eat the input so it doesn't accidentally trigger something else - get_viewport().set_input_as_handled() - input_detected.emit(input) diff --git a/addons/guide/remapping/guide_input_detector.gd.uid b/addons/guide/remapping/guide_input_detector.gd.uid deleted file mode 100644 index 9b996f5..0000000 --- a/addons/guide/remapping/guide_input_detector.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c5823o2wpiamt diff --git a/addons/guide/remapping/guide_remapper.gd b/addons/guide/remapping/guide_remapper.gd deleted file mode 100644 index 4037819..0000000 --- a/addons/guide/remapping/guide_remapper.gd +++ /dev/null @@ -1,307 +0,0 @@ -class_name GUIDERemapper - -## Emitted when the bound input of an item changes. -signal item_changed(item:ConfigItem, input:GUIDEInput) - -var _remapping_config:GUIDERemappingConfig = GUIDERemappingConfig.new() -var _mapping_contexts:Array[GUIDEMappingContext] = [] - -const GUIDESet = preload("../guide_set.gd") - -## Loads the default bindings as they are currently configured in the mapping contexts and a mapping -## config for editing. Note that the given mapping config will not be modified, so editing can be -## cancelled. Call get_mapping_config to get the modified mapping config. -func initialize(mapping_contexts:Array[GUIDEMappingContext], remapping_config:GUIDERemappingConfig): - _remapping_config = remapping_config.duplicate() if remapping_config != null else GUIDERemappingConfig.new() - - _mapping_contexts.clear() - - for mapping_context in mapping_contexts: - if not is_instance_valid(mapping_context): - push_error("Cannot add null mapping context. Ignoring.") - return - _mapping_contexts.append(mapping_context) - - -## Returns the mapping config with all modifications applied. -func get_mapping_config() -> GUIDERemappingConfig: - return _remapping_config.duplicate() - - -func set_custom_data(key:Variant, value:Variant): - _remapping_config.custom_data[key] = value - - -func get_custom_data(key:Variant, default:Variant = null) -> Variant: - return _remapping_config.custom_data.get(key, default) - - -func remove_custom_data(key:Variant) -> void: - _remapping_config.custom_data.erase(key) - - -## Returns all remappable items. Can be filtered by context, display category or -## action. -func get_remappable_items(context:GUIDEMappingContext = null, - display_category:String = "", - action:GUIDEAction = null) -> Array[ConfigItem]: - - if action != null and not action.is_remappable: - push_warning("Action filter was set but filtered action is not remappable.") - return [] - - - var result:Array[ConfigItem] = [] - for a_context:GUIDEMappingContext in _mapping_contexts: - if context != null and context != a_context: - continue - for action_mapping:GUIDEActionMapping in a_context.mappings: - var mapped_action:GUIDEAction = action_mapping.action - # filter non-remappable actions - if not mapped_action.is_remappable: - continue - - # if action filter is set, only pick mappings for this action - if action != null and action != mapped_action: - continue - - # make config items - for index:int in action_mapping.input_mappings.size(): - var input_mapping:GUIDEInputMapping = action_mapping.input_mappings[index] - if input_mapping.override_action_settings and not input_mapping.is_remappable: - # skip non-remappable items - continue - - # Calculate effective display category - var effective_display_category:String = \ - _get_effective_display_category(mapped_action, input_mapping) - - # if display category filter is set, only pick mappings - # in this category - if display_category.length() > 0 and effective_display_category != display_category: - continue - - var item = ConfigItem.new(a_context, action_mapping.action, index, input_mapping) - item_changed.connect(item._item_changed) - result.append(item) - - return result - - -static func _get_effective_display_category(action:GUIDEAction, input_mapping:GUIDEInputMapping) -> String: - var result:String = "" - if input_mapping.override_action_settings: - result = input_mapping.display_category - - if result.is_empty(): - result = action.display_category - - return result - - -static func _get_effective_display_name(action:GUIDEAction, input_mapping:GUIDEInputMapping) -> String: - var result:String = "" - if input_mapping.override_action_settings: - result = input_mapping.display_name - - if result.is_empty(): - result = action.display_name - - return result - -static func _is_effectively_remappable(action:GUIDEAction, input_mapping:GUIDEInputMapping) -> bool: - return action.is_remappable and ((not input_mapping.override_action_settings) or input_mapping.is_remappable) - - -static func _get_effective_value_type(action:GUIDEAction, input_mapping:GUIDEInputMapping) -> GUIDEAction.GUIDEActionValueType: - if input_mapping.override_action_settings and input_mapping.input != null: - return input_mapping.input._native_value_type() - - return action.action_value_type - - -## Returns a list of all collisions in all contexts when this new input would be applied to the config item. -func get_input_collisions(item:ConfigItem, input:GUIDEInput) -> Array[ConfigItem]: - if not _check_item(item): - return [] - var result:Array[ConfigItem] = [] - - if input == null: - # no item collides with absent input - return result - - # walk over all known contexts and find any mappings. - for context:GUIDEMappingContext in _mapping_contexts: - for action_mapping:GUIDEActionMapping in context.mappings: - for index:int in action_mapping.input_mappings.size(): - var action := action_mapping.action - if context == item.context and action == item.action and index == item.index: - # collisions with self are allowed - continue - - var input_mapping:GUIDEInputMapping = action_mapping.input_mappings[index] - var bound_input:GUIDEInput = input_mapping.input - # check if this is currently overridden - if _remapping_config._has(context, action, index): - bound_input = _remapping_config._get_bound_input_or_null(context, action, index) - - # We have a collision - if bound_input != null and bound_input.is_same_as(input): - var collision_item := ConfigItem.new(context, action, index, input_mapping) - item_changed.connect(collision_item._item_changed) - result.append(collision_item) - - return result - - -## Gets the input currently bound to the action in the given context. Can be null if the input -## is currently not bound. -func get_bound_input_or_null(item:ConfigItem) -> GUIDEInput: - if not _check_item(item): - return null - - # If the remapping config has a binding for this, this binding wins. - if _remapping_config._has(item.context, item.action, item.index): - return _remapping_config._get_bound_input_or_null(item.context, item.action, item.index) - - # otherwise return the default binding for this action in the context - for action_mapping:GUIDEActionMapping in item.context.mappings: - if action_mapping.action == item.action: - if action_mapping.input_mappings.size() > item.index: - return action_mapping.input_mappings[item.index].input - else: - push_error("Action mapping does not have an index of ", item.index , ".") - - return null - -## Sets the bound input to the new value for the given config item. Ignores collisions -## because collision resolution is highly game specific. Use get_input_collisions to find -## potential collisions and then resolve them in a way that suits the game. Note that -## bound input can be set to null, which deliberately unbinds the input. If you want -## to restore the defaults, call restore_default instead. -func set_bound_input(item:ConfigItem, input:GUIDEInput) -> void: - if not _check_item(item): - return - - # first remove any custom binding we have - _remapping_config._clear(item.context, item.action, item.index) - - # Now check if the input is the same as the default - var bound_input:GUIDEInput = get_bound_input_or_null(item) - - if bound_input == null and input == null: - item_changed.emit(item, input) - return # nothing to do - - if bound_input == null: - _remapping_config._bind(item.context, item.action, input, item.index) - item_changed.emit(item, input) - return - - if bound_input != null and input != null and bound_input.is_same_as(input): - item_changed.emit(item, input) - return # nothing to do - - _remapping_config._bind(item.context, item.action, input, item.index) - item_changed.emit(item, input) - - -## Returns the default binding for the given config item. -func get_default_input(item:ConfigItem) -> GUIDEInput: - if not _check_item(item): - return null - - for mapping:GUIDEActionMapping in item.context.mappings: - if mapping.action == item.action: - # _check_item verifies the index exists, so no need to check here. - return mapping.input_mappings[item.index].input - - return null - - -## Restores the default binding for the given config item. Note that this may -## introduce a conflict if other bindings have bound conflicting input. You can -## call get_default_input for the given item to get the default input and then -## call get_input_collisions for that to find out whether you would get a collision. -func restore_default_for(item:ConfigItem) -> void: - if not _check_item(item): - return - - _remapping_config._clear(item.context, item.action, item.index) - item_changed.emit(item, get_bound_input_or_null(item)) - - - -## Verifies that the given item is valid. -func _check_item(item:ConfigItem) -> bool: - if not _mapping_contexts.has(item.context): - push_error("Given context is not known to this mapper. Did you call initialize()?") - return false - - var action_found := false - var size_ok := false - for mapping in item.context.mappings: - if mapping.action == item.action: - action_found = true - if mapping.input_mappings.size() > item.index and item.index >= 0: - size_ok = true - break - - if not action_found: - push_error("Given action does not belong to the given context.") - return false - - if not size_ok: - push_error("Given index does not exist for the given action's input binding.") - - - if not item.action.is_remappable: - push_error("Given action is not remappable.") - return false - - return true - - -class ConfigItem: - ## Emitted when the input to this item has changed. - signal changed(input:GUIDEInput) - - var _input_mapping:GUIDEInputMapping - - ## The display category for this config item - var display_category:String: - get: return GUIDERemapper._get_effective_display_category(action, _input_mapping) - - ## The display name for this config item. - var display_name:String: - get: return GUIDERemapper._get_effective_display_name(action, _input_mapping) - - ## Whether this item is remappable. - var is_remappable:bool: - get: return GUIDERemapper._is_effectively_remappable(action, _input_mapping) - - ## The value type for this config item. - var value_type:GUIDEAction.GUIDEActionValueType: - get: return GUIDERemapper._get_effective_value_type(action, _input_mapping) - - var context:GUIDEMappingContext - var action:GUIDEAction - var index:int - - func _init(context:GUIDEMappingContext, action:GUIDEAction, index:int, input_mapping:GUIDEInputMapping): - self.context = context - self.action = action - self.index = index - _input_mapping = input_mapping - - ## Checks whether this config item is the same as some other - ## e.g. refers to the same input mapping. - func is_same_as(other:ConfigItem) -> bool: - return context == other.context and \ - action == other.action and \ - index == other.index - - func _item_changed(item:ConfigItem, input:GUIDEInput): - if item.is_same_as(self): - changed.emit(input) - diff --git a/addons/guide/remapping/guide_remapper.gd.uid b/addons/guide/remapping/guide_remapper.gd.uid deleted file mode 100644 index de89420..0000000 --- a/addons/guide/remapping/guide_remapper.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ct55sgurb867e diff --git a/addons/guide/remapping/guide_remapping_config.gd b/addons/guide/remapping/guide_remapping_config.gd deleted file mode 100644 index 7bd6453..0000000 --- a/addons/guide/remapping/guide_remapping_config.gd +++ /dev/null @@ -1,85 +0,0 @@ -@icon("res://addons/guide/guide_internal.svg") -## A remapping configuration. This only holds changes to the context mapping, -## so to get the full input map you need to apply this on top of one or more -## mapping contexts. The settings from this config take precedence over the -## settings from the mapping contexts. -class_name GUIDERemappingConfig -extends Resource - -## Dictionary with remapped inputs. Structure is: -## { -## mapping_context : { -## action : { -## index : bound input -## ... -## }, ... -## } -## The bound input can be NULL which means that this was deliberately unbound. -@export var remapped_inputs:Dictionary = {} - -## Dictionary for additional custom data to store (e.g. modifier settings, etc.) -## Note that this data is completely under application control and it's the responsibility -## of the application to ensure that this data is serializable and gets applied at -## the necessary point in time. -@export var custom_data:Dictionary = {} - -## Binds the given input to the given action. Index can be given to have -## alternative bindings for the same action. -func _bind(mapping_context:GUIDEMappingContext, action:GUIDEAction, input:GUIDEInput, index:int = 0) -> void: - if not remapped_inputs.has(mapping_context): - remapped_inputs[mapping_context] = {} - - if not remapped_inputs[mapping_context].has(action): - remapped_inputs[mapping_context][action] = {} - - remapped_inputs[mapping_context][action][index] = input - - -## Unbinds the given input from the given action. This is a deliberate unbind -## which means that the action should not be triggerable by the input anymore. It -## its not the same as _clear. -func _unbind(mapping_context:GUIDEMappingContext, action:GUIDEAction, index:int = 0) -> void: - _bind(mapping_context, action, null, index) - - -## Removes the given input action binding from this configuration. The action will -## now have the default input that it has in the mapping_context. This is not the -## same as _unbind. -func _clear(mapping_context:GUIDEMappingContext, action:GUIDEAction, index:int = 0) -> void: - if not remapped_inputs.has(mapping_context): - return - - if not remapped_inputs[mapping_context].has(action): - return - - remapped_inputs[mapping_context][action].erase(index) - - if remapped_inputs[mapping_context][action].is_empty(): - remapped_inputs[mapping_context].erase(action) - - if remapped_inputs[mapping_context].is_empty(): - remapped_inputs.erase(mapping_context) - - -## Returns the bound input for the given action name and index. Returns null -## if there is matching binding. -func _get_bound_input_or_null(mapping_context:GUIDEMappingContext, action:GUIDEAction, index:int = 0) -> GUIDEInput: - if not remapped_inputs.has(mapping_context): - return null - - if not remapped_inputs[mapping_context].has(action): - return null - - return remapped_inputs[mapping_context][action].get(index, null) - - -## Returns whether or not this mapping has a configuration for the given combination (even if the -## combination is set to null). -func _has(mapping_context:GUIDEMappingContext, action:GUIDEAction, index:int = 0) -> bool: - if not remapped_inputs.has(mapping_context): - return false - - if not remapped_inputs[mapping_context].has(action): - return false - - return remapped_inputs[mapping_context][action].has(index) diff --git a/addons/guide/remapping/guide_remapping_config.gd.uid b/addons/guide/remapping/guide_remapping_config.gd.uid deleted file mode 100644 index 9dd78aa..0000000 --- a/addons/guide/remapping/guide_remapping_config.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bphtynwtc4l1s diff --git a/addons/guide/triggers/guide_trigger.gd b/addons/guide/triggers/guide_trigger.gd deleted file mode 100644 index d158ece..0000000 --- a/addons/guide/triggers/guide_trigger.gd +++ /dev/null @@ -1,65 +0,0 @@ -@tool -@icon("res://addons/guide/triggers/guide_trigger.svg") -class_name GUIDETrigger -extends Resource - -enum GUIDETriggerState { - ## The trigger did not fire. - NONE, - ## The trigger's conditions are partially met - ONGOING, - ## The trigger has fired. - TRIGGERED -} - -enum GUIDETriggerType { - # If there are more than one explicit triggers at least one must trigger - # for the action to trigger. - EXPLICIT = 1, - # All implicit triggers must trigger for the action to trigger. - IMPLICIT = 2, - # All blocking triggers prevent the action from triggering. - BLOCKING = 3 -} - - -@export var actuation_threshold:float = 0.5 -var _last_value:Vector3 - -## Returns the trigger type of this trigger. -func _get_trigger_type() -> GUIDETriggerType: - return GUIDETriggerType.EXPLICIT - - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - return GUIDETriggerState.NONE - - -func _is_actuated(input:Vector3, value_type:GUIDEAction.GUIDEActionValueType) -> bool: - match value_type: - GUIDEAction.GUIDEActionValueType.AXIS_1D, GUIDEAction.GUIDEActionValueType.BOOL: - return _is_axis1d_actuated(input) - GUIDEAction.GUIDEActionValueType.AXIS_2D: - return _is_axis2d_actuated(input) - GUIDEAction.GUIDEActionValueType.AXIS_3D: - return _is_axis3d_actuated(input) - - return false - -## Checks if a 1D input is actuated. -func _is_axis1d_actuated(input:Vector3) -> bool: - return is_finite(input.x) and abs(input.x) > actuation_threshold - -## Checks if a 2D input is actuated. -func _is_axis2d_actuated(input:Vector3) -> bool: - return is_finite(input.x) and is_finite(input.y) and Vector2(input.x, input.y).length_squared() > actuation_threshold * actuation_threshold - -## Checks if a 3D input is actuated. -func _is_axis3d_actuated(input:Vector3) -> bool: - return input.is_finite() and input.length_squared() > actuation_threshold * actuation_threshold - -func _editor_name() -> String: - return "GUIDETrigger" - -func _editor_description() -> String: - return "" diff --git a/addons/guide/triggers/guide_trigger.gd.uid b/addons/guide/triggers/guide_trigger.gd.uid deleted file mode 100644 index 547c597..0000000 --- a/addons/guide/triggers/guide_trigger.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bf0t8choiiqnb diff --git a/addons/guide/triggers/guide_trigger.svg b/addons/guide/triggers/guide_trigger.svg deleted file mode 100644 index 48f8822..0000000 --- a/addons/guide/triggers/guide_trigger.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/addons/guide/triggers/guide_trigger.svg.import b/addons/guide/triggers/guide_trigger.svg.import deleted file mode 100644 index e63657a..0000000 --- a/addons/guide/triggers/guide_trigger.svg.import +++ /dev/null @@ -1,38 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ca1eiagyinhl7" -path="res://.godot/imported/guide_trigger.svg-cd87acbd491929cf49a255f8481b0b63.ctex" -metadata={ -"has_editor_variant": true, -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/triggers/guide_trigger.svg" -dest_files=["res://.godot/imported/guide_trigger.svg-cd87acbd491929cf49a255f8481b0b63.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=0.5 -editor/scale_with_editor_scale=true -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/triggers/guide_trigger_chorded_action.gd b/addons/guide/triggers/guide_trigger_chorded_action.gd deleted file mode 100644 index 2b06f8c..0000000 --- a/addons/guide/triggers/guide_trigger_chorded_action.gd +++ /dev/null @@ -1,28 +0,0 @@ -## Fires, when the given action is currently triggering. This trigger is implicit, -## so it will prevent the action from triggering even if other triggers are successful. -@tool -class_name GUIDETriggerChordedAction -extends GUIDETrigger - -@export var action:GUIDEAction - - -func _get_trigger_type() -> GUIDETriggerType: - return GUIDETriggerType.IMPLICIT - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if action == null: - push_warning("Chorded trigger without action will never trigger.") - return GUIDETriggerState.NONE - - if action.is_triggered(): - return GUIDETriggerState.TRIGGERED - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Chorded Action" - -func _editor_description() -> String: - return "Fires, when the given action is currently triggering. This trigger is implicit,\n" + \ - "so it will prevent the action from triggering even if other triggers are successful." diff --git a/addons/guide/triggers/guide_trigger_chorded_action.gd.uid b/addons/guide/triggers/guide_trigger_chorded_action.gd.uid deleted file mode 100644 index d29f656..0000000 --- a/addons/guide/triggers/guide_trigger_chorded_action.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bm6y7ircbddfs diff --git a/addons/guide/triggers/guide_trigger_combo.gd b/addons/guide/triggers/guide_trigger_combo.gd deleted file mode 100644 index 2464e65..0000000 --- a/addons/guide/triggers/guide_trigger_combo.gd +++ /dev/null @@ -1,117 +0,0 @@ -@tool -class_name GUIDETriggerCombo -extends GUIDETrigger - -enum ActionEventType { - TRIGGERED = 1, - STARTED = 2, - ONGOING = 4, - CANCELLED = 8, - COMPLETED = 16 -} - -## If set to true, the combo trigger will print information -## about state changes to the debug log. -@export var enable_debug_print:bool = false -@export var steps:Array[GUIDETriggerComboStep] = [] -@export var cancellation_actions:Array[GUIDETriggerComboCancelAction] = [] - -var _current_step:int = -1 -var _remaining_time:float = 0 - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if steps.is_empty(): - push_warning("Combo with no steps will never fire.") - return GUIDETriggerState.NONE - - # initial setup - if _current_step == -1: - for step in steps: - step._prepare() - for action in cancellation_actions: - action._prepare() - _reset() - - - var current_action := steps[_current_step].action - if current_action == null: - push_warning("Step ", _current_step , " has no action ", resource_path) - return GUIDETriggerState.NONE - - # check if any of our cancellation actions fired - for action in cancellation_actions: - # if the action is the current action we don't count its firing as cancellation - if action.action == current_action: - continue - - if action._has_fired: - if enable_debug_print: - print("Combo cancelled by action '", action.action._editor_name(), "'.") - _reset() - return GUIDETriggerState.NONE - - # check if any of the steps has fired out of order - for step in steps: - if step.action == current_action: - continue - - if step._has_fired: - if enable_debug_print: - print("Combo out of order step by action '", step.action._editor_name(), "'.") - _reset() - return GUIDETriggerState.NONE - - # check if we took too long (unless we're in the first step) - if _current_step > 0: - _remaining_time -= delta - if _remaining_time <= 0.0: - if enable_debug_print: - print("Step time for step ", _current_step , " exceeded.") - _reset() - return GUIDETriggerState.NONE - - # if the current action was fired, if so advance to the next - if steps[_current_step]._has_fired: - # reset this step, so it will not count as misfired next round - steps[_current_step]._has_fired = false - if _current_step + 1 >= steps.size(): - # we finished the combo - if enable_debug_print: - print("Combo fired.") - _reset() - return GUIDETriggerState.TRIGGERED - - # otherwise, pick the next step - _current_step += 1 - if enable_debug_print: - print("Combo advanced to step " , _current_step, ".") - _remaining_time = steps[_current_step].time_to_actuate - - # Reset all steps and cancellation actions to "not fired" in - # case they were triggered by this action. Otherwise a double-tap - # would immediately fire for both taps once the first is through - for step in steps: - step._has_fired = false - for action in cancellation_actions: - action._has_fired = false - - # and in any case we're still processing. - return GUIDETriggerState.ONGOING - - -func _reset(): - if enable_debug_print: - print("Combo reset.") - _current_step = 0 - _remaining_time = steps[0].time_to_actuate - for step in steps: - step._has_fired = false - for action in cancellation_actions: - action._has_fired = false - -func _editor_name() -> String: - return "Combo" - -func _editor_description() -> String: - return "Fires, when the input exceeds the actuation threshold." - diff --git a/addons/guide/triggers/guide_trigger_combo.gd.uid b/addons/guide/triggers/guide_trigger_combo.gd.uid deleted file mode 100644 index fac3366..0000000 --- a/addons/guide/triggers/guide_trigger_combo.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cec060pvt0o3p diff --git a/addons/guide/triggers/guide_trigger_combo_cancel_action.gd b/addons/guide/triggers/guide_trigger_combo_cancel_action.gd deleted file mode 100644 index 10a0e83..0000000 --- a/addons/guide/triggers/guide_trigger_combo_cancel_action.gd +++ /dev/null @@ -1,27 +0,0 @@ -@icon("res://addons/guide/guide_internal.svg") -class_name GUIDETriggerComboCancelAction -extends Resource - -@export var action:GUIDEAction -@export_flags("Triggered:1", "Started:2", "Ongoing:4", "Cancelled:8","Completed:16") -var completion_events:int = GUIDETriggerCombo.ActionEventType.TRIGGERED - -var _has_fired:bool = false - -func _prepare(): - if completion_events & GUIDETriggerCombo.ActionEventType.TRIGGERED: - action.triggered.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.STARTED: - action.started.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.ONGOING: - action.ongoing.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.CANCELLED: - action.cancelled.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.COMPLETED: - action.completed.connect(_fired) - _has_fired = false - - -func _fired(): - _has_fired = true - diff --git a/addons/guide/triggers/guide_trigger_combo_cancel_action.gd.uid b/addons/guide/triggers/guide_trigger_combo_cancel_action.gd.uid deleted file mode 100644 index 7212f97..0000000 --- a/addons/guide/triggers/guide_trigger_combo_cancel_action.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c8rjdy4hx2y2m diff --git a/addons/guide/triggers/guide_trigger_combo_step.gd b/addons/guide/triggers/guide_trigger_combo_step.gd deleted file mode 100644 index 4e22bf7..0000000 --- a/addons/guide/triggers/guide_trigger_combo_step.gd +++ /dev/null @@ -1,29 +0,0 @@ -@icon("res://addons/guide/guide_internal.svg") -class_name GUIDETriggerComboStep -extends Resource - -@export var action:GUIDEAction -@export_flags("Triggered:1", "Started:2", "Ongoing:4", "Cancelled:8","Completed:16") -var completion_events:int = GUIDETriggerCombo.ActionEventType.TRIGGERED -@export var time_to_actuate:float = 0.5 - - -var _has_fired:bool = false - -func _prepare(): - if completion_events & GUIDETriggerCombo.ActionEventType.TRIGGERED: - action.triggered.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.STARTED: - action.started.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.ONGOING: - action.ongoing.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.CANCELLED: - action.cancelled.connect(_fired) - if completion_events & GUIDETriggerCombo.ActionEventType.COMPLETED: - action.completed.connect(_fired) - _has_fired = false - - -func _fired(): - _has_fired = true - diff --git a/addons/guide/triggers/guide_trigger_combo_step.gd.uid b/addons/guide/triggers/guide_trigger_combo_step.gd.uid deleted file mode 100644 index 02b0562..0000000 --- a/addons/guide/triggers/guide_trigger_combo_step.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://baiohjdhsurxq diff --git a/addons/guide/triggers/guide_trigger_down.gd b/addons/guide/triggers/guide_trigger_down.gd deleted file mode 100644 index 5327d62..0000000 --- a/addons/guide/triggers/guide_trigger_down.gd +++ /dev/null @@ -1,20 +0,0 @@ -## Fires, when the input exceeds the actuation threshold. This is -## the default trigger when no trigger is specified. -@tool -class_name GUIDETriggerDown -extends GUIDETrigger - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - # if the input is actuated, then the trigger is triggered. - if _is_actuated(input, value_type): - return GUIDETriggerState.TRIGGERED - # otherwise, the trigger is not triggered. - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Down" - -func _editor_description() -> String: - return "Fires, when the input exceeds the actuation threshold. This is\n" +\ - "the default trigger when no trigger is specified." diff --git a/addons/guide/triggers/guide_trigger_down.gd.uid b/addons/guide/triggers/guide_trigger_down.gd.uid deleted file mode 100644 index 0017b64..0000000 --- a/addons/guide/triggers/guide_trigger_down.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cxky2hmhu8t3x diff --git a/addons/guide/triggers/guide_trigger_hold.gd b/addons/guide/triggers/guide_trigger_hold.gd deleted file mode 100644 index 8ad5bb2..0000000 --- a/addons/guide/triggers/guide_trigger_hold.gd +++ /dev/null @@ -1,43 +0,0 @@ -@tool -## A trigger that activates when the input is held down for a certain amount of time. -class_name GUIDETriggerHold -extends GUIDETrigger - -## The time for how long the input must be held. -@export var hold_treshold:float = 1.0 -## If true, the trigger will only fire once until the input is released. Otherwise the trigger will fire every frame. -@export var is_one_shot:bool = false - -var _accumulated_time:float = 0 -var _did_shoot:bool = false - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - # if the input is actuated, accumulate time and check if the hold threshold has been reached - if _is_actuated(input, value_type): - _accumulated_time += delta - - if _accumulated_time >= hold_treshold: - # if the trigger is one shot and we already shot, then we will not trigger again. - if is_one_shot and _did_shoot: - return GUIDETriggerState.NONE - else: - # otherwise, we will just trigger. - _did_shoot = true - return GUIDETriggerState.TRIGGERED - else: - # if the hold threshold has not been reached, then the trigger is ongoing. - return GUIDETriggerState.ONGOING - else: - # if the input is not actuated, then the trigger is not triggered and we reset the accumulated time. - # and our one shot flag. - _accumulated_time = 0 - _did_shoot = false - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Hold" - -func _editor_description() -> String: - return "Fires, once the input has remained actuated for hold_threshold seconds.\n" + \ - "My fire once or repeatedly." diff --git a/addons/guide/triggers/guide_trigger_hold.gd.uid b/addons/guide/triggers/guide_trigger_hold.gd.uid deleted file mode 100644 index 0df2e45..0000000 --- a/addons/guide/triggers/guide_trigger_hold.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://brcxarmh6ithc diff --git a/addons/guide/triggers/guide_trigger_pressed.gd b/addons/guide/triggers/guide_trigger_pressed.gd deleted file mode 100644 index 97fd0e1..0000000 --- a/addons/guide/triggers/guide_trigger_pressed.gd +++ /dev/null @@ -1,22 +0,0 @@ -@tool -## A trigger that activates when the input is pushed down. Will only emit a -## trigger event once. Holding the input will not trigger further events. -class_name GUIDETriggerPressed -extends GUIDETrigger - - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if _is_actuated(input, value_type): - if not _is_actuated(_last_value, value_type): - return GUIDETriggerState.TRIGGERED - - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Pressed" - - -func _editor_description() -> String: - return "Fires once, when the input exceeds actuation threshold. Holding the input\n" + \ - "will not fire additional triggers." diff --git a/addons/guide/triggers/guide_trigger_pressed.gd.uid b/addons/guide/triggers/guide_trigger_pressed.gd.uid deleted file mode 100644 index a2c2acc..0000000 --- a/addons/guide/triggers/guide_trigger_pressed.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ccm1vfltgmbe diff --git a/addons/guide/triggers/guide_trigger_pulse.gd b/addons/guide/triggers/guide_trigger_pulse.gd deleted file mode 100644 index 61ee88c..0000000 --- a/addons/guide/triggers/guide_trigger_pulse.gd +++ /dev/null @@ -1,86 +0,0 @@ -@tool -## A trigger that activates when the input is pushed down and then repeatedly sends trigger events at a fixed interval. -## Note: the trigger will be either triggering or ongoing until the input is released. -## Note: at most one pulse will be emitted per frame. -class_name GUIDETriggerPulse -extends GUIDETrigger - -## If true, the trigger will trigger immediately when the input is actuated. Otherwise, the trigger will wait for the initial delay. -@export var trigger_on_start:bool = true -## The delay after the initial actuation before pulsing begins. -@export var initial_delay:float = 0.3: - set(value): - initial_delay = max(0, value) - -## The interval between pulses. Set to 0 to pulse every frame. -@export var pulse_interval:float = 0.1: - set(value): - pulse_interval = max(0, value) - -## Maximum number of pulses. If <= 0, the trigger will pulse indefinitely. -@export var max_pulses:int = 0 - -var _delay_until_next_pulse:float = 0 -var _emitted_pulses:int = 0 - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if _is_actuated(input, value_type): - if not _is_actuated(_last_value, value_type): - # we went from "not actuated" to actuated, pulsing starts - _delay_until_next_pulse = initial_delay - if trigger_on_start: - return GUIDETriggerState.TRIGGERED - else: - return GUIDETriggerState.ONGOING - - # if we already are pulsing and have exceeded the maximum number of pulses, we will not pulse anymore. - if max_pulses > 0 and _emitted_pulses >= max_pulses: - return GUIDETriggerState.NONE - - # subtract the delta from the delay until the next pulse - _delay_until_next_pulse -= delta - - if _delay_until_next_pulse > 0: - # we are still waiting for the next pulse, nothing to do. - return GUIDETriggerState.ONGOING - - # now delta could be larger than our pulse, in which case we loose a few pulses. - # as we can pulse at most once per frame. - - # in case someone sets the pulse interval to 0, we will pulse every frame. - if is_equal_approx(pulse_interval, 0): - _delay_until_next_pulse = 0 - if max_pulses > 0: - _emitted_pulses += 1 - return GUIDETriggerState.TRIGGERED - - # Now add the delay until the next pulse - _delay_until_next_pulse += pulse_interval - - # If the interval is really small, we can potentially have skipped some pulses - if _delay_until_next_pulse <= 0: - # we have skipped some pulses - var skipped_pulses:int = int(-_delay_until_next_pulse / pulse_interval) - _delay_until_next_pulse += skipped_pulses * pulse_interval - if max_pulses > 0: - _emitted_pulses += skipped_pulses - if _emitted_pulses >= max_pulses: - return GUIDETriggerState.NONE - - # Record a pulse and return triggered - if max_pulses > 0: - _emitted_pulses += 1 - return GUIDETriggerState.TRIGGERED - - # if the input is not actuated, then the trigger is not triggered. - _emitted_pulses = 0 - _delay_until_next_pulse = 0 - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Pulse" - - -func _editor_description() -> String: - return "Fires at an interval while the input is actuated." diff --git a/addons/guide/triggers/guide_trigger_pulse.gd.uid b/addons/guide/triggers/guide_trigger_pulse.gd.uid deleted file mode 100644 index ad6f30b..0000000 --- a/addons/guide/triggers/guide_trigger_pulse.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://3pfpsiy0kbh4 diff --git a/addons/guide/triggers/guide_trigger_released.gd b/addons/guide/triggers/guide_trigger_released.gd deleted file mode 100644 index d1509e9..0000000 --- a/addons/guide/triggers/guide_trigger_released.gd +++ /dev/null @@ -1,21 +0,0 @@ -@tool -## A trigger that activates when the input is released down. Will only emit a -## trigger event once. -class_name GUIDETriggerReleased -extends GUIDETrigger - - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if not _is_actuated(input, value_type): - if _is_actuated(_last_value, value_type): - return GUIDETriggerState.TRIGGERED - - return GUIDETriggerState.NONE - - -func _editor_name() -> String: - return "Released" - - -func _editor_description() -> String: - return "Fires once, when the input goes from actuated to not actuated. The opposite of the Pressed trigger." diff --git a/addons/guide/triggers/guide_trigger_released.gd.uid b/addons/guide/triggers/guide_trigger_released.gd.uid deleted file mode 100644 index 40cb93f..0000000 --- a/addons/guide/triggers/guide_trigger_released.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dcei3rp27hbso diff --git a/addons/guide/triggers/guide_trigger_stability.gd b/addons/guide/triggers/guide_trigger_stability.gd deleted file mode 100644 index cfe01f9..0000000 --- a/addons/guide/triggers/guide_trigger_stability.gd +++ /dev/null @@ -1,72 +0,0 @@ -@tool -## Triggers depending on whether the input changes while actuated. This trigger is -## is implicit, so it must succeed for all other triggers to succeed. -class_name GUIDETriggerStability -extends GUIDETrigger - -enum TriggerWhen { - ## Input must be stable - INPUT_IS_STABLE, - ## Input must change - INPUT_CHANGES -} - - -## The maximum amount that the input can change after actuation before it is -## considered "changed". -@export var max_deviation:float = 1 - -## When should the trigger trigger? -@export var trigger_when:TriggerWhen = TriggerWhen.INPUT_IS_STABLE - - -var _initial_value:Vector3 -var _deviated:bool = false - - -func _get_trigger_type() -> GUIDETriggerType: - return GUIDETriggerType.IMPLICIT - - -func _update_state(input:Vector3, delta:float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if _is_actuated(input, value_type): - if _deviated: - if trigger_when == TriggerWhen.INPUT_IS_STABLE: - return GUIDETriggerState.NONE - return GUIDETriggerState.TRIGGERED - - - if not _is_actuated(_last_value, value_type): - # we went from "not actuated" to actuated, start - _initial_value = input - if trigger_when == TriggerWhen.INPUT_IS_STABLE: - return GUIDETriggerState.TRIGGERED - else: - return GUIDETriggerState.ONGOING - - # calculate how far the input is from the initial value - if _initial_value.distance_squared_to(input) > (max_deviation * max_deviation): - _deviated = true - if trigger_when == TriggerWhen.INPUT_IS_STABLE: - return GUIDETriggerState.NONE - return GUIDETriggerState.TRIGGERED - - if trigger_when == TriggerWhen.INPUT_IS_STABLE: - return GUIDETriggerState.TRIGGERED - - return GUIDETriggerState.ONGOING - - # if the input is not actuated - _deviated = false - return GUIDETriggerState.NONE - - - - -func _editor_name() -> String: - return "Stability" - - -func _editor_description() -> String: - return "Triggers depending on whether the input changes while actuated. This trigger\n" +\ - "is implicit, so it must succeed for all other triggers to succeed." diff --git a/addons/guide/triggers/guide_trigger_stability.gd.uid b/addons/guide/triggers/guide_trigger_stability.gd.uid deleted file mode 100644 index af522af..0000000 --- a/addons/guide/triggers/guide_trigger_stability.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cqn05ohpgxhfe diff --git a/addons/guide/triggers/guide_trigger_tap.gd b/addons/guide/triggers/guide_trigger_tap.gd deleted file mode 100644 index a0d0c26..0000000 --- a/addons/guide/triggers/guide_trigger_tap.gd +++ /dev/null @@ -1,48 +0,0 @@ -@tool -## A trigger that activates when the input is tapped and released before the time threshold is reached. -class_name GUIDETriggerTap -extends GUIDETrigger - -## The time threshold for the tap to be considered a tap. -@export var tap_threshold: float = 0.2 - -var _accumulated_time: float = 0 - - -func _update_state(input: Vector3, delta: float, value_type:GUIDEAction.GUIDEActionValueType) -> GUIDETriggerState: - if _is_actuated(input, value_type): - # if the input was actuated before, and the tap threshold has been exceeded, the trigger is locked down - # until the input is released and we can exit out early - if _is_actuated(_last_value, value_type) and _accumulated_time > tap_threshold: - return GUIDETriggerState.NONE - - # accumulate time - _accumulated_time += delta - - if _accumulated_time < tap_threshold: - return GUIDETriggerState.ONGOING - else: - # we have exceeded the tap threshold, so the tap is not triggered. - return GUIDETriggerState.NONE - - else: # not actuated right now - # if the input was actuated before... - if _is_actuated(_last_value, value_type): - # ... and the accumulated time is less than the threshold, then the tap is triggered. - if _accumulated_time < tap_threshold: - _accumulated_time = 0 - return GUIDETriggerState.TRIGGERED - - # Otherwise, the tap is not triggered, but we reset the accumulated time - # so the trigger is now again ready to be triggered. - _accumulated_time = 0 - - # in either case, the trigger is not triggered. - return GUIDETriggerState.NONE - -func _editor_name() -> String: - return "Tap" - - -func _editor_description() -> String: - return "Fires when the input is actuated and released within the given timeframe." diff --git a/addons/guide/triggers/guide_trigger_tap.gd.uid b/addons/guide/triggers/guide_trigger_tap.gd.uid deleted file mode 100644 index b8596ff..0000000 --- a/addons/guide/triggers/guide_trigger_tap.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b8a1e02wrhnlj diff --git a/addons/guide/ui/guide_icon_renderer.gd b/addons/guide/ui/guide_icon_renderer.gd deleted file mode 100644 index 558303e..0000000 --- a/addons/guide/ui/guide_icon_renderer.gd +++ /dev/null @@ -1,30 +0,0 @@ -## Base class for icon renderers. Note that all icon renderers must be tool -## scripts. -@tool -class_name GUIDEIconRenderer -extends Control - -## The priority of this icon renderer. Built-in renderers use priority 0. Built-in -## fallback renderer uses priority 100. The smaller the number the higher the priority. -@export var priority:int = 0 - -## Whether or not this renderer can render an icon for this input. -func supports(input:GUIDEInput) -> bool: - return false - -## Set up the scene so that the given input can be rendered. This will -## only be called for input where `supports` has returned true. -func render(input:GUIDEInput) -> void: - pass - - -## A cache key for the given input. This should be unique for this renderer -## and the given input. The same input should yield the same cache key for -## each renderer. -func cache_key(input:GUIDEInput) -> String: - push_error("Custom renderers must override the cache_key function to ensure proper caching.") - return "i-forgot-the-cache-key" - -func _ready(): - process_mode = Node.PROCESS_MODE_ALWAYS - diff --git a/addons/guide/ui/guide_icon_renderer.gd.uid b/addons/guide/ui/guide_icon_renderer.gd.uid deleted file mode 100644 index 972c0d1..0000000 --- a/addons/guide/ui/guide_icon_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dqbm5cgnglupd diff --git a/addons/guide/ui/guide_input_formatter.gd b/addons/guide/ui/guide_input_formatter.gd deleted file mode 100644 index 1fd670c..0000000 --- a/addons/guide/ui/guide_input_formatter.gd +++ /dev/null @@ -1,358 +0,0 @@ -@tool -## Helper class for formatting GUIDE input for the UI. -class_name GUIDEInputFormatter - -const IconMaker = preload("icon_maker/icon_maker.gd") -const KeyRenderer = preload("renderers/keyboard/key_renderer.tscn") -const MouseRenderer = preload("renderers/mouse/mouse_renderer.tscn") -const TouchRenderer = preload("renderers/touch/touch_renderer.tscn") -const JoyRenderer = preload("renderers/joy/joy_renderer.tscn") -const XboxRenderer = preload("renderers/controllers/xbox/xbox_controller_renderer.tscn") -const PlayStationRenderer = preload("renderers/controllers/playstation/playstation_controller_renderer.tscn") -const SwitchRenderer = preload("renderers/controllers/switch/switch_controller_renderer.tscn") -const ActionRenderer = preload("renderers/misc/action_renderer.tscn") -const FallbackRenderer = preload("renderers/misc/fallback_renderer.tscn") -const DefaultTextProvider = preload("text_providers/default_text_provider.gd") -const XboxTextProvider = preload("text_providers/controllers/xbox/xbox_controller_text_provider.gd") -const PlayStationTextProvider = preload("text_providers/controllers/playstation/playstation_controller_text_provider.gd") -const SwitchTextProvider = preload("text_providers/controllers/switch/switch_controller_text_provider.gd") - -# These are shared across all instances -static var _icon_maker:IconMaker -static var _icon_renderers:Array[GUIDEIconRenderer] = [] -static var _text_providers:Array[GUIDETextProvider] = [] -static var _is_ready:bool = false - -## Separator to separate mixed input. -static var mixed_input_separator:String = ", " -## Separator to separate chorded input. -static var chorded_input_separator:String = " + " -## Separator to separate combo input. -static var combo_input_separator:String = " > " - -# These are per-instance -var _action_resolver:Callable -var _icon_size:int - -static func _ensure_readiness(): - if _is_ready: - return - - # reconnect to an icon maker that might be there - var root = Engine.get_main_loop().root - for child in root.get_children(): - if child is IconMaker: - _icon_maker = child - - if _icon_maker == null: - _icon_maker = preload("icon_maker/icon_maker.tscn").instantiate() - root.add_child.call_deferred(_icon_maker) - - add_icon_renderer(KeyRenderer.instantiate()) - add_icon_renderer(MouseRenderer.instantiate()) - add_icon_renderer(TouchRenderer.instantiate()) - add_icon_renderer(ActionRenderer.instantiate()) - add_icon_renderer(JoyRenderer.instantiate()) - add_icon_renderer(XboxRenderer.instantiate()) - add_icon_renderer(PlayStationRenderer.instantiate()) - add_icon_renderer(SwitchRenderer.instantiate()) - add_icon_renderer(FallbackRenderer.instantiate()) - - add_text_provider(DefaultTextProvider.new()) - add_text_provider(XboxTextProvider.new()) - add_text_provider(PlayStationTextProvider.new()) - add_text_provider(SwitchTextProvider.new()) - - _is_ready = true - - -## This will clean up the rendering infrastructure used for generating -## icons. Note that in a normal game you will have no need to call this -## as the infrastructure is needed throughout the run of your game. -## It might be useful in tests though, to get rid of spurious warnings -## about orphaned nodes. -static func cleanup(): - _is_ready = false - - # free all the nodes to avoid memory leaks - for renderer in _icon_renderers: - renderer.queue_free() - - _icon_renderers.clear() - - _text_providers.clear() - if is_instance_valid(_icon_maker): - _icon_maker.queue_free() - - -func _init(icon_size:int = 32, resolver:Callable = func(action) -> GUIDEActionMapping: return null ): - _icon_size = icon_size - _action_resolver = resolver - - -## Adds an icon renderer for rendering icons. -static func add_icon_renderer(renderer:GUIDEIconRenderer) -> void: - _icon_renderers.append(renderer) - _icon_renderers.sort_custom(func(r1, r2): return r1.priority < r2.priority) - -## Removes an icon renderer. -static func remove_icon_renderer(renderer:GUIDEIconRenderer) -> void: - _icon_renderers.erase(renderer) - -## Adds a text provider for rendering text. -static func add_text_provider(provider:GUIDETextProvider) -> void: - _text_providers.append(provider) - _text_providers.sort_custom(func(r1, r2): return r1.priority < r2.priority) - - -## Removes a text provider -static func remove_text_provider(provider:GUIDETextProvider) -> void: - _text_providers.erase(provider) - - -## Returns an input formatter that can format actions using the currently active inputs. -static func for_active_contexts(icon_size:int = 32) -> GUIDEInputFormatter: - var resolver = func(action:GUIDEAction) -> GUIDEActionMapping: - for mapping in GUIDE._active_action_mappings: - if mapping.action == action: - return mapping - return null - return GUIDEInputFormatter.new(icon_size, resolver) - - -## Returns an input formatter that can format actions using the given context. -static func for_context(context:GUIDEMappingContext, icon_size:int = 32) -> GUIDEInputFormatter: - var resolver:Callable = func(action:GUIDEAction) -> GUIDEActionMapping: - for mapping in context.mappings: - if mapping.action == action: - return mapping - return null - - return GUIDEInputFormatter.new(icon_size, resolver) - - -## Formats the action input as richtext with icons suitable for a RichTextLabel. This function -## is async as icons may need to be rendered in the background which can take a few frames, so -## you will need to await on it. -func action_as_richtext_async(action:GUIDEAction) -> String: - return await _materialized_as_richtext_async(_materialize_action_input(action)) - - -## Formats the action input as plain text which can be used in any UI component. This is a bit -## more light-weight than formatting as icons and returns immediately. -func action_as_text(action:GUIDEAction) -> String: - return _materialized_as_text(_materialize_action_input(action)) - -## Formats the input as richtext with icons suitable for a RichTextLabel. This function -## is async as icons may need to be rendered in the background which can take a few frames, so -## you will need to await on it. -func input_as_richtext_async(input:GUIDEInput, materialize_actions:bool = true) -> String: - return await _materialized_as_richtext_async(_materialize_input(input, materialize_actions)) - - -## Formats the input as plain text which can be used in any UI component. This is a bit -## more light-weight than formatting as icons and returns immediately. -func input_as_text(input:GUIDEInput, materialize_actions:bool = true) -> String: - return _materialized_as_text(_materialize_input(input, materialize_actions)) - - -## Renders materialized input as text. -func _materialized_as_text(input:MaterializedInput) -> String: - _ensure_readiness() - if input is MaterializedSimpleInput: - var text:String = "" - for provider in _text_providers: - if provider.supports(input.input): - text = provider.get_text(input.input) - # first provider wins - break - if text == "": - pass - ## push_warning("No formatter found for input ", input) - return text - - var separator = _separator_for_input(input) - if separator == "" or input.parts.is_empty(): - return "" - - var parts:Array[String] = [] - for part in input.parts: - parts.append(_materialized_as_text(part)) - - return separator.join(parts) - -## Renders materialized input as rich text. -func _materialized_as_richtext_async(input:MaterializedInput) -> String: - _ensure_readiness() - if input is MaterializedSimpleInput: - var icon:Texture2D = null - for renderer in _icon_renderers: - if renderer.supports(input.input): - icon = await _icon_maker.make_icon(input.input, renderer, _icon_size) - # first renderer wins - break - if icon == null: - push_warning("No renderer found for input ", input) - return "" - - return "[img]%s[/img]" % [icon.resource_path] - - - var separator = _separator_for_input(input) - if separator == "" or input.parts.is_empty(): - return "" - - var parts:Array[String] = [] - for part in input.parts: - parts.append(await _materialized_as_richtext_async(part)) - - return separator.join(parts) - - -func _separator_for_input(input:MaterializedInput) -> String: - if input is MaterializedMixedInput: - return mixed_input_separator - elif input is MaterializedComboInput: - return combo_input_separator - elif input is MaterializedChordedInput: - return chorded_input_separator - - push_error("Unknown materialized input type") - return "" - - -## Materializes action input. -func _materialize_action_input(action:GUIDEAction) -> MaterializedInput: - var result := MaterializedMixedInput.new() - if action == null: - push_warning("Trying to get inputs for a null action.") - return result - - # get the mapping for this action - var mapping:GUIDEActionMapping = _action_resolver.call(action) - - # if we have no mapping, well that's it, return an empty mixed input - if mapping == null: - return result - - # collect input mappings - for input_mapping in mapping.input_mappings: - var chorded_actions:Array[MaterializedInput] = [] - var combos:Array[MaterializedInput] = [] - - for trigger in input_mapping.triggers: - # if we have a combo trigger, materialize its input. - if trigger is GUIDETriggerCombo: - var combo := MaterializedComboInput.new() - for step:GUIDETriggerComboStep in trigger.steps: - combo.parts.append(_materialize_action_input(step.action)) - combos.append(combo) - - # if we have a chorded action, materialize its input - if trigger is GUIDETriggerChordedAction: - chorded_actions.append(_materialize_action_input(trigger.action)) - - if not chorded_actions.is_empty(): - # if we have chorded action then the whole mapping is chorded. - var chord := MaterializedChordedInput.new() - for chorded_action in chorded_actions: - chord.parts.append(chorded_action) - for combo in combos: - chord.parts.append(combo) - if combos.is_empty(): - if input_mapping.input != null: - chord.parts.append(_materialize_input(input_mapping.input)) - result.parts.append(chord) - else: - for combo in combos: - result.parts.append(combo) - if combos.is_empty(): - if input_mapping.input != null: - result.parts.append(_materialize_input(input_mapping.input)) - return result - -## Materializes direct input. -func _materialize_input(input:GUIDEInput, materialize_actions:bool = true) -> MaterializedInput: - if input == null: - push_warning("Trying to materialize a null input.") - return MaterializedMixedInput.new() - - # if its an action input, get its parts - if input is GUIDEInputAction: - if materialize_actions: - return _materialize_action_input(input.action) - else: - return MaterializedSimpleInput.new(input) - - # if its a key input, split out the modifiers - if input is GUIDEInputKey: - var chord := MaterializedChordedInput.new() - if input.control: - var ctrl = GUIDEInputKey.new() - ctrl.key = KEY_CTRL - chord.parts.append(MaterializedSimpleInput.new(ctrl)) - if input.alt: - var alt = GUIDEInputKey.new() - alt.key = KEY_ALT - chord.parts.append(MaterializedSimpleInput.new(alt)) - if input.shift: - var shift = GUIDEInputKey.new() - shift.key = KEY_SHIFT - chord.parts.append(MaterializedSimpleInput.new(shift)) - if input.meta: - var meta = GUIDEInputKey.new() - meta.key = KEY_META - chord.parts.append(MaterializedSimpleInput.new(meta)) - - # got no modifiers? - if chord.parts.is_empty(): - return MaterializedSimpleInput.new(input) - - chord.parts.append(MaterializedSimpleInput.new(input)) - return chord - - # everything else is just a simple input - return MaterializedSimpleInput.new(input) - -class MaterializedInput: - pass - -class MaterializedSimpleInput: - extends MaterializedInput - var input:GUIDEInput - - func _init(input:GUIDEInput): - self.input = input - -class MaterializedMixedInput: - extends MaterializedInput - var parts:Array[MaterializedInput] = [] - -class MaterializedChordedInput: - extends MaterializedInput - var parts:Array[MaterializedInput] = [] - -class MaterializedComboInput: - extends MaterializedInput - var parts:Array[MaterializedInput] = [] - - -## Returns the name of the associated joystick/pad of the given input. -## If the input is no joy input or the device name cannot be determined -## returns an empty string. -static func _joy_name_for_input(input:GUIDEInput) -> String: - if not input is GUIDEInputJoyBase: - return "" - - var joypads:Array[int] = Input.get_connected_joypads() - var joy_index = input.joy_index - if joy_index < 0: - # pick the first one - joy_index = 0 - - # We don't have such a controller, so bail out. - if joypads.size() <= joy_index: - return "" - - var id = joypads[joy_index] - return Input.get_joy_name(id) diff --git a/addons/guide/ui/guide_input_formatter.gd.uid b/addons/guide/ui/guide_input_formatter.gd.uid deleted file mode 100644 index 15481aa..0000000 --- a/addons/guide/ui/guide_input_formatter.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cro3lh2xuhjat diff --git a/addons/guide/ui/guide_text_provider.gd b/addons/guide/ui/guide_text_provider.gd deleted file mode 100644 index 2f84075..0000000 --- a/addons/guide/ui/guide_text_provider.gd +++ /dev/null @@ -1,22 +0,0 @@ -## Base class for text providers. A text provider provides a textual representation -## of an input which is displayed to the user. -## scripts. -@tool -class_name GUIDETextProvider - -## The priority of this text provider. The built-in text provider uses priority 0. -## The smaller the number the higher the priority. -@export var priority:int = 0 - -## Whether or not this provider can provide a text for this input. -func supports(input:GUIDEInput) -> bool: - return false - -## Provides the text for the given input. Will only be called when the -## input is supported by this text provider. Note that for key input -## this is not supposed to look at the modifiers. This function will -## be called separately for each modifier. -func get_text(input:GUIDEInput) -> String: - return "not implemented" - - diff --git a/addons/guide/ui/guide_text_provider.gd.uid b/addons/guide/ui/guide_text_provider.gd.uid deleted file mode 100644 index e6e3aa7..0000000 --- a/addons/guide/ui/guide_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://baj7ycjany6t5 diff --git a/addons/guide/ui/icon_maker/icon_maker.gd b/addons/guide/ui/icon_maker/icon_maker.gd deleted file mode 100644 index 1a03a0d..0000000 --- a/addons/guide/ui/icon_maker/icon_maker.gd +++ /dev/null @@ -1,103 +0,0 @@ -@tool -extends Node - -const CACHE_DIR:String = "user://_guide_cache" - -@onready var _sub_viewport:SubViewport = %SubViewport -@onready var _root:Node2D = %Root -@onready var _scene_holder = %SceneHolder - -var _pending_requests:Array[Job] = [] -var _current_request:Job = null -var _fetch_image:bool = false - -func _ready(): - # keep working when game is paused - process_mode = Node.PROCESS_MODE_ALWAYS - # don't needlessly eat performance - if _pending_requests.is_empty(): - set_process(false) - - -func clear_cache(): - var files = DirAccess.get_files_at(CACHE_DIR) - for file in files: - DirAccess.remove_absolute(CACHE_DIR + "/" + file) - -## Makes an icon for the given input and returns a Texture2D with the icon. Icons -## are cached on disk so subsequent calls for the same input will be faster. -func make_icon(input:GUIDEInput, renderer:GUIDEIconRenderer, height_px:int) -> Texture2D: - DirAccess.make_dir_recursive_absolute(CACHE_DIR) - var cache_key = (str(height_px) + renderer.cache_key(input)).sha256_text() - var cache_path = "user://_guide_cache/" + cache_key + ".res" - if ResourceLoader.exists(cache_path): - return ResourceLoader.load(cache_path, "Texture2D") - - var job = Job.new() - job.height = height_px - job.input = input - job.renderer = renderer - _pending_requests.append(job) - set_process(true) - - await job.done - - var image_texture = ImageTexture.create_from_image(job.result) - ResourceSaver.save(image_texture, cache_path) - image_texture.take_over_path(cache_path) - - return image_texture - - - -func _process(delta): - if _current_request == null and _pending_requests.is_empty(): - # nothing more to do.. - set_process(false) - return - - # nothing in progress, so pick the next request - if _current_request == null: - _current_request = _pending_requests.pop_front() - var renderer = _current_request.renderer - _root.add_child(renderer) - - renderer.render(_current_request.input) - await get_tree().process_frame - - var actual_size = renderer.get_rect().size - var scale = float(_current_request.height) / float(actual_size.y) - _root.scale = Vector2.ONE * scale - _sub_viewport.size = actual_size * scale - - _sub_viewport.render_target_update_mode = SubViewport.UPDATE_ALWAYS - - # give the renderer some time to update itself. 3 frames seem - # to work nicely and keep things speedy. - await get_tree().process_frame - await get_tree().process_frame - await get_tree().process_frame - - _fetch_image = true - return - - # fetch the image after the renderer is done - if _fetch_image: - # we're done. make a copy of the viewport texture - var image:Image = _scene_holder.texture.get_image() - _current_request.result = image - _current_request.done.emit() - _current_request = null - # remove the renderer - _root.remove_child(_root.get_child(0)) - _sub_viewport.render_target_update_mode = SubViewport.UPDATE_DISABLED - _fetch_image = false - -class Job: - signal done() - var height:int - var input:GUIDEInput - var renderer:GUIDEIconRenderer - var result:Image - - diff --git a/addons/guide/ui/icon_maker/icon_maker.gd.uid b/addons/guide/ui/icon_maker/icon_maker.gd.uid deleted file mode 100644 index 8d409c9..0000000 --- a/addons/guide/ui/icon_maker/icon_maker.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bcuebbdpuxper diff --git a/addons/guide/ui/icon_maker/icon_maker.tscn b/addons/guide/ui/icon_maker/icon_maker.tscn deleted file mode 100644 index 6e97fcc..0000000 --- a/addons/guide/ui/icon_maker/icon_maker.tscn +++ /dev/null @@ -1,24 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://8thurteeibtu"] - -[ext_resource type="Script" uid="uid://bcuebbdpuxper" path="res://addons/guide/ui/icon_maker/icon_maker.gd" id="1_hdbjk"] - -[sub_resource type="ViewportTexture" id="ViewportTexture_kra7t"] -viewport_path = NodePath("SubViewport") - -[node name="GUIDEIconMaker" type="Node2D"] -script = ExtResource("1_hdbjk") - -[node name="SubViewport" type="SubViewport" parent="."] -unique_name_in_owner = true -transparent_bg = true -gui_disable_input = true -gui_snap_controls_to_pixels = false - -[node name="Root" type="Node2D" parent="SubViewport"] -unique_name_in_owner = true -scale = Vector2(0.1, 0.1) - -[node name="SceneHolder" type="Sprite2D" parent="."] -unique_name_in_owner = true -visible = false -texture = SubResource("ViewportTexture_kra7t") diff --git a/addons/guide/ui/renderers/controllers/controller_renderer.gd b/addons/guide/ui/renderers/controllers/controller_renderer.gd deleted file mode 100644 index 96b6fdc..0000000 --- a/addons/guide/ui/renderers/controllers/controller_renderer.gd +++ /dev/null @@ -1,171 +0,0 @@ -@tool -extends GUIDEIconRenderer - -@export var controller_name_matches:Array[String] = [] -@export var a_button:Texture2D -@export var b_button:Texture2D -@export var x_button:Texture2D -@export var y_button:Texture2D -@export var left_stick:Texture2D -@export var left_stick_click:Texture2D -@export var right_stick:Texture2D -@export var right_stick_click:Texture2D -@export var left_bumper:Texture2D -@export var right_bumper:Texture2D -@export var left_trigger:Texture2D -@export var right_trigger:Texture2D -@export var dpad_up:Texture2D -@export var dpad_left:Texture2D -@export var dpad_right:Texture2D -@export var dpad_down:Texture2D -@export var start:Texture2D -@export var misc1:Texture2D -@export var back:Texture2D - - -@onready var _a_button:TextureRect = %AButton -@onready var _b_button:TextureRect = %BButton -@onready var _x_button:TextureRect = %XButton -@onready var _y_button:TextureRect = %YButton -@onready var _left_stick:TextureRect = %LeftStick -@onready var _left_stick_click:TextureRect = %LeftStickClick -@onready var _right_stick:TextureRect = %RightStick -@onready var _right_stick_click:TextureRect = %RightStickClick -@onready var _left_bumper:Control = %LeftBumper -@onready var _right_bumper:Control = %RightBumper -@onready var _left_trigger:Control = %LeftTrigger -@onready var _right_trigger:TextureRect = %RightTrigger -@onready var _dpad_up:TextureRect = %DpadUp -@onready var _dpad_left:TextureRect = %DpadLeft -@onready var _dpad_right:TextureRect = %DpadRight -@onready var _dpad_down:TextureRect = %DpadDown -@onready var _start:TextureRect = %Start -@onready var _misc1:TextureRect = %Misc1 -@onready var _back:TextureRect = %Back -@onready var _left_right:Control = %LeftRight -@onready var _up_down:Control = %UpDown -@onready var _controls:Control = %Controls -@onready var _directions:Control = %Directions - - -func _ready(): - super() - _a_button.texture = a_button - _b_button.texture = b_button - _x_button.texture = x_button - _y_button.texture = y_button - _left_stick.texture = left_stick - _left_stick_click.texture = left_stick_click - _right_stick.texture = right_stick - _right_stick_click.texture = right_stick_click - _left_bumper.texture = left_bumper - _right_bumper.texture = right_bumper - _left_trigger.texture = left_trigger - _right_trigger.texture = right_trigger - _dpad_up.texture = dpad_up - _dpad_left.texture = dpad_left - _dpad_right.texture = dpad_right - _dpad_down.texture = dpad_down - _start.texture = start - _misc1.texture = misc1 - _back.texture = back - -func supports(input:GUIDEInput) -> bool: - var joy_name = GUIDEInputFormatter._joy_name_for_input(input) - if joy_name == "": - return false - - # Look if the controller name matches one of the supported ones - var haystack = joy_name.to_lower() - for needle in controller_name_matches: - if haystack.contains(needle.to_lower()): - return true - - return false - -func render(input:GUIDEInput) -> void: - for control in _controls.get_children(): - control.visible = false - for direction in _directions.get_children(): - direction.visible = false - _directions.visible = false - - - if input is GUIDEInputJoyAxis1D: - match input.axis: - JOY_AXIS_LEFT_X: - _left_stick.visible = true - _show_left_right() - JOY_AXIS_LEFT_Y: - _left_stick.visible = true - _show_up_down() - JOY_AXIS_RIGHT_X: - _right_stick.visible = true - _show_left_right() - JOY_AXIS_RIGHT_Y: - _right_stick.visible = true - _show_up_down() - JOY_AXIS_TRIGGER_LEFT: - _left_trigger.visible = true - JOY_AXIS_TRIGGER_RIGHT: - _right_trigger.visible = true - - if input is GUIDEInputJoyAxis2D: - # We assume that there is no input mixing horizontal and vertical - # from different sticks into a 2D axis as this would confuse the - # players. - match input.x: - JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y: - _left_stick.visible = true - JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y: - _right_stick.visible = true - - if input is GUIDEInputJoyButton: - match input.button: - JOY_BUTTON_A: - _a_button.visible = true - JOY_BUTTON_B: - _b_button.visible = true - JOY_BUTTON_X: - _x_button.visible = true - JOY_BUTTON_Y: - _y_button.visible = true - JOY_BUTTON_DPAD_LEFT: - _dpad_left.visible = true - JOY_BUTTON_DPAD_RIGHT: - _dpad_right.visible = true - JOY_BUTTON_DPAD_UP: - _dpad_up.visible = true - JOY_BUTTON_DPAD_DOWN: - _dpad_down.visible = true - JOY_BUTTON_LEFT_SHOULDER: - _left_bumper.visible = true - JOY_BUTTON_RIGHT_SHOULDER: - _right_bumper.visible = true - JOY_BUTTON_LEFT_STICK: - _left_stick_click.visible = true - JOY_BUTTON_RIGHT_STICK: - _right_stick_click.visible = true - JOY_BUTTON_RIGHT_STICK: - _right_stick_click.visible = true - JOY_BUTTON_START: - _start.visible = true - JOY_BUTTON_BACK: - _back.visible = true - JOY_BUTTON_MISC1: - _misc1.visible = true - - call("queue_sort") - - -func _show_left_right(): - _directions.visible = true - _left_right.visible = true - -func _show_up_down(): - _directions.visible = true - _up_down.visible = true - - -func cache_key(input:GUIDEInput) -> String: - return "7581f483-bc68-411f-98ad-dc246fd2593a" + input.to_string() + GUIDEInputFormatter._joy_name_for_input(input) diff --git a/addons/guide/ui/renderers/controllers/controller_renderer.gd.uid b/addons/guide/ui/renderers/controllers/controller_renderer.gd.uid deleted file mode 100644 index 3d43398..0000000 --- a/addons/guide/ui/renderers/controllers/controller_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://umdl0q4is1u diff --git a/addons/guide/ui/renderers/controllers/controller_renderer.tscn b/addons/guide/ui/renderers/controllers/controller_renderer.tscn deleted file mode 100644 index c61a52e..0000000 --- a/addons/guide/ui/renderers/controllers/controller_renderer.tscn +++ /dev/null @@ -1,135 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://bsaylcb5ixjxk"] - -[ext_resource type="Script" uid="uid://umdl0q4is1u" path="res://addons/guide/ui/renderers/controllers/controller_renderer.gd" id="1_yt13e"] -[ext_resource type="Texture2D" uid="uid://bmgxqbypegjxh" path="res://addons/guide/ui/renderers/textures/arrow_horizontal.svg" id="2_nv2ob"] -[ext_resource type="Texture2D" uid="uid://bu5nlug6uf03w" path="res://addons/guide/ui/renderers/textures/arrow_vertical.svg" id="3_ejti1"] - -[node name="ControllerRenderer" type="MarginContainer"] -offset_right = 100.0 -offset_bottom = 100.0 -size_flags_horizontal = 0 -script = ExtResource("1_yt13e") -priority = -1 - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_horizontal = 0 - -[node name="Controls" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="AButton" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="BButton" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="XButton" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="YButton" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="LeftStick" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="LeftStickClick" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="RightStick" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="RightStickClick" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="LeftBumper" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="RightBumper" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="LeftTrigger" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="RightTrigger" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="DpadUp" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="DpadLeft" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="DpadRight" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="DpadDown" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="Start" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="Misc1" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="Back" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -stretch_mode = 5 - -[node name="Directions" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="LeftRight" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("2_nv2ob") -stretch_mode = 5 - -[node name="UpDown" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("3_ejti1") -stretch_mode = 5 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png deleted file mode 100644 index 05a89a9bb583d5f7de480f924e2b10e73a48a273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5361 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 P00000NkvXXu0mjf3VuaP diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png.import deleted file mode 100644 index 9aa8906..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://civpcnwgbu5ky" -path="res://.godot/imported/PS5_Circle.png-991ec3d8ff387e8a1997f29928333c68.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png" -dest_files=["res://.godot/imported/PS5_Circle.png-991ec3d8ff387e8a1997f29928333c68.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Cross.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Cross.png deleted file mode 100644 index 395a898da7efa6fbe84f17ba0526540893bf8339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4539 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 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png.import deleted file mode 100644 index ed99363..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ubnurptd6ee2" -path="res://.godot/imported/PS5_Dpad.png-ef26d9f78f150d4ab2b9e6bbe325f986.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad.png" -dest_files=["res://.godot/imported/PS5_Dpad.png-ef26d9f78f150d4ab2b9e6bbe325f986.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png deleted file mode 100644 index a8f893a18836d5c611505722ed92641fb096642d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6180 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 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png.import deleted file mode 100644 index 26ef580..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://vk1vje3280tk" -path="res://.godot/imported/PS5_Dpad_Down.png-ba21ca6e311100c142d2b003152ea1d2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png" -dest_files=["res://.godot/imported/PS5_Dpad_Down.png-ba21ca6e311100c142d2b003152ea1d2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png deleted file mode 100644 index 2bdc0481d3c90d991eeb9203fc289fd1d8308807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5902 zcmV+p7xCzcP)mVRzaE!*--%UE`>4Oq&{kOT;d*9<%0fc4^;%v2?Ksk=R%l?94f5DPp zu+G<=*&VW}$}nT=1;#MNK(G>+B!&dpU<}wYNVe6M)K=g9(7NsJR_o0#QSTH_l?&YJ zzPH_{&pG#;^PDT-C0^nsUgG}^NTY9{7Wn=C355djaU8t>kdeKag~nu=T(H?_d}?Ycy*G1g50()~C=?Q885am4=Z&B7 zJP*Ou2>|Hs?x}0s<>e&+KsxmTk|dRUPAR>}akyX=!B|2de!u@XA+{JH#03C?;6h*j z0StJ&Xl-rX)wwd64Cdz&SbV&IbUFn9pp>R4EsR*fq}dyN0|3Br_6YzkL2zN{rzhbm zYD2BC+j#)M=4Pn|7}46=inos(#oI@YB9(f9TYtTQbUNiC#6AJw-MVjnm(g$y2?m27 z0o;Vs*^1!kFW_)E001p5PIS55a5|lEI-O{7Iu+9;2z8C0PNyMB5;jB;V)17snZ(A1 z2mr|E^9WD=5u%s@AdiQ`;ZJw_Z>$Fv&=4{P0B;>RstTj4%MIV)Ae>I;jz>2WpeTxn z-@c8Nl_VSv2i`hz6kp!F!S1D@0^u4tc@ZuEXmxJ+iro@MIXIn8oEjchf7i_I+OtV( zgcSr*f_jBfC=^gA6!z$Deq30cyi1qb#q|<5Lm|B6bx!Jum5)BuK88!@W?{4@L;~2&{tb&FMgi;a%%r&G|B$G*8 z{=*;Yy2e~XlzV9;8ZHns7zI*IL#|(&#@t*2iNu4l=NQL$=|jpO8lAiX07;F8)MHL& zzxxi0i;K!wkqC0RTus+$=U{WQdub#ZE)X-6YKVD0E0@dR+O=u*_k2E&Xe45Ku5pZ) z8d4E71^~-T%A3m48r2YuM3B$tb;qiiE(SISo0Hu`qhZN71OOyS0?+g6?@dijI&-wP zx{7>0hrYhPl51zbn}yf=s_t6j*j9xl1VSldgkWTOc?sP;O1&eUPQ&eXtLJdV_<^Cl zqXQqF8>?x2JGQA2F#?5wZW4gj5Q3l#cf+oUO{&4p^XPJS z>yBy1)XbHt^IrE177_@(1OVUPpH-vp`0d-eGi){+`uh*mJYs+UffDUtW9IXDe1Csd zH@6kA{k7ySBauja<@LTcF3Ykjm(8ND{{S{OB}kHlo>yK`&$HX@;5Zw^Os3*^-94|M zy}ey`?CzaAs#eT=c?-{~bjKb&e2Bz@9{?!6V}3rNo6{<&%FBvG{(M{}7$M+PMh1nP z;;1bS6jFh}d%Mc^3kE~K2gn%D^9YW!*zG({4G))4deZ3>o<4b^JJulx=1k|kO2}j~2v1%vuC(Z-aCqw1yLtbN7|wC9>b91xSza<6$6o}g> zcd3$~{C@v&jdq|`3V8Hz9+D*C)z@AxapE(#Z)4$+ zV)AbN^@eJyWO>t9>23A=gQYDR?50 z$h`LRQh`LT{f2^GXlZFtBjdJKC-!xAsORKzc@$(BlC-(?Q@iQH=H@0+sg$Zc6o_*& z84Cta&l}HWPTt+!gR>(6_4vTSMl4oO`W_XNxFcNnTTS%Q6h|BF!&Lr0TgXb%rTPPHeUR}rX zN(!$RsugxSkHc@iiGzm@RrR5@KoA6Ub-A&!l0`-z z@(=s9*Jz#mnX>`arrYgXJtOIKT5Z~?=EQ@+P?S0D*WdUF-gy#RpTSKM$3`V_=&VR_{Rk}F$z zJy8^qPNzXB1%Mcl$+*_9lv{ZjvG{laf4Q#s5Tl(g#yJ-W!8p(Jc*i%W8)yIiUibzF zx1|+I)6W*gsHv%0m%h<1H2(L}e-}ds{qoyjvTQCu*4+%x?;Q`KyQ>q;O%5zRO+uDs z)fpy}Nl;2hC@04wkw1^HY(O|1{xlF69U%ncU*5a{F_XdDM~>>o%w#h7Dn0`MpcE5Y zVfg+2Q{}bwPSM`h3h#ge3yVw0er3Ha9n2 zGNG|Z=R z1i__q-W?qRP7M#22t$(cm`gm^wlDyc&|0;YhrLAFd>2q9+sko3UNYEbv+0DwaU9%k zH(FZQ5}RJs3MCw#{DkA+k!3nYDZRjcWEmsj@Z=}#Jk7Ee0|Q>1842i|w|14rkWQyC zmq^si6RroWW4P?++FvM?gc;M2dd*cLF^|ODJOchRbzR3`v)S^nO< zVYl0{zP|3Fluk@WuBAo;r#}OLVlL>j;!g?u{?IvqOgJ1oUVr1T>TlSR*34gIv)Pgi zaydjJVR*b=9ZS+|yyoVun!X?iSXoKJ$2KXEn8$B__ZepIeZSM8bYLcof#-P;LI4mK z<>aa*0YYqJEFG?0Ntu}_0C@6bv1ZLMVs>^Gzx(Zf)kN~HhHbBDbGaO@UB9vGg3!Wd zv!SikiS>-KtmJtf`FtMQVp%y*N?n8y-NSEbaheKaF7aT;{(@=C;lqb<>hy34!Mj#$ zTSJVJYHDXk(L}g_6~+l zoY;{tfL-t*O-)T0KJ}0I@Pl8Xt7~8N3u;86P{91cQ&mIO*4BzC6`HE0EF6taUZIqx zBuTDlIu*Raq3pb**NMYlRUEj{YmhDOp?NScJgCapaPcs#g$+ zOnwZ=;{fpG%^SFXZ&p1&@!$u{+`e7fvDMs+gNFvt*4DP|zpGMjV>#xf-ege{qlD^& zkj>@GmTY$ec}Y?;y@2vEtgfyio6WLQ#t+qP4XZ3y&URC7HyDlP7f+ufLiBz)kr5p;RL+R(6zB4;%Y2v zS`%q*Zbox+a|u_N!C07L|F*U1&(}WJt>yTpj(K0TgzN5dp}VX8zKm)xRtwYVw5Ehh zFNOT?=?DqhjWXYQ`)EmF$_Nd!!*qj7#%2MO5-uZ801Ef(=&@tFQcKrj_Pg(JZ}z*2 zCEOApLV-B2B~4Mx8c*2~@{)uH^N&?w$g+&3r6p}WeZnY=P$(oYVGIm-b&0|=BYu2v zZVVrs8^f6qKRP-TlQZXAkBn~0UNxpnOkEW(3h#OgT)2~`#qyrTSvdZPs(t&ch9G*Xa z&T8m@!Cx>GYv3+-caLhOT3VbXi9$h8>Kly9duAkntFZ{u>6D97Isrf@=tyMp<6tlt z1GtHFI)%$$e2$-;dQV*%UyVgo`cH?T{97;mM~jseMIf5q_!5DbnXHchOgJ14HE=ST zt!y^8MU>OD#1vQE4PEHmezVD7Ae-#OW80b0#R7+*%Yw5R8j^5vjhMp=w|czGE~yv6r*h& z^~a3gYlQXzEH5qL>J?>E8Z)*apl721N@m%}NZAc&sicHZmyvK?hHO3kp8&>LZM&X= zm62p!fpk4bDLK!oe?};zXC;b#=lHvL<0pp!D1PIt-*0wF39dw=Dt+_*z1iZ*3y@`u zlxu_b`$OjlAs3A?PC1fwJ)GZsKF>^Okr6Xl(z#W(9f8<4<^bZd*=%TUZ`b({)`qa% zwgdtalQ)|#nrQ`~RQmuf&YU>&8|7-?bH&1tS#QYo>1i`gZ3>WmMxrxAk$8PxDX(s? z4Z+xskP$QZ_HTC~iWyK!Qyd3R&Fu()%7TvprO|K|#FT-z-?$SDj?Mt^Y5j)X&f~1# zU*br$4LfGtQ=%y1N;HbiO-c8L0*HshlQnNGUanE6-fwWA6mvjfq}ENi*uol5?s5wKJjF2^Z3s@}eSRTv!|0*)R# zraP}1JLJ*Bhg#Ac0O07cV`|Xo@p#eO*RPw?DzJ<|ib+Es01TZ_oVeZ2mk^&NDUYRR z&#I2M^z50g2*mTsSd6H~<^bT+W`-LL%Lqi9S7HI#;WytbX$g3|uuxONQV`7hr8Wm#U8nTFK+9lLu4O9%wTI6$i*)xHs@ufHF;YtvdHor<9$J?Xj9 zH}+`ew1kFO#ANAXkZOH+4E{i{Tg5uDNW%qU7K0f3 zG_u+9`KzX;CY(Bbx~i!%j-j2yO0h`8ow`{JQjdlJN?U-t%UmmyylQ?xm4vxP}lS#{h2p`}_AW;PJxYaNz0FC%6)gqRZ`8 z3CtaWuV%C{uk)7(pAVF7`VOR|hPQOtP0j?ds7-@9-) z9N5?pRUQ?Cc7MfMq1}hkhN48^?>N9tjo*AE(_6fsIk%t|y;z=8rXgYs<&oR3oCt2cO~6mddmT$bgy kRkYwGUg9NQ;_n3i2lR$N`N8Ekvj6}907*qoM6N<$f>6dZ{{R30 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png.import deleted file mode 100644 index 9a31227..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bkpw61ctv0fbg" -path="res://.godot/imported/PS5_Dpad_Left.png-bd78cf7c0092facc48bbf8fd7816f7a2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png" -dest_files=["res://.godot/imported/PS5_Dpad_Left.png-bd78cf7c0092facc48bbf8fd7816f7a2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png deleted file mode 100644 index b7cd56832ce2f613aae03e5946f261a33b318573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5943 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 F{|~8VJ3RmZ diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png.import deleted file mode 100644 index 257b99c..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dybnayy8y7rxe" -path="res://.godot/imported/PS5_Dpad_Right.png-064b9c5c42d22a9c2be3902ca2e33638.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png" -dest_files=["res://.godot/imported/PS5_Dpad_Right.png-064b9c5c42d22a9c2be3902ca2e33638.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png deleted file mode 100644 index 99180d27e4f4623b956ddade2b867baecf0b5768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5979 zcmWld1yEF97r-AS3nDDA(y8Pzkxf<9Bi@z~>7T|33u^qz4&s$GfJcco^$foIK^buW~EZ4IyDU8BxE zq-MGznYbX-{%?N%>#0?l!2%J-v{zlvN(7b6>so5VryY3?ECzj!OH8@_= zM$@%Xi(P`l*Wk;HgXYENTz?>ERSJ~<79+-5@y6lMe%=4v~(7~ zB7+3qV)RxGf`>f@B4T1Hz=+Q{s7e^%37R$s=3n?xP|&2e@Or3KTz<8mKVg z%goFi85<)k9}g-)uOA0~{^JbF+VRB-DszcjZCI#~`C$Hlnh42BveaN+>E!BasHWVw zBuNgyHGk)9npc`MG&JND77`V3KlAaSz6e<`gQpYz{VAUrUQ%)e$sk_{V(t9g^GwOn zvG{k(w{gRBxv zX*50%ej#amHO}6|*vop=-XHJ>7ZzmHHXRQ8zY2-yaD{%hlRI5$M1F zJkFLiydrperKvkvvTK8`ZyKXUb9F-+<=cF$`EBgc_k5aZbIh5sq~PqXoIk--$GyP1 zx;PpCc06G2zh`*3e`>~)^wZFZ_dx{*7`l9OWZg7>glNP@zTNPavhQF|8UAkTQ5K-+Ft$%Bvbzk)kf&-xmA-GTxqLVdhT=f0>M}c5X7(w{)?Rr=wziNHNSES(ZdO>WZ-m2@0C2 zu~J6b32Q(ivNi)xPMD(Sm-WMFdzh$R6LwpW_uDnzg)#7o%j)p7G%=#;CO%;B@=8ld z+}zv%Ait4bPF=dZ;_=S`bF%)2(*Yjt?qx;1I}5slySR8u4vZD2)+GUbWs$s+XJqsA zlCSjlWAXI>7e`_~zCoycqjow}+C?P}fsoI=#R4t-5IwSXDYD{vw@I}%Zz&FH;YYPo zUpGXouK9`YX;NjBsF0~4D!^;^G&wP!=494s}8Fp7Th4teJkH_JLc2L)`0%wZ7+7x>Z(2hCr6UAOsiG7K(XN0Q~(`y%?=5 zCQKeVbt$d#=v5lmaC$xwKo%Ie9rsQrOL(H6HHZ=fGWx2Ud`&0L#$t=VA9;r z9f~6=iCpaSP|GkOZcp@($dUEs@l99Pm4LrSM5EBqISM9J3_uJ<*+S-)*T3q-qw-?I> zA5G=42>=XPxS7rfVS7MPUHz5qCxiIx6|Soe?l`UIK9!mevAUqLhDZZOfVac~n;72jrMaTg+eVw3iZ|PuG8;C&kx4f9SQ1cQ+CAzB@|leP?IlD>yn(3`&_nv&AHa+?!YD`XE;Ffuw*<{j}%LP#OhR1_3{S{uKO* z>dD#ODqOIdJR6)E04rJQdO3%tMxh8OT4elbTDH%XNm`stjKVss{|5DjQM^NeW*z6- zW_#rtADs6kxo0!d^RynibY4cCV$YhyyE+FNreBbbR$%FU4d0KG0Ff>kv!Amfo03T$ za2F>E*ZS;##m2;_{jlHZH!L3Eg+Q=a_FUR!@6#XKzAFygAU~*su7e9u%kbYl&c5CE z{rmoI=f8;wnt&X^L8ZBc1rz`7&zWS2y*_HmePYO^l|U9+wYJO$H?GCReF zisD&#fIX%T>pKvj^k;4^{{8#kUCQ$xBI_%^l+?OpYYxwQX3Juj&XScT6?j$zg#T-( zdKuI;BO^UBnvdT5+S-Z;kWJ6}*fU{5rRT^P^89e=FgG;LPI#G+9|2|(;bYV5oFoc| z$XwOC(Oun_mtU#O@z(U7Q?cG0HEnHKvJ>hld9KiIF8+s$$gXi&3u^OmLOd4E&H@F^WH$tdbUDE&eBIMAA35kIg!zIOjW=-Ffqc2ET z7CrJ@v;)>d3lFp>dUpb7Yt$PiUF5EHie8AnapEwb@m>zJQjQyT_z{f~yu7@`15%UA zT@0>sn&sEH(FAl{aB4!kNCWSTjVy~W>{HgdW1~Uylhf1Ht`gH)+IX@X=rFHKiFLE#Lt2@_L)Hw9%OAp+BIh081Jk^nu$w3pER$Cr(c>`c6nwo1V{L0O~;oIemGZ^1>jOj+z?Yv57 z?dwmbqEXdIHP>?BcGiP2IZ21J29}V@T#eb^ce_5lL=zH-+*da&lrJCaC0@vjQ(;+o z9DYqeLrZ&(zM0wKH8C|Ecw5gC|9v~vnp+X#MfGgjM>_&KXir0KTKze`h#PofX;~U% zw^jS)ORT~Tjv`it`b>WOg);iDOpqHo_ow@Ad{4VmbJs6R~teUUq*fYLRZ&M zS-2qS)sz;?o-x;W{Ck%g4g}q5e$5 z+`ZIfD5B66kQ(8RD{x2!srJj|70xd3Lh*6N5CAz7sL^4%E+PrT-p$Xo(CC z4j!ItCdGfte8?x_UBJC^{IvNUcJT3`g!Q6*^%E_l`iD$pdh>ayoGPepaE=IAJNC}F zqy%d}lgvVM^%u+FV3~#BL#khi@l5Gtd0miE8TawL;%3_0OOIQt6kCy_IXpN^qU#w& z!6>BtM(w}|xfWm|#+?&P{#zS9c^ZSLaN=*c^GL}wv1Z;0mS<(2~5T^v1^ zPAB~>j}BtALMsp$0}SN56I+tv<3rT2FJ2#Fr%m6DAko)f89Ly0ysDlEwMsW_@12;$ z^~~|RF51C`PV+BAK=Oi-s@xZQ$Ybl^P$Yj6)H{cuM>xZ^=<$K)`?sxY< z;@8R)ZZ-2#MjGUr5M#b7mjmNP$BM^h9GS0?bbcS}rhL89ot&H$bITXs#kcw&IQ7M< zv406<2NV&j1ZP>js~u~nZ&kS;ki1ony2uZ1XNYLjlKv}VF{~d3ib>~(bGqW zR&oB=WW0L(Hsw>(r8MN_o7Fxsbh>K02?KG2;D!TkDXiZyPWGDR?(wnx`7{_&&wH;% z=H|W~UX7opeI-Y;mgi^Ht)=z9bxCB;&~e!?uOe-HB~P|EG6Koj9E=6lpyF>%@Q=c- zJ}d`TRLSz>AQH;`p>LQ&jRh88e$Tf}0F)XZR!oOxXJlM}z>BxU*>UNOS34#B>kGDP z+0*6%$Nr*wm5zaB0`rES=5A0Ti!x`*OYS)P<#R3DbFI)qalDGeQ$DqiC@dFH?oe71 z?wy&XjSIbLR~HjkO9+sC+cIrtPpAHga=b+GN%GOEOJVM}4EDpLQdK&alM|L6J{g&R zJA*_(Hs_g`h{$nL?<$E;HrgA#{yG@FP7)?BO7@|gb=#LzLRsmDT+&Z9sg0tAS^X%t z-`nS!W1&P&S9N2(fx3GoI_Q<-1QZZ({=1{op?-NirPveXgC8+Wgm2Cdmj7FkTmSzN zgq$yh;hwfQ^snNw5#3a57)k5E(*~-nGQzYvb|q(9Bf(|684<;WF1c0t@@v17DX(l6 zI?1v9r+L2E77KFL+x2h&5D_tCAdi2cK^MUmBGVTZL1|D5b0>@r^Lf~ zYWMFZ>}AsE#qR5BYBA4FwOpH#CM<*l%Wcatzo_NDi zu=@``n3KbvTK6t0+!~3c7UC3bigZxinrplWPd{HjooRHekRyJ!NUa0 zGzf0+3>`_H!W2MMg&6ebeCvlK=DX^~&7Sf#3fexJ&xN&517RO)e4{7#W2T zI^&wo_c2hmXuw^zC^;N*71jg)McycTYrp= z1vL9#Pm96H`C6%A3-o~Kx@WBI&^y#@9checjS=bz{)Ax>Iv6Zep6KN`wMDC|0Bu zG(FJ zP_Gsf|803bf9)kq!S(SR?&2p6@MWBR%q8u7_B6)#=9SnB_W{>S6D37||HKXdrn13J z)nRH_1UVqLVbSm zrYdH}U5J7~NPHzjr>FqF45nv$6hUK>sXC!wJ=bYOOP!~bl-l_GpYnI3GrUVDoe>+~ z+Qtxxta7~d&c(!cV8x^BJL>+AtBdsNJ4G?Ds2F#Ejww0e%lN>L(6fr4v2UJ{?P?#xz5>0`{#hH>;Gl6^gibPttl7j2tr8SQ zJn2whY5+g`B^qWTM2V=w+uP=`7u^0-g$tPC`P|b z7v|!^n@GLSHR9}hk1uPyXGfesM;T&BU$?Dw=&{H3sN{EJ#S0TtG|4UYP7xeqPg#0H z99l49i%gL;tT4>&HxdN! z&Zj9EbU@dMk1-a(KXb$jBtUOc(dq0emg43040z}D5mE~;bX`~xe2;UM&h}g4I&P0X zS{tYG(UH9*>6LR8Ib%gDm zL*KdhFeVsm&dkm}k`!&&Y^)%!zhEnZs~kodWz9~Fj=ub^C z4W-|a9$I@dHebSc0dI_lD(c-T^$=`4cI&D`~e{enP8`u)wH~c z8BVS3iP2(n=lkIHwkrozJf4x{`&Gs6q!d#A%KeZry2$eQZrZ+LZ*A$%D|m}N%X z7dBGtx_8{xtj6_qg)Kg^PfQajnl|GVdf%#Z_do)?_r23AhB4od8XuU{(Gt$6NO#H@ zT>onvkk5UnlDfKc>&T~rNHug+$H@vhZcEROOi!b?cCNt2MEA2@4Nmb|SOT{oyU;*g z8L^HMq*J4o!C~S^wi?=Pv^ma3^VAd~RHxm#UNlBfguvwgbMGECPu*-(Hd!*%LOLWT z;d63yLyi`OmgiEb{40ND@sk$YY9@C%&=X;COrYFy{8NxhfN~ntPi=xtb3jv7Po)ZJ G6Zt=W5@`DX diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png.import deleted file mode 100644 index bfa2c71..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bvbd876sy2430" -path="res://.godot/imported/PS5_Dpad_Up.png-b8fc9319fe2231915e5e8e21174b1c1c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png" -dest_files=["res://.godot/imported/PS5_Dpad_Up.png-b8fc9319fe2231915e5e8e21174b1c1c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png deleted file mode 100644 index 07e505a76a04f772c10f5f14d825255890a99734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2758 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 M07*qoM6N<$f+)l^Q2+n{ diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png.import deleted file mode 100644 index dd46c43..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cqgpumb0tf5xr" -path="res://.godot/imported/PS5_L1.png-daedbc1549c79d92cbcf68661193a3b8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png" -dest_files=["res://.godot/imported/PS5_L1.png-daedbc1549c79d92cbcf68661193a3b8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L2.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_L2.png deleted file mode 100644 index 05f3dd27dd0e6a8251dab28818ddcb6f1b3154b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2968 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 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png.import deleted file mode 100644 index 55a4f30..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c3qet180o0dn6" -path="res://.godot/imported/PS5_Left_Stick.png-472622a0a1752a811747d3e6c02f5438.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png" -dest_files=["res://.godot/imported/PS5_Left_Stick.png-472622a0a1752a811747d3e6c02f5438.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png deleted file mode 100644 index 66e5271ff5c62f11369b48b40bb2dc8675ac7128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3046 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 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png.import deleted file mode 100644 index 84fe65f..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c0b1sdadfcnbk" -path="res://.godot/imported/PS5_Left_Stick_Click.png-f837f37222a7c945cd4b672d0d7e3ba1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png" -dest_files=["res://.godot/imported/PS5_Left_Stick_Click.png-f837f37222a7c945cd4b672d0d7e3ba1.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png deleted file mode 100644 index bb0f331314f4ea94f8465c33c94dad93f075c6dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1654 zcmV-+28sEJP)x)bvEhu8k2l@V`JlkfKV3Z zmvL=(AyoyO>gnm}*H;Cyxw*L`UiQUi1A|f&J(ZJ_lW#9xLj;Un|A2roSmcf4d-ZY= zLMbYf$vE&^Uk?utc9axmM2L(XKQdO8p=O#)6!z{bX?AvYs*S$8y9)|B69v8dIzVlT z7~S-x1%$e&#l^*%DBh*MHf?5xiGAHI&FXYI-R=JVURCT5#Xd`?3)8A0OG`_iR4^76 z7Fa%?PdyA0c|cx}Cw*7F@QyrumIx^n3hzZ4I#fl*>gwuKijqa?YnnxAN+n8N?RHxk zDPmvAb=`j_8W;-0D+=OlWo4xY#@yT-TV7sHU9?b|y12Mtx3{-XwUoSRHk*{HR9^l* zQG|$M-jWM>Hk<8k;b>W3Ur%+)YBU->QE_>B+1=yQ*^MmN1Xra_a zP|_@dL8&T;3QAoBNg-=k$2H1DOMZh=Q#e&oiXteY-%d3U@_@X!y1IHwUF21e$|O(6 z10rab=s;n~;|noROg)US7qV9}5b|`QqCQF#q5$%InivRRyfF|N08Jqb8jGY&^7P3# z7wgQ312}SClm|R?P`Td*5Vco7j5sp{NDBTwW_~{e33Wgk&c&Zxm|#UQPzYPg`Zx_(SYt=jZ33;ETKh=1b))b8Hf&IINj(}nz79!1L)H2BX<*u3TL6Lt4SAnFQ?ZLhfr)&M$E(>++gA`Y;&d%&Q`0O{ni~ zW0y0dL}{n*>Nc1aF$I(WWC9(#tq;Lf&AHe9{$I=9`X%>`r9|;dS%&u%0hF4&2hR~u zb^zp!l$|rGBJtM-LE(&50pt~x&*#sw3x+)i%Dcka-ZVprWtWv^D6wsOhe0_yZGD_p zD6t-g41!{C?|@q4X@nB{fuRb@V{tdC(+DLIBXxqZU0nNBHa-kR{Q3z%URkPW2%u~i z*8VV9{~BZfc|#~$h4sIZ4kgw=j@%z#j_ZxTX}UdlZ&2H-1BIq#j@`yTw8izDV|zd3 zae|SRsja$a9zCDZT|MrPMQDC&PXMFI!?Fa05fpl*-+Q5XRf8F&0BjuR$YL8I+&8Y< z>aw2?+m9L`4vUoV%rE!!r|=OWBNT$76)8zlV*g_dLE)ZP6NZa@yH>H$Rsfsmk8-#tRvU79x!Xi5e^G!=chPxz!B z;rWXtswya`ArVDauW9hgm?>`9Sford001(Ex+zMe9l3~4Gn7QET%`0R7xABG;90`` z&=bL?9o`+R>r$n!IIe0;M3?0kU!`%!F8vo^!dp9hKj`S>nvw+Z$`20b~NH(~f@Eg^~KR4-i@TH9rR+ql`5& z`>**q2*M+600IFBfIt8OAP|562m~N$*Z%?x00OyaVBQ$>MF0Q*07*qoM6N<$f<55w Avj6}9 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png.import deleted file mode 100644 index 6199d2d..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://eljpu2rrb3k4" -path="res://.godot/imported/PS5_Microphone.png-3a2db423599523aa5c1b828df7d224bc.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png" -dest_files=["res://.godot/imported/PS5_Microphone.png-3a2db423599523aa5c1b828df7d224bc.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png deleted file mode 100644 index 3e56fe2ecab9b729eced41a914b5eeabbc03b891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2858 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 IM6N<$g6yDl&Hw-a diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png.import deleted file mode 100644 index b464245..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bkttgyeuecjw" -path="res://.godot/imported/PS5_Options.png-4bd9928e2e3aca6fb17663799d26e7a5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png" -dest_files=["res://.godot/imported/PS5_Options.png-4bd9928e2e3aca6fb17663799d26e7a5.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png deleted file mode 100644 index ca28364afc5b0b8f746300ed67b631d0b6e62926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3224 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 KMNUMnLSTXwA3gj4 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png.import deleted file mode 100644 index cb2f529..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://byed3fsjbp82u" -path="res://.godot/imported/PS5_Options_Alt.png-4b64997ac577d658c383b1e727319cf5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options_Alt.png" -dest_files=["res://.godot/imported/PS5_Options_Alt.png-4b64997ac577d658c383b1e727319cf5.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_R1.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_R1.png deleted file mode 100644 index 2cff97af0ed49642c61eda14a04937624cc28a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2947 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

TY7&WwOPEP)jQZkjVSC~v~c>lv| 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 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png.import deleted file mode 100644 index 025c11c..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bxxkjsl2u83mp" -path="res://.godot/imported/PS5_Touch_Pad.png-b3baca99700ac1cd505b545f684de924.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Touch_Pad.png" -dest_files=["res://.godot/imported/PS5_Touch_Pad.png-b3baca99700ac1cd505b545f684de924.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png deleted file mode 100644 index 4950d17a6d7b923450f577adc103af8d2a3037b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4722 zcmV-&5{>PNP)Nklbn*SBhfRK1dLb3#U0E#Uou@y&S-#AVt(aY!D-Szzou4gy1if1=V&wrrV&2BWi zSvs@2bD~!g+c_TlIEv+muw#Q>U`a@(g}^|Iu2~?Oet~FcBxZ)+IX+fZKdQPuzOSmj z`W`?NO*GL&6HPSHL=#Ok(L@vfuR+eb16naXJ?+fp$mL4zU0nR($9nfiZ!|PPCMG66 zGZ;+cl;ScW)CZ99>fS_`C?#P+u*~yEON)z(zvbJhf+EN@H1ygm@^^B^z^io=gABqxOLLK?yhch9shH> zTri(N2syIZEZBG)ySqEs-Q7WKcjv@sD5ZA{2F%RO&9Ryq(*dVWkg2H~-%(2MloL&Z zgMN6tUUe?c=BREumji{D?r!df_lR4Q5GE_#F7;e{vD$FAS?b*V1A`r`wJGfdRPP?wb3-aU5c?7~Vyrco&W0 z=!jFj@Aa!7UcPt+j#InN-u8luVZg7rnr{PX7S5|d#VcnO6knP!rVXBt6y~?NS+vE39|WuVHkXLei)y8 zdQtIAU;hAxM@C>PA&NLIi*!1JOePJE<4XL3rEM_`1B=B9tJMOAQJ2<&2w;0hY7GOi=z_=a1u-m1Eh(hlyEX@6L zO`TGK?gUYrGn`HrzWnNM(c0Q7)R{~SE{~0&x3^dE4wjAM{r)~OnT+1u0{~bo7PNPC z!0A-3yo0N&cokfg)FqQi{Br+im5rwUbBa;Vmz5&MH{+9NX=xGaIy>FCcKtd!Iy!{9 zTrP)rJdVwcbtDoAQxrgAfDEW-|;10|3D7cB9kn#$GHYO#EiE z8GZc&*nSs9CX*JuiQEhX{NYe2q?@u*Hx8Man)(Z1m=)JC41=i~f0S^>h2aqlkBms3 zO{J2EMx!;0rD|bf81(k`!e%S>ljArnKY1dVTaw8n=70FBLVWQ&#`Rhf>%t)u6F0sk zgxnR^73K_w!y(jN{(KC9p&_B1%jK}YzlV3xD0rUNqbpT`=Xo5kc`b>>VuitAfYE4# zx34e1mpRB^Gn>sg*VBv5jdfXn=}o`i_aC89sAg4*q1G2nPft4up?Br=@(KLH@Cf<` z2841hm&3;T8unt!W#?I8FBZeb`kF*sem*va&d%Zz+~sP=H{+9%=LjLLV=Y9@sF_3j z{=i=eArcw%H&?$vPfu~O?&}}G#Y>ljayp&HS~!HGqoZ1z*B$w}>^)jr+h8)8002F` zz1Z2_5f&L%YYS|xt%ydp#E0dOikVR4j_Lot{WWmOZFL^oo@W$ zi!X#S$7Qj;7S>HfWilBo|N1Lpdoi3l*Q3ijDWymp9Khjlz-TlI;!8{vm#ZDAWKy#7 zB7|J?`2x$~@Y`UuZC6c@!cLqJA}s2iP8a@g?K+Ic{A(Q!C$3#DmUForHa9kOgF5bNP9UB`Ph(xyF^ZSKgb}gWkB9%(P?r;cmN_$5Kwl=qfACtSQTW#faEfjkD zFV(hNH9>s7p?@WWToc!Q{mr*%ZEX|EUwnC8vf*1_3+uYK`1z+Fv9YlsloN>rKBQ9c z`vbbXKbOlPnLLE6JwF#(tyZ+z?TBpUMU~NLL`P>QLT}#)&kzEa-yc9I^tP&1S5=dG zUX?E0Z+!g8Ma3lUbUKA{G#b&B7>R=e1cOS+5DW&9I5^O)olGW!Xfz^}dwYA~4-{95 zE>}A~{zRb)x;;HT?UYwmf+|;8#yjFtUPpC7C_5ZZ$zEfBe_vQu>V^CF?^kuL8XT}J z_V@RN^6HUy6GB`(k2}@0rI{dV+%bB2Orp8HJT@l$&2d@m?rc}n zw~~l#Z6O>kecBfehXk>r7j}2H!Espt`5&P88_i}jMlX-aAGwt`-q40BI7G@FHe0LY zaH+36B1m2?Qi+9#SX2R! zh$@zi<3pyQv=0K~p-N)}1?6o<3FOjw@HLs{UO-B9Xw# z)2F)j<%r{uP8WCQouVJ2$J?hOwr+e|>ANc?2qAP_Ty}SLORkFv^8Wok^h73;!PBS8 zGa$R&E?GnjkBq2t$CPqMZ|sqsddkPfU{JS3Q-cPAU|d`lbBD>qNW@i2=atpt zM~{%rW)<}l6O$FyWwTj4ex&a*Sp1FhW9Tj!K>+EGxg07c2&GagyIjTdXz{*-y1JzVp|mmwBR~^}NUaXV zdaKTQaz}{`p4xnI(lxy|i{ft;kAd8>MvI?IMFf#gN^)xr@!lhoPD3w5wzgCih{MCf zs@ze4$Lq!Lu+kzj7!2yFQW1Zv+>A*+MwL$NRVf$cz8PXW+q908XEoe$(mi@|iTGRP zw#FyT17e=K>F+8bu!da;{u3SBtI|{gR^{T2$MeW_yK>V$8g2>0H zQq*j9QV*06^T}yrb?w&G!#L!s7SQpv{Wj!qS9q=SX_?B-%GBuA_In#eE&*8 ztBOP`>Y-8*e=939;*gJ#d<;vWB7*R|LGm)W_4i5MOqHOPO<<*{=VtMwF_Dj9DO4r0 zQc0<&s@TM*luKGU#A30kR3utaPNh=KftvVRuR7>LW?oQEVSnOJCwOV1)z$N!pewk*o8P~u1 zy5e_e#r3b$U9#2sQVJ%9k$Cos$3Q$b06+*`uK2x`-bg8y34w56&&H)9F&2vnr-nA0 zts>LW;OZ*&_VyI@9*?)~jyxWZS7H6Qx3`Dj>S{%M9(!BSs9Zk($j63K)Po>oiHJNB zBaux2MZb@C(WpR>wl;f31Sz$;35P>vO-1X8$B!RXL=cDQyyKnBIx{~uMI8I=SA>d1 zmV9F8I8Guf#htR-?I((@$kvvsisY=3NF-FX1!9;OM&j!({`PqMy=2KtDUEA!2-Rwr zCGn$M6a9)md`L-bU&ZI_YN*5<^sJE0D76J*hz&ZT(WoTYz?y=yi6-Ae-3S5zp*Kax zmG<@y!S`DYK7aY>KW7QG9en`?gF$jUEBXU0-ELg}>MMjpXERrng3s?SyBY0tcL{&TVlm0;DjW`}h%0RY z&@>TbZf=g9oV+nB_78da{F%fZA-KAV&yRg4-0rTjaY{D51#w9Ob zJVR2X;d~Wbm545HU!NwGN~6HUFz|}(n4{6C#0@%`OycDW>D*B*cK|h<81j5h;;zMU z93DSF`~3kBQj8pzN+rQCj9_@o^E`I8cZ5BM$z(!nYa5cu4qaW{LX50T zCWBNeC7A4+OeQ#;P9&3ubq!Kh3oI531_ynDMz}zXWb#nBXLn}@|NZb6*^_i>etzyB zYH7P>`N8u?x8!xdJos5MpKNZduVMx%K2@S%hl`Eap|I6Rad85{>z z)-7DDu2D&ch5~m1@<)g!d5+_-xv`FOJ-rg56wa^3s%)FB6%L032BQ%i$JK2mW?~q0 zy1UTR(}OnA$sfmYc=_T5UOZcov|WhZD~*d)*l*M}iOZpT+}`8dAj@($u5y8tFN};R zLW}2ex#M8^aU32VLJv5O11T4@(PC%~qzurz^Ye3m)}>=2)FrZYxzrRNoxgz3l#z4b z4-6qNG^A?RRUpoXR1)b-rlR;M27>_>s}(kz?f9R%zeXyR!t<3C)llQVEkD8UuU{$Z zDaEY8KyTM0;Y*!^@hjuM1LcG9_w@9_KQvVLVEoZ&6r1bos)Q&XjK6+y-+?-(t2mC! zIIEUps*-dSfuSMv^!8R|4XFl}Ww95F;q99@CG&}tOIJ~EVgRR>(B;N=0A|##Ih`(i z^6AC0>5U4xMBHvST5L8roz4?2Bsq@DCvr)p@@E&ZSlOg5k*!UYW^k=SXbKRUIP zNBLMOm@VbA?e6NvpwE9|rX9Tz4u`N74wXw5woGa6=KrabM+M|pV7NmFDX9&0I$iL1 z`!MM9OJc_BiDWW~wQvZLt<93D^$Ph7Pdi)NnWW7-PN_PJ5(&ZzC?pE&>gra6tI&$w zoqXE7@(I8Spi4ZTyL}cZTF*4G@+b83c8pfeR=IBC(XhQfUO6gJ~BqCNr!xBV}LSlP^f%j2Le3d*y2o3YR zA#60#%Sj{pDw07*qoM6N<$f()Jb Ar2qf` diff --git a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png.import b/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png.import deleted file mode 100644 index 0aa199d..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bjjj12v4g82g4" -path="res://.godot/imported/PS5_Triangle.png-6cfcb99a3dd2daba1763b52afa5e6f91.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png" -dest_files=["res://.godot/imported/PS5_Triangle.png-6cfcb99a3dd2daba1763b52afa5e6f91.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/playstation/playstation_controller_renderer.tscn b/addons/guide/ui/renderers/controllers/playstation/playstation_controller_renderer.tscn deleted file mode 100644 index d4809e0..0000000 --- a/addons/guide/ui/renderers/controllers/playstation/playstation_controller_renderer.tscn +++ /dev/null @@ -1,101 +0,0 @@ -[gd_scene load_steps=21 format=3 uid="uid://bwv1638hcrfni"] - -[ext_resource type="PackedScene" uid="uid://bsaylcb5ixjxk" path="res://addons/guide/ui/renderers/controllers/controller_renderer.tscn" id="1_bq6gh"] -[ext_resource type="Texture2D" uid="uid://cfy1rx4d4wjdh" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Cross.png" id="2_oqi6t"] -[ext_resource type="Texture2D" uid="uid://civpcnwgbu5ky" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Circle.png" id="3_m332j"] -[ext_resource type="Texture2D" uid="uid://dm6vfcwtodame" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Square.png" id="4_dqhg4"] -[ext_resource type="Texture2D" uid="uid://bjjj12v4g82g4" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Triangle.png" id="5_42ocy"] -[ext_resource type="Texture2D" uid="uid://c3qet180o0dn6" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick.png" id="6_wwoxb"] -[ext_resource type="Texture2D" uid="uid://c0b1sdadfcnbk" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Left_Stick_Click.png" id="7_gethe"] -[ext_resource type="Texture2D" uid="uid://bukgaq1m26bw3" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick.png" id="8_u2725"] -[ext_resource type="Texture2D" uid="uid://c4krmros0va1i" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Right_Stick_Click.png" id="9_wfckm"] -[ext_resource type="Texture2D" uid="uid://cqgpumb0tf5xr" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_L1.png" id="10_34ib6"] -[ext_resource type="Texture2D" uid="uid://rwgkfm18pk3l" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_R1.png" id="11_53ury"] -[ext_resource type="Texture2D" uid="uid://bhoi6nfung5ye" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_L2.png" id="12_tyubh"] -[ext_resource type="Texture2D" uid="uid://u6ba23igjbj5" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_R2.png" id="13_pr5lk"] -[ext_resource type="Texture2D" uid="uid://bvbd876sy2430" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Up.png" id="14_h0miw"] -[ext_resource type="Texture2D" uid="uid://bkpw61ctv0fbg" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Left.png" id="15_q5yu5"] -[ext_resource type="Texture2D" uid="uid://dybnayy8y7rxe" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Right.png" id="16_ulk14"] -[ext_resource type="Texture2D" uid="uid://vk1vje3280tk" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Dpad_Down.png" id="17_wm4fj"] -[ext_resource type="Texture2D" uid="uid://bkttgyeuecjw" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Options.png" id="18_eabm3"] -[ext_resource type="Texture2D" uid="uid://eljpu2rrb3k4" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Microphone.png" id="19_oj5w7"] -[ext_resource type="Texture2D" uid="uid://bw2h7xxdtp31i" path="res://addons/guide/ui/renderers/controllers/playstation/icons/PS5_Share.png" id="20_p3s2m"] - -[node name="ControllerRenderer" instance=ExtResource("1_bq6gh")] -controller_name_matches = Array[String](["DualSense", "DualShock", "PlayStation", "PS3", "PS4", "PS5"]) -a_button = ExtResource("2_oqi6t") -b_button = ExtResource("3_m332j") -x_button = ExtResource("4_dqhg4") -y_button = ExtResource("5_42ocy") -left_stick = ExtResource("6_wwoxb") -left_stick_click = ExtResource("7_gethe") -right_stick = ExtResource("8_u2725") -right_stick_click = ExtResource("9_wfckm") -left_bumper = ExtResource("10_34ib6") -right_bumper = ExtResource("11_53ury") -left_trigger = ExtResource("12_tyubh") -right_trigger = ExtResource("13_pr5lk") -dpad_up = ExtResource("14_h0miw") -dpad_left = ExtResource("15_q5yu5") -dpad_right = ExtResource("16_ulk14") -dpad_down = ExtResource("17_wm4fj") -start = ExtResource("18_eabm3") -misc1 = ExtResource("19_oj5w7") -back = ExtResource("20_p3s2m") - -[node name="AButton" parent="HBoxContainer/Controls" index="0"] -texture = ExtResource("2_oqi6t") - -[node name="BButton" parent="HBoxContainer/Controls" index="1"] -texture = ExtResource("3_m332j") - -[node name="XButton" parent="HBoxContainer/Controls" index="2"] -texture = ExtResource("4_dqhg4") - -[node name="YButton" parent="HBoxContainer/Controls" index="3"] -texture = ExtResource("5_42ocy") - -[node name="LeftStick" parent="HBoxContainer/Controls" index="4"] -texture = ExtResource("6_wwoxb") - -[node name="LeftStickClick" parent="HBoxContainer/Controls" index="5"] -texture = ExtResource("7_gethe") - -[node name="RightStick" parent="HBoxContainer/Controls" index="6"] -texture = ExtResource("8_u2725") - -[node name="RightStickClick" parent="HBoxContainer/Controls" index="7"] -texture = ExtResource("9_wfckm") - -[node name="LeftBumper" parent="HBoxContainer/Controls" index="8"] -texture = ExtResource("10_34ib6") - -[node name="RightBumper" parent="HBoxContainer/Controls" index="9"] -texture = ExtResource("11_53ury") - -[node name="LeftTrigger" parent="HBoxContainer/Controls" index="10"] -texture = ExtResource("12_tyubh") - -[node name="RightTrigger" parent="HBoxContainer/Controls" index="11"] -texture = ExtResource("13_pr5lk") - -[node name="DpadUp" parent="HBoxContainer/Controls" index="12"] -texture = ExtResource("14_h0miw") - -[node name="DpadLeft" parent="HBoxContainer/Controls" index="13"] -texture = ExtResource("15_q5yu5") - -[node name="DpadRight" parent="HBoxContainer/Controls" index="14"] -texture = ExtResource("16_ulk14") - -[node name="DpadDown" parent="HBoxContainer/Controls" index="15"] -texture = ExtResource("17_wm4fj") - -[node name="Start" parent="HBoxContainer/Controls" index="16"] -texture = ExtResource("18_eabm3") - -[node name="Misc1" parent="HBoxContainer/Controls" index="17"] -texture = ExtResource("19_oj5w7") - -[node name="Back" parent="HBoxContainer/Controls" index="18"] -texture = ExtResource("20_p3s2m") diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_A.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_A.png deleted file mode 100644 index df756ef0fe0b1a6a1c277b6106aaaa1b6db36201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3780 zcmYjUXIN896AqVRC>KJci3kQk0*25LlqO9QdZbGSsR1b>1dyUZ4MmDH0YRz=5+Fe6 zf>afyHw{&Vd=hC!0#d)@zq`-w?6Z5Gv%539GxNR#3$yG0atL#PK%jq7M*0|__x#(y zY=8{t7aVMeluUSPDtUGCjej7LwBj6&jXXJ^iVbX=zY&6;U#!TG|*`f%)C^uOm^pp}m0_0mX*KqSzvl-#bzL%<9K*hJ3G~PViaAyO`=4$C6*pLY z(cscGqfX~oBx>9kBnPs}KHTRn|NR&fd3bzu&}6p)|X6Cr9xuk-zRGD+_iA_eCE!fiZGgjc43EMLhFIa#O7aLIjw|n5069zArBNBi^-=t!>|9hQ8?9^XpebP`tvEk8{qa>*Vo0lqv5IdVo6}4&?Fyi1 zg>Uf;&m%pqM|!j5e<@@I5$+3JLv)R~#l<9%xKgi%Kke^$k_ZV9OpVP@8?mU4aUXKu z5&0-uOYDbwf-ciTw-*-hj{!@k9x%1dBfqSxw#^5YMMZXsB8E7OILm+Ut*xzH4plLV zOMr~~C?7K!DuQ8^Rx%dWD!-jgCtQWtxO(j>bEX2D#{!$Z(ZfE zwHh#O0?~azyQ27v%l7%g!ot`2_VBr=>!rLK8ygkFmT2=@A~8nwc6*M`4r z)Kh9=f61sGG#$9n?X9ge3B7!wm>x^(DUfulBX?fK^6{}&P!VD%O~M!5#H;I9j(O#t zx4KC6op8iY(smZ1x^D_Kaz1%k!ueWe&OVF>u2gMt{jQt+w1z2)3oXs|fJp+yQ90s> z+!b;pSy=NEX(X}HYxQ;-DyDQw**eO^sL4UrKaU~YU7BUZ$6AgdT(tqrQm7rP6&7fy z-(j`4a5kR_cnig4z~fUr33JU`6?;m)pa6U5c1VDP$m58P$k3EVB5jsJ;jBzJI5@C4 ziTw;XV<9ydwcHPTb5rx#fE3;;v0vO|!sL6Hq~h8)*i6#<&_B_I`Ox%RXNvAI?7J)O zw9mJu>`E0yL)E+~sz^CGYGj~R5l_qDlW$9(@-NTvRL;>fUphNAmv3vlCnP!73f2Ym zyYoJDVE*`{upmre8c$N&Of&#j6ZL=a+FaQ`it$7BsJX;A;4RS1VtgYl%x|>_ zSJ~wiVIE`ouZXitqx6ne$59ma_U#c7N^al402{g-BeS`&dvF8um8Y#f*EYc5BCvMv zdk@ROx)c+o(6g&+6*wNA%<*nD!n+BN14CuOlt=II5M6GmRD-p|08a;8mAvil;i2PR z;q&LuCs(5lB=MzW?$S3G6k(a;oxnoFiPpBhyihNm;gOLszb5GXSs?1eUyvg_L-)O4 zP|{`G#~b$8Z{xxgaA?@g8UZY2puaz1>$uU;6%_9%aJw?Tl*A~}(uTrbTS5)qCW%Y@ zE^pO zrne^&B=d&p+Q$$AWZD>l0-x=y;Elq!wqf%+r~KHpf#@rheC})9k$K4(6|9)SPGbpF zF^k0isowo1y-Z<`Z65I#Dopn>(h)NQ zFHkHhDr#>v|F*kks&#qE$sogWl0!dOYnl6^A=mZNv5x}@vTomCAE#KgDn5@454&s9 zmzH#lJ`4|Y4+Eon%0FYj&JTS_4c;j>daNWG0%c&9Jic8#ib7?$pP||>m}f|rG;9z& zjAw6gKKZ6E&eH8W8Qxb9yTQZHYJ<%b$x5>)65-a0oH;o;#r9M+r2K)4{uw5-#WM59 zRGie)!IJtAa(cnFSfp2L8$LASbyUJWR^ zY)g0~Z#zRmEa!E>bIZvkEuVjiC=Uj=;P+@I7e@&V=asW5#?tpRafrObfxCr7S}{g( zXzKa(D{-l0S%j>%|7-l^c9-Arb@zH0pAmf=d|+6ufE(UH>>F+)Np>fF$L8tZH4$k}Xekyz4Z~Ju6?NTY= z#?0{;;hkCmg2~0x7PU{lfjc#aNdKHD5bl83*_TnM+L_adiX$Kaj)bg&ARxQWOm{}@ znpNhhlP?4lKKIckjmyWS<6g;d6KNsU>wD>!XyOO0#nx~Ukd9q4{pet~rL%Kop?6#4 zDmmb!WN}j}k5QBhnNZf|OX`31Y@SHF59!(Y(LRqzMOq!dU zb!$J65YE`0zoqMRv*eEyEdbvh_YQyHtY&F!ZGHdgocfbqr=2z*qYV6CbDOkxbnpoW zI~$w_NqzF7Q|XP~8-6({#Rx<#?s4zwh^#rMLy>=;bbnZm>j)iGLe*cL$VANQc z;tB^ZlzP}tU&C0hcm(R2OdMLsWFfl|;B(xMdQ56v$XSxCdp@?&JXp)VJ^rMK!oqKA zd&`f+@Xs8(CdIC2@DOWjsYqAV%PojS|9|N*Gw}ceDW9( zwNzZF`5c4ptHrDFst&=q7;{h)^1(YF2#`fp&Q;TaVuO6fMr2W z;T1LM66_>|p7qq=bN-$}&1!H(r6U4^d|e;|b7Rf)PA~Bl{tKs4WTAlNe3~4JccS$C zb}O7M)OXrCJuqgUZ#i0WN*|m)CtzyACmv^^=w{Y+|y;`jctG_2~ueaNp6%d@8sgf>O*O>XX{ zKIPMJ=CesmLnT*xi($|_={>_^$J}H1w9_MWGaI)H?xHr?5P{8C%ks zWb95&)(P2<82i|l?>*mN-*r9j^ZxU@p7(yA?Y@5rW+n!w`Jj9t5a=|<5M=?pasNI% zT!0Ul%CG`~&b+{&ZdrxpvK;@s55tg;Y9tX!Q#q;V1fMLQVEz-EuHlb$|M^~3WJ+L; zJ6Da{Pqgm~e5}{;@h8AodaL7}CS~XgP28%gH3A&I@8Bb99!4DA=4hKWbL+;Zp57hh zJ#N-(BVN(<@`KW^oY9^r91c-M<5MXAe@B7hzHt!Iy081&r`J?s9qh{nj_wbx8^iv@ z8a6r{RZMGg6H`@q;UXYz!3!bAmvxHM^9{+t4iz@e#@LR_?h8C4qoaFbpa~AmbE&E! zW=8#Bajj&+2j9CNgo(cX{<`Ui1>VPWP!J*dP^oY;)gpXz^2^hDLUcVh|0NuOumOk9 zq(avHUhNB`!SJKEmPW32HnwSJByP?h?M7rq;* zTjo7_Mav0-1U^?R);>X&StD^2S!A6 zOV2LM&dxqEv8R@trNOQWqi<>CkQBRV`#3xO5-VCPw?L5+S*4OfF)tf%VNzG2OzJmZ zjfcr|Kj`TtLQ+!FFS~b>#TFMAJ#q>_4NQG0E(C`nDn)(xq0!PcgW4W&yv&&Q)`+45UDhX zllwWYzP>)<*egG#mpU|mxtq$0_0DRugul0v*CBiChRyut-u?_(@HnWkXMhjDwh;U` zD-=D4$3c+G(%_E*UuzVt%Bn*$GTt&h&Rp4ETbrh*5z@cE=Gz{GUlQVdZ*h5<4U{@3CntZS!iGQ2)mX|1XJ+(` z6$;0Yi}#IXUTpVW;H%b^T=LBHS!B>cFtn-Cpr%PmQ0-Na4pg_EN^QS( z*~6|K|2k@J_eF)xz02ycBtPcQWrdgB1x}QRa@`>d*pUjbcSO*;gklD-Umhwu>>^Ry zBbhY0k(VdY51R0)n{&gU(amF9#!i%^Iy9lE@xOWkcULiv1+qB|aspUL&GD=5E=Wi-gt@I(&{`drJ+&ky3p3kExG6QjCj z)gCM{)Su`5>N-s`EZ|5jXey7?eeH1-g(}!&vqMbvdLnNT(7=pbpNNd@*E`l;)k(KV z=}CP1#!5brf@j7+gqoOq==dUU?sMxMyl@9@vrLb23MD0XBd0!Jc57?Pti+1L`MzBy zUi;zdFYxsxp%l7~JEp`cTv-28RqS4TXguvqd1yl?XLpRsryZ#u;<_vDQ{D*(Oum2> z`90kg$B*V=IwsJh%R_^2=9O^s%91+Vrk+^*-hIPI;@G}R#Uf?FTrB}_!rhw{25$t5 z%l`NSDl8@@7Iu8pVrb**>$?-jzOJDW5FQTQiOMs3!E;81-`~BN z-2F@h2tqYdF>%JTb|h`uZWmVM&3Aj|x&8@?b8Gw2(I*2*G1pp0xx#PX#%+H1Dam;tGT54n>{C(XA=9wO4cV@~}TLYK}2D-CDmkY5`AL zQ@JzrH~XfEsj0NU%tjj}Ce^Jvp3-^*jdT6=`?q}hQ{DSL_>%ABi&@5Q4<3l^@9(=a zY{W>;B5>uzuTr1(ewU$>{`wjeEdyTNW8ZW2LYWH-C!v9=@n9!_NJfP*8yg$vjm}Fx zQ71xzbR!klRl;iTB|Y}AYiMesb-z?u`y!ynGyB|4gFEk}$3!Q9=?PD@U&M^-t;3}M z^nFwR=A}+Fc>{12POTtcY*Q~#ZKgl=rTxzU2LRb`JxjuF|5u1v$s zS?0xl0Tho`qf|BwPlDB(c{;7$+pL1pj${SlzOa)Oe+cW});~8F6;d7${pau;$yi3Z zM<{_~OK*+GmFZ~~B?qDPJQd$>5#F(Dn5-fqF#H2#7RzsGWo5tX*L6HC#*yk`XLAt= z$^|;(mB|t3Z9CbwVP>@>;uu>?>kt|93E=cZnu@U2XF6`*whSR6W^FAiTJ8FrCDax9DYFfzQ zlk4dgl^L!~Dm@&~CHz-n_YZZIm6cbgzVb&NA8rFR;|pn3?9NXqaiS3N-1}@F!l6X*JT4DG^QbUsQ=~vtf<+yQr%^0c#7Z)e~KE`4xK4_wLl9v?aF@pY1Y9 zK;tj7<6Ogz+=W>nDIpqz3}`1S52u7gEBU(Bn@QSU+3mghk=x68RrlteNu>SRqpuO6 zmes@iI8FWx)sN6?KSaP5GoX1n(kyxo{wZ z9b1inb6I0lzgP(E^jzItr8c)KrVU?|l0SBQu&lo*yW(Ctw1_P0QazPFay-UnvnQmx zh1mLH_V)J2E>~fP^56;zh4AvGedbBWq4`f|%*lxN4DV&!=>GN!DOQsr1$jK}Q@6K| znaLWq?8d3-#Vj;6ja8~TxSityRB2G-H`J%e*@2DkqF6?1C$1su)%}T2BB7Sa)2kf~ z*G{?X`P`XxbNd%)7fx;7MU=P|t}|Y01!_=Xc9A&_v@07#hs)yw6-3t*b-HU-0S4oh zu&w`b!QjO#QmiwUgTMe9Vte~$^3}kd z@#n>jsMQZN)l(nC*+!amszu9FsE`^5<7=F-I&I%Z2mJ!GRcvCw1I>T7_pAIOmTaXl zLV)xrE#1~q*wKk_5HvP#v^8$5TDRg|Q+T7DoNlWa2goN@yJtdpOY+@{Is4Y3;?R{J z{PLzzWVb)Mc$=Roc)>le3^Vx*PZMK^6v$aE-_gnGXz{~r_Pvt8U-Mje36$hdzM&D{ zP@j|gA&v&MBdB-Zcs_)pheDP&X)2XJG=G^I4Z9uGC`xA-jXkxGf&BI)0z%uSjAT8^* zAFrPw!X|?1`*Jw_Z#`nD$8xHsfVJ(~L@W5QnNZ)_@N*wFiLg?EY?Y-!8D8kwcj@_> z$s4#dX0c?hZ$xKXjJ@xy<1v4W7RZ`x&F^RXlaC-8zxXKs(Hf=>ExZ=;}EDyWNs=8*> vMPe?K8a2)eHO<8E+t|92ME>91ia+MA3c-i4xC}|aEfs`8o1iL@E;0WF`Jp^r diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png.import deleted file mode 100644 index a6de4c9..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bptn4jygg3p8q" -path="res://.godot/imported/Switch_B.png-fbb8f305e166298807aa18fab0c22a62.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png" -dest_files=["res://.godot/imported/Switch_B.png-fbb8f305e166298807aa18fab0c22a62.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Left.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Controller_Left.png deleted file mode 100644 index f90a2441298fb8cabefe5166b3f8e948a2244002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmV;}1t5kd;qgMn$<|7(d-CN6h%=KMNt$*Q4~c{6h%=KMNt$*Q4~c{6h%=KMNt%`7Lp5+ zcO*9?-}ug+;j!37VG2J&SyD8Gb;dU5FaG3Ff>4p`-#y3Xkj{k?55TL{uFBG zb3^i)8fozJdmnxBE|cAoDh z_4pEtx^+LU0hU6d4;Xg-Ul}@G*!#zVkOdd^SzVTsesI?S zDOwB-AnpI9=-@F30t>sSK}P8Z-%hoZ1BRWS<^Qc)ye+v`fEF18vC1H$^ur3W{=bDa zLXH0?xdCwR{0#uVHBIxqO2c%zoQtyzQki~^(U1P#03!aM<&Q@w&d{m^&*seJg<48A0J2Qz{XGls>> zoQu5%v7_t0P=OA^{Ljhbe~WKZHs+=O#jY(afLq}iyYzh5g)R=wkeukqO+V~DO8gJg z5iRmu?b_b+tDqjfzU)F5dpCxWOeK(>eh%UU2S>7NT^h+7n2}!-aIBMUi11r$VJI>di2?PWS0$Unu4#Rjw+C|;PkBUk!_TMHhgSzpE01zb>NxGj7?Jn z<|DV0wiTT-`3`#2*1n=G+WY669Yr3-73v$=4;lAgS9TDYF~w=ts1lxNiV~!Z5z?cs zoRof_oIIuJUx#u@o+UJaLy3D7S;ValA3EWlDv)-cFqx*IxlEO=rfJmNU6K6 z?<_>u%RMD#AH&v8ntGZ29;0dmb9x;s4(FXV77P!-Wc`1M{nKuayrnFe`ktGY$o~!i z{-_a76X@*V-;6$r=I`iVN0Oq2(&^wKdr#ugWm7wPJu>^vZU~VOdfaHJ!AYM;|875* z?7dG!pDUW(^OOA)8QL1+j`6kWEv1i28eaq&oLmU$4+?Uri`@mW2HkKvSeeHdjv`x6 zqm#Q%hK-rSS&o9y%z}P4`JO*SS*|KmIbV{DB%c%ReXcNuNI04T^Ny#5NZvF{C>&Dq zCgI*~!NbWfi0}GbaCkhScE9w>Q_p0E(;$;cK-&R1nb<7_eX!O2!OGnib-AAn1$X%+ z54H&?mXw*LaSJiS>?z=;Xk2W+Qy0k=Sl+BmvAoxqtT$Iyi5C9Xk_VVg(C-Oy`ocAr zUDGt#$GvDq=%tmnhWy!(Qx|9CVMlpv)IHBNdYtxq_an)k#sl0?U?X}`5{yFoa8-uk zF!GUfJ)|+{(b>RrQ(XOSM^TG-F~I>QkMxpKG{AW)<2#s~)j3O(CaF4(V2$#Ew6dW- ziPw$3UyeQ!bhfP)K=+XiFh=Bj2+amDR<=1O9h}2CC4s@0geKPC2>bb%|9{|TTYS#} zP5x>t*!lk*%s=^@L!u%al6 yq9}@@D2k#eilQirq9}@@D2k#eilQh=3I77RpJ)OF?-LLJ0000^n&N=6tbIv*EoO8}OXGw=T5pX3Uw<0pj z|D3Z?)vrUe>9+*j0iS_A?PS0TxJliIivY~?fv|9wx<8Wzyw2}#YkR^IbCtS}lK@-+ zk39^;DQn<$>OPMa;i=dTG#F(W@FsQtMd!4U4mDcAw;Q(v!M5poPmTaNB#LPBZzZrT%OftQzPVw-2|IP)?lOc?r*aVg=9 z_@`r=UyzJE*{eC9RknYwE$^A~?2PX3j?c#(2X3edA%y8{--;^0w8B|_0lVtdS%w*q zvNcl)XGA<55$DW|E_7Qv5)?K6X!=1yxOv<0Jm0$f5Fx?4?s(2vGZFd7OBG;T;f%P@ z@fdmTIqAzYFqYXFAuEr$AbTQbGKAUCSZwL3sM$1Ry_LAoaV;Vn;s)g@;%BYhipUco zoS6L``7o z8ag*>WLfL?2;COJTIUehRj}7>&t0esS@&HJTwx(1U(Wp}kVyzH&!vA}O1qHq&?R)J z>N{YTw=u>&a8T6`k;nNJ;ZeTBHf-%G&NnwW{x-7DHwJAe^q1)qE>>pL&^4zEjTS4A z(H8-`_sO2VGkn5@TN9r-@AKoVuw4p{E~V3L0&z}eaow9V`ihV}?+hCsD=J)-`gUX7 zu3^h9z#Gz4Wy{R&##HTUTorEdsgZw&m z9m34wAoR1Od*8z`+atUnGvg3YC3;qa?MuCIcDkPgA=_T}(9vVjr3?DIfyTF^k}x}4 z(cgko)Y=REl#2?LJ8Y68goZx0qju^z{cn%$ytiObgu8NW-1*iEM?JLRm`R>A7(zm} z!Y-VxXkLELjLuo9t}TOo3%3nkcDOu9{8aWJAvgLaB2UHQ7%$%nUP$|Da%ZYqdCf;T zAZ3KI!&16$K^m3G4@iNKUo0ggSgH1EMZ1^*DHw;dp&eB9&#DiYmQIGCsy|fqldAqD zVPH0io76__4$jF9NZE;^<{@c=>RtAL6iP+SnS}SubJ7N#x2gNUg>BZP4FNVjm-c^AB^LAQ z|8?6o5XZmh>;F+F2sem2ftd-SP7r2-suNh9Ao2uJCa^kznF*{;V0HpC6I}l|Fj8cY z;sFPUmhgE`FEM`rAdfiU4hI0pWHOmdCX>nNV^U^DL~j8U07`qPu)ndi0CoVj#+ZK< zi#8de3xtT?0jR)2m@6f_GsgUWBHz!R`PKH{#^!Swf+wO6MD#%MxH*x(X5RNi^pS|( zq z#yFkbfE(tW{ktA<&w6CqDOnNG0>Hu;^Pg6t!2%&}w6_?p6%F{MZhZ<*M6Flh;xh-Z zBcg>d=9@->K?1QgV}pKS)Bx7Tn14d@nK&~5H4&8>Lh)`xMyRQ!G3Nb+3*(Tj)fPd7 zH0phNy#X*c#@q#@{Tk_NN>JC>OCUt_5p3)o(}IO@8OD^H8Mr<5Ml2Bf1*{#XS^%Xn z=6gtiE`TzmOYBoa*5EJUnCgma#xYA@<546Kn@Qz3b?H4RDV+f+M%wLNI*zqNnOh;2 zc-b{>0n`($RW0@^xduP;!XurEh*p|L;|r`W=NPBHB%*gC{Yj7H=a-7%%X%h9FNxSu z>U#E5{3(0G0&Jlq4thI{*N!0mz@$9N-mDILeQ$Gs~1P#bAM0BnX{ zNCF1OKJ2+&-}xTqBy8Lz0&y9Eu0Hn`?q1j_g8T4+jPaNG_|!yBQAwj-I*!$ce-O7P zg`@yS6hw4ujQKkt4GBBQK7uXw&%DIA4{r`Yw+Bi@Zyoya*>T;Ihn_v=$&v1Z?eIn`v8Ve3W_))cfcy-X4`g_IIYG+>RWTfu$X9CE_NEO za%*Eq8~Q<1hj3pJ=j=QTqA3u~FQrjT%SAEKwDbgGb*jctYa7+wz$`S{DPm)`2rtea zZIz{=3TlNkPBBB^2%igR$xb*k73y18f%F`7obpg2aGZAhiEZll-547wq)FHrAgSu5K|C~ITPU)tpnP$*p!M3io?eX*6` zmg>yH0N5ZM@;IwE;4Y%sA;y@m;HteDxNHj^hyNO@96~lOp%4dkY*G|JyHWoM>$3ht zL`%HXyG?@bt(30!wZpy(Um#(ua#VqISQ{mEV;#cT;)t)+buwA9Kqf{O$i&D3nHX6h z6C(>`Vq}3#j4Y6ek;E_regx2!;L*VL3|`$=L6RCm9Iv&5o%ji!X%rNO6M-7+5G~9R zV3*1QQyGgVUJSr1u8DXBgg(BEOyj|EuU2gD^N^R)3Fjy_2#8)Z#@rFF zby%)8*m|OAsfLn%gYwsMjc9j!wW1C;O6l}bOf;=10tu}pRf1kt zK?)O0Z5l;*arUTodu=!JH{$u(U3_na;X-e)pMJ1TXooBTd{RgwJrw54I_38n^hwz? z9;Em6+;dDw^!wO(>yz_ko#LDwfh~EgZ)NX^VlSl-$Y$W&xfd!fz*7=V*3u4Jt9FRg zHBaU3tsTc3MD&^pD8S=0x2I|gaoboUqMa0d#LyV?o!ALif!!)IurQVrTkLEFUgv6y zmvbCv;PQt|L>fiP*xoz)n=;*tKO0kM)H4TUflQ1nkclx?ATC>>P%OtK(?~8JC6FFl zp^#*B#Wa$OB`WJh!V-h(iV=;MNCe_axRhjer9=}*?KoCRGP^={(xC*2KwQqWBCD-I z#16>O0w^TL2T?5;kBEPNFX+rsd1cI`;04GI9{WPK9;&G zqXLPRo_Hm!ed7Ye0fu z&f_JJgEebibbB#fV?)0T9g_C;_S%fAp3~i`I-jqkv2VfgWWfR4LGE{3fCc&^N0zYL zlwPo4y1lnl*8B<{53!AWfqtJ&xBX9RW2J71F-Adk7;m@ z-J%bPvN^HpLdwRNKfr40lB3{jaIJ{4rACZZN$lz a6!;&L(y=T#MT&a>0000 z?|Ixd493AOV0Qwi6T}-_IzikC>`dTnaNWSk1m{d(cLKQ+Trz>23C^A1*ALW1>V=f} z2bAdRz0cz>aYTXy`2qw$TI7TiPVmE&XcRaTk#{0;Ir870MdYh7=35CF{`UYbfHlw% zj}36K^cao;z!`9xpad5lfNSgyJ0TX`Jv9Xs;X;e0!V{&r z0KBElt_Z==Q(Balg{6=u5jig+O*mde0F6;hEh4)H8ju209{LdPg% zE92*i8t_#_?u{{@mlh-yK?(uxMC7AVpO0cE?n&%!yAqKbrM8E-7m+7p%$EXfF9%?y zXq269EY^!Eg|=&dHTT>V0ebFjGtp10)X%64RPI8LQWkbae@$rjMMVA_eEUX3&d0bN z*hm@b^5I^rz4?2_KJ!2tm9!}<5PQa00$XfUpnggtjYif9{hTRIa1L5*T&})@C+WsK zWp}&ZIh-#*U1`SYrQoSiAQVWzuIewQSTTf0n~1W2GcC*pN$X z|7XNa+?K!{*|n|ZUeBWxMS&r~eZ;QxQ0x->Xq3iRRw?M82Sz8014<)4H=jz0vAb{# z*C{fD3aVACFexlOHSVx0Hg#j{JucO0@-Cf3kvL5;e83NCg7 zz3P56@F*gm4*u;%@&k$I#+ZL{8bCMc_O584vRgs7%o7%mhSC@tMUhl?$uGWN7-PO0 zV?G;WeiOTj?!|`HYrxae0yuDkLQvAHkRgmQ-;6OIj4{88rJBdwjx$kfZvQ5?f#hOq ztY>j0HrM_pSC9l`*^q8EYw!3cW6bZ$ZN>u|KHo5J`22mQ%-Syg9(CnXuz|@rvVU#P z;3?;<)R}o?9xpA)vmq`#6N~wy!Lgt$r9~-)ywpMn>Q~4Rl%ceS397)xuhz=_y6})Q zKSi#zg@7_%+P(C(zI$AD{angCb;((t)?x}70-MkHD0bp%E9Q>Hy)ouP>c>F`!_uhm z;F*KxoR6ze$PmVuFUFWZ#M0PD$sFJU$U1DQQWo}Ha48}$ns+r`8Ksqt`i27Q+O`94 zqs5*>RFgN%ckoPt=2)}9_yJJ;ZXk802eMpVH4t9hw!iMI8eU+TSegr2@ijG&UM0Wg zcqnbBIgTulPa6%dpVFdh(24+m82gs^LWVu1scwDdp|m<~W#OLm&EWSJSZZn`2iRhx zvaf;Cwwf{~1Ak$ibA@ATu{Ol7)Gc*WTDfAm7~l?Nw*lXsb>B7#gWpgerPYxo#J%;S zj2rosrg~?CcuK40?BS!UoEucBD|L(V-9W-Ats1&oyCz1l{cF;U?*sEuT2*Hc*D6+D zEuT`20tJSqH+-3j*x|NPP=m_plFi4Ca_ z!|5;5Jxntd!p73ljl>s)@88)vo=0hL+mF$=Oa|Yc5q9PJA!J3 zr|F{tsgzb{Y3LBROEISuk{fBw=6bAWbVpiLU`?%*hI_SpLkQ^HeOJvlU@2{rAV))O zl!iN~=%p2ON;reOxP-CfQrhxqTl@z@-;LXKnhyShA__T>^MZ{?v0muq-<35l!Osr}u%iW9#>MQ;6y~dM^+=l{uXOdu- zn#yuFE&*MF`F6=Bau7pghq))(zfEYbn%vD$C||{i_AUvYFziG%2j907?dQ_rHR(|S zT}Qw(Smyvqvn9bf2Q1&aE#P5MP4Ka2lZ9Ly>v0FJhhD4fsy?-9646nF+x+Ssx{{AOx zrIP=mX|b~oZhJdfGL_TeYGj}f%y3X*d|`y5$hiT9lBtwVuSW*D!%|97#gM;C)Hxl$ zhgrUaXhJD_#oSRayg+||t3@I6(v?Gi6=Bp-EU!&^xTb{1)jIl_x4@40cidHja-_wc zbk77bYFn4dr*xCtMoh}y4b6>RZKful-q5xslrbX5@&$IJCxPxrJCm$N+MOkokNOt*Z7oC$F=Fwpf3%Ljqs{od&Am1pA2oOMNl{dPX*S5tznEZVv@lH75gcD9UVG{oWd8ne*npt6?00000NkvXXu0mjf^YrPK diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png.import deleted file mode 100644 index 88af5e1..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://8lsr71y25n8q" -path="res://.godot/imported/Switch_Controllers_Separate.png-8b202bd393de46b2f97712ac19581121.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Controllers_Separate.png" -dest_files=["res://.godot/imported/Switch_Controllers_Separate.png-8b202bd393de46b2f97712ac19581121.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Down.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Down.png deleted file mode 100644 index 7b7b2b297c22ac0f49fc7c3696e194f397f9747f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3578 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png.import deleted file mode 100644 index 8a8f63f..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dq2ypo4cx3ucs" -path="res://.godot/imported/Switch_Dpad_Down.png-fda4a0d96c9c1d604adf4addc863361f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Down.png" -dest_files=["res://.godot/imported/Switch_Dpad_Down.png-fda4a0d96c9c1d604adf4addc863361f.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Left.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Left.png deleted file mode 100644 index 8efd7a403545b86e491ef32ebef806f36d2dc5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 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 ag8UEvgmg}>CL)CZ0000 z%}*2E9>>3D`T{Ku_C*7<5X*ulU?L4^Ua&L?f=e8xvjW6E{9Pch8d$*ZM5o zC@$O)>D9!b(FD2x0~olbG&N#dI?$HB%()9Fm$uVV+A}>fIG+u}nVIwZb-r_6=A7Tm z0SpWb3=9nFgYb5s8cwJ4cuPym5X(Hbx3_0wvDgO7JXxYSK{`7-FAIV&P6)XUz@d_v zIHhz_mgVP>NaQ~%*{BOm3F7s7{{nEY$!7mvTU)!|WSbQ+@phnq$K!cM2>CY$)5D@D z`Xotu&B1mVnh?a}@mwQ>JmF=Z5HfV^*s=KL=H^FUKJ59z+W`RZcswhF5TDXMK@eav zvAJ*Z`8;GU`VrP**7?1v8@{#%O!2ZjN4c6MGinM{uXjMV!p z4~xU$fYoXR0JOBUFdN1F@#6=!x3>WRnM?-pc)aYG(hI)-uTomAe*pvtA&=j`e_u70 zxN4Q<@pzt@Or`*uD8^BR5HcbNLSSTM0VvvTl>K>GEEcr4w=>K8kc^LvjNDS%q1dQXO7AJ%L4qK_ZnvvCyj_~N zD2mMT7DW+~Bmn^W`}=YK{(XG=_D%8F{lCAkt&~=6|M&0TF*P-XSS+Sw;vRs1%IuaV zbai!|5(HtjG~H^o!r^Fc9GNJJa5~w>KgVJ*NRos*ckbZw<;zU-uEf))Pcb()x7WxQ z5Cp;Z_U+rE-d9j`y}$z(t&-TU8ex1*=02g}RL2cBD3 zW6;*t2B*_mcdRXM&YnFBtJR8=Cr_$oBauibKIa@nU01ZNtxdOLoH%i!DS;66mT-Mu z)do0q>J)Dms`A?jqV+H#)dew|%{X)BjM`>uroX?xuJax|cz{GA!PuK}R1?H(Hlwev z4_B^SK~GPQT4tKYt5>fuIy#Dpi3wGOQALpM?rvPVbP0aHztX#W+-M}+RFWi2OibX~ zwQG3!@+CvB{tr_@TrL+bUc89G!NI1yC&-JnwKY6^_z+jGUd6|cY+r3>B8bgq!|?Dh zE?l^P8#fRNg_z{YL=d;z&2!|GI|~a7`1I)$lf0M=+lE3R zL?RLN_V!kcxjl-AqKNVFaooCfi`fmyY#cq8%VBA0387F3eSLjLqGwf&v9U4Sy?Ynk z-Q7&{Wj?WyN~I7C2C=%jih+RvCa*NJWPX0Wp`O;cbLa5r(WAPbXAVNOnWjV{fti^Z zxLhs_4i2hirfGP+UOaj71n1A6SJjT{!Pe1e6w}kwYMZHN=UPQ!*4g1_4DUX z-Y!(-w-aQ3exA1rRjEr5rEg8?h4uCIrj(LgE?3uiWo?Kc2nR+o#N%;nZEZ1~q!I)H zR;v|+5VW?osyc=H`SWLtj*b>ZF|wY@t?{NUyVf-|>e*}-vMd(~kj-XmcCJ=Zsnp)K z8WAT2-n@B()2C0XlD87cWD<*ui#6TAWk;k^sesafo12@Bdv*vUNm9k;=H@15XJ?z* zmb`fJLNR?eOt*-#5)zBWHf%QA*_n46nZ3SFI?nwl#6!gi%!`W(RZ(!@+A zqk4nh+S*z)E+k13v#P5QwFvA85)1~hxVTt!jEd3krFNbx`KVZ_g~Q?3lv2eL)Fz!y z7qw3;Z-D)IWwY5bF`CHp>FH_3ub)HrUjS4&u1Om4!?X24D?~3vm zz~Ljl3`&VpN*`Af1E`_f8xDv6bUK}X+wJ!2l+uw(U!ZP)A*iLpyJ1&4xmuQJxO` zc4Jvu#}Gtg7=maFLlBK&2%<4``Ms>+;o$>=Cw~3T}~-pEs|DZUsrDQdn78DNA2jSt*)%)El}L1lVaO z_7Bx_9#Ut5t_8{Eaz&+NWo4!AXb-KRYe4{DX=w?`WD?0_5=%=zY*E~d_l+LD7sq5)-7%i^Lf=oi9{k*S1B+sFfcGM&>Q~)%q#wXn*ey( P00000NkvXXu0mjfbmokO diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png.import deleted file mode 100644 index 41f76e4..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dubah62ttpnc0" -path="res://.godot/imported/Switch_Dpad_Right.png-74599bcfe029ca89e967999e956aa664.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Right.png" -dest_files=["res://.godot/imported/Switch_Dpad_Right.png-74599bcfe029ca89e967999e956aa664.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png deleted file mode 100644 index 700a8ba7577f641049d71c37275e3b9e104cc1cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcmV-&361uNP) zO-LKv8pr=XB0G1jFfcY!UQU`T}V^x{uT<|zI}HWH@A0pm%f{VtGD2$ch$Hp zl-qY#uwX83tXNPN!fh6b)T9B;hlwUJlbLfDHIhswnvZiblXiX}IA>&5c&GIKEiU~Fs*%gf8~dc9EFrIa%5Vz-0tf+&jOQ4|H$ ze@jbC-0dzcEkSKpmgN9D#5W%)WyQIwAJWsUBFD2f8Lhg1t>v9K$m z#bUV@MC(E@Jp{LV2v1B8(SU^*pFe*F0NlTSzw5SHqq`uoEZ^8#Nt4q)2a#&wqzx8}An?~pc>n=z;9&&tqtmz#U*4EZ=e0+Rs zKBk9g(2jT9Bt|R87%_(QNrGqLCmR>T67oWw#h|an3IbQFg>Ie zLkRLK+HQpIg0PreY=@o?>XVa`GlUR7AtV5R$zp&jA^dt(goa)J)YQ}_!}9D=N<);= zz3<<@A2oBrt%6KUOgs`raRor2!@|{}_Z6vOe;90kXMhm$k`My7+Z~c+c_ooZ+_;wb z#(|;B<$5cMVu*1ee^mmaD27}v*V~&8YAA@y<$6m9dBMC`zc_@D7dMHbDTv$c{!K42 z?%cTppU-!_ZM9mN0D>UEZnraC38F@p zWxRRw2G5>7!}$0(Y&ILSylplca=9E%PEPRt{d=69ond&G*CQxExm-p*pVu7kP)c6{ zsGF9qtM$pr$r(WqqUv<3)ylQ-S}ZIqU~zE~_wL<;$K&ZJuV^%iFJHc3YikR;ySr=( z*d&=u2BlJ|E?rR+kGl6&C&*Q=DpYe2A#ggKZLb_`hvDI23=R%nZ;y?QVPRnbI>OP>5l&7{u)Dj9)6>)I{n>05nM{WJZ>XRs3X;iWU9V1- z<$$`^)l}PKu~_QFAcQb&->Yp63=GueeR_I|j~_oWu`xI}i2nY5c&Hzq=OifL}>-E+>3DxWL_4VQI-Mg5YnnE}nZfdDft1uO0baWJRb8{FP z8e*BP;jr87@cDf3csw{fJVYv$VwN`(L2Nb~d_Eu7e!USH8XCgGhYyiVCb7T2k3yl) zah^LNfPrQ&n$+N%jN4p=kyZ&C?@0ISssLJ0c%`?=g6uBKEfp;#<}Qi@Wk#C#=uGZ(E^ zT{jifB}sy!C^Z5!bAPy1s{8Z<0|OWt8DVY%0MhBS<^!X=P!y%<`l`Fc3xz^R>%jB# z^Ug}uBDq|Si_P=%^R9|fv8jbtUDtU?I-NeV*=!#OAy2E*i^U=oMd3E3P6(-+a!I99 z=BuV17@H?N+Yc^k$(huo$y6z3zjecnmKi(`|L#b5a9?<*x`f8f0 zTrS6~=~8<}qXleTBB+(98I|Ml_+OM#%@cSdNm5OF%d*0%^O7V z-K2Ot{<~hHbn6K!J-8C%_eT3~?6+QtvVtEkuQ%z845f7CCNY2}y1nsu{Ev~5k=J&+ z{VAn1KnU@$D&ZA=@cRlvt7HIZzG1mtD5X(CNGPArYX)&OO?6+=>GWATonD8=^7&42 zyWN{G&J$XDu~_V}o&_-HvJ8ePh`}%gF&L&G2E!D@VCep8jdpnO;K8knCz8n|wzs#t zR3ditq=$U{`jyEsMx-YNNu^RqBoYnxClU$nt3!CvlY#)i;o)Ih`;1P{3Q{N(5Q#+U z(j$=w^VNjiq-O;Ie#D9Dsd`D0dNy`c=xIU9<#LUe@O-kVTlBOb01ys`ki zhxIN_$MoblM9t42M1`M15FXF^=|#^sSw9=5AO^$mP1fb*CGz=v$IDg~MZx9eC8JXD zLw7+ar5W|x>(rkfs(#lMD~#}YBQ11qvM8k?by~4lbr2Hi1)hX8=f<@%3$#eKK9ZFy%m(LIJ#C=?1WD5YHwszwq6 z0N6Ir9Z)P5FLSxvzXt{eKnU>z=;vwgYKiB|cs%|GPdlw*m?lfj#KgoSUU`e6n2E(= k`@HfuF)=YQG0}tn1NSQWFE(xm*Z=?k07*qoM6N<$f&ny(4*&oF diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png.import deleted file mode 100644 index 5609977..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://u6uclokrrbaq" -path="res://.godot/imported/Switch_Dpad_Up.png-38cc365cd950cad00eb7342f63b614a5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Dpad_Up.png" -dest_files=["res://.godot/imported/Switch_Dpad_Up.png-38cc365cd950cad00eb7342f63b614a5.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Home.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Home.png deleted file mode 100644 index 9b6733c0b8908e6e84bd4a32d82331af019e0a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4631 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png.import deleted file mode 100644 index f004694..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cb6gvej03avm3" -path="res://.godot/imported/Switch_LB.png-fc77289764fd409ac6c0408486b0c16b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png" -dest_files=["res://.godot/imported/Switch_LB.png-fc77289764fd409ac6c0408486b0c16b.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png deleted file mode 100644 index 6942e1f9b1f22dd09130ed8d939de93c56a3f63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmZ8jdpr}|8y~rhTt;}wrO{|HDuhrjxlWi>b4kf8DG@JX^}65hm*m=V3)yTgW9BlK zu%#uj@S@43uok7;D!1SI{rR5HbI$pk&*yxe=Q+>wJ>Ta^N4VHaiXRjQ005GX4mL>s zj`=fzBK$RE>A?j6K)lb<#_B@U!*$#!a>@H3WA8{@_}a?c%`?^Pt^iysp{OW+6pnKho6_oYP$L{yDtAoEuCKiqa4~Mb7&SH;KQ0%<}Cv-a7<* zB;R6;@$1=ve#U>tDi&1269!o772i7~o*WVz`?i$V{z6%waKN#k?d;JV!G!~Hu1R?( zm#;%>Qvn%ebq`1+(ykdH@Djva9#S#3mk&Z#7RLCB9hZdP$VYm~3RQ)NhHkQVbiB>Y zW&T_czdD@*^hdy%0C-YfLEVj7CX>0>Imy#lECY{V^z|~9+^Mi6rNW7`)(+`NFFcB{ z_v80Jq z(v*rKB;V=I=1Xd-XnpbPiD7K;#%K$;(|dyk23{lcii?W!Mlg8}5Rg=A=kJfyR6=GZ+B@`$B8JWB#(mNv@0iU!-2nkw5_ktbwu$t za4b^i+8>*zB5p@zSqx)qr>$H~CB3*tiV_+sQinmn%DHvxix)Ti1{aS%T|8b?Tr2>{ zsFoOR;mpe>5tXoFo!5z9{#IwNh`n$bSzke9g?wrkYrKecN#lA#>l3FMTDCQFA@OVIYiO1Te zeTQ24X1yiwDB!1-BQg`|Rb5yFkYk73&hblwIPM7`qGlD6ft5dDcdXa>=T ze6h!&NmT4*?`3XjH@L~Ck4|uJvYXx5*m%Wx5uJto=KeU!NEEp-?CUVG_*L zzu8_E7%iG;1-b9Y7XXFD6^bi>IKHVik%bg9X_0@M_e*_1!635fSEHjeZ3{$gDK)|Q7f~uij9}?fULTf2aN6SYw%0~sG zwkN`w`PXLJUq~vtHkFTRc@Y&bo@!e#b&PYtV+$W|@9i+Jz8oPLA@vheRl`j=pnWS+cb1u zKGTbAs6;k^6*AQyz}0as(!@ktQ=A%BHFLNUnn5Tc_w;1(p?rZbng3$|5T>0Yq@I-J znZ}9>US)RDXv6F4>z|8D;k9|A{`v4)P%gtccW!ppny;dZ0x5O5 zQtp$f5R7^iBA{_J+b6JQynkdwjJF!m;onw?U2p)Q5FKc~@?0k(wbAibP*AofI#$6zuHC9IaG7qwOc)c>9lw#2B+5s2$76%~j7> zLR8+Esv&oEW$-}@&CvJ$(cbzkQ1+D*YFCt*(A+o}yd7fDt&jFUZQd8NOiwQ_SAKo7 zy@8a|KI5yG;Gq<2F8^+Kcm4w>Xz)4Z5gj~*E_E?ivo}|(fTs24W?JP>2BhE=m%O%1 z7#lZ=VOvp|bnyCv_ zA=ZXH88b6VOj9pB-i3J6SEK{n_;d3fC5K;w_!QJ~hi~S-S;Td%XHKm-`~p>B5u4L~ z9?rz$XT?`cy%QvsQi+$fl0YzBT^f}81V!*Czut2B3*DY$ciKFigDQa z%0dOgDMgaN7OEw}l{zGTrF}K*|bQtGi5#8)M72tbM;r?d`QAq72wki|vYl z3a}qD?>yYm+)V45n<*KzZvi$2aYPi}*)6O39hXxLUE^&b|j?!9dMyp(V6)7WLuq$pSM#>cS3P|Q_L+(@xQ z4)78Eqv*U~$denh^VOI3WtN&V5PZsZW{D@|J*~8Z5BL`AZc`@r5Ue)++HcJ)j*8wF zR#;TYOroZzLqXf1_E!u91oY?%o%nAL$v>|~GWG;grFijKjbTpwjuzl(>taK)zMAkq D3j=lN diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png.import deleted file mode 100644 index 3badb9f..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://savy2mhybmun" -path="res://.godot/imported/Switch_LT.png-b154a02af7bcd266253a208d8d610852.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png" -dest_files=["res://.godot/imported/Switch_LT.png-b154a02af7bcd266253a208d8d610852.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Left.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Left.png deleted file mode 100644 index fd58439ef6489094a2031991d1ac307bba61c58f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3586 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 tGF2O;w7+bl{| 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png.import deleted file mode 100644 index fc56eb6..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://by1vmleujtq1i" -path="res://.godot/imported/Switch_Left_Stick_Click.png-7992de9526c87e19b6a04a21954e96af.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png" -dest_files=["res://.godot/imported/Switch_Left_Stick_Click.png-7992de9526c87e19b6a04a21954e96af.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png deleted file mode 100644 index d32608e165c263de3d42c0ca69d627a528c61c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^DImaSW-L^Y+%p+(Ql`4G(u) z2$eKm$~(lNDWRdf!O@6mb;{%=Ul=Yt;yAh1nCa8gMK%w9|N5TubNbym!AwA75a7Z6 zr;`?bt@^tqMlZhj-0nG_m%Y=C-K)6ti>2@7e-$=$XJqxbE|uPmKKFBP%C|nA#};{h z%P)VQv#@=V_R~4#s>S7LTO)Mhp7DvYdTOradcI?U2}k{tjn@{vEsM^+8v5$D-Q4rf zsb(bvqLcfJ@2R$xeo4=;OtC=VC{UbM1U*q4FQ`v5+ z2I}3E=WAcT)7jPj)Y2(Ix3`_YY?ABsJU{ZXiL)mU!fQa*gSx*AcR~y|x+X3w21$6j L`njxgN@xNAN;Z(U diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png.import deleted file mode 100644 index 9a4233c..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bdydqv6vi48ix" -path="res://.godot/imported/Switch_Minus.png-b6cd3147393308196e49ab3a608d1c8a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png" -dest_files=["res://.godot/imported/Switch_Minus.png-b6cd3147393308196e49ab3a608d1c8a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Plus.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Plus.png deleted file mode 100644 index f1b0dc48740bd29c729e36b04ec0b4cc176ca570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png.import deleted file mode 100644 index 1c7a578..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://s2xm61tj0mfy" -path="res://.godot/imported/Switch_RB.png-3d9fbc66dcc67aee9a5716cef6ece679.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png" -dest_files=["res://.godot/imported/Switch_RB.png-3d9fbc66dcc67aee9a5716cef6ece679.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png deleted file mode 100644 index 6aef3cb37574ecc2440454fc3881018c353ad933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3066 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 IM6N<$f|`2id;kCd diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png.import deleted file mode 100644 index 2109b91..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cccvjq78xw3n4" -path="res://.godot/imported/Switch_RT.png-521dbc557ae52cbe19429b25fbf68d18.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png" -dest_files=["res://.godot/imported/Switch_RT.png-521dbc557ae52cbe19429b25fbf68d18.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png deleted file mode 100644 index f524c6c9cc970afcfc15259e3c141bf766bc1162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3495 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 VAzf^Fh^YVo002ovPDHLkV1fWRpz8nt diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png.import deleted file mode 100644 index 094f135..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b3os8st4cai36" -path="res://.godot/imported/Switch_Right.png-cd6972267e466e454282edcdee867c3a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png" -dest_files=["res://.godot/imported/Switch_Right.png-cd6972267e466e454282edcdee867c3a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png deleted file mode 100644 index f2c605b76afeec719c2515e0716ce350f99986dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4578 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png.import deleted file mode 100644 index 5b96fa4..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d1jqxuup5llkb" -path="res://.godot/imported/Switch_Right_Stick.png-9a091e8f8aab1b8517e0e63458ce9648.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png" -dest_files=["res://.godot/imported/Switch_Right_Stick.png-9a091e8f8aab1b8517e0e63458ce9648.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick_Click.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick_Click.png deleted file mode 100644 index eecd4e8b13fc3b85af278294295d4d053d0e812e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3360 zcmXw63p|tSAAcP}H8t0R+)YU%Wk*EGm{<&RYm4Nd8iwUM_am3NCNU00X>^)!$bH1g zWsZfTkr*0FBO%SD()hpU|Ns1-&*%L;@B4l}&+qa)-|zQ%o(w0@Dx1jkCZP67l zbc5yfh3sSU0I`1E?=aGPnJ8dZ!b$8C7p^CfwK(4mU8Cy)0W%! zT9TZk*oebLN+Aj|y+rvZf`0KbzGkKtx>9Cv;mfPjia59J)w5VElo4@tM$*bx#?51R2cYxl06sn=ll z>K3BkPEKZYmYU`Y7|*zGLyxSdDBWT1w#xPzLK^Y<8!?@&Eyome?rPBK309J1d2{Lr zpR~6dpLk*Gnxc4xu8sI2BZW|62oZfes;iY-Mfl3QV=-@iX)Ipn-wZpg2JQ>Luuf`w z-P4c+gV|+v7=fu|+dR(jZLfVidNTz@xJ-=*jgMF5q?mt*d|!)-kTc)n{v|4xh1w&x zdG@ca8kpo}5r?Cc?D8Md^=`G@5BZ&>B4G)AIa37Tc7ZOc7W!T>Gf%yITYyV)2C1N;iLI5R7}?AC?%%7r5`SV@(*oowlmgcWLx~RqX<$G zW|yoXxm*9|f}+4n6~v97dz;a|b@K)_^O1|ngFw3wm6_Kp(SK@d>Vb1Jt!A4AN#0Yk>IfPY8j?J}NE9TR^seg*znsqqu zm>1)em(X>X)9ms6OET5gNwXmN;{U5p}o;Ph6r3HYdET+{RO9jZ_Y;Z>?~i=61o}Hs`ok zr(&Mmd%q!Gxl!qlJI3l4e=@J`A-ABU`CivULzW0hRIF^$4Q&QdZo;0YDkRDJ)>uWy|KCP_i z6R(3@fu#3X4`1N=R=2jc7Ei7?qZuiAiN#gqw@cx>XO(ki4cywGfmbYVX}jg>R;H7D z9V)SZ@yip-T02@5UI!VUQaL2#n~(5zg*){xH)GEI_#qg{sNDoV33KK^=tq-b76Naj zVib?7=9Z8xM8007E*vu-DcAZ_1tgOU%6Pb9GRS6i{!GX$m&*lWV`F8RCkhXUSyHSi zDWeE|Om;h=|V#caX~M!xa%;X;B-fV@a&sQr8L&TiN958<-thE zHLGNxdvh~lq5PZ*9%Fi|Io)9<%lmY8H&UTW|;BoY!frHE3H2e%OwRlkvLAp#InB5fbrYtgOiA%>#}v;U9&O8 z&e-544N!@y2%z>+>|!G#QoR$tExeJOBUSGs3qD9qtr&}0cDKAsFk3I7)1fGm{`JkX zZL+=tHxbC^li4bX8;hd~0ne4AkWe6c$M_@1#Z8{UU|jiQ=u41iUMLWSw-400qi!M2 z)SobtMdrG?2_NBWf`eMxbN<~51^Ak+6G`_XytIeY`vm4{76~0ecQ2;o{S0TlxZD(M zhhu2eLe~`2O#5Wa&cl=aarJ_nRwbbp6qy^?G-ZZzE~~?K!JaulK_dP^|Ni(y?{0go z?1xXE;BRgez682P3|~E^(=CQs$@tVJNid+%8NWrs*QSUYZVrJuh3I|WaqE3Z|Gx1; z=$8Ust4C&q`IYv3BinejfA{GYH~Vfwh?phNV;H7wJWnZgv=_{lJ$TR;>6}@?1(}mk zhl4B3nP6awrBE$dGze7}{@X?cBS&n@}=-xy0u2 zsd|{FUf~bFveBDzjHyKv484N(#^0@a{D7w4%Ve#ThnL|PTI-CvnB|4~%h}<+DS7u0 zL-S)|b0!82UM^2v+g(UqZJq}Cu^7p_rn#4f3LG7v=p}1=s%~bz>}m8;ub}aZ1Y5(d zS&m7PzIgrX^E#wna;v6A!m>sR?2x+Z9VVzgSLFK*AqeH1-lf1fl{h5j8U5oK!kEAQ z>@04sf>hUp*KgzyLD|fS3`_HQ$X)`WZiAir;LmS>GZZFv`)AhRtp5Isrn$FStV^C( zuYMPqBJ2y07>!UBCcN9T$RX-zS87rGaWmW*#M-d5m`EeWgl2enc#L|!sjR4hC! zD1?$7!is$P6!GbDjH4V%Of|Cr3m&V=__7%<4YRwJF^`-s7!--J8g}E-e2P<1^CpKN zJsRaB+C{8yBGR*~e`HO=)z8OKD3-_LN0-8}St*V)n`epJ*bvbL4yATk_IxdHkSJ1` zGG?|q7y9+2UH+CdKKrx-yM?Zp*0x?+N_OX_A6BngS{gbI3}~7vH}r3#LVu$A z3p*PX{-)uNffF0ltPm*>yBy8@NPD(voO5X`!?pW?G+#hAgghq&vN#LD=4w5NA)FR) z#CCepw(Ai{gft&a-nHWsM{ag{)w2}_o^#=>62?SqQX0>Mxs3Kb*f5$q9nr0N^7{!h zNYB@*kEf%LZX_$ zO>)~d7=~Yv6h(9NL)#gRG|o)C$fCRY2F($2gZc>V4YKSp+8cP=osW?0wQw_|*ptK( zB~cXr(M3WhmOxpML=ckk%xK|{Ch&nT@c|$K5Kt%-3WY+UP$(1%g+ifF6hL;7$no)U z+qUhu04~1&axMTkyU0T#TmbL$KPaU)l+yPAu5NE{|Jye4tpw@ydano}?+786+d6U} zTm$%HFc^H;G=Yr;IXgT19l+n4o`2w64hDmNHaT%4L6jIz;sSWHNloDvq}%QOrtA7O z?|IJ+O6kpfKED`^Mq{4y4Bm`%U4K_}%yAqzj)Qu=4gfehI)Y(vXCXC7l3+fcKm0wN zPB9vd9@zkZ5OQwY_Pfz&^e0dHTs7qE?Ce+k)WgUzO%tzQzlLqwJjopt{eB;=>n@sI z-}ldXYKg{~@8zOF*Y#&F1^}F&pR>%)_u;_W@CtIVXgEDRefDAifMFOoJw08rQ%Xw} z_HbcE$hh+w5Cj3*?Y0!{OXY$jNrLfsys}m#NdnLFHVS2V zXlgVXh2bepQ;bF?sqI=-q*kSxnEnM{~sWLXB!^WeHJvMk$Ko_Q^E90!d?V<|*YN->#CDh*$i1e;b;FAE`p2_96e37buS$kcwMbDzE~>{RL=aYkEu$DY zEZ;?V&Gc3 zAgqDlz6v7ZO=cw_YhML9h>*oXrm;s6Rry%`OJv0(lpvC!1d)u=1tDa4)m+sxJJx~a zBdaXCrgTAA1>09aMEI?0NCD5PhFF$WcD7r?^6?;Q2y2$PVHi@^k|O^^%$OI_%VHIz z(P)UsdLvlAiCVrOL=e+7mu&kc2&)WbP?;cxVMr-T(WLBy5=7T^W`PRUbyo_@C(|^A zO~4j5QfDoSF$_a0QHo~9i(JqnOptuxM_)OB5owd$2Wa?RuQs*M9o(|p*u zE(n5$-zqH2diXtsEMfo>2m*W)<@op*K@dDS=Xc$Uye^GKL#p>PQV5b`Sr!b#D0TCh z9JTq(niz(GR;z_D3=ssu&SwkOYBgAv^|0BqY)B_aPQ6}7yjb{^Tnuc1f zwii2X%k3S$)tG#@&m>76e(P-Um%oaYU4)<6A5S6wyZBvDeLqj}2qnl4*~Nk$E2!*Izt1}4`o6z(%~rwne$w;2akJUHAcXw#vpom` z+~40r)3k>{*mJ=5ecayO;^W7U%m$rO`q!5)U;gDulY2UMuh)B}Y1$3%dC!eaKMKa( z?fw2W%S+z#o*6D7Oac|*bF%;d002ovPDHLkV1mDufeZiu diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png.import deleted file mode 100644 index 1da9b49..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cl0owijnhu5pc" -path="res://.godot/imported/Switch_Square.png-e3ed4021db85fe9e3827c68afd31c3ac.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png" -dest_files=["res://.godot/imported/Switch_Square.png-e3ed4021db85fe9e3827c68afd31c3ac.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Up.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Up.png deleted file mode 100644 index 352f890b17692c8504ad22270ee6f19c11968b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3422 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 AQ~&?~ diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png.import deleted file mode 100644 index eeee651..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://7c6ie8ef23ox" -path="res://.godot/imported/Switch_X.png-8ff15c2bb86e671b78d91e2041718b60.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png" -dest_files=["res://.godot/imported/Switch_X.png-8ff15c2bb86e671b78d91e2041718b60.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png deleted file mode 100644 index 46ac2160d8df6dfe7a3283935cf3daca3a8cbed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3736 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 diff --git a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png.import b/addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png.import deleted file mode 100644 index 0ace6f9..0000000 --- a/addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bru7lpc778npo" -path="res://.godot/imported/Switch_Y.png-f47eae5d6991151df29244754a422398.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png" -dest_files=["res://.godot/imported/Switch_Y.png-f47eae5d6991151df29244754a422398.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/switch/switch_controller_renderer.tscn b/addons/guide/ui/renderers/controllers/switch/switch_controller_renderer.tscn deleted file mode 100644 index 98bc510..0000000 --- a/addons/guide/ui/renderers/controllers/switch/switch_controller_renderer.tscn +++ /dev/null @@ -1,101 +0,0 @@ -[gd_scene load_steps=21 format=3 uid="uid://dlhmh4o43l7pp"] - -[ext_resource type="PackedScene" uid="uid://bsaylcb5ixjxk" path="res://addons/guide/ui/renderers/controllers/controller_renderer.tscn" id="1_mxg2g"] -[ext_resource type="Texture2D" uid="uid://bptn4jygg3p8q" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_B.png" id="2_hj4a5"] -[ext_resource type="Texture2D" uid="uid://cl75ptbm7sfi5" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_A.png" id="3_0hjly"] -[ext_resource type="Texture2D" uid="uid://bru7lpc778npo" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Y.png" id="4_b8ldp"] -[ext_resource type="Texture2D" uid="uid://7c6ie8ef23ox" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_X.png" id="5_qpo6l"] -[ext_resource type="Texture2D" uid="uid://cha2jimmsyrsg" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick.png" id="6_o36fw"] -[ext_resource type="Texture2D" uid="uid://by1vmleujtq1i" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Left_Stick_Click.png" id="7_tn44v"] -[ext_resource type="Texture2D" uid="uid://d1jqxuup5llkb" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick.png" id="8_gfspk"] -[ext_resource type="Texture2D" uid="uid://denpxaxemjpg3" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Right_Stick_Click.png" id="9_ktbic"] -[ext_resource type="Texture2D" uid="uid://cb6gvej03avm3" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_LB.png" id="10_6uo88"] -[ext_resource type="Texture2D" uid="uid://s2xm61tj0mfy" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_RB.png" id="11_xm8m7"] -[ext_resource type="Texture2D" uid="uid://savy2mhybmun" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_LT.png" id="12_y225d"] -[ext_resource type="Texture2D" uid="uid://cccvjq78xw3n4" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_RT.png" id="13_xpnov"] -[ext_resource type="Texture2D" uid="uid://dxmy0dvee663b" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Up.png" id="14_ujug8"] -[ext_resource type="Texture2D" uid="uid://cyjwul8mif4s2" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Left.png" id="15_2efb3"] -[ext_resource type="Texture2D" uid="uid://b3os8st4cai36" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Right.png" id="16_yqxw1"] -[ext_resource type="Texture2D" uid="uid://qt8r1byskjmu" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Down.png" id="17_gfqch"] -[ext_resource type="Texture2D" uid="uid://j3wpcxyxsy2r" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Plus.png" id="18_s5cn6"] -[ext_resource type="Texture2D" uid="uid://cl0owijnhu5pc" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Square.png" id="19_iegd6"] -[ext_resource type="Texture2D" uid="uid://bdydqv6vi48ix" path="res://addons/guide/ui/renderers/controllers/switch/icons/Switch_Minus.png" id="20_kalbc"] - -[node name="ControllerRenderer" instance=ExtResource("1_mxg2g")] -controller_name_matches = Array[String](["Nintendo Switch"]) -a_button = ExtResource("2_hj4a5") -b_button = ExtResource("3_0hjly") -x_button = ExtResource("4_b8ldp") -y_button = ExtResource("5_qpo6l") -left_stick = ExtResource("6_o36fw") -left_stick_click = ExtResource("7_tn44v") -right_stick = ExtResource("8_gfspk") -right_stick_click = ExtResource("9_ktbic") -left_bumper = ExtResource("10_6uo88") -right_bumper = ExtResource("11_xm8m7") -left_trigger = ExtResource("12_y225d") -right_trigger = ExtResource("13_xpnov") -dpad_up = ExtResource("14_ujug8") -dpad_left = ExtResource("15_2efb3") -dpad_right = ExtResource("16_yqxw1") -dpad_down = ExtResource("17_gfqch") -start = ExtResource("18_s5cn6") -misc1 = ExtResource("19_iegd6") -back = ExtResource("20_kalbc") - -[node name="AButton" parent="HBoxContainer/Controls" index="0"] -texture = ExtResource("2_hj4a5") - -[node name="BButton" parent="HBoxContainer/Controls" index="1"] -texture = ExtResource("3_0hjly") - -[node name="XButton" parent="HBoxContainer/Controls" index="2"] -texture = ExtResource("4_b8ldp") - -[node name="YButton" parent="HBoxContainer/Controls" index="3"] -texture = ExtResource("5_qpo6l") - -[node name="LeftStick" parent="HBoxContainer/Controls" index="4"] -texture = ExtResource("6_o36fw") - -[node name="LeftStickClick" parent="HBoxContainer/Controls" index="5"] -texture = ExtResource("7_tn44v") - -[node name="RightStick" parent="HBoxContainer/Controls" index="6"] -texture = ExtResource("8_gfspk") - -[node name="RightStickClick" parent="HBoxContainer/Controls" index="7"] -texture = ExtResource("9_ktbic") - -[node name="LeftBumper" parent="HBoxContainer/Controls" index="8"] -texture = ExtResource("10_6uo88") - -[node name="RightBumper" parent="HBoxContainer/Controls" index="9"] -texture = ExtResource("11_xm8m7") - -[node name="LeftTrigger" parent="HBoxContainer/Controls" index="10"] -texture = ExtResource("12_y225d") - -[node name="RightTrigger" parent="HBoxContainer/Controls" index="11"] -texture = ExtResource("13_xpnov") - -[node name="DpadUp" parent="HBoxContainer/Controls" index="12"] -texture = ExtResource("14_ujug8") - -[node name="DpadLeft" parent="HBoxContainer/Controls" index="13"] -texture = ExtResource("15_2efb3") - -[node name="DpadRight" parent="HBoxContainer/Controls" index="14"] -texture = ExtResource("16_yqxw1") - -[node name="DpadDown" parent="HBoxContainer/Controls" index="15"] -texture = ExtResource("17_gfqch") - -[node name="Start" parent="HBoxContainer/Controls" index="16"] -texture = ExtResource("18_s5cn6") - -[node name="Misc1" parent="HBoxContainer/Controls" index="17"] -texture = ExtResource("19_iegd6") - -[node name="Back" parent="HBoxContainer/Controls" index="18"] -texture = ExtResource("20_kalbc") diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_A.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_A.png deleted file mode 100644 index e22bb29af148f3d046d4a5147428cc7d25f6270c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3912 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 M07*qoM6N<$g21vE%>V!Z diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png.import deleted file mode 100644 index 177a232..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://j5kp5tnwtysq" -path="res://.godot/imported/XboxSeriesX_Dpad.png-4bf4aa5e92bab139204438b5ac2b303d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad.png" -dest_files=["res://.godot/imported/XboxSeriesX_Dpad.png-4bf4aa5e92bab139204438b5ac2b303d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png deleted file mode 100644 index 93478eed7af23c0fc098a8dc928a91fc75f43b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3539 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 N002ovPDHLkV1hC_;xGUJ diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png.import deleted file mode 100644 index 33030ff..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d1fgf8ia7q4vo" -path="res://.godot/imported/XboxSeriesX_Dpad_Down.png-04b87c5546afa2b93f9116f73733624b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Down.png" -dest_files=["res://.godot/imported/XboxSeriesX_Dpad_Down.png-04b87c5546afa2b93f9116f73733624b.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Left.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Left.png deleted file mode 100644 index e1e3dfd12ad8e1a76e541b59c314d67807d7cc89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3466 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 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png.import deleted file mode 100644 index 4dc009f..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://gsilbr1bntic" -path="res://.godot/imported/XboxSeriesX_Dpad_Right.png-e6fc74a1f6107eff3516a80369cf5807.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Right.png" -dest_files=["res://.godot/imported/XboxSeriesX_Dpad_Right.png-e6fc74a1f6107eff3516a80369cf5807.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Up.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Dpad_Up.png deleted file mode 100644 index a466badd66e900031ae8720b7fee87cbc974a9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmV+b4*&6qP)D8i+k&>?lGtM*jwGdpzbN?Db8O| z_t+peDTFa!a7sO!Vt2xwe?8X^&J44#=lvh4WP|&+`*z)(p(8KNZ19i z1K|EVWdSe%aKLfg{yfRa&Euh!N~Qev+i(As=lOjAe*hrPLk=560KcD1CfiF(OVBj! z*>E@<&02_=T1cf*DNB;HO9<54oQ+i-K!`Ho*&M%m}I1>mPF*w+EwX3L>Oht)kUxp<1otl~-QD8*jXk==tA&|2=;BE7}2@!t~(5E7XaQmfUTa2$6)2-#q-yAiUrwS{W6iuc}o z55;0JQ@LbW#@Anejb5*Zr%#_c%2`4T3@D{L$H&M2$x^P&2&q&mMY= zKKUfD-h4ifd_Esa231v|s%qeUAAR%@G)+S;_nS*~Ap`(GDLqsaWhbj^O_2s=z-R8_^r#RX(pcHF~~;RiyWZx~@C^u~=JM3;otcK`xiW+S*zqS$weDXf*y^sZ`2o$(Kr#W%!FjgcxCq zqKM&e82F?8EJD+?P;z+@YOmW%7E@L~5JI*kNooVwOvA4vCZt}kKO%&*5#TTK`8*1R z0tg|Y2r)q^jr<)uIF5rTidJ2Ac-5QF=fU$lMx&8$=YSB>k|e1kisI(U$w{J7exfF; zQmK>)A%}kcf)D~x6d{V@lrq9L6Xti~lEHr0jf@~!yySP0bAu3an6&wdO^7k-ZWBU0 zXJI*x!_v}{Yx9$!-A)~0WXb3ASXx>F$9b#Fu#|QZQeqJjh76wPQ7jf?y_K^@6l*OO zi{N?hmfj>Kt}L+#ktFHBkBodi4@r`IP5eb91h^qZk|f_w2O*@@Xf!^JBTHmL>h=1^ zgph5oa-QcQiouh&nx;Aa%?oj45k)b`Qg)in=AWa=5{ZyTqw%5NID_Z;&@-_ws)ewS zB*~W)00+%x^PMQNgeJu3Q5|@dM#woviwgExXuW1KTPPGT8qGFqlv272Aea!tnI}#Cj|86Q zQLELgxAxt4-muMNv>F6!7@*<0(Q)rBY%-dc7X5uCA=lj~_qAS6_W)Sw^*5 zO;mpn27>{{`0>Xd9a)R2s-n~B;Pmt~m1lTC*LBy9gs$rwY_m1hWN{p~Y5#(~ z{a#&N#oF3hqG=N^*agnza(MI2H&g4P777I%9UVCag6r$+SYKaH-n$Y6!TQ@w#RS49tHlM+^H^C~!PV7Os!htu$_mcT z&N6r4JkO(2si5EQCc10!)C4<2c7a zgY_qNc4s+=deLCl4XZo184yfZan81a$R&J z(Tzn2A!O5DX!jv3W*tL#kzm&it2?(G1XlOH7INo9;vuRJVUg{8$Q>f%j*tbz9U%*b zJ3>vUvI88K@MCmIUlQ1L z!|Kjs&}ivCc9WHL1o1^i65aS(2pdeX2Z^%S_Tsj{t{YZ&9vcuiEkxIKhYw-R%ii`S z*$n2k!>$`vcWzAqLf~IMfkgBTAd`gDrc}syD z$7N#qtnS=?pBW1QoH6wydjv~WRZC!5mZ#Ej(y$V@jbIc-$vk2xiXtRQ%G?*SSuSqP z6{Ylu{cM-U*N-G!f)EDgb{yq$Ig_3oAq3@eIdGedw7}{t$bSGfLMWwe``v7pZI52q9QrUY^+)YBHIi+wEGP?L!B^sdIZ?)>I)d&8ntp`0l&!(%6yBf*=SG z1Od5R4%KRPN?GQ9DPF6QqQY&TlF4L(UatpD(=Z;7U6mFW*|vuDpNLfkUbX8=cY1$fV89b_wu6YSeMi|#f1jI=rp5pm#labXCV zC+3vWbl`T;m5^??`z>w`JGnzPXd60qz;mdoY1&?9;=JVW)2-)__4M@g%SNNo@mc_y zWNVFC_=q$RH{0JYd!JI;VJ8#q@SQ`@b$vIN%eCFgR8`IVNQrqP?i7pLX8$JinoZw?w&?IXEPzsaq$oYD z$ml4F5_wm?$b|I!{R>4=HsRqCG{R&u@me?^hzAcIU^1CNRn^es3WAVmJM_t9;z;FjgW%^w*iEjA_zj3Ne5}wZ5-?U$21QrPBqng zI2?{HFE9VQyu5sb8%v3lP_?wQWc__{aREYzWff^)G#a7T>*4wH=Tp7E7)cHTO6i}D zkB|SAieL;fTbI^sHs7I?`kv-y2b+s!hadJGcs#atr1SGTXJ=<&MFfDh zEX&(j9p9b#LcvC(@i)Iy7Fgu-d25-#EMP8s2szy|&~<(9=F z?Xe()SZC+53u=QpjxC~KE^C|P5;H5zg9sCIU2JY18e{AiwK-2&0JJHk zZA$6EESe@SEX?YEqgS?T_?cNHdJhb1*q?_rxM5)kVPTN74WMOMPg(>Gj3s0pLdfBw zkicRg39+MAt35Gx?rgbjMd$~U0A1GyQ9`MAxWgS55&s9F?6j7`%Rh<$0000@M`qfKb8Eh42&vbm02M(%~C*vRC5mk?$`B0^KSmCM`}$)%R4 zDR+`Y&HXyLeczwIf4|4$yw3UK^*E2$xxJp}nS`}4=Hrp#0f9h#81!Xpz~1=pfVluo z{F!9~0`Y2LE+cJ%^B42Y{bsI+^&ECtTGdym2YO&qf}+6~8OSOm1G6ikAG)TB!ZDs}A z-*IUR-As+x?(2d8cMn%9t)mX@jBnmwLNu*3rpNQvrfUHHY&)W&8DHoQ!(MC z*RP6SZJ2BJ69;MQlF=}9K1mRTE&m3guYEm1l<5)gB~6SQ@eFi6u_gJRlG5*If|#Q4 zEJ&Z%`f@y3JUoo%m{3-h8+21&wsT$IOfhqSNowz|{4;%=TG!(eRxrd~BTlG-q+Xe+ zhGLxGI5QA7Dz%-MO1sXbB{ficy|0st%R7IW;rh0~Q_e#P%w~!7o}wXXbfWcW$-^Kh z<}X}W^0O%Pvz|&855k<6CV4N$(qJF4rkCy6QSZC48!=qZ*W)j?$UOEb6sUs|l_)d! zX2M0`;a4^4#_lwcrR9rwq=X(HE-F(g`{pz6WX@RmaH{Z<)kB*neTGjVGpiC0zmjd) zR=Qd&OJ@ex8wgVe-jhv9|Fv-$)cR|zq+(_!-Qdbg8^;$VNH~4XSz1`xQl^KEIw)88 zC|Z|y>l30c3igDogsvUg(~53`4gME zSp{=OrPg5igT~8XHhGTZVwPR@(JqhUfXoI+K7ana`b!}cGeC;yz9ooKuuT_%`oJ_k zI^QM`64Pplw)FOQUmL4aHZRO`#l5SHEmmU9m!uQJ!)3xO%m#!)7(LutC9($X()W%h zSAExHx8N04vC#OFpAK|RbeE{MtGR#8Tot@r#hT$W-=fAgp&)R_aRE48 z%YwwhW@@C5`dM+yeQH%ZMo}lS@ z?3*(oICPtfC1N|MC3Q9U0h4*l$<=j=+04ECF7tkqLwd1Pj#zvHnKaloaU|7|!(%tj68-&SQc`#i zakjP#%gcm#m~lsTbcllLjppopLb}%Pl@-DEC#UxpYWrWewD8*6u1+V)6^|`eHQeD9 z^pLAPxD3}O2bq$)aU?E$$kGU4DC0& zE%j!9Ypi!G@mEzeXE8jI^MN?DJlDq#mz_`;bs)Js*+$;~QijLI=v@Ij%XkO7pF1g^3_W_t_&+A#$l|WMH=Z2)17b}~Ok@EO5(5H` z{P43_`)2PtdoZ#dx$6U$+{hkS-qy@DL*4Z)!s42OKGwj2mhGaRO#?W+|qNv({Tkytw1_4HadV0Vfbht%#xC!P$^>uY)ij{^(Mw051fw7T` z+SAO892Z~b2;sC4>|aOu(Mc2N(^j^kRZIYvg9~y@t4DXwr9n$AO3%JHGB7X@ zNO)gi^Bk+>2IQJ$!Z{l-;+i=13_&l|)X6bYj_7LOOYFqHpKVsNu(TAuRU=}Atj4|H z+S2x+NdY*X+@-*ifbyg231lE*TkreG9pftEPWK&S&E~kGjJ{)fYmRklyr$6-d}zs` zZA;<-wI*E#3U}_D(9zM^w|-gIGvrfklIo@`NEK;w5!jEMQZL-lSKo}!uvHM_;gqzOG4ATKO@GVpr$`YnE|@eFRnfIxy%u5*S}JYFqIqRp3_RcL5ryQ}=iqZ-_)k-c^Z z=eb^`g4@gIgoEA1y3^u}0`OKMFqU4E zC=nCrMFW8i&VFno~^C=!_ce?4?Y$D>^?JD6YIOMJJHi!m>|we zxy=2J5N{>InShe7n>yLI8z<>0maBQ%<5ewg9qbaPp4n!ZT~Ji{?-N|{qk`ST%LA0y zo^lr*KA@_vT;HbcNBOCxwEVCH9Sq(?9H?Nv^1@lYioeBT?cQ%$ziyLFSuijgW#J|6 zMX7q(E}ToLR`D8>iXJ}FJp92?QTN!^co$4=TSr`5w%YS&g)olk@+;^3wKOcS1rWZLjaO;U7n( z=pDM$gfmWkxzIV0X}Z1kx)_2qX*$_Ah16wna1ZKA;Iw zRm_XI+Z@eDmC-@~+gTl)IKeUQ>iNXO%A}=W?t#$|(0QoRYyvXopMPxw zppW>mt#z{krETMcBrZ@Z5ky9{@>A;!l_Perg>vx!pQ{1{c27>^(@sNh z&2rjG8iwDNgp5Gu&x?R@IpkDjlg-I4*@ZhenJYM+E12BDWIMZa37$LfY*MpicFB%e zrBYsmsWP@JDLXd85&}s*3j+uA1NvzRLG)C);#tjC0T~$?85tSjAe*j0 zTr?VurrhI20J;FWgpjj- zzyDvR6!6gbJLL|*yMDj_Pv3>CA+>@u8jZhk9QVh%e1s6}?d?I5B;P&4FS@QnRaHzTlXY27 zSc#H4L8{eiS(2nvLde@y`2<0LBuS7YDfT*z$72izgOz5DQu_At^73C%%Sx3X&1Umg z03EFG6}emv#bObnDEhvxD2lH6hr?l@`V9sHj7B4`!*{BxwxT-v)Cf|q*Wd6we+CaR z2qBPVd1a4~Bnh%CLzZQTqKHDF;JbWPRdIiRkMG~V!!%9Le43^~Q54r>l+v@y%gev` zF4Too2r?C;<8@pVMU+Y-rjoVStW{Tn(ZiY3Lo}F zRy3Q<-#Lyu^E$r2zmNU>eGuYoJEAD!*|TS8G#c33+hbB6j^j|NR3M5X?(f~L&usAE z=Il9+YblBn+QDzMhph4$gb-9J70;1VtyV*`*@PenYs;}L%VCBHA#2Z76a`iGB=2L}hP$3~+OOw)v67%)w9Z7e|uK|Y^H zKA(3jPgPZX`SQi}-0^sfySqC_I;HgV^78VpD+~5uBPOd_t(FBr=nz8c_G9bBsMTs{ zG#ZZd(P#ukQ7|5lVHifB$lEXsj7B3^mIa>Ym&(rNa^QL1)o1WLKNo)yLP$$dlz;fH zz~VK-oD`LVgM)v&Mc?bhkYyRa{PN3Enq^rS3y?D6=B!vOVmKUPJRUpF zA%wUMh4aN?u`?VF1Fx_6pI2bS;o;%m0kjx#*ikBS^1*H@Z4-XE9 z-E1~p^NXVBT4$c;R|d9TBq~U~UVlRfd2dfAgrHn5ubg)}K0bD&4TnRfVl1L4%97bD z6bg`K*)^}n2rtyqKw^SatJU%}@N=+gGzC2R4f`Lhsw#9{XIseyD5VY)Rjbup^KPXe zk|eoKpUbkmc2cljU-tc`X|9^WV1~U6uO8wte6BPaji*7&Ohk~WsXDQz`$U(I&+7)%IEVei`i*d_Yj8| zf*>$|#50X}_?C9i>o66>ZK%7gzGD%4Knk&bm%r5v3zauRcFcZXUy(35< zn8DU$o!Aq0p?5?j=&B(TL8j)awU`!l-YQM_ozHR`yaZh}WYt3)qpMvSS^1suWdRdG z-26vouEG&nkZQGB-qq37CWtJEBuQ<1S}vE{snM0+VK0kSLl$?<;Xih59m7vx2(XDy zSP0U#C+wOaNfJpAui@@4jj)m?k|1vOF%!c27^_Ox9zS9Txb^~5EMRm1f! z=&h#hxS)@B{?bORRzs;&f+R^Ol}ad;N*D|V`1I*h;&lmq_onej%buR*9#X5-AW0Gm zg~HPBX(F^BdwYA1U@-0e0hAB$DPC5{@cGnHRi&Rlp4a45W%v{ApC_xAzj<=$Ay@w&w`_)BRqNXWIlU4n>;)}KX(L%X(X^9 z^?Ln{<02`FL5_}&eCHhu1^^zn>YGicY?}1k$r!o0xq+&xj`Yu;Kl{Fh-3kOWfi1ro zcgAF?stQfhFc=Kx{|*L&!0)zm90!i$kjv#D2m*MXcl8TiRw3%DVPHYhIEVG&!-r7k zE#C07yjT=Qkd1!3BMg39eGtBV`^Knt%j}#FiL2G?x{mR9jNxzyP18I#S&quq3KB=F zpE28RcD8!BZqt6#H0S$xdF)oy_FMK=Idw^rm_CSSZ}pm{t=;}Ye?t+})0e z4@oKxiLz!NwAEXdHUHYqWHOomKW@U@$)vxG7Kkvde)g#&%d+M>W3z1al+v!>ys7pf znx?JXmoZAKUo<;$LMc7dH0{K1{!|NceSHn!&!{+PtDgxFN2|9p{QzZ;Qrf}eS3-MX zzL1b=K}^#`zu#Y(XLi$PKMCzx+M$&8D5YIWX;;_vE~{@Erdkj?i)Lmv+KG9WxjO*e zsI5K-sTE{qW@aM9-Rh@~w+o)iF5aE6t3wFsU0q!T{*p~vVIs(^C&WMpk2k(YDeZ1+s}Dk$xvU=RN-VZ| zJUZO&F17j~1Qx_J&0fT5?xmpWXK3|72rP)M>)k@3aECP?n`bqZ@UszWA>;7y@Haxp uDgG2CwyA`SjEszojEszojEszoc=9~~u)8ta!DQlTmPJ|S7M3|U4@wy`fWF|uUem+U46Bb0p~Tb8k9ow9}^ zNkj}LO;YwOA-~)2kNe)|KF@vbb3gBUKIfdzNi;IlVL8Wp4g>j3TE*GCnLtX7fr#cbNEW%DxD{LNR0qN4ZP zJ6E2{nm)B-Uw)~p^ygyCisRvQ`B;OhxOZE}7n{)2=^BSUuk4x56FXo&y>z}SxCRS* zX}0+w>hnFP$lG5QSp#17US4|?f7|WK&+m4u)sU}IOw70 z7QnB#UO8l!>!c51S~8eCL9K+;yu3W>>A(SK2>#pU2xC64Q8tE7RTY)v2l{(2xjfDY z+`fIA;+&*H&sDS1ebxNfM-`jY^(~ju&hqsORG@dUz797dhn(m>wXt75Be0-2Larl= zhlJhlok?aVcXS-?fouyIII_#tr~IIC4877IP&rP%{T|;SC=#Zd3S<5NM`U7=;lYrF z<)NV=wVUnZOkOWylC(>tZX!bxZ)!a&XC5KjLz#SSs4ka)mx-{1Vqu{gra^RO7c^z? zq zCF9@q2d2d`$nr=zp`{z@eHEo~KB~*PYSfk{x8zh{{}dp!>ydQwx}QxvP4VJ~v*^ra zPrv_wpBaGq+ECtyDUVgBKQq@Qc1~wDxy7b(^TemVy#{rvcfa(@zhjqIm&gz4wdV0W zh2gWvY|bp?2QM6|D$>byDMVOMI}1wQ@QuCneh>Ved1@-~w|s-fqCenB4n~GzVU%Cr zz$@rTygqpz^J`Q2-t{ycFFv&bL()mtxWD_BWAy8V^S#on*grjfHcgfiE9;+>_dhv6 zncQa0^pMav3(2euTJAQE2)n1CJ3Ij9fiO|zAhf%%Xqh;VR^3p8n8Dkx!30e-KLOcQlqwx0ynaCMt9FzvkxW z3+fVQLS|Z6W?RGt(_yc@+n%m8C9gac`wyj~-8%c?t;h#>zjvGUtVoO@DLOj(^h$ti z>^;1d-`_E{lU%EZe(&Kdd4?qK7vdw*1!Jw+!x_w<=jM*3z!;b8INLgN0nM8iCOr8D zhp78z)v;#PXC~k>P)KPy0)P(MY{h~Lkx+a$n5{j6ZxGze?f?ZgK6FK?eA z+3E-V325(&8 zf37+G^n5btHe2hv6slS`O>c3(HbS-*4eq+4l*h^xtzIjog-T3_lbq7NOJr1M2Y6+; zz68hHKIbt%q{T$%Yp>OuXd2c}gX!uPyq5#hRqEXjr}vJvQ6HYA8j`kouR4|Ju^BO< zr4T^L%AxzxSunxqzkYlq-*7Gja9-xb1iv?A@hJru3*%N1mu`dmr7qh#vKtYLj@2=67QOHkMM%Kjl~X0aBWZ9~FY z9+ZSAw8gC-){9r~h$B#MFjH`r+EqvSoQxSA6bfcK0r#4}=^}c43vrbpySz*I*yZNv zg~cG-vTJ+0yP|T|qd~Dr;v=8*&U8&WKm`f3=F&7u^fwvNC`I}|h@CMQ^jZkAtwfgN z96deR)~OV!3BGH&v|!Jlo=R^7r_I%mDO? zYN!S8k56gpM1_Jej=06xP5@bgc)|Vd6gYBQ!7h#;EJ|EbH2fQ)(J@!co>49$J|dbX znMOQIpz#Ign|Byc%xe3K@R<^LcITz+a)*criua4TxjABDZn?++t$~;%jF-NWvT9wK zd}r0fS7P#3`cUaoPSDPGW30;@m0EWn(QK2oJt*z$SI|to$J6!n%1!B$zId`}a4|PQV?MTwT z271HY<>n!{8#`^D)bJX>BDvPRS+iPiq0Yuw;xh7KzfbvPdU;#UxDv_oCvNq@HEcIWb0&RyHx!z)rjI3D2qPVXb21lw(> zH~Xe6Ds$wz+w7>_9dDfpNY|w6YjO>-^wB8CpqH+!mInV$C3rdYCKM8W)&XH|-C-Q` zO-mNyi#Z{Gn3o}z^5u{Nj|p5A6wkT3ZC%qCidkW1x~i2gqg?vjw?6XWUUjG z>;nQWo;`c^5uc98<*Mbi9RBD+uyqAH;>w7iK(TLPn4s0|{|;MxyMLS?n5Hc`r{T~p z5v{ZD=BnTm5|-9qVVnXpzo%Hp-CA#Y%y7iYRVAQ-{r&w#DI7!GhlW3A1%K4kko+!k zdx|QhE7IFea`-Rt3d^sS7o8)p&(`302WVb@kD7Rm`jj+`N_2j}N-=B0JwbT(ONelS zAm-BqHk5BRswQkn#`1!Q<7ELNbFr*@ouP(akxDUAf>p+`M7XMC`tI{NsrwrWXH2cM zQ225QqcHylPnd@bR(7>a&Z)1}@+p%{k2N-}l0aotq<`2=xGbK1veamYSSpLDL8be= z5oAC#a8XZr#hO0o|8heXEL)=KMsiuhk4c7@HL&%o-f%O}c+kl6Z98afha;LRyECYj z0eOltL~=r#t;LEv(m1_&k_KsCJSFaj%6_?kwbe?OM`y;qwg-)nOKan+?P;Ggaz?Ye zSSr%LBGuN-KGL$A}bu+uYn3Cs_@SaHRvYrj@PUb*C=*&@tX+7P^C|Jm9 zzth)y%u)Po;nQ5DDn!^&(>{7vJ|VeuhXFak9_P?s#pxdK`KHHdj63JM8KD1i-j#0J zR6R@x6W*0k*Gqu@5x%AcxxhZgahenJ`iv~mgO|ME(eP^t-@N~m?94r89GfM7Mefs_ zNmIXwLUbYC(bMsYoe<_%8WzVbpnBMz)y(P_^E9ez>V-XCDVl80EQ+%*zq6nu;A4Dx z(wUo?y&!CESTUws;@IqWe^tHtUo-~IC)7V=OoU~i>!8X^p)jrGCRhBJ>S4`z5H)Pi z=GUGqTVXklo2aFMA=C)=bz5azep>9&si@^JXA2R(;Hjq+O&Ias;2W&O+%O((6Rj^| z#)SLx`~Vldf^ZZw-d|%DK;B39g{(C8Eh(F{X#PG!?}V8xA+YI`AxutE?g$Nn6O=$WM zqXYDt!-=C4ruP)W_Y0T!2ud%$#z*AM;n5MFv$J#AIyUH6F)PPm3;4P~HHu>ppjpFI z5!b3EP4)5OgH=U>2`}IxIpm(9V3zDf6qprSl9k8jm&ulRPQM{>bzkz`2G~q?&6mQVIJ8#j?&xHwC`d z*CLx^Fz8*&i6;8ZivZzdw8oSQLNxz*O^D_{UAlN;NV;};6prk*mwx3YpFaOk`HG#W zo-q@0VypDt=YS>lb_;O;C0lUM=e}=hudC{0V(T8xn(kpUvGM(5xjwkKr(o{|m+VXu zDRKDT+n#rqN^yVzvdSxf#yt+%TN80!b`${=W0RJmw)FKYK!X}9r_;*xpOnN;lLTFv z(aRPTPES+}E}I+iEyxxN4Lsa+UvZZ~-p73gQLe{(@B(!7kOaCap_*1fqtS@!6Rypr z>FS#S#KJ`L)vZrcl6eV&H*z)-hoy8mfx^sq_W*4eUNk+H%Yd&0@sv=-XNXkQD^G6^7rRH;SOqyh=skwEloq~Xy1ZRLg+ zgCr6uqP4aw`4h!`HeYsN>thTcjR*oZkC%~wDcairiWcl|&A(guM5D;n6A__;?CDbz z{j6ge`vaCFQ_goqq>Yqd7k*GCTgTseT7W>)EA-FAO37#LJjZ^1I56D=^`ak!uc)*1 z-l?7xP2-FcnC}b%=7DJC{%2dVE<-VQ@?MbZ!Ca9-BmcDtyFk-9w3lyNPrYLyDtOM{ zP3AR@$73Fil8|v?g+(!dSyCcQNSc*rF1t+p$#~Xxia+IUQIe?Mn~UjtxFGE88JWw2 z>J)00Wb0Y=RA;YubRWP0Y;SMln~WygikpQ;CeLn=8XFt6Z{FkW_^CX0sQvM}BcY|L z{vsB^!J~C!g>l@v^kuF1i2Rj~NsrcT@|EJx$e>jddQ6pW(xB7Z2Uyx&vkGKOOKeIz ztuCi!T|?ExIP1M;!t!-EvN{#>Rh3|q z+X8RN;!Y*hka1bl`hmsbt;=b@x?H$CUQJ)A+ zBCKq2r3$6F9lh+$Ox+WkR~y^jSev_zYd%{QYRM?#l^D~d1Oyg?BTbun9!ltUwx$fr z?ZgO^=rps)ez&O=-|Vwq9ku7D{D5fS;p#5x^|yXUhOupFK2~666OEOw%&X#k64~xw zS5>%W>bhr}$Zo1`0E~4jzNO&-4c!8dzrmk2>OAi>X*36j$PO)>3s}&DQyW&5YWONx zL|i#8$l=mw&x*^4Qk-aW#iOB~tg;Z>-FU`H0=TL@2KLSGf%x;zOsq)O&||8o)x|`i zsRqc720M=*Hs8c=b&6}5vSrA8DN+2Tu*fUV^nSksXhHa&O7G`dX1!gb?114dgIIF^ zz;Ak{L+l%8O+y{BzdZ!^W>vkCecvgqHW^E*Dlmo$%n8&u|p$w_xsY5-LXkBD@sNjKm>A0?LwBeJOlZwmeU-KT1WW*WWyvg%{C#uw&KT*$X%OjX>;2Q(~T^=eB#J?n|c z&-w3S1Gy*PXOv>u`dsCVj1hYumKje|tec#~oL@Kfcnf4QHOVD2a1Y<;5SuAGP+$Y$ znV=*YM#U(!2%06rr6%BE2Pdx4Asj#mlv0iQGE7ET4HyF~G)UW=K`qP>|SbE=>(1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png.import deleted file mode 100644 index 66a1fbd..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://wol4p4f32lfr" -path="res://.godot/imported/XboxSeriesX_Left_Stick.png-c81470e6e08de714ca5029e194422ef3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick.png" -dest_files=["res://.godot/imported/XboxSeriesX_Left_Stick.png-c81470e6e08de714ca5029e194422ef3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick_Click.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Left_Stick_Click.png deleted file mode 100644 index ad0428f559f87dbb212a0cca438e3f0044559ba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3006 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 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png.import deleted file mode 100644 index 6ff0007..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://y70m84f40jkk" -path="res://.godot/imported/XboxSeriesX_Menu.png-b5260eb2af6d939947fd11289117ab1c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Menu.png" -dest_files=["res://.godot/imported/XboxSeriesX_Menu.png-b5260eb2af6d939947fd11289117ab1c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RB.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_RB.png deleted file mode 100644 index 5dcfc6d79703bb8649f52a79123e2fc2e644b636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2779 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 a9`c4)NPj(B&N5?*Rsd;gYf@|Mj{65tf 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 u diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png.import deleted file mode 100644 index cf66afe..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://pmymadotp1l0" -path="res://.godot/imported/XboxSeriesX_Right_Stick_Click.png-7cd7984c348fb4db2998472d7b950c6a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Right_Stick_Click.png" -dest_files=["res://.godot/imported/XboxSeriesX_Right_Stick_Click.png-7cd7984c348fb4db2998472d7b950c6a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png deleted file mode 100644 index 66d9f95021f23efe68b9f368fa49ef5278431339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2812 zcmZ`*c{~&RAD<|9<|ykSjg-+sNRgw-a?TaY+>^&mI5}>M=8h*+-YGm%Is+88|!86{oiFmiOet6LP>!)6j~SGR~T+!~K%@6+$?x zK756s?SStBt4^e@*fniedg<0y*w>6_nmsXveFq*3Ug(I9Do%C;wbF0sJ?1ytsP17l zMon)VCUQ9I!axDOV}ITR|F82F8^EmEjXjLYRm|hjle?5?DiG6}w)6rockH^XS_Z+# zJ%5q4wY60jVKC&x=d1Nc5;)~=2=TJf;J1~oR+No78$#p&ej3E@1^@jauE8>UeSMuj zS5cpLQ|e}n0~>V>KhA43XiW{=NZ9|kwqP9Pb8A20mpIo`k>*X&}EZBFz&EtIMcXz-=|*omnj2_Yu5r#3SdI0ky7 z*rgar!j>ZrA}l-}pxyNX&+>*Naur|LK)~grw{k0OU!y@>gf?>42Q5T#zEg>x}Eve8y-4e)ouV6bpmu#JDx9P-|#< zb~c&3nyn~URQ1BCfq<-IsE9}N!5&&wV_&^`l>_8HY;A2_aI;p{50P0*-j!zA`?ZvhbxNj!U-6mw9x^sYQmw#0UKw~&y6p7v{@|1OTC6iOs}zT9&+GSznrD!QnJz>-&^_cqb*da>Y} zUGtAt+ccFNuZf#0CxahuaBQS5Y#EC7Jj9?L69h=4&>l}CQwv+XD=ngUty9ZAy~TFR+}@>q7;t3UYwkj<)zDZwX@GLao>no_`#R|T(tR;l=IkLBPNKf{nT4A?Br{tmwI|P>@^b#|0s~T6@bc#*!I5 zh2>r;=w~{|+MrVK?vas^8nGeIQUV_=I~XyH-3*oH+ROTSV9P=>fczRtyw%Dgrk|^H?PJ-~R3@B6)Z*R4}Sf$~!&l6-#_B z>zv`p+}nH%apX>Ydi3(>Y^HQo7(F(>I5<}ZKx=tQ>D>1tR3z^F_&6&A1axv(Z_-B9 z+&f)b$&hq%Gs(MRr;e*EHj5#XFk=1_`F>9`plG-o-o5`iAM8uEY`m^1_^xR)`cVW8 ziHBmNjr(Q;rgAbarzfvJ)!gMtT|&xpM){cNvTHdRHKexu z7k_Cb9{pN+!nk2Icds$BQ0b~^TnGExabKju+!Up^q8GXfsDAQiI84GKar!zUel6*a zaODGqE$Z?vIXBp?Q+sanFAs0nbUgo?_ch61i-_~OO;Dxw<8d)Ds-?iD(Yi;MOr_vy z8Op>>J+aOWrT(K-u<5XfQ~vRJwuwv6wDiKh1Y*MOZu&fY`&Yc@JJ!KLyw}JSqrQhtNj!Qj$P#Z^BMI(6&kx^oIzV5q4z5C|XZfxHP;+*6PFvK60TPOTMD6Ri#41N zGvs_Ol!Dv3LDIK*<-G`#STN|aNoQ7oSb^pZR#dlgVwY?>DsgFKWipNW>1Pf7k++qBQ0F` zTtiO8$osv{hy~KE`bj@^#13+#yrjImVqzuJ2sO`srTf4GcIBbJtbykGW6=egWn?@P z2fwriC@MAu;euuPvE3dD4r-p`rDeH5)4{FMn zXpsbeG_@_s`eatA7jz*1EQIUWS@`j#s8614wo>|0u2F2Htfb8SAYMZcwby;e3(XY5`_& LD`T>eNAiCFy}NM` diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png.import deleted file mode 100644 index cf906c6..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b8b2oomlnf5tt" -path="res://.godot/imported/XboxSeriesX_Share.png-39f960085afed02792af365e2b9c52a6.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Share.png" -dest_files=["res://.godot/imported/XboxSeriesX_Share.png-39f960085afed02792af365e2b9c52a6.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png deleted file mode 100644 index 066086aeaeff1c00490a1747a44cbe7f7d62e4af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3382 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 HbkhF-`TcFN diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png.import deleted file mode 100644 index b2f81ab..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b5wc83dex8igr" -path="res://.godot/imported/XboxSeriesX_View.png-4584623e9f69c92b5f7aa502e1647455.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_View.png" -dest_files=["res://.godot/imported/XboxSeriesX_View.png-4584623e9f69c92b5f7aa502e1647455.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png deleted file mode 100644 index e944b3e2e8bb90806a4f548b07f5570d3d5ed0c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4065 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 z ^!`ZJxLo(hd)+qOgMDro_<#J&x_T7#k}xOOe@Qkc6MCn;={q;Q7fZ% zcXvaEQX2KIripAe8%lulJP*6OyTa=&%L;wtIMM-(Nr*^FI-QPGl%GF;9y-3Xv~=Zl z7DX@&Lzs>D{P}aKYVLG~XK|AhWggr6S1Ofu01Q=e@H|i0$${lsEEb232fm?sSspDb z#(8*n7@9Q(5Ue*mw{82=ah5~_6A)sW=8IynIF#8W+sI@xp>=pcapYOn zIN=c#CdVA~cp|h3pPW=`T)BPR1_PG;v68b#?V?e*HtGQjuo#)$4U(y%W## zV47yEb%<#~Q4|!5MPV@Q@bFM-0QP!4oS%ncPTS39^B*T^&&1V$N~O~Of>T|N;|Q%= z;I*XmdOcJs!zFwNmsih9S`5QLsZrS*oSdAXSS*Id97R!($z(3?rIb#bxE=V@0wP3GVObWw`|dkw zXhBwYky82~ts3#E7QqyihgB2><#IVPP}OKOP^;Ae-`;V7jg=lZ;dgE2m0GQ~~8tHG4Ce3>uAwP>oF!r>CblIy#E1-y2c8H}!(b zsn_l8ld{7v-DJ<6Nd;Ol8na(2M7P0cDtrh**a=#3d1l$2BHW-h3j&; zoLa$t(=>5$ae-E=6>IH^X_~_D0%L5;w(SSg*zjel#rQ?)3rJp!UsY8sEiGNTTjCHJ zWQ5qZjdr_@cDo&W0Z~-x!D-fg2d2DTMW2){QF)0sal49XlL5?VLzn(GN5ZveL5$?8 zy}yp*pwsEdY@eBJe>Af#kLvaMCyJtM$<}P^x{h2fH**iLZQJN}yHW=yV{C^p_Svkq zJW9ndjDvQ&y{~E7magkL0C)KFfg$NQ4k)FU#fql^-}f)a7QU#=0L~d>zqW1rrza;T zFQ(EE0j^}*yhfw(ea6_y>US*{`;?8MpLA z;HrQ za`y=#52m#-ae)5r(VN|Fck3#4^ps()2pL4bKJZ<}*j=Qsb9AsnG$CZ0Qo2148xe~z zw}kKrHnvw)b%Qas5$7I4$e!=}dyeDm%##!>u)qQfEU>@=3oNj}0t+m#fE51+VlKr& T0VOy)00000NkvXXu0mjfe2dIy diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png.import b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png.import deleted file mode 100644 index b461388..0000000 --- a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dqnryo1s6qi45" -path="res://.godot/imported/XboxSeriesX_X.png-5f1df66dbbce24929b4c3ab5307e19e3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_X.png" -dest_files=["res://.godot/imported/XboxSeriesX_X.png-5f1df66dbbce24929b4c3ab5307e19e3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Y.png b/addons/guide/ui/renderers/controllers/xbox/icons/XboxSeriesX_Y.png deleted file mode 100644 index cf4a997212fa6a076ff2b46bd4a3cd137b64328e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3819 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 diff --git a/addons/guide/ui/renderers/joy/icons/button_empty.png.import b/addons/guide/ui/renderers/joy/icons/button_empty.png.import deleted file mode 100644 index e2bc208..0000000 --- a/addons/guide/ui/renderers/joy/icons/button_empty.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://veqjcwokdukw" -path="res://.godot/imported/button_empty.png-123d9e156dcc9c2e5ff33e4ffbcd7884.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/joy/icons/button_empty.png" -dest_files=["res://.godot/imported/button_empty.png-123d9e156dcc9c2e5ff33e4ffbcd7884.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/joy/icons/stick_empty.png b/addons/guide/ui/renderers/joy/icons/stick_empty.png deleted file mode 100644 index ae363d2bcde98a55c747196af68c07e19651366d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6710 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 diff --git a/addons/guide/ui/renderers/joy/icons/stick_empty.png.import b/addons/guide/ui/renderers/joy/icons/stick_empty.png.import deleted file mode 100644 index 8d805df..0000000 --- a/addons/guide/ui/renderers/joy/icons/stick_empty.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://do001o6aysaxo" -path="res://.godot/imported/stick_empty.png-10fa96eb31f6946670d6998f8648c1db.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/joy/icons/stick_empty.png" -dest_files=["res://.godot/imported/stick_empty.png-10fa96eb31f6946670d6998f8648c1db.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/joy/joy_renderer.gd b/addons/guide/ui/renderers/joy/joy_renderer.gd deleted file mode 100644 index 92bdec1..0000000 --- a/addons/guide/ui/renderers/joy/joy_renderer.gd +++ /dev/null @@ -1,69 +0,0 @@ -@tool -extends GUIDEIconRenderer - -@onready var _stick:Control = %Stick -@onready var _button:Control = %Button -@onready var _text:Control = %Text -@onready var _directions:Control = %Directions -@onready var _horizontal:Control = %Horizontal -@onready var _vertical:Control = %Vertical - - - -func supports(input:GUIDEInput) -> bool: - return input is GUIDEInputJoyBase - -func render(input:GUIDEInput) -> void: - _stick.visible = false - _button.visible = false - _directions.visible = false - _horizontal.visible = false - _vertical.visible = false - _text.text = "" - - - if input is GUIDEInputJoyAxis1D: - _stick.visible = true - match input.axis: - JOY_AXIS_LEFT_X: - _directions.visible = true - _text.text = "1" - _horizontal.visible = true - JOY_AXIS_RIGHT_X: - _directions.visible = true - _text.text = "2" - _horizontal.visible = true - JOY_AXIS_LEFT_Y: - _directions.visible = true - _text.text = "1" - _vertical.visible = true - JOY_AXIS_RIGHT_Y: - _directions.visible = true - _text.text = "2" - _vertical.visible = true - JOY_AXIS_TRIGGER_LEFT: - _text.text = "3" - JOY_AXIS_TRIGGER_RIGHT: - _text.text = "4" - - - - if input is GUIDEInputJoyAxis2D: - _stick.visible = true - match input.x: - JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y: - _text.text = "1" - JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y: - _text.text = "2" - _: - # well we don't know really what this is but what can we do. - _text.text = str(input.x + input.y) - - if input is GUIDEInputJoyButton: - _button.visible = true - _text.text = str(input.button) - - call("queue_sort") - -func cache_key(input:GUIDEInput) -> String: - return "a9ced629-de65-4c31-9de0-8e4cbf88a2e0" + input.to_string() diff --git a/addons/guide/ui/renderers/joy/joy_renderer.gd.uid b/addons/guide/ui/renderers/joy/joy_renderer.gd.uid deleted file mode 100644 index bf107be..0000000 --- a/addons/guide/ui/renderers/joy/joy_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cr5s0o6i0mlcp diff --git a/addons/guide/ui/renderers/joy/joy_renderer.tscn b/addons/guide/ui/renderers/joy/joy_renderer.tscn deleted file mode 100644 index e58ac90..0000000 --- a/addons/guide/ui/renderers/joy/joy_renderer.tscn +++ /dev/null @@ -1,63 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://c6sqf8rur1wss"] - -[ext_resource type="Script" uid="uid://cr5s0o6i0mlcp" path="res://addons/guide/ui/renderers/joy/joy_renderer.gd" id="1_u7brn"] -[ext_resource type="Texture2D" uid="uid://do001o6aysaxo" path="res://addons/guide/ui/renderers/joy/icons/stick_empty.png" id="2_23u2k"] -[ext_resource type="Texture2D" uid="uid://veqjcwokdukw" path="res://addons/guide/ui/renderers/joy/icons/button_empty.png" id="3_7qfbp"] -[ext_resource type="FontFile" uid="uid://cu8bvod6tnnwr" path="res://addons/guide/ui/renderers/keyboard/Lato-Black.ttf" id="4_otp86"] -[ext_resource type="Texture2D" uid="uid://bmgxqbypegjxh" path="res://addons/guide/ui/renderers/textures/arrow_horizontal.svg" id="5_81uyo"] -[ext_resource type="Texture2D" uid="uid://bu5nlug6uf03w" path="res://addons/guide/ui/renderers/textures/arrow_vertical.svg" id="6_syx8c"] - -[node name="JoyRenderer" type="MarginContainer"] -offset_right = 100.0 -offset_bottom = 100.0 -size_flags_horizontal = 0 -script = ExtResource("1_u7brn") - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 - -[node name="Controls" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="Stick" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("2_23u2k") -stretch_mode = 4 - -[node name="Button" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("3_7qfbp") -stretch_mode = 4 - -[node name="Text" type="Label" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 4 -theme_override_colors/font_color = Color(0.843137, 0.843137, 0.843137, 1) -theme_override_fonts/font = ExtResource("4_otp86") -theme_override_font_sizes/font_size = 50 -text = "1" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="Directions" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="Horizontal" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("5_81uyo") -stretch_mode = 4 - -[node name="Vertical" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("6_syx8c") -stretch_mode = 4 diff --git a/addons/guide/ui/renderers/keyboard/Lato-Black.ttf b/addons/guide/ui/renderers/keyboard/Lato-Black.ttf deleted file mode 100644 index 4340502d93c09da91560c862cabf3f6055704149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69500 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 X)1d#|GoGS{N^72R6+cvrokIHmv=>@H diff --git a/addons/guide/ui/renderers/keyboard/Lato-Black.ttf.import b/addons/guide/ui/renderers/keyboard/Lato-Black.ttf.import deleted file mode 100644 index c7bb2da..0000000 --- a/addons/guide/ui/renderers/keyboard/Lato-Black.ttf.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="font_data_dynamic" -type="FontFile" -uid="uid://cu8bvod6tnnwr" -path="res://.godot/imported/Lato-Black.ttf-dd70fb4540a062e6fd25f6b3cb73f785.fontdata" - -[deps] - -source_file="res://addons/guide/ui/renderers/keyboard/Lato-Black.ttf" -dest_files=["res://.godot/imported/Lato-Black.ttf-dd70fb4540a062e6fd25f6b3cb73f785.fontdata"] - -[params] - -Rendering=null -antialiasing=1 -generate_mipmaps=false -disable_embedded_bitmaps=true -multichannel_signed_distance_field=false -msdf_pixel_range=8 -msdf_size=48 -allow_system_fallback=true -force_autohinter=false -hinting=1 -subpixel_positioning=1 -keep_rounding_remainders=true -oversampling=0.0 -Fallbacks=null -fallbacks=[] -Compress=null -compress=true -preload=[] -language_support={} -script_support={} -opentype_features={} diff --git a/addons/guide/ui/renderers/keyboard/icons/Blank_White_Normal.png b/addons/guide/ui/renderers/keyboard/icons/Blank_White_Normal.png deleted file mode 100644 index beee975a9ec4eeb7f30e28321b45a7ba87b23259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^DImmswh!rV zm|aw!xGrHXS()*EUGq7{U$>k7{m}Rw_^zsJZxi3dk_)o8mp!TwbShF=%myt{0PQeC;s^V3QPJD4-gX4|WJUSj*;8RhP}S7Yg) zu+?9EKP9=}%9^ASf6!o4jnvuR4h@0(-|L;fUhi-wH-^~%*N=d7_j zF>CeviR%=LS6-^zC1 zJ!8H4?c3a(oE(nX6ANR_r(aNi4b-_ej^E$kf93kuWxFHw_fOrT8G9wTH??$C+L?LK%y` z=Brn)7T)~*^um>@pc9Mu{_MWs78nvzytCu6M4`;#(z{p8r)#?DM^2ukqPc2ikhYG% z(xRW+H=LTx_Gyv0NMV28YRzQ-vln%iG~Ri^%FoX)KkxNiomWyhP4~)cbAH`$4=Oh4 zKBO0EBF&a0iHsIEzS!R07rgJ!SG(E&YFF17hZOQ0F+xEq?7{!yqYCr)YcIW36}kNK z#E?+V@87?#G+HWhzivGf#I!&K&q*db71-U&q-s5<%0-FsWNZsk9Jy5jV2zxTWC%%tzV^)+2q z?scCn>{;xNs{3Cz-W1@FJd}IUSYy-sV@#ZfKO{T%1)rL`W8Ldz+f?@K-7A@W{>DYA zLw7iLc%-n`5bIl@cX&;(XP?ckl9^iQC!PDRDGi znH8k=x2`@*;=q-S%b#V4waT0qVPR}i&{(wc(&P7v(@yG6(0tCP*J^Wo-tA0>@bGZ% zvZZ^L^~7$Gb==i<$02&lx%1~48LF$R4{4oVdHH3}@pXc%N>%;~Zsz>kbs{}Qhk5Ch z=fHgQ{LcExW-osKix;?eOSf@$+3vsHPg) bool: - return input is GUIDEInputKey - -func render(input:GUIDEInput) -> void: - var key:Key = input.key - var label_key:Key = DisplayServer.keyboard_get_label_from_physical(key) - _label.text = OS.get_keycode_string(label_key).strip_edges() - size = Vector2.ZERO - call("queue_sort") - -func cache_key(input:GUIDEInput) -> String: - return "ed6923d5-4115-44bd-b35e-2c4102ffc83e" + input.to_string() diff --git a/addons/guide/ui/renderers/keyboard/key_renderer.gd.uid b/addons/guide/ui/renderers/keyboard/key_renderer.gd.uid deleted file mode 100644 index d0c42ed..0000000 --- a/addons/guide/ui/renderers/keyboard/key_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bp7usjfkvypy0 diff --git a/addons/guide/ui/renderers/keyboard/key_renderer.tscn b/addons/guide/ui/renderers/keyboard/key_renderer.tscn deleted file mode 100644 index 0506765..0000000 --- a/addons/guide/ui/renderers/keyboard/key_renderer.tscn +++ /dev/null @@ -1,36 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://toty2e3yx26l"] - -[ext_resource type="Script" uid="uid://bp7usjfkvypy0" path="res://addons/guide/ui/renderers/keyboard/key_renderer.gd" id="1_tm2sd"] -[ext_resource type="Texture2D" uid="uid://b3x586os8uuwb" path="res://addons/guide/ui/renderers/keyboard/icons/Blank_White_Normal.png" id="2_myc15"] -[ext_resource type="FontFile" uid="uid://cu8bvod6tnnwr" path="res://addons/guide/ui/renderers/keyboard/Lato-Black.ttf" id="3_d3uds"] - -[node name="KeyRenderer" type="MarginContainer"] -custom_minimum_size = Vector2(100, 100) -offset_right = 267.0 -offset_bottom = 100.0 -size_flags_horizontal = 0 -size_flags_vertical = 0 -script = ExtResource("1_tm2sd") - -[node name="NinePatchRect" type="NinePatchRect" parent="."] -layout_mode = 2 -texture = ExtResource("2_myc15") -region_rect = Rect2(10, 10, 80, 80) -patch_margin_left = 29 -patch_margin_top = 30 -patch_margin_right = 29 -patch_margin_bottom = 29 - -[node name="MarginContainer" type="MarginContainer" parent="."] -layout_mode = 2 -theme_override_constants/margin_left = 30 -theme_override_constants/margin_right = 30 - -[node name="Label" type="Label" parent="MarginContainer"] -unique_name_in_owner = true -layout_mode = 2 -theme_override_colors/font_color = Color(0.25098, 0.25098, 0.25098, 1) -theme_override_fonts/font = ExtResource("3_d3uds") -theme_override_font_sizes/font_size = 45 -text = "Long Long Long" -horizontal_alignment = 1 diff --git a/addons/guide/ui/renderers/misc/action_renderer.gd b/addons/guide/ui/renderers/misc/action_renderer.gd deleted file mode 100644 index c39f8a6..0000000 --- a/addons/guide/ui/renderers/misc/action_renderer.gd +++ /dev/null @@ -1,11 +0,0 @@ -@tool -extends GUIDEIconRenderer - -func supports(input:GUIDEInput) -> bool: - return input is GUIDEInputAction - -func render(input:GUIDEInput) -> void: - pass - -func cache_key(input:GUIDEInput) -> String: - return "0ecd6608-ba3c-4fc2-83f7-ad61736f1106" # we only have one output, so same cache key diff --git a/addons/guide/ui/renderers/misc/action_renderer.gd.uid b/addons/guide/ui/renderers/misc/action_renderer.gd.uid deleted file mode 100644 index 7304433..0000000 --- a/addons/guide/ui/renderers/misc/action_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dcpbinyawmrim diff --git a/addons/guide/ui/renderers/misc/action_renderer.tscn b/addons/guide/ui/renderers/misc/action_renderer.tscn deleted file mode 100644 index d9abeea..0000000 --- a/addons/guide/ui/renderers/misc/action_renderer.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://ortn6jb3wljf"] - -[ext_resource type="Script" uid="uid://dcpbinyawmrim" path="res://addons/guide/ui/renderers/misc/action_renderer.gd" id="1_140q4"] -[ext_resource type="Texture2D" uid="uid://diwkvjkss2ie" path="res://addons/guide/ui/renderers/textures/action.svg" id="2_uqvia"] - -[node name="ActionRenderer" type="MarginContainer"] -offset_right = 512.0 -offset_bottom = 512.0 -size_flags_horizontal = 0 -script = ExtResource("1_140q4") - -[node name="Action" type="TextureRect" parent="."] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("2_uqvia") -stretch_mode = 4 diff --git a/addons/guide/ui/renderers/misc/fallback_renderer.gd b/addons/guide/ui/renderers/misc/fallback_renderer.gd deleted file mode 100644 index 4fa78e1..0000000 --- a/addons/guide/ui/renderers/misc/fallback_renderer.gd +++ /dev/null @@ -1,11 +0,0 @@ -@tool -extends GUIDEIconRenderer - -func supports(input:GUIDEInput) -> bool: - return true - -func render(input:GUIDEInput) -> void: - pass - -func cache_key(input:GUIDEInput) -> String: - return "2e130e8b-d5b3-478c-af65-53415adfd6bb" # we only have one output, so same cache key diff --git a/addons/guide/ui/renderers/misc/fallback_renderer.gd.uid b/addons/guide/ui/renderers/misc/fallback_renderer.gd.uid deleted file mode 100644 index 7c80e5e..0000000 --- a/addons/guide/ui/renderers/misc/fallback_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://btt4yt4yu28yp diff --git a/addons/guide/ui/renderers/misc/fallback_renderer.tscn b/addons/guide/ui/renderers/misc/fallback_renderer.tscn deleted file mode 100644 index 743af0c..0000000 --- a/addons/guide/ui/renderers/misc/fallback_renderer.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://bqf4yoind3a82"] - -[ext_resource type="Script" uid="uid://btt4yt4yu28yp" path="res://addons/guide/ui/renderers/misc/fallback_renderer.gd" id="1_mgm3k"] -[ext_resource type="FontFile" uid="uid://cu8bvod6tnnwr" path="res://addons/guide/ui/renderers/keyboard/Lato-Black.ttf" id="2_5hk8u"] - -[node name="FallbackRenderer" type="MarginContainer"] -offset_right = 512.0 -offset_bottom = 512.0 -size_flags_horizontal = 0 -script = ExtResource("1_mgm3k") -priority = 100 - -[node name="Label" type="Label" parent="."] -custom_minimum_size = Vector2(512, 512) -layout_mode = 2 -theme_override_fonts/font = ExtResource("2_5hk8u") -theme_override_font_sizes/font_size = 350 -text = "?" -horizontal_alignment = 1 -vertical_alignment = 1 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Cursor.png b/addons/guide/ui/renderers/mouse/icons/Mouse_Cursor.png deleted file mode 100644 index 8d52353d16644fa6116b429106155ec4f859fa0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4728 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 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png.import b/addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png.import deleted file mode 100644 index e6fb06e..0000000 --- a/addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://vvgpheda22ew" -path="res://.godot/imported/Mouse_Left_Key_Light.png-8c9c47fe23d850a53ee5b259032ff1e7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png" -dest_files=["res://.godot/imported/Mouse_Left_Key_Light.png-8c9c47fe23d850a53ee5b259032ff1e7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png b/addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png deleted file mode 100644 index d3298c1a6b686add3d26df5b605973ff0a5bf9aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3242 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 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png.import b/addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png.import deleted file mode 100644 index 74951c7..0000000 --- a/addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bmj244x0jn7v2" -path="res://.godot/imported/Mouse_Middle_Key_Light.png-d1b621d65964bf35e881bf5a749d0470.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png" -dest_files=["res://.godot/imported/Mouse_Middle_Key_Light.png-d1b621d65964bf35e881bf5a749d0470.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Right_Key_Light.png b/addons/guide/ui/renderers/mouse/icons/Mouse_Right_Key_Light.png deleted file mode 100644 index 8106df7e14ca4091af41ed961a6cfc320bd34784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3340 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 IVV5KS1^U0mmjD0& diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png.import b/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png.import deleted file mode 100644 index 8bf18da..0000000 --- a/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bqxly0g8pftxa" -path="res://.godot/imported/Mouse_Side_Key_1_Light.png-1e0810994bec8c12ac686f4c33006236.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png" -dest_files=["res://.godot/imported/Mouse_Side_Key_1_Light.png-1e0810994bec8c12ac686f4c33006236.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png b/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png deleted file mode 100644 index a2fd2a00c8d4e788c6119edaf4f250c7eeefd2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5584 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 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png.import b/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png.import deleted file mode 100644 index 65b8da2..0000000 --- a/addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://je8rm7jk2nxd" -path="res://.godot/imported/Mouse_Side_Key_2_Light.png-3a47028a83b486166e55c8b465b98934.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png" -dest_files=["res://.godot/imported/Mouse_Side_Key_2_Light.png-3a47028a83b486166e55c8b465b98934.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/mouse/icons/Mouse_Simple_Key_Light.png b/addons/guide/ui/renderers/mouse/icons/Mouse_Simple_Key_Light.png deleted file mode 100644 index 7891ea406e004a90f83a3a5a32de625e91546c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3252 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 bool: - return input is GUIDEInputMouseButton or \ - input is GUIDEInputMouseAxis1D or \ - input is GUIDEInputMouseAxis2D or \ - input is GUIDEInputMousePosition - - -func render(input:GUIDEInput) -> void: - for child in _controls.get_children(): - child.visible = false - for child in _directions.get_children(): - child.visible = false - - _directions.visible = false - - if input is GUIDEInputMouseButton: - match input.button: - MOUSE_BUTTON_LEFT: - _mouse_left.visible = true - MOUSE_BUTTON_RIGHT: - _mouse_right.visible = true - MOUSE_BUTTON_MIDDLE: - _mouse_middle.visible = true - MOUSE_BUTTON_WHEEL_UP: - _directions.visible = true - _up.visible = true - _mouse_middle.visible = true - MOUSE_BUTTON_WHEEL_DOWN: - _directions.visible = true - _down.visible = true - _mouse_middle.visible = true - MOUSE_BUTTON_WHEEL_LEFT: - _directions.visible = true - _left.visible = true - _mouse_middle.visible = true - MOUSE_BUTTON_WHEEL_RIGHT: - _directions.visible = true - _right.visible = true - _mouse_middle.visible = true - MOUSE_BUTTON_XBUTTON1: - _mouse_side_a.visible = true - MOUSE_BUTTON_XBUTTON2: - _mouse_side_b.visible = true - - if input is GUIDEInputMouseAxis1D: - if input.axis == GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.X: - _mouse_blank.visible = true - _directions.visible = true - _horizontal.visible = true - else: - _mouse_blank.visible = true - _directions.visible = true - _vertical.visible = true - - if input is GUIDEInputMouseAxis2D: - _mouse_blank.visible = true - - if input is GUIDEInputMousePosition: - _mouse_cursor.visible = true - - call("queue_sort") - -func cache_key(input:GUIDEInput) -> String: - return "7e27520a-b6d8-4451-858d-e94330c82e85" + input.to_string() diff --git a/addons/guide/ui/renderers/mouse/mouse_renderer.gd.uid b/addons/guide/ui/renderers/mouse/mouse_renderer.gd.uid deleted file mode 100644 index c5fa578..0000000 --- a/addons/guide/ui/renderers/mouse/mouse_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cffeshu6gqsgx diff --git a/addons/guide/ui/renderers/mouse/mouse_renderer.tscn b/addons/guide/ui/renderers/mouse/mouse_renderer.tscn deleted file mode 100644 index 68c3879..0000000 --- a/addons/guide/ui/renderers/mouse/mouse_renderer.tscn +++ /dev/null @@ -1,124 +0,0 @@ -[gd_scene load_steps=15 format=3 uid="uid://bfl6dbw21xqs1"] - -[ext_resource type="Script" uid="uid://cffeshu6gqsgx" path="res://addons/guide/ui/renderers/mouse/mouse_renderer.gd" id="1_amutf"] -[ext_resource type="Texture2D" uid="uid://vvgpheda22ew" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Left_Key_Light.png" id="2_6vk7n"] -[ext_resource type="Texture2D" uid="uid://b8bsyguf4qw6f" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Right_Key_Light.png" id="3_aaqrj"] -[ext_resource type="Texture2D" uid="uid://bmj244x0jn7v2" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Middle_Key_Light.png" id="4_gprek"] -[ext_resource type="Texture2D" uid="uid://bqxly0g8pftxa" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_1_Light.png" id="6_adi64"] -[ext_resource type="Texture2D" uid="uid://1swh072gtbb4" path="res://addons/guide/ui/renderers/textures/arrow_left.svg" id="6_fo4h0"] -[ext_resource type="Texture2D" uid="uid://je8rm7jk2nxd" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Side_Key_2_Light.png" id="7_bbgo7"] -[ext_resource type="Texture2D" uid="uid://cjvs04qsrj8ap" path="res://addons/guide/ui/renderers/textures/arrow_right.svg" id="7_t242p"] -[ext_resource type="Texture2D" uid="uid://ni6lsbx1d2hf" path="res://addons/guide/ui/renderers/textures/arrow_up.svg" id="8_a7prs"] -[ext_resource type="Texture2D" uid="uid://ci7icm3q4l1sg" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Cursor.png" id="8_g4vq6"] -[ext_resource type="Texture2D" uid="uid://oq2vvwgbdsh7" path="res://addons/guide/ui/renderers/textures/arrow_down.svg" id="9_dfyjd"] -[ext_resource type="Texture2D" uid="uid://bmgxqbypegjxh" path="res://addons/guide/ui/renderers/textures/arrow_horizontal.svg" id="12_xdqh7"] -[ext_resource type="Texture2D" uid="uid://b3uxk5agbpmab" path="res://addons/guide/ui/renderers/mouse/icons/Mouse_Simple_Key_Light.png" id="13_1bw2l"] -[ext_resource type="Texture2D" uid="uid://bu5nlug6uf03w" path="res://addons/guide/ui/renderers/textures/arrow_vertical.svg" id="13_yoogt"] - -[node name="MouseRenderer" type="MarginContainer"] -offset_right = 100.0 -offset_bottom = 100.0 -size_flags_horizontal = 0 -script = ExtResource("1_amutf") - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_horizontal = 0 - -[node name="Controls" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="MouseBlank" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("13_1bw2l") -stretch_mode = 4 - -[node name="MouseLeft" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("2_6vk7n") -stretch_mode = 4 - -[node name="MouseRight" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("3_aaqrj") -stretch_mode = 4 - -[node name="MouseMiddle" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("4_gprek") -stretch_mode = 4 - -[node name="MouseSideA" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("6_adi64") -stretch_mode = 4 - -[node name="MouseSideB" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("7_bbgo7") -stretch_mode = 4 - -[node name="MouseCursor" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("8_g4vq6") -stretch_mode = 4 - -[node name="Directions" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="Left" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("6_fo4h0") -stretch_mode = 4 - -[node name="Right" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("7_t242p") -stretch_mode = 4 - -[node name="Up" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("8_a7prs") -stretch_mode = 4 - -[node name="Down" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("9_dfyjd") -stretch_mode = 4 - -[node name="Horizontal" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("12_xdqh7") -stretch_mode = 4 - -[node name="Vertical" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("13_yoogt") -stretch_mode = 4 diff --git a/addons/guide/ui/renderers/textures/action.svg b/addons/guide/ui/renderers/textures/action.svg deleted file mode 100644 index 1da724c..0000000 --- a/addons/guide/ui/renderers/textures/action.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/action.svg.import b/addons/guide/ui/renderers/textures/action.svg.import deleted file mode 100644 index 7c0aa8d..0000000 --- a/addons/guide/ui/renderers/textures/action.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://diwkvjkss2ie" -path="res://.godot/imported/action.svg-6100da2ab8ea5d289c6e91ccdfb53aca.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/action.svg" -dest_files=["res://.godot/imported/action.svg-6100da2ab8ea5d289c6e91ccdfb53aca.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_all_directions.svg b/addons/guide/ui/renderers/textures/arrow_all_directions.svg deleted file mode 100644 index c0053b6..0000000 --- a/addons/guide/ui/renderers/textures/arrow_all_directions.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_all_directions.svg.import b/addons/guide/ui/renderers/textures/arrow_all_directions.svg.import deleted file mode 100644 index 20bd950..0000000 --- a/addons/guide/ui/renderers/textures/arrow_all_directions.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dwb1h8sfsccyy" -path="res://.godot/imported/arrow_all_directions.svg-c87a4938e66e69435ad57c677b38771f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_all_directions.svg" -dest_files=["res://.godot/imported/arrow_all_directions.svg-c87a4938e66e69435ad57c677b38771f.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_down.svg b/addons/guide/ui/renderers/textures/arrow_down.svg deleted file mode 100644 index b1a193a..0000000 --- a/addons/guide/ui/renderers/textures/arrow_down.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_down.svg.import b/addons/guide/ui/renderers/textures/arrow_down.svg.import deleted file mode 100644 index f624ed8..0000000 --- a/addons/guide/ui/renderers/textures/arrow_down.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://oq2vvwgbdsh7" -path="res://.godot/imported/arrow_down.svg-88a3b47c68c37638cef21944ad9cda50.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_down.svg" -dest_files=["res://.godot/imported/arrow_down.svg-88a3b47c68c37638cef21944ad9cda50.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_horizontal.svg b/addons/guide/ui/renderers/textures/arrow_horizontal.svg deleted file mode 100644 index ae0146f..0000000 --- a/addons/guide/ui/renderers/textures/arrow_horizontal.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_horizontal.svg.import b/addons/guide/ui/renderers/textures/arrow_horizontal.svg.import deleted file mode 100644 index 8975345..0000000 --- a/addons/guide/ui/renderers/textures/arrow_horizontal.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bmgxqbypegjxh" -path="res://.godot/imported/arrow_horizontal.svg-5fd469f78a3e46cba20723a7b243bca1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_horizontal.svg" -dest_files=["res://.godot/imported/arrow_horizontal.svg-5fd469f78a3e46cba20723a7b243bca1.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_left.svg b/addons/guide/ui/renderers/textures/arrow_left.svg deleted file mode 100644 index 9f94969..0000000 --- a/addons/guide/ui/renderers/textures/arrow_left.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_left.svg.import b/addons/guide/ui/renderers/textures/arrow_left.svg.import deleted file mode 100644 index 2b22128..0000000 --- a/addons/guide/ui/renderers/textures/arrow_left.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://1swh072gtbb4" -path="res://.godot/imported/arrow_left.svg-2a189e6eec3713a64220cf9427e1f45c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_left.svg" -dest_files=["res://.godot/imported/arrow_left.svg-2a189e6eec3713a64220cf9427e1f45c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_right.svg b/addons/guide/ui/renderers/textures/arrow_right.svg deleted file mode 100644 index 7516511..0000000 --- a/addons/guide/ui/renderers/textures/arrow_right.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_right.svg.import b/addons/guide/ui/renderers/textures/arrow_right.svg.import deleted file mode 100644 index 2b784e3..0000000 --- a/addons/guide/ui/renderers/textures/arrow_right.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cjvs04qsrj8ap" -path="res://.godot/imported/arrow_right.svg-83b2fe427227f253ed212a8b1c56acb4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_right.svg" -dest_files=["res://.godot/imported/arrow_right.svg-83b2fe427227f253ed212a8b1c56acb4.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_up.svg b/addons/guide/ui/renderers/textures/arrow_up.svg deleted file mode 100644 index 8b37520..0000000 --- a/addons/guide/ui/renderers/textures/arrow_up.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_up.svg.import b/addons/guide/ui/renderers/textures/arrow_up.svg.import deleted file mode 100644 index 83e63ee..0000000 --- a/addons/guide/ui/renderers/textures/arrow_up.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ni6lsbx1d2hf" -path="res://.godot/imported/arrow_up.svg-56e16fd95d307eb9666c8ac4e78e2b97.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_up.svg" -dest_files=["res://.godot/imported/arrow_up.svg-56e16fd95d307eb9666c8ac4e78e2b97.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/textures/arrow_vertical.svg b/addons/guide/ui/renderers/textures/arrow_vertical.svg deleted file mode 100644 index 2bf3493..0000000 --- a/addons/guide/ui/renderers/textures/arrow_vertical.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/guide/ui/renderers/textures/arrow_vertical.svg.import b/addons/guide/ui/renderers/textures/arrow_vertical.svg.import deleted file mode 100644 index 7d87170..0000000 --- a/addons/guide/ui/renderers/textures/arrow_vertical.svg.import +++ /dev/null @@ -1,37 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bu5nlug6uf03w" -path="res://.godot/imported/arrow_vertical.svg-17983361d36ac9313b8d80f7240cf6aa.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/textures/arrow_vertical.svg" -dest_files=["res://.godot/imported/arrow_vertical.svg-17983361d36ac9313b8d80f7240cf6aa.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false diff --git a/addons/guide/ui/renderers/touch/icons/touch_1_finger.png b/addons/guide/ui/renderers/touch/icons/touch_1_finger.png deleted file mode 100644 index 86ef0be84e46d9a3074fd7cc74393b920f444372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5698 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 C|N8a- diff --git a/addons/guide/ui/renderers/touch/icons/touch_1_finger.png.import b/addons/guide/ui/renderers/touch/icons/touch_1_finger.png.import deleted file mode 100644 index 15f71ab..0000000 --- a/addons/guide/ui/renderers/touch/icons/touch_1_finger.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c5nwnp5cjny7m" -path="res://.godot/imported/touch_1_finger.png-c21ed1a6c694f6c9460ef451efcf36e2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/touch/icons/touch_1_finger.png" -dest_files=["res://.godot/imported/touch_1_finger.png-c21ed1a6c694f6c9460ef451efcf36e2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/touch/icons/touch_2_fingers.png b/addons/guide/ui/renderers/touch/icons/touch_2_fingers.png deleted file mode 100644 index 354ff8dcd97728ddbe1bc7ef8c14bc97596bd17e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6395 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 O2#L^oT&isT{(k`DElJV< diff --git a/addons/guide/ui/renderers/touch/icons/touch_2_fingers.png.import b/addons/guide/ui/renderers/touch/icons/touch_2_fingers.png.import deleted file mode 100644 index 5e7dfd6..0000000 --- a/addons/guide/ui/renderers/touch/icons/touch_2_fingers.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bllhe78a1yo6" -path="res://.godot/imported/touch_2_fingers.png-f5e5340b938b807b9249837228cb3c96.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/touch/icons/touch_2_fingers.png" -dest_files=["res://.godot/imported/touch_2_fingers.png-f5e5340b938b807b9249837228cb3c96.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/touch/icons/touch_3_fingers.png b/addons/guide/ui/renderers/touch/icons/touch_3_fingers.png deleted file mode 100644 index 09a07d90a405860b0e64a501c2f2cde4ece33408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6746 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

upJ?Am&Qq|Tb!@$5`VPSceIWaz7 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 Nqy$lytC2B}_#fGk<&ppZ diff --git a/addons/guide/ui/renderers/touch/icons/touch_4_fingers.png.import b/addons/guide/ui/renderers/touch/icons/touch_4_fingers.png.import deleted file mode 100644 index 02e6cd4..0000000 --- a/addons/guide/ui/renderers/touch/icons/touch_4_fingers.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cjw5m42gufghr" -path="res://.godot/imported/touch_4_fingers.png-feb0257c01dc7e2234eb7bd7feabd57d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/touch/icons/touch_4_fingers.png" -dest_files=["res://.godot/imported/touch_4_fingers.png-feb0257c01dc7e2234eb7bd7feabd57d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/touch/icons/touch_rotate.png b/addons/guide/ui/renderers/touch/icons/touch_rotate.png deleted file mode 100644 index 6c1af5b3b6fd3cd1a3b1d17fcc7d46d8a22962b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5245 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 DSwAUU diff --git a/addons/guide/ui/renderers/touch/icons/touch_rotate.png.import b/addons/guide/ui/renderers/touch/icons/touch_rotate.png.import deleted file mode 100644 index 0975cd0..0000000 --- a/addons/guide/ui/renderers/touch/icons/touch_rotate.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bxj4t5vjx7o3w" -path="res://.godot/imported/touch_rotate.png-22fc9d2b74759b3c29981107fa4d935b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/guide/ui/renderers/touch/icons/touch_rotate.png" -dest_files=["res://.godot/imported/touch_rotate.png-22fc9d2b74759b3c29981107fa4d935b.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/addons/guide/ui/renderers/touch/icons/touch_zoom.png b/addons/guide/ui/renderers/touch/icons/touch_zoom.png deleted file mode 100644 index 37e0cb8a2903e44f1ebfad7d2e6a534a6a8efc03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5053 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 bool: - return input is GUIDEInputTouchAxis1D or \ - input is GUIDEInputTouchAxis2D or \ - input is GUIDEInputTouchPosition or \ - input is GUIDEInputTouchAngle or \ - input is GUIDEInputTouchDistance - - - -func render(input:GUIDEInput) -> void: - for child in _controls.get_children(): - child.visible = false - for child in _directions.get_children(): - child.visible = false - - _directions.visible = false - - if input is GUIDEInputTouchBase: - match input.finger_count: - 2: - _2_finger.visible = true - 3: - _3_finger.visible = true - 4: - _4_finger.visible = true - _: - # we have no icons for more than 4 fingers, so everything else gets - # the 1 finger icon - _1_finger.visible = true - - if input is GUIDEInputTouchAxis2D: - _directions.visible = true - _axis2d.visible = true - - if input is GUIDEInputTouchAxis1D: - _directions.visible = true - match input.axis: - GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X: - _horizontal.visible = true - GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X: - _vertical.visible = true - - if input is GUIDEInputTouchDistance: - _zoom.visible = true - - if input is GUIDEInputTouchAngle: - _rotate.visible = true - - call("queue_sort") - -func cache_key(input:GUIDEInput) -> String: - return "1f4c5082-d419-465f-aba8-f889caaff335" + input.to_string() diff --git a/addons/guide/ui/renderers/touch/touch_renderer.gd.uid b/addons/guide/ui/renderers/touch/touch_renderer.gd.uid deleted file mode 100644 index 2e24c24..0000000 --- a/addons/guide/ui/renderers/touch/touch_renderer.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ifnst4gxj4q7 diff --git a/addons/guide/ui/renderers/touch/touch_renderer.tscn b/addons/guide/ui/renderers/touch/touch_renderer.tscn deleted file mode 100644 index 3bbb5e0..0000000 --- a/addons/guide/ui/renderers/touch/touch_renderer.tscn +++ /dev/null @@ -1,93 +0,0 @@ -[gd_scene load_steps=11 format=3 uid="uid://ykuou1deo5ub"] - -[ext_resource type="Script" uid="uid://ifnst4gxj4q7" path="res://addons/guide/ui/renderers/touch/touch_renderer.gd" id="1_heixj"] -[ext_resource type="Texture2D" uid="uid://c5nwnp5cjny7m" path="res://addons/guide/ui/renderers/touch/icons/touch_1_finger.png" id="2_4mplc"] -[ext_resource type="Texture2D" uid="uid://bllhe78a1yo6" path="res://addons/guide/ui/renderers/touch/icons/touch_2_fingers.png" id="3_0dcqu"] -[ext_resource type="Texture2D" uid="uid://bwhqf2nmm5q1w" path="res://addons/guide/ui/renderers/touch/icons/touch_3_fingers.png" id="4_mgq0v"] -[ext_resource type="Texture2D" uid="uid://cjw5m42gufghr" path="res://addons/guide/ui/renderers/touch/icons/touch_4_fingers.png" id="5_qoicp"] -[ext_resource type="Texture2D" uid="uid://bxj4t5vjx7o3w" path="res://addons/guide/ui/renderers/touch/icons/touch_rotate.png" id="6_4jaqi"] -[ext_resource type="Texture2D" uid="uid://cutplj0nhphk" path="res://addons/guide/ui/renderers/touch/icons/touch_zoom.png" id="7_gvy7l"] -[ext_resource type="Texture2D" uid="uid://bmgxqbypegjxh" path="res://addons/guide/ui/renderers/textures/arrow_horizontal.svg" id="8_m5om5"] -[ext_resource type="Texture2D" uid="uid://dwb1h8sfsccyy" path="res://addons/guide/ui/renderers/textures/arrow_all_directions.svg" id="9_5gr2q"] -[ext_resource type="Texture2D" uid="uid://bu5nlug6uf03w" path="res://addons/guide/ui/renderers/textures/arrow_vertical.svg" id="10_4vghq"] - -[node name="TouchRenderer" type="MarginContainer"] -offset_right = 100.0 -offset_bottom = 100.0 -size_flags_horizontal = 0 -script = ExtResource("1_heixj") - -[node name="HBoxContainer" type="HBoxContainer" parent="."] -layout_mode = 2 -size_flags_horizontal = 0 - -[node name="Controls" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="T1Finger" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("2_4mplc") -stretch_mode = 4 - -[node name="T2Fingers" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("3_0dcqu") -stretch_mode = 4 - -[node name="T3Fingers" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("4_mgq0v") -stretch_mode = 4 - -[node name="T4Fingers" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("5_qoicp") -stretch_mode = 4 - -[node name="Rotate" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("6_4jaqi") -stretch_mode = 4 - -[node name="Zoom" type="TextureRect" parent="HBoxContainer/Controls"] -unique_name_in_owner = true -visible = false -layout_mode = 2 -texture = ExtResource("7_gvy7l") -stretch_mode = 4 - -[node name="Directions" type="MarginContainer" parent="HBoxContainer"] -unique_name_in_owner = true -visible = false -custom_minimum_size = Vector2(100, 100) -layout_mode = 2 - -[node name="Horizontal" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("8_m5om5") -stretch_mode = 4 - -[node name="Vertical" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("10_4vghq") -stretch_mode = 4 - -[node name="Axis2D" type="TextureRect" parent="HBoxContainer/Directions"] -unique_name_in_owner = true -layout_mode = 2 -texture = ExtResource("9_5gr2q") -stretch_mode = 4 diff --git a/addons/guide/ui/text_providers/controllers/controller_text_provider.gd b/addons/guide/ui/text_providers/controllers/controller_text_provider.gd deleted file mode 100644 index 3a569ee..0000000 --- a/addons/guide/ui/text_providers/controllers/controller_text_provider.gd +++ /dev/null @@ -1,115 +0,0 @@ -extends GUIDETextProvider - -func _init(): - priority = -1 - -func _controller_names() -> Array[String]: - return [] - -func _a_button_name() -> String: - return "A" - -func _b_button_name() -> String: - return "B" - -func _x_button_name() -> String: - return "X" - -func _y_button_name() -> String: - return "Y" - -func _left_bumper_name() -> String: - return "LB" - -func _right_bumper_name() -> String: - return "RB" - -func _left_trigger_name() -> String: - return "LT" - -func _right_trigger_name() -> String: - return "RT" - -func _back_button_name() -> String: - return "Back" - -func _misc_1_button_name() -> String: - return "Misc 1" - -func _start_button_name() -> String: - return "Start" - - -func supports(input:GUIDEInput) -> bool: - var controller_name = GUIDEInputFormatter._joy_name_for_input(input) - if controller_name == "": - return false - - var haystack = controller_name.to_lower() - for needle in _controller_names(): - if haystack.contains(needle.to_lower()): - return true - - return false - -func _format(input:String) -> String: - return "[%s]" % [input] - - -func get_text(input:GUIDEInput) -> String: - if input is GUIDEInputJoyAxis1D: - match input.axis: - JOY_AXIS_LEFT_X: - return _format(tr("Left Stick Horizontal")) - JOY_AXIS_LEFT_Y: - return _format(tr("Left Stick Vertical")) - JOY_AXIS_RIGHT_X: - return _format(tr("Right Stick Horizontal")) - JOY_AXIS_RIGHT_Y: - return _format(tr("Right Stick Vertical")) - JOY_AXIS_TRIGGER_LEFT: - return _format(tr(_left_trigger_name())) - JOY_AXIS_TRIGGER_RIGHT: - return _format(tr(_right_trigger_name())) - - if input is GUIDEInputJoyAxis2D: - match input.x: - JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y: - return _format(tr("Left Stick")) - JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y: - return _format(tr("Right Stick")) - - if input is GUIDEInputJoyButton: - match input.button: - JOY_BUTTON_A: - return _format(tr(_a_button_name())) - JOY_BUTTON_B: - return _format(tr(_b_button_name())) - JOY_BUTTON_X: - return _format(tr(_x_button_name())) - JOY_BUTTON_Y: - return _format(tr(_y_button_name())) - JOY_BUTTON_DPAD_LEFT: - return _format(tr("DPAD Left")) - JOY_BUTTON_DPAD_RIGHT: - return _format(tr("DPAD Right")) - JOY_BUTTON_DPAD_UP: - return _format(tr("DPAD Up")) - JOY_BUTTON_DPAD_DOWN: - return _format(tr("DPAD Down")) - JOY_BUTTON_LEFT_SHOULDER: - return _format(tr(_left_bumper_name())) - JOY_BUTTON_RIGHT_SHOULDER: - return _format(tr(_right_bumper_name())) - JOY_BUTTON_LEFT_STICK: - return _format(tr("Left Stick")) - JOY_BUTTON_RIGHT_STICK: - return _format(tr("Right Stick")) - JOY_BUTTON_BACK: - return _format(tr(_back_button_name())) - JOY_BUTTON_MISC1: - return _format(tr(_misc_1_button_name())) - JOY_BUTTON_START: - return _format(tr(_start_button_name())) - - return _format("??") diff --git a/addons/guide/ui/text_providers/controllers/controller_text_provider.gd.uid b/addons/guide/ui/text_providers/controllers/controller_text_provider.gd.uid deleted file mode 100644 index 3fa96fc..0000000 --- a/addons/guide/ui/text_providers/controllers/controller_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cx2cfjsh68i1q diff --git a/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd b/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd deleted file mode 100644 index 786f145..0000000 --- a/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd +++ /dev/null @@ -1,37 +0,0 @@ -extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd" - -func _controller_names() -> Array[String]: - return ["DualSense", "DualShock", "Playstation", "PS3", "PS4", "PS5"] - -func _a_button_name() -> String: - return "Cross" - -func _b_button_name() -> String: - return "Circle" - -func _x_button_name() -> String: - return "Square" - -func _y_button_name() -> String: - return "Triangle" - -func _left_bumper_name() -> String: - return "L1" - -func _right_bumper_name() -> String: - return "R1" - -func _left_trigger_name() -> String: - return "L2" - -func _right_trigger_name() -> String: - return "R2" - -func _back_button_name() -> String: - return "Share" - -func _misc_1_button_name() -> String: - return "Microphone" - -func _start_button_name() -> String: - return "Options" diff --git a/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd.uid b/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd.uid deleted file mode 100644 index 951227e..0000000 --- a/addons/guide/ui/text_providers/controllers/playstation/playstation_controller_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0llhrxb0bat2 diff --git a/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd b/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd deleted file mode 100644 index 97fbe5d..0000000 --- a/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd +++ /dev/null @@ -1,37 +0,0 @@ -extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd" - -func _controller_names() -> Array[String]: - return ["Nintendo Switch"] - -func _a_button_name() -> String: - return "B" - -func _b_button_name() -> String: - return "A" - -func _x_button_name() -> String: - return "Y" - -func _y_button_name() -> String: - return "X" - -func _left_bumper_name() -> String: - return "L" - -func _right_bumper_name() -> String: - return "R" - -func _left_trigger_name() -> String: - return "ZL" - -func _right_trigger_name() -> String: - return "ZR" - -func _back_button_name() -> String: - return "-" - -func _misc_1_button_name() -> String: - return "Square" - -func _start_button_name() -> String: - return "+" diff --git a/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd.uid b/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd.uid deleted file mode 100644 index e6206da..0000000 --- a/addons/guide/ui/text_providers/controllers/switch/switch_controller_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c6j7crlp6ou50 diff --git a/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd b/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd deleted file mode 100644 index 1d044d7..0000000 --- a/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd +++ /dev/null @@ -1,37 +0,0 @@ -extends "res://addons/guide/ui/text_providers/controllers/controller_text_provider.gd" - -func _controller_names() -> Array[String]: - return ["XInput", "XBox"] - -func _a_button_name() -> String: - return "A" - -func _b_button_name() -> String: - return "B" - -func _x_button_name() -> String: - return "X" - -func _y_button_name() -> String: - return "Y" - -func _left_bumper_name() -> String: - return "LB" - -func _right_bumper_name() -> String: - return "RB" - -func _left_trigger_name() -> String: - return "LT" - -func _right_trigger_name() -> String: - return "RT" - -func _back_button_name() -> String: - return "View" - -func _misc_1_button_name() -> String: - return "Share" - -func _start_button_name() -> String: - return "Menu" diff --git a/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd.uid b/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd.uid deleted file mode 100644 index 33a81c2..0000000 --- a/addons/guide/ui/text_providers/controllers/xbox/xbox_controller_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dle2rbb4i13en diff --git a/addons/guide/ui/text_providers/default_text_provider.gd b/addons/guide/ui/text_providers/default_text_provider.gd deleted file mode 100644 index c9ce6af..0000000 --- a/addons/guide/ui/text_providers/default_text_provider.gd +++ /dev/null @@ -1,141 +0,0 @@ -extends GUIDETextProvider - -var _is_on_desktop:bool = false - -func _init(): - priority = 0 - _is_on_desktop = OS.has_feature("linuxbsd") or OS.has_feature("macos") or OS.has_feature("windows") - -func supports(input:GUIDEInput) -> bool: - return true - - -func _format(input:String) -> String: - return "[%s]" % [input] - - -func get_text(input:GUIDEInput) -> String: - if input is GUIDEInputKey: - var result:PackedStringArray = [] - if input.control: - var ctrl = GUIDEInputKey.new() - ctrl.key = KEY_CTRL - result.append(get_text(ctrl)) - if input.alt: - var alt = GUIDEInputKey.new() - alt.key = KEY_ALT - result.append(get_text(alt)) - if input.shift: - var shift = GUIDEInputKey.new() - shift.key = KEY_SHIFT - result.append(get_text(shift)) - if input.meta: - var meta = GUIDEInputKey.new() - meta.key = KEY_META - result.append(get_text(meta)) - - var the_key = input.key - - # if we are on desktop, translate the physical keycode into the actual label - # this is not supported on mobile, so we have to check - if _is_on_desktop: - the_key = DisplayServer.keyboard_get_label_from_physical(input.key) - - - result.append(_format(OS.get_keycode_string(the_key))) - return "+".join(result) - - if input is GUIDEInputMouseAxis1D: - match input.axis: - GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.X: - return _format(tr("Mouse Left/Right")) - GUIDEInputMouseAxis1D.GUIDEInputMouseAxis.Y: - return _format(tr("Mouse Up/Down")) - - if input is GUIDEInputMouseAxis2D: - return _format(tr("Mouse")) - - if input is GUIDEInputMouseButton: - match input.button: - MOUSE_BUTTON_LEFT: - return _format(tr("Left Mouse Button")) - MOUSE_BUTTON_RIGHT: - return _format(tr("Right Mouse Button")) - MOUSE_BUTTON_MIDDLE: - return _format(tr("Middle Mouse Button")) - MOUSE_BUTTON_WHEEL_UP: - return _format(tr("Mouse Wheel Up")) - MOUSE_BUTTON_WHEEL_DOWN: - return _format(tr("Mouse Wheel Down")) - MOUSE_BUTTON_WHEEL_LEFT: - return _format(tr("Mouse Wheel Left")) - MOUSE_BUTTON_WHEEL_RIGHT: - return _format(tr("Mouse Wheel Right")) - MOUSE_BUTTON_XBUTTON1: - return _format(tr("Mouse Side 1")) - MOUSE_BUTTON_XBUTTON2: - return _format(tr("Mouse Side 2")) - - if input is GUIDEInputJoyAxis1D: - match input.axis: - JOY_AXIS_LEFT_X: - return _format(tr("Stick 1 Horizontal")) - JOY_AXIS_LEFT_Y: - return _format(tr("Stick 1 Vertical")) - JOY_AXIS_RIGHT_X: - return _format(tr("Stick 2 Horizontal")) - JOY_AXIS_RIGHT_Y: - return _format(tr("Stick 2 Vertical")) - JOY_AXIS_TRIGGER_LEFT: - return _format(tr("Axis 3")) - JOY_AXIS_TRIGGER_RIGHT: - return _format(tr("Axis 4")) - - if input is GUIDEInputJoyAxis2D: - match input.x: - JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y: - return _format(tr("Stick 1")) - JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y: - return _format(tr("Stick 2")) - - if input is GUIDEInputJoyButton: - return _format(tr("Joy %s") % [input.button]) - - - if input is GUIDEInputAction: - return _format(tr("Action %s") % ["?" if input.action == null else input.action._editor_name()]) - - if input is GUIDEInputAny: - var parts:Array[String] = [] - if input.joy: - parts.append(tr("Joy Button")) - if input.mouse: - parts.append(tr("Mouse Button")) - if input.keyboard: - parts.append(tr("Key")) - - return _format(tr("Any %s") % [ "/".join(parts) ] ) - - if input is GUIDEInputMousePosition: - return _format(tr("Mouse Position")) - - if input is GUIDEInputTouchPosition: - return _format(tr("Touch Position %s") % [input.finger_index if input.finger_index >= 0 else "Average"]) - - if input is GUIDEInputTouchAngle: - return _format(tr("Touch Angle")) - - if input is GUIDEInputTouchDistance: - return _format(tr("Touch Distance")) - - if input is GUIDEInputTouchAxis1D: - match input.axis: - GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.X: - _format(tr("Touch Left/Right %s") % [input.finger_index if input.finger_index >= 0 else "Average"]) - GUIDEInputTouchAxis1D.GUIDEInputTouchAxis.Y: - _format(tr("Touch Up/Down %s") % [input.finger_index if input.finger_index >= 0 else "Average"]) - - if input is GUIDEInputTouchAxis2D: - return _format(tr("Touch Axis 2D %s") % [input.finger_index if input.finger_index >= 0 else "Average"]) - - return _format("??") diff --git a/addons/guide/ui/text_providers/default_text_provider.gd.uid b/addons/guide/ui/text_providers/default_text_provider.gd.uid deleted file mode 100644 index 2dc55c6..0000000 --- a/addons/guide/ui/text_providers/default_text_provider.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://brekmfywuc503 diff --git a/objects/bullet.tscn b/objects/bullet.tscn index fa3d308..03e6349 100644 --- a/objects/bullet.tscn +++ b/objects/bullet.tscn @@ -32,7 +32,7 @@ area2d = NodePath("..") [node name="BulletComponent" type="Node2D" parent="." node_paths=PackedStringArray("root", "area2d", "visibility_notifier", "timer")] script = ExtResource("3_keogl") root = NodePath("..") -speed = 80.0 +speed = 120.0 area2d = NodePath("..") visibility_notifier = NodePath("../VisibleOnScreenNotifier2D") timer = NodePath("../Timer") diff --git a/objects/child.tscn b/objects/child.tscn index a79bb56..9777749 100644 --- a/objects/child.tscn +++ b/objects/child.tscn @@ -45,9 +45,10 @@ texture = ExtResource("4_vq1oq") position = Vector2(4, -18) texture = ExtResource("5_m7x6t") -[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "sfx")] +[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "collision_shape", "sfx")] script = ExtResource("5_wc3ym") area2d = NodePath("..") +collision_shape = NodePath("../CollisionShape2D") collectable_data = ExtResource("6_vmvuo") sfx = NodePath("../sfx_pickup") diff --git a/objects/marketplace.tscn b/objects/marketplace.tscn index 2aa7dc0..63dcafa 100644 --- a/objects/marketplace.tscn +++ b/objects/marketplace.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://dlm2ri562fynd"] +[gd_scene load_steps=11 format=3 uid="uid://dlm2ri562fynd"] [ext_resource type="Script" uid="uid://duifmqjarjpuv" path="res://scripts/marketplace.gd" id="1_ncpyg"] [ext_resource type="FontFile" uid="uid://xm0vbusjr7b7" path="res://fonts/PressStart2P-Regular.ttf" id="2_ho1tm"] @@ -8,6 +8,7 @@ [ext_resource type="Resource" uid="uid://2glvryih82t1" path="res://resources/skills/fire_brick.tres" id="5_fqx8e"] [ext_resource type="Resource" uid="uid://cx5fsbexblp60" path="res://resources/skills/ice_brick.tres" id="6_6665y"] [ext_resource type="Resource" uid="uid://d3bjre2etov1n" path="res://resources/skills/magnetic.tres" id="7_ukny6"] +[ext_resource type="PackedScene" uid="uid://dtl03rod7l2t0" path="res://objects/marketplace_button.tscn" id="9_ode10"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ode10"] bg_color = Color(0, 0, 0, 1) @@ -24,6 +25,7 @@ root = NodePath(".") skill_data = Array[ExtResource("2_pg4mc")]([ExtResource("3_bk5yi"), ExtResource("4_tx0n3"), ExtResource("5_fqx8e"), ExtResource("6_6665y"), ExtResource("7_ukny6")]) grid = NodePath("PanelContainer/MarginContainer/VBoxContainer/GridContainer") font = ExtResource("2_ho1tm") +marketplace_button = ExtResource("9_ode10") [node name="PanelContainer" type="PanelContainer" parent="."] layout_mode = 1 @@ -43,6 +45,7 @@ theme_override_constants/margin_bottom = 8 [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] layout_mode = 2 +theme_override_constants/separation = 32 [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 @@ -54,5 +57,8 @@ uppercase = true [node name="GridContainer" type="GridContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 -size_flags_vertical = 3 -columns = 2 +size_flags_horizontal = 4 +size_flags_vertical = 2 +theme_override_constants/h_separation = 4 +theme_override_constants/v_separation = 16 +columns = 3 diff --git a/objects/marketplace_button.tscn b/objects/marketplace_button.tscn new file mode 100644 index 0000000..a08b6af --- /dev/null +++ b/objects/marketplace_button.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://dtl03rod7l2t0"] + +[ext_resource type="Texture2D" uid="uid://cvhoq7aubxlmq" path="res://sprites/ui/magnetic_skill_icon.png" id="1_5kqfg"] + +[node name="MarketplaceButton" type="Button"] +offset_right = 8.0 +offset_bottom = 8.0 +theme_override_font_sizes/font_size = 8 +text = "Fire brick 100" +icon = ExtResource("1_5kqfg") +flat = true diff --git a/project.godot b/project.godot index 177ae0b..b14479c 100644 --- a/project.godot +++ b/project.godot @@ -28,10 +28,10 @@ config/icon="res://icon.svg" GameManager="*res://objects/game_manager.tscn" PhantomCameraManager="*res://addons/phantom_camera/scripts/managers/phantom_camera_manager.gd" -GUIDE="*res://addons/guide/guide.gd" AudioController="*res://objects/audio_controller.tscn" SteamIntegrationNode="*res://objects/steam_integration.tscn" SteamControllerInput="*res://autoloads/steam_controller_input.gd" +Console="*res://addons/godot-console/scripts/console.gd" [debug] @@ -58,7 +58,7 @@ movie_writer/fps=24 [editor_plugins] -enabled=PackedStringArray("res://addons/guide/plugin.cfg", "res://addons/phantom_camera/plugin.cfg") +enabled=PackedStringArray("res://addons/godot-console/plugin.cfg", "res://addons/phantom_camera/plugin.cfg") [global_group] diff --git a/resources/input/move.tres b/resources/input/move.tres deleted file mode 100644 index 7b5e0f8..0000000 --- a/resources/input/move.tres +++ /dev/null @@ -1,13 +0,0 @@ -[gd_resource type="Resource" script_class="GUIDEAction" load_steps=2 format=3 uid="uid://c7h4sh2ilslsv"] - -[ext_resource type="Script" uid="uid://5yg21xllntrk" path="res://addons/guide/guide_action.gd" id="1_abssq"] - -[resource] -script = ExtResource("1_abssq") -name = &"" -action_value_type = 2 -block_lower_priority_actions = true -emit_as_godot_actions = false -is_remappable = false -display_name = "" -display_category = "" diff --git a/resources/input/walk_mode.tres b/resources/input/walk_mode.tres deleted file mode 100644 index 467a357..0000000 --- a/resources/input/walk_mode.tres +++ /dev/null @@ -1,101 +0,0 @@ -[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=18 format=3 uid="uid://cb5pheu58dpqi"] - -[ext_resource type="Script" uid="uid://5huk51k6eqa8" path="res://addons/guide/guide_action_mapping.gd" id="1_20ds1"] -[ext_resource type="Script" uid="uid://ddr05cbbemxru" path="res://addons/guide/guide_mapping_context.gd" id="2_tdx85"] -[ext_resource type="Resource" uid="uid://c7h4sh2ilslsv" path="res://resources/input/move.tres" id="2_wp2di"] -[ext_resource type="Script" uid="uid://c5pstcepgwkmy" path="res://addons/guide/guide_input_mapping.gd" id="3_lq4l6"] -[ext_resource type="Script" uid="uid://coygbn3kos0l6" path="res://addons/guide/inputs/guide_input_key.gd" id="4_rtw28"] -[ext_resource type="Script" uid="uid://dokohnxlptadc" path="res://addons/guide/modifiers/guide_modifier.gd" id="5_gbdho"] -[ext_resource type="Script" uid="uid://bf0t8choiiqnb" path="res://addons/guide/triggers/guide_trigger.gd" id="6_3igdd"] - -[sub_resource type="Resource" id="Resource_10hm2"] -script = ExtResource("4_rtw28") -key = 65 -shift = false -control = false -alt = false -meta = false -allow_additional_modifiers = true - -[sub_resource type="Resource" id="Resource_f1rpj"] -script = ExtResource("3_lq4l6") -override_action_settings = false -is_remappable = false -display_name = "" -display_category = "" -input = SubResource("Resource_10hm2") -modifiers = Array[ExtResource("5_gbdho")]([]) -triggers = Array[ExtResource("6_3igdd")]([]) - -[sub_resource type="Resource" id="Resource_ieje0"] -script = ExtResource("4_rtw28") -key = 68 -shift = false -control = false -alt = false -meta = false -allow_additional_modifiers = true - -[sub_resource type="Resource" id="Resource_u07sv"] -script = ExtResource("3_lq4l6") -override_action_settings = false -is_remappable = false -display_name = "" -display_category = "" -input = SubResource("Resource_ieje0") -modifiers = Array[ExtResource("5_gbdho")]([]) -triggers = Array[ExtResource("6_3igdd")]([]) - -[sub_resource type="Resource" id="Resource_mks6i"] -script = ExtResource("4_rtw28") -key = 87 -shift = false -control = false -alt = false -meta = false -allow_additional_modifiers = true - -[sub_resource type="Resource" id="Resource_g45jq"] -script = ExtResource("3_lq4l6") -override_action_settings = false -is_remappable = false -display_name = "" -display_category = "" -input = SubResource("Resource_mks6i") -modifiers = Array[ExtResource("5_gbdho")]([]) -triggers = Array[ExtResource("6_3igdd")]([]) - -[sub_resource type="Resource" id="Resource_rcwl7"] -script = ExtResource("4_rtw28") -key = 83 -shift = false -control = false -alt = false -meta = false -allow_additional_modifiers = true - -[sub_resource type="Resource" id="Resource_ie1ig"] -script = ExtResource("3_lq4l6") -override_action_settings = false -is_remappable = false -display_name = "" -display_category = "" -input = SubResource("Resource_rcwl7") -modifiers = Array[ExtResource("5_gbdho")]([]) -triggers = Array[ExtResource("6_3igdd")]([]) - -[sub_resource type="Resource" id="Resource_ahs5n"] -script = ExtResource("1_20ds1") -action = ExtResource("2_wp2di") -input_mappings = Array[ExtResource("3_lq4l6")]([SubResource("Resource_f1rpj"), SubResource("Resource_u07sv"), SubResource("Resource_g45jq"), SubResource("Resource_ie1ig")]) -metadata/_guide_input_mappings_collapsed = false - -[sub_resource type="Resource" id="Resource_4amy2"] -script = ExtResource("1_20ds1") -input_mappings = Array[ExtResource("3_lq4l6")]([]) -metadata/_guide_input_mappings_collapsed = false - -[resource] -script = ExtResource("2_tdx85") -display_name = "" -mappings = Array[ExtResource("1_20ds1")]([SubResource("Resource_ahs5n"), SubResource("Resource_4amy2")]) diff --git a/scripts/hud.gd b/scripts/hud.gd index d4a5375..294934c 100644 --- a/scripts/hud.gd +++ b/scripts/hud.gd @@ -33,19 +33,19 @@ func set_coins_label() -> void: return #todo: set internationalized text - coins_label.text = "Coins: " + str(game_manager.get_coins()) + coins_label.text = "Coins:" + str(game_manager.get_coins()) func set_lives_label() -> void: if not game_manager: return - lives_label.text = "Lives: " + str(game_manager.get_lives()) + lives_label.text = "Lives:" + str(game_manager.get_lives()) func set_health_progressbar() -> void: if not player_health: return - + health_progressbar.value = player_health.health health_progressbar.max_value = player_health.max_health \ No newline at end of file diff --git a/scripts/marketplace.gd b/scripts/marketplace.gd index a2d3c42..50e5a02 100644 --- a/scripts/marketplace.gd +++ b/scripts/marketplace.gd @@ -7,6 +7,7 @@ extends Node @export var font: Font @export var skill_unlocker: SkillUnlockerComponent @export var components_to_disable: Array[Node] = [] +@export var marketplace_button: PackedScene @onready var game_manager: GM = $"/root/GameManager" @@ -43,9 +44,8 @@ func _input(event: InputEvent) -> void: func create_upgrade_button(skill: SkillData): - var button := Button.new() + var button := marketplace_button.instantiate() as Button button.text = skill.name + " " + str(skill.cost) - button.flat = true button.icon = skill.icon button.pressed.connect(func () -> void: _on_button_pressed(skill)) diff --git a/scripts/steam_integration.gd b/scripts/steam_integration.gd index 1194220..39a2096 100644 --- a/scripts/steam_integration.gd +++ b/scripts/steam_integration.gd @@ -30,5 +30,4 @@ func _ready() -> void: if not has_bought_game: print("You have not bought the game.") - get_tree().quit(69) \ No newline at end of file