Major Refactor: separate project into multiple crates
This commit is contained in:
parent
f943e4c945
commit
d0440f3da3
24 changed files with 209 additions and 2232 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
|||
/target
|
||||
.aider*
|
||||
*.patch
|
||||
|
|
|
|||
152
Cargo.lock
generated
152
Cargo.lock
generated
|
|
@ -4,9 +4,9 @@ version = 4
|
|||
|
||||
[[package]]
|
||||
name = "ab_glyph"
|
||||
version = "0.2.29"
|
||||
version = "0.2.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0"
|
||||
checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d"
|
||||
dependencies = [
|
||||
"ab_glyph_rasterizer",
|
||||
"owned_ttf_parser",
|
||||
|
|
@ -14,9 +14,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ab_glyph_rasterizer"
|
||||
version = "0.1.8"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
|
||||
checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169"
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
|
|
@ -151,9 +151,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "avif-serialize"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e"
|
||||
checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
]
|
||||
|
|
@ -220,9 +220,9 @@ checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b"
|
|||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.18.1"
|
||||
version = "3.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee"
|
||||
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
|
|
@ -276,9 +276,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.27"
|
||||
version = "1.2.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc"
|
||||
checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
|
|
@ -395,9 +395,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.4.2"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
|
||||
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
|
@ -429,9 +429,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|||
|
||||
[[package]]
|
||||
name = "crunchy"
|
||||
version = "0.2.3"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
|
||||
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
|
||||
|
||||
[[package]]
|
||||
name = "cursor-icon"
|
||||
|
|
@ -585,23 +585,6 @@ version = "0.3.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
|
||||
|
||||
[[package]]
|
||||
name = "fps"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glam",
|
||||
"glium",
|
||||
"gltf",
|
||||
"glutin",
|
||||
"hecs",
|
||||
"image",
|
||||
"imgui",
|
||||
"imgui-glium-renderer",
|
||||
"imgui-winit-support",
|
||||
"winit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gethostname"
|
||||
version = "0.4.3"
|
||||
|
|
@ -923,9 +906,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.9.0"
|
||||
version = "2.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
|
||||
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.15.4",
|
||||
|
|
@ -1037,9 +1020,9 @@ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
|
|||
|
||||
[[package]]
|
||||
name = "libfuzzer-sys"
|
||||
version = "0.4.9"
|
||||
version = "0.4.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75"
|
||||
checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"cc",
|
||||
|
|
@ -1057,9 +1040,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libredox"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
|
||||
checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"libc",
|
||||
|
|
@ -1121,9 +1104,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
|
|||
|
||||
[[package]]
|
||||
name = "memmap2"
|
||||
version = "0.9.5"
|
||||
version = "0.9.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f"
|
||||
checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
|
@ -1652,7 +1635,7 @@ dependencies = [
|
|||
"concurrent-queue",
|
||||
"hermit-abi",
|
||||
"pin-project-lite",
|
||||
"rustix 1.0.7",
|
||||
"rustix 1.0.8",
|
||||
"tracing",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
|
@ -1742,6 +1725,60 @@ version = "5.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
||||
|
||||
[[package]]
|
||||
name = "raidillon_core"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "raidillon_ecs"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"glam",
|
||||
"hecs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raidillon_game"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glam",
|
||||
"glium",
|
||||
"glutin",
|
||||
"hecs",
|
||||
"raidillon_core",
|
||||
"raidillon_ecs",
|
||||
"raidillon_render",
|
||||
"raidillon_ui",
|
||||
"winit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raidillon_render"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glam",
|
||||
"glium",
|
||||
"gltf",
|
||||
"glutin",
|
||||
"hecs",
|
||||
"image",
|
||||
"raidillon_ecs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raidillon_ui"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glium",
|
||||
"imgui",
|
||||
"imgui-glium-renderer",
|
||||
"imgui-winit-support",
|
||||
"winit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
|
|
@ -1868,9 +1905,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rgb"
|
||||
version = "0.8.50"
|
||||
version = "0.8.52"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
|
||||
checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
|
|
@ -1893,15 +1930,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.0.7"
|
||||
version = "1.0.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
|
||||
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
|
||||
dependencies = [
|
||||
"bitflags 2.9.1",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.9.4",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2306,12 +2343,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.45"
|
||||
version = "0.4.50"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
|
||||
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
|
@ -2459,9 +2497,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.72"
|
||||
version = "0.3.77"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
|
||||
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
|
|
@ -2824,9 +2862,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.7.11"
|
||||
version = "0.7.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd"
|
||||
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
|
@ -2874,9 +2912,9 @@ checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d"
|
|||
|
||||
[[package]]
|
||||
name = "xcursor"
|
||||
version = "0.3.9"
|
||||
version = "0.3.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "635887f4315a33cb714eb059bdbd7c1c92bfa71bc5b9d5115460502f788c2ab5"
|
||||
checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"
|
||||
|
||||
[[package]]
|
||||
name = "xkbcommon-dl"
|
||||
|
|
@ -2899,9 +2937,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
|
|||
|
||||
[[package]]
|
||||
name = "xml-rs"
|
||||
version = "0.8.26"
|
||||
version = "0.8.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda"
|
||||
checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7"
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
|
|
@ -2940,9 +2978,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zune-jpeg"
|
||||
version = "0.4.18"
|
||||
version = "0.4.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa"
|
||||
checksum = "2c9e525af0a6a658e031e95f14b7f889976b74a11ba0eca5a5fc9ac8a1c43a6a"
|
||||
dependencies = [
|
||||
"zune-core",
|
||||
]
|
||||
|
|
|
|||
29
Cargo.toml
29
Cargo.toml
|
|
@ -1,21 +1,8 @@
|
|||
[package]
|
||||
name = "fps"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.98"
|
||||
glam = "0.30.4"
|
||||
|
||||
glium = { version = "0.35.0", features = ["glutin_backend", "simple_window_builder"] }
|
||||
gltf = { version = "1.4.1", features = ["import", "utils", "KHR_texture_transform"] }
|
||||
glutin = { version = "0.32.3", default-features = false }
|
||||
|
||||
hecs = "0.10.5"
|
||||
image = "0.25.6"
|
||||
|
||||
imgui = "0.12"
|
||||
imgui-winit-support = "0.13"
|
||||
imgui-glium-renderer = "0.13"
|
||||
|
||||
winit = "0.30"
|
||||
[workspace]
|
||||
members = [
|
||||
"raidillon_core",
|
||||
"raidillon_ecs",
|
||||
"raidillon_render",
|
||||
"raidillon_ui",
|
||||
"raidillon_game",
|
||||
]
|
||||
|
|
|
|||
2
justfile
2
justfile
|
|
@ -1,10 +1,8 @@
|
|||
default:
|
||||
@just --list
|
||||
|
||||
# Run 'cargo run' on the project
|
||||
run *ARGS:
|
||||
cargo run {{ARGS}}
|
||||
|
||||
# Watch for changes and automatically restart
|
||||
watch:
|
||||
bacon
|
||||
|
|
|
|||
BIN
opengl.png
BIN
opengl.png
Binary file not shown.
|
Before Width: | Height: | Size: 44 KiB |
4
raidillon_core/Cargo.toml
Normal file
4
raidillon_core/Cargo.toml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[package]
|
||||
name = "raidillon_core"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
3
raidillon_core/src/lib.rs
Normal file
3
raidillon_core/src/lib.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
pub mod time;
|
||||
|
||||
pub use time::Time;
|
||||
8
raidillon_ecs/Cargo.toml
Normal file
8
raidillon_ecs/Cargo.toml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "raidillon_ecs"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
glam = "0.30.4"
|
||||
hecs = "0.10.5"
|
||||
17
raidillon_ecs/src/lib.rs
Normal file
17
raidillon_ecs/src/lib.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
use glam::{Mat4, Quat, Vec3};
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct Transform {
|
||||
pub translation: Vec3,
|
||||
pub rotation: Quat,
|
||||
pub scale: Vec3,
|
||||
}
|
||||
|
||||
impl Transform {
|
||||
pub fn matrix(&self) -> Mat4 {
|
||||
Mat4::from_scale_rotation_translation(self.scale, self.rotation, self.translation)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ModelHandle(pub usize);
|
||||
16
raidillon_game/Cargo.toml
Normal file
16
raidillon_game/Cargo.toml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
[package]
|
||||
name = "raidillon_game"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.98"
|
||||
glam = "0.30.4"
|
||||
glium = { version = "0.35.0", features = ["glutin_backend", "simple_window_builder"] }
|
||||
glutin = { version = "0.32.3", default-features = false }
|
||||
winit = "0.30"
|
||||
raidillon_render = { path = "../raidillon_render" }
|
||||
raidillon_ecs = { path = "../raidillon_ecs" }
|
||||
raidillon_ui = { path = "../raidillon_ui" }
|
||||
raidillon_core = { path = "../raidillon_core" }
|
||||
hecs = "0.10.5"
|
||||
|
|
@ -1,17 +1,10 @@
|
|||
mod camera;
|
||||
mod ecs;
|
||||
mod model;
|
||||
mod gltf_loader;
|
||||
mod render;
|
||||
mod time;
|
||||
mod ui;
|
||||
|
||||
use anyhow::Result;
|
||||
use camera::Camera;
|
||||
use ecs::{Transform};
|
||||
use glam::{Quat, Vec3, EulerRot};
|
||||
use glium::backend::glutin::SimpleWindowBuilder;
|
||||
use render::GliumRenderer;
|
||||
use raidillon_core::Time;
|
||||
use raidillon_ecs::Transform;
|
||||
use raidillon_render::{Camera, GliumRenderer, gltf_loader, ECSRenderer};
|
||||
use raidillon_ui::Gui;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let event_loop = glium::winit::event_loop::EventLoop::builder()
|
||||
|
|
@ -19,7 +12,7 @@ fn main() -> Result<()> {
|
|||
.expect("create event-loop");
|
||||
|
||||
let (window, display) = SimpleWindowBuilder::new()
|
||||
.with_title("fps")
|
||||
.with_title("raidillon")
|
||||
.with_inner_size(1280, 720)
|
||||
.build(&event_loop);
|
||||
|
||||
|
|
@ -27,13 +20,13 @@ fn main() -> Result<()> {
|
|||
let mut ecsr = {
|
||||
let world = hecs::World::new();
|
||||
let renderer = GliumRenderer::new(display.clone())?;
|
||||
ecs::ECSRenderer::new(renderer, world)
|
||||
ECSRenderer::new(renderer, world)
|
||||
};
|
||||
|
||||
// Dear ImGui integration
|
||||
let mut gui = ui::Gui::new(&display, &window)?;
|
||||
let mut gui = Gui::new(&display, &window)?;
|
||||
|
||||
let mut time = time::Time::new();
|
||||
let mut time = Time::new();
|
||||
|
||||
let object_ent = {
|
||||
let model_3d = gltf_loader::load_gltf("resources/models/tree.gltf", &display)?;
|
||||
|
|
@ -77,7 +70,7 @@ fn main() -> Result<()> {
|
|||
Event::WindowEvent { event, .. } => match event {
|
||||
WindowEvent::CloseRequested => el.exit(),
|
||||
WindowEvent::Resized(sz) => {
|
||||
ecsr.world.query_one_mut::<&mut crate::camera::Camera>(camera_ent).map(|mut cam| {
|
||||
ecsr.world.query_one_mut::<&mut Camera>(camera_ent).map(|mut cam| {
|
||||
cam.aspect = sz.width as f32 / sz.height as f32;
|
||||
});
|
||||
}
|
||||
14
raidillon_render/Cargo.toml
Normal file
14
raidillon_render/Cargo.toml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[package]
|
||||
name = "raidillon_render"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.98"
|
||||
glam = "0.30.4"
|
||||
glium = { version = "0.35.0", features = ["glutin_backend", "simple_window_builder"] }
|
||||
gltf = { version = "1.4.1", features = ["import", "utils", "KHR_texture_transform"] }
|
||||
glutin = { version = "0.32.3", default-features = false }
|
||||
hecs = "0.10.5"
|
||||
image = "0.25.6"
|
||||
raidillon_ecs = { path = "../raidillon_ecs" }
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use glam::{Mat4, Quat, Vec3};
|
||||
use raidillon_ecs::{Transform, ModelHandle};
|
||||
use hecs::{Entity, World};
|
||||
use crate::render::GliumRenderer;
|
||||
use crate::model::Model;
|
||||
|
|
@ -46,19 +46,3 @@ impl ECSRenderer {
|
|||
self.renderer.render_into(&self.world, target);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct Transform {
|
||||
pub translation: Vec3,
|
||||
pub rotation: Quat,
|
||||
pub scale: Vec3,
|
||||
}
|
||||
|
||||
impl Transform {
|
||||
pub fn matrix(&self) -> Mat4 {
|
||||
Mat4::from_scale_rotation_translation(self.scale, self.rotation, self.translation)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ModelHandle(pub usize);
|
||||
9
raidillon_render/src/lib.rs
Normal file
9
raidillon_render/src/lib.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
pub mod camera;
|
||||
pub mod model;
|
||||
pub mod gltf_loader;
|
||||
pub mod render;
|
||||
pub mod ecs_renderer;
|
||||
|
||||
pub use camera::Camera;
|
||||
pub use render::GliumRenderer;
|
||||
pub use ecs_renderer::ECSRenderer;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::camera::Camera;
|
||||
use crate::ecs::{ModelHandle, Transform};
|
||||
use raidillon_ecs::{ModelHandle, Transform};
|
||||
use crate::model::{Model, Mesh};
|
||||
use glium::texture::{RawImage2d, SrgbTexture2d};
|
||||
use glium::{uniform, Program, Surface};
|
||||
|
|
@ -26,8 +26,8 @@ pub struct GliumRenderer {
|
|||
|
||||
impl GliumRenderer {
|
||||
pub fn new(display: glium::Display<WindowSurface>) -> anyhow::Result<Self> {
|
||||
const VERT_SRC: &str = include_str!("../resources/shaders/gl_textured.vert");
|
||||
const FRAG_SRC: &str = include_str!("../resources/shaders/gl_textured.frag");
|
||||
const VERT_SRC: &str = include_str!("../../resources/shaders/gl_textured.vert");
|
||||
const FRAG_SRC: &str = include_str!("../../resources/shaders/gl_textured.frag");
|
||||
|
||||
let program = Program::from_source(&display, VERT_SRC, FRAG_SRC, None)?;
|
||||
|
||||
|
|
@ -46,8 +46,8 @@ impl GliumRenderer {
|
|||
.. Default::default()
|
||||
};
|
||||
|
||||
let sky_vert = include_str!("../resources/shaders/skybox.vert");
|
||||
let sky_frag = include_str!("../resources/shaders/skybox.frag");
|
||||
let sky_vert = include_str!("../../resources/shaders/skybox.vert");
|
||||
let sky_frag = include_str!("../../resources/shaders/skybox.frag");
|
||||
let skybox_program = Program::from_source(&display, sky_vert, sky_frag, None)?;
|
||||
|
||||
let image = ImageReader::open("resources/skyboxes/sky_24_2k.png")?.decode()?.to_rgba8();
|
||||
12
raidillon_ui/Cargo.toml
Normal file
12
raidillon_ui/Cargo.toml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "raidillon_ui"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.98"
|
||||
glium = { version = "0.35.0", features = ["glutin_backend", "simple_window_builder"] }
|
||||
imgui = "0.12"
|
||||
imgui-winit-support = "0.13"
|
||||
imgui-glium-renderer = "0.13"
|
||||
winit = "0.30"
|
||||
3
raidillon_ui/src/lib.rs
Normal file
3
raidillon_ui/src/lib.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
pub mod ui;
|
||||
|
||||
pub use ui::Gui;
|
||||
2110
src/teapot.rs
2110
src/teapot.rs
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue