diff --git a/rust/src/weapon.rs b/rust/src/weapon.rs index 85165d9..2ca5e75 100644 --- a/rust/src/weapon.rs +++ b/rust/src/weapon.rs @@ -3,7 +3,7 @@ use godot::{ prelude::*, }; -use crate::{net::util::cast_ray, player::IPlayer}; +use crate::{game_manager::Game, net::util::cast_ray, player::IPlayer}; pub trait Weapon { fn shoot(&mut self, player_rid: Rid, player_id: u16, to: Vector3, deal_damage: bool); @@ -49,9 +49,13 @@ impl Weapon for Raygun { bullet.bind_mut().source = Some(source.get_global_position()); bullet.bind_mut().target = Some(beam_end); - if let Some(mut parent) = self.base().find_parent("map") { - parent.add_child(&bullet); - } + self.run_deferred(move |_| { + if let Some(mut game) = Game::singleton() + && let Some(map) = &mut game.bind_mut().current_map + { + map.add_child(&bullet); + } + }); } if deal_damage && let Some(target) = target {