gizmo_physics_rigid/components/
explosion.rs1use 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, #[default]
9 Linear, Quadratic, }
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);