more b3d parsing

This commit is contained in:
Holly Stubbs 2025-01-22 12:43:35 +00:00
parent 050157d05e
commit 0dea1e57bf
28 changed files with 874 additions and 6 deletions

24
scenes/joystick_test.tscn Normal file
View file

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

View file

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

View file

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

View file

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

View file

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

14
src/objects/B3DNode.gd Normal file
View file

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

View file

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

4
src/objects/B3DTris.gd Normal file
View file

@ -0,0 +1,4 @@
class_name B3DTris
var brushId: int = -1
var triangles: PackedInt32Array = PackedInt32Array()

View file

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

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