You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: sphere.rs
    path of file: ./repos/Fyrox/src/scene/particle_system/emitter
    
    the code of the file until where you have to start completion: //! Sphere emitter uniformly places particles in spherical volume. Can be used with
//! radius = 0, then it represents point emitter.

use crate::{
    core::{algebra::Vector3,
    
    fn emit(&self, particle: &mut Particle, rng: &mut ParticleSystemRng) {
        self.emitter.emit(particle, rng);
        let phi = (0.0..std::f32::consts::PI).random(rng);
        let theta = (0.0..2.0 * std::f32::consts::PI).random(rng);
        let radius = (0.0..self.radius).random(rng);
        let cos_theta = theta.cos();
        let sin_theta = theta.sin();
        let cos_phi = phi.cos();
        let sin_phi = phi.sin();
        particle.position = self.position()
            + Vector3::new(
                radius * sin_theta * cos_phi,
                radius * sin_theta * sin_phi,
                radius * cos_theta,
            );
    }