From 768346a092e4f217949d753d550bc702bf66820f Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 17 Sep 2020 22:43:04 +0200 Subject: [PATCH] Add a flipbook animation example to the 2D particles demo --- 2d/particles/flipbook.png | Bin 0 -> 16846 bytes 2d/particles/flipbook.png.import | 34 ++++++ 2d/particles/particles.tscn | 145 +++++++++++++++--------- 2d/particles/spark_particle2.png.import | 2 +- 4 files changed, 127 insertions(+), 54 deletions(-) create mode 100644 2d/particles/flipbook.png create mode 100644 2d/particles/flipbook.png.import diff --git a/2d/particles/flipbook.png b/2d/particles/flipbook.png new file mode 100644 index 0000000000000000000000000000000000000000..b43df9e498063d79abad540b1f5e299683871042 GIT binary patch literal 16846 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 literal 0 HcmV?d00001 diff --git a/2d/particles/flipbook.png.import b/2d/particles/flipbook.png.import new file mode 100644 index 00000000..0e510a01 --- /dev/null +++ b/2d/particles/flipbook.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flipbook.png-2d23d0c8a5c0098f2c37b01babcd7e20.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://flipbook.png" +dest_files=[ "res://.import/flipbook.png-2d23d0c8a5c0098f2c37b01babcd7e20.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=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/2d/particles/particles.tscn b/2d/particles/particles.tscn index 9070f6b9..0623fb5a 100644 --- a/2d/particles/particles.tscn +++ b/2d/particles/particles.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=2] +[gd_scene load_steps=38 format=2] [ext_resource path="res://fire_particle.png" type="Texture" id=1] [ext_resource path="res://smoke_particle.png" type="Texture" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://point_texture_emit.tres" type="Texture" id=4] [ext_resource path="res://point_texture_image_outline.tres" type="Texture" id=5] [ext_resource path="res://point_normal_texture_image_outline.tres" type="Texture" id=6] +[ext_resource path="res://flipbook.png" type="Texture" id=7] [sub_resource type="CanvasItemMaterial" id=1] blend_mode = 1 @@ -18,11 +19,11 @@ _data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 85.0781 ), 0.0, 0.0, 0, 0 [sub_resource type="CurveTexture" id=3] curve = SubResource( 2 ) -[sub_resource type="Curve" id=4] -_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0.295898 ), 0.0, 0.0, 0, 0 ] +[sub_resource type="Curve" id=31] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=5] -curve = SubResource( 4 ) +curve = SubResource( 31 ) [sub_resource type="ParticlesMaterial" id=6] emission_shape = 1 @@ -41,13 +42,39 @@ scale_random = 0.3 scale_curve = SubResource( 5 ) color = Color( 0.859375, 0.180278, 0.0469971, 1 ) -[sub_resource type="Gradient" id=7] +[sub_resource type="CanvasItemMaterial" id=7] +blend_mode = 1 +particles_animation = true +particles_anim_h_frames = 2 +particles_anim_v_frames = 2 +particles_anim_loop = false + +[sub_resource type="ParticlesMaterial" id=8] +emission_shape = 1 +emission_sphere_radius = 75.0 +flag_disable_z = true +gravity = Vector3( 0, -26, 0 ) +angular_velocity = 1.0 +angular_velocity_curve = SubResource( 3 ) +orbit_velocity = 0.0 +orbit_velocity_random = 0.0 +linear_accel_random = 1.0 +damping = 2.0 +scale = 0.5 +scale_curve = SubResource( 5 ) +color = Color( 0, 0.67, 2, 1 ) +hue_variation = 0.05 +hue_variation_random = 1.0 +anim_offset = 1.0 +anim_offset_random = 1.0 + +[sub_resource type="Gradient" id=9] colors = PoolColorArray( 1, 1, 1, 0.806627, 1, 1, 1, 0 ) -[sub_resource type="GradientTexture" id=8] -gradient = SubResource( 7 ) +[sub_resource type="GradientTexture" id=10] +gradient = SubResource( 9 ) -[sub_resource type="ParticlesMaterial" id=9] +[sub_resource type="ParticlesMaterial" id=11] emission_shape = 1 emission_sphere_radius = 30.0 flag_disable_z = true @@ -62,33 +89,33 @@ damping = 20.0 damping_random = 0.2 angle = 360.0 angle_random = 1.0 -color_ramp = SubResource( 8 ) +color_ramp = SubResource( 10 ) -[sub_resource type="CanvasItemMaterial" id=10] +[sub_resource type="CanvasItemMaterial" id=12] blend_mode = 1 -[sub_resource type="Gradient" id=11] +[sub_resource type="Gradient" id=13] offsets = PoolRealArray( 0, 0.0769231, 0.16568, 0.266272, 0.378698, 0.491124, 0.609467, 0.704142, 0.804734, 0.911243, 1 ) colors = PoolColorArray( 1, 1, 1, 1, 1, 0.152961, 0, 1, 1, 0.726562, 0, 1, 0.78125, 1, 0, 1, 0.289062, 1, 0, 1, 0, 1, 0.472656, 1, 0, 1, 0.835938, 1, 0, 0.71875, 1, 1, 0.21875, 0, 1, 1, 1, 0, 0.773438, 1, 1, 1, 1, 1 ) -[sub_resource type="GradientTexture" id=12] -gradient = SubResource( 11 ) - -[sub_resource type="Curve" id=13] -_data = [ Vector2( 0, 0.510742 ), 0.0, 0.0, 0, 0, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ] - -[sub_resource type="CurveTexture" id=14] -curve = SubResource( 13 ) +[sub_resource type="GradientTexture" id=14] +gradient = SubResource( 13 ) [sub_resource type="Curve" id=15] -_data = [ Vector2( 0, 0.961914 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] +_data = [ Vector2( 0, 0.510742 ), 0.0, 0.0, 0, 0, Vector2( 1, 1 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=16] curve = SubResource( 15 ) -[sub_resource type="ParticlesMaterial" id=17] +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0.961914 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="CurveTexture" id=18] +curve = SubResource( 17 ) + +[sub_resource type="ParticlesMaterial" id=19] trail_divisor = 32 -trail_size_modifier = SubResource( 16 ) +trail_size_modifier = SubResource( 18 ) emission_shape = 1 emission_sphere_radius = 4.0 flag_disable_z = true @@ -101,36 +128,36 @@ tangential_accel = 100.0 angle = 360.0 angle_random = 1.0 scale = 3.0 -scale_curve = SubResource( 14 ) -color_ramp = SubResource( 12 ) +scale_curve = SubResource( 16 ) +color_ramp = SubResource( 14 ) hue_variation = 1.0 hue_variation_random = 1.0 -[sub_resource type="CanvasItemMaterial" id=18] +[sub_resource type="CanvasItemMaterial" id=20] blend_mode = 1 -[sub_resource type="Gradient" id=19] +[sub_resource type="Gradient" id=21] offsets = PoolRealArray( 0, 0.171598, 0.301775, 0.390533, 1 ) colors = PoolColorArray( 1, 0.63501, 0.28125, 1, 1, 0.398438, 0, 1, 0.679688, 0.277451, 0.169922, 0.232039, 0.515625, 0.362454, 0.199402, 0.0784314, 1, 1, 1, 0.0839033 ) -[sub_resource type="GradientTexture" id=20] -gradient = SubResource( 19 ) - -[sub_resource type="Curve" id=21] -max_value = 50.0 -_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.0180711, 0 ), 74.6314, 74.6314, 0, 0, Vector2( 0.0392147, 40.9884 ), 0.0, 0.0, 0, 0, Vector2( 1, 50 ), 0.0, 0.0, 0, 0 ] - -[sub_resource type="CurveTexture" id=22] -curve = SubResource( 21 ) +[sub_resource type="GradientTexture" id=22] +gradient = SubResource( 21 ) [sub_resource type="Curve" id=23] -max_value = 2.0 -_data = [ Vector2( 0, 0 ), 0.0, 1.78215, 0, 0, Vector2( 0.282731, 1.17848 ), -1.56917, 21.2492, 0, 0, Vector2( 0.311895, 2 ), 1.46231, 0.0, 0, 0, Vector2( 1, 2 ), 0.0, 0.0, 0, 0 ] +max_value = 50.0 +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.0180711, 0 ), 74.6314, 74.6314, 0, 0, Vector2( 0.0392147, 40.9884 ), 0.0, 0.0, 0, 0, Vector2( 1, 50 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=24] curve = SubResource( 23 ) -[sub_resource type="ParticlesMaterial" id=25] +[sub_resource type="Curve" id=25] +max_value = 2.0 +_data = [ Vector2( 0, 0 ), 0.0, 1.78215, 0, 0, Vector2( 0.282731, 1.17848 ), -1.56917, 21.2492, 0, 0, Vector2( 0.311895, 2 ), 1.46231, 0.0, 0, 0, Vector2( 1, 2 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="CurveTexture" id=26] +curve = SubResource( 25 ) + +[sub_resource type="ParticlesMaterial" id=27] emission_shape = 2 emission_box_extents = Vector3( 10, 10, 40 ) flag_rotate_y = true @@ -142,12 +169,12 @@ orbit_velocity = 0.0 orbit_velocity_random = 0.0 radial_accel = 1.0 radial_accel_random = 0.3 -radial_accel_curve = SubResource( 22 ) +radial_accel_curve = SubResource( 24 ) damping = 10.0 -scale_curve = SubResource( 24 ) -color_ramp = SubResource( 20 ) +scale_curve = SubResource( 26 ) +color_ramp = SubResource( 22 ) -[sub_resource type="ParticlesMaterial" id=26] +[sub_resource type="ParticlesMaterial" id=28] emission_shape = 3 emission_point_texture = ExtResource( 4 ) emission_point_count = 10554 @@ -161,7 +188,7 @@ scale = 0.5 scale_random = 1.0 color = Color( 1, 0.550781, 0.550781, 1 ) -[sub_resource type="ParticlesMaterial" id=27] +[sub_resource type="ParticlesMaterial" id=29] emission_shape = 3 emission_point_texture = ExtResource( 5 ) emission_point_count = 1288 @@ -175,7 +202,7 @@ scale = 0.5 scale_random = 1.0 color = Color( 0.375, 0.692383, 1, 1 ) -[sub_resource type="ParticlesMaterial" id=28] +[sub_resource type="ParticlesMaterial" id=30] emission_shape = 4 emission_point_texture = ExtResource( 5 ) emission_normal_texture = ExtResource( 6 ) @@ -200,40 +227,52 @@ preprocess = 0.1 process_material = SubResource( 6 ) texture = ExtResource( 1 ) +[node name="Flipbook" type="Particles2D" parent="."] +material = SubResource( 7 ) +position = Vector2( 392, 215 ) +amount = 20 +lifetime = 3.0 +preprocess = 0.1 +process_material = SubResource( 8 ) +texture = ExtResource( 7 ) +__meta__ = { +"_editor_description_": "Flipbook animation requires setting a custom CanvasItemMaterial with Particles Animation enabled." +} + [node name="Smoke" type="Particles2D" parent="."] position = Vector2( 362, 502 ) amount = 32 lifetime = 2.0 preprocess = 0.1 -process_material = SubResource( 9 ) +process_material = SubResource( 11 ) texture = ExtResource( 2 ) [node name="Magic" type="Particles2D" parent="."] -material = SubResource( 10 ) +material = SubResource( 12 ) position = Vector2( 620, 440 ) amount = 64 lifetime = 2.0 preprocess = 0.1 randomness = 1.0 -process_material = SubResource( 17 ) +process_material = SubResource( 19 ) texture = ExtResource( 3 ) [node name="Explosion" type="Particles2D" parent="."] -material = SubResource( 18 ) +material = SubResource( 20 ) position = Vector2( 613.467, 182.62 ) rotation = 3.13794 amount = 16 lifetime = 2.0 explosiveness = 1.0 -process_material = SubResource( 25 ) +process_material = SubResource( 27 ) texture = ExtResource( 2 ) -[node name="Emit_Mask" type="Particles2D" parent="."] +[node name="EmitMask" type="Particles2D" parent="."] position = Vector2( 42, -68 ) amount = 180 lifetime = 0.2 visibility_rect = Rect2( 26.0055, 90.0015, 199.176, 95.0445 ) -process_material = SubResource( 26 ) +process_material = SubResource( 28 ) texture = ExtResource( 3 ) [node name="OutlineMask" type="Particles2D" parent="."] @@ -241,7 +280,7 @@ position = Vector2( 42, 52 ) amount = 180 lifetime = 0.2 visibility_rect = Rect2( 26.0055, 90.0015, 199.176, 95.0445 ) -process_material = SubResource( 27 ) +process_material = SubResource( 29 ) texture = ExtResource( 3 ) [node name="DirectionMask" type="Particles2D" parent="."] @@ -249,7 +288,7 @@ position = Vector2( 40, 180 ) amount = 180 lifetime = 0.2 visibility_rect = Rect2( 26.0055, 90.0015, 199.176, 95.0445 ) -process_material = SubResource( 28 ) +process_material = SubResource( 30 ) texture = ExtResource( 3 ) [node name="Camera2D" type="Camera2D" parent="."] diff --git a/2d/particles/spark_particle2.png.import b/2d/particles/spark_particle2.png.import index 746e162b..8ff41b32 100644 --- a/2d/particles/spark_particle2.png.import +++ b/2d/particles/spark_particle2.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=false +flags/filter=true flags/mipmaps=false flags/anisotropic=false flags/srgb=2