From 8450893a1c0598b3af8c7cf9a9c39966e754ae14 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Mon, 3 Mar 2025 18:56:22 -0500 Subject: Move example to example --- examples/assets/fonts/ComicNeue-Regular.ttf | Bin 0 -> 54848 bytes examples/assets/meshes/cube.obj | 38 +++++++++++++++ examples/assets/scenes/fox.glb | Bin 0 -> 162852 bytes examples/assets/textures/test.png | Bin 0 -> 125 bytes examples/fox.rs | 72 ++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 examples/assets/fonts/ComicNeue-Regular.ttf create mode 100644 examples/assets/meshes/cube.obj create mode 100644 examples/assets/scenes/fox.glb create mode 100644 examples/assets/textures/test.png create mode 100644 examples/fox.rs (limited to 'examples') diff --git a/examples/assets/fonts/ComicNeue-Regular.ttf b/examples/assets/fonts/ComicNeue-Regular.ttf new file mode 100644 index 0000000..d454f46 Binary files /dev/null and b/examples/assets/fonts/ComicNeue-Regular.ttf differ diff --git a/examples/assets/meshes/cube.obj b/examples/assets/meshes/cube.obj new file mode 100644 index 0000000..2f3a670 --- /dev/null +++ b/examples/assets/meshes/cube.obj @@ -0,0 +1,38 @@ +# Blender 4.1.1 +# www.blender.org +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +s 0 +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 diff --git a/examples/assets/scenes/fox.glb b/examples/assets/scenes/fox.glb new file mode 100644 index 0000000..1ef5c0d Binary files /dev/null and b/examples/assets/scenes/fox.glb differ diff --git a/examples/assets/textures/test.png b/examples/assets/textures/test.png new file mode 100644 index 0000000..0752be0 Binary files /dev/null and b/examples/assets/textures/test.png differ diff --git a/examples/fox.rs b/examples/fox.rs new file mode 100644 index 0000000..33df561 --- /dev/null +++ b/examples/fox.rs @@ -0,0 +1,72 @@ +use teleia::*; + +use std::ops::Rem; + +pub struct TestGame { + font: font::Bitmap, + tt: font::TrueType, + // cube: mesh::Mesh, + fox: scene::Scene, + tex: texture::Texture, + shader: shader::Shader, +} + +impl TestGame { + pub async fn new(ctx: &context::Context) -> Self { + Self { + font: font::Bitmap::new(ctx), + tt: font::TrueType::new(ctx, 12.0, include_bytes!("assets/fonts/ComicNeue-Regular.ttf")), + // cube: mesh::Mesh::from_obj(ctx, include_bytes!("assets/meshes/cube.obj")), + fox: scene::Scene::from_gltf(ctx, include_bytes!("assets/scenes/fox.glb")), + // fox: scene::Scene::from_gltf(ctx, include_bytes!("/home/llll/src/colonq/assets/lcolonq_flat.vrm")), + tex: texture::Texture::new(ctx, include_bytes!("assets/textures/test.png")), + shader: scene::Scene::load_default_shader(ctx), + } + } +} + +impl state::Game for TestGame { + fn update(&mut self, ctx: &context::Context, st: &mut state::State) -> Option<()> { + st.move_camera( + ctx, + &glam::Vec3::new(0.0, 0.0, -1.0), + &glam::Vec3::new(0.0, 0.0, 1.0), + &glam::Vec3::new(0.0, 1.0, 0.0), + ); + Some(()) + } + fn render(&mut self, ctx: &context::Context, st: &mut state::State) -> Option<()> { + // if let Some(n) = self.fox.nodes_by_name.get("J_Bip_C_Neck").and_then(|i| self.fox.nodes.get_mut(*i)) { + // n.transform *= glam::Mat4::from_rotation_z(0.05); + // } + ctx.clear(); + self.fox.reflect_animation("Run", (st.tick as f32 / 60.0).rem(3.0)); + st.bind_3d(ctx, &self.shader); + self.shader.set_position_3d( + ctx, + &glam::Mat4::from_scale_rotation_translation( + glam::Vec3::new(0.005, 0.005, 0.005), + // glam::Vec3::new(1.0, 1.0, 1.0), + glam::Quat::from_rotation_y(st.tick as f32 / 60.0), + glam::Vec3::new(0.0, -0.2, 0.0), + ), + ); + self.tex.bind(ctx); + self.fox.render(ctx, &self.shader); + self.font.render_text(ctx, &glam::Vec2::new(0.0, 10.0), "he's all FIXED up"); + self.tt.render_text_helper( + ctx, &glam::Vec2::new(10.0, 60.0), &glam::Vec2::new(20.0, 30.0), + "tESTge", + &[ + glam::Vec3::new(1.0, 0.0, 0.0), + glam::Vec3::new(0.0, 1.0, 0.0), + ], + ); + Some(()) + } +} + +#[tokio::main] +pub async fn main() { + run("teleia test", 240, 160, Options::empty(), TestGame::new).await; +} -- cgit v1.2.3