mod instanced;
pub use instanced::*;
use crate::render::asset_id::MeshId;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RenderMesh {
pub name: String,
#[serde(skip)]
pub id: Option<MeshId>,
}
impl RenderMesh {
pub fn new(name: impl Into<String>) -> Self {
Self {
name: name.into(),
id: None,
}
}
pub fn with_id(name: impl Into<String>, id: MeshId) -> Self {
Self {
name: name.into(),
id: Some(id),
}
}
}
impl Default for RenderMesh {
fn default() -> Self {
Self {
name: "Cube".to_string(),
id: None,
}
}
}
impl From<String> for RenderMesh {
fn from(name: String) -> Self {
Self { name, id: None }
}
}
impl From<&str> for RenderMesh {
fn from(name: &str) -> Self {
Self {
name: name.to_string(),
id: None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum GeometryPrimitive {
Torus,
Cube,
Sphere,
Plane,
Cone,
Cylinder,
}
impl std::fmt::Display for GeometryPrimitive {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
GeometryPrimitive::Torus => write!(f, "Torus"),
GeometryPrimitive::Cube => write!(f, "Cube"),
GeometryPrimitive::Sphere => write!(f, "Sphere"),
GeometryPrimitive::Plane => write!(f, "Plane"),
GeometryPrimitive::Cone => write!(f, "Cone"),
GeometryPrimitive::Cylinder => write!(f, "Cylinder"),
}
}
}
pub use crate::render::geometry::{
Mesh, MorphTarget, MorphTargetData, SkinData, SkinnedVertex, Vertex,
};