From 80af9a50c46f1d838cc0ce4a5da2ea2c234f4ed5 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Wed, 12 Mar 2025 12:56:03 -0600 Subject: [PATCH] Dust spray when opening bulkhead --- assets/particles/smoke_1.png | 3 + assets/particles/smoke_1.png.import | 35 ++++++ src/effects/dust_spray.tscn | 44 ++++++++ src/equipment/wide_spray/wide_spray.tscn | 3 + src/props/bulkhead/bulkhead.gd | 2 + src/props/bulkhead/bulkhead.tscn | 137 ++++++++++++++++++++++- 6 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 assets/particles/smoke_1.png create mode 100644 assets/particles/smoke_1.png.import create mode 100644 src/effects/dust_spray.tscn diff --git a/assets/particles/smoke_1.png b/assets/particles/smoke_1.png new file mode 100644 index 0000000..019df16 --- /dev/null +++ b/assets/particles/smoke_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c281ca8f1f1ed368d4450da63db0a6e3656988547d6de652e5f503705324498a +size 7793 diff --git a/assets/particles/smoke_1.png.import b/assets/particles/smoke_1.png.import new file mode 100644 index 0000000..8e6d1db --- /dev/null +++ b/assets/particles/smoke_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxdqqrwn2ghen" +path.s3tc="res://.godot/imported/smoke_1.png-3dd973f475603930dfd9a84af90897bd.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/particles/smoke_1.png" +dest_files=["res://.godot/imported/smoke_1.png-3dd973f475603930dfd9a84af90897bd.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +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=0 diff --git a/src/effects/dust_spray.tscn b/src/effects/dust_spray.tscn new file mode 100644 index 0000000..404dd51 --- /dev/null +++ b/src/effects/dust_spray.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=7 format=3 uid="uid://64kcxg3x6631"] + +[ext_resource type="Texture2D" uid="uid://dxdqqrwn2ghen" path="res://assets/particles/smoke_1.png" id="1_cuaej"] + +[sub_resource type="Curve" id="Curve_w7oba"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.303954), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_hx0vd"] +curve = SubResource("Curve_w7oba") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_88aga"] +angle_min = -15.0 +angle_max = 15.0 +direction = Vector3(0, 0, 1) +spread = 5.0 +initial_velocity_min = 4.5 +initial_velocity_max = 4.5 +gravity = Vector3(0, 1.4, 0) +damping_min = 5.955 +damping_max = 5.955 +scale_over_velocity_curve = SubResource("CurveTexture_hx0vd") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4jho1"] +transparency = 1 +vertex_color_use_as_albedo = true +albedo_color = Color(0.705882, 0.67451, 0.619608, 1) +albedo_texture = ExtResource("1_cuaej") +emission = Color(1, 1, 1, 1) +texture_filter = 2 +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="QuadMesh" id="QuadMesh_bso71"] +material = SubResource("StandardMaterial3D_4jho1") + +[node name="DustSpray" type="GPUParticles3D"] +amount = 16 +lifetime = 0.7 +process_material = SubResource("ParticleProcessMaterial_88aga") +draw_pass_1 = SubResource("QuadMesh_bso71") diff --git a/src/equipment/wide_spray/wide_spray.tscn b/src/equipment/wide_spray/wide_spray.tscn index b16c841..673bf2f 100644 --- a/src/equipment/wide_spray/wide_spray.tscn +++ b/src/equipment/wide_spray/wide_spray.tscn @@ -141,6 +141,7 @@ skeleton = NodePath("../../..") transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -1) size = Vector3(0.2, 2, 0.2) texture_albedo = ExtResource("3_78jy6") +texture_emission = ExtResource("3_78jy6") cull_mask = 1048573 [node name="LeftPivot" type="Node3D" parent="Muzzle/Pivot/ReticleDecals"] @@ -150,6 +151,7 @@ transform = Transform3D(0.970296, 0, 0.241922, 0, 1, 0, -0.241922, 0, 0.970296, transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -1) size = Vector3(0.2, 2, 0.2) texture_albedo = ExtResource("4_rotxf") +texture_emission = ExtResource("4_rotxf") cull_mask = 1048573 [node name="RightPivot" type="Node3D" parent="Muzzle/Pivot/ReticleDecals"] @@ -159,6 +161,7 @@ transform = Transform3D(0.970296, 0, -0.241922, 0, 1, 0, 0.241922, 0, 0.970296, transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -1) size = Vector3(0.2, 2, 0.2) texture_albedo = ExtResource("5_xo3vu") +texture_emission = ExtResource("5_xo3vu") cull_mask = 1048573 [node name="BeamParticles1" type="GPUParticles3D" parent="Muzzle/Pivot"] diff --git a/src/props/bulkhead/bulkhead.gd b/src/props/bulkhead/bulkhead.gd index db54c9c..c0d6f37 100644 --- a/src/props/bulkhead/bulkhead.gd +++ b/src/props/bulkhead/bulkhead.gd @@ -1,7 +1,9 @@ extends Node3D @onready var animation: AnimationPlayer = $AnimationPlayer +@onready var dust_animation: AnimationPlayer = %DustAnimation func open() -> void: animation.play("open") + dust_animation.play("spray") diff --git a/src/props/bulkhead/bulkhead.tscn b/src/props/bulkhead/bulkhead.tscn index 0082fd2..fc2a93a 100644 --- a/src/props/bulkhead/bulkhead.tscn +++ b/src/props/bulkhead/bulkhead.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=7 format=3 uid="uid://dvma1hufsl6mc"] +[gd_scene load_steps=11 format=3 uid="uid://dvma1hufsl6mc"] [ext_resource type="PackedScene" uid="uid://bopvgd18a1dl0" path="res://assets/props/bulkhead/bulkhead.gltf" id="1_77udb"] [ext_resource type="Script" uid="uid://rjygr6ybnl30" path="res://src/props/bulkhead/bulkhead.gd" id="2_hknvo"] +[ext_resource type="PackedScene" uid="uid://64kcxg3x6631" path="res://src/effects/dust_spray.tscn" id="3_88qrs"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_hknvo"] data = PackedVector3Array(-1.5, 0, 0.225, -1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 0, 0.225, -1.5, 0, -0.225, -1.5, 3, -0.225, -1.3125, 0.4375, -0.225, -1.5, 0, -0.225, -1.1875, 0.3125, -0.225, -1.5, 0, -0.225, -1.0625, 0.1875, -0.225, -1.1875, 0.3125, -0.225, -1.5, 0, -0.225, 1.0625, 0.1875, -0.225, -1.0625, 0.1875, -0.225, -1.3125, 0.4375, -0.225, -1.5, 3, -0.225, -1.5, 0, -0.225, 1.5, 0, -0.225, 1.0625, 0.1875, -0.225, -1.5, 0, -0.225, -1.3125, 2.5625, -0.225, -1.5, 3, -0.225, -1.3125, 0.4375, -0.225, 1.5, 0, -0.225, 1.3125, 0.4375, -0.225, 1.0625, 0.1875, -0.225, -1.5, 3, -0.225, -1.3125, 2.5625, -0.225, -1.0625, 2.8125, -0.225, 1.3125, 0.4375, -0.225, 1.5, 0, -0.225, 1.3125, 2.5625, -0.225, -1.5, 3, -0.225, -1.0625, 2.8125, -0.225, 1.5, 3, -0.225, 1.3125, 2.5625, -0.225, 1.5, 0, -0.225, 1.5, 3, -0.225, 1.5, 3, -0.225, -1.0625, 2.8125, -0.225, 1.0625, 2.8125, -0.225, 1.3125, 2.5625, -0.225, 1.5, 3, -0.225, 1.1875, 2.6875, -0.225, 1.5, 3, -0.225, 1.0625, 2.8125, -0.225, 1.1875, 2.6875, -0.225, 1.5, 0, -0.225, 1.5, 3, 0.225, 1.5, 3, -0.225, 1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 3, 0.225, 1.3125, 0.4375, 0.225, 1.5, 0, 0.225, 1.1875, 0.3125, 0.225, 1.5, 0, 0.225, 1.0625, 0.1875, 0.225, 1.1875, 0.3125, 0.225, 1.5, 0, 0.225, -1.0625, 0.1875, 0.225, 1.0625, 0.1875, 0.225, 1.3125, 0.4375, 0.225, 1.5, 3, 0.225, 1.5, 0, 0.225, -1.5, 0, 0.225, -1.0625, 0.1875, 0.225, 1.5, 0, 0.225, 1.3125, 2.5625, 0.225, 1.5, 3, 0.225, 1.3125, 0.4375, 0.225, -1.5, 0, 0.225, -1.3125, 0.4375, 0.225, -1.0625, 0.1875, 0.225, 1.5, 3, 0.225, 1.3125, 2.5625, 0.225, 1.0625, 2.8125, 0.225, -1.3125, 0.4375, 0.225, -1.5, 0, 0.225, -1.5, 3, 0.225, 1.5, 3, 0.225, 1.0625, 2.8125, 0.225, -1.5, 3, 0.225, -1.3125, 0.4375, 0.225, -1.5, 3, 0.225, -1.3125, 2.5625, 0.225, -1.5, 3, 0.225, 1.0625, 2.8125, 0.225, -1.0625, 2.8125, 0.225, -1.3125, 2.5625, 0.225, -1.5, 3, 0.225, -1.1875, 2.6875, 0.225, -1.5, 3, 0.225, -1.0625, 2.8125, 0.225, -1.1875, 2.6875, 0.225, -1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 0, -0.225, -1.5, 0, -0.225, -1.5, 0, 0.225, 1.5, 0, 0.225, 1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 3, -0.225, 1.5, 3, -0.225, 1.5, 3, 0.225, -1.5, 3, 0.225, 1.3125, 2.5625, 0.225, 1.3125, 0.4375, -0.225, 1.3125, 2.5625, -0.225, 1.3125, 2.5625, 0.225, 1.3125, 0.4375, 0.225, 1.3125, 0.4375, -0.225, -1.0625, 2.8125, -0.225, 1.0625, 2.8125, 0.225, 1.0625, 2.8125, -0.225, -1.0625, 2.8125, -0.225, -1.0625, 2.8125, 0.225, 1.0625, 2.8125, 0.225, -1.3125, 0.4375, 0.225, -1.3125, 2.5625, -0.225, -1.3125, 0.4375, -0.225, -1.3125, 0.4375, 0.225, -1.3125, 2.5625, 0.225, -1.3125, 2.5625, -0.225, -1.3125, 0.4375, 0.225, -1.0625, 0.1875, -0.225, -1.0625, 0.1875, 0.225, -1.0625, 0.1875, -0.225, -1.3125, 0.4375, 0.225, -1.1875, 0.3125, -0.225, -1.1875, 0.3125, -0.225, -1.3125, 0.4375, 0.225, -1.3125, 0.4375, -0.225, -1.3125, 2.5625, 0.225, -1.0625, 2.8125, -0.225, -1.3125, 2.5625, -0.225, -1.0625, 2.8125, -0.225, -1.3125, 2.5625, 0.225, -1.1875, 2.6875, 0.225, -1.0625, 2.8125, -0.225, -1.1875, 2.6875, 0.225, -1.0625, 2.8125, 0.225, 1.1875, 0.3125, 0.225, 1.3125, 0.4375, -0.225, 1.3125, 0.4375, 0.225, 1.3125, 0.4375, -0.225, 1.1875, 0.3125, 0.225, 1.0625, 0.1875, 0.225, 1.3125, 0.4375, -0.225, 1.0625, 0.1875, 0.225, 1.0625, 0.1875, -0.225, 1.0625, 2.8125, 0.225, 1.1875, 2.6875, -0.225, 1.0625, 2.8125, -0.225, 1.1875, 2.6875, -0.225, 1.0625, 2.8125, 0.225, 1.3125, 2.5625, 0.225, 1.1875, 2.6875, -0.225, 1.3125, 2.5625, 0.225, 1.3125, 2.5625, -0.225, 1.0625, 0.1875, 0.225, -1.0625, 0.1875, -0.225, 1.0625, 0.1875, -0.225, 1.0625, 0.1875, 0.225, -1.0625, 0.1875, 0.225, -1.0625, 0.1875, -0.225) @@ -16,6 +17,116 @@ size = Vector3(0.2, 0.2, 3) [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_w7oba"] data = PackedVector3Array(0.1, 0.1, 1.5, 0.1, -0.1, 1.5, -0.1, -0.1, 1.5, 0.1, 0.1, -1.5, -0.1, -0.1, -1.5, 0.1, -0.1, -1.5, 0.1, 0.1, 1.5, 0.1, 0.1, -1.5, 0.1, -0.1, 1.5, 0.1, 0.1, -1.5, 0.1, -0.1, -1.5, 0.1, -0.1, 1.5, 0.1, 0.1, -1.5, 0.1, 0.1, 1.5, -0.1, -0.1, -1.5, 0.1, 0.1, 1.5, -0.1, -0.1, 1.5, -0.1, -0.1, -1.5, -0.1, -0.1, 1.5, 0.1, -0.1, 1.5, -0.1, -0.1, -1.5, 0.1, -0.1, 1.5, 0.1, -0.1, -1.5, -0.1, -0.1, -1.5) +[sub_resource type="Animation" id="Animation_88qrs"] +resource_name = "spray" +length = 2.4 +step = 0.025 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DustSpray:amount_ratio") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.6, 1, 2.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 1.0, 1.0, 0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DustSpray2:amount_ratio") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.25, 0.6, 1, 2.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 1.0, 1.0, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DustSpray3:amount_ratio") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.25, 0.6, 1, 2.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 1.0, 1.0, 0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("DustSpray4:amount_ratio") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.25, 0.6, 1, 2.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 1.0, 1.0, 0.0] +} + +[sub_resource type="Animation" id="Animation_w7oba"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DustSpray:amount_ratio") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DustSpray2:amount_ratio") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DustSpray3:amount_ratio") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("DustSpray4:amount_ratio") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hx0vd"] +_data = { +&"RESET": SubResource("Animation_w7oba"), +&"spray": SubResource("Animation_88qrs") +} + [node name="Bulkhead" instance=ExtResource("1_77udb")] script = ExtResource("2_hknvo") @@ -45,3 +156,27 @@ shape = SubResource("ConcavePolygonShape3D_w7oba") [node name="CollisionShape3D2" type="CollisionShape3D" parent="Ramp" index="2"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0.1, -0.325) shape = SubResource("ConcavePolygonShape3D_w7oba") + +[node name="Dust" type="Node3D" parent="." index="4"] + +[node name="DustSpray" parent="Dust" index="0" instance=ExtResource("3_88qrs")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.25, 0.0897675) +amount_ratio = 0.0 + +[node name="DustSpray2" parent="Dust" index="1" instance=ExtResource("3_88qrs")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1, 0.25, 0.0897675) +amount_ratio = 0.0 + +[node name="DustSpray3" parent="Dust" index="2" instance=ExtResource("3_88qrs")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0.25, 0.0897675) +amount_ratio = 0.0 + +[node name="DustSpray4" parent="Dust" index="3" instance=ExtResource("3_88qrs")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1, 0.25, 0.0897675) +amount_ratio = 0.0 + +[node name="DustAnimation" type="AnimationPlayer" parent="Dust" index="4"] +unique_name_in_owner = true +libraries = { +&"": SubResource("AnimationLibrary_hx0vd") +}