Add spine and dialogic museums

This commit is contained in:
2026-06-15 00:35:27 +02:00
parent 12efcbb4a6
commit a621366717
1088 changed files with 74220 additions and 0 deletions

0
docs/museums/.gitkeep Normal file
View File

View File

@@ -0,0 +1,42 @@
{
"@path": "res://addons/dialogic/Resources/character.gd",
"@subpath": NodePath(""),
&"_translation_id": "",
&"color": Color(0.8, 0.6, 0.3, 1),
&"custom_info": {
"prefix": "",
"sound_mood_default": "",
"sound_moods": {},
"style": "",
"suffix": ""
},
&"default_portrait": "pl5",
&"description": "A wise and cautious advisor.",
&"display_name": "Advisor",
&"mirror": false,
&"nicknames": [""],
&"offset": Vector2(0, 0),
&"portraits": {
"blink": {
"image": "res://addons/dialogic/Example Assets/portraits/Antonio/pl5 blink.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"doubt": {
"image": "res://addons/dialogic/Example Assets/portraits/Antonio/pl5 doubt.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"pl5": {
"image": "res://addons/dialogic/Example Assets/portraits/Antonio/pl5.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"surprise": {
"image": "res://addons/dialogic/Example Assets/portraits/Antonio/pl5 surprise.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
}
},
&"scale": 1.0
}

View File

@@ -0,0 +1 @@
uid://djkdsb6n611vd

View File

@@ -0,0 +1,42 @@
{
"@path": "res://addons/dialogic/Resources/character.gd",
"@subpath": NodePath(""),
&"_translation_id": "",
&"color": Color(0.3, 0.8, 0.3, 1),
&"custom_info": {
"prefix": "",
"sound_mood_default": "",
"sound_moods": {},
"style": "",
"suffix": ""
},
&"default_portrait": "happy",
&"description": "A wandering merchant with mysterious goods.",
&"display_name": "Merchant",
&"mirror": false,
&"nicknames": [""],
&"offset": Vector2(0, 0),
&"portraits": {
"blink": {
"image": "res://addons/dialogic/Example Assets/portraits/Jane/pl3 blink.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"confusion": {
"image": "res://addons/dialogic/Example Assets/portraits/Jane/pl3 confusion.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"happy": {
"image": "res://addons/dialogic/Example Assets/portraits/Jane/pl3 happy.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"surprise": {
"image": "res://addons/dialogic/Example Assets/portraits/Jane/pl3 surprise.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
}
},
&"scale": 1.0
}

View File

@@ -0,0 +1 @@
uid://ctp6h133vbn81

View File

@@ -0,0 +1,47 @@
{
"@path": "res://addons/dialogic/Resources/character.gd",
"@subpath": NodePath(""),
&"_translation_id": "",
&"color": Color(0.4, 0.6, 1, 1),
&"custom_info": {
"prefix": "",
"sound_mood_default": "",
"sound_moods": {},
"style": "",
"suffix": ""
},
&"default_portrait": "neutral",
&"description": "The main protagonist. Brave and curious.",
&"display_name": "Miko",
&"mirror": false,
&"nicknames": [""],
&"offset": Vector2(0, 0),
&"portraits": {
"anger": {
"image": "res://addons/dialogic/Example Assets/portraits/Princess/anger.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"joy": {
"image": "res://addons/dialogic/Example Assets/portraits/Princess/joy.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"neutral": {
"image": "res://addons/dialogic/Example Assets/portraits/Princess/neutral.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"shock": {
"image": "res://addons/dialogic/Example Assets/portraits/Princess/shock.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
},
"smile": {
"image": "res://addons/dialogic/Example Assets/portraits/Princess/smile.png",
"offset": Vector2(0, 0),
"scene": "res://addons/dialogic/Modules/Character/default_portrait.tscn"
}
},
&"scale": 1.0
}

View File

@@ -0,0 +1 @@
uid://bobyxwyl3l81t

View File

@@ -0,0 +1,53 @@
{
"@path": "res://addons/dialogic/Resources/character.gd",
"@subpath": NodePath(""),
&"_translation_id": "",
&"color": Color(0.4296875, 0, 1, 1),
&"custom_info": {
"prefix": "",
"sound_mood_default": "",
"sound_moods": {},
"style": "",
"suffix": ""
},
&"default_portrait": "walk",
&"description": "",
&"display_name": "Raptor",
&"mirror": false,
&"nicknames": ["Raptor"],
&"offset": Vector2(0, 0),
&"portraits": {
"jump": {
"export_overrides": {
"image": "",
"spine_skeleton_data_file": "\"res://docs/museums/spine/assets/raptor/raptor-data.tres\""
},
"ignore_char_scale": false,
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": "res://core/spine_dialogic_portrait.tscn"
},
"roar": {
"export_overrides": {
"image": "",
"spine_skeleton_data_file": "\"res://docs/museums/spine/assets/raptor/raptor-data.tres\""
},
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": "res://core/spine_dialogic_portrait.tscn"
},
"walk": {
"export_overrides": {
"image": "",
"spine_skeleton_data_file": "\"res://docs/museums/spine/assets/raptor/raptor-data.tres\""
},
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": "res://core/spine_dialogic_portrait.tscn"
}
},
&"scale": 1.0
}

View File

@@ -0,0 +1 @@
uid://bw6qijlpfi3ms

View File

@@ -0,0 +1,35 @@
# ============================================================
# Raptor Portrait Showcase
# Demonstrates the three spine-animated portraits:
# walk, jump, roar
# ============================================================
join Raptor (walk) center
Raptor (walk): Watch me walk around. I'm fully animated!
[wait time="2.0"]
update Raptor (jump) center
Raptor (jump): Wheee! I can jump too!
[wait time="1.5"]
update Raptor (walk) center
Raptor (walk): Back to walking...
[wait time="1.5"]
update Raptor (roar) center
Raptor (roar): Roooaaar! Hear me roar!
[wait time="2.0"]
update Raptor (walk) center
Raptor (walk): That's all three portraits. Pretty cool, right?
[end_timeline]

View File

@@ -0,0 +1 @@
uid://dvn3s8fqqthox

View File

@@ -0,0 +1,12 @@
extends Node2D
@export var start_timeline: DialogicTimeline
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
Dialogic.start(start_timeline)
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass

View File

@@ -0,0 +1 @@
uid://dihfboq6b0d0g

View File

@@ -0,0 +1,8 @@
[gd_scene format=3 uid="uid://dlf2wgrgn120w"]
[ext_resource type="Script" uid="uid://dihfboq6b0d0g" path="res://docs/museums/dialogic/raptor_showcase.gd" id="1_soelo"]
[ext_resource type="Resource" uid="uid://dvn3s8fqqthox" path="res://docs/museums/dialogic/raptor_showcase.dtl" id="2_5alpn"]
[node name="Start" type="Node2D" unique_id=165770346]
script = ExtResource("1_soelo")
start_timeline = ExtResource("2_5alpn")

View File

@@ -0,0 +1,124 @@
# ============================================================
# Dialogic 2 Test Timeline — Feature Showcase
# ============================================================
# Characters available:
# Miko — portraits: neutral, smile, joy, anger, shock
# Advisor — portraits: pl5, blink, doubt, surprise
# Merchant — portraits: happy, blink, surprise, confusion
# ============================================================
# ---- SETUP: Variables --------------------------------------
set {coins} = 0
set {player_has_key} = false
set {met_merchant} = false
# ---- LABEL: opening ----------------------------------------
label opening
# Join both main characters at the start
join Miko center
join Advisor right
Miko (joy): Welcome to the Dialogic 2 Test Timeline!
Advisor (pl5): This timeline showcases all major Dialogic features.
# ---- TEXT: BBCode & text effects --------------------------
Miko (joy): Hi there! I'm Miko, and this is a [b]bold[/b] text test.
Miko (joy): [speed=0.02]I can speak slowly too...
Miko (joy): And now I'm back to normal speed.
Advisor (pl5): Remember, [color=red]colored text[/color] works as well.
Advisor (pl5): [pause=1.0] ...and so do timed pauses.
# ---- CONDITION: Variable-based branching ------------------
if {coins} == 0:
Miko (doubt): I don't have any coins yet. Let's find some!
Advisor (doubt): We should look around carefully.
else:
Miko (joy): Nice, I already have some coins!
Advisor (pl5): Good. That will come in handy.
# ---- VARIABLE: Set a variable -----------------------------
set {coins} = 10
Miko (joy): [shake]Look![/shake] I just found 10 coins.
# ---- LABEL: merchant_encounter ----------------------------
label merchant_encounter
join Merchant left
Miko (neutral): A merchant appeared. Let's see what he has.
Advisor (doubt): Be cautious, Miko. Don't reveal everything you carry.
Merchant (happy): Welcome, traveler! Would you like to see my wares?
# ---- CHOICE: Branching dialog -----------------------------
- Yes, show me what you've got!
set {met_merchant} = true
Miko (joy): Absolutely, show me your best items!
Merchant (happy): Excellent choice! I have potions, scrolls, and enchanted blades.
Merchant (blink): That will be {10/15/20} gold coins, please!
set {coins} = -10
Miko (shock): Here you go! That was expensive...
Advisor (blink): Did you really have to spend all our coins?
- Not right now, maybe later.
Miko (neutral): I'll come back when I have more gold.
Merchant (happy): Suit yourself. The door is always open.
Advisor (pl5): A wise decision.
- Use the ancient key to barter. | [if {player_has_key}]
Miko (smile): I have this ancient key. Will you trade for it?
Merchant (surprise): [shake]A key from the old kingdom?![/shake] Take anything you want!
set {player_has_key} = false
Miko (joy): That was a great deal!
Advisor (surprise): You traded the key?! That was reckless...
# ---- SIGNAL: Emit a custom signal -------------------------
[signal arg=item_bought]
Merchant (happy): Pleasure doing business with you!
Miko (smile): Thanks, merchant!
Advisor (pl5): Let's keep moving. We have ground to cover.
# ---- WAIT: Timed pause (seconds) --------------------------
[wait time="1.0"]
Miko (neutral): Let's keep exploring.
# ---- JUMP & LABEL: Navigation -----------------------------
jump secret_room
# ---- LABEL: farewell (unreachable via normal flow) --------
label farewell
Miko (smile): Goodbye for now!
Advisor (pl5): Until next time.
[end_timeline]
# ---- LABEL: secret_room -----------------------------------
label secret_room
leave Merchant
Miko (surprise): Hey, the merchant disappeared... and there's a hidden door here!
Advisor (doubt): Careful, Miko. We don't know what's inside.
Miko (neutral): You're right, but we have to check it out.
Advisor (pl5): Very well. I'll follow your lead.
# ---- CONDITION with ELSE ----------------------------------
if {player_has_key}:
Miko (joy): Good thing we still have the ancient key. Let's open it!
Advisor (surprise): The key glows faintly as you approach.
Miko (smile): Here goes nothing...
[signal arg=door_opened]
else:
Miko (anger): Darn, we used the key at the shop. How do we open this?
Advisor (pl5): Maybe we can find another way around.
Miko (doubt): I guess we'll have to search for another entrance.
Advisor (doubt): Patience. Every lock has its key.
# ---- JUMP to farewell label -------------------------------
Miko (smile): Well, that's the end of the test timeline!
Advisor (pl5): A successful demonstration, I'd say.
jump farewell
# End

View File

@@ -0,0 +1 @@
uid://f2wb7cq7gtv6

View File

@@ -0,0 +1,8 @@
[gd_resource type="SpineSkeletonDataResource" format=3 uid="uid://d1ordmjpe5kt7"]
[ext_resource type="SpineAtlasResource" uid="uid://syvy0bxbnwgi" path="res://docs/museums/spine/assets/celestial-circus/celestial-circus.atlas" id="1_fs1an"]
[ext_resource type="SpineSkeletonFileResource" uid="uid://doan7yl2by7vm" path="res://docs/museums/spine/assets/celestial-circus/celestial-circus.skel" id="2_sbom4"]
[resource]
atlas_res = ExtResource("1_fs1an")
skeleton_file_res = ExtResource("2_sbom4")

View File

@@ -0,0 +1,148 @@
celestial-circus.png
size: 2048, 1024
filter: Linear, Linear
scale: 0.4
arm-back-down
bounds: 204, 297, 38, 82
arm-back-up
bounds: 2, 92, 83, 116
arm-front-down
bounds: 88, 318, 36, 78
arm-front-up
bounds: 733, 76, 77, 116
bench
bounds: 409, 131, 189, 48
body-bottom
bounds: 562, 260, 154, 124
body-top
bounds: 433, 203, 126, 132
offsets: 0, 0, 126, 133
chest
bounds: 847, 468, 104, 93
cloud-back
bounds: 643, 416, 202, 165
cloud-front
bounds: 624, 582, 325, 196
rotate: 180
collar
bounds: 175, 752, 47, 26
ear
bounds: 293, 750, 20, 28
eye-back-shadow
bounds: 474, 768, 14, 10
eye-front-shadow
bounds: 642, 764, 24, 14
eye-reflex-back
bounds: 1012, 771, 8, 7
eye-reflex-front
bounds: 668, 763, 10, 7
eye-white-back
bounds: 353, 762, 13, 16
eye-white-front
bounds: 556, 761, 22, 17
eyelashes-down-back
bounds: 995, 764, 11, 6
eyelashes-down-front
bounds: 995, 772, 15, 6
eyelashes-top-back
bounds: 877, 768, 18, 10
eyelashes-top-front
bounds: 851, 762, 30, 16
face
bounds: 87, 64, 91, 102
offsets: 2, 0, 93, 102
feathers-back
bounds: 596, 416, 46, 46
feathers-front
bounds: 101, 460, 72, 86
fringe-middle-back
bounds: 103, 502, 33, 52
fringe-middle-front
bounds: 899, 103, 60, 50
fringe-side-back
bounds: 413, 505, 27, 94
fringe-side-front
bounds: 14, 557, 26, 93
glove-bottom-back
bounds: 589, 737, 51, 41
glove-bottom-front
bounds: 126, 730, 47, 48
hair-back-1
bounds: 572, 170, 132, 306
rotate: 270
hair-back-2
bounds: 163, 2, 80, 285
hair-back-3
bounds: 952, 37, 70, 268
hair-back-4
bounds: 14, 326, 88, 262
hair-back-5
bounds: 934, 517, 88, 279
rotate: 90
hair-back-6
bounds: 353, 63, 88, 286
rotate: 180
hair-hat-shadow
bounds: 903, 737, 90, 41
hand-back
bounds: 409, 82, 60, 47
hand-front
bounds: 99, 398, 53, 60
hat-back
bounds: 951, 690, 64, 45
hat-front
bounds: 376, 722, 96, 56
head-back
bounds: 600, 82, 102, 86
jabot
bounds: 240, 78, 70, 55
leg-back
bounds: 812, 130, 210, 333
leg-front
bounds: 14, 210, 258, 320
logo-brooch
bounds: 335, 753, 16, 25
mouth
bounds: 668, 772, 22, 6
neck
bounds: 515, 73, 39, 56
nose
bounds: 895, 765, 6, 7
nose-highlight
bounds: 28, 774, 4, 4
nose-shadow
bounds: 580, 770, 7, 8
pupil-back
bounds: 244, 764, 10, 14
pupil-front
bounds: 14, 760, 12, 18
rope-back
bounds: 2, 286, 10, 492
rope-front
bounds: 2, 286, 10, 492
rope-front-bottom
bounds: 471, 64, 42, 65
skirt
bounds: 14, 532, 440, 246
sock-bow
bounds: 258, 746, 33, 32
spine-logo-body
bounds: 320, 746, 13, 32
star-big
bounds: 224, 754, 18, 24
star-medium
bounds: 368, 770, 6, 8
star-small
bounds: 34, 774, 3, 4
underskirt
bounds: 414, 333, 445, 228
rotate: 270
underskirt-back
bounds: 243, 125, 433, 171
rotate: 90
wing-back
bounds: 876, 576, 146, 252
rotate: 90
wing-front
bounds: 718, 285, 304, 248
rotate: 180

View File

@@ -0,0 +1,16 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://syvy0bxbnwgi"
path="res://.godot/imported/celestial-circus.atlas-e2b957b64e61bef3a4e2b6dc5cfd2b3b.spatlas"
[deps]
source_file="res://docs/museums/spine/assets/celestial-circus/celestial-circus.atlas"
dest_files=["res://.godot/imported/celestial-circus.atlas-e2b957b64e61bef3a4e2b6dc5cfd2b3b.spatlas"]
[params]
normal_map_prefix="n"
specular_map_prefix="s"

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d27f2nxof5i18"
path="res://.godot/imported/celestial-circus.png-b137f5e89d482ea3542387336fed2f0f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/celestial-circus/celestial-circus.png"
dest_files=["res://.godot/imported/celestial-circus.png-b137f5e89d482ea3542387336fed2f0f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.skel"
type="SpineSkeletonFileResource"
uid="uid://doan7yl2by7vm"
path="res://.godot/imported/celestial-circus.skel-88d4832c09a3a1cbf3a4d345f07f0722.spskel"
[deps]
source_file="res://docs/museums/spine/assets/celestial-circus/celestial-circus.skel"
dest_files=["res://.godot/imported/celestial-circus.skel-88d4832c09a3a1cbf3a4d345f07f0722.spskel"]
[params]

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://baym8211e1as0"
path="res://.godot/imported/celestial-circus_2.png-10ce6d37d52bd6e8495aa1b68f8b3576.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/celestial-circus/celestial-circus_2.png"
dest_files=["res://.godot/imported/celestial-circus_2.png-10ce6d37d52bd6e8495aa1b68f8b3576.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://can7k84o8svum"
path="res://.godot/imported/footstep.ogg-2795ae221611df0dd408e9bbdaa8bb95.oggvorbisstr"
[deps]
source_file="res://docs/museums/spine/assets/footstep.ogg"
dest_files=["res://.godot/imported/footstep.ogg-2795ae221611df0dd408e9bbdaa8bb95.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,8 @@
[gd_resource type="SpineSkeletonDataResource" format=3 uid="uid://btsqcvy7c5y8x"]
[ext_resource type="SpineAtlasResource" uid="uid://cvu8lycjkd245" path="res://docs/museums/spine/assets/mix-and-match/mix-and-match.atlas" id="1"]
[ext_resource type="SpineSkeletonFileResource" uid="uid://ckitsrtfxmo2w" path="res://docs/museums/spine/assets/mix-and-match/mix-and-match-pro.spine-json" id="2"]
[resource]
atlas_res = ExtResource("1")
skeleton_file_res = ExtResource("2")

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.json"
type="SpineSkeletonFileResource"
uid="uid://ckitsrtfxmo2w"
path="res://.godot/imported/mix-and-match-pro.spine-json-d43b087c448cd26f3f0e9b350f4314bb.spjson"
[deps]
source_file="res://docs/museums/spine/assets/mix-and-match/mix-and-match-pro.spine-json"
dest_files=["res://.godot/imported/mix-and-match-pro.spine-json-d43b087c448cd26f3f0e9b350f4314bb.spjson"]
[params]

View File

@@ -0,0 +1,326 @@
mix-and-match.png
size: 2048, 512
filter: Linear, Linear
scale: 0.5
base-head
bounds: 378, 110, 95, 73
boy/arm-front
bounds: 345, 55, 36, 115
rotate: 180
boy/backpack
bounds: 498, 258, 119, 153
rotate: 270
boy/backpack-pocket
bounds: 985, 6, 34, 62
boy/backpack-strap-front
bounds: 888, 6, 38, 88
boy/backpack-up
bounds: 795, 9, 21, 70
boy/body
bounds: 250, 171, 97, 132
rotate: 90
boy/boot-ribbon-front
bounds: 396, 366, 9, 11
boy/collar
bounds: 129, 46, 73, 29
boy/ear
bounds: 117, 194, 19, 23
boy/eye-back-low-eyelid
bounds: 773, 276, 17, 6
boy/eye-back-pupil
bounds: 120, 255, 8, 9
boy/eye-back-up-eyelid
bounds: 224, 354, 23, 5
rotate: 270
boy/eye-back-up-eyelid-back
bounds: 375, 258, 19, 10
boy/eye-front-low-eyelid
bounds: 167, 361, 22, 7
boy/eye-front-pupil
bounds: 494, 353, 9, 9
boy/eye-front-up-eyelid
bounds: 155, 346, 31, 6
rotate: 270
boy/eye-front-up-eyelid-back
bounds: 322, 368, 26, 9
boy/eye-iris-back
bounds: 692, 33, 17, 17
boy/eye-iris-front
bounds: 1003, 75, 18, 18
boy/eye-white-back
bounds: 1002, 219, 20, 12
boy/eye-white-front
bounds: 560, 249, 27, 13
boy/eyebrow-back
bounds: 281, 366, 20, 11
boy/eyebrow-front
bounds: 254, 366, 25, 11
boy/hair-back
bounds: 737, 81, 122, 81
rotate: 270
boy/hair-bangs
bounds: 102, 18, 70, 37
boy/hair-side
bounds: 939, 105, 25, 43
boy/hand-backfingers
bounds: 494, 45, 19, 21
boy/hand-front-fingers
bounds: 313, 108, 19, 21
boy/hat
bounds: 817, 126, 93, 56
boy/leg-front
bounds: 90, 219, 31, 158
rotate: 180
boy/mouth-close
bounds: 231, 372, 21, 5
girl-blue-cape/mouth-close
bounds: 231, 372, 21, 5
girl-spring-dress/mouth-close
bounds: 231, 372, 21, 5
girl/mouth-close
bounds: 231, 372, 21, 5
boy/mouth-smile
bounds: 193, 370, 29, 7
boy/nose
bounds: 303, 367, 17, 10
boy/pompom
bounds: 820, 40, 48, 43
boy/zip
bounds: 1006, 260, 14, 23
girl-blue-cape/back-eyebrow
bounds: 623, 145, 18, 12
girl-blue-cape/body-dress
bounds: 155, 268, 109, 241
offsets: 0, 0, 109, 246
rotate: 90
girl-blue-cape/body-ribbon
bounds: 743, 41, 50, 38
girl-blue-cape/cape-back
bounds: 383, 184, 134, 193
rotate: 180
girl-blue-cape/cape-back-up
bounds: 518, 139, 123, 106
girl-blue-cape/cape-ribbon
bounds: 295, 33, 50, 18
girl-blue-cape/cape-shoulder-back
bounds: 601, 15, 49, 59
girl-blue-cape/cape-shoulder-front
bounds: 901, 68, 62, 76
girl-blue-cape/cape-up-front
bounds: 924, 123, 98, 117
rotate: 90
girl-blue-cape/ear
bounds: 951, 286, 19, 23
girl-spring-dress/ear
bounds: 951, 286, 19, 23
girl/ear
bounds: 951, 286, 19, 23
girl-blue-cape/eye-back-low-eyelid
bounds: 350, 371, 17, 6
girl-spring-dress/eye-back-low-eyelid
bounds: 350, 371, 17, 6
girl/eye-back-low-eyelid
bounds: 350, 371, 17, 6
girl-blue-cape/eye-back-pupil
bounds: 972, 291, 8, 9
girl-spring-dress/eye-back-pupil
bounds: 972, 291, 8, 9
girl/eye-back-pupil
bounds: 972, 291, 8, 9
girl-blue-cape/eye-back-up-eyelid
bounds: 72, 107, 24, 12
girl-spring-dress/eye-back-up-eyelid
bounds: 72, 107, 24, 12
girl/eye-back-up-eyelid
bounds: 72, 107, 24, 12
girl-blue-cape/eye-back-up-eyelid-back
bounds: 647, 275, 17, 11
girl-spring-dress/eye-back-up-eyelid-back
bounds: 647, 275, 17, 11
girl/eye-back-up-eyelid-back
bounds: 647, 275, 17, 11
girl-blue-cape/eye-front-low-eyelid
bounds: 587, 254, 18, 6
girl-spring-dress/eye-front-low-eyelid
bounds: 587, 254, 18, 6
girl/eye-front-low-eyelid
bounds: 587, 254, 18, 6
girl-blue-cape/eye-front-pupil
bounds: 640, 368, 9, 9
girl-spring-dress/eye-front-pupil
bounds: 640, 368, 9, 9
girl/eye-front-pupil
bounds: 640, 368, 9, 9
girl-blue-cape/eye-front-up-eyelid
bounds: 2, 26, 30, 14
girl-spring-dress/eye-front-up-eyelid
bounds: 2, 26, 30, 14
girl/eye-front-up-eyelid
bounds: 2, 26, 30, 14
girl-blue-cape/eye-front-up-eyelid-back
bounds: 228, 114, 26, 11
girl-spring-dress/eye-front-up-eyelid-back
bounds: 228, 114, 26, 11
girl/eye-front-up-eyelid-back
bounds: 228, 114, 26, 11
girl-blue-cape/eye-iris-back
bounds: 354, 36, 17, 17
girl-blue-cape/eye-iris-front
bounds: 1004, 95, 18, 18
girl-blue-cape/eye-white-back
bounds: 608, 245, 20, 16
girl-spring-dress/eye-white-back
bounds: 608, 245, 20, 16
girl-blue-cape/eye-white-front
bounds: 791, 206, 20, 16
girl-spring-dress/eye-white-front
bounds: 791, 206, 20, 16
girl/eye-white-front
bounds: 791, 206, 20, 16
girl-blue-cape/front-eyebrow
bounds: 67, 153, 18, 12
girl-blue-cape/hair-back
bounds: 813, 184, 117, 98
girl-blue-cape/hair-bangs
bounds: 378, 68, 91, 40
girl-blue-cape/hair-head-side-back
bounds: 507, 232, 30, 52
rotate: 90
girl-blue-cape/hair-head-side-front
bounds: 59, 27, 41, 42
girl-blue-cape/hair-side
bounds: 947, 2, 36, 71
rotate: 180
girl-blue-cape/hand-front-fingers
bounds: 578, 116, 19, 21
girl-spring-dress/hand-front-fingers
bounds: 578, 116, 19, 21
girl-blue-cape/leg-front
bounds: 60, 219, 30, 158
rotate: 180
girl-blue-cape/mouth-smile
bounds: 162, 370, 29, 7
girl-spring-dress/mouth-smile
bounds: 162, 370, 29, 7
girl/mouth-smile
bounds: 162, 370, 29, 7
girl-blue-cape/nose
bounds: 972, 302, 11, 7
girl-spring-dress/nose
bounds: 972, 302, 11, 7
girl/nose
bounds: 972, 302, 11, 7
girl-blue-cape/sleeve-back
bounds: 599, 113, 42, 29
girl-blue-cape/sleeve-front
bounds: 472, 68, 52, 119
rotate: 180
girl-spring-dress/arm-front
bounds: 122, 266, 17, 111
girl-spring-dress/back-eyebrow
bounds: 904, 170, 18, 12
girl-spring-dress/body-up
bounds: 951, 311, 64, 66
girl-spring-dress/cloak-down
bounds: 65, 167, 50, 50
girl-spring-dress/cloak-up
bounds: 515, 84, 61, 58
offsets: 0, 0, 64, 58
girl-spring-dress/eye-iris-back
bounds: 882, 112, 17, 17
girl-spring-dress/eye-iris-front
bounds: 932, 211, 18, 18
girl-spring-dress/front-eyebrow
bounds: 643, 202, 18, 12
girl-spring-dress/hair-back
bounds: 802, 284, 147, 93
girl-spring-dress/hair-bangs
bounds: 67, 70, 91, 40
girl-spring-dress/hair-head-side-back
bounds: 549, 7, 30, 52
girl-spring-dress/hair-head-side-front
bounds: 451, 28, 41, 42
girl-spring-dress/hair-side
bounds: 370, 8, 36, 71
rotate: 180
girl-spring-dress/leg-front
bounds: 30, 219, 30, 158
rotate: 180
girl-spring-dress/neck
bounds: 928, 34, 20, 32
girl-spring-dress/shoulder-ribbon
bounds: 174, 20, 36, 24
girl-spring-dress/skirt
bounds: 629, 201, 182, 81
girl-spring-dress/underskirt
bounds: 2, 42, 175, 65
rotate: 90
girl/arm-front
bounds: 986, 280, 36, 115
rotate: 90
girl/back-eyebrow
bounds: 53, 205, 18, 12
girl/bag-base
bounds: 164, 93, 62, 58
girl/bag-strap-front
bounds: 141, 282, 12, 95
offsets: 0, 1, 12, 96
girl/bag-top
bounds: 407, 12, 49, 50
girl/body
bounds: 138, 152, 97, 132
girl/boot-ribbon-front
bounds: 491, 364, 13, 13
girl/eye-iris-back
bounds: 237, 255, 17, 17
girl/eye-iris-front
bounds: 195, 350, 18, 18
girl/eye-white-back
bounds: 791, 266, 20, 16
girl/front-eyebrow
bounds: 231, 358, 18, 12
girl/hair-back
bounds: 653, 284, 147, 93
girl/hair-bangs
bounds: 577, 72, 91, 40
girl/hair-flap-down-front
bounds: 178, 27, 70, 65
girl/hair-head-side-back
bounds: 870, 25, 30, 52
girl/hair-head-side-front
bounds: 252, 39, 41, 42
girl/hair-patch
bounds: 820, 85, 66, 41
girl/hair-side
bounds: 511, 12, 36, 71
rotate: 180
girl/hair-strand-back-1
bounds: 642, 23, 56, 74
offsets: 2, 0, 58, 74
girl/hair-strand-back-2
bounds: 221, 79, 90, 53
offsets: 1, 0, 91, 58
girl/hair-strand-back-3
bounds: 643, 107, 92, 79
rotate: 90
girl/hair-strand-front-1
bounds: 966, 69, 38, 94
girl/hair-strand-front-2
bounds: 547, 37, 70, 50
girl/hair-strand-front-3
bounds: 699, 25, 44, 81
girl/hand-front-fingers
bounds: 231, 179, 19, 21
girl/hat
bounds: 69, 109, 93, 82
rotate: 180
girl/leg-front
bounds: 2, 219, 30, 158
girl/pompom
bounds: 295, 53, 48, 43
girl/scarf
bounds: 217, 126, 119, 51
girl/scarf-back
bounds: 932, 231, 72, 51
girl/zip
bounds: 724, 174, 19, 25

View File

@@ -0,0 +1,16 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://cvu8lycjkd245"
path="res://.godot/imported/mix-and-match.atlas-3907472f2fddce2b3ee909c34175130a.spatlas"
[deps]
source_file="res://docs/museums/spine/assets/mix-and-match/mix-and-match.atlas"
dest_files=["res://.godot/imported/mix-and-match.atlas-3907472f2fddce2b3ee909c34175130a.spatlas"]
[params]
normal_map_prefix="n"
specular_map_prefix="s"

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkpeve6qcxa70"
path="res://.godot/imported/mix-and-match.png-d5a897ebe2930a03819bf9801689876f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/mix-and-match/mix-and-match.png"
dest_files=["res://.godot/imported/mix-and-match.png-d5a897ebe2930a03819bf9801689876f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -0,0 +1,15 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://c75mtwn6dnkwp"
path="res://.godot/imported/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas"
[deps]
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.atlas"
dest_files=["res://.godot/imported/Raggedy Spineboy.atlas-07f7c6b30431397bcf472b18d48851e0.spatlas"]
[params]
normal_map_prefix="n"

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://couyrsq850nh6"
path="res://.godot/imported/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/raggedyspineboy/Raggedy Spineboy.png"
dest_files=["res://.godot/imported/Raggedy Spineboy.png-8982b59aad5b612b7ed1a5da8b447d00.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
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

View File

@@ -0,0 +1,8 @@
[gd_resource type="SpineSkeletonDataResource" load_steps=3 format=2]
[ext_resource path="res://assets/raggedyspineboy/Raggedy Spineboy.atlas" type="SpineAtlasResource" id=1]
[ext_resource path="res://assets/raggedyspineboy/raggedy spineboy.spine-json" type="SpineSkeletonFileResource" id=2]
[resource]
atlas_res = ExtResource( 1 )
skeleton_file_res = ExtResource( 2 )

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.json"
type="SpineSkeletonFileResource"
uid="uid://2iqykoiop2tc"
path="res://.godot/imported/raggedy spineboy.spine-json-d90ee4b829503274afa3dbf64c369460.spjson"
[deps]
source_file="res://assets/raggedyspineboy/raggedy spineboy.spine-json"
dest_files=["res://.godot/imported/raggedy spineboy.spine-json-d90ee4b829503274afa3dbf64c369460.spjson"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cggfs567rn1ay"
path="res://.godot/imported/light-sprite.png-1af54860ca551b2e2cf5502116dc200f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/raptor/light-sprite.png"
dest_files=["res://.godot/imported/light-sprite.png-1af54860ca551b2e2cf5502116dc200f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dnjt8gyvsw0l8"
path="res://.godot/imported/n_raptor.png-bf214064d3bc9cfa5783f08a9aae76da.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/raptor/n_raptor.png"
dest_files=["res://.godot/imported/n_raptor.png-bf214064d3bc9cfa5783f08a9aae76da.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -0,0 +1,9 @@
[gd_resource type="SpineSkeletonDataResource" format=3 uid="uid://c53t4xfil8g8g"]
[ext_resource type="SpineAtlasResource" uid="uid://dhtyf5vltqsjg" path="res://docs/museums/spine/assets/raptor/raptor.atlas" id="2"]
[ext_resource type="SpineSkeletonFileResource" uid="uid://dor8huwld4f84" path="res://docs/museums/spine/assets/raptor/raptor-pro.skel" id="2_ssu6e"]
[resource]
atlas_res = ExtResource("2")
skeleton_file_res = ExtResource("2_ssu6e")
default_mix = 0.2

Binary file not shown.

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.skel"
type="SpineSkeletonFileResource"
uid="uid://dor8huwld4f84"
path="res://.godot/imported/raptor-pro.skel-6ae8a6479e7ce05e4941e7bb5d2c0f0b.spskel"
[deps]
source_file="res://docs/museums/spine/assets/raptor/raptor-pro.skel"
dest_files=["res://.godot/imported/raptor-pro.skel-6ae8a6479e7ce05e4941e7bb5d2c0f0b.spskel"]
[params]

View File

@@ -0,0 +1,85 @@
raptor.png
size: 1024, 512
filter: Linear, Linear
scale: 0.5
back-arm
bounds: 206, 49, 46, 25
back-bracer
bounds: 498, 42, 39, 28
back-hand
bounds: 400, 55, 36, 34
back-knee
bounds: 498, 72, 49, 67
back-thigh
bounds: 254, 40, 39, 24
eyes-open
bounds: 232, 328, 47, 45
front-arm
bounds: 350, 63, 48, 26
front-bracer
bounds: 163, 56, 41, 29
front-hand
bounds: 956, 231, 41, 38
front-open-hand
bounds: 770, 329, 43, 44
front-thigh
bounds: 897, 240, 57, 29
gun
bounds: 915, 106, 107, 103
gun-nohand
bounds: 916, 271, 105, 102
head
bounds: 626, 81, 136, 149
lower-leg
bounds: 551, 42, 73, 98
mouth-grind
bounds: 2, 64, 47, 30
mouth-smile
bounds: 841, 127, 47, 30
neck
bounds: 281, 352, 18, 21
raptor-back-arm
bounds: 80, 11, 82, 86
raptor-body
bounds: 2, 140, 632, 233
raptor-front-arm
bounds: 911, 2, 81, 102
raptor-front-leg
bounds: 524, 182, 191, 257
rotate: 90
raptor-hindleg-back
bounds: 745, 158, 169, 215
rotate: 180
raptor-horn
bounds: 2, 293, 182, 80
raptor-horn-back
bounds: 174, 123, 176, 77
raptor-jaw
bounds: 772, 35, 126, 138
rotate: 270
raptor-jaw-tooth
bounds: 686, 242, 37, 48
raptor-mouth-inside
bounds: 755, 39, 36, 41
raptor-saddle-strap-back
bounds: 626, 26, 54, 74
raptor-saddle-strap-front
bounds: 2, 96, 57, 95
raptor-saddle-w-shadow
bounds: 2, 88, 162, 171
rotate: 90
raptor-tail-shadow
bounds: 159, 58, 189, 63
raptor-tongue
bounds: 685, 33, 86, 64
stirrup-back
bounds: 783, 204, 44, 35
stirrup-front
bounds: 185, 323, 45, 50
stirrup-strap
bounds: 636, 217, 49, 46
torso
bounds: 442, 48, 54, 91
visor
bounds: 356, 91, 131, 84
rotate: 90

View File

@@ -0,0 +1,16 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://dhtyf5vltqsjg"
path="res://.godot/imported/raptor.atlas-cf96533187782b749bc06e166649c114.spatlas"
[deps]
source_file="res://docs/museums/spine/assets/raptor/raptor.atlas"
dest_files=["res://.godot/imported/raptor.atlas-cf96533187782b749bc06e166649c114.spatlas"]
[params]
normal_map_prefix="n"
specular_map_prefix="s"

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ucvdpil67hul"
path="res://.godot/imported/raptor.png-6d19fe129bbc42395bd492136111d161.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/raptor/raptor.png"
dest_files=["res://.godot/imported/raptor.png-6d19fe129bbc42395bd492136111d161.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -0,0 +1,20 @@
[gd_resource type="SpineSkeletonDataResource" format=3 uid="uid://cb6rn6vonqbx0"]
[ext_resource type="SpineAtlasResource" uid="uid://dt2kctrit34y0" path="res://docs/museums/spine/assets/spineboy/spineboy.atlas" id="2"]
[ext_resource type="SpineSkeletonFileResource" uid="uid://bngulrxfavqyn" path="res://docs/museums/spine/assets/spineboy/spineboy-pro.spine-json" id="2_fkogq"]
[sub_resource type="SpineAnimationMix" id="1"]
from = "idle"
to = "run"
mix = 0.2
[sub_resource type="SpineAnimationMix" id="2"]
from = "run"
to = "idle"
mix = 0.2
[resource]
atlas_res = ExtResource("2")
skeleton_file_res = ExtResource("2_fkogq")
default_mix = 0.1
animation_mixes = [SubResource("1"), SubResource("2")]

Binary file not shown.

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.skel"
type="SpineSkeletonFileResource"
uid="uid://cth0eypg16cgi"
path="res://.godot/imported/spineboy-pro.skel-a3be0a1e3d61ac4033486271479d78df.spskel"
[deps]
source_file="res://docs/museums/spine/assets/spineboy/spineboy-pro.skel"
dest_files=["res://.godot/imported/spineboy-pro.skel-a3be0a1e3d61ac4033486271479d78df.spskel"]
[params]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
[remap]
importer="spine.json"
type="SpineSkeletonFileResource"
uid="uid://bngulrxfavqyn"
path="res://.godot/imported/spineboy-pro.spine-json-d2bd1ebb8910bfb23807a23eb2ac9203.spjson"
[deps]
source_file="res://docs/museums/spine/assets/spineboy/spineboy-pro.spine-json"
dest_files=["res://.godot/imported/spineboy-pro.spine-json-d2bd1ebb8910bfb23807a23eb2ac9203.spjson"]
[params]

View File

@@ -0,0 +1,84 @@
spineboy.png
size: 1024, 256
filter: Linear, Linear
scale: 0.5
crosshair
bounds: 186, 17, 45, 45
eye-indifferent
bounds: 137, 17, 47, 45
eye-surprised
bounds: 623, 45, 47, 45
front-bracer
bounds: 613, 3, 29, 40
front-fist-closed
bounds: 278, 2, 38, 41
front-fist-open
bounds: 233, 18, 43, 44
front-foot
bounds: 72, 39, 63, 35
front-shin
bounds: 952, 41, 41, 92
front-thigh
bounds: 995, 120, 23, 56
front-upper-arm
bounds: 995, 69, 23, 49
goggles
bounds: 167, 64, 131, 83
gun
bounds: 300, 45, 105, 102
head
bounds: 29, 76, 136, 149
hoverboard-board
bounds: 167, 149, 246, 76
hoverboard-thruster
bounds: 674, 8, 30, 32
hoverglow-small
bounds: 813, 60, 137, 38
mouth-grind
bounds: 416, 13, 47, 30
mouth-oooo
bounds: 367, 13, 47, 30
mouth-smile
bounds: 318, 13, 47, 30
muzzle-glow
bounds: 706, 15, 25, 25
muzzle-ring
bounds: 2, 120, 25, 105
muzzle01
bounds: 554, 50, 67, 40
muzzle02
bounds: 484, 48, 68, 42
muzzle03
bounds: 685, 42, 83, 53
muzzle04
bounds: 407, 45, 75, 45
muzzle05
bounds: 2, 36, 68, 38
neck
bounds: 2, 97, 18, 21
portal-bg
bounds: 550, 92, 133, 133
portal-flare1
bounds: 484, 16, 56, 30
portal-flare2
bounds: 810, 27, 57, 31
portal-flare3
bounds: 869, 28, 58, 30
portal-shade
bounds: 415, 92, 133, 133
portal-streaks1
bounds: 685, 97, 126, 128
portal-streaks2
bounds: 813, 100, 125, 125
rear-bracer
bounds: 644, 7, 28, 36
rear-foot
bounds: 554, 18, 57, 30
rear-shin
bounds: 770, 6, 38, 89
rear-thigh
bounds: 991, 178, 28, 47
rear-upper-arm
bounds: 995, 23, 20, 44
torso
bounds: 940, 135, 49, 90

View File

@@ -0,0 +1,16 @@
[remap]
importer="spine.atlas"
type="SpineAtlasResource"
uid="uid://dt2kctrit34y0"
path="res://.godot/imported/spineboy.atlas-8bfc5686ae8068db3bf52dbbb2cc68da.spatlas"
[deps]
source_file="res://docs/museums/spine/assets/spineboy/spineboy.atlas"
dest_files=["res://.godot/imported/spineboy.atlas-8bfc5686ae8068db3bf52dbbb2cc68da.spatlas"]
[params]
normal_map_prefix="n"
specular_map_prefix="s"

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bh5imhdfuc6m0"
path="res://.godot/imported/spineboy.png-3004ea4fcbc3577c90e3ea6fd7e9517f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/museums/spine/assets/spineboy/spineboy.png"
dest_files=["res://.godot/imported/spineboy.png-3004ea4fcbc3577c90e3ea6fd7e9517f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@@ -0,0 +1,7 @@
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
[resource]
background_mode = 2
background_sky = SubResource( 1 )

View File

@@ -0,0 +1,17 @@
[gd_scene format=3 uid="uid://d0v5rhv2ysej8"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="3"]
[node name="Node2D" type="Node2D" unique_id=1221230663]
[node name="Spineboy" type="SpineSprite" parent="." unique_id=538013976]
skeleton_data_res = ExtResource("3")
bones_color = Color(0.968627, 1, 0, 0.501961)
paths_color = Color(1, 0.498039, 0, 0.466667)
paths_clipping = Color(0.8, 0, 0, 0.5)
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(505, 466)
scale = Vector2(0.466832, 0.466832)

View File

@@ -0,0 +1,4 @@
extends SpineSprite
func _ready():
get_animation_state().set_animation("walk", true, 0)

View File

@@ -0,0 +1 @@
uid://bqoowjvbanswg

View File

@@ -0,0 +1,39 @@
extends Node2D
@onready var footstep_audio: AudioStreamPlayer = $FootstepAudio
func _animation_started(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
print("Animation started: " + track_entry.get_animation().get_name())
func _animation_interrupted(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
print("Animation interrupted: " + track_entry.get_animation().get_name())
func _animation_ended(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
print("Animation ended: " + track_entry.get_animation().get_name())
func _animation_completed(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
print("Animation completed: " + track_entry.get_animation().get_name())
func _animation_disposed(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry):
print("Animation disposed: " + track_entry.get_animation().get_name())
func _animation_event(sprite: SpineSprite, animation_state: SpineAnimationState, track_entry: SpineTrackEntry, event: SpineEvent):
print("Animation event: " + track_entry.get_animation().get_name() + ", " + event.get_data().get_event_name())
if (event.get_data().get_event_name() == "footstep"):
footstep_audio.play()
func _ready():
var spineboy = $Spineboy
spineboy.animation_started.connect(_animation_started)
spineboy.animation_interrupted.connect(_animation_interrupted)
spineboy.animation_ended.connect(_animation_ended)
spineboy.animation_completed.connect(_animation_completed)
spineboy.animation_disposed.connect(_animation_disposed)
spineboy.animation_event.connect(_animation_event)
var animation_state = spineboy.get_animation_state()
animation_state.set_animation("jump", false, 0)
animation_state.add_animation("walk", 0, true, 0)
animation_state.add_animation("run", 2, true, 0)
pass

View File

@@ -0,0 +1 @@
uid://y8pd4giv7cmt

View File

@@ -0,0 +1,18 @@
[gd_scene format=3 uid="uid://c738i3nbdkn0h"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="2"]
[ext_resource type="AudioStream" uid="uid://can7k84o8svum" path="res://docs/museums/spine/assets/footstep.ogg" id="3"]
[node name="Node2D" type="Node2D" unique_id=1601974791]
[node name="Spineboy" type="SpineSprite" parent="." unique_id=1213124179]
skeleton_data_res = ExtResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(473, 487)
scale = Vector2(0.575051, 0.575051)
[node name="FootstepAudio" type="AudioStreamPlayer" parent="." unique_id=282578071]
stream = ExtResource("3")

View File

@@ -0,0 +1,22 @@
extends SpineSprite
func _ready():
var data = get_skeleton().get_data()
var custom_skin = new_skin("custom-skin")
var skin_base = data.find_skin("skin-base")
custom_skin.add_skin(skin_base)
custom_skin.add_skin(data.find_skin("nose/short"))
custom_skin.add_skin(data.find_skin("eyelids/girly"))
custom_skin.add_skin(data.find_skin("eyes/violet"))
custom_skin.add_skin(data.find_skin("hair/brown"))
custom_skin.add_skin(data.find_skin("clothes/hoodie-orange"))
custom_skin.add_skin(data.find_skin("legs/pants-jeans"))
custom_skin.add_skin(data.find_skin("accessories/bag"))
custom_skin.add_skin(data.find_skin("accessories/hat-red-yellow"))
get_skeleton().set_skin(custom_skin);
for el in custom_skin.get_attachments():
var entry: SpineSkinEntry = el
print(str(entry.get_slot_index()) + " " + entry.get_name())
get_animation_state().set_animation("dance", true, 0)

View File

@@ -0,0 +1 @@
uid://cgv3vry706p84

View File

@@ -0,0 +1,16 @@
[gd_scene format=3 uid="uid://dodvuj07fsynd"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://btsqcvy7c5y8x" path="res://docs/museums/spine/assets/mix-and-match/mix-and-match-data.tres" id="2"]
[ext_resource type="Script" uid="uid://cgv3vry706p84" path="res://docs/museums/spine/examples/03-mix-and-match/mix-and-match.gd" id="2_clsj7"]
[node name="Node2D" type="Node2D" unique_id=2006583665]
[node name="MixAndMatch" type="SpineSprite" parent="." unique_id=1522896059]
skeleton_data_res = ExtResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(532.982, 480.287)
scale = Vector2(0.441932, 0.441932)
script = ExtResource("2_clsj7")

View File

@@ -0,0 +1,16 @@
[gd_scene format=3 uid="uid://bgdpghp11j3kg"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="1"]
[ext_resource type="Script" uid="uid://djgow48y0sfrs" path="res://docs/museums/spine/examples/04-simple-input/spineboy-simple-input.gd" id="2_nao5a"]
[node name="Node2D" type="Node2D" unique_id=674511270]
[node name="Spineboy" type="SpineSprite" parent="." unique_id=1820819420]
skeleton_data_res = ExtResource("1")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(501.503, 472.035)
scale = Vector2(0.518624, 0.518624)
script = ExtResource("2_nao5a")

View File

@@ -0,0 +1,19 @@
extends SpineSprite
func _ready():
get_animation_state().set_animation("idle", true, 0)
func _process(_delta):
if Input.is_action_just_pressed("ui_left"):
get_animation_state().set_animation("run", true, 0)
get_skeleton().set_scale_x(-1)
if Input.is_action_just_released("ui_left"):
get_animation_state().set_animation("idle", true, 0)
if (Input.is_action_just_pressed("ui_right")):
get_animation_state().set_animation("run", true, 0)
get_skeleton().set_scale_x(1)
if Input.is_action_just_released("ui_right"):
get_animation_state().set_animation("idle", true, 0)

View File

@@ -0,0 +1 @@
uid://djgow48y0sfrs

View File

@@ -0,0 +1,11 @@
extends Node2D
@onready var spineboy: SpineSprite = $Spineboy
@onready var crosshair_bone: SpineBoneNode = $Spineboy/CrosshairBone
func _ready():
spineboy.get_animation_state().set_animation("walk", true, 0)
spineboy.get_animation_state().set_animation("aim", true, 1)
func _process(_delta):
crosshair_bone.global_position = get_viewport().get_mouse_position()

View File

@@ -0,0 +1 @@
uid://d0elhdqlsl71d

View File

@@ -0,0 +1,23 @@
[gd_scene format=3 uid="uid://borp2l17n5xw1"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="2"]
[ext_resource type="Script" uid="uid://d0elhdqlsl71d" path="res://docs/museums/spine/examples/05-mouse-following/mouse-following.gd" id="2_34rgh"]
[node name="Node2D" type="Node2D" unique_id=1482411552]
script = ExtResource("2_34rgh")
[node name="Spineboy" type="SpineSprite" parent="." unique_id=1478267410]
skeleton_data_res = ExtResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(147, 493)
scale = Vector2(0.5, 0.5)
[node name="CrosshairBone" type="SpineBoneNode" parent="Spineboy" unique_id=292478074]
bone_mode = 1
bone_name = "crosshair"
show_behind_parent = true
position = Vector2(302.333, -569.714)
rotation = -0.000872665

View File

@@ -0,0 +1,5 @@
extends Node2D
func _ready():
var spineboy: SpineSprite = $Spineboy
spineboy.get_animation_state().set_animation("walk", true, 0)

View File

@@ -0,0 +1 @@
uid://jn3m3i55x7gg

View File

@@ -0,0 +1,27 @@
[gd_scene format=3 uid="uid://bir7yvf0qwdge"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="1"]
[ext_resource type="Script" uid="uid://jn3m3i55x7gg" path="res://docs/museums/spine/examples/06-bone-following/bone-following.gd" id="2"]
[ext_resource type="Texture2D" uid="uid://dooue2ov32xt3" path="res://icon.svg" id="3"]
[node name="Node2D" type="Node2D" unique_id=965182892]
script = ExtResource("2")
[node name="Spineboy" type="SpineSprite" parent="." unique_id=2084711622]
skeleton_data_res = ExtResource("1")
preview_skin = "Default"
preview_animation = ""
preview_frame = false
preview_time = 0.0
position = Vector2(478, 483)
scale = Vector2(0.58461, 0.58461)
[node name="GunTipBone" type="SpineBoneNode" parent="Spineboy" unique_id=1826381494]
bone_name = "gun-tip"
show_behind_parent = true
position = Vector2(214.34015, -162.08942)
rotation = 0.7131082
scale = Vector2(0.9999999, -1.0000001)
[node name="Sprite" type="Sprite2D" parent="Spineboy/GunTipBone" unique_id=2083405906]
texture = ExtResource("3")

View File

@@ -0,0 +1,11 @@
extends Node2D
@onready var spineboy: SpineSprite = $Spineboy
@onready var raptor: SpineSprite = $Spineboy/GunSlot/Raptor
@onready var tiny_spineboy: SpineSprite = $Spineboy/FrontFistSlot/TinySpineboy
func _ready():
var entry = spineboy.get_animation_state().set_animation("run", true, 0)
entry.set_time_scale(0.1)
raptor.get_animation_state().set_animation("walk", true, 0)
tiny_spineboy.get_animation_state().set_animation("walk", true, 0)

View File

@@ -0,0 +1 @@
uid://cyqbvgy3ak4v6

View File

@@ -0,0 +1,59 @@
[gd_scene format=3 uid="uid://bhht8dees2pyq"]
[ext_resource type="Script" uid="uid://cyqbvgy3ak4v6" path="res://docs/museums/spine/examples/07-slot-node/slot-node.gd" id="1"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="2"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://c53t4xfil8g8g" path="res://docs/museums/spine/assets/raptor/raptor-data.tres" id="3"]
[ext_resource type="Texture2D" uid="uid://dooue2ov32xt3" path="res://icon.svg" id="4"]
[node name="Node2D" type="Node2D" unique_id=1053987390]
script = ExtResource("1")
[node name="Spineboy" type="SpineSprite" parent="." unique_id=1493770367]
skeleton_data_res = ExtResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(474, 506)
scale = Vector2(0.560712, 0.560712)
[node name="GunSlot" type="SpineSlotNode" parent="Spineboy" unique_id=1904042535]
slot_name = "gun"
show_behind_parent = true
position = Vector2(40.8752, -276.036)
rotation = 0.837234
[node name="Raptor" type="SpineSprite" parent="Spineboy/GunSlot" unique_id=37242989]
skeleton_data_res = ExtResource("3")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(84.6909, -67.9174)
scale = Vector2(0.193472, 0.193472)
[node name="EyeSlot" type="SpineSlotNode" parent="Spineboy" unique_id=258812187]
slot_name = "eye"
show_behind_parent = true
position = Vector2(-23.4598, -402.301)
rotation = -1.71793
[node name="Sprite" type="Sprite2D" parent="Spineboy/EyeSlot" unique_id=188427405]
position = Vector2(84.4734, 43.4469)
rotation = 1.66344
texture = ExtResource("4")
[node name="FrontFistSlot" type="SpineSlotNode" parent="Spineboy" unique_id=171733589]
slot_name = "front-fist"
show_behind_parent = true
position = Vector2(-29.0298, -241.577)
rotation = 0.995187
[node name="TinySpineboy" type="SpineSprite" parent="Spineboy/FrontFistSlot" unique_id=1500136576]
skeleton_data_res = ExtResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(-2.64624, -10.8111)
scale = Vector2(0.193389, 0.193389)

View File

@@ -0,0 +1,33 @@
extends Node2D
@onready var player = $AnimationPlayer
@onready var spineboy = $Spineboy
var speed = 400;
var velocity_x = 0;
func _ready():
player.play("cutscene")
pass
func _process(delta):
if (!player.is_playing()):
if Input.is_action_just_released("ui_left"):
spineboy.get_animation_state().set_animation("idle", true, 0)
velocity_x = 0
if Input.is_action_just_released("ui_right"):
spineboy.get_animation_state().set_animation("idle", true, 0)
velocity_x = 0
if (Input.is_action_just_pressed("ui_right")):
spineboy.get_animation_state().set_animation("run", true, 0)
spineboy.get_skeleton().set_scale_x(1)
velocity_x = 1
if Input.is_action_just_pressed("ui_left"):
spineboy.get_animation_state().set_animation("run", true, 0)
spineboy.get_skeleton().set_scale_x(-1)
velocity_x = -1
spineboy.position.x += velocity_x * speed * delta

View File

@@ -0,0 +1 @@
uid://dq4tj8mk4vpqh

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
[gd_scene format=3 uid="uid://b4p2vn7bwm52a"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="1"]
[sub_resource type="Shader" id="1"]
code = "shader_type canvas_item;
void fragment() {
COLOR = texture(TEXTURE, UV);
COLOR.r = 0.0;
}"
[sub_resource type="ShaderMaterial" id="2"]
shader = SubResource("1")
[sub_resource type="Shader" id="3"]
code = "shader_type canvas_item;
void fragment() {
COLOR = texture(TEXTURE, UV);
COLOR.b = 0.0;
}"
[sub_resource type="ShaderMaterial" id="4"]
shader = SubResource("3")
[node name="Node2D" type="Node2D" unique_id=128822378]
[node name="SpineSprite" type="SpineSprite" parent="." unique_id=1332652767]
skeleton_data_res = ExtResource("1")
normal_material = SubResource("2")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(501, 507)
scale = Vector2(0.546374, 0.546373)
[node name="GunSlot" type="SpineSlotNode" parent="SpineSprite" unique_id=1275601575]
normal_material = SubResource("4")
slot_name = "gun"
show_behind_parent = true
position = Vector2(40.8753, -276.036)
rotation = 0.837234

View File

@@ -0,0 +1,4 @@
extends Node2D
func _ready():
$SpineSprite.get_animation_state().set_animation("walk");

View File

@@ -0,0 +1 @@
uid://dhqla6kxkv0ce

View File

@@ -0,0 +1,27 @@
[gd_scene format=3 uid="uid://rt2llskmx7xm"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://c53t4xfil8g8g" path="res://docs/museums/spine/assets/raptor/raptor-data.tres" id="1"]
[ext_resource type="Texture2D" uid="uid://cggfs567rn1ay" path="res://docs/museums/spine/assets/raptor/light-sprite.png" id="2"]
[ext_resource type="Script" uid="uid://dhqla6kxkv0ce" path="res://docs/museums/spine/examples/10-2d-lighting/2d-lighting.gd" id="3"]
[node name="Node2D" type="Node2D" unique_id=1849486266]
script = ExtResource("3")
[node name="SpineSprite" type="SpineSprite" parent="." unique_id=967171539]
skeleton_data_res = ExtResource("1")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(576, 506)
scale = Vector2(0.458967, 0.458967)
[node name="Light2D" type="PointLight2D" parent="." unique_id=447652711]
position = Vector2(691, 283)
scale = Vector2(1.51563, 1.51563)
color = Color(1, 0.0117647, 0.0117647, 1)
texture = ExtResource("2")
height = 100.0
[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1888774714]
color = Color(0.223529, 0.160784, 0.160784, 1)

View File

@@ -0,0 +1,26 @@
extends Node2D
@onready var spineboy = $SpineSprite
@onready var center_bone = $SpineSprite/HoverboardCenterBone
@onready var center_ray = $SpineSprite/HoverboardCenterBone/CenterRay
@onready var target_bone = $SpineSprite/HoverboardTargetBone
@onready var target_ray = $SpineSprite/HoverboardTargetBone/TargetRay
@onready var hip_bone = $SpineSprite/HipBone
var center_hip_distance = 0
func _ready():
spineboy.get_animation_state().set_animation("hoverboard", true, 0)
spineboy.update_skeleton(0);
center_hip_distance = hip_bone.global_position.y - center_bone.global_position.y
func _physics_process(delta):
if target_ray.is_colliding():
target_bone.global_position.y = target_ray.get_collision_point().y - 30
if center_ray.is_colliding():
center_bone.global_position.y = center_ray.get_collision_point().y - 30
if abs(hip_bone.global_position.y - center_bone.global_position.y) - abs(center_hip_distance) < 20:
hip_bone.global_position.y = center_bone.global_position.y + center_hip_distance
spineboy.global_position.x += delta * 150;

View File

@@ -0,0 +1 @@
uid://dpp8doijia0ii

View File

@@ -0,0 +1,53 @@
[gd_scene format=3 uid="uid://chrw4i0nksphn"]
[ext_resource type="Script" uid="uid://dpp8doijia0ii" path="res://docs/museums/spine/examples/11-bone-node/bone-node.gd" id="1"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://cb6rn6vonqbx0" path="res://docs/museums/spine/assets/spineboy/spineboy-data-res.tres" id="2"]
[node name="Node2D" type="Node2D" unique_id=367328645]
script = ExtResource("1")
[node name="SpineSprite" type="SpineSprite" parent="." unique_id=1148185683]
skeleton_data_res = ExtResource("2")
update_mode = 1
preview_skin = "Default"
preview_animation = "hoverboard"
preview_frame = true
preview_time = 0.0
position = Vector2(13, 569)
scale = Vector2(0.278096, 0.278096)
[node name="HoverboardCenterBone" type="SpineBoneNode" parent="SpineSprite" unique_id=727054300]
bone_mode = 1
bone_name = "hoverboard-controller"
show_behind_parent = true
position = Vector2(-10.1996, -68.2213)
rotation = -0.00403465
[node name="CenterRay" type="RayCast2D" parent="SpineSprite/HoverboardCenterBone" unique_id=1808453320]
target_position = Vector2(0, 10000)
[node name="HoverboardTargetBone" type="SpineBoneNode" parent="SpineSprite" unique_id=1807276564]
bone_mode = 1
bone_name = "board-ik"
show_behind_parent = true
position = Vector2(258.903, -71.9176)
rotation = -0.000872665
[node name="TargetRay" type="RayCast2D" parent="SpineSprite/HoverboardTargetBone" unique_id=1417066321]
position = Vector2(-3.59872, 3.59277)
target_position = Vector2(0, 10000)
[node name="HipBone" type="SpineBoneNode" parent="SpineSprite" unique_id=1093270661]
bone_mode = 1
bone_name = "hip"
show_behind_parent = true
position = Vector2(-53.7338, -279.363)
rotation = -0.000872665
[node name="Polygon2D" type="Polygon2D" parent="." unique_id=877226877]
polygon = PackedVector2Array(0, 596, 309, 471, 516, 515, 762, 447, 984, 504, 1023, 505, 1024, 596)
[node name="StaticBody2D" type="StaticBody2D" parent="Polygon2D" unique_id=114416425]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Polygon2D/StaticBody2D" unique_id=1562584718]
polygon = PackedVector2Array(3, 592, 304, 469, 516, 514, 762, 443, 984, 499, 1252, 498, 1280, 596)

View File

@@ -0,0 +1,32 @@
extends Node2D
@onready var celestial_circus: SpineSprite = $"celestial-circus"
var last_x = -1
var last_y = -1
var isMouseOver = false
func _ready():
celestial_circus.get_animation_state().set_animation("wind-idle", true, 0)
celestial_circus.get_animation_state().set_animation("eyeblink-long", true, 1)
celestial_circus.get_animation_state().set_animation("stars", true, 2)
func _process(_delta):
if (Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT) and isMouseOver):
var pos = get_viewport().get_mouse_position()
if (last_x != -1):
var dx = pos.x - last_x
var dy = pos.y - last_y
celestial_circus.global_position += Vector2(dx, dy)
celestial_circus.get_skeleton().physics_translate(dx * 1 / celestial_circus.scale.x, dy * 1 / celestial_circus.scale.y)
last_x = pos.x
last_y = pos.y
else:
last_x = -1
last_y = -1
func _on_area_2d_mouse_entered():
isMouseOver = true
func _on_area_2d_mouse_exited():
isMouseOver = false

View File

@@ -0,0 +1 @@
uid://0uo0citk3n4f

View File

@@ -0,0 +1,31 @@
[gd_scene format=3 uid="uid://re2mg31p3vln"]
[ext_resource type="Script" uid="uid://0uo0citk3n4f" path="res://docs/museums/spine/examples/12-physics/physics.gd" id="1_7guqn"]
[ext_resource type="SpineSkeletonDataResource" uid="uid://d1ordmjpe5kt7" path="res://docs/museums/spine/assets/celestial-circus/celestial-circus-data.tres" id="2_t2blj"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_do8w3"]
size = Vector2(270, 573)
[node name="Node2D" type="Node2D" unique_id=165002328]
script = ExtResource("1_7guqn")
[node name="celestial-circus" type="SpineSprite" parent="." unique_id=2141137119]
skeleton_data_res = ExtResource("2_t2blj")
preview_skin = "Default"
preview_animation = "-- Empty --"
preview_frame = false
preview_time = 0.0
position = Vector2(600, 485)
scale = Vector2(0.25, 0.25)
[node name="Area2D" type="Area2D" parent="celestial-circus" unique_id=525144279]
show_behind_parent = true
scale = Vector2(4, 4)
[node name="CollisionShape2D" type="CollisionShape2D" parent="celestial-circus/Area2D" unique_id=1673342862]
show_behind_parent = true
position = Vector2(0, -158.5)
shape = SubResource("RectangleShape2D_do8w3")
[connection signal="mouse_entered" from="celestial-circus/Area2D" to="." method="_on_area_2d_mouse_entered"]
[connection signal="mouse_exited" from="celestial-circus/Area2D" to="." method="_on_area_2d_mouse_exited"]

View File

@@ -0,0 +1,6 @@
[gd_scene format=3 uid="uid://dr1u7vj8mm6ed"]
[ext_resource type="Script" uid="uid://cvtny4hsitjbo" path="res://docs/museums/spine/examples/13-load-from-disk/load_from_disk.gd" id="1_krs2n"]
[node name="Load-from-disk" type="Node2D" unique_id=41040463]
script = ExtResource("1_krs2n")

View File

@@ -0,0 +1,24 @@
extends Node2D
func _ready():
# Load the skeleton file
var skeleton_file_res = SpineSkeletonFileResource.new();
skeleton_file_res.load_from_file("/Users/badlogic/workspaces/spine-runtimes/examples/coin/export/coin-pro.skel");
# Load the atlas file
var atlas_res = SpineAtlasResource.new();
atlas_res.load_from_atlas_file("/Users/badlogic/workspaces/spine-runtimes/examples/coin/export/coin.atlas");
# Create a skeleton data resource, you can share this across multiple sprites
var skeleton_data_res = SpineSkeletonDataResource.new();
skeleton_data_res.skeleton_file_res = skeleton_file_res;
skeleton_data_res.atlas_res = atlas_res
# Create a sprite from the skeleton data and add it as a child
var sprite = SpineSprite.new();
sprite.skeleton_data_res = skeleton_data_res;
sprite.position.x = 200;
sprite.position.y = 200;
sprite.get_animation_state().set_animation("animation", true, 0);
self.add_child(sprite)
pass

View File

@@ -0,0 +1 @@
uid://cvtny4hsitjbo