Legacy import progress

This commit is contained in:
CenTdemeern1 2025-04-30 23:39:00 +02:00
parent 8b3b1a5884
commit 47b8e556c1
8 changed files with 302 additions and 28 deletions

View file

@ -45,7 +45,9 @@ var settings: Settings = Settings.new()
var settingsPath = "user://settings.pngtp"
func _ready():
settings = load(settingsPath)
var loaded_settings = load(settingsPath)
if loaded_settings != null:
settings = loaded_settings
func _exit_tree():
write_settings(settingsPath)

File diff suppressed because one or more lines are too long

View file

@ -51,14 +51,8 @@ var updatePusherNode = null
func _ready():
spectrum = AudioServer.get_bus_effect_instance(1, 1)
if !Saving.settings.has("useStreamDeck"):
Saving.settings["useStreamDeck"] = false
Global.micResetTime = Config.settings.secondsToMicReset
if Saving.settings.has("secondsToMicReset"):
Global.micResetTime = Saving.settings["secondsToMicReset"]
else:
Saving.settings["secondsToMicReset"] = 180
createMicrophone()
func createMicrophone():
@ -117,7 +111,8 @@ func _process(delta):
else:
reparentMode = false
Global.chain.enable(reparentMode)
#Global.chain.enable(reparentMode)
return
if main.editMode:
if reparentMode:

View file

@ -2,3 +2,21 @@ extends Resource
class_name AvatarData
@export var sprites: Array[SpriteData] = []
static func from_legacy_json(data: String) -> AvatarData:
var sprites: Array[SpriteData] = []
var json_data = JSON.parse_string(data)
if json_data is not Dictionary: return null
for sprite_data in json_data.values():
if sprite_data is not Dictionary: return null
var sprite = SpriteData.from_legacy_dict(sprite_data)
sprites.append(sprite)
var avatar = new()
for sprite in sprites:
if sprite.legacy_parent_id != null:
var parent_index = sprites.find_custom(func(x): return x.legacy_id == sprite.legacy_parent_id)
if parent_index != -1:
sprites[parent_index].children.append(sprite)
continue
avatar.sprites.append(sprite)
return avatar

View file

@ -4,23 +4,74 @@ class_name SpriteData
@export var anim_speed = 0
@export var clipped = false
@export var costume_layers: Array[bool] = [true, true, true, true, true, true, true, true, true, true]
@export var drag = 0
@export var drag_speed = 0
@export var frames = 1
@export var ignore_bounce = false
#@export_global_file var path = ""
@export var image: Texture
@export var offset = Vector2(0, 0)
@export_global_file var path = "user://defaultAvatar/body.png"
@export var pos = Vector2(0, 0)
@export var r_limit_max = 180
@export var r_limit_min = -180
@export var rot_drag = 0
@export var show_blink = 0
@export var show_talk = 0
@export var stretch_amount = 0.25
@export var type = "sprite"
@export var x_amp = 9
@export var x_frq = 0.004
@export var y_amp = 11
@export var y_frq = 0.008
@export var zindex = -1
@export var stretch_amount = 0.0
@export var x_amp: float = 0
@export var x_frq: float = 0
@export var y_amp: float = 0
@export var y_frq: float = 0
@export var zindex = 0
@export var children: Array[SpriteData] = []
var legacy_id
var legacy_parent_id
static func from_legacy_dict(data: Dictionary) -> SpriteData:
var sprite = new()
sprite.anim_speed = data.get("animSpeed", sprite.anim_speed)
sprite.clipped = data.get("clipped", sprite.clipped)
if "costumeLayers" in data:
var layers: Array[bool] = []
for l in str_to_var(data["costumeLayers"]):
layers.append(l == 1) # .map doesn't result in a typed array :/
sprite.costume_layers = layers
sprite.drag_speed = data.get("drag", sprite.drag_speed)
sprite.frames = data.get("frames", sprite.frames)
sprite.ignore_bounce = data.get("ignoreBounce", sprite.ignore_bounce)
if "path" in data:
sprite.image = Image.load_from_file(data["path"])
if sprite.image == null:
if "imageData" not in data: return null
var image = Image.new()
var error = image.load_png_from_buffer(Marshalls.base64_to_raw(data["imageData"]))
if error != OK:
return null
sprite.offset = legacy_get_from_string(data, "offset", sprite.offset)
sprite.pos = legacy_get_from_string(data, "pos", sprite.pos)
sprite.r_limit_max = data.get("rLimitMax", sprite.r_limit_max)
sprite.r_limit_min = data.get("rLimitMin", sprite.r_limit_min)
sprite.rot_drag = data.get("rotDrag", sprite.rot_drag)
sprite.show_blink = data.get("showBlink", sprite.show_blink)
sprite.show_talk = data.get("showTalk", sprite.show_talk)
sprite.stretch_amount = data.get("stretchAmount", sprite.stretch_amount)
sprite.x_amp = data.get("xAmp", sprite.x_amp)
sprite.x_frq = data.get("xFrq", sprite.x_frq)
sprite.y_amp = data.get("yAmp", sprite.y_amp)
sprite.y_frq = data.get("yFrq", sprite.y_frq)
sprite.zindex = data.get("zindex", sprite.zindex)
sprite.legacy_id = data.get("identification")
sprite.legacy_parent_id = data.get("parentId")
return sprite
static func legacy_get_from_string(data: Dictionary, index: String, default: Variant) -> Variant:
if index in data:
return str_to_var(data[index])
return default