I give up
This commit is contained in:
parent
0490edb8ec
commit
407a59d3eb
6 changed files with 46 additions and 135 deletions
|
@ -1,39 +1,21 @@
|
|||
extends Node2D
|
||||
class_name SpriteObject
|
||||
|
||||
var type = "sprite"
|
||||
@onready var sprite = $WobbleOrigin/DragOrigin/Sprite
|
||||
@onready var grabArea = $WobbleOrigin/DragOrigin/Grab
|
||||
@onready var dragOrigin = $WobbleOrigin/DragOrigin
|
||||
@onready var dragger = $WobbleOrigin/Dragger
|
||||
@onready var originSprite = $WobbleOrigin/DragOrigin/Sprite/Origin
|
||||
@onready var wob = $WobbleOrigin
|
||||
@onready var outlineScene = preload("res://ui_scenes/selectedSprite/outline.tscn")
|
||||
|
||||
#Passed Variables
|
||||
var imageData = null
|
||||
var tex = null
|
||||
@export var path = ""
|
||||
|
||||
var loadedImageData = null
|
||||
|
||||
var id = 0
|
||||
var parentId = null
|
||||
var sprite_data: SpriteData
|
||||
var parentSprite = null
|
||||
|
||||
var imageSize = Vector2.ZERO
|
||||
|
||||
#Node Reference
|
||||
@onready var sprite = $WobbleOrigin/DragOrigin/Sprite
|
||||
|
||||
@onready var grabArea = $WobbleOrigin/DragOrigin/Grab
|
||||
|
||||
@onready var dragOrigin = $WobbleOrigin/DragOrigin
|
||||
@onready var dragger = $WobbleOrigin/Dragger
|
||||
|
||||
@onready var originSprite = $WobbleOrigin/DragOrigin/Sprite/Origin
|
||||
|
||||
@onready var wob = $WobbleOrigin
|
||||
|
||||
@onready var outlineScene = preload("res://ui_scenes/selectedSprite/outline.tscn")
|
||||
|
||||
#Visuals
|
||||
var mouseOffset = Vector2.ZERO
|
||||
var grabDelay = 0
|
||||
var size = Vector2(1,1)
|
||||
var size = Vector2(1, 1)
|
||||
|
||||
var showOnTalk = 0
|
||||
var showOnBlink = 0
|
||||
|
@ -44,40 +26,11 @@ var z = 0
|
|||
var heldTicks = 0
|
||||
var dragSpeed = 0
|
||||
|
||||
|
||||
#Origin
|
||||
var origTick = 0
|
||||
var offset = Vector2.ZERO
|
||||
|
||||
#Wobble
|
||||
var xFrq = 0.0
|
||||
var xAmp = 0.0
|
||||
|
||||
var yFrq = 0.0
|
||||
var yAmp = 0.0
|
||||
|
||||
#Rotational Drag
|
||||
var rdragStr = 0
|
||||
var rLimitMax = 180
|
||||
var rLimitMin = -180
|
||||
|
||||
#Layer
|
||||
var costumeLayers = [1,1,1,1,1,1,1,1,1,1]
|
||||
|
||||
#Stretch
|
||||
var stretchAmount = 0.0
|
||||
|
||||
#Ignore Bounce
|
||||
var ignoreBounce = false
|
||||
|
||||
#Animation
|
||||
var frames = 1
|
||||
var animSpeed = 0
|
||||
|
||||
var remadePolygon = false
|
||||
|
||||
var clipped = false
|
||||
|
||||
var tick = 0
|
||||
|
||||
#Vis toggle
|
||||
|
@ -86,39 +39,14 @@ var toggle: Key = KEY_NONE
|
|||
func _ready():
|
||||
InputHandler.key_pressed.connect(visToggle)
|
||||
|
||||
var img = Image.new()
|
||||
var err = img.load(path)
|
||||
if err != OK:
|
||||
#Runs if image import fails. Needs error dialog box at some point
|
||||
if loadedImageData == null:
|
||||
Global.epicFail(err)
|
||||
print_debug("Failed to load image.")
|
||||
queue_free()
|
||||
return
|
||||
else:
|
||||
var data = Marshalls.base64_to_raw(loadedImageData)
|
||||
var errr = img.load_png_from_buffer(data)
|
||||
if errr != OK:
|
||||
Global.epicFail(err)
|
||||
print_debug("Failed to load image.")
|
||||
queue_free()
|
||||
return
|
||||
|
||||
var texture = ImageTexture.new()
|
||||
texture = ImageTexture.create_from_image(img)
|
||||
imageSize = sprite_data.image.get_size()
|
||||
|
||||
|
||||
tex = texture
|
||||
imageData = img
|
||||
|
||||
imageSize = img.get_size()
|
||||
|
||||
sprite.texture = tex
|
||||
sprite.texture = sprite_data.image
|
||||
|
||||
var bitmap = BitMap.new()
|
||||
bitmap.create_from_image_alpha(imageData)
|
||||
bitmap.create_from_image_alpha(sprite_data.image.get_image())
|
||||
|
||||
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(), bitmap.get_size()), 4.0)
|
||||
|
||||
var b = false
|
||||
for polygon in polygons:
|
||||
|
@ -133,11 +61,10 @@ func _ready():
|
|||
grabArea.add_child(outline)
|
||||
|
||||
size = imageData.get_size()
|
||||
grabArea.position = size*-0.5
|
||||
|
||||
sprite.offset = offset
|
||||
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
changeFrames()
|
||||
setZIndex()
|
||||
|
@ -207,7 +134,7 @@ func replaceSprite(pathNew):
|
|||
|
||||
sprite.offset = offset
|
||||
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
if !b:
|
||||
remakePolygon()
|
||||
|
@ -215,7 +142,6 @@ func replaceSprite(pathNew):
|
|||
func _process(delta):
|
||||
tick += 1
|
||||
if Global.heldSprite == self:
|
||||
|
||||
grabArea.visible = true
|
||||
originSprite.visible = true
|
||||
|
||||
|
@ -232,21 +158,17 @@ func _process(delta):
|
|||
|
||||
var length = (glob.y - dragger.global_position.y)
|
||||
|
||||
rotationalDrag(length,delta)
|
||||
stretch(length,delta)
|
||||
|
||||
if grabDelay > 0:
|
||||
grabDelay -= 1
|
||||
rotationalDrag(length, delta)
|
||||
stretch(length, delta)
|
||||
|
||||
talkBlink()
|
||||
|
||||
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 Global.animationTick % int((speed)/float(animSpeed)) == 0:
|
||||
if Global.animationTick % int((speed) / float(animSpeed)) == 0:
|
||||
if sprite.frame == frames - 1:
|
||||
sprite.frame = 0
|
||||
else:
|
||||
|
@ -259,9 +181,9 @@ func setZIndex():
|
|||
|
||||
func talkBlink():
|
||||
var faded = 0.2 * int(Global.main.editMode)
|
||||
var value = (showOnTalk + (showOnBlink*3)) + (int(Global.speaking)*10) + (int(Global.blink)*20)
|
||||
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)
|
||||
var value = (showOnTalk + (showOnBlink * 3)) + (int(Global.speaking) * 10) + (int(Global.blink) * 20)
|
||||
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():
|
||||
queue_free()
|
||||
|
@ -295,7 +217,7 @@ func moveSprite(dir):
|
|||
multiplier = 1
|
||||
position -= dir * multiplier
|
||||
|
||||
position = Vector2(int(position.x),int(position.y))
|
||||
position = Vector2(int(position.x), int(position.y))
|
||||
|
||||
func moveOrigin(dir):
|
||||
if dir != Vector2.ZERO:
|
||||
|
@ -311,36 +233,36 @@ func moveOrigin(dir):
|
|||
offset += dir * multiplier
|
||||
position -= dir * multiplier
|
||||
|
||||
offset = Vector2(int(offset.x),int(offset.y))
|
||||
offset = Vector2(int(offset.x), int(offset.y))
|
||||
|
||||
sprite.offset = offset
|
||||
grabArea.position = (size*-0.5) + offset
|
||||
grabArea.position = (size * -0.5) + offset
|
||||
|
||||
func drag(delta):
|
||||
if dragSpeed == 0:
|
||||
dragger.global_position = wob.global_position
|
||||
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
|
||||
|
||||
func wobble():
|
||||
wob.position.x = sin(tick*xFrq)*xAmp
|
||||
wob.position.y = sin(tick*yFrq)*yAmp
|
||||
wob.position.x = sin(tick * xFrq) * xAmp
|
||||
wob.position.y = sin(tick * yFrq) * yAmp
|
||||
|
||||
func rotationalDrag(length,delta):
|
||||
func rotationalDrag(length, delta):
|
||||
var yvel = (length * rdragStr)
|
||||
|
||||
#Calculate Max angle
|
||||
|
||||
yvel = clamp(yvel,rLimitMin,rLimitMax)
|
||||
yvel = clamp(yvel, rLimitMin, rLimitMax)
|
||||
|
||||
sprite.rotation = lerp_angle(sprite.rotation,deg_to_rad(yvel),0.25)
|
||||
sprite.rotation = lerp_angle(sprite.rotation, deg_to_rad(yvel), 0.25)
|
||||
|
||||
func stretch(length,delta):
|
||||
func stretch(length, delta):
|
||||
var yvel = (length * stretchAmount * 0.01)
|
||||
var target = Vector2(1.0-yvel,1.0+yvel)
|
||||
var target = Vector2(1.0 - yvel, 1.0 + yvel)
|
||||
|
||||
sprite.scale = lerp(sprite.scale,target,0.5)
|
||||
sprite.scale = lerp(sprite.scale, target, 0.5)
|
||||
|
||||
func changeCollision(enable):
|
||||
grabArea.monitorable = enable
|
||||
|
@ -357,18 +279,18 @@ func remakePolygon():
|
|||
c.queue_free()
|
||||
var collider = CollisionShape2D.new()
|
||||
var shape = RectangleShape2D.new()
|
||||
shape.size = Vector2(imageSize.y,imageSize.y)
|
||||
shape.size = Vector2(imageSize.y, imageSize.y)
|
||||
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)
|
||||
|
||||
var p = imageSize.y * 0.5
|
||||
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
|
||||
grabArea.add_child(outline)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue