use godot::{ classes::{Area3D, IArea3D}, prelude::*, }; use crate::{net::network_manager::NetworkManager, player::IPlayer}; #[derive(GodotClass)] #[class(base=Area3D, init)] pub struct Killbox { base: Base, } #[godot_api] impl IArea3D for Killbox { fn ready(&mut self) { self.base() .signals() .body_entered() .connect_other(self, |s, body| s.kill(body)); } } impl Killbox { pub fn kill(&mut self, node: Gd) { if let Ok(mut player) = node.try_dynify::() { if NetworkManager::singleton().bind().is_host() { player.dyn_bind_mut().take_damage(0, 1000, true); } } } }