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