use godot::prelude::*; #[derive(GodotClass)] #[class(base=Node3D, init, tool)] pub struct Arrow { #[export] mesh: Option>, elapsed: f64, base: Base, } #[godot_api] impl INode3D for Arrow { fn process(&mut self, delta: f64) { self.elapsed += delta; let global_pos = self.base().get_global_position(); if let Some(mesh) = &mut self.mesh { mesh.set_global_position( global_pos + Vector3::UP * 2. + Vector3::UP * (self.elapsed * 2.).sin() as f32 / 10., ); mesh.set_global_rotation(Vector3::UP * self.elapsed as f32); } } }