Skip to main content

gizmo_physics_rigid/components/
explosion.rs

1use gizmo_math::Vec3;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, Default)]
5#[non_exhaustive]
6pub enum ExplosionFalloff {
7    None, // Sabit kuvvet
8    #[default]
9    Linear, // 1 - (dist / radius)
10    Quadratic, // (1 - dist/radius)^2
11}
12
13#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
14pub struct Explosion {
15    pub force_radius: f32,
16    pub force: f32,
17    pub damage: f32,
18    pub damage_radius: f32,
19    pub falloff: ExplosionFalloff,
20    pub offset: Vec3,
21    pub is_active: bool,
22}
23
24impl Default for Explosion {
25    fn default() -> Self {
26        Self {
27            force_radius: 5.0,
28            force: 1000.0,
29            damage: 100.0,
30            damage_radius: 5.0,
31            falloff: ExplosionFalloff::Linear,
32            offset: Vec3::ZERO,
33            is_active: true,
34        }
35    }
36}
37
38gizmo_core::impl_component!(Explosion);