Added ExplosionParticles

This commit is contained in:
2025-11-24 16:40:43 +03:00
parent ce33ff76e8
commit 98294afeab
9 changed files with 216 additions and 18 deletions
@@ -0,0 +1,40 @@
class_name ExplosionParticles
extends Node2D
signal finished
@export var process_material: ParticleProcessMaterial
@export_range(0, 1) var amount_ratio: float = 1
@onready var particles_huge : GPUParticles2D = $ParticlesHuge
@onready var particles_large : GPUParticles2D = $ParticlesLarge
@onready var particles_medium : GPUParticles2D = $ParticlesMedium
var _emiting_count := 0
var emitting : bool = false:
set(value):
emitting = value
if particles_huge: particles_huge.emitting = emitting; _emiting_count += 1
if particles_large: particles_large.emitting = emitting; _emiting_count += 1
if particles_medium: particles_medium.emitting = emitting; _emiting_count += 1
func _ready() -> void:
particles_huge.amount_ratio = amount_ratio
particles_large.amount_ratio = amount_ratio
particles_medium.amount_ratio = amount_ratio
particles_huge.process_material = process_material
particles_large.process_material = process_material
particles_medium.process_material = process_material
func _on_particles_finished() -> void:
_emiting_count -= 1
if _emiting_count == 0:
finished.emit()
@@ -0,0 +1 @@
uid://dhnjdam04g4tb
@@ -0,0 +1,47 @@
[gd_scene load_steps=6 format=3 uid="uid://bhxib2ltpkcbf"]
[ext_resource type="Texture2D" uid="uid://gh7mwehpqfco" path="res://particle_textures/flame_medium.tres" id="1_6awlt"]
[ext_resource type="Script" uid="uid://dhnjdam04g4tb" path="res://game/entities/other/explosion_particles.gd" id="1_w1d42"]
[ext_resource type="Texture2D" uid="uid://b13al44e8ofsx" path="res://particle_textures/flame_large.tres" id="2_w1d42"]
[ext_resource type="Texture2D" uid="uid://blp4o1c7y66wv" path="res://particle_textures/flame_huge.tres" id="3_lplfr"]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_w1d42"]
lifetime_randomness = 0.2
particle_flag_disable_z = true
emission_shape = 1
emission_sphere_radius = 1.0
angle_min = -179.99998
angle_max = 180.00002
spread = 180.0
gravity = Vector3(0, 0, 0)
turbulence_enabled = true
turbulence_noise_speed = Vector3(0.1, 0.1, 0.1)
[node name="ExplosionParticles" type="Node2D"]
script = ExtResource("1_w1d42")
process_material = SubResource("ParticleProcessMaterial_w1d42")
[node name="ParticlesMedium" type="GPUParticles2D" parent="."]
emitting = false
amount = 512
texture = ExtResource("1_6awlt")
lifetime = 0.25
one_shot = true
[node name="ParticlesLarge" type="GPUParticles2D" parent="."]
emitting = false
amount = 512
texture = ExtResource("2_w1d42")
lifetime = 0.25
one_shot = true
[node name="ParticlesHuge" type="GPUParticles2D" parent="."]
emitting = false
amount = 512
texture = ExtResource("3_lplfr")
lifetime = 0.25
one_shot = true
[connection signal="finished" from="ParticlesMedium" to="." method="_on_particles_finished"]
[connection signal="finished" from="ParticlesLarge" to="." method="_on_particles_finished"]
[connection signal="finished" from="ParticlesHuge" to="." method="_on_particles_finished"]