Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
20c218405a | |||
dc69ce81e0 |
|
@ -21,7 +21,11 @@ var _socket := WebSocketPeer.new()
|
||||||
var _config := ConfigFile.new()
|
var _config := ConfigFile.new()
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if !Config.settings.useStreamDeck:
|
|
||||||
|
if Saving.settings.has("useStreamDeck"):
|
||||||
|
if !Saving.settings["useStreamDeck"]:
|
||||||
|
return
|
||||||
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
_load_config(_get_config_path())
|
_load_config(_get_config_path())
|
||||||
|
|
4
autoload/defaultAvatarData.gd
Normal file
1
autoload/defaultAvatarData.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://dqsikysw3ch7s
|
|
@ -13,7 +13,7 @@ var animationTick = 0
|
||||||
var filtering = false
|
var filtering = false
|
||||||
|
|
||||||
#Object Selection
|
#Object Selection
|
||||||
var heldSprite: SpriteObject = null
|
var heldSprite = null
|
||||||
var lastArray = []
|
var lastArray = []
|
||||||
var i = 0
|
var i = 0
|
||||||
|
|
||||||
|
@ -48,11 +48,19 @@ var micResetTime = 180
|
||||||
|
|
||||||
var updatePusherNode = null
|
var updatePusherNode = null
|
||||||
|
|
||||||
|
var rand = RandomNumberGenerator.new()
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
spectrum = AudioServer.get_bus_effect_instance(1, 1)
|
spectrum = AudioServer.get_bus_effect_instance(1, 1)
|
||||||
|
|
||||||
Global.micResetTime = Config.settings.secondsToMicReset
|
if !Saving.settings.has("useStreamDeck"):
|
||||||
|
Saving.settings["useStreamDeck"] = false
|
||||||
|
|
||||||
|
if Saving.settings.has("secondsToMicReset"):
|
||||||
|
Global.micResetTime = Saving.settings["secondsToMicReset"]
|
||||||
|
else:
|
||||||
|
Saving.settings["secondsToMicReset"] = 180
|
||||||
|
|
||||||
createMicrophone()
|
createMicrophone()
|
||||||
|
|
||||||
func createMicrophone():
|
func createMicrophone():
|
||||||
|
@ -111,8 +119,7 @@ func _process(delta):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
reparentMode = false
|
reparentMode = false
|
||||||
#Global.chain.enable(reparentMode)
|
Global.chain.enable(reparentMode)
|
||||||
return
|
|
||||||
|
|
||||||
if main.editMode:
|
if main.editMode:
|
||||||
if reparentMode:
|
if reparentMode:
|
||||||
|
@ -270,10 +277,10 @@ func blinking():
|
||||||
blinkTick += 1
|
blinkTick += 1
|
||||||
if blinkTick == 0:
|
if blinkTick == 0:
|
||||||
blink = false
|
blink = false
|
||||||
if randf_range(-1.0,1.0) > 0.5:
|
if rand.randf_range(-1.0,1.0) > 0.5:
|
||||||
blinkTick = (420 * blinkSpeed) + 1
|
blinkTick = (420 * blinkSpeed) + 1
|
||||||
if blinkTick > 420 * blinkSpeed:
|
if blinkTick > 420 * blinkSpeed:
|
||||||
if randi() % int(blinkChance) == 0:
|
if rand.randi() % int(blinkChance) == 0:
|
||||||
blink = true
|
blink = true
|
||||||
|
|
||||||
blinkTick = -12
|
blinkTick = -12
|
|
@ -40,18 +40,58 @@ var default = {
|
||||||
"2": { "drag": 4, "identification": 928082759, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/hair.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": -2 }, "3": { "drag": 0, "identification": 346749260, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/mouth1.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 1, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "4": { "drag": 0, "identification": 348929106, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/mouth2.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 2, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "5": { "drag": 0, "identification": 66364456, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye1.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 1, "showTalk": 2, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "6": { "drag": 0, "identification": 261040117, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye2.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 1, "showTalk": 1, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "7": { "drag": 0, "identification": 291459997, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye3.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 2, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "8": { "drag": 0, "identification": 148065686, "offset": "Vector2(-74, 92)", "parentId": 456157398, "path": "user://defaultAvatar/hat.png", "pos": "Vector2(72, -89)", "rotDrag": -2, "showBlink": 0, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 2 } }
|
"2": { "drag": 4, "identification": 928082759, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/hair.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": -2 }, "3": { "drag": 0, "identification": 346749260, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/mouth1.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 1, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "4": { "drag": 0, "identification": 348929106, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/mouth2.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 0, "showTalk": 2, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "5": { "drag": 0, "identification": 66364456, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye1.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 1, "showTalk": 2, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "6": { "drag": 0, "identification": 261040117, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye2.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 1, "showTalk": 1, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "7": { "drag": 0, "identification": 291459997, "offset": "Vector2(0, 0)", "parentId": 456157398, "path": "user://defaultAvatar/eye3.png", "pos": "Vector2(0, 0)", "rotDrag": 0, "showBlink": 2, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 0 }, "8": { "drag": 0, "identification": 148065686, "offset": "Vector2(-74, 92)", "parentId": 456157398, "path": "user://defaultAvatar/hat.png", "pos": "Vector2(72, -89)", "rotDrag": -2, "showBlink": 0, "showTalk": 0, "type": "sprite", "xAmp": 0, "xFrq": 0, "yAmp": 0, "yFrq": 0, "zindex": 2 } }
|
||||||
|
|
||||||
|
|
||||||
var settings: Settings = Settings.new()
|
var settings = {
|
||||||
|
"newUser":true,
|
||||||
|
"lastAvatar":"",
|
||||||
|
"volume":0.185,
|
||||||
|
"sense":0.25,
|
||||||
|
"windowSize":Vector2i(1280,720),
|
||||||
|
"useStreamDeck":false,
|
||||||
|
"bounce":250,
|
||||||
|
"gravity":1000,
|
||||||
|
"maxFPS":60,
|
||||||
|
"secondsToMicReset":180,
|
||||||
|
"backgroundColor":var_to_str(Color(0.0,0.0,0.0,0.0)),
|
||||||
|
"filtering":false,
|
||||||
|
"costumeKeys":["1","2","3","4","5","6","7","8","9","0"],
|
||||||
|
"blinkSpeed":1.0,
|
||||||
|
"blinkChance":200,
|
||||||
|
"bounceOnCostumeChange":false,
|
||||||
|
}
|
||||||
|
|
||||||
var settingsPath = "user://settings.pngtp"
|
var settingsPath = "user://settings.pngtp"
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var loaded_settings = load(settingsPath)
|
var datas = read_save(settingsPath)
|
||||||
if loaded_settings != null:
|
if datas == null:
|
||||||
settings = loaded_settings
|
return
|
||||||
|
else:
|
||||||
|
settings = datas.duplicate()
|
||||||
|
|
||||||
func _exit_tree():
|
func _exit_tree():
|
||||||
write_settings(settingsPath)
|
write_settings(settingsPath)
|
||||||
|
|
||||||
|
|
||||||
|
func read_save(path):
|
||||||
|
|
||||||
|
if path == "default":
|
||||||
|
return DefaultAvatarData.data
|
||||||
|
|
||||||
|
|
||||||
|
if OS.has_feature('web'):
|
||||||
|
var JSONstr = JavaScriptBridge.eval("window.localStorage.getItem('" + key + "');")
|
||||||
|
if (JSONstr):
|
||||||
|
return JSON.parse_string(JSONstr)
|
||||||
|
else:
|
||||||
|
return null
|
||||||
|
else:
|
||||||
|
var file = FileAccess.open(path, FileAccess.READ)
|
||||||
|
if not file:
|
||||||
|
return null
|
||||||
|
var newData = JSON.parse_string(file.get_as_text())
|
||||||
|
file.close()
|
||||||
|
return newData
|
||||||
|
|
||||||
func write_save(path):
|
func write_save(path):
|
||||||
if OS.has_feature('web'):
|
if OS.has_feature('web'):
|
||||||
JavaScriptBridge.eval("window.localStorage.setItem('" + key + "', '" + JSON.stringify(data) + "');")
|
JavaScriptBridge.eval("window.localStorage.setItem('" + key + "', '" + JSON.stringify(data) + "');")
|
Before Width: | Height: | Size: 3.7 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://dsir4ejkj8puy"
|
|
||||||
path="res://.godot/imported/eyes_closed.png-12c4263a2a91a0534f989bc9275bbd7d.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/eyes_closed.png"
|
|
||||||
dest_files=["res://.godot/imported/eyes_closed.png-12c4263a2a91a0534f989bc9275bbd7d.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
|
|
Before Width: | Height: | Size: 6.2 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://4x3v7t763j2w"
|
|
||||||
path="res://.godot/imported/eyes_open.png-b2522b2294c35a5797861e391ceb2ff8.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/eyes_open.png"
|
|
||||||
dest_files=["res://.godot/imported/eyes_open.png-b2522b2294c35a5797861e391ceb2ff8.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
|
|
Before Width: | Height: | Size: 6.5 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://brvu2i85mnr65"
|
|
||||||
path="res://.godot/imported/eyes_open_speaking.png-6409987f612bc32d553abbf3f7cc6ff1.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/eyes_open_speaking.png"
|
|
||||||
dest_files=["res://.godot/imported/eyes_open_speaking.png-6409987f612bc32d553abbf3f7cc6ff1.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
|
|
Before Width: | Height: | Size: 55 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://b7d05wfdvqbmo"
|
|
||||||
path="res://.godot/imported/hair.png-f53ac7b29afa34df1fea5a0fb7b9f2c9.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/hair.png"
|
|
||||||
dest_files=["res://.godot/imported/hair.png-f53ac7b29afa34df1fea5a0fb7b9f2c9.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
|
|
Before Width: | Height: | Size: 43 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://uvf6v845pqtw"
|
|
||||||
path="res://.godot/imported/hat.png-ff3f9691c4c57fb49dc1f851fddd1b84.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/hat.png"
|
|
||||||
dest_files=["res://.godot/imported/hat.png-ff3f9691c4c57fb49dc1f851fddd1b84.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
|
|
|
@ -1,233 +0,0 @@
|
||||||
[gd_resource type="Resource" script_class="AvatarData" load_steps=21 format=3 uid="uid://0i4r45tgno0q"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b73on8ic2acsv" path="res://scripts/avatar_data.gd" id="1_re035"]
|
|
||||||
[ext_resource type="Script" uid="uid://b07e67yn4uh6d" path="res://scripts/sprite_data.gd" id="2_cjoo4"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://kpb0f3fkimex" path="res://default_avatars/hat_guy/head.png" id="3_nklgv"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b7d05wfdvqbmo" path="res://default_avatars/hat_guy/hair.png" id="3_qwcja"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bgomt0jm4rca3" path="res://default_avatars/hat_guy/mouth_closed.png" id="4_ifxpp"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bse3li76fy8pi" path="res://default_avatars/hat_guy/torso.png" id="4_yx2bh"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://jiw5ygsr5eus" path="res://default_avatars/hat_guy/mouth_open.png" id="5_au626"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://brvu2i85mnr65" path="res://default_avatars/hat_guy/eyes_open_speaking.png" id="6_3l3vd"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://4x3v7t763j2w" path="res://default_avatars/hat_guy/eyes_open.png" id="7_7j5wo"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dsir4ejkj8puy" path="res://default_avatars/hat_guy/eyes_closed.png" id="8_od6o0"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://uvf6v845pqtw" path="res://default_avatars/hat_guy/hat.png" id="9_fqo7r"]
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_vd21u"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("3_qwcja")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 0
|
|
||||||
stretch_amount = 2.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = -2.0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_2ut1u"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("4_ifxpp")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 1.0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_ifxpp"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("5_au626")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 2.0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_7j5wo"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("6_3l3vd")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 1.0
|
|
||||||
show_talk = 2.0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_dxpem"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("7_7j5wo")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 1.0
|
|
||||||
show_talk = 1.0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_sinbd"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("8_od6o0")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 2.0
|
|
||||||
show_talk = 0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_herda"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("9_fqo7r")
|
|
||||||
offset = Vector2(-74, 92)
|
|
||||||
pos = Vector2(72, -89)
|
|
||||||
r_limit_max = 17.0
|
|
||||||
r_limit_min = -14.0
|
|
||||||
rot_drag = -1.0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 2.0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_dqjmw"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 1.0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("3_nklgv")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 0
|
|
||||||
stretch_amount = 0.0
|
|
||||||
x_amp = 0.0
|
|
||||||
x_frq = 0.0
|
|
||||||
y_amp = 0.0
|
|
||||||
y_frq = 0.0
|
|
||||||
zindex = 0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([SubResource("Resource_vd21u"), SubResource("Resource_2ut1u"), SubResource("Resource_ifxpp"), SubResource("Resource_7j5wo"), SubResource("Resource_dxpem"), SubResource("Resource_sinbd"), SubResource("Resource_herda")])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_h4n0i"]
|
|
||||||
script = ExtResource("2_cjoo4")
|
|
||||||
anim_speed = 0
|
|
||||||
clipped = false
|
|
||||||
costume_layers = Array[bool]([true, true, true, true, true, true, true, true, true, true])
|
|
||||||
drag_speed = 0
|
|
||||||
frames = 1
|
|
||||||
ignore_bounce = false
|
|
||||||
image = ExtResource("4_yx2bh")
|
|
||||||
offset = Vector2(0, 0)
|
|
||||||
pos = Vector2(0, 0)
|
|
||||||
r_limit_max = 180
|
|
||||||
r_limit_min = -180
|
|
||||||
rot_drag = 0
|
|
||||||
show_blink = 0
|
|
||||||
show_talk = 0
|
|
||||||
stretch_amount = 0.25
|
|
||||||
x_amp = 9.0
|
|
||||||
x_frq = 0.004
|
|
||||||
y_amp = 11.0
|
|
||||||
y_frq = 0.008
|
|
||||||
zindex = -1.0
|
|
||||||
children = Array[ExtResource("2_cjoo4")]([SubResource("Resource_dqjmw")])
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("1_re035")
|
|
||||||
sprites = Array[ExtResource("2_cjoo4")]([SubResource("Resource_h4n0i")])
|
|
Before Width: | Height: | Size: 21 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://kpb0f3fkimex"
|
|
||||||
path="res://.godot/imported/head.png-e2914718512a4a40501f60740e5be3e5.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/head.png"
|
|
||||||
dest_files=["res://.godot/imported/head.png-e2914718512a4a40501f60740e5be3e5.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
|
|
Before Width: | Height: | Size: 3.4 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bgomt0jm4rca3"
|
|
||||||
path="res://.godot/imported/mouth_closed.png-153cd499e9f8e1d7fedcfc4d6ff19f09.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/mouth_closed.png"
|
|
||||||
dest_files=["res://.godot/imported/mouth_closed.png-153cd499e9f8e1d7fedcfc4d6ff19f09.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
|
|
Before Width: | Height: | Size: 5.8 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://jiw5ygsr5eus"
|
|
||||||
path="res://.godot/imported/mouth_open.png-18177d9c2351b894e0bd89033dcbd8bb.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/mouth_open.png"
|
|
||||||
dest_files=["res://.godot/imported/mouth_open.png-18177d9c2351b894e0bd89033dcbd8bb.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
|
|
Before Width: | Height: | Size: 19 KiB |
|
@ -1,34 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bse3li76fy8pi"
|
|
||||||
path="res://.godot/imported/torso.png-d468966dc8d74a1a04ac15ce2dcb5d59.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://default_avatars/hat_guy/torso.png"
|
|
||||||
dest_files=["res://.godot/imported/torso.png-d468966dc8d74a1a04ac15ce2dcb5d59.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
|
|
|
@ -1,3 +0,0 @@
|
||||||
[gd_scene format=3 uid="uid://blqhhndk1dwv7"]
|
|
||||||
|
|
||||||
[node name="Empty" type="Node2D"]
|
|
|
@ -3,16 +3,20 @@
|
||||||
name="Windows Desktop"
|
name="Windows Desktop"
|
||||||
platform="Windows Desktop"
|
platform="Windows Desktop"
|
||||||
runnable=true
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path=".export/release 1.4.5/steam/PNGTUBER PLUS 1.4.5 STEAM.exe"
|
export_path=".export/release 1.4.5/steam/PNGTUBER PLUS 1.4.5 STEAM.exe"
|
||||||
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
[preset.0.options]
|
[preset.0.options]
|
||||||
|
|
||||||
|
@ -20,10 +24,8 @@ custom_template/debug=""
|
||||||
custom_template/release=""
|
custom_template/release=""
|
||||||
debug/export_console_wrapper=1
|
debug/export_console_wrapper=1
|
||||||
binary_format/embed_pck=false
|
binary_format/embed_pck=false
|
||||||
texture_format/bptc=true
|
texture_format/s3tc_bptc=true
|
||||||
texture_format/s3tc=true
|
texture_format/etc2_astc=false
|
||||||
texture_format/etc=false
|
|
||||||
texture_format/etc2=false
|
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
codesign/enable=false
|
codesign/enable=false
|
||||||
codesign/timestamp=true
|
codesign/timestamp=true
|
||||||
|
@ -42,6 +44,9 @@ application/product_name="PNGTuber Plus"
|
||||||
application/file_description=""
|
application/file_description=""
|
||||||
application/copyright=""
|
application/copyright=""
|
||||||
application/trademarks=""
|
application/trademarks=""
|
||||||
|
application/export_angle=0
|
||||||
|
application/export_d3d12=0
|
||||||
|
application/d3d12_agility_sdk_multiarch=true
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
ssh_remote_deploy/host="user@host_ip"
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
ssh_remote_deploy/port="22"
|
ssh_remote_deploy/port="22"
|
||||||
|
@ -59,33 +64,39 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
|
||||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||||
|
texture_format/bptc=true
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
|
||||||
[preset.1]
|
[preset.1]
|
||||||
|
|
||||||
name="Linux/X11"
|
name="Linux/X11"
|
||||||
platform="Linux/X11"
|
platform="Linux"
|
||||||
runnable=true
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path=".export/release 1.4.5/linux/PNGTUBER PLUS 1.4.5 LINUX.x86_64"
|
export_path="../../../Desktop/PNGTUBER PLUS 1.4.5 LINUX.x86_64"
|
||||||
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
[preset.1.options]
|
[preset.1.options]
|
||||||
|
|
||||||
custom_template/debug=""
|
custom_template/debug=""
|
||||||
custom_template/release=""
|
custom_template/release=""
|
||||||
debug/export_console_wrapper=1
|
debug/export_console_wrapper=1
|
||||||
binary_format/embed_pck=false
|
binary_format/embed_pck=true
|
||||||
texture_format/bptc=true
|
texture_format/s3tc_bptc=true
|
||||||
texture_format/s3tc=true
|
texture_format/etc2_astc=false
|
||||||
texture_format/etc=false
|
|
||||||
texture_format/etc2=false
|
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
ssh_remote_deploy/host="user@host_ip"
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
@ -99,22 +110,30 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
||||||
rm -rf \"{temp_dir}\""
|
rm -rf \"{temp_dir}\""
|
||||||
|
texture_format/bptc=true
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
|
||||||
[preset.2]
|
[preset.2]
|
||||||
|
|
||||||
name="macOS"
|
name="macOS"
|
||||||
platform="macOS"
|
platform="macOS"
|
||||||
runnable=true
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path=".export/release 1.4.5/mac/PNGTUBER PLUS 1.4.5 MAC.zip"
|
export_path="../../../Desktop/PNGTUBER PLUS 1.4.5 MAC.zip"
|
||||||
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
[preset.2.options]
|
[preset.2.options]
|
||||||
|
|
||||||
|
@ -132,8 +151,11 @@ application/short_version="1.4.5"
|
||||||
application/version="1.4.5"
|
application/version="1.4.5"
|
||||||
application/copyright=""
|
application/copyright=""
|
||||||
application/copyright_localized={}
|
application/copyright_localized={}
|
||||||
application/min_macos_version="10.12"
|
application/min_macos_version_x86_64="10.12"
|
||||||
|
application/min_macos_version_arm64="11.00"
|
||||||
|
application/export_angle=0
|
||||||
display/high_res=true
|
display/high_res=true
|
||||||
|
application/additional_plist_content=""
|
||||||
xcode/platform_build="14C18"
|
xcode/platform_build="14C18"
|
||||||
xcode/sdk_version="13.1"
|
xcode/sdk_version="13.1"
|
||||||
xcode/sdk_build="22C55"
|
xcode/sdk_build="22C55"
|
||||||
|
@ -166,7 +188,9 @@ codesign/entitlements/app_sandbox/files_downloads=0
|
||||||
codesign/entitlements/app_sandbox/files_pictures=0
|
codesign/entitlements/app_sandbox/files_pictures=0
|
||||||
codesign/entitlements/app_sandbox/files_music=0
|
codesign/entitlements/app_sandbox/files_music=0
|
||||||
codesign/entitlements/app_sandbox/files_movies=0
|
codesign/entitlements/app_sandbox/files_movies=0
|
||||||
|
codesign/entitlements/app_sandbox/files_user_selected=0
|
||||||
codesign/entitlements/app_sandbox/helper_executables=[]
|
codesign/entitlements/app_sandbox/helper_executables=[]
|
||||||
|
codesign/entitlements/additional=""
|
||||||
codesign/custom_options=PackedStringArray()
|
codesign/custom_options=PackedStringArray()
|
||||||
notarization/notarization=0
|
notarization/notarization=0
|
||||||
privacy/microphone_usage_description="So the guy can go up and down!"
|
privacy/microphone_usage_description="So the guy can go up and down!"
|
||||||
|
@ -191,6 +215,148 @@ privacy/network_volumes_usage_description=""
|
||||||
privacy/network_volumes_usage_description_localized={}
|
privacy/network_volumes_usage_description_localized={}
|
||||||
privacy/removable_volumes_usage_description=""
|
privacy/removable_volumes_usage_description=""
|
||||||
privacy/removable_volumes_usage_description_localized={}
|
privacy/removable_volumes_usage_description_localized={}
|
||||||
|
privacy/tracking_enabled=false
|
||||||
|
privacy/tracking_domains=PackedStringArray()
|
||||||
|
privacy/collected_data/name/collected=false
|
||||||
|
privacy/collected_data/name/linked_to_user=false
|
||||||
|
privacy/collected_data/name/used_for_tracking=false
|
||||||
|
privacy/collected_data/name/collection_purposes=0
|
||||||
|
privacy/collected_data/email_address/collected=false
|
||||||
|
privacy/collected_data/email_address/linked_to_user=false
|
||||||
|
privacy/collected_data/email_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/email_address/collection_purposes=0
|
||||||
|
privacy/collected_data/phone_number/collected=false
|
||||||
|
privacy/collected_data/phone_number/linked_to_user=false
|
||||||
|
privacy/collected_data/phone_number/used_for_tracking=false
|
||||||
|
privacy/collected_data/phone_number/collection_purposes=0
|
||||||
|
privacy/collected_data/physical_address/collected=false
|
||||||
|
privacy/collected_data/physical_address/linked_to_user=false
|
||||||
|
privacy/collected_data/physical_address/used_for_tracking=false
|
||||||
|
privacy/collected_data/physical_address/collection_purposes=0
|
||||||
|
privacy/collected_data/other_contact_info/collected=false
|
||||||
|
privacy/collected_data/other_contact_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_contact_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_contact_info/collection_purposes=0
|
||||||
|
privacy/collected_data/health/collected=false
|
||||||
|
privacy/collected_data/health/linked_to_user=false
|
||||||
|
privacy/collected_data/health/used_for_tracking=false
|
||||||
|
privacy/collected_data/health/collection_purposes=0
|
||||||
|
privacy/collected_data/fitness/collected=false
|
||||||
|
privacy/collected_data/fitness/linked_to_user=false
|
||||||
|
privacy/collected_data/fitness/used_for_tracking=false
|
||||||
|
privacy/collected_data/fitness/collection_purposes=0
|
||||||
|
privacy/collected_data/payment_info/collected=false
|
||||||
|
privacy/collected_data/payment_info/linked_to_user=false
|
||||||
|
privacy/collected_data/payment_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/payment_info/collection_purposes=0
|
||||||
|
privacy/collected_data/credit_info/collected=false
|
||||||
|
privacy/collected_data/credit_info/linked_to_user=false
|
||||||
|
privacy/collected_data/credit_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/credit_info/collection_purposes=0
|
||||||
|
privacy/collected_data/other_financial_info/collected=false
|
||||||
|
privacy/collected_data/other_financial_info/linked_to_user=false
|
||||||
|
privacy/collected_data/other_financial_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_financial_info/collection_purposes=0
|
||||||
|
privacy/collected_data/precise_location/collected=false
|
||||||
|
privacy/collected_data/precise_location/linked_to_user=false
|
||||||
|
privacy/collected_data/precise_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/precise_location/collection_purposes=0
|
||||||
|
privacy/collected_data/coarse_location/collected=false
|
||||||
|
privacy/collected_data/coarse_location/linked_to_user=false
|
||||||
|
privacy/collected_data/coarse_location/used_for_tracking=false
|
||||||
|
privacy/collected_data/coarse_location/collection_purposes=0
|
||||||
|
privacy/collected_data/sensitive_info/collected=false
|
||||||
|
privacy/collected_data/sensitive_info/linked_to_user=false
|
||||||
|
privacy/collected_data/sensitive_info/used_for_tracking=false
|
||||||
|
privacy/collected_data/sensitive_info/collection_purposes=0
|
||||||
|
privacy/collected_data/contacts/collected=false
|
||||||
|
privacy/collected_data/contacts/linked_to_user=false
|
||||||
|
privacy/collected_data/contacts/used_for_tracking=false
|
||||||
|
privacy/collected_data/contacts/collection_purposes=0
|
||||||
|
privacy/collected_data/emails_or_text_messages/collected=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/linked_to_user=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
|
||||||
|
privacy/collected_data/emails_or_text_messages/collection_purposes=0
|
||||||
|
privacy/collected_data/photos_or_videos/collected=false
|
||||||
|
privacy/collected_data/photos_or_videos/linked_to_user=false
|
||||||
|
privacy/collected_data/photos_or_videos/used_for_tracking=false
|
||||||
|
privacy/collected_data/photos_or_videos/collection_purposes=0
|
||||||
|
privacy/collected_data/audio_data/collected=false
|
||||||
|
privacy/collected_data/audio_data/linked_to_user=false
|
||||||
|
privacy/collected_data/audio_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/audio_data/collection_purposes=0
|
||||||
|
privacy/collected_data/gameplay_content/collected=false
|
||||||
|
privacy/collected_data/gameplay_content/linked_to_user=false
|
||||||
|
privacy/collected_data/gameplay_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/gameplay_content/collection_purposes=0
|
||||||
|
privacy/collected_data/customer_support/collected=false
|
||||||
|
privacy/collected_data/customer_support/linked_to_user=false
|
||||||
|
privacy/collected_data/customer_support/used_for_tracking=false
|
||||||
|
privacy/collected_data/customer_support/collection_purposes=0
|
||||||
|
privacy/collected_data/other_user_content/collected=false
|
||||||
|
privacy/collected_data/other_user_content/linked_to_user=false
|
||||||
|
privacy/collected_data/other_user_content/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_user_content/collection_purposes=0
|
||||||
|
privacy/collected_data/browsing_history/collected=false
|
||||||
|
privacy/collected_data/browsing_history/linked_to_user=false
|
||||||
|
privacy/collected_data/browsing_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/browsing_history/collection_purposes=0
|
||||||
|
privacy/collected_data/search_hhistory/collected=false
|
||||||
|
privacy/collected_data/search_hhistory/linked_to_user=false
|
||||||
|
privacy/collected_data/search_hhistory/used_for_tracking=false
|
||||||
|
privacy/collected_data/search_hhistory/collection_purposes=0
|
||||||
|
privacy/collected_data/user_id/collected=false
|
||||||
|
privacy/collected_data/user_id/linked_to_user=false
|
||||||
|
privacy/collected_data/user_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/user_id/collection_purposes=0
|
||||||
|
privacy/collected_data/device_id/collected=false
|
||||||
|
privacy/collected_data/device_id/linked_to_user=false
|
||||||
|
privacy/collected_data/device_id/used_for_tracking=false
|
||||||
|
privacy/collected_data/device_id/collection_purposes=0
|
||||||
|
privacy/collected_data/purchase_history/collected=false
|
||||||
|
privacy/collected_data/purchase_history/linked_to_user=false
|
||||||
|
privacy/collected_data/purchase_history/used_for_tracking=false
|
||||||
|
privacy/collected_data/purchase_history/collection_purposes=0
|
||||||
|
privacy/collected_data/product_interaction/collected=false
|
||||||
|
privacy/collected_data/product_interaction/linked_to_user=false
|
||||||
|
privacy/collected_data/product_interaction/used_for_tracking=false
|
||||||
|
privacy/collected_data/product_interaction/collection_purposes=0
|
||||||
|
privacy/collected_data/advertising_data/collected=false
|
||||||
|
privacy/collected_data/advertising_data/linked_to_user=false
|
||||||
|
privacy/collected_data/advertising_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/advertising_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_usage_data/collected=false
|
||||||
|
privacy/collected_data/other_usage_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_usage_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_usage_data/collection_purposes=0
|
||||||
|
privacy/collected_data/crash_data/collected=false
|
||||||
|
privacy/collected_data/crash_data/linked_to_user=false
|
||||||
|
privacy/collected_data/crash_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/crash_data/collection_purposes=0
|
||||||
|
privacy/collected_data/performance_data/collected=false
|
||||||
|
privacy/collected_data/performance_data/linked_to_user=false
|
||||||
|
privacy/collected_data/performance_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/performance_data/collection_purposes=0
|
||||||
|
privacy/collected_data/other_diagnostic_data/collected=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/linked_to_user=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_diagnostic_data/collection_purposes=0
|
||||||
|
privacy/collected_data/environment_scanning/collected=false
|
||||||
|
privacy/collected_data/environment_scanning/linked_to_user=false
|
||||||
|
privacy/collected_data/environment_scanning/used_for_tracking=false
|
||||||
|
privacy/collected_data/environment_scanning/collection_purposes=0
|
||||||
|
privacy/collected_data/hands/collected=false
|
||||||
|
privacy/collected_data/hands/linked_to_user=false
|
||||||
|
privacy/collected_data/hands/used_for_tracking=false
|
||||||
|
privacy/collected_data/hands/collection_purposes=0
|
||||||
|
privacy/collected_data/head/collected=false
|
||||||
|
privacy/collected_data/head/linked_to_user=false
|
||||||
|
privacy/collected_data/head/used_for_tracking=false
|
||||||
|
privacy/collected_data/head/collection_purposes=0
|
||||||
|
privacy/collected_data/other_data_types/collected=false
|
||||||
|
privacy/collected_data/other_data_types/linked_to_user=false
|
||||||
|
privacy/collected_data/other_data_types/used_for_tracking=false
|
||||||
|
privacy/collected_data/other_data_types/collection_purposes=0
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
ssh_remote_deploy/host="user@host_ip"
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
ssh_remote_deploy/port="22"
|
ssh_remote_deploy/port="22"
|
||||||
|
@ -202,3 +368,4 @@ open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
|
||||||
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
||||||
rm -rf \"{temp_dir}\""
|
rm -rf \"{temp_dir}\""
|
||||||
|
application/min_macos_version="10.12"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[configuration]
|
[configuration]
|
||||||
entry_symbol = "gdext_rust_init"
|
entry_symbol = "gdext_rust_init"
|
||||||
compatibility_minimum = 4.1
|
compatibility_minimum = 4.4
|
||||||
reloadable = true
|
reloadable = true
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
|
@ -4,15 +4,16 @@ importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://brxkjnudq5pbi"
|
uid="uid://brxkjnudq5pbi"
|
||||||
path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"
|
path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://icon.svg"
|
source_file="res://icon.svg"
|
||||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"]
|
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex", "res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,13 @@ var bounceChange = 0.0
|
||||||
#IMPORTANT
|
#IMPORTANT
|
||||||
var fileSystemOpen = false
|
var fileSystemOpen = false
|
||||||
|
|
||||||
|
#background input capture
|
||||||
|
signal emptiedCapture
|
||||||
|
signal pressedKey
|
||||||
|
var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"]
|
||||||
|
signal spriteVisToggles(keysPressed:Array)
|
||||||
|
signal fatfuckingballs
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
Global.main = self
|
Global.main = self
|
||||||
Global.fail = $Failed
|
Global.fail = $Failed
|
||||||
|
@ -126,6 +133,10 @@ func _ready():
|
||||||
camera.position = origin.position
|
camera.position = origin.position
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
var keys = BackgroundInputCapture.get_keys()
|
||||||
|
bgInputSprite(keys)
|
||||||
|
process_key_presses(keys)
|
||||||
|
|
||||||
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
|
||||||
|
@ -170,6 +181,8 @@ func isFileSystemOpen():
|
||||||
|
|
||||||
#Displays control panel whether or not application is focused
|
#Displays control panel whether or not application is focused
|
||||||
func _notification(what):
|
func _notification(what):
|
||||||
|
if !is_node_ready():
|
||||||
|
return
|
||||||
match what:
|
match what:
|
||||||
SceneTree.NOTIFICATION_APPLICATION_FOCUS_OUT:
|
SceneTree.NOTIFICATION_APPLICATION_FOCUS_OUT:
|
||||||
controlPanel.visible = false
|
controlPanel.visible = false
|
||||||
|
@ -261,7 +274,9 @@ func swapMode():
|
||||||
|
|
||||||
#Adds sprite object to scene
|
#Adds sprite object to scene
|
||||||
func add_image(path):
|
func add_image(path):
|
||||||
var id = randi()
|
|
||||||
|
var rand = RandomNumberGenerator.new()
|
||||||
|
var id = rand.randi()
|
||||||
|
|
||||||
var sprite = spriteObject.instantiate()
|
var sprite = spriteObject.instantiate()
|
||||||
sprite.path = path
|
sprite.path = path
|
||||||
|
@ -290,11 +305,7 @@ func _on_load_button_pressed():
|
||||||
|
|
||||||
#LOAD AVATAR
|
#LOAD AVATAR
|
||||||
func _on_load_dialog_file_selected(path):
|
func _on_load_dialog_file_selected(path):
|
||||||
var data
|
var data = Saving.read_save(path)
|
||||||
if path == "default":
|
|
||||||
data = load("res://default_avatars/hat_guy/hat_guy.tres")
|
|
||||||
else:
|
|
||||||
data = load(path)
|
|
||||||
|
|
||||||
if data == null:
|
if data == null:
|
||||||
return
|
return
|
||||||
|
@ -453,7 +464,8 @@ func _on_replace_dialog_visibility_changed():
|
||||||
func _on_duplicate_button_pressed():
|
func _on_duplicate_button_pressed():
|
||||||
if Global.heldSprite == null:
|
if Global.heldSprite == null:
|
||||||
return
|
return
|
||||||
var id = randi()
|
var rand = RandomNumberGenerator.new()
|
||||||
|
var id = rand.randi()
|
||||||
|
|
||||||
var sprite = spriteObject.instantiate()
|
var sprite = spriteObject.instantiate()
|
||||||
sprite.path = Global.heldSprite.path
|
sprite.path = Global.heldSprite.path
|
||||||
|
@ -576,3 +588,53 @@ func _on_button_pressed():
|
||||||
|
|
||||||
func _on_settings_buttons_pressed():
|
func _on_settings_buttons_pressed():
|
||||||
settingsMenu.visible = !settingsMenu.visible
|
settingsMenu.visible = !settingsMenu.visible
|
||||||
|
|
||||||
|
|
||||||
|
func process_key_presses(keys_pressed):
|
||||||
|
var keyStrings = []
|
||||||
|
|
||||||
|
for i in keys_pressed:
|
||||||
|
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))
|
||||||
|
|
||||||
|
if fileSystemOpen:
|
||||||
|
return
|
||||||
|
|
||||||
|
if keyStrings.size() <= 0:
|
||||||
|
emit_signal("emptiedCapture")
|
||||||
|
return
|
||||||
|
|
||||||
|
if settingsMenu.awaitingCostumeInput >= 0:
|
||||||
|
|
||||||
|
if keyStrings[0] == "Keycode1":
|
||||||
|
if !settingsMenu.hasMouse:
|
||||||
|
emit_signal("pressedKey")
|
||||||
|
return
|
||||||
|
|
||||||
|
var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
|
||||||
|
costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
|
||||||
|
Saving.settings["costumeKeys"] = costumeKeys
|
||||||
|
Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"")
|
||||||
|
emit_signal("pressedKey")
|
||||||
|
|
||||||
|
for key in keyStrings:
|
||||||
|
var i = costumeKeys.find(key)
|
||||||
|
if i >= 0:
|
||||||
|
changeCostume(i+1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func bgInputSprite(keys_pressed):
|
||||||
|
if fileSystemOpen:
|
||||||
|
return
|
||||||
|
var keyStrings = []
|
||||||
|
|
||||||
|
for i in keys_pressed:
|
||||||
|
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))
|
||||||
|
|
||||||
|
if keyStrings.size() <= 0:
|
||||||
|
emit_signal("fatfuckingballs")
|
||||||
|
return
|
||||||
|
|
||||||
|
spriteVisToggles.emit(keyStrings)
|
||||||
|
|
|
@ -280,12 +280,19 @@ offset_bottom = -89.0
|
||||||
text = "kaiakairos'"
|
text = "kaiakairos'"
|
||||||
label_settings = SubResource("LabelSettings_qg0do")
|
label_settings = SubResource("LabelSettings_qg0do")
|
||||||
|
|
||||||
[node name="versionNo" type="Label" parent="ControlPanel/VersionLabels/Label2"]
|
[node name="Label3" type="Label" parent="ControlPanel/VersionLabels"]
|
||||||
layout_mode = 0
|
offset_left = -516.0
|
||||||
offset_left = 144.0
|
offset_top = -92.0
|
||||||
offset_top = 40.0
|
offset_right = -314.0
|
||||||
offset_right = 282.0
|
offset_bottom = -58.0
|
||||||
offset_bottom = 74.0
|
text = "(fixed by Charlotte)"
|
||||||
|
label_settings = SubResource("LabelSettings_qg0do")
|
||||||
|
|
||||||
|
[node name="versionNo" type="Label" parent="ControlPanel/VersionLabels"]
|
||||||
|
offset_left = -569.0
|
||||||
|
offset_top = -83.0
|
||||||
|
offset_right = -431.0
|
||||||
|
offset_bottom = -49.0
|
||||||
text = "v1.4.5"
|
text = "v1.4.5"
|
||||||
label_settings = SubResource("LabelSettings_xvf50")
|
label_settings = SubResource("LabelSettings_xvf50")
|
||||||
|
|
||||||
|
|
|
@ -26,10 +26,10 @@ driver/enable_input=true
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
Config="*res://scripts/autoload/config.gd"
|
Saving="*res://autoload/saving.gd"
|
||||||
Global="*res://scripts/autoload/global.gd"
|
Global="*res://autoload/global.gd"
|
||||||
ElgatoStreamDeck="*res://addons/godot-streamdeck-addon/singleton.gd"
|
ElgatoStreamDeck="*res://addons/godot-streamdeck-addon/singleton.gd"
|
||||||
InputHandler="*res://scripts/autoload/input_handler.gd"
|
DefaultAvatarData="*res://autoload/defaultAvatarData.gd"
|
||||||
|
|
||||||
[debug]
|
[debug]
|
||||||
|
|
||||||
|
@ -142,4 +142,5 @@ textures/canvas_textures/default_texture_filter=0
|
||||||
textures/canvas_textures/default_texture_repeat=1
|
textures/canvas_textures/default_texture_repeat=1
|
||||||
renderer/rendering_method="gl_compatibility"
|
renderer/rendering_method="gl_compatibility"
|
||||||
renderer/rendering_method.mobile="gl_compatibility"
|
renderer/rendering_method.mobile="gl_compatibility"
|
||||||
|
textures/vram_compression/import_etc2_astc=true
|
||||||
environment/defaults/default_clear_color=Color(0.376471, 0.376471, 0.376471, 1)
|
environment/defaults/default_clear_color=Color(0.376471, 0.376471, 0.376471, 1)
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
# Handles background inputs (inputs when unfocused)
|
|
||||||
|
|
||||||
extends Node
|
|
||||||
|
|
||||||
signal key_pressed(key: Key)
|
|
||||||
signal key_released(key: Key)
|
|
||||||
signal all_keys_released
|
|
||||||
#background input capture
|
|
||||||
signal emptiedCapture
|
|
||||||
signal pressedKey
|
|
||||||
var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"]
|
|
||||||
|
|
||||||
var pressed_keys: Array[Key] = []
|
|
||||||
|
|
||||||
func should_fire_signal() -> bool:
|
|
||||||
return get_viewport().gui_get_focus_owner() == null or not DisplayServer.window_is_focused()
|
|
||||||
|
|
||||||
func _process(_delta):
|
|
||||||
# This is a Dictionary[Key, bool] but I can't return typed dicts nor cast them
|
|
||||||
var keys = BackgroundInputCapture.get_keys()
|
|
||||||
for key in keys:
|
|
||||||
if keys[key]:
|
|
||||||
pressed_keys.append(key)
|
|
||||||
if should_fire_signal():
|
|
||||||
key_pressed.emit(key)
|
|
||||||
else:
|
|
||||||
pressed_keys.erase(key)
|
|
||||||
if should_fire_signal():
|
|
||||||
key_released.emit(key)
|
|
||||||
#process_key_presses(keys)
|
|
||||||
#bgInputSprite(keys)
|
|
||||||
#
|
|
||||||
#func process_key_presses(keys_pressed: Dictionary[Key, bool]):
|
|
||||||
#if Global.main.fileSystemOpen:
|
|
||||||
#return
|
|
||||||
#
|
|
||||||
#var keyStrings = keys_pressed.map(
|
|
||||||
#func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i)
|
|
||||||
#)
|
|
||||||
#
|
|
||||||
#if keyStrings.size() <= 0:
|
|
||||||
#emit_signal("emptiedCapture")
|
|
||||||
#return
|
|
||||||
#
|
|
||||||
#if settingsMenu.awaitingCostumeInput >= 0:
|
|
||||||
#
|
|
||||||
#if keyStrings[0] == "Keycode1":
|
|
||||||
#if !settingsMenu.hasMouse:
|
|
||||||
#emit_signal("pressedKey")
|
|
||||||
#return
|
|
||||||
#
|
|
||||||
#var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput]
|
|
||||||
#costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0]
|
|
||||||
#Saving.settings["costumeKeys"] = costumeKeys
|
|
||||||
#Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"")
|
|
||||||
#emit_signal("pressedKey")
|
|
||||||
#
|
|
||||||
#for key in keyStrings:
|
|
||||||
#var i = costumeKeys.find(key)
|
|
||||||
#if i >= 0:
|
|
||||||
#changeCostume(i+1)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
## Handles background input for sprites
|
|
||||||
#func bgInputSprite(keys_pressed: Dictionary[Key, bool]):
|
|
||||||
#if fileSystemOpen:
|
|
||||||
#return
|
|
||||||
#
|
|
||||||
#if keys_pressed.size() <= 0:
|
|
||||||
#emit_signal("all_keys_released")
|
|
||||||
#return
|
|
||||||
#
|
|
||||||
#spriteVisToggles.emit(
|
|
||||||
#keys_pressed.map(
|
|
||||||
#func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i)
|
|
||||||
#)
|
|
||||||
#)
|
|
|
@ -1 +0,0 @@
|
||||||
uid://y12b1vin2hpt
|
|
|
@ -1,22 +0,0 @@
|
||||||
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
|
|
|
@ -1 +0,0 @@
|
||||||
uid://b73on8ic2acsv
|
|
|
@ -1,18 +0,0 @@
|
||||||
extends Resource
|
|
||||||
class_name Settings
|
|
||||||
|
|
||||||
@export_global_file var lastAvatar: String = ""
|
|
||||||
@export_range(0, 1, 0.05) var volume: float = 0.185
|
|
||||||
@export_range(0, 1, 0.05) var sense = 0.25
|
|
||||||
@export var windowSize = Vector2i(1280, 720)
|
|
||||||
@export var useStreamDeck = false
|
|
||||||
@export var bounce = 250
|
|
||||||
@export var gravity = 1000
|
|
||||||
@export var maxFPS: int = 60
|
|
||||||
@export var secondsToMicReset: float = 180
|
|
||||||
@export var backgroundColor: Color = Color.TRANSPARENT
|
|
||||||
@export var filtering = false
|
|
||||||
@export var costumeKeys: Array[Key] = [KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0]
|
|
||||||
@export var blinkSpeed: float = 1.0
|
|
||||||
@export var blinkChance = 200
|
|
||||||
@export var bounceOnCostumeChange = false
|
|
|
@ -1 +0,0 @@
|
||||||
uid://dmeqvexvccsav
|
|
|
@ -1,77 +0,0 @@
|
||||||
extends Resource
|
|
||||||
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_speed = 0
|
|
||||||
@export var frames = 1
|
|
||||||
@export var ignore_bounce = false
|
|
||||||
#@export_global_file var path = ""
|
|
||||||
@export var image: Texture2D
|
|
||||||
@export var offset = Vector2(0, 0)
|
|
||||||
@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.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.image = ImageTexture.create_from_image(image)
|
|
||||||
|
|
||||||
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
|
|
|
@ -1 +0,0 @@
|
||||||
uid://b07e67yn4uh6d
|
|
11
shader/wobble.gdshader
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
uniform sampler2D noise_texture:repeat_enable;
|
||||||
|
uniform float distortion_strengh: hint_range(0, 0.1) = 1.0;
|
||||||
|
uniform float speed: hint_range(0.1, 10) = 1.0;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec4 noise_pixel = texture(noise_texture, UV + floor(TIME*speed)/3.0);
|
||||||
|
vec2 uv_offset = (noise_pixel.rg * 2.0 - 1.0) * distortion_strengh;
|
||||||
|
COLOR = texture(TEXTURE, UV + uv_offset);
|
||||||
|
}
|
1
shader/wobble.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://ddgp8n4l7veuh
|
|
@ -1,21 +1,38 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
class_name SpriteObject
|
|
||||||
|
|
||||||
@onready var sprite = $WobbleOrigin/DragOrigin/Sprite
|
var type = "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")
|
|
||||||
|
|
||||||
var sprite_data: SpriteData
|
#Passed Variables
|
||||||
|
var imageData = null
|
||||||
|
var tex = null
|
||||||
|
@export var path = ""
|
||||||
|
|
||||||
|
var loadedImageData = null
|
||||||
|
|
||||||
|
var id = 0
|
||||||
|
var parentId = null
|
||||||
var parentSprite = null
|
var parentSprite = null
|
||||||
|
|
||||||
var imageSize = Vector2.ZERO
|
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
|
#Visuals
|
||||||
var size = Vector2(1, 1)
|
var mouseOffset = Vector2.ZERO
|
||||||
|
var grabDelay = 0
|
||||||
|
var size = Vector2(1,1)
|
||||||
|
|
||||||
var showOnTalk = 0
|
var showOnTalk = 0
|
||||||
var showOnBlink = 0
|
var showOnBlink = 0
|
||||||
|
@ -26,27 +43,82 @@ 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
|
||||||
|
|
||||||
|
#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 remadePolygon = false
|
||||||
|
|
||||||
|
var clipped = false
|
||||||
|
|
||||||
var tick = 0
|
var tick = 0
|
||||||
|
|
||||||
#Vis toggle
|
#Vis toggle
|
||||||
var toggle: Key = KEY_NONE
|
var toggle = "null"
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
InputHandler.key_pressed.connect(visToggle)
|
|
||||||
|
|
||||||
imageSize = sprite_data.image.get_size()
|
Global.main.spriteVisToggles.connect(visToggle)
|
||||||
|
|
||||||
sprite.texture = sprite_data.image
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
tex = texture
|
||||||
|
imageData = img
|
||||||
|
|
||||||
|
imageSize = img.get_size()
|
||||||
|
|
||||||
|
sprite.texture = tex
|
||||||
|
|
||||||
var bitmap = BitMap.new()
|
var bitmap = BitMap.new()
|
||||||
bitmap.create_from_image_alpha(sprite_data.image.get_image())
|
bitmap.create_from_image_alpha(imageData)
|
||||||
|
|
||||||
var polygons = bitmap.opaque_to_polygons(Rect2(Vector2(), bitmap.get_size()), 4.0)
|
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:
|
||||||
|
@ -61,10 +133,11 @@ func _ready():
|
||||||
grabArea.add_child(outline)
|
grabArea.add_child(outline)
|
||||||
|
|
||||||
size = imageData.get_size()
|
size = imageData.get_size()
|
||||||
|
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()
|
||||||
|
@ -134,7 +207,7 @@ func replaceSprite(pathNew):
|
||||||
|
|
||||||
sprite.offset = offset
|
sprite.offset = offset
|
||||||
|
|
||||||
grabArea.position = (size * -0.5) + offset
|
grabArea.position = (size*-0.5) + offset
|
||||||
|
|
||||||
if !b:
|
if !b:
|
||||||
remakePolygon()
|
remakePolygon()
|
||||||
|
@ -142,6 +215,7 @@ func replaceSprite(pathNew):
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
tick += 1
|
tick += 1
|
||||||
if Global.heldSprite == self:
|
if Global.heldSprite == self:
|
||||||
|
|
||||||
grabArea.visible = true
|
grabArea.visible = true
|
||||||
originSprite.visible = true
|
originSprite.visible = true
|
||||||
|
|
||||||
|
@ -158,17 +232,21 @@ func _process(delta):
|
||||||
|
|
||||||
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:
|
||||||
|
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:
|
||||||
|
@ -181,9 +259,9 @@ func setZIndex():
|
||||||
|
|
||||||
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 = (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))
|
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)
|
sprite.self_modulate.a = max(int(yes),faded)
|
||||||
|
|
||||||
func delete():
|
func delete():
|
||||||
queue_free()
|
queue_free()
|
||||||
|
@ -217,7 +295,7 @@ func moveSprite(dir):
|
||||||
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:
|
||||||
|
@ -233,36 +311,36 @@ 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
|
wob.position.x = sin(tick*xFrq)*xAmp
|
||||||
wob.position.y = sin(tick * yFrq) * yAmp
|
wob.position.y = sin(tick*yFrq)*yAmp
|
||||||
|
|
||||||
func rotationalDrag(length, delta):
|
func rotationalDrag(length,delta):
|
||||||
var yvel = (length * rdragStr)
|
var yvel = (length * rdragStr)
|
||||||
|
|
||||||
#Calculate Max angle
|
#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 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):
|
func changeCollision(enable):
|
||||||
grabArea.monitorable = enable
|
grabArea.monitorable = enable
|
||||||
|
@ -279,18 +357,18 @@ 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)
|
||||||
|
|
||||||
|
@ -317,8 +395,8 @@ func getAllLinkedSprites():
|
||||||
linkedSprites.append(node)
|
linkedSprites.append(node)
|
||||||
return linkedSprites
|
return linkedSprites
|
||||||
|
|
||||||
func visToggle(key: Key):
|
func visToggle(keys):
|
||||||
if key == toggle:
|
if keys.has(toggle):
|
||||||
$WobbleOrigin/DragOrigin.visible = !$WobbleOrigin/DragOrigin.visible
|
$WobbleOrigin/DragOrigin.visible = !$WobbleOrigin/DragOrigin.visible
|
||||||
|
|
||||||
func makeVis():
|
func makeVis():
|
||||||
|
|
|
@ -126,7 +126,7 @@ func _on_bounce_gravity_value_changed(value):
|
||||||
|
|
||||||
Global.pushUpdate("Bounce gravity value changed.")
|
Global.pushUpdate("Bounce gravity value changed.")
|
||||||
|
|
||||||
func costumeButtonsPressed(label: Label, id):
|
func costumeButtonsPressed(label,id):
|
||||||
label.text = "AWAITING INPUT"
|
label.text = "AWAITING INPUT"
|
||||||
await Global.main.emptiedCapture
|
await Global.main.emptiedCapture
|
||||||
awaitingCostumeInput = id - 1
|
awaitingCostumeInput = id - 1
|
||||||
|
|
|
@ -342,14 +342,15 @@ func _on_clip_linked_toggled(button_pressed):
|
||||||
|
|
||||||
|
|
||||||
func _on_delete_pressed():
|
func _on_delete_pressed():
|
||||||
Global.heldSprite.toggle = KEY_NONE
|
Global.heldSprite.toggle = "null"
|
||||||
$VisToggle/setToggle/Label.text = "toggle: \"%s\"" % OS.get_keycode_string(Global.heldSprite.toggle)
|
$VisToggle/setToggle/Label.text = "toggle: \"" + Global.heldSprite.toggle + "\""
|
||||||
Global.heldSprite.makeVis()
|
Global.heldSprite.makeVis()
|
||||||
|
|
||||||
func _on_set_toggle_pressed():
|
func _on_set_toggle_pressed():
|
||||||
$VisToggle/setToggle/Label.text = "toggle: AWAITING INPUT"
|
$VisToggle/setToggle/Label.text = "toggle: AWAITING INPUT"
|
||||||
await InputHandler.all_keys_released
|
await Global.main.fatfuckingballs
|
||||||
|
|
||||||
var key = await InputHandler.key_pressed
|
var keys = await Global.main.spriteVisToggles
|
||||||
|
var key = keys[0]
|
||||||
Global.heldSprite.toggle = key
|
Global.heldSprite.toggle = key
|
||||||
$VisToggle/setToggle/Label.text = "toggle: \"%s\"" % OS.get_keycode_string(Global.heldSprite.toggle)
|
$VisToggle/setToggle/Label.text = "toggle: \"" + Global.heldSprite.toggle + "\""
|
||||||
|
|