pub use rusting_core::components::{
AmbientLight, Antialiasing, AxisLock, Camera, Children, Collider,
ColliderShape, CollisionLayers, CullingMode, DirectionalLight,
GlobalTransform, Name, ObjectClasses, Parent, PhysicsBackendStatus,
PhysicsBody, PhysicsSettings, PhysicsSolver, PointLight, Projection,
QualityProfile, RenderBounds, RenderSettings, RigidBody, RigidBodyKind,
SceneId, ShadowQuality, SimulationClass, SkyLight, SpotLight, ToneMapper,
ToneMapping, Visibility,
};
use bevy_ecs::component::Component;
use crate::assets::{Handle, MaterialAsset, MeshAsset};
#[derive(Component, Clone, Copy, Debug, PartialEq, Eq)]
pub struct MeshRenderer {
pub mesh: Handle<MeshAsset>,
pub material: Handle<MaterialAsset>,
pub cast_shadows: bool,
pub receive_shadows: bool,
}
#[derive(
Component,
Clone,
Copy,
Debug,
Default,
PartialEq,
Eq,
serde::Serialize,
serde::Deserialize,
)]
pub enum RenderLayer {
#[default]
World,
Viewmodel,
}
#[derive(
Component,
Clone,
Copy,
Debug,
PartialEq,
serde::Serialize,
serde::Deserialize,
)]
#[serde(default)]
pub struct ViewmodelCamera {
pub vertical_fov_radians: f32,
}
impl Default for ViewmodelCamera {
fn default() -> Self {
Self {
vertical_fov_radians: std::f32::consts::FRAC_PI_3,
}
}
}
#[derive(
Component,
Clone,
Copy,
Debug,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
)]
#[serde(default)]
pub struct MaterialOverride {
pub base_color: Option<[f32; 4]>,
pub emissive: Option<[f32; 3]>,
pub metallic: Option<f32>,
pub roughness: Option<f32>,
pub uv_scale: Option<[f32; 2]>,
pub uv_offset: Option<[f32; 2]>,
}