use crate::{header::{ObjectSettings, Vertex}, Renderer, StringBuffer, ObjectStorage};
pub fn triangle(
name: impl StringBuffer,
settings: ObjectSettings,
renderer: &mut Renderer,
objects: &mut ObjectStorage,
) -> anyhow::Result<()> {
objects.new_object(
name.clone(),
vec![
Vertex {
position: [0.0, 1.0, 0.0],
uv: [0.5, 0.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [-1.0, -1.0, 0.0],
uv: [0.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [1.0, -1.0, 0.0],
uv: [1.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
],
vec![0, 1, 2],
settings,
renderer
)?;
Ok(())
}
pub fn square(
name: impl StringBuffer,
settings: ObjectSettings,
renderer: &mut Renderer,
objects: &mut ObjectStorage,
) -> anyhow::Result<()> {
objects.new_object(
name.clone(),
vec![
Vertex {
position: [1.0, 1.0, 0.0],
uv: [1.0, 0.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [1.0, -1.0, 0.0],
uv: [1.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [-1.0, -1.0, 0.0],
uv: [0.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [-1.0, 1.0, 0.0],
uv: [0.0, 0.0],
normal: [0f32, 0f32, 0f32],
},
],
vec![2, 1, 0, 2, 0, 3],
settings,
renderer
)?;
Ok(())
}
pub fn rectangle(width: f32, height: f32, name: impl StringBuffer, settings: ObjectSettings, renderer: &mut Renderer, objects: &mut ObjectStorage) -> anyhow::Result<()> {
objects.new_object(
name.clone(),
vec![
Vertex {
position: [width/2.0, height/2.0, 0.0],
uv: [1.0, 0.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [width/2.0, -height/2.0, 0.0],
uv: [1.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [-width/2.0, -height/2.0, 0.0],
uv: [0.0, 1.0],
normal: [0f32, 0f32, 0f32],
},
Vertex {
position: [-width/2.0, height/2.0, 0.0],
uv: [0.0, 0.0],
normal: [0f32, 0f32, 0f32],
},
],
vec![2, 1, 0, 2, 0, 3],
settings,
renderer
)?;
Ok(())
}