From bd991d793944f4eb4479373d58db8ab36ca02bc8 Mon Sep 17 00:00:00 2001 From: Dustin Date: Sun, 30 Mar 2025 09:22:24 -0700 Subject: [PATCH] Anims and states for level transitions. --- Main.tscn | 14 +-- assets/UI/transition_screen.png | Bin 0 -> 2665 bytes assets/UI/transition_screen.png.import | 35 ++++++ lib/singleton_autoloads/LevelInfo.gd | 7 ++ src/Interactables/LevelTransition.gd | 3 + .../playerE/PlayerE-Movement_StateReceiver.gd | 20 ++++ src/actors/players/playerE/PlayerE.gd | 2 + src/actors/players/playerE/PlayerE.tscn | 6 +- .../players/playerE/states/enter_right.tres | 16 +++ src/levels/TestBox.tscn | 2 +- src/ui/scene_transition.gd | 30 ++++++ src/ui/scene_transition.tscn | 100 ++++++++++++++++++ 12 files changed, 221 insertions(+), 14 deletions(-) create mode 100644 assets/UI/transition_screen.png create mode 100644 assets/UI/transition_screen.png.import create mode 100644 src/actors/players/playerE/states/enter_right.tres create mode 100644 src/ui/scene_transition.gd create mode 100644 src/ui/scene_transition.tscn diff --git a/Main.tscn b/Main.tscn index ccab061..6a7132d 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,11 +1,14 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://src/actors/players/playerE/PlayerE.tscn" type="PackedScene" id=1] [ext_resource path="res://src/levels/TestBox.tscn" type="PackedScene" id=2] [ext_resource path="res://src/ui/HUD.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/ui/scene_transition.tscn" type="PackedScene" id=4] [node name="Main" type="Node2D"] +[node name="SceneTransition" parent="." instance=ExtResource( 4 )] + [node name="TestBox" parent="." instance=ExtResource( 2 )] __meta__ = { "_edit_lock_": true @@ -15,12 +18,3 @@ __meta__ = { position = Vector2( 112, 56 ) [node name="UI_Layer" parent="." instance=ExtResource( 3 )] - -[node name="TransitionScene" type="ColorRect" parent="."] -visible = false -modulate = Color( 0, 0, 0, 0 ) -margin_right = 320.0 -margin_bottom = 180.0 -__meta__ = { -"_edit_lock_": true -} diff --git a/assets/UI/transition_screen.png b/assets/UI/transition_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..a3eca504aac7683ef93cd1cde009e3b6948401cb GIT binary patch literal 2665 zcmeHJ`8(8&9{tWtMocr4kcO;{P?peZDU>y1>{%vR23^vGvBmU~8B6t2WTfP^#UQc_ z8Yb%$DHJzlxz=w9$!-i&W4Yb`;r{skaL#j{^TYY!^L(D?oWC6HFCaywMF9Xn;;b#4 z0RVFTw|=o7{+nmM@x*=`v>F>B&4|i)i8nVrc&8of z9dpnWfk-X<*kkRof0Tf|D)CwAFK`g6_4vW`nzu!#8xyH|SI;|nS7=mpD4|d_fsn!~ zx_^7F1^YlD;L(46ZZ@9nSXL*Pt0`9vzf{cY4uZ4~*D~4PuEv%?Wb!sX$+$&E=^0>( zO5==)+S7Txm9B#E_Mt=f=S2xQNpB@xdqo^X`YY#LGNY5vW?eBj5vyrb*e#U2VrT69 zRX{f$NI#ZZNobH^LLeXw5}5(^lwKFM%h)o#dcYycU#x`ZtjKp@c8e@ z&f!ld|-KqYrDEXgjd)kGY#!K9T1F7iUIwJ^;Y} zVw{DkOHA(4DCw?epe%JQ&{kTUl!L4qtp23q7)%oPZzZNWR@^;QrR|Iu^<#m_9vkLj z7Qvk+KN=X^-9R`NN0-1CFGH|)w_)|VdFPsdk?h6@+MV^yQ>UhO9jeL$ zEXDJC0Gl6p)a2<^SC9pp95-6k2J0QYB#?!Sd`a&aFOfyez{Dc70gC8AeJO%0uG1Sr zquSnkrJ2fe*+zZ)e@#4I?zlL^@XFCKVFh7OO_-%73fp4Bi**un2E15-y~k+iwYuyR!xX91CsdyTGeG>}4d;n!Tt}}Ojp;k@7Fx5Sr zJ0W+0ss&xZwK5wH(ZRJHEBp#Z7srSkZ|MX9fUZ&>u4Fjo>^G#OaYGm#C&alJtzq&7Ro}`X% zC=Rgt44rdltp%Xiz*eiAqR-Ix&kNJN_3;>Xd700%$ustzD_#ya=fWf6rq$=sjJc7% zP4uWhsfHKKsA1T)gdHG`nShpzdJh=?8}lU`jbTNR!A<6Z<%oDJ!_lj)-^X*R6n zB^RSbwqg|{C)8(R5vD(SfVA{psxWt|M%nA0&*dqD0lrLDYPZKIEDEh)mlM_+pooL% zQt7XC{=q*t_&@)E^bD|zV6&GMv3Au?2vCtIef33YPGDncj(`RyQ>rf7J?h1gnotJL zTy?zR0i)(+#nUgXl&M?}g_ASn!X=U_DBJSuQ(JV@sLznj#1+0!5OS-bH0O6p1m_dY zedx^Kyq8cVd>3B%jPmH}@^NGL*&lLOMx=!U0#O;Lq!Sac78qauXu78Z>U|&J3E94O zB+;($B-KZY)kX1wm_V+}tlLgp7d8={C_q!%BB<@|XIy!=;4R1ZcDNkDNp?R5L~;_z zemmTpcoe%N0Rvz20&(C?@ZQX}U-4>ZC{%xT>GgU54E&QbOr79B)wOQsiR!jL*#M&| zNVtWzMV4meN;2bAE9?EMy3ovoE!7P@f8T0jPL_Fgc}PD@ZfU>cSThanI2pCpOhrS4 zziccN1dc#j$`}HTF%(!jZJ;v?G7$J zGq7!HiypYtay`*Vr6*UdzZS!H3exvTkK-KwzL59tI$k|`J+2DtrR)6yBk2LSK`sc# z*dF5&Z8GFPpCGD`qgp??1n85IWJZd3pQ@S#QD(kMVDM9G9+qF$^{@6BUYmH#pC5|H zMaBtTO?EE8n5eK7f)8OnZScK4tw=1S9W9YUKkzP3pAk7(!#lnD zIL9g*j(WtpA&%jMhzfV(sbiP|lJ%d~QcvSyUDZ;_ajmj!R+keXcdS+Br?G9{?#arv z!=T`Qr2=g(+~y&~IYns;Ds!18LCqM0`bRYTm_z(St3qJ^lDvJ7=|xuB&h}wYmm?%O z&XZ-JkL*G++xOPb_*mR*aoWie`egB7Ys0tf52ogK;NR$yrf3#vFe7B_HkTOOOi3S$fVqkm6G0B31$QEf&{ F_%DEFA@~3Q literal 0 HcmV?d00001 diff --git a/assets/UI/transition_screen.png.import b/assets/UI/transition_screen.png.import new file mode 100644 index 0000000..1d8c9dd --- /dev/null +++ b/assets/UI/transition_screen.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/transition_screen.png-06f8967c3d511a265f6dd663ec4973a5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/UI/transition_screen.png" +dest_files=[ "res://.import/transition_screen.png-06f8967c3d511a265f6dd663ec4973a5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/lib/singleton_autoloads/LevelInfo.gd b/lib/singleton_autoloads/LevelInfo.gd index 652751c..5cf46b5 100644 --- a/lib/singleton_autoloads/LevelInfo.gd +++ b/lib/singleton_autoloads/LevelInfo.gd @@ -8,15 +8,22 @@ var player_start_position: Position2D func change_level(_level_name :String): print("res://src/levels/" + _level_name + ".tscn" ) + var SceneTransition = get_node("/root/Main/SceneTransition") #var simultaneous_scene = preload("res://levels/level2.tscn").instance() var new_level = load("res://src/levels/" + _level_name + ".tscn" ).instance() #print (get_tree().get_root().get_children()) for l in get_node("/root/Main").get_children(): #print (get_node("/root/Main").get_children()) if l is Level: + SceneTransition.transition_dissolve("foo") + yield(SceneTransition,"done") print(l) get_node("/root/Main").remove_child(l) get_node("/root/Main").add_child(new_level) + get_node("/root/Main").move_child(new_level,1) + print (get_node("/root/Main").get_children()) + SceneTransition.reset() + #get_node("/root/Main").add_child_below_node(SceneTransition,new_level) # Called every frame. 'delta' is the elapsed time since the previous frame. diff --git a/src/Interactables/LevelTransition.gd b/src/Interactables/LevelTransition.gd index 232ea11..bc8c610 100644 --- a/src/Interactables/LevelTransition.gd +++ b/src/Interactables/LevelTransition.gd @@ -1,6 +1,9 @@ class_name LevelTransition extends Interactable +## Things like 'door_right', 'stairs' +## helps the Player object pick an appropriate animation +export var _transition_type := 'door_right' # Declare member variables here. Examples: # var a = 2 diff --git a/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd b/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd index bb65aad..e0062ab 100644 --- a/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd +++ b/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd @@ -159,6 +159,26 @@ func _state_process_physics_roll(): #return fall_state request_state_change.call_func('fall') +var level_transition_latch: bool +func _on_state_change_enter_right(): + #desired_movement_vector.x = RIGHT + parent.transform.x.x = RIGHT + level_transition_latch = false + +func _state_process_physics_enter_right(): + #flip_sprite_to_movement_direction() + + if current_state.state_timeout.time_left == 0 and level_transition_latch == false: + #desired_movement_vector.x = LEFT + parent.transform.x.x = LEFT + current_state.state_timeout.start() + level_transition_latch = true + elif current_state.state_timeout.time_left == 0 and level_transition_latch == true: + request_state_change.call_func('idle') + + # Force role in facing direction + # instead of movement direction + move_actor_as_desired(parent.transform.x.x) func _state_process_physics_land(): $"../LedgeDetector".set_enabled(true) diff --git a/src/actors/players/playerE/PlayerE.gd b/src/actors/players/playerE/PlayerE.gd index 1638f4b..81b78e1 100644 --- a/src/actors/players/playerE/PlayerE.gd +++ b/src/actors/players/playerE/PlayerE.gd @@ -32,5 +32,7 @@ func touch_the_thing(the_thing: Interactable) -> bool: the_thing.trigger_interaction() return false if the_thing is LevelTransition: + if the_thing._transition_type == 'door_right': + movement_state_machine.change_to_known_state('enter_right') the_thing.trigger_interaction() return true diff --git a/src/actors/players/playerE/PlayerE.tscn b/src/actors/players/playerE/PlayerE.tscn index 57959b1..e53c749 100644 --- a/src/actors/players/playerE/PlayerE.tscn +++ b/src/actors/players/playerE/PlayerE.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=25 format=2] +[gd_scene load_steps=26 format=2] [ext_resource path="res://lib/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/actors/players/playerE/PlayerE_SpriteFrames.tres" type="SpriteFrames" id=2] @@ -21,6 +21,7 @@ [ext_resource path="res://src/actors/players/playerE/states/ledge_grab.tres" type="Resource" id=19] [ext_resource path="res://src/actors/players/playerE/states/ledge_climb.tres" type="Resource" id=20] [ext_resource path="res://lib/templates/Interactable/Interactable_Receiver.gd" type="Script" id=21] +[ext_resource path="res://src/actors/players/playerE/states/enter_right.tres" type="Resource" id=22] [sub_resource type="Resource" id=3] resource_local_to_scene = true @@ -47,9 +48,8 @@ script = ExtResource( 3 ) actor_type = "Player" [node name="Movement_StateMachine" parent="." index="0"] -debug_state_machine = true starting_state_name = "idle" -states = [ ExtResource( 4 ), ExtResource( 9 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 10 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), SubResource( 3 ), ExtResource( 19 ), ExtResource( 20 ) ] +states = [ ExtResource( 4 ), ExtResource( 9 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 10 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), SubResource( 3 ), ExtResource( 19 ), ExtResource( 20 ), ExtResource( 22 ) ] [node name="AnimatedSprite_StateReceiver" parent="." index="1"] frames = ExtResource( 2 ) diff --git a/src/actors/players/playerE/states/enter_right.tres b/src/actors/players/playerE/states/enter_right.tres new file mode 100644 index 0000000..8416804 --- /dev/null +++ b/src/actors/players/playerE/states/enter_right.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" load_steps=2 format=2] + +[ext_resource path="res://lib/classes/state_animated_actor.gd" type="Script" id=1] + +[resource] +resource_local_to_scene = true +script = ExtResource( 1 ) +debug_state = false +timeout_seconds = 1.5 +name = "enter_right" +horizontal_speed = 30.0 +horizontal_acceleration = 0.0 +horizontal_speed_offset = 0.0 +horizontal_speed_offset_acceleration = 0.0 +jerk_factor = 0.0 +animation_sequence = [ "walk" ] diff --git a/src/levels/TestBox.tscn b/src/levels/TestBox.tscn index e3a751b..f9bae29 100644 --- a/src/levels/TestBox.tscn +++ b/src/levels/TestBox.tscn @@ -15,7 +15,7 @@ extents = Vector2( 4.5, 10 ) [node name="TileMap Collision" parent="." index="1"] tile_set = ExtResource( 2 ) -tile_data = PoolIntArray( 0, 4, 65536, 19, 4, 65536, 65536, 4, 65536, 65555, 4, 65536, 131072, 4, 65536, 131091, 4, 65536, 196608, 4, 65536, 196620, 2, 0, 196621, 2, 1, 196622, 2, 2, 196627, 4, 65536, 262144, 4, 0, 262156, 2, 65536, 262157, 2, 65537, 262158, 2, 65538, 262163, 4, 0, 327680, 4, 65536, 327699, 4, 65536, 393216, 4, 65536, 458752, 4, 65536, 589823, 0, 1, 524288, 4, 131072, 524289, 0, 3, 524290, 0, 1, 524291, 0, 2, 524292, 0, 3, 524293, 0, 1, 524294, 0, 2, 524295, 0, 3, 524296, 0, 1, 524297, 0, 2, 524298, 0, 3, 524299, 0, 1, 524300, 0, 2, 524301, 0, 3, 524302, 0, 1, 524303, 0, 2, 524304, 0, 3, 524305, 0, 1, 524306, 0, 2, 524308, 0, 1, 524309, 0, 2, 524310, 0, 3, 655359, 0, 65537, 589824, 0, 65538, 589825, 0, 65539, 589826, 0, 65537, 589827, 0, 65538, 589828, 0, 65539, 589829, 0, 65537, 589830, 0, 65538, 589831, 0, 65539, 589832, 0, 65537, 589833, 0, 65538, 589834, 0, 65539, 589835, 0, 65537, 589836, 0, 65538, 589837, 0, 65539, 589838, 0, 65537, 589839, 0, 65538, 589840, 0, 65539, 589841, 0, 65537, 589842, 0, 65538, 589843, 0, 65539, 589844, 0, 65537, 589845, 0, 65538, 589846, 0, 65539, 720895, 0, 131073, 655360, 0, 131074, 655361, 0, 131075, 655362, 0, 131073, 655363, 0, 131074, 655364, 0, 131075, 655365, 0, 131073, 655366, 0, 131074, 655367, 0, 131075, 655368, 0, 131073, 655369, 0, 131074, 655370, 0, 131075, 655371, 0, 131073, 655372, 0, 131074, 655373, 0, 131075, 655374, 0, 131073, 655375, 0, 131074, 655376, 0, 131075, 655377, 0, 131073, 655378, 0, 131074, 655379, 0, 131075, 655380, 0, 131073, 655381, 0, 131074, 655382, 0, 131075, 786431, 0, 196609, 720896, 0, 196610, 720897, 0, 196611, 720898, 0, 196609, 720899, 0, 196610, 720900, 0, 196611, 720901, 0, 196609, 720902, 0, 196610, 720903, 0, 196611, 720904, 0, 196609, 720905, 0, 196610, 720906, 0, 196611, 720907, 0, 196609, 720908, 0, 196610, 720909, 0, 196611, 720910, 0, 196609, 720911, 0, 196610, 720912, 0, 196611, 720913, 0, 196609, 720914, 0, 196610, 720915, 0, 196611, 720916, 0, 196609, 720917, 0, 196610, 720918, 0, 196611, 851967, 0, 262145, 786432, 0, 262146, 786433, 0, 262147, 786434, 0, 262145, 786435, 0, 262146, 786436, 0, 262147, 786437, 0, 262145, 786438, 0, 262146, 786439, 0, 262147, 786440, 0, 262145, 786441, 0, 262146, 786442, 0, 262147, 786443, 0, 262145, 786444, 0, 262146, 786445, 0, 262147, 786446, 0, 262145, 786447, 0, 262146, 786448, 0, 262147, 786449, 0, 262145, 786450, 0, 262146, 786451, 0, 262147, 786452, 0, 262145, 786453, 0, 262146, 786454, 0, 262147 ) +tile_data = PoolIntArray( 0, 4, 65536, 19, 4, 65536, 65536, 4, 65536, 65555, 4, 65536, 131072, 4, 65536, 131091, 4, 65536, 196608, 4, 65536, 196620, 2, 0, 196621, 2, 1, 196622, 2, 2, 196627, 4, 65536, 262144, 4, 0, 262156, 2, 65536, 262157, 2, 65537, 262158, 2, 65538, 262163, 4, 0, 327680, 4, 65536, 327699, 4, 65536, 393216, 4, 65536, 393237, 4, 0, 458752, 4, 65536, 458773, 4, 0, 589823, 0, 1, 524288, 4, 131072, 524289, 0, 3, 524290, 0, 1, 524291, 0, 2, 524292, 0, 3, 524293, 0, 1, 524294, 0, 2, 524295, 0, 3, 524296, 0, 1, 524297, 0, 2, 524298, 0, 3, 524299, 0, 1, 524300, 0, 2, 524301, 0, 3, 524302, 0, 1, 524303, 0, 2, 524304, 0, 3, 524305, 0, 1, 524306, 0, 2, 524308, 0, 1, 524309, 4, 0, 524310, 0, 3, 655359, 0, 65537, 589824, 0, 65538, 589825, 0, 65539, 589826, 0, 65537, 589827, 0, 65538, 589828, 0, 65539, 589829, 0, 65537, 589830, 0, 65538, 589831, 0, 65539, 589832, 0, 65537, 589833, 0, 65538, 589834, 0, 65539, 589835, 0, 65537, 589836, 0, 65538, 589837, 0, 65539, 589838, 0, 65537, 589839, 0, 65538, 589840, 0, 65539, 589841, 0, 65537, 589842, 0, 65538, 589843, 0, 65539, 589844, 0, 65537, 589845, 0, 65538, 589846, 0, 65539, 720895, 0, 131073, 655360, 0, 131074, 655361, 0, 131075, 655362, 0, 131073, 655363, 0, 131074, 655364, 0, 131075, 655365, 0, 131073, 655366, 0, 131074, 655367, 0, 131075, 655368, 0, 131073, 655369, 0, 131074, 655370, 0, 131075, 655371, 0, 131073, 655372, 0, 131074, 655373, 0, 131075, 655374, 0, 131073, 655375, 0, 131074, 655376, 0, 131075, 655377, 0, 131073, 655378, 0, 131074, 655379, 0, 131075, 655380, 0, 131073, 655381, 0, 131074, 655382, 0, 131075, 786431, 0, 196609, 720896, 0, 196610, 720897, 0, 196611, 720898, 0, 196609, 720899, 0, 196610, 720900, 0, 196611, 720901, 0, 196609, 720902, 0, 196610, 720903, 0, 196611, 720904, 0, 196609, 720905, 0, 196610, 720906, 0, 196611, 720907, 0, 196609, 720908, 0, 196610, 720909, 0, 196611, 720910, 0, 196609, 720911, 0, 196610, 720912, 0, 196611, 720913, 0, 196609, 720914, 0, 196610, 720915, 0, 196611, 720916, 0, 196609, 720917, 0, 196610, 720918, 0, 196611, 851967, 0, 262145, 786432, 0, 262146, 786433, 0, 262147, 786434, 0, 262145, 786435, 0, 262146, 786436, 0, 262147, 786437, 0, 262145, 786438, 0, 262146, 786439, 0, 262147, 786440, 0, 262145, 786441, 0, 262146, 786442, 0, 262147, 786443, 0, 262145, 786444, 0, 262146, 786445, 0, 262147, 786446, 0, 262145, 786447, 0, 262146, 786448, 0, 262147, 786449, 0, 262145, 786450, 0, 262146, 786451, 0, 262147, 786452, 0, 262145, 786453, 0, 262146, 786454, 0, 262147 ) [node name="TileMap Foreground" parent="." index="2"] tile_set = ExtResource( 2 ) diff --git a/src/ui/scene_transition.gd b/src/ui/scene_transition.gd new file mode 100644 index 0000000..c8e5ed2 --- /dev/null +++ b/src/ui/scene_transition.gd @@ -0,0 +1,30 @@ +extends CanvasLayer + +signal done + +#func change_scene(target: String, type: String = 'dissolve') -> void: +# if type == 'dissolve': +# transition_dissolve(target) +# else: +# transition_clouds(target) + +var animation_name = '' + +func reset(): + $AnimationPlayer.play_backwards(animation_name) + +func transition_dissolve(target: String) -> void: + animation_name = 'dissolve' + $AnimationPlayer.play('dissolve') + yield($AnimationPlayer,'animation_finished') + emit_signal("done") + #get_tree().change_scene(target) + #$AnimationPlayer.play_backwards('dissolve') + +func transition_clouds(target: String) -> void: + animation_name = 'clouds_out' + $AnimationPlayer.play('clouds_in') + yield($AnimationPlayer,'animation_finished') + emit_signal("done") + #get_tree().change_scene(target) + #$AnimationPlayer.play('clouds_out') diff --git a/src/ui/scene_transition.tscn b/src/ui/scene_transition.tscn new file mode 100644 index 0000000..7586552 --- /dev/null +++ b/src/ui/scene_transition.tscn @@ -0,0 +1,100 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://src/ui/scene_transition.gd" type="Script" id=1] +[ext_resource path="res://assets/UI/transition_screen.png" type="Texture" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "RESET" +length = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath("dissolve_rect:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("clouds:rect_position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1.36422e-12, 180 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "clouds_in" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("clouds:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1.36422e-12, 180 ), Vector2( 0, -40 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "clouds_out" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("clouds:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -40 ), Vector2( 1.36422e-12, -220 ) ] +} + +[sub_resource type="Animation" id=4] +tracks/0/type = "value" +tracks/0/path = NodePath("dissolve_rect:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ] +} + +[node name="SceneTransition" type="CanvasLayer"] +script = ExtResource( 1 ) + +[node name="dissolve_rect" type="ColorRect" parent="."] +modulate = Color( 1, 1, 1, 0 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +color = Color( 0, 0, 0, 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 1 ) +anims/clouds_in = SubResource( 2 ) +anims/clouds_out = SubResource( 3 ) +anims/dissolve = SubResource( 4 ) + +[node name="clouds" type="TextureRect" parent="."] +margin_top = 180.0 +margin_right = 320.0 +margin_bottom = 360.0 +texture = ExtResource( 2 )