Get midi sync working at all.
This commit is contained in:
parent
439be5642d
commit
43b7c5b554
3 changed files with 415 additions and 322 deletions
|
@ -25,7 +25,6 @@ var editMode = true
|
||||||
|
|
||||||
@onready var shadow = $shadowSprite
|
@onready var shadow = $shadowSprite
|
||||||
|
|
||||||
|
|
||||||
#Scene Reference
|
#Scene Reference
|
||||||
@onready var spriteObject = preload("res://ui_scenes/selectedSprite/spriteObject.tscn")
|
@onready var spriteObject = preload("res://ui_scenes/selectedSprite/spriteObject.tscn")
|
||||||
|
|
||||||
|
@ -51,123 +50,128 @@ var fileSystemOpen = false
|
||||||
#background input capture
|
#background input capture
|
||||||
signal emptiedCapture
|
signal emptiedCapture
|
||||||
signal pressedKey
|
signal pressedKey
|
||||||
var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"]
|
var costumeKeys = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
|
||||||
signal spriteVisToggles(keysPressed:Array)
|
signal spriteVisToggles(keysPressed: Array)
|
||||||
signal fatfuckingballs
|
signal fatfuckingballs
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
Global.main = self
|
Global.main = self
|
||||||
Global.fail = $Failed
|
Global.fail = $Failed
|
||||||
|
|
||||||
|
Global.connect("startSpeaking", onSpeak)
|
||||||
Global.connect("startSpeaking",onSpeak)
|
|
||||||
|
|
||||||
ElgatoStreamDeck.on_key_down.connect(changeCostumeStreamDeck)
|
ElgatoStreamDeck.on_key_down.connect(changeCostumeStreamDeck)
|
||||||
|
|
||||||
|
OS.open_midi_inputs()
|
||||||
|
print(OS.get_connected_midi_inputs())
|
||||||
|
|
||||||
if Saving.settings["newUser"]:
|
if Saving.settings["newUser"]:
|
||||||
_on_load_dialog_file_selected("default")
|
_on_load_dialog_file_selected("default")
|
||||||
Saving.settings["newUser"] = false
|
Saving.settings["newUser"] = false
|
||||||
saveLoaded = true
|
saveLoaded = true
|
||||||
else:
|
else:
|
||||||
_on_load_dialog_file_selected(Saving.settings["lastAvatar"])
|
_on_load_dialog_file_selected(Saving.settings["lastAvatar"])
|
||||||
|
|
||||||
$ControlPanel/volumeSlider.value = Saving.settings["volume"]
|
$ControlPanel/volumeSlider.value = Saving.settings["volume"]
|
||||||
$ControlPanel/sensitiveSlider.value = Saving.settings["sense"]
|
$ControlPanel/sensitiveSlider.value = Saving.settings["sense"]
|
||||||
|
|
||||||
get_window().size = str_to_var(Saving.settings["windowSize"])
|
get_window().size = str_to_var(Saving.settings["windowSize"])
|
||||||
|
|
||||||
if Saving.settings.has("bounce"):
|
if Saving.settings.has("bounce"):
|
||||||
bounceSlider = Saving.settings["bounce"]
|
bounceSlider = Saving.settings["bounce"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["bounce"] = 250
|
Saving.settings["bounce"] = 250
|
||||||
|
|
||||||
if Saving.settings.has("maxFPS"):
|
if Saving.settings.has("maxFPS"):
|
||||||
Engine.max_fps = Saving.settings["maxFPS"]
|
Engine.max_fps = Saving.settings["maxFPS"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["maxFPS"] = 60
|
Saving.settings["maxFPS"] = 60
|
||||||
|
|
||||||
if Saving.settings.has("backgroundColor"):
|
if Saving.settings.has("backgroundColor"):
|
||||||
Global.backgroundColor = str_to_var(Saving.settings["backgroundColor"])
|
Global.backgroundColor = str_to_var(Saving.settings["backgroundColor"])
|
||||||
else:
|
else:
|
||||||
Saving.settings["backgroundColor"] = var_to_str(Color(0.0,0.0,0.0,0.0))
|
Saving.settings["backgroundColor"] = var_to_str(Color(0.0, 0.0, 0.0, 0.0))
|
||||||
|
|
||||||
if Saving.settings.has("filtering"):
|
if Saving.settings.has("filtering"):
|
||||||
Global.filtering = Saving.settings["filtering"]
|
Global.filtering = Saving.settings["filtering"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["filtering"] = false
|
Saving.settings["filtering"] = false
|
||||||
|
|
||||||
if Saving.settings.has("gravity"):
|
if Saving.settings.has("gravity"):
|
||||||
bounceGravity = Saving.settings["gravity"]
|
bounceGravity = Saving.settings["gravity"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["gravity"] = 1000
|
Saving.settings["gravity"] = 1000
|
||||||
|
|
||||||
if Saving.settings.has("costumeKeys"):
|
if Saving.settings.has("costumeKeys"):
|
||||||
costumeKeys = Saving.settings["costumeKeys"]
|
costumeKeys = Saving.settings["costumeKeys"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["costumeKeys"] = costumeKeys
|
Saving.settings["costumeKeys"] = costumeKeys
|
||||||
|
|
||||||
if Saving.settings.has("blinkSpeed"):
|
if Saving.settings.has("blinkSpeed"):
|
||||||
Global.blinkSpeed = Saving.settings["blinkSpeed"]
|
Global.blinkSpeed = Saving.settings["blinkSpeed"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["blinkSpeed"] = 1.0
|
Saving.settings["blinkSpeed"] = 1.0
|
||||||
|
|
||||||
if Saving.settings.has("blinkChance"):
|
if Saving.settings.has("blinkChance"):
|
||||||
Global.blinkChance = Saving.settings["blinkChance"]
|
Global.blinkChance = Saving.settings["blinkChance"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["blinkChance"] = 200
|
Saving.settings["blinkChance"] = 200
|
||||||
|
|
||||||
if Saving.settings.has("bounceOnCostumeChange"):
|
if Saving.settings.has("bounceOnCostumeChange"):
|
||||||
bounceOnCostumeChange = Saving.settings["bounceOnCostumeChange"]
|
bounceOnCostumeChange = Saving.settings["bounceOnCostumeChange"]
|
||||||
else:
|
else:
|
||||||
Saving.settings["bounceOnCostumeChange"] = false
|
Saving.settings["bounceOnCostumeChange"] = false
|
||||||
|
|
||||||
saveLoaded = true
|
saveLoaded = true
|
||||||
|
|
||||||
RenderingServer.set_default_clear_color(Global.backgroundColor)
|
RenderingServer.set_default_clear_color(Global.backgroundColor)
|
||||||
swapMode()
|
swapMode()
|
||||||
settingsMenu.setvalues()
|
settingsMenu.setvalues()
|
||||||
changeCostume(1)
|
changeCostume(1)
|
||||||
|
|
||||||
var s = get_viewport().get_visible_rect().size
|
var s = get_viewport().get_visible_rect().size
|
||||||
origin.position = s*0.5
|
origin.position = s * 0.5
|
||||||
camera.position = origin.position
|
camera.position = origin.position
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
var hold = origin.get_parent().position.y
|
var hold = origin.get_parent().position.y
|
||||||
|
|
||||||
origin.get_parent().position.y += yVel * 0.0166
|
origin.get_parent().position.y += yVel * 0.0166
|
||||||
if origin.get_parent().position.y > 0:
|
if origin.get_parent().position.y > 0:
|
||||||
origin.get_parent().position.y = 0
|
origin.get_parent().position.y = 0
|
||||||
bounceChange = hold - origin.get_parent().position.y
|
bounceChange = hold - origin.get_parent().position.y
|
||||||
|
|
||||||
yVel += bounceGravity*0.0166
|
yVel += bounceGravity * 0.0166
|
||||||
|
|
||||||
if Input.is_action_just_pressed("openFolder"):
|
if Input.is_action_just_pressed("openFolder"):
|
||||||
OS.shell_open(ProjectSettings.globalize_path("user://"))
|
OS.shell_open(ProjectSettings.globalize_path("user://"))
|
||||||
|
|
||||||
moveSpriteMenu(delta)
|
moveSpriteMenu(delta)
|
||||||
zoomScene()
|
zoomScene()
|
||||||
|
|
||||||
fileSystemOpen = isFileSystemOpen()
|
fileSystemOpen = isFileSystemOpen()
|
||||||
|
|
||||||
followShadow()
|
followShadow()
|
||||||
|
|
||||||
|
|
||||||
func followShadow():
|
func followShadow():
|
||||||
shadow.visible = is_instance_valid(Global.heldSprite)
|
shadow.visible = is_instance_valid(Global.heldSprite)
|
||||||
if !shadow.visible:
|
if !shadow.visible:
|
||||||
return
|
return
|
||||||
|
|
||||||
shadow.global_position = Global.heldSprite.sprite.global_position + Vector2(6,6)
|
shadow.global_position = Global.heldSprite.sprite.global_position + Vector2(6, 6)
|
||||||
shadow.global_rotation = Global.heldSprite.sprite.global_rotation
|
shadow.global_rotation = Global.heldSprite.sprite.global_rotation
|
||||||
shadow.offset = Global.heldSprite.sprite.offset
|
shadow.offset = Global.heldSprite.sprite.offset
|
||||||
|
|
||||||
shadow.texture = Global.heldSprite.sprite.texture
|
shadow.texture = Global.heldSprite.sprite.texture
|
||||||
shadow.hframes = Global.heldSprite.sprite.hframes
|
shadow.hframes = Global.heldSprite.sprite.hframes
|
||||||
shadow.frame = Global.heldSprite.sprite.frame
|
shadow.frame = Global.heldSprite.sprite.frame
|
||||||
|
|
||||||
|
|
||||||
func isFileSystemOpen():
|
func isFileSystemOpen():
|
||||||
for obj in [replaceDialog,fileDialog,saveDialog,loadDialog]:
|
for obj in [replaceDialog, fileDialog, saveDialog, loadDialog]:
|
||||||
if obj.visible:
|
if obj.visible:
|
||||||
if obj == replaceDialog:
|
if obj == replaceDialog:
|
||||||
return true
|
return true
|
||||||
|
@ -175,6 +179,7 @@ func isFileSystemOpen():
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
#Displays control panel whether or not application is focused
|
#Displays control panel whether or not application is focused
|
||||||
func _notification(what):
|
func _notification(what):
|
||||||
match what:
|
match what:
|
||||||
|
@ -188,43 +193,46 @@ func _notification(what):
|
||||||
30:
|
30:
|
||||||
onWindowSizeChange()
|
onWindowSizeChange()
|
||||||
|
|
||||||
|
|
||||||
func onWindowSizeChange():
|
func onWindowSizeChange():
|
||||||
if !saveLoaded:
|
if !saveLoaded:
|
||||||
return
|
return
|
||||||
Saving.settings["windowSize"] = var_to_str(get_window().size)
|
Saving.settings["windowSize"] = var_to_str(get_window().size)
|
||||||
var s = get_viewport().get_visible_rect().size
|
var s = get_viewport().get_visible_rect().size
|
||||||
origin.position = s*0.5
|
origin.position = s * 0.5
|
||||||
|
|
||||||
lines.position = s*0.5
|
lines.position = s * 0.5
|
||||||
lines.drawLine()
|
lines.drawLine()
|
||||||
|
|
||||||
camera.position = origin.position
|
camera.position = origin.position
|
||||||
controlPanel.position = camera.position + (s/(camera.zoom*2.0))
|
controlPanel.position = camera.position + (s / (camera.zoom * 2.0))
|
||||||
tutorial.position = controlPanel.position
|
tutorial.position = controlPanel.position
|
||||||
editControls.position = camera.position - (s/(camera.zoom*2.0))
|
editControls.position = camera.position - (s / (camera.zoom * 2.0))
|
||||||
viewerArrows.position = editControls.position
|
viewerArrows.position = editControls.position
|
||||||
spriteList.position.x = s.x - 233
|
spriteList.position.x = s.x - 233
|
||||||
pushUpdates.position.y = controlPanel.position.y
|
pushUpdates.position.y = controlPanel.position.y
|
||||||
pushUpdates.position.x = editControls.position.x
|
pushUpdates.position.x = editControls.position.x
|
||||||
|
|
||||||
|
|
||||||
func zoomScene():
|
func zoomScene():
|
||||||
#Handles Zooming
|
#Handles Zooming
|
||||||
if Input.is_action_pressed("control"):
|
if Input.is_action_pressed("control"):
|
||||||
if Input.is_action_just_pressed("scrollUp"):
|
if Input.is_action_just_pressed("scrollUp"):
|
||||||
if scaleOverall < 400:
|
if scaleOverall < 400:
|
||||||
camera.zoom += Vector2(0.1,0.1)
|
camera.zoom += Vector2(0.1, 0.1)
|
||||||
scaleOverall += 10
|
scaleOverall += 10
|
||||||
changeZoom()
|
changeZoom()
|
||||||
if Input.is_action_just_pressed("scrollDown"):
|
if Input.is_action_just_pressed("scrollDown"):
|
||||||
if scaleOverall > 10:
|
if scaleOverall > 10:
|
||||||
camera.zoom -= Vector2(0.1,0.1)
|
camera.zoom -= Vector2(0.1, 0.1)
|
||||||
scaleOverall -= 10
|
scaleOverall -= 10
|
||||||
changeZoom()
|
changeZoom()
|
||||||
|
|
||||||
$ControlPanel/ZoomLabel.modulate.a = lerp($ControlPanel/ZoomLabel.modulate.a,0.0,0.02)
|
$ControlPanel/ZoomLabel.modulate.a = lerp($ControlPanel/ZoomLabel.modulate.a, 0.0, 0.02)
|
||||||
|
|
||||||
|
|
||||||
func changeZoom():
|
func changeZoom():
|
||||||
var newZoom = Vector2(1.0,1.0) / camera.zoom
|
var newZoom = Vector2(1.0, 1.0) / camera.zoom
|
||||||
controlPanel.scale = newZoom
|
controlPanel.scale = newZoom
|
||||||
tutorial.scale = newZoom
|
tutorial.scale = newZoom
|
||||||
editControls.scale = newZoom
|
editControls.scale = newZoom
|
||||||
|
@ -235,23 +243,24 @@ func changeZoom():
|
||||||
|
|
||||||
$ControlPanel/ZoomLabel.modulate.a = 6.0
|
$ControlPanel/ZoomLabel.modulate.a = 6.0
|
||||||
$ControlPanel/ZoomLabel.text = "Zoom : " + str(scaleOverall) + "%"
|
$ControlPanel/ZoomLabel.text = "Zoom : " + str(scaleOverall) + "%"
|
||||||
|
|
||||||
Global.pushUpdate("Set zoom to " + str(scaleOverall) + "%")
|
Global.pushUpdate("Set zoom to " + str(scaleOverall) + "%")
|
||||||
onWindowSizeChange()
|
onWindowSizeChange()
|
||||||
|
|
||||||
|
|
||||||
#When the user speaks!
|
#When the user speaks!
|
||||||
func onSpeak():
|
func onSpeak():
|
||||||
if origin.get_parent().position.y > -16:
|
if origin.get_parent().position.y > -16:
|
||||||
yVel = bounceSlider * -1
|
yVel = bounceSlider * -1
|
||||||
|
|
||||||
|
|
||||||
#Swaps between edit mode and view mode
|
#Swaps between edit mode and view mode
|
||||||
func swapMode():
|
func swapMode():
|
||||||
|
|
||||||
Global.heldSprite = null
|
Global.heldSprite = null
|
||||||
|
|
||||||
editMode = !editMode
|
editMode = !editMode
|
||||||
Global.pushUpdate("Toggled editing mode.")
|
Global.pushUpdate("Toggled editing mode.")
|
||||||
|
|
||||||
get_viewport().transparent_bg = !editMode
|
get_viewport().transparent_bg = !editMode
|
||||||
if Global.backgroundColor.a != 0.0:
|
if Global.backgroundColor.a != 0.0:
|
||||||
get_viewport().transparent_bg = false
|
get_viewport().transparent_bg = false
|
||||||
|
@ -265,75 +274,79 @@ func swapMode():
|
||||||
controlPanel.visible = !editMode
|
controlPanel.visible = !editMode
|
||||||
lines.visible = editMode
|
lines.visible = editMode
|
||||||
spriteList.visible = editMode
|
spriteList.visible = editMode
|
||||||
|
|
||||||
|
|
||||||
#Adds sprite object to scene
|
#Adds sprite object to scene
|
||||||
func add_image(path):
|
func add_image(path):
|
||||||
|
|
||||||
var rand = RandomNumberGenerator.new()
|
var rand = RandomNumberGenerator.new()
|
||||||
var id = rand.randi()
|
var id = rand.randi()
|
||||||
|
|
||||||
var sprite = spriteObject.instantiate()
|
var sprite = spriteObject.instantiate()
|
||||||
sprite.path = path
|
sprite.path = path
|
||||||
sprite.id = id
|
sprite.id = id
|
||||||
origin.add_child(sprite)
|
origin.add_child(sprite)
|
||||||
sprite.position = Vector2.ZERO
|
sprite.position = Vector2.ZERO
|
||||||
|
|
||||||
Global.spriteList.updateData()
|
Global.spriteList.updateData()
|
||||||
|
|
||||||
Global.pushUpdate("Added new sprite.")
|
Global.pushUpdate("Added new sprite.")
|
||||||
|
|
||||||
|
|
||||||
#Opens File Dialog
|
#Opens File Dialog
|
||||||
func _on_add_button_pressed():
|
func _on_add_button_pressed():
|
||||||
fileDialog.visible = true
|
fileDialog.visible = true
|
||||||
|
|
||||||
|
|
||||||
#Runs when selecting image in File Dialog
|
#Runs when selecting image in File Dialog
|
||||||
func _on_file_dialog_file_selected(path):
|
func _on_file_dialog_file_selected(path):
|
||||||
add_image(path)
|
add_image(path)
|
||||||
|
|
||||||
|
|
||||||
func _on_save_button_pressed():
|
func _on_save_button_pressed():
|
||||||
$SaveDialog.visible = true
|
$SaveDialog.visible = true
|
||||||
|
|
||||||
|
|
||||||
func _on_load_button_pressed():
|
func _on_load_button_pressed():
|
||||||
$LoadDialog.visible = true
|
$LoadDialog.visible = true
|
||||||
|
|
||||||
|
|
||||||
#LOAD AVATAR
|
#LOAD AVATAR
|
||||||
func _on_load_dialog_file_selected(path):
|
func _on_load_dialog_file_selected(path):
|
||||||
var data = Saving.read_save(path)
|
var data = Saving.read_save(path)
|
||||||
|
|
||||||
if data == null:
|
if data == null:
|
||||||
return
|
return
|
||||||
|
|
||||||
origin.queue_free()
|
origin.queue_free()
|
||||||
var new = Node2D.new()
|
var new = Node2D.new()
|
||||||
$OriginMotion.add_child(new)
|
$OriginMotion.add_child(new)
|
||||||
origin = new
|
origin = new
|
||||||
|
|
||||||
for item in data:
|
for item in data:
|
||||||
var sprite = spriteObject.instantiate()
|
var sprite = spriteObject.instantiate()
|
||||||
sprite.path = data[item]["path"]
|
sprite.path = data[item]["path"]
|
||||||
sprite.id = data[item]["identification"]
|
sprite.id = data[item]["identification"]
|
||||||
sprite.parentId = data[item]["parentId"]
|
sprite.parentId = data[item]["parentId"]
|
||||||
|
|
||||||
sprite.offset = str_to_var(data[item]["offset"])
|
sprite.offset = str_to_var(data[item]["offset"])
|
||||||
sprite.z = data[item]["zindex"]
|
sprite.z = data[item]["zindex"]
|
||||||
sprite.dragSpeed = data[item]["drag"]
|
sprite.dragSpeed = data[item]["drag"]
|
||||||
|
|
||||||
sprite.xFrq = data[item]["xFrq"]
|
sprite.xFrq = data[item]["xFrq"]
|
||||||
sprite.xAmp = data[item]["xAmp"]
|
sprite.xAmp = data[item]["xAmp"]
|
||||||
sprite.yFrq = data[item]["yFrq"]
|
sprite.yFrq = data[item]["yFrq"]
|
||||||
sprite.yAmp = data[item]["yAmp"]
|
sprite.yAmp = data[item]["yAmp"]
|
||||||
|
|
||||||
sprite.rdragStr = data[item]["rotDrag"]
|
sprite.rdragStr = data[item]["rotDrag"]
|
||||||
sprite.showOnTalk = data[item]["showTalk"]
|
sprite.showOnTalk = data[item]["showTalk"]
|
||||||
|
|
||||||
sprite.showOnBlink = data[item]["showBlink"]
|
sprite.showOnBlink = data[item]["showBlink"]
|
||||||
|
|
||||||
if data[item].has("rLimitMin"):
|
if data[item].has("rLimitMin"):
|
||||||
sprite.rLimitMin = data[item]["rLimitMin"]
|
sprite.rLimitMin = data[item]["rLimitMin"]
|
||||||
if data[item].has("rLimitMax"):
|
if data[item].has("rLimitMax"):
|
||||||
sprite.rLimitMax = data[item]["rLimitMax"]
|
sprite.rLimitMax = data[item]["rLimitMax"]
|
||||||
|
|
||||||
if data[item].has("costumeLayers"):
|
if data[item].has("costumeLayers"):
|
||||||
sprite.costumeLayers = str_to_var(data[item]["costumeLayers"]).duplicate()
|
sprite.costumeLayers = str_to_var(data[item]["costumeLayers"]).duplicate()
|
||||||
if sprite.costumeLayers.size() < 8:
|
if sprite.costumeLayers.size() < 8:
|
||||||
|
@ -342,10 +355,10 @@ func _on_load_dialog_file_selected(path):
|
||||||
|
|
||||||
if data[item].has("stretchAmount"):
|
if data[item].has("stretchAmount"):
|
||||||
sprite.stretchAmount = data[item]["stretchAmount"]
|
sprite.stretchAmount = data[item]["stretchAmount"]
|
||||||
|
|
||||||
if data[item].has("ignoreBounce"):
|
if data[item].has("ignoreBounce"):
|
||||||
sprite.ignoreBounce = data[item]["ignoreBounce"]
|
sprite.ignoreBounce = data[item]["ignoreBounce"]
|
||||||
|
|
||||||
if data[item].has("frames"):
|
if data[item].has("frames"):
|
||||||
sprite.frames = data[item]["frames"]
|
sprite.frames = data[item]["frames"]
|
||||||
if data[item].has("animSpeed"):
|
if data[item].has("animSpeed"):
|
||||||
|
@ -356,25 +369,25 @@ func _on_load_dialog_file_selected(path):
|
||||||
sprite.clipped = data[item]["clipped"]
|
sprite.clipped = data[item]["clipped"]
|
||||||
if data[item].has("toggle"):
|
if data[item].has("toggle"):
|
||||||
sprite.toggle = data[item]["toggle"]
|
sprite.toggle = data[item]["toggle"]
|
||||||
|
|
||||||
origin.add_child(sprite)
|
origin.add_child(sprite)
|
||||||
sprite.position = str_to_var(data[item]["pos"])
|
sprite.position = str_to_var(data[item]["pos"])
|
||||||
|
|
||||||
changeCostume(1)
|
changeCostume(1)
|
||||||
Saving.settings["lastAvatar"] = path
|
Saving.settings["lastAvatar"] = path
|
||||||
Global.spriteList.updateData()
|
Global.spriteList.updateData()
|
||||||
|
|
||||||
Global.pushUpdate("Loaded avatar at: " + path)
|
Global.pushUpdate("Loaded avatar at: " + path)
|
||||||
|
|
||||||
onWindowSizeChange()
|
onWindowSizeChange()
|
||||||
|
|
||||||
|
|
||||||
#SAVE AVATAR
|
#SAVE AVATAR
|
||||||
func _on_save_dialog_file_selected(path):
|
func _on_save_dialog_file_selected(path):
|
||||||
var data = {}
|
var data = {}
|
||||||
var nodes = get_tree().get_nodes_in_group("saved")
|
var nodes = get_tree().get_nodes_in_group("saved")
|
||||||
var id = 0
|
var id = 0
|
||||||
for child in nodes:
|
for child in nodes:
|
||||||
|
|
||||||
if child.type == "sprite":
|
if child.type == "sprite":
|
||||||
data[id] = {}
|
data[id] = {}
|
||||||
data[id]["type"] = "sprite"
|
data[id]["type"] = "sprite"
|
||||||
|
@ -382,52 +395,53 @@ func _on_save_dialog_file_selected(path):
|
||||||
data[id]["imageData"] = Marshalls.raw_to_base64(child.imageData.save_png_to_buffer())
|
data[id]["imageData"] = Marshalls.raw_to_base64(child.imageData.save_png_to_buffer())
|
||||||
data[id]["identification"] = child.id
|
data[id]["identification"] = child.id
|
||||||
data[id]["parentId"] = child.parentId
|
data[id]["parentId"] = child.parentId
|
||||||
|
|
||||||
data[id]["pos"] = var_to_str(child.position)
|
data[id]["pos"] = var_to_str(child.position)
|
||||||
data[id]["offset"] = var_to_str(child.offset)
|
data[id]["offset"] = var_to_str(child.offset)
|
||||||
data[id]["zindex"] = child.z
|
data[id]["zindex"] = child.z
|
||||||
|
|
||||||
data[id]["drag"] = child.dragSpeed
|
data[id]["drag"] = child.dragSpeed
|
||||||
|
|
||||||
data[id]["xFrq"] = child.xFrq
|
data[id]["xFrq"] = child.xFrq
|
||||||
data[id]["xAmp"] = child.xAmp
|
data[id]["xAmp"] = child.xAmp
|
||||||
data[id]["yFrq"] = child.yFrq
|
data[id]["yFrq"] = child.yFrq
|
||||||
data[id]["yAmp"] = child.yAmp
|
data[id]["yAmp"] = child.yAmp
|
||||||
|
|
||||||
data[id]["rotDrag"] = child.rdragStr
|
data[id]["rotDrag"] = child.rdragStr
|
||||||
|
|
||||||
data[id]["showTalk"] = child.showOnTalk
|
data[id]["showTalk"] = child.showOnTalk
|
||||||
data[id]["showBlink"] = child.showOnBlink
|
data[id]["showBlink"] = child.showOnBlink
|
||||||
|
|
||||||
data[id]["rLimitMin"] = child.rLimitMin
|
data[id]["rLimitMin"] = child.rLimitMin
|
||||||
data[id]["rLimitMax"] = child.rLimitMax
|
data[id]["rLimitMax"] = child.rLimitMax
|
||||||
|
|
||||||
data[id]["costumeLayers"] = var_to_str(child.costumeLayers)
|
data[id]["costumeLayers"] = var_to_str(child.costumeLayers)
|
||||||
|
|
||||||
data[id]["stretchAmount"] = child.stretchAmount
|
data[id]["stretchAmount"] = child.stretchAmount
|
||||||
|
|
||||||
data[id]["ignoreBounce"] = child.ignoreBounce
|
data[id]["ignoreBounce"] = child.ignoreBounce
|
||||||
|
|
||||||
data[id]["frames"] = child.frames
|
data[id]["frames"] = child.frames
|
||||||
data[id]["animSpeed"] = child.animSpeed
|
data[id]["animSpeed"] = child.animSpeed
|
||||||
|
|
||||||
data[id]["clipped"] = child.clipped
|
data[id]["clipped"] = child.clipped
|
||||||
|
|
||||||
data[id]["toggle"] = child.toggle
|
data[id]["toggle"] = child.toggle
|
||||||
|
|
||||||
id += 1
|
id += 1
|
||||||
|
|
||||||
Saving.settings["lastAvatar"] = path
|
Saving.settings["lastAvatar"] = path
|
||||||
|
|
||||||
Saving.data = data.duplicate()
|
Saving.data = data.duplicate()
|
||||||
Saving.write_save(path)
|
Saving.write_save(path)
|
||||||
|
|
||||||
Global.pushUpdate("Saved avatar at: " + path)
|
Global.pushUpdate("Saved avatar at: " + path)
|
||||||
|
|
||||||
|
|
||||||
func _on_link_button_pressed():
|
func _on_link_button_pressed():
|
||||||
Global.reparentMode = true
|
Global.reparentMode = true
|
||||||
Global.chain.enable(Global.reparentMode)
|
Global.chain.enable(Global.reparentMode)
|
||||||
|
|
||||||
Global.pushUpdate("Linking sprite...")
|
Global.pushUpdate("Linking sprite...")
|
||||||
|
|
||||||
|
|
||||||
|
@ -446,11 +460,13 @@ func _on_replace_button_pressed():
|
||||||
return
|
return
|
||||||
$ReplaceDialog.visible = true
|
$ReplaceDialog.visible = true
|
||||||
|
|
||||||
|
|
||||||
func _on_replace_dialog_file_selected(path):
|
func _on_replace_dialog_file_selected(path):
|
||||||
Global.heldSprite.replaceSprite(path)
|
Global.heldSprite.replaceSprite(path)
|
||||||
Global.spriteList.updateData()
|
Global.spriteList.updateData()
|
||||||
Global.pushUpdate("Replacing sprite with: " + path)
|
Global.pushUpdate("Replacing sprite with: " + path)
|
||||||
|
|
||||||
|
|
||||||
func _on_replace_dialog_visibility_changed():
|
func _on_replace_dialog_visibility_changed():
|
||||||
$EditControls/ScreenCover/CollisionShape2D.disabled = !$ReplaceDialog.visible
|
$EditControls/ScreenCover/CollisionShape2D.disabled = !$ReplaceDialog.visible
|
||||||
|
|
||||||
|
@ -460,62 +476,74 @@ func _on_duplicate_button_pressed():
|
||||||
return
|
return
|
||||||
var rand = RandomNumberGenerator.new()
|
var rand = RandomNumberGenerator.new()
|
||||||
var id = rand.randi()
|
var id = rand.randi()
|
||||||
|
|
||||||
var sprite = spriteObject.instantiate()
|
var sprite = spriteObject.instantiate()
|
||||||
sprite.path = Global.heldSprite.path
|
sprite.path = Global.heldSprite.path
|
||||||
sprite.id = id
|
sprite.id = id
|
||||||
sprite.parentId = Global.heldSprite.parentId
|
sprite.parentId = Global.heldSprite.parentId
|
||||||
|
|
||||||
sprite.dragSpeed = Global.heldSprite.dragSpeed
|
sprite.dragSpeed = Global.heldSprite.dragSpeed
|
||||||
sprite.showOnTalk = Global.heldSprite.showOnTalk
|
sprite.showOnTalk = Global.heldSprite.showOnTalk
|
||||||
sprite.showOnBlink = Global.heldSprite.showOnBlink
|
sprite.showOnBlink = Global.heldSprite.showOnBlink
|
||||||
sprite.z = Global.heldSprite.z
|
sprite.z = Global.heldSprite.z
|
||||||
|
|
||||||
sprite.xFrq = Global.heldSprite.xFrq
|
sprite.xFrq = Global.heldSprite.xFrq
|
||||||
sprite.xAmp = Global.heldSprite.xAmp
|
sprite.xAmp = Global.heldSprite.xAmp
|
||||||
sprite.yFrq = Global.heldSprite.yFrq
|
sprite.yFrq = Global.heldSprite.yFrq
|
||||||
sprite.yAmp = Global.heldSprite.yAmp
|
sprite.yAmp = Global.heldSprite.yAmp
|
||||||
|
|
||||||
sprite.rdragStr = Global.heldSprite.rdragStr
|
sprite.rdragStr = Global.heldSprite.rdragStr
|
||||||
|
|
||||||
sprite.offset = Global.heldSprite.offset
|
sprite.offset = Global.heldSprite.offset
|
||||||
|
|
||||||
sprite.rLimitMin = Global.heldSprite.rLimitMin
|
sprite.rLimitMin = Global.heldSprite.rLimitMin
|
||||||
sprite.rLimitMax = Global.heldSprite.rLimitMax
|
sprite.rLimitMax = Global.heldSprite.rLimitMax
|
||||||
|
|
||||||
sprite.frames = Global.heldSprite.frames
|
sprite.frames = Global.heldSprite.frames
|
||||||
sprite.animSpeed = Global.heldSprite.animSpeed
|
sprite.animSpeed = Global.heldSprite.animSpeed
|
||||||
|
|
||||||
sprite.costumeLayers = Global.heldSprite.costumeLayers
|
sprite.costumeLayers = Global.heldSprite.costumeLayers
|
||||||
|
|
||||||
origin.add_child(sprite)
|
origin.add_child(sprite)
|
||||||
sprite.position = Global.heldSprite.position + Vector2(16,16)
|
sprite.position = Global.heldSprite.position + Vector2(16, 16)
|
||||||
|
|
||||||
Global.heldSprite = sprite
|
Global.heldSprite = sprite
|
||||||
|
|
||||||
Global.spriteList.updateData()
|
Global.spriteList.updateData()
|
||||||
|
|
||||||
Global.pushUpdate("Duplicated sprite.")
|
Global.pushUpdate("Duplicated sprite.")
|
||||||
|
|
||||||
|
|
||||||
func changeCostumeStreamDeck(id: String):
|
func changeCostumeStreamDeck(id: String):
|
||||||
match id:
|
match id:
|
||||||
"1":changeCostume(1)
|
"1":
|
||||||
"2":changeCostume(2)
|
changeCostume(1)
|
||||||
"3":changeCostume(3)
|
"2":
|
||||||
"4":changeCostume(4)
|
changeCostume(2)
|
||||||
"5":changeCostume(5)
|
"3":
|
||||||
"6":changeCostume(6)
|
changeCostume(3)
|
||||||
"7":changeCostume(7)
|
"4":
|
||||||
"8":changeCostume(8)
|
changeCostume(4)
|
||||||
"9":changeCostume(9)
|
"5":
|
||||||
"10":changeCostume(10)
|
changeCostume(5)
|
||||||
|
"6":
|
||||||
|
changeCostume(6)
|
||||||
|
"7":
|
||||||
|
changeCostume(7)
|
||||||
|
"8":
|
||||||
|
changeCostume(8)
|
||||||
|
"9":
|
||||||
|
changeCostume(9)
|
||||||
|
"10":
|
||||||
|
changeCostume(10)
|
||||||
|
|
||||||
|
|
||||||
func changeCostume(newCostume):
|
func changeCostume(newCostume):
|
||||||
costume = newCostume
|
costume = newCostume
|
||||||
Global.heldSprite = null
|
Global.heldSprite = null
|
||||||
var nodes = get_tree().get_nodes_in_group("saved")
|
var nodes = get_tree().get_nodes_in_group("saved")
|
||||||
for sprite in nodes:
|
for sprite in nodes:
|
||||||
if sprite.costumeLayers[newCostume-1] == 1:
|
if sprite.costumeLayers[newCostume - 1] == 1:
|
||||||
sprite.visible = true
|
sprite.visible = true
|
||||||
sprite.changeCollision(true)
|
sprite.changeCollision(true)
|
||||||
else:
|
else:
|
||||||
|
@ -523,57 +551,55 @@ func changeCostume(newCostume):
|
||||||
sprite.changeCollision(false)
|
sprite.changeCollision(false)
|
||||||
Global.spriteEdit.layerSelected()
|
Global.spriteEdit.layerSelected()
|
||||||
spriteList.updateAllVisible()
|
spriteList.updateAllVisible()
|
||||||
|
|
||||||
if bounceOnCostumeChange:
|
if bounceOnCostumeChange:
|
||||||
onSpeak()
|
onSpeak()
|
||||||
|
|
||||||
Global.pushUpdate("Change costume: " + str(newCostume))
|
Global.pushUpdate("Change costume: " + str(newCostume))
|
||||||
|
|
||||||
|
|
||||||
func moveSpriteMenu(delta):
|
func moveSpriteMenu(delta):
|
||||||
|
|
||||||
#moves sprite viewer editor thing around
|
#moves sprite viewer editor thing around
|
||||||
|
|
||||||
var size = get_viewport().get_visible_rect().size
|
var size = get_viewport().get_visible_rect().size
|
||||||
|
|
||||||
var windowLength = 1250 #1187
|
var windowLength = 1250 #1187
|
||||||
|
|
||||||
$ViewerArrows/Arrows.position.y = size.y - 25
|
$ViewerArrows/Arrows.position.y = size.y - 25
|
||||||
|
|
||||||
if !Global.spriteEdit.visible:
|
if !Global.spriteEdit.visible:
|
||||||
$ViewerArrows/Arrows.visible = false
|
$ViewerArrows/Arrows.visible = false
|
||||||
$ViewerArrows/Arrows2.visible = false
|
$ViewerArrows/Arrows2.visible = false
|
||||||
return
|
return
|
||||||
|
|
||||||
if size.y > windowLength+50:
|
if size.y > windowLength + 50:
|
||||||
Global.spriteEdit.position.y = 66
|
Global.spriteEdit.position.y = 66
|
||||||
|
|
||||||
$ViewerArrows/Arrows.visible = false
|
$ViewerArrows/Arrows.visible = false
|
||||||
$ViewerArrows/Arrows2.visible = false
|
$ViewerArrows/Arrows2.visible = false
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if Global.spriteEdit.position.y < 16:
|
if Global.spriteEdit.position.y < 16:
|
||||||
$ViewerArrows/Arrows2.visible = true
|
$ViewerArrows/Arrows2.visible = true
|
||||||
else:
|
else:
|
||||||
$ViewerArrows/Arrows2.visible = false
|
$ViewerArrows/Arrows2.visible = false
|
||||||
if Global.spriteEdit.position.y > size.y-windowLength+2:
|
if Global.spriteEdit.position.y > size.y - windowLength + 2:
|
||||||
$ViewerArrows/Arrows.visible = true
|
$ViewerArrows/Arrows.visible = true
|
||||||
else:
|
else:
|
||||||
$ViewerArrows/Arrows.visible = false
|
$ViewerArrows/Arrows.visible = false
|
||||||
|
|
||||||
|
|
||||||
if $EditControls/MoveMenuUp.overlaps_area(Global.mouse.area):
|
if $EditControls/MoveMenuUp.overlaps_area(Global.mouse.area):
|
||||||
Global.spriteEdit.position.y += (delta*432.0)
|
Global.spriteEdit.position.y += (delta * 432.0)
|
||||||
elif $EditControls/MoveMenuDown.overlaps_area(Global.mouse.area):
|
elif $EditControls/MoveMenuDown.overlaps_area(Global.mouse.area):
|
||||||
Global.spriteEdit.position.y -= (delta*432.0)
|
Global.spriteEdit.position.y -= (delta * 432.0)
|
||||||
|
|
||||||
if Global.spriteEdit.position.y > 66:
|
if Global.spriteEdit.position.y > 66:
|
||||||
Global.spriteEdit.position.y = 66
|
Global.spriteEdit.position.y = 66
|
||||||
elif Global.spriteEdit.position.y < size.y-windowLength:
|
elif Global.spriteEdit.position.y < size.y - windowLength:
|
||||||
Global.spriteEdit.position.y = size.y-windowLength
|
Global.spriteEdit.position.y = size.y - windowLength
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#UNAMED BUT THIS IS THE MICROPHONE MENU BUTTON
|
#UNAMED BUT THIS IS THE MICROPHONE MENU BUTTON
|
||||||
func _on_button_pressed():
|
func _on_button_pressed():
|
||||||
$ControlPanel/MicInputSelect.visible = !$ControlPanel/MicInputSelect.visible
|
$ControlPanel/MicInputSelect.visible = !$ControlPanel/MicInputSelect.visible
|
||||||
|
@ -585,50 +611,72 @@ func _on_settings_buttons_pressed():
|
||||||
|
|
||||||
|
|
||||||
func _on_background_input_capture_bg_key_pressed(node, keys_pressed):
|
func _on_background_input_capture_bg_key_pressed(node, keys_pressed):
|
||||||
|
print("background key pressed")
|
||||||
var keyStrings = []
|
var keyStrings = []
|
||||||
|
|
||||||
for i in keys_pressed:
|
for i in keys_pressed:
|
||||||
if keys_pressed[i]:
|
if keys_pressed[i]:
|
||||||
keyStrings.append(OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i))
|
keyStrings.append(
|
||||||
|
(
|
||||||
|
OS.get_keycode_string(i)
|
||||||
|
if !OS.get_keycode_string(i).strip_edges().is_empty()
|
||||||
|
else "Keycode" + str(i)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if fileSystemOpen:
|
if fileSystemOpen:
|
||||||
return
|
return
|
||||||
|
|
||||||
if keyStrings.size() <= 0:
|
if keyStrings.size() <= 0:
|
||||||
emit_signal("emptiedCapture")
|
emit_signal("emptiedCapture")
|
||||||
return
|
return
|
||||||
|
|
||||||
if settingsMenu.awaitingCostumeInput >= 0:
|
if settingsMenu.awaitingCostumeInput >= 0:
|
||||||
|
|
||||||
if keyStrings[0] == "Keycode1":
|
if keyStrings[0] == "Keycode1":
|
||||||
if !settingsMenu.hasMouse:
|
if !settingsMenu.hasMouse:
|
||||||
emit_signal("pressedKey")
|
emit_signal("pressedKey")
|
||||||
return
|
return
|
||||||
|
|
||||||
var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
|
var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
|
||||||
costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
|
costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
|
||||||
Saving.settings["costumeKeys"] = costumeKeys
|
Saving.settings["costumeKeys"] = costumeKeys
|
||||||
Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"")
|
Global.pushUpdate(
|
||||||
|
(
|
||||||
|
"Changed costume "
|
||||||
|
+ str(settingsMenu.awaitingCostumeInput + 1)
|
||||||
|
+ ' hotkey from "'
|
||||||
|
+ currentButton
|
||||||
|
+ '" to "'
|
||||||
|
+ keyStrings[0]
|
||||||
|
+ '"'
|
||||||
|
)
|
||||||
|
)
|
||||||
emit_signal("pressedKey")
|
emit_signal("pressedKey")
|
||||||
|
|
||||||
for key in keyStrings:
|
for key in keyStrings:
|
||||||
var i = costumeKeys.find(key)
|
var i = costumeKeys.find(key)
|
||||||
if i >= 0:
|
if i >= 0:
|
||||||
changeCostume(i+1)
|
changeCostume(i + 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func bgInputSprite(node, keys_pressed):
|
func bgInputSprite(node, keys_pressed):
|
||||||
|
print("bgInputSprite")
|
||||||
if fileSystemOpen:
|
if fileSystemOpen:
|
||||||
return
|
return
|
||||||
var keyStrings = []
|
var keyStrings = []
|
||||||
|
|
||||||
for i in keys_pressed:
|
for i in keys_pressed:
|
||||||
if keys_pressed[i]:
|
if keys_pressed[i]:
|
||||||
keyStrings.append(OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i))
|
keyStrings.append(
|
||||||
|
(
|
||||||
|
OS.get_keycode_string(i)
|
||||||
|
if !OS.get_keycode_string(i).strip_edges().is_empty()
|
||||||
|
else "Keycode" + str(i)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if keyStrings.size() <= 0:
|
if keyStrings.size() <= 0:
|
||||||
emit_signal("fatfuckingballs")
|
emit_signal("fatfuckingballs")
|
||||||
return
|
return
|
||||||
|
|
||||||
spriteVisToggles.emit(keyStrings)
|
spriteVisToggles.emit(keyStrings)
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -32,7 +32,7 @@ var imageSize = Vector2.ZERO
|
||||||
#Visuals
|
#Visuals
|
||||||
var mouseOffset = Vector2.ZERO
|
var mouseOffset = Vector2.ZERO
|
||||||
var grabDelay = 0
|
var grabDelay = 0
|
||||||
var size = Vector2(1,1)
|
var size = Vector2(1, 1)
|
||||||
|
|
||||||
var showOnTalk = 0
|
var showOnTalk = 0
|
||||||
var showOnBlink = 0
|
var showOnBlink = 0
|
||||||
|
@ -43,12 +43,13 @@ var z = 0
|
||||||
var heldTicks = 0
|
var heldTicks = 0
|
||||||
var dragSpeed = 0
|
var dragSpeed = 0
|
||||||
|
|
||||||
|
|
||||||
#Origin
|
#Origin
|
||||||
var origTick = 0
|
var origTick = 0
|
||||||
var offset = Vector2.ZERO
|
var offset = Vector2.ZERO
|
||||||
|
|
||||||
#Wobble
|
#Wobble
|
||||||
|
var use_midi_wobble = true # TODO: Add to settings
|
||||||
|
|
||||||
var xFrq = 0.0
|
var xFrq = 0.0
|
||||||
var xAmp = 0.0
|
var xAmp = 0.0
|
||||||
|
|
||||||
|
@ -61,7 +62,7 @@ var rLimitMax = 180
|
||||||
var rLimitMin = -180
|
var rLimitMin = -180
|
||||||
|
|
||||||
#Layer
|
#Layer
|
||||||
var costumeLayers = [1,1,1,1,1,1,1,1,1,1]
|
var costumeLayers = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||||
|
|
||||||
#Stretch
|
#Stretch
|
||||||
var stretchAmount = 0.0
|
var stretchAmount = 0.0
|
||||||
|
@ -82,10 +83,10 @@ var tick = 0
|
||||||
#Vis toggle
|
#Vis toggle
|
||||||
var toggle = "null"
|
var toggle = "null"
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
|
||||||
Global.main.spriteVisToggles.connect(visToggle)
|
Global.main.spriteVisToggles.connect(visToggle)
|
||||||
|
|
||||||
var img = Image.new()
|
var img = Image.new()
|
||||||
var err = img.load(path)
|
var err = img.load(path)
|
||||||
if err != OK:
|
if err != OK:
|
||||||
|
@ -103,22 +104,21 @@ func _ready():
|
||||||
print_debug("Failed to load image.")
|
print_debug("Failed to load image.")
|
||||||
queue_free()
|
queue_free()
|
||||||
return
|
return
|
||||||
|
|
||||||
var texture = ImageTexture.new()
|
var texture = ImageTexture.new()
|
||||||
texture = ImageTexture.create_from_image(img)
|
texture = ImageTexture.create_from_image(img)
|
||||||
|
|
||||||
|
|
||||||
tex = texture
|
tex = texture
|
||||||
imageData = img
|
imageData = img
|
||||||
|
|
||||||
imageSize = img.get_size()
|
imageSize = img.get_size()
|
||||||
|
|
||||||
sprite.texture = tex
|
sprite.texture = tex
|
||||||
|
|
||||||
var bitmap = BitMap.new()
|
var bitmap = BitMap.new()
|
||||||
bitmap.create_from_image_alpha(imageData)
|
bitmap.create_from_image_alpha(imageData)
|
||||||
|
|
||||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()),4.0) #bitmap.get_size()
|
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()), 4.0) #bitmap.get_size()
|
||||||
|
|
||||||
var b = false
|
var b = false
|
||||||
for polygon in polygons:
|
for polygon in polygons:
|
||||||
|
@ -126,28 +126,27 @@ func _ready():
|
||||||
var collider = CollisionPolygon2D.new()
|
var collider = CollisionPolygon2D.new()
|
||||||
collider.polygon = polygon
|
collider.polygon = polygon
|
||||||
grabArea.add_child(collider)
|
grabArea.add_child(collider)
|
||||||
|
|
||||||
var outline = outlineScene.instantiate()
|
var outline = outlineScene.instantiate()
|
||||||
outline.points = polygon
|
outline.points = polygon
|
||||||
outline.add_point(outline.points[0])
|
outline.add_point(outline.points[0])
|
||||||
grabArea.add_child(outline)
|
grabArea.add_child(outline)
|
||||||
|
|
||||||
size = imageData.get_size()
|
size = imageData.get_size()
|
||||||
grabArea.position = size*-0.5
|
grabArea.position = size * -0.5
|
||||||
|
|
||||||
sprite.offset = offset
|
sprite.offset = offset
|
||||||
|
|
||||||
grabArea.position = (size*-0.5) + offset
|
grabArea.position = (size * -0.5) + offset
|
||||||
|
|
||||||
changeFrames()
|
changeFrames()
|
||||||
setZIndex()
|
setZIndex()
|
||||||
|
|
||||||
if frames > 1:
|
if frames > 1:
|
||||||
remakePolygon()
|
remakePolygon()
|
||||||
if !b:
|
if !b:
|
||||||
remakePolygon()
|
remakePolygon()
|
||||||
|
|
||||||
|
|
||||||
add_to_group(str(id))
|
add_to_group(str(id))
|
||||||
await get_tree().create_timer(0.1).timeout
|
await get_tree().create_timer(0.1).timeout
|
||||||
if parentId != null:
|
if parentId != null:
|
||||||
|
@ -156,49 +155,58 @@ func _ready():
|
||||||
nodes[0].sprite.add_child(self)
|
nodes[0].sprite.add_child(self)
|
||||||
parentSprite = nodes[0]
|
parentSprite = nodes[0]
|
||||||
set_owner(nodes[0].sprite)
|
set_owner(nodes[0].sprite)
|
||||||
|
|
||||||
setClip(clipped)
|
setClip(clipped)
|
||||||
|
|
||||||
|
|
||||||
if Global.filtering:
|
if Global.filtering:
|
||||||
sprite.texture_filter = 2
|
sprite.texture_filter = 2
|
||||||
|
|
||||||
|
|
||||||
|
func _input(event):
|
||||||
|
if use_midi_wobble and event is InputEventMIDI:
|
||||||
|
match event.message:
|
||||||
|
MIDIMessage.MIDI_MESSAGE_START:
|
||||||
|
tick = 0
|
||||||
|
MIDIMessage.MIDI_MESSAGE_STOP:
|
||||||
|
tick = 0
|
||||||
|
MIDIMessage.MIDI_MESSAGE_TIMING_CLOCK:
|
||||||
|
tick += 1
|
||||||
|
|
||||||
|
|
||||||
func replaceSprite(pathNew):
|
func replaceSprite(pathNew):
|
||||||
var img = Image.new()
|
var img = Image.new()
|
||||||
var err = img.load(pathNew)
|
var err = img.load(pathNew)
|
||||||
if err != OK:
|
if err != OK:
|
||||||
#Runs if image import fails.
|
#Runs if image import fails.
|
||||||
Global.epicFail(err)
|
Global.epicFail(err)
|
||||||
print_debug("Failed to load image.")
|
print_debug("Failed to load image.")
|
||||||
return
|
return
|
||||||
|
|
||||||
path = pathNew
|
path = pathNew
|
||||||
|
|
||||||
var texture = ImageTexture.new()
|
var texture = ImageTexture.new()
|
||||||
texture = ImageTexture.create_from_image(img)
|
texture = ImageTexture.create_from_image(img)
|
||||||
|
|
||||||
|
|
||||||
tex = texture
|
tex = texture
|
||||||
imageData = img
|
imageData = img
|
||||||
|
|
||||||
|
|
||||||
sprite.texture = tex
|
sprite.texture = tex
|
||||||
|
|
||||||
var bitmap = BitMap.new()
|
var bitmap = BitMap.new()
|
||||||
bitmap.create_from_image_alpha(imageData)
|
bitmap.create_from_image_alpha(imageData)
|
||||||
|
|
||||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()))
|
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(0, 0), bitmap.get_size()))
|
||||||
|
|
||||||
for i in grabArea.get_children():
|
for i in grabArea.get_children():
|
||||||
i.queue_free()
|
i.queue_free()
|
||||||
|
|
||||||
var b = false
|
var b = false
|
||||||
for polygon in polygons:
|
for polygon in polygons:
|
||||||
b = true
|
b = true
|
||||||
var collider = CollisionPolygon2D.new()
|
var collider = CollisionPolygon2D.new()
|
||||||
collider.polygon = polygon
|
collider.polygon = polygon
|
||||||
grabArea.add_child(collider)
|
grabArea.add_child(collider)
|
||||||
|
|
||||||
var outline = outlineScene.instantiate()
|
var outline = outlineScene.instantiate()
|
||||||
outline.points = polygon
|
outline.points = polygon
|
||||||
outline.add_point(outline.points[0])
|
outline.add_point(outline.points[0])
|
||||||
|
@ -206,47 +214,49 @@ func replaceSprite(pathNew):
|
||||||
size = imageData.get_size()
|
size = imageData.get_size()
|
||||||
|
|
||||||
sprite.offset = offset
|
sprite.offset = offset
|
||||||
|
|
||||||
grabArea.position = (size*-0.5) + offset
|
grabArea.position = (size * -0.5) + offset
|
||||||
|
|
||||||
if !b:
|
if !b:
|
||||||
remakePolygon()
|
remakePolygon()
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
tick += 1
|
if not use_midi_wobble:
|
||||||
|
tick += 1
|
||||||
|
|
||||||
if Global.heldSprite == self:
|
if Global.heldSprite == self:
|
||||||
|
|
||||||
grabArea.visible = true
|
grabArea.visible = true
|
||||||
originSprite.visible = true
|
originSprite.visible = true
|
||||||
|
|
||||||
else:
|
else:
|
||||||
grabArea.visible = false
|
grabArea.visible = false
|
||||||
originSprite.visible = false
|
originSprite.visible = false
|
||||||
|
|
||||||
var glob = dragger.global_position
|
var glob = dragger.global_position
|
||||||
if ignoreBounce:
|
if ignoreBounce:
|
||||||
glob.y -= Global.main.bounceChange
|
glob.y -= Global.main.bounceChange
|
||||||
|
|
||||||
drag(delta)
|
drag(delta)
|
||||||
wobble()
|
wobble()
|
||||||
|
|
||||||
var length = (glob.y - dragger.global_position.y)
|
var length = glob.y - dragger.global_position.y
|
||||||
|
|
||||||
rotationalDrag(length,delta)
|
rotationalDrag(length, delta)
|
||||||
stretch(length,delta)
|
stretch(length, delta)
|
||||||
|
|
||||||
if grabDelay > 0:
|
if grabDelay > 0:
|
||||||
grabDelay -= 1
|
grabDelay -= 1
|
||||||
|
|
||||||
talkBlink()
|
talkBlink()
|
||||||
|
|
||||||
animation()
|
animation()
|
||||||
|
|
||||||
|
|
||||||
func animation():
|
func animation():
|
||||||
|
var speed = max(float(animSpeed), Engine.max_fps * 6.0)
|
||||||
var speed = max(float(animSpeed),Engine.max_fps*6.0)
|
|
||||||
if animSpeed > 0 and frames > 1:
|
if animSpeed > 0 and frames > 1:
|
||||||
if Global.animationTick % int((speed)/float(animSpeed)) == 0:
|
if Global.animationTick % int((speed) / float(animSpeed)) == 0:
|
||||||
if sprite.frame == frames - 1:
|
if sprite.frame == frames - 1:
|
||||||
sprite.frame = 0
|
sprite.frame = 0
|
||||||
else:
|
else:
|
||||||
|
@ -254,18 +264,24 @@ func animation():
|
||||||
if frames > 1:
|
if frames > 1:
|
||||||
remakePolygon()
|
remakePolygon()
|
||||||
|
|
||||||
|
|
||||||
func setZIndex():
|
func setZIndex():
|
||||||
sprite.z_index = z
|
sprite.z_index = z
|
||||||
|
|
||||||
|
|
||||||
func talkBlink():
|
func talkBlink():
|
||||||
var faded = 0.2 * int(Global.main.editMode)
|
var faded = 0.2 * int(Global.main.editMode)
|
||||||
var value = (showOnTalk + (showOnBlink*3)) + (int(Global.speaking)*10) + (int(Global.blink)*20)
|
var value = (
|
||||||
var yes = [0,10,20,30,1,21,12,32,3,13,4,15,26,36,27,38].has(int(value))
|
(showOnTalk + (showOnBlink * 3)) + (int(Global.speaking) * 10) + (int(Global.blink) * 20)
|
||||||
sprite.self_modulate.a = max(int(yes),faded)
|
)
|
||||||
|
var yes = [0, 10, 20, 30, 1, 21, 12, 32, 3, 13, 4, 15, 26, 36, 27, 38].has(int(value))
|
||||||
|
sprite.self_modulate.a = max(int(yes), faded)
|
||||||
|
|
||||||
|
|
||||||
func delete():
|
func delete():
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if Global.heldSprite == self:
|
if Global.heldSprite == self:
|
||||||
var dir = pressingDirection()
|
var dir = pressingDirection()
|
||||||
|
@ -276,33 +292,36 @@ func _physics_process(delta):
|
||||||
else:
|
else:
|
||||||
set_physics_process(false)
|
set_physics_process(false)
|
||||||
|
|
||||||
|
|
||||||
func pressingDirection():
|
func pressingDirection():
|
||||||
var dir = Vector2.ZERO
|
var dir = Vector2.ZERO
|
||||||
|
|
||||||
dir.x = Input.get_action_strength("move_left") - Input.get_action_strength("move_right")
|
dir.x = Input.get_action_strength("move_left") - Input.get_action_strength("move_right")
|
||||||
dir.y = Input.get_action_strength("move_up") - Input.get_action_strength("move_down")
|
dir.y = Input.get_action_strength("move_up") - Input.get_action_strength("move_down")
|
||||||
return dir
|
return dir
|
||||||
|
|
||||||
|
|
||||||
func moveSprite(dir):
|
func moveSprite(dir):
|
||||||
if dir != Vector2.ZERO:
|
if dir != Vector2.ZERO:
|
||||||
heldTicks += 1
|
heldTicks += 1
|
||||||
else:
|
else:
|
||||||
heldTicks = 0
|
heldTicks = 0
|
||||||
|
|
||||||
if heldTicks > 30 or heldTicks == 1:
|
if heldTicks > 30 or heldTicks == 1:
|
||||||
var multiplier = 2
|
var multiplier = 2
|
||||||
if heldTicks == 1:
|
if heldTicks == 1:
|
||||||
multiplier = 1
|
multiplier = 1
|
||||||
position -= dir * multiplier
|
position -= dir * multiplier
|
||||||
|
|
||||||
position = Vector2(int(position.x),int(position.y))
|
position = Vector2(int(position.x), int(position.y))
|
||||||
|
|
||||||
|
|
||||||
func moveOrigin(dir):
|
func moveOrigin(dir):
|
||||||
if dir != Vector2.ZERO:
|
if dir != Vector2.ZERO:
|
||||||
origTick += 1
|
origTick += 1
|
||||||
else:
|
else:
|
||||||
origTick = 0
|
origTick = 0
|
||||||
|
|
||||||
if origTick > 30 or origTick == 1:
|
if origTick > 30 or origTick == 1:
|
||||||
var multiplier = 2
|
var multiplier = 2
|
||||||
if origTick == 1:
|
if origTick == 1:
|
||||||
|
@ -310,46 +329,68 @@ func moveOrigin(dir):
|
||||||
|
|
||||||
offset += dir * multiplier
|
offset += dir * multiplier
|
||||||
position -= dir * multiplier
|
position -= dir * multiplier
|
||||||
|
|
||||||
offset = Vector2(int(offset.x),int(offset.y))
|
offset = Vector2(int(offset.x), int(offset.y))
|
||||||
|
|
||||||
sprite.offset = offset
|
sprite.offset = offset
|
||||||
grabArea.position = (size*-0.5) + offset
|
grabArea.position = (size * -0.5) + offset
|
||||||
|
|
||||||
|
|
||||||
func drag(delta):
|
func drag(delta):
|
||||||
if dragSpeed == 0:
|
if dragSpeed == 0:
|
||||||
dragger.global_position = wob.global_position
|
dragger.global_position = wob.global_position
|
||||||
else:
|
else:
|
||||||
dragger.global_position = lerp(dragger.global_position,wob.global_position,1/dragSpeed)
|
dragger.global_position = lerp(dragger.global_position, wob.global_position, 1 / dragSpeed)
|
||||||
dragOrigin.global_position = dragger.global_position
|
dragOrigin.global_position = dragger.global_position
|
||||||
|
|
||||||
|
|
||||||
func wobble():
|
func wobble():
|
||||||
wob.position.x = sin(tick*xFrq)*xAmp
|
if use_midi_wobble:
|
||||||
wob.position.y = sin(tick*yFrq)*yAmp
|
midi_wobble()
|
||||||
|
else:
|
||||||
|
free_wobble()
|
||||||
|
|
||||||
|
|
||||||
|
func free_wobble():
|
||||||
|
wob.position.x = sin(tick * xFrq) * xAmp
|
||||||
|
wob.position.y = sin(tick * yFrq) * yAmp
|
||||||
|
|
||||||
|
|
||||||
|
func midi_wobble():
|
||||||
|
var ppqn = 24
|
||||||
|
var progress = float(tick) / ppqn
|
||||||
|
var rads = progress * 2 * PI
|
||||||
|
wob.position.x = cos(rads * xFrq * 10) * xAmp
|
||||||
|
wob.position.y = cos(rads * yFrq * 10) * yAmp
|
||||||
|
|
||||||
|
|
||||||
|
func rotationalDrag(length, delta):
|
||||||
|
var yvel = length * rdragStr
|
||||||
|
|
||||||
func rotationalDrag(length,delta):
|
|
||||||
var yvel = (length * rdragStr)
|
|
||||||
|
|
||||||
#Calculate Max angle
|
#Calculate Max angle
|
||||||
|
|
||||||
yvel = clamp(yvel,rLimitMin,rLimitMax)
|
|
||||||
|
|
||||||
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
|
|
||||||
|
|
||||||
func stretch(length,delta):
|
yvel = clamp(yvel, rLimitMin, rLimitMax)
|
||||||
var yvel = (length * stretchAmount * 0.01)
|
|
||||||
var target = Vector2(1.0-yvel,1.0+yvel)
|
sprite.rotation = lerp_angle(sprite.rotation, deg_to_rad(yvel), 0.25)
|
||||||
|
|
||||||
sprite.scale = lerp(sprite.scale,target,0.5)
|
|
||||||
|
func stretch(length, delta):
|
||||||
|
var yvel = length * stretchAmount * 0.01
|
||||||
|
var target = Vector2(1.0 - yvel, 1.0 + yvel)
|
||||||
|
|
||||||
|
sprite.scale = lerp(sprite.scale, target, 0.5)
|
||||||
|
|
||||||
|
|
||||||
func changeCollision(enable):
|
func changeCollision(enable):
|
||||||
grabArea.monitorable = enable
|
grabArea.monitorable = enable
|
||||||
grabArea.monitorable = enable
|
grabArea.monitorable = enable
|
||||||
|
|
||||||
|
|
||||||
func changeFrames():
|
func changeFrames():
|
||||||
sprite.hframes = frames
|
sprite.hframes = frames
|
||||||
sprite.frame = 0
|
sprite.frame = 0
|
||||||
|
|
||||||
|
|
||||||
func remakePolygon():
|
func remakePolygon():
|
||||||
if remadePolygon:
|
if remadePolygon:
|
||||||
return
|
return
|
||||||
|
@ -357,35 +398,37 @@ func remakePolygon():
|
||||||
c.queue_free()
|
c.queue_free()
|
||||||
var collider = CollisionShape2D.new()
|
var collider = CollisionShape2D.new()
|
||||||
var shape = RectangleShape2D.new()
|
var shape = RectangleShape2D.new()
|
||||||
shape.size = Vector2(imageSize.y,imageSize.y)
|
shape.size = Vector2(imageSize.y, imageSize.y)
|
||||||
collider.shape = shape
|
collider.shape = shape
|
||||||
collider.position = Vector2(imageSize.x,imageSize.y) * Vector2(0.5,0.5)
|
collider.position = Vector2(imageSize.x, imageSize.y) * Vector2(0.5, 0.5)
|
||||||
grabArea.add_child(collider)
|
grabArea.add_child(collider)
|
||||||
|
|
||||||
var p = imageSize.y * 0.5
|
var p = imageSize.y * 0.5
|
||||||
var outline = outlineScene.instantiate()
|
var outline = outlineScene.instantiate()
|
||||||
outline.add_point(Vector2(-p,-p))
|
outline.add_point(Vector2(-p, -p))
|
||||||
outline.add_point(Vector2(p,-p))
|
outline.add_point(Vector2(p, -p))
|
||||||
outline.add_point(Vector2(p,p))
|
outline.add_point(Vector2(p, p))
|
||||||
outline.add_point(Vector2(-p,p))
|
outline.add_point(Vector2(-p, p))
|
||||||
outline.add_point(Vector2(-p,-p))
|
outline.add_point(Vector2(-p, -p))
|
||||||
outline.position = collider.position
|
outline.position = collider.position
|
||||||
grabArea.add_child(outline)
|
grabArea.add_child(outline)
|
||||||
|
|
||||||
remadePolygon = true
|
remadePolygon = true
|
||||||
|
|
||||||
func setClip(toggle):
|
|
||||||
if toggle:
|
func setClip(should_clip):
|
||||||
|
if should_clip:
|
||||||
sprite.clip_children = CLIP_CHILDREN_AND_DRAW
|
sprite.clip_children = CLIP_CHILDREN_AND_DRAW
|
||||||
|
|
||||||
for node in getAllLinkedSprites():
|
for node in getAllLinkedSprites():
|
||||||
node.z = z
|
node.z = z
|
||||||
node.setZIndex()
|
node.setZIndex()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
sprite.clip_children = CLIP_CHILDREN_DISABLED
|
sprite.clip_children = CLIP_CHILDREN_DISABLED
|
||||||
|
|
||||||
clipped = toggle
|
clipped = should_clip
|
||||||
|
|
||||||
|
|
||||||
func getAllLinkedSprites():
|
func getAllLinkedSprites():
|
||||||
var nodes = get_tree().get_nodes_in_group("saved")
|
var nodes = get_tree().get_nodes_in_group("saved")
|
||||||
|
@ -395,9 +438,11 @@ func getAllLinkedSprites():
|
||||||
linkedSprites.append(node)
|
linkedSprites.append(node)
|
||||||
return linkedSprites
|
return linkedSprites
|
||||||
|
|
||||||
|
|
||||||
func visToggle(keys):
|
func visToggle(keys):
|
||||||
if keys.has(toggle):
|
if keys.has(toggle):
|
||||||
$WobbleOrigin/DragOrigin.visible = !$WobbleOrigin/DragOrigin.visible
|
$WobbleOrigin/DragOrigin.visible = !$WobbleOrigin/DragOrigin.visible
|
||||||
|
|
||||||
|
|
||||||
func makeVis():
|
func makeVis():
|
||||||
$WobbleOrigin/DragOrigin.visible = true
|
$WobbleOrigin/DragOrigin.visible = true
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue