use std::{thread, time::Duration}; use glam::Vec3; use proton_particle_rs::{ behavior::{Gravity, Rotate, RotationValue}, core::Proton, emitter::{EmitTime, Emitter}, initialize::{Life, Mass, Position, Radius, Rate, Velocity}, math::span::Span, zone::BoxZone, }; fn main() { env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("debug")).init(); let mut emitter = Emitter::new(); emitter.set_rate(Rate::new_range( Span::from_minmax(5., 10.), Span::from_minmax(0.1, 0.25), )); emitter.add_initialize(Mass::from_min(1.)); emitter.add_initialize(Radius::from_min(10.)); emitter.add_initialize(Life::from_span(Span::from_minmax(2., 4.))); // TODO // emitter.addInitialize(new Proton.Body(obj.Body)); emitter.add_initialize(Position::from_zone(BoxZone::from_cube(100.))); emitter.add_initialize(Velocity::new(200., Vec3::new(0., 1., 1.), 30.)); emitter.add_behaviour(Rotate::new( Some(RotationValue::Random), Some(RotationValue::Random), None, None, )); //emitter.add_behaviour(Scale::new(1., 0.1)); //emitter.addBehaviour(new Proton.Scale(1, 0.1)); emitter.add_behaviour(Gravity::new(3.)); // emitter.p.x = obj.p.x; // emitter.p.y = obj.p.y; emitter.emit(EmitTime::Infinite); let mut proton = Proton::new(); proton.add_emitter(emitter); let mut time = 0.; let delta = 0.0167; while time < 10000000000.0 { time += delta; proton.update(delta); thread::sleep(Duration::from_millis(17)); } }