use bevy::prelude::*;
pub use gaussian::{
packed::Gaussian,
cloud::GaussianCloud,
rand::random_gaussians,
settings::GaussianCloudSettings,
};
pub use material::spherical_harmonics::SphericalHarmonicCoefficients;
use io::loader::GaussianCloudLoader;
pub use render::GaussianCamera;
use render::RenderPipelinePlugin;
pub mod gaussian;
pub mod io;
pub mod material;
pub mod morph;
pub mod query;
pub mod render;
pub mod sort;
pub mod utils;
#[cfg(feature = "noise")]
pub mod noise;
#[derive(Bundle, Default, Reflect)]
pub struct GaussianSplattingBundle {
pub settings: GaussianCloudSettings,
pub cloud: Handle<GaussianCloud>,
pub visibility: Visibility,
}
pub struct GaussianSplattingPlugin;
impl Plugin for GaussianSplattingPlugin {
fn build(&self, app: &mut App) {
app.register_type::<SphericalHarmonicCoefficients>();
app.register_type::<GaussianCloud>();
app.init_asset::<GaussianCloud>();
app.register_asset_reflect::<GaussianCloud>();
app.init_asset_loader::<GaussianCloudLoader>();
app.register_type::<GaussianCloudSettings>();
app.register_type::<GaussianSplattingBundle>();
app.add_plugins((
RenderPipelinePlugin,
material::MaterialPlugin,
query::QueryPlugin,
));
#[cfg(feature = "noise")]
app.add_plugins(noise::NoisePlugin);
}
}