diff --git a/scenes/joystick_test.tscn b/scenes/joystick_test.tscn new file mode 100644 index 0000000..3b2e109 --- /dev/null +++ b/scenes/joystick_test.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=2 format=3 uid="uid://clnrhrasxrueq"] + +[ext_resource type="Script" path="res://src/touch_screen_joystick.gd" id="2_duapw"] + +[node name="Main" type="Node2D"] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="TouchScreenJoystick" type="Control" parent="CanvasLayer"] +layout_mode = 3 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -386.0 +offset_right = 466.0 +grow_vertical = 0 +pivot_offset = Vector2(233, 193) +script = ExtResource("2_duapw") +anti_aliased = true +deadzone = 40.0 +smooth_reset = true +smooth_speed = 15.0 +change_opacity_when_touched = true +use_input_actions = true diff --git a/src/BufferStuffReader.gd b/src/BufferStuffReader.gd index 89337ac..1e2d294 100644 --- a/src/BufferStuffReader.gd +++ b/src/BufferStuffReader.gd @@ -61,3 +61,26 @@ func readFloat() -> float: var value = buffer.decode_float(offset) offset += 4 return value + +func readCString() -> String: + var offsetAtStart = offset + while true: + var byte = readUByte() + if byte == 0: + break + var stringSize = offset - offsetAtStart + offset -= stringSize + return readBuffer(stringSize).get_string_from_ascii() + +func readVector2() -> Vector2: + return Vector2(readFloat(), readFloat()) + +func readVector3() -> Vector3: + return Vector3(readFloat(), readFloat(), readFloat()) + +func readQuaternion() -> Quaternion: + var w = readFloat() + return Quaternion(readFloat(), readFloat(), readFloat(), w) + +func readColor() -> Color: + return Color(readFloat(), readFloat(), readFloat(), readFloat()) diff --git a/src/DynamicMap.gd b/src/DynamicMap.gd index 859f45d..5c4840b 100644 --- a/src/DynamicMap.gd +++ b/src/DynamicMap.gd @@ -5,6 +5,7 @@ var roomTemplatesRaw = Dictionary() func _ready() -> void: #RMesh.LoadRMesh(self, "GFX\\map\\gatea_opt.rmesh") #B3D.Load("GFX\\npcs\\106_2.b3d") + add_child(B3D.Load("GFX\\apache.b3d")) var rooms = INI.Load("res://Data/rooms.ini") for room in rooms: if room == "loose": @@ -20,7 +21,7 @@ func _ready() -> void: roomTemplatesRaw.get_or_add(room, roomInfo) #RMesh.LoadRMesh(self, roomInfo["mesh path"]) - CreateMap() + #CreateMap() var I_Zone: MapZones = MapZones.new() var RandomSeed: String = "" diff --git a/src/file_parsers/B3D.gd b/src/file_parsers/B3D.gd index f893024..7340be6 100644 --- a/src/file_parsers/B3D.gd +++ b/src/file_parsers/B3D.gd @@ -1,12 +1,108 @@ class_name B3D +var textures: Array = [] +var brushes: Array = [] + static func ReadChunk(reader:BufferStuffReader): var chunk = B3DChunk.new() chunk.name = reader.readBuffer(4).get_string_from_ascii() var chunkSize = reader.readInt() chunk.bytes = reader.readBuffer(chunkSize) - return chunk; + return chunk + +static func ReadChunks(reader:BufferStuffReader): + var chunks:Array = [] + while reader.offset < reader.buffer.size(): + var chunk = ReadChunk(reader) + chunks.push_back(chunk) + + return chunks + +static func ReadTextures(reader:BufferStuffReader, parsedResult: B3D): + while reader.offset < reader.buffer.size(): + var textureChunk = B3DTexture.new() + textureChunk.name = reader.readCString() + textureChunk.flags = reader.readInt() + textureChunk.blend = reader.readInt() + textureChunk.pos = reader.readVector2() + textureChunk.scale = reader.readVector2() + textureChunk.rotation = reader.readFloat() + parsedResult.textures.push_back(textureChunk) + +static func ReadBone(reader:BufferStuffReader): + var boneChunk = B3DBone.new() + while reader.offset < reader.buffer.size(): + var boneWeightChunk = B3DBoneWeight.new() + boneWeightChunk.vertexId = reader.readInt() + boneWeightChunk.weight = reader.readFloat() + boneChunk.weights.push_back(boneWeightChunk) + + return boneChunk + +static func ReadVRTS(reader:BufferStuffReader): + var vrtsChunk = B3DVertices.new() + vrtsChunk.flags = reader.readInt() + vrtsChunk.tex_coord_sets = reader.readInt() + vrtsChunk.tex_coord_set_size = reader.readInt() + + while reader.offset < reader.buffer.size(): + var vertex = reader.readVector3() + vrtsChunk.vertices.push_back(vertex) + + if vrtsChunk.containsNormals: + var normal = reader.readVector3() + vrtsChunk.normals.push_back(normal) + + if vrtsChunk.containsColors: + var color = reader.readColor() + vrtsChunk.colors.push_back(color) + + for i in range(vrtsChunk.tex_coord_sets): + for i1 in range(vrtsChunk.tex_coord_set_size): + vrtsChunk.uv.push_back(reader.readVector2()) + + return vrtsChunk + +static func ReadTRIS(reader:BufferStuffReader): + var trisChunk = B3DTris.new() + trisChunk.brushId = reader.readInt() + + while reader.offset < reader.buffer.size(): + trisChunk.triangles.push_back(reader.readInt()) + + return trisChunk + +static func ReadMesh(reader:BufferStuffReader): + var meshChunk = B3DMesh.new() + meshChunk.brushId = reader.readInt() + + var chunks = ReadChunks(reader) + for chunk in chunks: + if chunk.name == "VRTS": + meshChunk.verts = ReadVRTS(reader) + elif chunk.name == "TRIS": + meshChunk.surfaces = ReadTRIS(reader) + +static func ReadNode(reader:BufferStuffReader): + var node = B3DNode.new() + node.name = reader.readCString() + + node.position = reader.readVector3() + node.scale = reader.readVector3() + node.rotation = reader.readQuaternion().get_euler() + + var chunks = ReadChunks(reader) + for chunk in chunks: + var chunkReader = BufferStuffReader.create(chunk.bytes) + if chunk.name == "NODE": + node.add_child(ReadNode(chunkReader)) + elif chunk.name == "BONE": + node.bone = ReadBone(chunkReader) + elif chunk.name == "MESH": + node.mesh = ReadMesh(chunkReader) + + return node static func Load(filePath: String): var correctedPath = filePath.replace("\\", "/") @@ -15,14 +111,27 @@ static func Load(filePath: String): var reader = BufferStuffReader.create(fileHandle.get_buffer(fileHandle.get_length())) fileHandle.close() + var parsedResult = B3D.new() + var resultScene = Node3D.new() + var bb3dChunk = ReadChunk(reader) - print(bb3dChunk.name) if bb3dChunk.name == "BB3D": var bb3dReader = BufferStuffReader.create(bb3dChunk.bytes) var version = bb3dReader.readInt() if version == 1: - pass + var chunks = ReadChunks(bb3dReader) + for chunk in chunks: + var chunkReader = BufferStuffReader.create(chunk.bytes) + if chunk.name == "TEXS": + ReadTextures(chunkReader, parsedResult) + elif chunk.name == "BRUS": + continue + elif chunk.name == "NODE": + resultScene.add_child(ReadNode(chunkReader)) + + print(parsedResult.textures[0].name) + return resultScene else: print(str("Unknown b3d version. ", version)) return null diff --git a/src/objects/B3DMesh.gd b/src/objects/B3DMesh.gd index 02b2154..a07d561 100644 --- a/src/objects/B3DMesh.gd +++ b/src/objects/B3DMesh.gd @@ -1,5 +1,5 @@ class_name B3DMesh var brushId: int = -1 -var vertsData # TODO: B3D_VRTS -var surfaces: Array # B3D_TRIS +var verts: B3DVertices # B3D_VRTS +var surfaces: B3DTris # B3D_TRIS diff --git a/src/objects/B3DNode.gd b/src/objects/B3DNode.gd new file mode 100644 index 0000000..932378c --- /dev/null +++ b/src/objects/B3DNode.gd @@ -0,0 +1,14 @@ +class_name B3DNode +extends Node3D + +#var name: String = "" +#var position: Vector3 = Vector3.ZERO +#var scale: Vector3 = Vector3.ZERO +#var rotation: Quaternion = Quaternion.IDENTITY + +var bone: B3DBone +var mesh: B3DMesh +var children: Array = [] +var anim: B3DAnim +var animationKeys: Array = [] +var parent: B3DNode diff --git a/src/objects/B3DTexture.gd b/src/objects/B3DTexture.gd new file mode 100644 index 0000000..9bbe15c --- /dev/null +++ b/src/objects/B3DTexture.gd @@ -0,0 +1,8 @@ +class_name B3DTexture + +var name: String = "" +var flags: int = 0 +var blend: int = 0 +var pos: Vector2 +var scale: Vector2 +var rotation: float = 0.0 diff --git a/src/objects/B3DTris.gd b/src/objects/B3DTris.gd new file mode 100644 index 0000000..5ffa1e8 --- /dev/null +++ b/src/objects/B3DTris.gd @@ -0,0 +1,4 @@ +class_name B3DTris + +var brushId: int = -1 +var triangles: PackedInt32Array = PackedInt32Array() diff --git a/src/objects/B3DVertices.gd b/src/objects/B3DVertices.gd new file mode 100644 index 0000000..a0f1825 --- /dev/null +++ b/src/objects/B3DVertices.gd @@ -0,0 +1,19 @@ +class_name B3DVertices + +var flags: int: set = _flagsUpdated +var tex_coord_sets: int = 1 +var tex_coord_set_size: int = 0 + +var containsNormals: bool = false +var containsColors: bool = false + +func _flagsUpdated(flagValue: int): + flags = flagValue + containsNormals = (flags & 1) != 0 + containsColors = (flags & 2) != 0 + + +var vertices: PackedVector3Array = PackedVector3Array() +var normals: PackedVector3Array = PackedVector3Array() +var colors: PackedColorArray = PackedColorArray() +var uv: PackedVector2Array = PackedVector2Array() diff --git a/src/touch_screen_joystick.gd b/src/touch_screen_joystick.gd new file mode 100644 index 0000000..85517ca --- /dev/null +++ b/src/touch_screen_joystick.gd @@ -0,0 +1,360 @@ +@tool +extends Control +class_name TouchScreenJoystick + +@export var use_textures : bool: + set(new_bool): + use_textures = new_bool + notify_property_list_changed() +@export var knob_color := Color.WHITE +@export var base_color := Color.WHITE +@export var background_color := Color(Color.BLACK, 0.25) + +@export var base_radius := 130.0 +@export var knob_radius := 65.0 +@export var thickness := 1.8 +@export var anti_aliased : bool + +@export_group("Textures") +@export var use_custom_max_length : bool: + set(new_bool): + use_custom_max_length = new_bool + notify_property_list_changed() + +@export var max_length := 120.0 +@export var base_texture : Texture2D +@export var knob_texture : Texture2D +@export var background_texture : Texture2D + +@export_group("Joystick Params") +@export_enum("FIXED", "DYNAMIC") var mode := 0 +@export var deadzone := 10.0: + set(new_deadzone): + deadzone = clamp(new_deadzone, 10, base_radius) + +@export var smooth_reset : bool: + set(new_bool): + smooth_reset = new_bool + notify_property_list_changed() +@export var smooth_speed := 5.0 +@export var change_opacity_when_touched : bool: + set(new_bool): + change_opacity_when_touched = new_bool + notify_property_list_changed() + +@export_range(0, 100, 0.01, "suffix:%") var from_opacity := 50.0 +@export_range(0, 100, 0.01, "suffix:%") var to_opacity := 100.0 +@export var use_input_actions : bool: + set(new_bool): + use_input_actions = new_bool + notify_property_list_changed() + +@export_subgroup("Input Actions") +@export var action_left := "ui_left" +@export var action_right := "ui_right" +@export var action_up := "ui_up" +@export var action_down := "ui_down" + +@export_group("Debug") +@export var draw_debugs : bool: + set(new_bool): + draw_debugs = new_bool + notify_property_list_changed() +@export var deadzone_color := Color(Color.RED, 0.5) +@export var current_max_length_color := Color(Color.BLUE, 0.5) + + + +var is_pressing : bool +var knob_position : Vector2 +var finger_index : int +var default_pos : Vector2 + +func _ready() -> void: + default_pos = position + change_opacity() + +func _process(delta: float) -> void: + + # checks if currently pressing + if is_pressing: + + move_knob_pos() + else: + reset_knob_pos() + + # update necessities + update_input_actions() + pivot_offset = size / 2 + queue_redraw() + +#moves the knob position when pressing +func move_knob_pos() -> void: + if get_distance() <= get_current_max_length(): + knob_position = get_local_touch_pos() + else: + # calculates the angle position of the knob if it's position -- + # -- exceeds from the current max length + var angle := get_center_pos().angle_to_point(get_global_mouse_position()) + knob_position.x = (get_center_pos().x + cos(angle) * get_current_max_length()) - get_center_pos().x + knob_position.y = (get_center_pos().y + sin(angle) * get_current_max_length()) - get_center_pos().y + + + +# triggers an specific input action based on the -- +# -- current direction +func trigger_input_actions() -> void: + + var dir := get_deadzoned_vector().normalized() + + if dir.x > 0: + Input.action_release(action_left) + Input.action_press(action_right, dir.x) + else: + Input.action_release(action_right) + Input.action_press(action_left, -dir.x) + + if dir.y < 0: + Input.action_release(action_down) + Input.action_press(action_up, -dir.y) + else: + Input.action_release(action_up) + Input.action_press(action_down, dir.y) + +# releases all input actions +func release_input_actions() -> void: + Input.action_release(action_right) + Input.action_release(action_left) + Input.action_release(action_up) + Input.action_release(action_down) + +# resets knob position if not pressing +func reset_knob_pos() -> void: + if smooth_reset: + knob_position = lerp(knob_position, Vector2.ZERO, smooth_speed * get_process_delta_time()) + else: + knob_position = Vector2.ZERO + +func _validate_property(property: Dictionary) -> void: + validitate_default_drawing_properties(property) + validitate_texture_drawing_properties(property) + validitate_input_action_properties(property) + if property.name == "smooth_speed" and not smooth_reset: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "from_opacity" and not change_opacity_when_touched: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "to_opacity" and not change_opacity_when_touched: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "deadzone_color" and not draw_debugs: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "current_max_length_color" and not draw_debugs: + property.usage = PROPERTY_USAGE_READ_ONLY + + + +func validitate_input_action_properties(property : Dictionary) -> void: + if property.name == "action_left" and not use_input_actions: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "action_right" and not use_input_actions: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "action_up" and not use_input_actions: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "action_down" and not use_input_actions: + property.usage = PROPERTY_USAGE_READ_ONLY + +func validitate_default_drawing_properties(property : Dictionary) -> void: + if property.name == "base_color" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "knob_color" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "background_color" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "base_radius" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + + if property.name == "knob_radius" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "thickness" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "anti_aliased" and use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + +func validitate_texture_drawing_properties(property : Dictionary) -> void: + + + if property.name == "background_texture" and not use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "use_custom_max_length" and not use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "max_length" and not use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "max_length" and not use_custom_max_length: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "base_texture" and not use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + if property.name == "knob_texture" and not use_textures: + property.usage = PROPERTY_USAGE_READ_ONLY + + +func _draw() -> void: + if not use_textures: + draw_default_joystick() + else: + draw_textured_joystick() + + if draw_debugs: + draw_debug() + +func draw_default_joystick() -> void: + + draw_set_transform(size / 2) + # background + draw_circle(Vector2.ZERO, base_radius, background_color, true, -1.0, anti_aliased) + + # base + draw_circle(Vector2.ZERO, base_radius, base_color, false, thickness, anti_aliased) + var pos := knob_position + # knob + draw_circle(pos, knob_radius, knob_color, true, -1.0, anti_aliased) + + +func draw_textured_joystick() -> void: + + if background_texture: + var centered_base_pos := size / 2 - (base_texture.get_size() / 2) + draw_set_transform(centered_base_pos) + draw_texture_rect(background_texture, Rect2(Vector2.ZERO, base_texture.get_size()), false) + + # draw textured base + if base_texture: + var centered_base_pos := size / 2 - (base_texture.get_size() / 2) + + size.x = clamp(size.x, base_texture.get_size().x, INF) + size.y = clamp(size.y, base_texture.get_size().y, INF) + draw_set_transform(centered_base_pos) + draw_texture_rect(base_texture, Rect2(Vector2.ZERO, base_texture.get_size()), false) + + # draw texture knob + + if knob_texture: + var centered_knob_pos := (Vector2.ZERO - knob_texture.get_size() / 2) + size / 2 + + draw_set_transform(centered_knob_pos) + draw_texture_rect(knob_texture, Rect2(knob_position, knob_texture.get_size()), false) + + + +func draw_debug() -> void: + draw_set_transform(size / 2) + # draw deadzone + + draw_circle(Vector2.ZERO, deadzone, deadzone_color, false, 1.0, true) + + # draw current max length + draw_circle(Vector2.ZERO, get_current_max_length(), current_max_length_color, false, 1.0, true) + + draw_circle(knob_position, 10, Color.RED, true, -1.0, true) + + + +func _input(event: InputEvent) -> void: + if event is InputEventScreenTouch: + var is_touching := event.pressed and get_global_rect().has_point(event.position) as bool + + if is_touching: + on_touched(event) + else: + on_touch_released(event) + + +func on_touched(event: InputEventScreenTouch) -> void: + is_pressing = true + finger_index = event.index + change_opacity() + var mouse_pos := get_global_mouse_position() - size / 2 + if mode == 1 and event.index == finger_index and get_global_rect().has_point(mouse_pos): + position = mouse_pos + #update_input_actions() + +func on_touch_released(event: InputEventScreenTouch) -> void: + if event.index == finger_index: + is_pressing = false + if mode == 1: + position = default_pos + change_opacity() + #update_input_actions() + + +func update_input_actions() -> void: + if use_input_actions and is_pressing: + trigger_input_actions() + else: + release_input_actions() + +func get_vector() -> Vector2: + return get_center_pos().direction_to(knob_position + get_center_pos()) + + +func get_deadzoned_vector() -> Vector2: + var vector : Vector2 + if is_pressing and not is_in_deadzone(): + vector = get_center_pos().direction_to(knob_position + get_center_pos()) + else: + vector = Vector2.ZERO + return vector + +func get_center_pos() -> Vector2: + return position + size / 2 + +func get_local_touch_pos() -> Vector2: + return (get_global_mouse_position() - get_center_pos()) / scale.x + +func get_distance() -> float: + return get_global_mouse_position().distance_to(get_center_pos()) / scale.x + +# get the current max length of the knob's position. -- +# -- if you use textures, the current max length will -- +# -- automatically set to the half base texture's width +func get_current_max_length() -> float: + var curr_max_length : float + if not use_textures: + curr_max_length = base_radius + else: + if use_custom_max_length: + curr_max_length = max_length + elif not use_custom_max_length and base_texture: + curr_max_length = base_texture.get_size().x / 2 + + return curr_max_length + +# changes the opacity when touched +func change_opacity() -> void: + if change_opacity_when_touched and not Engine.is_editor_hint(): + if is_pressing: + modulate.a = to_opacity / 100.0 + else: + modulate.a = from_opacity / 100.0 + else: + modulate.a = 1.0 + +func is_in_deadzone() -> bool: + return get_distance() <= deadzone diff --git a/textures/VirtualJoystickPack/Joystick.png b/textures/VirtualJoystickPack/Joystick.png new file mode 100644 index 0000000..03a6398 Binary files /dev/null and b/textures/VirtualJoystickPack/Joystick.png differ diff --git a/textures/VirtualJoystickPack/Joystick.png.import b/textures/VirtualJoystickPack/Joystick.png.import new file mode 100644 index 0000000..200f2c5 --- /dev/null +++ b/textures/VirtualJoystickPack/Joystick.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kgegtvvkasmh" +path="res://.godot/imported/Joystick.png-f4c6f88ef9ef2fd1b4ed8c8562aa88c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/Joystick.png" +dest_files=["res://.godot/imported/Joystick.png-f4c6f88ef9ef2fd1b4ed8c8562aa88c4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/JoystickPack Preview.png b/textures/VirtualJoystickPack/JoystickPack Preview.png new file mode 100644 index 0000000..6dcaf2d Binary files /dev/null and b/textures/VirtualJoystickPack/JoystickPack Preview.png differ diff --git a/textures/VirtualJoystickPack/JoystickPack Preview.png.import b/textures/VirtualJoystickPack/JoystickPack Preview.png.import new file mode 100644 index 0000000..9536267 --- /dev/null +++ b/textures/VirtualJoystickPack/JoystickPack Preview.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqgoyfgebhqmt" +path="res://.godot/imported/JoystickPack Preview.png-cad2cbfc624f33460e27843d4eddb5f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/JoystickPack Preview.png" +dest_files=["res://.godot/imported/JoystickPack Preview.png-cad2cbfc624f33460e27843d4eddb5f8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/JoystickPack.png b/textures/VirtualJoystickPack/JoystickPack.png new file mode 100644 index 0000000..e628bc4 Binary files /dev/null and b/textures/VirtualJoystickPack/JoystickPack.png differ diff --git a/textures/VirtualJoystickPack/JoystickPack.png.import b/textures/VirtualJoystickPack/JoystickPack.png.import new file mode 100644 index 0000000..10241c5 --- /dev/null +++ b/textures/VirtualJoystickPack/JoystickPack.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2nh445b2tt8d" +path="res://.godot/imported/JoystickPack.png-ff571482e5201edf644b6dfa5efd257e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/JoystickPack.png" +dest_files=["res://.godot/imported/JoystickPack.png-ff571482e5201edf644b6dfa5efd257e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/JoystickSplitted.png b/textures/VirtualJoystickPack/JoystickSplitted.png new file mode 100644 index 0000000..04ae67a Binary files /dev/null and b/textures/VirtualJoystickPack/JoystickSplitted.png differ diff --git a/textures/VirtualJoystickPack/JoystickSplitted.png.import b/textures/VirtualJoystickPack/JoystickSplitted.png.import new file mode 100644 index 0000000..8cc0406 --- /dev/null +++ b/textures/VirtualJoystickPack/JoystickSplitted.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3s2n2pi4u3p4" +path="res://.godot/imported/JoystickSplitted.png-6932d8f057f1cd8a62dfca37ff10f3ce.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/JoystickSplitted.png" +dest_files=["res://.godot/imported/JoystickSplitted.png-6932d8f057f1cd8a62dfca37ff10f3ce.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/LargeHandleFilled.png b/textures/VirtualJoystickPack/LargeHandleFilled.png new file mode 100644 index 0000000..fdd39b0 Binary files /dev/null and b/textures/VirtualJoystickPack/LargeHandleFilled.png differ diff --git a/textures/VirtualJoystickPack/LargeHandleFilled.png.import b/textures/VirtualJoystickPack/LargeHandleFilled.png.import new file mode 100644 index 0000000..ebe14f0 --- /dev/null +++ b/textures/VirtualJoystickPack/LargeHandleFilled.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1f45s46ro0ua" +path="res://.godot/imported/LargeHandleFilled.png-2cad4614d0b76be8d02c020956ef23b4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/LargeHandleFilled.png" +dest_files=["res://.godot/imported/LargeHandleFilled.png-2cad4614d0b76be8d02c020956ef23b4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/LargeHandleFilledGrey.png b/textures/VirtualJoystickPack/LargeHandleFilledGrey.png new file mode 100644 index 0000000..65621dd Binary files /dev/null and b/textures/VirtualJoystickPack/LargeHandleFilledGrey.png differ diff --git a/textures/VirtualJoystickPack/LargeHandleFilledGrey.png.import b/textures/VirtualJoystickPack/LargeHandleFilledGrey.png.import new file mode 100644 index 0000000..927feba --- /dev/null +++ b/textures/VirtualJoystickPack/LargeHandleFilledGrey.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwa5fpygwbwkw" +path="res://.godot/imported/LargeHandleFilledGrey.png-673eb0a5dc7350a468dcb401866c77ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/LargeHandleFilledGrey.png" +dest_files=["res://.godot/imported/LargeHandleFilledGrey.png-673eb0a5dc7350a468dcb401866c77ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/SmallHandle.png b/textures/VirtualJoystickPack/SmallHandle.png new file mode 100644 index 0000000..86eb720 Binary files /dev/null and b/textures/VirtualJoystickPack/SmallHandle.png differ diff --git a/textures/VirtualJoystickPack/SmallHandle.png.import b/textures/VirtualJoystickPack/SmallHandle.png.import new file mode 100644 index 0000000..71b34f5 --- /dev/null +++ b/textures/VirtualJoystickPack/SmallHandle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnihylyhtdeag" +path="res://.godot/imported/SmallHandle.png-883b3f2a2d4d8297c3a3c1174787ece9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/SmallHandle.png" +dest_files=["res://.godot/imported/SmallHandle.png-883b3f2a2d4d8297c3a3c1174787ece9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/SmallHandleFilled.png b/textures/VirtualJoystickPack/SmallHandleFilled.png new file mode 100644 index 0000000..be98cbc Binary files /dev/null and b/textures/VirtualJoystickPack/SmallHandleFilled.png differ diff --git a/textures/VirtualJoystickPack/SmallHandleFilled.png.import b/textures/VirtualJoystickPack/SmallHandleFilled.png.import new file mode 100644 index 0000000..5e96ac7 --- /dev/null +++ b/textures/VirtualJoystickPack/SmallHandleFilled.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cimue7to0w30k" +path="res://.godot/imported/SmallHandleFilled.png-b05ea1c4c699eec1a35a0d4e5f216398.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/SmallHandleFilled.png" +dest_files=["res://.godot/imported/SmallHandleFilled.png-b05ea1c4c699eec1a35a0d4e5f216398.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/textures/VirtualJoystickPack/SmallHandleFilledGrey.png b/textures/VirtualJoystickPack/SmallHandleFilledGrey.png new file mode 100644 index 0000000..40e968f Binary files /dev/null and b/textures/VirtualJoystickPack/SmallHandleFilledGrey.png differ diff --git a/textures/VirtualJoystickPack/SmallHandleFilledGrey.png.import b/textures/VirtualJoystickPack/SmallHandleFilledGrey.png.import new file mode 100644 index 0000000..ca22918 --- /dev/null +++ b/textures/VirtualJoystickPack/SmallHandleFilledGrey.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dstq5nmmahvtb" +path="res://.godot/imported/SmallHandleFilledGrey.png-8d4b91d411c1dfd052d5445245fb00a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/VirtualJoystickPack/SmallHandleFilledGrey.png" +dest_files=["res://.godot/imported/SmallHandleFilledGrey.png-8d4b91d411c1dfd052d5445245fb00a8.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