1use crate::Point;
4use yog_data::Schema;
5use yog_ids as ids;
6
7#[derive(Debug, Clone, PartialEq, Schema)]
11pub struct ParticleOptions {
12 pub id: String,
13 pub color: Option<u32>,
15 pub scale: Option<f32>,
17}
18
19impl ParticleOptions {
20 pub fn plain(id: &str) -> Self {
22 ParticleOptions {
23 id: id.to_owned(),
24 color: None,
25 scale: None,
26 }
27 }
28
29 pub fn colored(id: &str, color: u32) -> Self {
31 ParticleOptions {
32 color: Some(color),
33 ..Self::plain(id)
34 }
35 }
36}
37
38actions! {
39 SpawnParticles { dim: String, pos: Point, particle: ParticleOptions, count: i32, spread: Point, speed: f64 } -> bool = ids::service_particle::SPAWN, "YogParticleActions.spawnParticles";
41}