Huge Refactor (+upgrade to GD 4.5!)
1156
source/addons/boxconstructor/boxconstructor.gd
Normal file
1
source/addons/boxconstructor/boxconstructor.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://qnfnr8wrpdsl
|
||||||
7
source/addons/boxconstructor/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[plugin]
|
||||||
|
|
||||||
|
name="BoxConstructor"
|
||||||
|
description="Easy-to-use grayboxing tool designed for rapid prototyping in Godot"
|
||||||
|
author="Hannogert Otti"
|
||||||
|
version="1.0.0"
|
||||||
|
script="boxconstructor.gd"
|
||||||
73
source/addons/boxconstructor/scripts/cube_grid.gd
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
@tool
|
||||||
|
extends StaticBody3D
|
||||||
|
class_name CubeGrid3D
|
||||||
|
var grid_scale: float = 1:
|
||||||
|
set(value):
|
||||||
|
grid_scale = value
|
||||||
|
_update_material()
|
||||||
|
emit_signal("grid_created", grid_scale)
|
||||||
|
|
||||||
|
|
||||||
|
var mesh_instance: MeshInstance3D
|
||||||
|
var grid_material: ShaderMaterial
|
||||||
|
var csg_root: CSGCombiner3D
|
||||||
|
signal grid_created(scale: float)
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
set_meta("_edit_lock_", true)
|
||||||
|
|
||||||
|
# Check if the CubeGridMesh3D already exists
|
||||||
|
mesh_instance = get_node_or_null("CubeGridMesh3D")
|
||||||
|
if not mesh_instance:
|
||||||
|
mesh_instance = MeshInstance3D.new()
|
||||||
|
mesh_instance.name = "CubeGridMesh3D"
|
||||||
|
mesh_instance.set_meta("_edit_lock_", true)
|
||||||
|
var plane_mesh = PlaneMesh.new()
|
||||||
|
plane_mesh.size = Vector2(1, 1)
|
||||||
|
mesh_instance.mesh = plane_mesh
|
||||||
|
mesh_instance.scale = Vector3(4000, 0.001, 4000)
|
||||||
|
add_child(mesh_instance)
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
mesh_instance.owner = null
|
||||||
|
|
||||||
|
# Check if the CSGCombiner3D already exists
|
||||||
|
csg_root = self.get_node_or_null("CSGCombiner3D")
|
||||||
|
if not csg_root:
|
||||||
|
csg_root = CSGCombiner3D.new()
|
||||||
|
csg_root.name = "CSGCombiner3D"
|
||||||
|
csg_root.use_collision = true
|
||||||
|
add_child(csg_root)
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
csg_root.owner = get_tree().edited_scene_root
|
||||||
|
|
||||||
|
# Check if the CubeGridCollisionShape3D already exists
|
||||||
|
var collision_shape = get_node_or_null("CubeGridCollisionShape3D")
|
||||||
|
if not collision_shape:
|
||||||
|
collision_shape = CollisionShape3D.new()
|
||||||
|
var box_shape = BoxShape3D.new()
|
||||||
|
box_shape.size = Vector3(4000, 0.001, 4000)
|
||||||
|
collision_shape.shape = box_shape
|
||||||
|
collision_shape.name = "CubeGridCollisionShape3D"
|
||||||
|
add_child(collision_shape)
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
collision_shape.owner = null
|
||||||
|
|
||||||
|
_setup_shader()
|
||||||
|
emit_signal("grid_created", grid_scale)
|
||||||
|
|
||||||
|
func _setup_shader() -> void:
|
||||||
|
if not mesh_instance:
|
||||||
|
mesh_instance = get_node_or_null("CubeGridMesh3D")
|
||||||
|
if not mesh_instance:
|
||||||
|
push_error("Grid mesh instance not found!")
|
||||||
|
return
|
||||||
|
|
||||||
|
if not grid_material:
|
||||||
|
var base_material = preload("res://addons/boxconstructor/textures/cube_grid.tres")
|
||||||
|
grid_material = base_material.duplicate()
|
||||||
|
mesh_instance.material_override = grid_material
|
||||||
|
grid_material.set_shader_parameter("grid_scale", grid_scale)
|
||||||
|
|
||||||
|
func _update_material() -> void:
|
||||||
|
grid_material.set_shader_parameter("grid_scale", grid_scale)
|
||||||
1
source/addons/boxconstructor/scripts/cube_grid.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://bgxvcscuumfyq
|
||||||
275
source/addons/boxconstructor/scripts/toolbar.gd
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
@tool
|
||||||
|
extends PanelContainer
|
||||||
|
|
||||||
|
signal disable_button_pressed
|
||||||
|
signal select_button_pressed
|
||||||
|
signal add_button_pressed
|
||||||
|
signal remove_button_pressed
|
||||||
|
signal edit_mesh
|
||||||
|
signal grid_size_changed(size: float)
|
||||||
|
signal reset_grid_pressed
|
||||||
|
signal merge_mesh
|
||||||
|
|
||||||
|
var disable_button: Button
|
||||||
|
var merge_button: Button
|
||||||
|
var edit_button: Button
|
||||||
|
var tooltip_button: Button
|
||||||
|
var plugin: EditorPlugin
|
||||||
|
var toolbar_buttons: HBoxContainer
|
||||||
|
var select_button: Button
|
||||||
|
var add_button: Button
|
||||||
|
var active_button_stylebox: StyleBoxFlat
|
||||||
|
var grid_sizes = [0.01, 0.1, 0.25, 0.5, 0.75, 1, 2, 5, 10]
|
||||||
|
|
||||||
|
func _init(p_plugin: EditorPlugin) -> void:
|
||||||
|
plugin = p_plugin
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
_configure_style()
|
||||||
|
_create_containers()
|
||||||
|
_create_active_button_style()
|
||||||
|
_create_all_buttons()
|
||||||
|
|
||||||
|
func _create_all_buttons() -> void:
|
||||||
|
disable_button = _create_mode_button("Disable", "GuiClose", "_on_disable_pressed")
|
||||||
|
select_button = _create_mode_button("Select Edge", "ToolSelect", "_on_select_button_pressed")
|
||||||
|
add_button = _create_mode_button("Add Primitive", "Add", "_on_add_button_pressed")
|
||||||
|
_create_button("Reset Grid", "Reload", "_on_reset_button_pressed")
|
||||||
|
_create_grid_size_selector()
|
||||||
|
merge_button = _create_button("Merge Mesh", "BoxMesh", "_on_merge_mesh_pressed")
|
||||||
|
edit_button = _create_button("Edit Mesh", "Edit", "_on_edit_pressed")
|
||||||
|
tooltip_button = _create_button("", "Help", "pass")
|
||||||
|
|
||||||
|
func _configure_style() -> void:
|
||||||
|
var stylebox = StyleBoxFlat.new()
|
||||||
|
stylebox.bg_color = Color(0.211, 0.239, 0.290)
|
||||||
|
stylebox.set_corner_radius_all(20)
|
||||||
|
add_theme_stylebox_override("panel", stylebox)
|
||||||
|
|
||||||
|
add_theme_constant_override("margin_left", 20)
|
||||||
|
add_theme_constant_override("margin_right", 20)
|
||||||
|
add_theme_constant_override("margin_top", 10)
|
||||||
|
add_theme_constant_override("margin_bottom", 10)
|
||||||
|
|
||||||
|
func _create_containers() -> void:
|
||||||
|
var margin_container = MarginContainer.new()
|
||||||
|
margin_container.add_theme_constant_override("margin_left", 6)
|
||||||
|
margin_container.add_theme_constant_override("margin_right", 6)
|
||||||
|
margin_container.add_theme_constant_override("margin_top", 6)
|
||||||
|
margin_container.add_theme_constant_override("margin_bottom", 6)
|
||||||
|
add_child(margin_container)
|
||||||
|
|
||||||
|
toolbar_buttons = HBoxContainer.new()
|
||||||
|
toolbar_buttons.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||||
|
toolbar_buttons.add_theme_constant_override("separation", 8)
|
||||||
|
margin_container.add_child(toolbar_buttons)
|
||||||
|
|
||||||
|
func _create_active_button_style() -> void:
|
||||||
|
active_button_stylebox = _create_button_stylebox()
|
||||||
|
active_button_stylebox.bg_color = Color(0.3, 0.5, 0.7)
|
||||||
|
active_button_stylebox.border_color = Color.WHITE
|
||||||
|
|
||||||
|
func _create_buttons() -> void:
|
||||||
|
disable_button = _create_mode_button("Disable", "GuiVisibilityHidden", "_on_disable_pressed")
|
||||||
|
select_button = _create_mode_button("Select Edge", "ToolSelect", "_on_select_button_pressed")
|
||||||
|
add_button = _create_mode_button("Add Primitive", "Add", "_on_add_button_pressed")
|
||||||
|
_create_button("Reset Grid", "Reload", "_on_reset_button_pressed")
|
||||||
|
|
||||||
|
func set_edit_button_enabled(enabled: bool) -> void:
|
||||||
|
if edit_button:
|
||||||
|
edit_button.disabled = not enabled
|
||||||
|
|
||||||
|
func set_merge_button_enabled(enabled: bool) -> void:
|
||||||
|
if merge_button:
|
||||||
|
merge_button.disabled = not enabled
|
||||||
|
|
||||||
|
func set_select_button_enabled(enabled: bool) -> void:
|
||||||
|
if select_button:
|
||||||
|
select_button.disabled = not enabled
|
||||||
|
|
||||||
|
func update_button_states(is_merged: bool) -> void:
|
||||||
|
|
||||||
|
if select_button:
|
||||||
|
select_button.visible = !is_merged
|
||||||
|
if add_button:
|
||||||
|
add_button.visible = !is_merged
|
||||||
|
if merge_button:
|
||||||
|
merge_button.visible = !is_merged
|
||||||
|
if edit_button:
|
||||||
|
edit_button.visible = is_merged
|
||||||
|
|
||||||
|
if add_button:
|
||||||
|
add_button.queue_redraw()
|
||||||
|
if merge_button:
|
||||||
|
merge_button.queue_redraw()
|
||||||
|
if edit_button:
|
||||||
|
edit_button.queue_redraw()
|
||||||
|
|
||||||
|
toolbar_buttons.custom_minimum_size = Vector2.ZERO
|
||||||
|
toolbar_buttons.reset_size()
|
||||||
|
custom_minimum_size = Vector2.ZERO
|
||||||
|
reset_size()
|
||||||
|
|
||||||
|
var viewport_base = get_parent()
|
||||||
|
if viewport_base:
|
||||||
|
position.x = (viewport_base.size.x - size.x) * 0.5
|
||||||
|
|
||||||
|
func _create_mode_button(text: String, icon_name: String, callback: String) -> Button:
|
||||||
|
var button = Button.new()
|
||||||
|
button.text = text
|
||||||
|
button.toggle_mode = true
|
||||||
|
button.icon = plugin.get_editor_interface().get_base_control().get_theme_icon(icon_name, "EditorIcons")
|
||||||
|
button.connect("pressed", Callable(self, callback))
|
||||||
|
|
||||||
|
var normal_style = _create_button_stylebox()
|
||||||
|
var hover_style = _create_button_stylebox(true)
|
||||||
|
|
||||||
|
button.tooltip_text = _get_tooltip_text(button.text)
|
||||||
|
button.add_theme_stylebox_override("normal", normal_style)
|
||||||
|
button.add_theme_stylebox_override("hover", hover_style)
|
||||||
|
button.add_theme_stylebox_override("pressed", active_button_stylebox)
|
||||||
|
button.add_theme_stylebox_override("disabled", normal_style)
|
||||||
|
button.add_theme_stylebox_override("focus", normal_style)
|
||||||
|
|
||||||
|
toolbar_buttons.add_child(button)
|
||||||
|
return button
|
||||||
|
|
||||||
|
func _create_button(text: String, icon_name: String, callback: String) -> Button:
|
||||||
|
var button = Button.new()
|
||||||
|
button.text = text
|
||||||
|
button.icon = plugin.get_editor_interface().get_base_control().get_theme_icon(icon_name, "EditorIcons")
|
||||||
|
button.connect("pressed", Callable(self, callback))
|
||||||
|
|
||||||
|
var normal_style = _create_button_stylebox()
|
||||||
|
var hover_style = _create_button_stylebox(true)
|
||||||
|
|
||||||
|
button.tooltip_text = _get_tooltip_text(button.text)
|
||||||
|
button.add_theme_stylebox_override("normal", normal_style)
|
||||||
|
button.add_theme_stylebox_override("hover", hover_style)
|
||||||
|
button.add_theme_stylebox_override("pressed", hover_style)
|
||||||
|
button.add_theme_stylebox_override("disabled", normal_style)
|
||||||
|
button.add_theme_stylebox_override("focus", normal_style)
|
||||||
|
|
||||||
|
toolbar_buttons.add_child(button)
|
||||||
|
return button
|
||||||
|
|
||||||
|
func _create_button_stylebox(is_hover: bool = false) -> StyleBoxFlat:
|
||||||
|
var stylebox = StyleBoxFlat.new()
|
||||||
|
stylebox.bg_color = Color(0.15, 0.17, 0.20) if not is_hover else Color(0.25, 0.27, 0.30)
|
||||||
|
stylebox.set_corner_radius_all(20)
|
||||||
|
|
||||||
|
stylebox.content_margin_left = 8
|
||||||
|
stylebox.content_margin_right = 8
|
||||||
|
stylebox.content_margin_top = 4
|
||||||
|
stylebox.content_margin_bottom = 4
|
||||||
|
|
||||||
|
stylebox.border_width_bottom = 0
|
||||||
|
stylebox.border_width_left = 0
|
||||||
|
stylebox.border_width_right = 0
|
||||||
|
stylebox.border_width_top = 0
|
||||||
|
|
||||||
|
return stylebox
|
||||||
|
|
||||||
|
func _create_grid_size_selector() -> void:
|
||||||
|
var grid_size_button = OptionButton.new()
|
||||||
|
grid_size_button.name = "Grid Size"
|
||||||
|
|
||||||
|
grid_size_button.add_item("0.01", 0)
|
||||||
|
grid_size_button.add_item("0.1", 1)
|
||||||
|
grid_size_button.add_item("0.25", 2)
|
||||||
|
grid_size_button.add_item("0.5", 3)
|
||||||
|
grid_size_button.add_item("0.75", 4)
|
||||||
|
grid_size_button.add_item("1", 5)
|
||||||
|
grid_size_button.add_item("2", 6)
|
||||||
|
grid_size_button.add_item("5", 7)
|
||||||
|
grid_size_button.add_item("10", 8)
|
||||||
|
|
||||||
|
grid_size_button.select(5)
|
||||||
|
|
||||||
|
grid_size_button.connect("item_selected", Callable(self, "_on_grid_size_selected"))
|
||||||
|
grid_size_button.add_theme_stylebox_override("normal", _create_button_stylebox())
|
||||||
|
grid_size_button.add_theme_stylebox_override("hover", _create_button_stylebox(true))
|
||||||
|
|
||||||
|
toolbar_buttons.add_child(grid_size_button)
|
||||||
|
|
||||||
|
func set_active_mode(mode: int) -> void:
|
||||||
|
disable_button.button_pressed = (mode == 0) # DISABLE mode
|
||||||
|
select_button.button_pressed = (mode == 1) # SELECT mode
|
||||||
|
add_button.button_pressed = (mode == 2) # ADD mode
|
||||||
|
|
||||||
|
func connect_to_grid(grid: CubeGrid3D) -> void:
|
||||||
|
var grid_size_button = toolbar_buttons.get_node("Grid Size") as OptionButton
|
||||||
|
if not grid_size_button:
|
||||||
|
return
|
||||||
|
|
||||||
|
var grid_sizes = [0.01, 0.1, 0.25, 0.5, 0.75, 1, 2, 5, 10]
|
||||||
|
var index = grid_sizes.find(grid.grid_scale)
|
||||||
|
if index != -1:
|
||||||
|
grid_size_button.select(index)
|
||||||
|
|
||||||
|
func _on_grid_created(initial_scale: float) -> void:
|
||||||
|
var grid_size_button = toolbar_buttons.get_node("Grid Size") as OptionButton
|
||||||
|
if not grid_size_button:
|
||||||
|
return
|
||||||
|
|
||||||
|
var index = grid_sizes.find(initial_scale)
|
||||||
|
if index != -1:
|
||||||
|
grid_size_button.select(index)
|
||||||
|
|
||||||
|
func _on_disable_pressed() -> void:
|
||||||
|
emit_signal("disable_button_pressed")
|
||||||
|
|
||||||
|
func _on_select_button_pressed() -> void:
|
||||||
|
emit_signal("select_button_pressed")
|
||||||
|
|
||||||
|
func _on_add_button_pressed() -> void:
|
||||||
|
emit_signal("add_button_pressed")
|
||||||
|
|
||||||
|
func _on_remove_button_pressed() -> void:
|
||||||
|
emit_signal("remove_button_pressed")
|
||||||
|
|
||||||
|
func _on_grid_size_selected(index: int) -> void:
|
||||||
|
var selected_size = grid_sizes[index]
|
||||||
|
emit_signal("grid_size_changed", selected_size)
|
||||||
|
|
||||||
|
func _on_reset_button_pressed() -> void:
|
||||||
|
emit_signal("reset_grid_pressed")
|
||||||
|
|
||||||
|
func _on_merge_mesh_pressed() -> void:
|
||||||
|
emit_signal("merge_mesh")
|
||||||
|
|
||||||
|
func _on_edit_pressed() -> void:
|
||||||
|
update_button_states(false)
|
||||||
|
emit_signal("edit_mesh")
|
||||||
|
|
||||||
|
func _get_tooltip_text(button_name: String) -> String:
|
||||||
|
match button_name:
|
||||||
|
"Disable":
|
||||||
|
return "Disable\n Disables mouse input for Constructor."
|
||||||
|
"Select Edge":
|
||||||
|
return "Select Edge\n Allows you to select an edge to move it."
|
||||||
|
"Add Primitive":
|
||||||
|
return "Add Primitive\n Allows you to add or remove a box by drawing a rectangle and extruding it."
|
||||||
|
"Reset Grid":
|
||||||
|
return "Reset\n Resets the grid to its original state."
|
||||||
|
"Grid Size":
|
||||||
|
return "Grid Size\n Sets the size of the grid."
|
||||||
|
"Merge Mesh":
|
||||||
|
return "Merge Mesh\n Merges all the cubes into a single MeshInstance3D."
|
||||||
|
"Edit Mesh":
|
||||||
|
return "Edit Mesh\n Breaks the mesh into its original cubes."
|
||||||
|
"":
|
||||||
|
return """Box Constructor Help:
|
||||||
|
|
||||||
|
Keyboard Shortcuts:
|
||||||
|
- Press X to move the drawing plane.
|
||||||
|
- Press Z key to reset the drawing plane.
|
||||||
|
- Middle mouse will cancel the current operation for extrudsion and drawing.
|
||||||
|
|
||||||
|
Tips:
|
||||||
|
- You can use the edge select to move edges, but only use them to create ramps
|
||||||
|
(Creating other shapes may result in CSG operations not working correctly).
|
||||||
|
- The drawing does not work on slanted surfaces, only flat surfaces.
|
||||||
|
"""
|
||||||
|
_:
|
||||||
|
return ""
|
||||||
1
source/addons/boxconstructor/scripts/toolbar.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://coo1do7f6lmce
|
||||||
9
source/addons/boxconstructor/textures/cube_grid.tres
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://iwvr14kdcfog"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://qnh11q0505w1" path="res://addons/qb2/textures/grid_shader.gdshader" id="1_uxs6n"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_uxs6n")
|
||||||
|
shader_parameter/grid_scale = 5.0
|
||||||
|
shader_parameter/camera_distance = 0.0
|
||||||
23
source/addons/boxconstructor/textures/grid_shader.gdshader
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode blend_mix, depth_draw_opaque, cull_disabled, diffuse_burley;
|
||||||
|
|
||||||
|
uniform float grid_scale = 0.1;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec2 world_uv = UV * 4000.0;
|
||||||
|
|
||||||
|
vec2 scaled_uv = world_uv / grid_scale;
|
||||||
|
|
||||||
|
vec2 grid = abs(fract(scaled_uv - 0.5) - 0.5);
|
||||||
|
vec2 grid_width = fwidth(scaled_uv) * 1.0;
|
||||||
|
vec2 grid_lines = smoothstep(vec2(0.0), grid_width, grid);
|
||||||
|
float line = min(grid_lines.x, grid_lines.y);
|
||||||
|
|
||||||
|
if (line < 0.5) {
|
||||||
|
ALBEDO = vec3(0.4);
|
||||||
|
ALPHA = 0.8;
|
||||||
|
} else {
|
||||||
|
ALBEDO = vec3(0.15);
|
||||||
|
ALPHA = 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
uid://qnh11q0505w1
|
||||||
697
source/addons/controller_icons/ControllerIcons.gd
Normal file
@ -0,0 +1,697 @@
|
|||||||
|
@tool
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
signal input_type_changed(input_type: InputType, controller: int)
|
||||||
|
|
||||||
|
enum InputType {
|
||||||
|
KEYBOARD_MOUSE, ## The input is from the keyboard and/or mouse.
|
||||||
|
CONTROLLER ## The input is from a controller.
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PathType {
|
||||||
|
INPUT_ACTION, ## The path is an input action.
|
||||||
|
JOYPAD_PATH, ## The path is a generic joypad path.
|
||||||
|
SPECIFIC_PATH ## The path is a specific path.
|
||||||
|
}
|
||||||
|
|
||||||
|
var _cached_icons := {}
|
||||||
|
var _custom_input_actions := {}
|
||||||
|
|
||||||
|
var _cached_callables_lock := Mutex.new()
|
||||||
|
var _cached_callables : Array[Callable] = []
|
||||||
|
|
||||||
|
var _last_input_type : InputType
|
||||||
|
var _last_controller : int
|
||||||
|
var _settings : ControllerSettings
|
||||||
|
var _base_extension := "png"
|
||||||
|
|
||||||
|
# Custom mouse velocity calculation, because Godot
|
||||||
|
# doesn't implement it on some OSes apparently
|
||||||
|
const _MOUSE_VELOCITY_DELTA := 0.1
|
||||||
|
var _t : float
|
||||||
|
var _mouse_velocity : int
|
||||||
|
|
||||||
|
var Mapper = preload("res://addons/controller_icons/Mapper.gd").new()
|
||||||
|
|
||||||
|
# Default actions will be the builtin editor actions when
|
||||||
|
# the script is at editor ("tool") level. To pickup more
|
||||||
|
# actions available, these have to be queried manually
|
||||||
|
var _builtin_keys := [
|
||||||
|
"input/ui_accept", "input/ui_cancel", "input/ui_copy",
|
||||||
|
"input/ui_cut", "input/ui_down", "input/ui_end",
|
||||||
|
"input/ui_filedialog_refresh", "input/ui_filedialog_show_hidden",
|
||||||
|
"input/ui_filedialog_up_one_level", "input/ui_focus_next",
|
||||||
|
"input/ui_focus_prev", "input/ui_graph_delete",
|
||||||
|
"input/ui_graph_duplicate", "input/ui_home",
|
||||||
|
"input/ui_left", "input/ui_menu", "input/ui_page_down",
|
||||||
|
"input/ui_page_up", "input/ui_paste", "input/ui_redo",
|
||||||
|
"input/ui_right", "input/ui_select", "input/ui_swap_input_direction",
|
||||||
|
"input/ui_text_add_selection_for_next_occurrence",
|
||||||
|
"input/ui_text_backspace", "input/ui_text_backspace_all_to_left",
|
||||||
|
"input/ui_text_backspace_all_to_left.macos",
|
||||||
|
"input/ui_text_backspace_word", "input/ui_text_backspace_word.macos",
|
||||||
|
"input/ui_text_caret_add_above", "input/ui_text_caret_add_above.macos",
|
||||||
|
"input/ui_text_caret_add_below", "input/ui_text_caret_add_below.macos",
|
||||||
|
"input/ui_text_caret_document_end", "input/ui_text_caret_document_end.macos",
|
||||||
|
"input/ui_text_caret_document_start", "input/ui_text_caret_document_start.macos",
|
||||||
|
"input/ui_text_caret_down", "input/ui_text_caret_left",
|
||||||
|
"input/ui_text_caret_line_end", "input/ui_text_caret_line_end.macos",
|
||||||
|
"input/ui_text_caret_line_start", "input/ui_text_caret_line_start.macos",
|
||||||
|
"input/ui_text_caret_page_down", "input/ui_text_caret_page_up",
|
||||||
|
"input/ui_text_caret_right", "input/ui_text_caret_up",
|
||||||
|
"input/ui_text_caret_word_left", "input/ui_text_caret_word_left.macos",
|
||||||
|
"input/ui_text_caret_word_right", "input/ui_text_caret_word_right.macos",
|
||||||
|
"input/ui_text_clear_carets_and_selection", "input/ui_text_completion_accept",
|
||||||
|
"input/ui_text_completion_query", "input/ui_text_completion_replace",
|
||||||
|
"input/ui_text_dedent", "input/ui_text_delete",
|
||||||
|
"input/ui_text_delete_all_to_right", "input/ui_text_delete_all_to_right.macos",
|
||||||
|
"input/ui_text_delete_word", "input/ui_text_delete_word.macos",
|
||||||
|
"input/ui_text_indent", "input/ui_text_newline", "input/ui_text_newline_above",
|
||||||
|
"input/ui_text_newline_blank", "input/ui_text_scroll_down",
|
||||||
|
"input/ui_text_scroll_down.macos", "input/ui_text_scroll_up",
|
||||||
|
"input/ui_text_scroll_up.macos", "input/ui_text_select_all",
|
||||||
|
"input/ui_text_select_word_under_caret", "input/ui_text_select_word_under_caret.macos",
|
||||||
|
"input/ui_text_submit", "input/ui_text_toggle_insert_mode", "input/ui_undo",
|
||||||
|
"input/ui_up",
|
||||||
|
]
|
||||||
|
|
||||||
|
func _set_last_input_type(__last_input_type, __last_controller):
|
||||||
|
_last_input_type = __last_input_type
|
||||||
|
_last_controller = __last_controller
|
||||||
|
emit_signal("input_type_changed", _last_input_type, _last_controller)
|
||||||
|
|
||||||
|
func _enter_tree():
|
||||||
|
process_mode = Node.PROCESS_MODE_ALWAYS
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
_parse_input_actions()
|
||||||
|
|
||||||
|
func _exit_tree():
|
||||||
|
Mapper.queue_free()
|
||||||
|
|
||||||
|
func _parse_input_actions():
|
||||||
|
_custom_input_actions.clear()
|
||||||
|
|
||||||
|
for key in _builtin_keys:
|
||||||
|
var data : Dictionary = ProjectSettings.get_setting(key)
|
||||||
|
if not data.is_empty() and data.has("events") and data["events"] is Array:
|
||||||
|
_add_custom_input_action((key as String).trim_prefix("input/"), data)
|
||||||
|
|
||||||
|
# A script running at editor ("tool") level only has
|
||||||
|
# the default mappings. The way to get around this is
|
||||||
|
# manually parsing the project file and adding the
|
||||||
|
# new input actions to lookup.
|
||||||
|
var proj_file := ConfigFile.new()
|
||||||
|
if proj_file.load("res://project.godot"):
|
||||||
|
printerr("Failed to open \"project.godot\"! Custom input actions will not work on editor view!")
|
||||||
|
return
|
||||||
|
if proj_file.has_section("input"):
|
||||||
|
for input_action in proj_file.get_section_keys("input"):
|
||||||
|
var data : Dictionary = proj_file.get_value("input", input_action)
|
||||||
|
_add_custom_input_action(input_action, data)
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
Input.joy_connection_changed.connect(_on_joy_connection_changed)
|
||||||
|
_settings = load("res://addons/controller_icons/settings.tres")
|
||||||
|
if not _settings:
|
||||||
|
_settings = ControllerSettings.new()
|
||||||
|
if _settings.custom_mapper:
|
||||||
|
Mapper = _settings.custom_mapper.new()
|
||||||
|
if _settings.custom_file_extension and not _settings.custom_file_extension.is_empty():
|
||||||
|
_base_extension = _settings.custom_file_extension
|
||||||
|
# Wait a frame to give a chance for the app to initialize
|
||||||
|
await get_tree().process_frame
|
||||||
|
# Set input type to what's likely being used currently
|
||||||
|
if Input.get_connected_joypads().is_empty():
|
||||||
|
_set_last_input_type(InputType.KEYBOARD_MOUSE, -1)
|
||||||
|
else:
|
||||||
|
_set_last_input_type(InputType.CONTROLLER, Input.get_connected_joypads().front())
|
||||||
|
|
||||||
|
func _on_joy_connection_changed(device, connected):
|
||||||
|
if connected:
|
||||||
|
_set_last_input_type(InputType.CONTROLLER, device)
|
||||||
|
else:
|
||||||
|
if Input.get_connected_joypads().is_empty():
|
||||||
|
_set_last_input_type(InputType.KEYBOARD_MOUSE, -1)
|
||||||
|
else:
|
||||||
|
_set_last_input_type(InputType.CONTROLLER, Input.get_connected_joypads().front())
|
||||||
|
|
||||||
|
func _input(event: InputEvent):
|
||||||
|
var input_type = _last_input_type
|
||||||
|
var controller = _last_controller
|
||||||
|
match event.get_class():
|
||||||
|
"InputEventKey", "InputEventMouseButton":
|
||||||
|
input_type = InputType.KEYBOARD_MOUSE
|
||||||
|
"InputEventMouseMotion":
|
||||||
|
if _settings.allow_mouse_remap and _test_mouse_velocity(event.relative):
|
||||||
|
input_type = InputType.KEYBOARD_MOUSE
|
||||||
|
"InputEventJoypadButton":
|
||||||
|
input_type = InputType.CONTROLLER
|
||||||
|
controller = event.device
|
||||||
|
"InputEventJoypadMotion":
|
||||||
|
if abs(event.axis_value) > _settings.joypad_deadzone:
|
||||||
|
input_type = InputType.CONTROLLER
|
||||||
|
controller = event.device
|
||||||
|
if input_type != _last_input_type or controller != _last_controller:
|
||||||
|
_set_last_input_type(input_type, controller)
|
||||||
|
|
||||||
|
func _test_mouse_velocity(relative_vec: Vector2):
|
||||||
|
if _t > _MOUSE_VELOCITY_DELTA:
|
||||||
|
_t = 0
|
||||||
|
_mouse_velocity = 0
|
||||||
|
|
||||||
|
# We do a component sum instead of a length, to save on a
|
||||||
|
# sqrt operation, and because length_squared is negatively
|
||||||
|
# affected by low value vectors (<10).
|
||||||
|
# It is also good enough for this system, so reliability
|
||||||
|
# is sacrificed in favor of speed.
|
||||||
|
_mouse_velocity += abs(relative_vec.x) + abs(relative_vec.y)
|
||||||
|
return _mouse_velocity / _MOUSE_VELOCITY_DELTA > _settings.mouse_min_movement
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
_t += delta
|
||||||
|
|
||||||
|
if not _cached_callables.is_empty() and _cached_callables_lock.try_lock():
|
||||||
|
# UPGRADE: In Godot 4.2, for-loop variables can be
|
||||||
|
# statically typed:
|
||||||
|
# for f: Callable in _cached_callables:
|
||||||
|
for f in _cached_callables:
|
||||||
|
if f.is_valid(): f.call()
|
||||||
|
_cached_callables.clear()
|
||||||
|
_cached_callables_lock.unlock()
|
||||||
|
|
||||||
|
func _add_custom_input_action(input_action: String, data: Dictionary):
|
||||||
|
_custom_input_actions[input_action] = data["events"]
|
||||||
|
|
||||||
|
func refresh():
|
||||||
|
# All it takes is to signal icons to refresh paths
|
||||||
|
emit_signal("input_type_changed", _last_input_type, _last_controller)
|
||||||
|
|
||||||
|
func get_joypad_type(controller: int = _last_controller) -> ControllerSettings.Devices:
|
||||||
|
return Mapper._get_joypad_type(controller, _settings.joypad_fallback)
|
||||||
|
|
||||||
|
func parse_path(path: String, input_type = _last_input_type, last_controller = _last_controller) -> Texture:
|
||||||
|
if typeof(input_type) == TYPE_NIL:
|
||||||
|
return null
|
||||||
|
var root_paths := _expand_path(path, input_type, last_controller)
|
||||||
|
for root_path in root_paths:
|
||||||
|
if _load_icon(root_path):
|
||||||
|
continue
|
||||||
|
return _cached_icons[root_path]
|
||||||
|
return null
|
||||||
|
|
||||||
|
func parse_event_modifiers(event: InputEvent) -> Array[Texture]:
|
||||||
|
if not event or not event is InputEventWithModifiers:
|
||||||
|
return []
|
||||||
|
|
||||||
|
var icons : Array[Texture] = []
|
||||||
|
var modifiers : Array[String] = []
|
||||||
|
if event.command_or_control_autoremap:
|
||||||
|
match OS.get_name():
|
||||||
|
"macOS":
|
||||||
|
modifiers.push_back("key/command")
|
||||||
|
_:
|
||||||
|
modifiers.push_back("key/ctrl")
|
||||||
|
if event.ctrl_pressed and not event.command_or_control_autoremap:
|
||||||
|
modifiers.push_back("key/ctrl")
|
||||||
|
if event.shift_pressed:
|
||||||
|
modifiers.push_back("key/shift")
|
||||||
|
if event.alt_pressed:
|
||||||
|
modifiers.push_back("key/alt")
|
||||||
|
if event.meta_pressed and not event.command_or_control_autoremap:
|
||||||
|
match OS.get_name():
|
||||||
|
"macOS":
|
||||||
|
modifiers.push_back("key/command")
|
||||||
|
_:
|
||||||
|
modifiers.push_back("key/win")
|
||||||
|
|
||||||
|
for modifier in modifiers:
|
||||||
|
for icon_path in _expand_path(modifier, InputType.KEYBOARD_MOUSE, -1):
|
||||||
|
if _load_icon(icon_path) == OK:
|
||||||
|
icons.push_back(_cached_icons[icon_path])
|
||||||
|
|
||||||
|
return icons
|
||||||
|
|
||||||
|
func parse_path_to_tts(path: String, input_type: int = _last_input_type, controller: int = _last_controller) -> String:
|
||||||
|
if input_type == null:
|
||||||
|
return ""
|
||||||
|
var tts = _convert_path_to_asset_file(path, input_type, controller)
|
||||||
|
return _convert_asset_file_to_tts(tts.get_basename().get_file())
|
||||||
|
|
||||||
|
func parse_event(event: InputEvent) -> Texture:
|
||||||
|
var path = _convert_event_to_path(event)
|
||||||
|
if path.is_empty():
|
||||||
|
return null
|
||||||
|
|
||||||
|
var base_paths := [
|
||||||
|
_settings.custom_asset_dir + "/",
|
||||||
|
"res://addons/controller_icons/assets/"
|
||||||
|
]
|
||||||
|
for base_path in base_paths:
|
||||||
|
if base_path.is_empty():
|
||||||
|
continue
|
||||||
|
base_path += path + "." + _base_extension
|
||||||
|
if _load_icon(base_path):
|
||||||
|
continue
|
||||||
|
return _cached_icons[base_path]
|
||||||
|
return null
|
||||||
|
|
||||||
|
func get_path_type(path: String) -> PathType:
|
||||||
|
if _custom_input_actions.has(path) or InputMap.has_action(path):
|
||||||
|
return PathType.INPUT_ACTION
|
||||||
|
elif path.get_slice("/", 0) == "joypad":
|
||||||
|
return PathType.JOYPAD_PATH
|
||||||
|
else:
|
||||||
|
return PathType.SPECIFIC_PATH
|
||||||
|
|
||||||
|
func get_matching_event(path: String, input_type: InputType = _last_input_type, controller: int = _last_controller) -> InputEvent:
|
||||||
|
var events : Array
|
||||||
|
if _custom_input_actions.has(path):
|
||||||
|
events = _custom_input_actions[path]
|
||||||
|
else:
|
||||||
|
events = InputMap.action_get_events(path)
|
||||||
|
|
||||||
|
var fallback = null
|
||||||
|
for event in events:
|
||||||
|
if not is_instance_valid(event): continue
|
||||||
|
|
||||||
|
match event.get_class():
|
||||||
|
"InputEventKey", "InputEventMouse", "InputEventMouseMotion", "InputEventMouseButton":
|
||||||
|
if input_type == InputType.KEYBOARD_MOUSE:
|
||||||
|
return event
|
||||||
|
"InputEventJoypadButton", "InputEventJoypadMotion":
|
||||||
|
if input_type == InputType.CONTROLLER:
|
||||||
|
# Use the first device specific mapping if there is one.
|
||||||
|
if event.device == controller:
|
||||||
|
return event
|
||||||
|
# Otherwise use the first "all devices" mapping.
|
||||||
|
elif fallback == null and event.device < 0:
|
||||||
|
fallback = event
|
||||||
|
|
||||||
|
return fallback
|
||||||
|
|
||||||
|
func _expand_path(path: String, input_type: int, controller: int) -> Array:
|
||||||
|
var paths := []
|
||||||
|
var base_paths := [
|
||||||
|
_settings.custom_asset_dir + "/",
|
||||||
|
"res://addons/controller_icons/assets/"
|
||||||
|
]
|
||||||
|
for base_path in base_paths:
|
||||||
|
if base_path.is_empty():
|
||||||
|
continue
|
||||||
|
base_path += _convert_path_to_asset_file(path, input_type, controller)
|
||||||
|
|
||||||
|
paths.push_back(base_path + "." + _base_extension)
|
||||||
|
return paths
|
||||||
|
|
||||||
|
func _convert_path_to_asset_file(path: String, input_type: int, controller: int) -> String:
|
||||||
|
match get_path_type(path):
|
||||||
|
PathType.INPUT_ACTION:
|
||||||
|
var event := get_matching_event(path, input_type, controller)
|
||||||
|
if event:
|
||||||
|
return _convert_event_to_path(event)
|
||||||
|
return path
|
||||||
|
PathType.JOYPAD_PATH:
|
||||||
|
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||||
|
PathType.SPECIFIC_PATH, _:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_asset_file_to_tts(path: String) -> String:
|
||||||
|
match path:
|
||||||
|
"shift_alt":
|
||||||
|
return "shift"
|
||||||
|
"esc":
|
||||||
|
return "escape"
|
||||||
|
"backspace_alt":
|
||||||
|
return "backspace"
|
||||||
|
"enter_alt":
|
||||||
|
return "enter"
|
||||||
|
"enter_tall":
|
||||||
|
return "keypad enter"
|
||||||
|
"arrow_left":
|
||||||
|
return "left arrow"
|
||||||
|
"arrow_right":
|
||||||
|
return "right arrow"
|
||||||
|
"del":
|
||||||
|
return "delete"
|
||||||
|
"arrow_up":
|
||||||
|
return "up arrow"
|
||||||
|
"arrow_down":
|
||||||
|
return "down arrow"
|
||||||
|
"shift_alt":
|
||||||
|
return "shift"
|
||||||
|
"ctrl":
|
||||||
|
return "control"
|
||||||
|
"kp_add":
|
||||||
|
return "keypad plus"
|
||||||
|
"mark_left":
|
||||||
|
return "left mark"
|
||||||
|
"mark_right":
|
||||||
|
return "right mark"
|
||||||
|
"bracket_left":
|
||||||
|
return "left bracket"
|
||||||
|
"bracket_right":
|
||||||
|
return "right bracket"
|
||||||
|
"tilda":
|
||||||
|
return "tilde"
|
||||||
|
"lb":
|
||||||
|
return "left bumper"
|
||||||
|
"rb":
|
||||||
|
return "right bumper"
|
||||||
|
"lt":
|
||||||
|
return "left trigger"
|
||||||
|
"rt":
|
||||||
|
return "right trigger"
|
||||||
|
"l_stick_click":
|
||||||
|
return "left stick click"
|
||||||
|
"r_stick_click":
|
||||||
|
return "right stick click"
|
||||||
|
"l_stick":
|
||||||
|
return "left stick"
|
||||||
|
"r_stick":
|
||||||
|
return "right stick"
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_event_to_path(event: InputEvent):
|
||||||
|
if event is InputEventKey:
|
||||||
|
# If this is a physical key, convert to localized scancode
|
||||||
|
if event.keycode == 0:
|
||||||
|
return _convert_key_to_path(DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode))
|
||||||
|
return _convert_key_to_path(event.keycode)
|
||||||
|
elif event is InputEventMouseButton:
|
||||||
|
return _convert_mouse_button_to_path(event.button_index)
|
||||||
|
elif event is InputEventJoypadButton:
|
||||||
|
return _convert_joypad_button_to_path(event.button_index, event.device)
|
||||||
|
elif event is InputEventJoypadMotion:
|
||||||
|
return _convert_joypad_motion_to_path(event.axis, event.device)
|
||||||
|
|
||||||
|
func _convert_key_to_path(scancode: int):
|
||||||
|
match scancode:
|
||||||
|
KEY_ESCAPE:
|
||||||
|
return "key/esc"
|
||||||
|
KEY_TAB:
|
||||||
|
return "key/tab"
|
||||||
|
KEY_BACKSPACE:
|
||||||
|
return "key/backspace_alt"
|
||||||
|
KEY_ENTER:
|
||||||
|
return "key/enter_alt"
|
||||||
|
KEY_KP_ENTER:
|
||||||
|
return "key/enter_tall"
|
||||||
|
KEY_INSERT:
|
||||||
|
return "key/insert"
|
||||||
|
KEY_DELETE:
|
||||||
|
return "key/del"
|
||||||
|
KEY_PRINT:
|
||||||
|
return "key/print_screen"
|
||||||
|
KEY_HOME:
|
||||||
|
return "key/home"
|
||||||
|
KEY_END:
|
||||||
|
return "key/end"
|
||||||
|
KEY_LEFT:
|
||||||
|
return "key/arrow_left"
|
||||||
|
KEY_UP:
|
||||||
|
return "key/arrow_up"
|
||||||
|
KEY_RIGHT:
|
||||||
|
return "key/arrow_right"
|
||||||
|
KEY_DOWN:
|
||||||
|
return "key/arrow_down"
|
||||||
|
KEY_PAGEUP:
|
||||||
|
return "key/page_up"
|
||||||
|
KEY_PAGEDOWN:
|
||||||
|
return "key/page_down"
|
||||||
|
KEY_SHIFT:
|
||||||
|
return "key/shift_alt"
|
||||||
|
KEY_CTRL:
|
||||||
|
return "key/ctrl"
|
||||||
|
KEY_META:
|
||||||
|
match OS.get_name():
|
||||||
|
"macOS":
|
||||||
|
return "key/command"
|
||||||
|
_:
|
||||||
|
return "key/meta"
|
||||||
|
KEY_ALT:
|
||||||
|
return "key/alt"
|
||||||
|
KEY_CAPSLOCK:
|
||||||
|
return "key/caps_lock"
|
||||||
|
KEY_NUMLOCK:
|
||||||
|
return "key/num_lock"
|
||||||
|
KEY_F1:
|
||||||
|
return "key/f1"
|
||||||
|
KEY_F2:
|
||||||
|
return "key/f2"
|
||||||
|
KEY_F3:
|
||||||
|
return "key/f3"
|
||||||
|
KEY_F4:
|
||||||
|
return "key/f4"
|
||||||
|
KEY_F5:
|
||||||
|
return "key/f5"
|
||||||
|
KEY_F6:
|
||||||
|
return "key/f6"
|
||||||
|
KEY_F7:
|
||||||
|
return "key/f7"
|
||||||
|
KEY_F8:
|
||||||
|
return "key/f8"
|
||||||
|
KEY_F9:
|
||||||
|
return "key/f9"
|
||||||
|
KEY_F10:
|
||||||
|
return "key/f10"
|
||||||
|
KEY_F11:
|
||||||
|
return "key/f11"
|
||||||
|
KEY_F12:
|
||||||
|
return "key/f12"
|
||||||
|
KEY_KP_MULTIPLY, KEY_ASTERISK:
|
||||||
|
return "key/asterisk"
|
||||||
|
KEY_KP_SUBTRACT, KEY_MINUS:
|
||||||
|
return "key/minus"
|
||||||
|
KEY_KP_ADD:
|
||||||
|
return "key/plus_tall"
|
||||||
|
KEY_KP_0:
|
||||||
|
return "key/0"
|
||||||
|
KEY_KP_1:
|
||||||
|
return "key/1"
|
||||||
|
KEY_KP_2:
|
||||||
|
return "key/2"
|
||||||
|
KEY_KP_3:
|
||||||
|
return "key/3"
|
||||||
|
KEY_KP_4:
|
||||||
|
return "key/4"
|
||||||
|
KEY_KP_5:
|
||||||
|
return "key/5"
|
||||||
|
KEY_KP_6:
|
||||||
|
return "key/6"
|
||||||
|
KEY_KP_7:
|
||||||
|
return "key/7"
|
||||||
|
KEY_KP_8:
|
||||||
|
return "key/8"
|
||||||
|
KEY_KP_9:
|
||||||
|
return "key/9"
|
||||||
|
KEY_UNKNOWN:
|
||||||
|
return ""
|
||||||
|
KEY_SPACE:
|
||||||
|
return "key/space"
|
||||||
|
KEY_QUOTEDBL:
|
||||||
|
return "key/quote"
|
||||||
|
KEY_PLUS:
|
||||||
|
return "key/plus"
|
||||||
|
KEY_0:
|
||||||
|
return "key/0"
|
||||||
|
KEY_1:
|
||||||
|
return "key/1"
|
||||||
|
KEY_2:
|
||||||
|
return "key/2"
|
||||||
|
KEY_3:
|
||||||
|
return "key/3"
|
||||||
|
KEY_4:
|
||||||
|
return "key/4"
|
||||||
|
KEY_5:
|
||||||
|
return "key/5"
|
||||||
|
KEY_6:
|
||||||
|
return "key/6"
|
||||||
|
KEY_7:
|
||||||
|
return "key/7"
|
||||||
|
KEY_8:
|
||||||
|
return "key/8"
|
||||||
|
KEY_9:
|
||||||
|
return "key/9"
|
||||||
|
KEY_SEMICOLON:
|
||||||
|
return "key/semicolon"
|
||||||
|
KEY_LESS:
|
||||||
|
return "key/mark_left"
|
||||||
|
KEY_GREATER:
|
||||||
|
return "key/mark_right"
|
||||||
|
KEY_QUESTION:
|
||||||
|
return "key/question"
|
||||||
|
KEY_A:
|
||||||
|
return "key/a"
|
||||||
|
KEY_B:
|
||||||
|
return "key/b"
|
||||||
|
KEY_C:
|
||||||
|
return "key/c"
|
||||||
|
KEY_D:
|
||||||
|
return "key/d"
|
||||||
|
KEY_E:
|
||||||
|
return "key/e"
|
||||||
|
KEY_F:
|
||||||
|
return "key/f"
|
||||||
|
KEY_G:
|
||||||
|
return "key/g"
|
||||||
|
KEY_H:
|
||||||
|
return "key/h"
|
||||||
|
KEY_I:
|
||||||
|
return "key/i"
|
||||||
|
KEY_J:
|
||||||
|
return "key/j"
|
||||||
|
KEY_K:
|
||||||
|
return "key/k"
|
||||||
|
KEY_L:
|
||||||
|
return "key/l"
|
||||||
|
KEY_M:
|
||||||
|
return "key/m"
|
||||||
|
KEY_N:
|
||||||
|
return "key/n"
|
||||||
|
KEY_O:
|
||||||
|
return "key/o"
|
||||||
|
KEY_P:
|
||||||
|
return "key/p"
|
||||||
|
KEY_Q:
|
||||||
|
return "key/q"
|
||||||
|
KEY_R:
|
||||||
|
return "key/r"
|
||||||
|
KEY_S:
|
||||||
|
return "key/s"
|
||||||
|
KEY_T:
|
||||||
|
return "key/t"
|
||||||
|
KEY_U:
|
||||||
|
return "key/u"
|
||||||
|
KEY_V:
|
||||||
|
return "key/v"
|
||||||
|
KEY_W:
|
||||||
|
return "key/w"
|
||||||
|
KEY_X:
|
||||||
|
return "key/x"
|
||||||
|
KEY_Y:
|
||||||
|
return "key/y"
|
||||||
|
KEY_Z:
|
||||||
|
return "key/z"
|
||||||
|
KEY_BRACKETLEFT:
|
||||||
|
return "key/bracket_left"
|
||||||
|
KEY_BACKSLASH:
|
||||||
|
return "key/slash"
|
||||||
|
KEY_SLASH:
|
||||||
|
return "key/forward_slash"
|
||||||
|
KEY_BRACKETRIGHT:
|
||||||
|
return "key/bracket_right"
|
||||||
|
KEY_ASCIITILDE:
|
||||||
|
return "key/tilda"
|
||||||
|
KEY_QUOTELEFT:
|
||||||
|
return "key/backtick"
|
||||||
|
KEY_APOSTROPHE:
|
||||||
|
return "key/apostrophe"
|
||||||
|
KEY_COMMA:
|
||||||
|
return "key/comma"
|
||||||
|
KEY_EQUAL:
|
||||||
|
return "key/equals"
|
||||||
|
KEY_PERIOD, KEY_KP_PERIOD:
|
||||||
|
return "key/period"
|
||||||
|
_:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
func _convert_mouse_button_to_path(button_index: int):
|
||||||
|
match button_index:
|
||||||
|
MOUSE_BUTTON_LEFT:
|
||||||
|
return "mouse/left"
|
||||||
|
MOUSE_BUTTON_RIGHT:
|
||||||
|
return "mouse/right"
|
||||||
|
MOUSE_BUTTON_MIDDLE:
|
||||||
|
return "mouse/middle"
|
||||||
|
MOUSE_BUTTON_WHEEL_UP:
|
||||||
|
return "mouse/wheel_up"
|
||||||
|
MOUSE_BUTTON_WHEEL_DOWN:
|
||||||
|
return "mouse/wheel_down"
|
||||||
|
MOUSE_BUTTON_XBUTTON1:
|
||||||
|
return "mouse/side_down"
|
||||||
|
MOUSE_BUTTON_XBUTTON2:
|
||||||
|
return "mouse/side_up"
|
||||||
|
_:
|
||||||
|
return "mouse/sample"
|
||||||
|
|
||||||
|
func _convert_joypad_button_to_path(button_index: int, controller: int):
|
||||||
|
var path
|
||||||
|
match button_index:
|
||||||
|
JOY_BUTTON_A:
|
||||||
|
path = "joypad/a"
|
||||||
|
JOY_BUTTON_B:
|
||||||
|
path = "joypad/b"
|
||||||
|
JOY_BUTTON_X:
|
||||||
|
path = "joypad/x"
|
||||||
|
JOY_BUTTON_Y:
|
||||||
|
path = "joypad/y"
|
||||||
|
JOY_BUTTON_LEFT_SHOULDER:
|
||||||
|
path = "joypad/lb"
|
||||||
|
JOY_BUTTON_RIGHT_SHOULDER:
|
||||||
|
path = "joypad/rb"
|
||||||
|
JOY_BUTTON_LEFT_STICK:
|
||||||
|
path = "joypad/l_stick_click"
|
||||||
|
JOY_BUTTON_RIGHT_STICK:
|
||||||
|
path = "joypad/r_stick_click"
|
||||||
|
JOY_BUTTON_BACK:
|
||||||
|
path = "joypad/select"
|
||||||
|
JOY_BUTTON_START:
|
||||||
|
path = "joypad/start"
|
||||||
|
JOY_BUTTON_DPAD_UP:
|
||||||
|
path = "joypad/dpad_up"
|
||||||
|
JOY_BUTTON_DPAD_DOWN:
|
||||||
|
path = "joypad/dpad_down"
|
||||||
|
JOY_BUTTON_DPAD_LEFT:
|
||||||
|
path = "joypad/dpad_left"
|
||||||
|
JOY_BUTTON_DPAD_RIGHT:
|
||||||
|
path = "joypad/dpad_right"
|
||||||
|
JOY_BUTTON_GUIDE:
|
||||||
|
path = "joypad/home"
|
||||||
|
JOY_BUTTON_MISC1:
|
||||||
|
path = "joypad/share"
|
||||||
|
_:
|
||||||
|
return ""
|
||||||
|
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||||
|
|
||||||
|
func _convert_joypad_motion_to_path(axis: int, controller: int):
|
||||||
|
var path : String
|
||||||
|
match axis:
|
||||||
|
JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
|
||||||
|
path = "joypad/l_stick"
|
||||||
|
JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y:
|
||||||
|
path = "joypad/r_stick"
|
||||||
|
JOY_AXIS_TRIGGER_LEFT:
|
||||||
|
path = "joypad/lt"
|
||||||
|
JOY_AXIS_TRIGGER_RIGHT:
|
||||||
|
path = "joypad/rt"
|
||||||
|
_:
|
||||||
|
return ""
|
||||||
|
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||||
|
|
||||||
|
func _load_icon(path: String) -> int:
|
||||||
|
if _cached_icons.has(path): return OK
|
||||||
|
var tex = null
|
||||||
|
if path.begins_with("res://"):
|
||||||
|
if ResourceLoader.exists(path):
|
||||||
|
tex = load(path)
|
||||||
|
if not tex:
|
||||||
|
return ERR_FILE_CORRUPT
|
||||||
|
else:
|
||||||
|
return ERR_FILE_NOT_FOUND
|
||||||
|
else:
|
||||||
|
if not FileAccess.file_exists(path):
|
||||||
|
return ERR_FILE_NOT_FOUND
|
||||||
|
var img := Image.new()
|
||||||
|
var err = img.load(path)
|
||||||
|
if err != OK:
|
||||||
|
return err
|
||||||
|
tex = ImageTexture.new()
|
||||||
|
tex.create_from_image(img)
|
||||||
|
_cached_icons[path] = tex
|
||||||
|
return OK
|
||||||
|
|
||||||
|
func _defer_texture_load(f: Callable) -> void:
|
||||||
|
_cached_callables_lock.lock()
|
||||||
|
_cached_callables.push_back(f)
|
||||||
|
_cached_callables_lock.unlock()
|
||||||
1
source/addons/controller_icons/ControllerIcons.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://ddcwjvcc65eg0
|
||||||
299
source/addons/controller_icons/Mapper.gd
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
extends Node
|
||||||
|
class_name ControllerMapper
|
||||||
|
|
||||||
|
func _convert_joypad_path(path: String, device: int, fallback: ControllerSettings.Devices) -> String:
|
||||||
|
match _get_joypad_type(device, fallback):
|
||||||
|
ControllerSettings.Devices.LUNA:
|
||||||
|
return _convert_joypad_to_luna(path)
|
||||||
|
ControllerSettings.Devices.PS3:
|
||||||
|
return _convert_joypad_to_ps3(path)
|
||||||
|
ControllerSettings.Devices.PS4:
|
||||||
|
return _convert_joypad_to_ps4(path)
|
||||||
|
ControllerSettings.Devices.PS5:
|
||||||
|
return _convert_joypad_to_ps5(path)
|
||||||
|
ControllerSettings.Devices.STADIA:
|
||||||
|
return _convert_joypad_to_stadia(path)
|
||||||
|
ControllerSettings.Devices.STEAM:
|
||||||
|
return _convert_joypad_to_steam(path)
|
||||||
|
ControllerSettings.Devices.SWITCH:
|
||||||
|
return _convert_joypad_to_switch(path)
|
||||||
|
ControllerSettings.Devices.JOYCON:
|
||||||
|
return _convert_joypad_to_joycon(path)
|
||||||
|
ControllerSettings.Devices.XBOX360:
|
||||||
|
return _convert_joypad_to_xbox360(path)
|
||||||
|
ControllerSettings.Devices.XBOXONE:
|
||||||
|
return _convert_joypad_to_xboxone(path)
|
||||||
|
ControllerSettings.Devices.XBOXSERIES:
|
||||||
|
return _convert_joypad_to_xboxseries(path)
|
||||||
|
ControllerSettings.Devices.STEAM_DECK:
|
||||||
|
return _convert_joypad_to_steamdeck(path)
|
||||||
|
ControllerSettings.Devices.OUYA:
|
||||||
|
return _convert_joypad_to_ouya(path)
|
||||||
|
_:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
func _get_joypad_type(device, fallback):
|
||||||
|
var available = Input.get_connected_joypads()
|
||||||
|
if available.is_empty():
|
||||||
|
return fallback
|
||||||
|
# If the requested joypad is not on the connected joypad list, try using the last known connected joypad
|
||||||
|
if not device in available:
|
||||||
|
device = ControllerIcons._last_controller
|
||||||
|
# If that fails too, then use whatever joypad we have connected right now
|
||||||
|
if not device in available:
|
||||||
|
device = available.front()
|
||||||
|
|
||||||
|
var controller_name = Input.get_joy_name(device)
|
||||||
|
if "Luna Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.LUNA
|
||||||
|
elif "PS3 Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.PS3
|
||||||
|
elif "PS4 Controller" in controller_name or \
|
||||||
|
"DUALSHOCK 4" in controller_name:
|
||||||
|
return ControllerSettings.Devices.PS4
|
||||||
|
elif "PS5 Controller" in controller_name or \
|
||||||
|
"DualSense" in controller_name:
|
||||||
|
return ControllerSettings.Devices.PS5
|
||||||
|
elif "Stadia Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.STADIA
|
||||||
|
elif "Steam Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.STEAM
|
||||||
|
elif "Switch Controller" in controller_name or \
|
||||||
|
"Switch Pro Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.SWITCH
|
||||||
|
elif "Joy-Con" in controller_name:
|
||||||
|
return ControllerSettings.Devices.JOYCON
|
||||||
|
elif "Xbox 360 Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.XBOX360
|
||||||
|
elif "Xbox One" in controller_name or \
|
||||||
|
"X-Box One" in controller_name or \
|
||||||
|
"Xbox Wireless Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.XBOXONE
|
||||||
|
elif "Xbox Series" in controller_name:
|
||||||
|
return ControllerSettings.Devices.XBOXSERIES
|
||||||
|
elif "Steam Deck" in controller_name or \
|
||||||
|
"Steam Virtual Gamepad" in controller_name:
|
||||||
|
return ControllerSettings.Devices.STEAM_DECK
|
||||||
|
elif "OUYA Controller" in controller_name:
|
||||||
|
return ControllerSettings.Devices.OUYA
|
||||||
|
else:
|
||||||
|
return fallback
|
||||||
|
|
||||||
|
func _convert_joypad_to_luna(path: String):
|
||||||
|
path = path.replace("joypad", "luna")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/circle")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/menu")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/microphone")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_playstation(path: String):
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"a":
|
||||||
|
return path.replace("/a", "/cross")
|
||||||
|
"b":
|
||||||
|
return path.replace("/b", "/circle")
|
||||||
|
"x":
|
||||||
|
return path.replace("/x", "/square")
|
||||||
|
"y":
|
||||||
|
return path.replace("/y", "/triangle")
|
||||||
|
"lb":
|
||||||
|
return path.replace("/lb", "/l1")
|
||||||
|
"rb":
|
||||||
|
return path.replace("/rb", "/r1")
|
||||||
|
"lt":
|
||||||
|
return path.replace("/lt", "/l2")
|
||||||
|
"rt":
|
||||||
|
return path.replace("/rt", "/r2")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_ps3(path: String):
|
||||||
|
return _convert_joypad_to_playstation(path.replace("joypad", "ps3"))
|
||||||
|
|
||||||
|
func _convert_joypad_to_ps4(path: String):
|
||||||
|
path = _convert_joypad_to_playstation(path.replace("joypad", "ps4"))
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/share")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/options")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_ps5(path: String):
|
||||||
|
path = _convert_joypad_to_playstation(path.replace("joypad", "ps5"))
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/share")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/options")
|
||||||
|
"home":
|
||||||
|
return path.replace("/home", "/assistant")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/microphone")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_stadia(path: String):
|
||||||
|
path = path.replace("joypad", "stadia")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"lb":
|
||||||
|
return path.replace("/lb", "/l1")
|
||||||
|
"rb":
|
||||||
|
return path.replace("/rb", "/r1")
|
||||||
|
"lt":
|
||||||
|
return path.replace("/lt", "/l2")
|
||||||
|
"rt":
|
||||||
|
return path.replace("/rt", "/r2")
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/dots")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/menu")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/select")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_steam(path: String):
|
||||||
|
path = path.replace("joypad", "steam")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"r_stick_click":
|
||||||
|
return path.replace("/r_stick_click", "/right_track_center")
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/back")
|
||||||
|
"home":
|
||||||
|
return path.replace("/home", "/system")
|
||||||
|
"dpad":
|
||||||
|
return path.replace("/dpad", "/left_track")
|
||||||
|
"dpad_up":
|
||||||
|
return path.replace("/dpad_up", "/left_track_up")
|
||||||
|
"dpad_down":
|
||||||
|
return path.replace("/dpad_down", "/left_track_down")
|
||||||
|
"dpad_left":
|
||||||
|
return path.replace("/dpad_left", "/left_track_left")
|
||||||
|
"dpad_right":
|
||||||
|
return path.replace("/dpad_right", "/left_track_right")
|
||||||
|
"l_stick":
|
||||||
|
return path.replace("/l_stick", "/stick")
|
||||||
|
"r_stick":
|
||||||
|
return path.replace("/r_stick", "/right_track")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_switch(path: String):
|
||||||
|
path = path.replace("joypad", "switch")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"a":
|
||||||
|
return path.replace("/a", "/b")
|
||||||
|
"b":
|
||||||
|
return path.replace("/b", "/a")
|
||||||
|
"x":
|
||||||
|
return path.replace("/x", "/y")
|
||||||
|
"y":
|
||||||
|
return path.replace("/y", "/x")
|
||||||
|
"lb":
|
||||||
|
return path.replace("/lb", "/l")
|
||||||
|
"rb":
|
||||||
|
return path.replace("/rb", "/r")
|
||||||
|
"lt":
|
||||||
|
return path.replace("/lt", "/zl")
|
||||||
|
"rt":
|
||||||
|
return path.replace("/rt", "/zr")
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/minus")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/plus")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/square")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_joycon(path: String):
|
||||||
|
path = _convert_joypad_to_switch(path)
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"dpad_up":
|
||||||
|
return path.replace("/dpad_up", "/up")
|
||||||
|
"dpad_down":
|
||||||
|
return path.replace("/dpad_down", "/down")
|
||||||
|
"dpad_left":
|
||||||
|
return path.replace("/dpad_left", "/left")
|
||||||
|
"dpad_right":
|
||||||
|
return path.replace("/dpad_right", "/right")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_xbox360(path: String):
|
||||||
|
path = path.replace("joypad", "xbox360")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/back")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_xbox_modern(path: String):
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/view")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/menu")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_xboxone(path: String):
|
||||||
|
return _convert_joypad_to_xbox_modern(path.replace("joypad", "xboxone"))
|
||||||
|
|
||||||
|
func _convert_joypad_to_xboxseries(path: String):
|
||||||
|
return _convert_joypad_to_xbox_modern(path.replace("joypad", "xboxseries"))
|
||||||
|
|
||||||
|
func _convert_joypad_to_steamdeck(path: String):
|
||||||
|
path = path.replace("joypad", "steamdeck")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"lb":
|
||||||
|
return path.replace("/lb", "/l1")
|
||||||
|
"rb":
|
||||||
|
return path.replace("/rb", "/r1")
|
||||||
|
"lt":
|
||||||
|
return path.replace("/lt", "/l2")
|
||||||
|
"rt":
|
||||||
|
return path.replace("/rt", "/r2")
|
||||||
|
"select":
|
||||||
|
return path.replace("/select", "/square")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/menu")
|
||||||
|
"home":
|
||||||
|
return path.replace("/home", "/steam")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/dots")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
|
|
||||||
|
func _convert_joypad_to_ouya(path: String):
|
||||||
|
path = path.replace("joypad", "ouya")
|
||||||
|
match path.substr(path.find("/") + 1):
|
||||||
|
"a":
|
||||||
|
return path.replace("/a", "/o")
|
||||||
|
"x":
|
||||||
|
return path.replace("/x", "/u")
|
||||||
|
"b":
|
||||||
|
return path.replace("/b", "/a")
|
||||||
|
"lb":
|
||||||
|
return path.replace("/lb", "/l1")
|
||||||
|
"rb":
|
||||||
|
return path.replace("/rb", "/r1")
|
||||||
|
"lt":
|
||||||
|
return path.replace("/lt", "/l2")
|
||||||
|
"rt":
|
||||||
|
return path.replace("/rt", "/r2")
|
||||||
|
"start":
|
||||||
|
return path.replace("/start", "/menu")
|
||||||
|
"share":
|
||||||
|
return path.replace("/share", "/microphone")
|
||||||
|
_:
|
||||||
|
return path
|
||||||
1
source/addons/controller_icons/Mapper.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://do2cg52wwim1s
|
||||||
55
source/addons/controller_icons/Settings.gd
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
@tool
|
||||||
|
extends Resource
|
||||||
|
class_name ControllerSettings
|
||||||
|
|
||||||
|
enum Devices {
|
||||||
|
LUNA,
|
||||||
|
OUYA,
|
||||||
|
PS3,
|
||||||
|
PS4,
|
||||||
|
PS5,
|
||||||
|
STADIA,
|
||||||
|
STEAM,
|
||||||
|
SWITCH,
|
||||||
|
JOYCON,
|
||||||
|
XBOX360,
|
||||||
|
XBOXONE,
|
||||||
|
XBOXSERIES,
|
||||||
|
STEAM_DECK
|
||||||
|
}
|
||||||
|
|
||||||
|
## General addon settings
|
||||||
|
@export_subgroup("General")
|
||||||
|
|
||||||
|
## Controller type to fallback to if automatic
|
||||||
|
## controller detection fails
|
||||||
|
@export var joypad_fallback : Devices = Devices.XBOX360
|
||||||
|
|
||||||
|
## Controller deadzone for triggering an icon remap when input
|
||||||
|
## is analogic (movement sticks or triggers)
|
||||||
|
@export_range(0.0, 1.0) var joypad_deadzone : float = 0.5
|
||||||
|
|
||||||
|
## Allow mouse movement to trigger an icon remap
|
||||||
|
@export var allow_mouse_remap : bool = true
|
||||||
|
|
||||||
|
## Minimum mouse "instantaneous" movement for
|
||||||
|
## triggering an icon remap
|
||||||
|
@export_range(0, 10000) var mouse_min_movement : int = 200
|
||||||
|
|
||||||
|
## Settings related to advanced custom assets usage and remapping
|
||||||
|
@export_subgroup("Custom assets")
|
||||||
|
|
||||||
|
## Custom asset lookup folder for custom icons
|
||||||
|
@export_dir var custom_asset_dir : String = ""
|
||||||
|
|
||||||
|
## Custom generic joystick mapper script
|
||||||
|
@export var custom_mapper : Script
|
||||||
|
|
||||||
|
## Custom icon file extension
|
||||||
|
@export var custom_file_extension : String = ""
|
||||||
|
|
||||||
|
## Custom settings related to any text rendering required on prompts
|
||||||
|
@export_subgroup("Text Rendering")
|
||||||
|
|
||||||
|
## Custom LabelSettings. If unset, uses engine default settings.
|
||||||
|
@export var custom_label_settings : LabelSettings
|
||||||
1
source/addons/controller_icons/Settings.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://dhd3vo6f4h2r
|
||||||
BIN
source/addons/controller_icons/assets/disconnected.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b5j0idk4yjkkj"
|
||||||
|
path="res://.godot/imported/disconnected.png-459773ea7f2a3f5eca9fe5104acb9105.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/disconnected.png"
|
||||||
|
dest_files=["res://.godot/imported/disconnected.png-459773ea7f2a3f5eca9fe5104acb9105.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
|
||||||
BIN
source/addons/controller_icons/assets/key/0.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
source/addons/controller_icons/assets/key/0.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dhwug5n7wvn8b"
|
||||||
|
path="res://.godot/imported/0.png-5e4ef89ebfb88cf2281fb8519eae8326.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/0.png"
|
||||||
|
dest_files=["res://.godot/imported/0.png-5e4ef89ebfb88cf2281fb8519eae8326.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
|
||||||
BIN
source/addons/controller_icons/assets/key/1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
34
source/addons/controller_icons/assets/key/1.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cyvt6g1pkcqfo"
|
||||||
|
path="res://.godot/imported/1.png-5e93042ff4733b49c5848a419f211dc0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/1.png"
|
||||||
|
dest_files=["res://.godot/imported/1.png-5e93042ff4733b49c5848a419f211dc0.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
|
||||||
BIN
source/addons/controller_icons/assets/key/2.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
source/addons/controller_icons/assets/key/2.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cp0j8cw8o6wvu"
|
||||||
|
path="res://.godot/imported/2.png-cc45af4ba1a14d5c701d7eaf772cb60e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/2.png"
|
||||||
|
dest_files=["res://.godot/imported/2.png-cc45af4ba1a14d5c701d7eaf772cb60e.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
|
||||||
BIN
source/addons/controller_icons/assets/key/3.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
34
source/addons/controller_icons/assets/key/3.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://tljp3e67878n"
|
||||||
|
path="res://.godot/imported/3.png-a28e3d1bcdb601b911e3d5e9aaaece29.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/3.png"
|
||||||
|
dest_files=["res://.godot/imported/3.png-a28e3d1bcdb601b911e3d5e9aaaece29.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
|
||||||
BIN
source/addons/controller_icons/assets/key/4.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
34
source/addons/controller_icons/assets/key/4.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dvv0nf2te2dy8"
|
||||||
|
path="res://.godot/imported/4.png-d6e77f4e27328a413d34506751d7e7d8.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/4.png"
|
||||||
|
dest_files=["res://.godot/imported/4.png-d6e77f4e27328a413d34506751d7e7d8.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
|
||||||
BIN
source/addons/controller_icons/assets/key/5.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
source/addons/controller_icons/assets/key/5.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://co1b5kuqpipbi"
|
||||||
|
path="res://.godot/imported/5.png-e3a211f712f0ba23f0383e633d91b292.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/5.png"
|
||||||
|
dest_files=["res://.godot/imported/5.png-e3a211f712f0ba23f0383e633d91b292.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
|
||||||
BIN
source/addons/controller_icons/assets/key/6.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
source/addons/controller_icons/assets/key/6.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b2mcylnx72rnc"
|
||||||
|
path="res://.godot/imported/6.png-c94a4fdfe4780a6cd266a954fce863aa.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/6.png"
|
||||||
|
dest_files=["res://.godot/imported/6.png-c94a4fdfe4780a6cd266a954fce863aa.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
|
||||||
BIN
source/addons/controller_icons/assets/key/7.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
34
source/addons/controller_icons/assets/key/7.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://346orodxqrwr"
|
||||||
|
path="res://.godot/imported/7.png-2aed855c8db8718bbf613d3fe15e397f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/7.png"
|
||||||
|
dest_files=["res://.godot/imported/7.png-2aed855c8db8718bbf613d3fe15e397f.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
|
||||||
BIN
source/addons/controller_icons/assets/key/8.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
34
source/addons/controller_icons/assets/key/8.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bb0namehypd0v"
|
||||||
|
path="res://.godot/imported/8.png-7347a4f63d0d4bf8e342c042e8a47b6a.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/8.png"
|
||||||
|
dest_files=["res://.godot/imported/8.png-7347a4f63d0d4bf8e342c042e8a47b6a.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
|
||||||
BIN
source/addons/controller_icons/assets/key/9.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
source/addons/controller_icons/assets/key/9.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b7hs1r61dhf8f"
|
||||||
|
path="res://.godot/imported/9.png-92a5ba8724ec75cb0650a7e43ee7de1a.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/9.png"
|
||||||
|
dest_files=["res://.godot/imported/9.png-92a5ba8724ec75cb0650a7e43ee7de1a.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
|
||||||
BIN
source/addons/controller_icons/assets/key/a.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
35
source/addons/controller_icons/assets/key/a.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bptg6u6b4y5no"
|
||||||
|
path.s3tc="res://.godot/imported/a.png-02614b596e2702a221a87d93abcfaa61.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/a.png"
|
||||||
|
dest_files=["res://.godot/imported/a.png-02614b596e2702a221a87d93abcfaa61.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
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=0
|
||||||
BIN
source/addons/controller_icons/assets/key/alt.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
source/addons/controller_icons/assets/key/alt.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cpld7e28w4q1e"
|
||||||
|
path="res://.godot/imported/alt.png-2955b920d549ecae6d20f5b9d8b28316.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/alt.png"
|
||||||
|
dest_files=["res://.godot/imported/alt.png-2955b920d549ecae6d20f5b9d8b28316.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
|
||||||
BIN
source/addons/controller_icons/assets/key/apostrophe.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://8hets451bgxx"
|
||||||
|
path="res://.godot/imported/apostrophe.png-8f8272980f0f51de5195fea6a914a748.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/apostrophe.png"
|
||||||
|
dest_files=["res://.godot/imported/apostrophe.png-8f8272980f0f51de5195fea6a914a748.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
|
||||||
BIN
source/addons/controller_icons/assets/key/arrow_down.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cge2w6yy0r2cx"
|
||||||
|
path="res://.godot/imported/arrow_down.png-5893b4e3a78dea022e4220c8b377b562.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/arrow_down.png"
|
||||||
|
dest_files=["res://.godot/imported/arrow_down.png-5893b4e3a78dea022e4220c8b377b562.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
|
||||||
BIN
source/addons/controller_icons/assets/key/arrow_left.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://puc614rf26im"
|
||||||
|
path="res://.godot/imported/arrow_left.png-47644a17d01cec89c19b183ed0ee3e4f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/arrow_left.png"
|
||||||
|
dest_files=["res://.godot/imported/arrow_left.png-47644a17d01cec89c19b183ed0ee3e4f.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
|
||||||
BIN
source/addons/controller_icons/assets/key/arrow_right.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bbjc54bmpv3f8"
|
||||||
|
path="res://.godot/imported/arrow_right.png-d9645066e53f8382133c3d6066489082.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/arrow_right.png"
|
||||||
|
dest_files=["res://.godot/imported/arrow_right.png-d9645066e53f8382133c3d6066489082.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=0
|
||||||
BIN
source/addons/controller_icons/assets/key/arrow_up.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d04bqc5v3befo"
|
||||||
|
path="res://.godot/imported/arrow_up.png-332906f7ec320f7aacf747e92daffc49.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/arrow_up.png"
|
||||||
|
dest_files=["res://.godot/imported/arrow_up.png-332906f7ec320f7aacf747e92daffc49.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
|
||||||
BIN
source/addons/controller_icons/assets/key/asterisk.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://crg486276l0ie"
|
||||||
|
path="res://.godot/imported/asterisk.png-f83bdb0b06735716dc152cef5ad1a65a.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/asterisk.png"
|
||||||
|
dest_files=["res://.godot/imported/asterisk.png-f83bdb0b06735716dc152cef5ad1a65a.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
|
||||||
BIN
source/addons/controller_icons/assets/key/b.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
source/addons/controller_icons/assets/key/b.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://canr2drixxw4k"
|
||||||
|
path="res://.godot/imported/b.png-85e60076ce4df311fd6ce062c3953570.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/b.png"
|
||||||
|
dest_files=["res://.godot/imported/b.png-85e60076ce4df311fd6ce062c3953570.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
|
||||||
BIN
source/addons/controller_icons/assets/key/backspace.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://fm4t6x1nefje"
|
||||||
|
path="res://.godot/imported/backspace.png-ca81128ca83f7830c8e33092a92b27bf.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/backspace.png"
|
||||||
|
dest_files=["res://.godot/imported/backspace.png-ca81128ca83f7830c8e33092a92b27bf.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
|
||||||
BIN
source/addons/controller_icons/assets/key/backspace_alt.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://rhv2hov7acmp"
|
||||||
|
path="res://.godot/imported/backspace_alt.png-bc1abf5cd15987380ececb7b4192e96e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/backspace_alt.png"
|
||||||
|
dest_files=["res://.godot/imported/backspace_alt.png-bc1abf5cd15987380ececb7b4192e96e.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
|
||||||
BIN
source/addons/controller_icons/assets/key/backtick.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dlknwm7g0tm3s"
|
||||||
|
path="res://.godot/imported/backtick.png-7eaa9a9989e965a67c1aedce73c9bf10.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/backtick.png"
|
||||||
|
dest_files=["res://.godot/imported/backtick.png-7eaa9a9989e965a67c1aedce73c9bf10.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
|
||||||
BIN
source/addons/controller_icons/assets/key/bracket_left.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cnk0mxv25m1bg"
|
||||||
|
path="res://.godot/imported/bracket_left.png-578afec4dd6c472e6a94a57c46997f4d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/bracket_left.png"
|
||||||
|
dest_files=["res://.godot/imported/bracket_left.png-578afec4dd6c472e6a94a57c46997f4d.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
|
||||||
BIN
source/addons/controller_icons/assets/key/bracket_right.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cg2bqitp08keh"
|
||||||
|
path="res://.godot/imported/bracket_right.png-ba5f88773753e95ae7dc9570a2aff676.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/bracket_right.png"
|
||||||
|
dest_files=["res://.godot/imported/bracket_right.png-ba5f88773753e95ae7dc9570a2aff676.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
|
||||||
BIN
source/addons/controller_icons/assets/key/c.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
source/addons/controller_icons/assets/key/c.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dvki5kbcq7qow"
|
||||||
|
path="res://.godot/imported/c.png-60bc13862a491d6dad69b4db7006689e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/c.png"
|
||||||
|
dest_files=["res://.godot/imported/c.png-60bc13862a491d6dad69b4db7006689e.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
|
||||||
BIN
source/addons/controller_icons/assets/key/caps_lock.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bmu1dyma2ia1w"
|
||||||
|
path="res://.godot/imported/caps_lock.png-68be22558ed98886d7f0c42175a4f042.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/caps_lock.png"
|
||||||
|
dest_files=["res://.godot/imported/caps_lock.png-68be22558ed98886d7f0c42175a4f042.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
|
||||||
BIN
source/addons/controller_icons/assets/key/comma.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
34
source/addons/controller_icons/assets/key/comma.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cvdspc7muffjb"
|
||||||
|
path="res://.godot/imported/comma.png-c6a5b4ddb60c3aa4cfc77e26999940ed.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/comma.png"
|
||||||
|
dest_files=["res://.godot/imported/comma.png-c6a5b4ddb60c3aa4cfc77e26999940ed.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
|
||||||
BIN
source/addons/controller_icons/assets/key/command.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
34
source/addons/controller_icons/assets/key/command.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c75c1nu5vft30"
|
||||||
|
path="res://.godot/imported/command.png-64157e5f681303ae47d5fdbb6501706d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/command.png"
|
||||||
|
dest_files=["res://.godot/imported/command.png-64157e5f681303ae47d5fdbb6501706d.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
|
||||||
BIN
source/addons/controller_icons/assets/key/ctrl.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
34
source/addons/controller_icons/assets/key/ctrl.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dxcfr4bhfw4lq"
|
||||||
|
path="res://.godot/imported/ctrl.png-482169e05fd7989d866aa04e18ed3455.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/ctrl.png"
|
||||||
|
dest_files=["res://.godot/imported/ctrl.png-482169e05fd7989d866aa04e18ed3455.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
|
||||||
BIN
source/addons/controller_icons/assets/key/d.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
35
source/addons/controller_icons/assets/key/d.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dlwamiuq1f5t6"
|
||||||
|
path.s3tc="res://.godot/imported/d.png-b7721e67decc380fd57e07ee56e53953.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/d.png"
|
||||||
|
dest_files=["res://.godot/imported/d.png-b7721e67decc380fd57e07ee56e53953.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
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=0
|
||||||
BIN
source/addons/controller_icons/assets/key/del.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
34
source/addons/controller_icons/assets/key/del.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dp71lwv4vjptf"
|
||||||
|
path="res://.godot/imported/del.png-8ab1be2a4136e8f1ae7ec54f3a75f012.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/del.png"
|
||||||
|
dest_files=["res://.godot/imported/del.png-8ab1be2a4136e8f1ae7ec54f3a75f012.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
|
||||||
BIN
source/addons/controller_icons/assets/key/e.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
34
source/addons/controller_icons/assets/key/e.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://xe4n818le3p8"
|
||||||
|
path="res://.godot/imported/e.png-7ec0ba2ffb631b8cc6de42153f818779.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/e.png"
|
||||||
|
dest_files=["res://.godot/imported/e.png-7ec0ba2ffb631b8cc6de42153f818779.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
|
||||||
BIN
source/addons/controller_icons/assets/key/end.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
source/addons/controller_icons/assets/key/end.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dd57lxd8nftr4"
|
||||||
|
path="res://.godot/imported/end.png-19998f1c73319c0913db009ea41299f1.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/end.png"
|
||||||
|
dest_files=["res://.godot/imported/end.png-19998f1c73319c0913db009ea41299f1.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
|
||||||
BIN
source/addons/controller_icons/assets/key/enter.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
34
source/addons/controller_icons/assets/key/enter.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dtgju2qbvxhqp"
|
||||||
|
path="res://.godot/imported/enter.png-d374047b990a0250a56e873b383a8b15.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/enter.png"
|
||||||
|
dest_files=["res://.godot/imported/enter.png-d374047b990a0250a56e873b383a8b15.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
|
||||||
BIN
source/addons/controller_icons/assets/key/enter_alt.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bp58drjdgvxsi"
|
||||||
|
path="res://.godot/imported/enter_alt.png-15ea435f9aa8699e8752649d5707d3f9.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/enter_alt.png"
|
||||||
|
dest_files=["res://.godot/imported/enter_alt.png-15ea435f9aa8699e8752649d5707d3f9.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
|
||||||
BIN
source/addons/controller_icons/assets/key/enter_tall.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c5bw0xq3n6elx"
|
||||||
|
path="res://.godot/imported/enter_tall.png-9ea4821e424a6eb74b209466a47a0362.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/enter_tall.png"
|
||||||
|
dest_files=["res://.godot/imported/enter_tall.png-9ea4821e424a6eb74b209466a47a0362.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
|
||||||
BIN
source/addons/controller_icons/assets/key/equals.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
34
source/addons/controller_icons/assets/key/equals.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://mkessp4iud6i"
|
||||||
|
path="res://.godot/imported/equals.png-a0481e5eb9f7e8a2bd77af0d53ce5458.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/equals.png"
|
||||||
|
dest_files=["res://.godot/imported/equals.png-a0481e5eb9f7e8a2bd77af0d53ce5458.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
|
||||||
BIN
source/addons/controller_icons/assets/key/esc.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
34
source/addons/controller_icons/assets/key/esc.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cnghdqiitl0fu"
|
||||||
|
path="res://.godot/imported/esc.png-4b899d8648d525a54c45ed98a86ba3b4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/esc.png"
|
||||||
|
dest_files=["res://.godot/imported/esc.png-4b899d8648d525a54c45ed98a86ba3b4.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
|
||||||
BIN
source/addons/controller_icons/assets/key/f.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
34
source/addons/controller_icons/assets/key/f.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://broeuieppu0ni"
|
||||||
|
path="res://.godot/imported/f.png-4d9e36eeb537558291e4f3b623effc03.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/f.png"
|
||||||
|
dest_files=["res://.godot/imported/f.png-4d9e36eeb537558291e4f3b623effc03.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
|
||||||
BIN
source/addons/controller_icons/assets/key/f1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
34
source/addons/controller_icons/assets/key/f1.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b8no45t86rrn6"
|
||||||
|
path="res://.godot/imported/f1.png-8f613f4af184fa81387a386622247ed5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/f1.png"
|
||||||
|
dest_files=["res://.godot/imported/f1.png-8f613f4af184fa81387a386622247ed5.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
|
||||||
BIN
source/addons/controller_icons/assets/key/f10.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
source/addons/controller_icons/assets/key/f10.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b76mxxjlj888w"
|
||||||
|
path="res://.godot/imported/f10.png-b1122098f3284856b04da935979c6ee0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/controller_icons/assets/key/f10.png"
|
||||||
|
dest_files=["res://.godot/imported/f10.png-b1122098f3284856b04da935979c6ee0.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
|
||||||