diff --git a/Cargo.lock b/Cargo.lock index 611d6f5..5bf564c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,21 +18,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2187590a23ab1e3df8681afdf0987c48504d80291f002fcdb651f0ef5e25169" -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - [[package]] name = "ahash" version = "0.8.12" @@ -97,27 +82,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -136,7 +100,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", + "objc2", ] [[package]] @@ -212,15 +176,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" -[[package]] -name = "cgl" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" -dependencies = [ - "libc", -] - [[package]] name = "colored" version = "2.2.0" @@ -228,7 +183,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -308,16 +263,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -] - [[package]] name = "dlib" version = "0.5.2" @@ -365,12 +310,6 @@ dependencies = [ "log", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foreign-types" version = "0.5.0" @@ -420,106 +359,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "gl_generator" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" -dependencies = [ - "khronos_api", - "log", - "xml-rs", -] - -[[package]] -name = "glium" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf52ce4f5ce1501bb056627f35484a819e812d1d93f0f3da413676421b1bbe0" -dependencies = [ - "backtrace", - "fnv", - "gl_generator", - "glutin", - "glutin-winit", - "memoffset", - "raw-window-handle", - "smallvec", - "winit", -] - -[[package]] -name = "glutin" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" -dependencies = [ - "bitflags 2.9.1", - "cfg_aliases", - "cgl", - "dispatch2", - "glutin_egl_sys", - "glutin_glx_sys", - "glutin_wgl_sys", - "libloading", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "once_cell", - "raw-window-handle", - "wayland-sys", - "windows-sys 0.52.0", - "x11-dl", -] - -[[package]] -name = "glutin-winit" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" -dependencies = [ - "cfg_aliases", - "glutin", - "raw-window-handle", - "winit", -] - -[[package]] -name = "glutin_egl_sys" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" -dependencies = [ - "gl_generator", - "windows-sys 0.52.0", -] - -[[package]] -name = "glutin_glx_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" -dependencies = [ - "gl_generator", - "x11-dl", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - [[package]] name = "hashbrown" version = "0.15.4" @@ -590,12 +429,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "khronos_api" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" - [[package]] name = "lazy_static" version = "1.5.0" @@ -662,32 +495,11 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", -] - [[package]] name = "moonhare_engine" version = "0.1.0" dependencies = [ - "fern", - "glium", - "log", - "winit", + "moonhare_internal", ] [[package]] @@ -698,6 +510,16 @@ version = "0.1.0" name = "moonhare_graphics" version = "0.1.0" +[[package]] +name = "moonhare_internal" +version = "0.1.0" +dependencies = [ + "moonhare_event", + "moonhare_graphics", + "moonhare_log", + "moonhare_window", +] + [[package]] name = "moonhare_log" version = "0.1.0" @@ -710,6 +532,9 @@ dependencies = [ [[package]] name = "moonhare_window" version = "0.1.0" +dependencies = [ + "winit", +] [[package]] name = "ndk" @@ -779,15 +604,6 @@ dependencies = [ "objc2-encode", ] -[[package]] -name = "objc2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" -dependencies = [ - "objc2-encode", -] - [[package]] name = "objc2-app-kit" version = "0.2.2" @@ -797,25 +613,13 @@ dependencies = [ "bitflags 2.9.1", "block2", "libc", - "objc2 0.5.2", + "objc2", "objc2-core-data", "objc2-core-image", - "objc2-foundation 0.2.2", + "objc2-foundation", "objc2-quartz-core", ] -[[package]] -name = "objc2-app-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", -] - [[package]] name = "objc2-cloud-kit" version = "0.2.2" @@ -824,9 +628,9 @@ checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", + "objc2", "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2-foundation", ] [[package]] @@ -836,8 +640,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", ] [[package]] @@ -848,19 +652,8 @@ checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", + "objc2", + "objc2-foundation", ] [[package]] @@ -870,8 +663,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", "objc2-metal", ] @@ -882,9 +675,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ "block2", - "objc2 0.5.2", + "objc2", "objc2-contacts", - "objc2-foundation 0.2.2", + "objc2-foundation", ] [[package]] @@ -903,18 +696,7 @@ dependencies = [ "block2", "dispatch", "libc", - "objc2 0.5.2", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", + "objc2", ] [[package]] @@ -924,9 +706,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ "block2", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-app-kit", + "objc2-foundation", ] [[package]] @@ -937,8 +719,8 @@ checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", ] [[package]] @@ -949,8 +731,8 @@ checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", "objc2-metal", ] @@ -960,8 +742,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", ] [[package]] @@ -972,12 +754,12 @@ checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", + "objc2", "objc2-cloud-kit", "objc2-core-data", "objc2-core-image", "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2-foundation", "objc2-link-presentation", "objc2-quartz-core", "objc2-symbols", @@ -992,8 +774,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ "block2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", ] [[package]] @@ -1004,18 +786,9 @@ checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.9.1", "block2", - "objc2 0.5.2", + "objc2", "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", + "objc2-foundation", ] [[package]] @@ -1084,9 +857,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" name = "playground" version = "0.1.0" dependencies = [ - "glium", "moonhare_engine", - "moonhare_log", ] [[package]] @@ -1169,12 +940,6 @@ dependencies = [ "bitflags 2.9.1", ] -[[package]] -name = "rustc-demangle" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" - [[package]] name = "rustix" version = "0.38.44" @@ -1955,9 +1720,9 @@ dependencies = [ "libc", "memmap2", "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-app-kit", + "objc2-foundation", "objc2-ui-kit", "orbclient", "percent-encoding", @@ -2059,12 +1824,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" -[[package]] -name = "xml-rs" -version = "0.8.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" - [[package]] name = "zerocopy" version = "0.8.26" diff --git a/Cargo.toml b/Cargo.toml index c5ecf4f..dcab2b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,8 @@ [workspace] -resolver = "3" +resolver = "2" members = [ - "moonhare_engine", "moonhare_event", - "moonhare_graphics", - "moonhare_log", - "moonhare_window", + "crates/*", + "moonhare_engine", "playground" ] diff --git a/moonhare_event/Cargo.toml b/crates/moonhare_event/Cargo.toml similarity index 100% rename from moonhare_event/Cargo.toml rename to crates/moonhare_event/Cargo.toml diff --git a/moonhare_event/README.md b/crates/moonhare_event/README.md similarity index 100% rename from moonhare_event/README.md rename to crates/moonhare_event/README.md diff --git a/moonhare_event/src/event.rs b/crates/moonhare_event/src/event.rs similarity index 100% rename from moonhare_event/src/event.rs rename to crates/moonhare_event/src/event.rs diff --git a/moonhare_event/src/event_listener.rs b/crates/moonhare_event/src/event_listener.rs similarity index 100% rename from moonhare_event/src/event_listener.rs rename to crates/moonhare_event/src/event_listener.rs diff --git a/moonhare_event/src/events/key_events/key_pressed_event.rs b/crates/moonhare_event/src/events/key_events/key_pressed_event.rs similarity index 100% rename from moonhare_event/src/events/key_events/key_pressed_event.rs rename to crates/moonhare_event/src/events/key_events/key_pressed_event.rs diff --git a/moonhare_event/src/events/key_events/mod.rs b/crates/moonhare_event/src/events/key_events/mod.rs similarity index 100% rename from moonhare_event/src/events/key_events/mod.rs rename to crates/moonhare_event/src/events/key_events/mod.rs diff --git a/moonhare_event/src/events/mod.rs b/crates/moonhare_event/src/events/mod.rs similarity index 100% rename from moonhare_event/src/events/mod.rs rename to crates/moonhare_event/src/events/mod.rs diff --git a/moonhare_event/src/events/mouse_events/mod.rs b/crates/moonhare_event/src/events/mouse_events/mod.rs similarity index 100% rename from moonhare_event/src/events/mouse_events/mod.rs rename to crates/moonhare_event/src/events/mouse_events/mod.rs diff --git a/moonhare_event/src/events/window_events/mod.rs b/crates/moonhare_event/src/events/window_events/mod.rs similarity index 100% rename from moonhare_event/src/events/window_events/mod.rs rename to crates/moonhare_event/src/events/window_events/mod.rs diff --git a/moonhare_event/src/lib.rs b/crates/moonhare_event/src/lib.rs similarity index 100% rename from moonhare_event/src/lib.rs rename to crates/moonhare_event/src/lib.rs diff --git a/moonhare_graphics/Cargo.toml b/crates/moonhare_graphics/Cargo.toml similarity index 100% rename from moonhare_graphics/Cargo.toml rename to crates/moonhare_graphics/Cargo.toml diff --git a/moonhare_graphics/README.md b/crates/moonhare_graphics/README.md similarity index 100% rename from moonhare_graphics/README.md rename to crates/moonhare_graphics/README.md diff --git a/moonhare_graphics/src/gpu_buffer.rs b/crates/moonhare_graphics/src/gpu_buffer.rs similarity index 100% rename from moonhare_graphics/src/gpu_buffer.rs rename to crates/moonhare_graphics/src/gpu_buffer.rs diff --git a/moonhare_graphics/src/graphics_server.rs b/crates/moonhare_graphics/src/graphics_server.rs similarity index 100% rename from moonhare_graphics/src/graphics_server.rs rename to crates/moonhare_graphics/src/graphics_server.rs diff --git a/moonhare_graphics/src/lib.rs b/crates/moonhare_graphics/src/lib.rs similarity index 100% rename from moonhare_graphics/src/lib.rs rename to crates/moonhare_graphics/src/lib.rs diff --git a/moonhare_graphics/src/shader.rs b/crates/moonhare_graphics/src/shader.rs similarity index 100% rename from moonhare_graphics/src/shader.rs rename to crates/moonhare_graphics/src/shader.rs diff --git a/crates/moonhare_internal/Cargo.toml b/crates/moonhare_internal/Cargo.toml new file mode 100644 index 0000000..3493467 --- /dev/null +++ b/crates/moonhare_internal/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "moonhare_internal" +edition = "2024" +version.workspace = true +authors.workspace = true + +[dependencies] +moonhare_event = { path = "../moonhare_event" } +moonhare_graphics = { path = "../moonhare_graphics" } +moonhare_log = { path = "../moonhare_log" } +moonhare_window = { path = "../moonhare_window" } \ No newline at end of file diff --git a/crates/moonhare_internal/src/lib.rs b/crates/moonhare_internal/src/lib.rs new file mode 100644 index 0000000..a4d9119 --- /dev/null +++ b/crates/moonhare_internal/src/lib.rs @@ -0,0 +1,4 @@ +pub use moonhare_event as event; +pub use moonhare_graphics as graphics; +pub use moonhare_log as log; +pub use moonhare_window as window; \ No newline at end of file diff --git a/moonhare_log/Cargo.toml b/crates/moonhare_log/Cargo.toml similarity index 100% rename from moonhare_log/Cargo.toml rename to crates/moonhare_log/Cargo.toml diff --git a/moonhare_log/README.md b/crates/moonhare_log/README.md similarity index 100% rename from moonhare_log/README.md rename to crates/moonhare_log/README.md diff --git a/moonhare_log/src/lib.rs b/crates/moonhare_log/src/lib.rs similarity index 93% rename from moonhare_log/src/lib.rs rename to crates/moonhare_log/src/lib.rs index 88791d9..047ec1f 100644 --- a/moonhare_log/src/lib.rs +++ b/crates/moonhare_log/src/lib.rs @@ -63,23 +63,23 @@ pub fn configere_logger() -> Result<(), fern::InitError>{ Ok(()) } -pub fn mh_info(arg: T) { +pub fn info(arg: T) { log::info!("{}", arg); } -pub fn mh_warn(arg: T) { +pub fn warn(arg: T) { log::warn!("{}", arg); } -pub fn mh_debug(arg: T) { +pub fn debug(arg: T) { log::debug!("{}", arg); } -pub fn mh_trace(arg: T) { +pub fn trace(arg: T) { log::trace!("{}", arg); } -pub fn mh_error(arg: T) { +pub fn error(arg: T) { log::error!("{}", arg); } diff --git a/moonhare_window/Cargo.toml b/crates/moonhare_window/Cargo.toml similarity index 87% rename from moonhare_window/Cargo.toml rename to crates/moonhare_window/Cargo.toml index acf6a50..600902d 100644 --- a/moonhare_window/Cargo.toml +++ b/crates/moonhare_window/Cargo.toml @@ -5,3 +5,4 @@ version.workspace = true authors.workspace = true [dependencies] +winit = "0.30.12" \ No newline at end of file diff --git a/moonhare_window/README.md b/crates/moonhare_window/README.md similarity index 100% rename from moonhare_window/README.md rename to crates/moonhare_window/README.md diff --git a/crates/moonhare_window/src/lib.rs b/crates/moonhare_window/src/lib.rs new file mode 100644 index 0000000..d28d8e8 --- /dev/null +++ b/crates/moonhare_window/src/lib.rs @@ -0,0 +1,2 @@ +pub mod window_config; +pub mod winit_window; \ No newline at end of file diff --git a/crates/moonhare_window/src/window_config.rs b/crates/moonhare_window/src/window_config.rs new file mode 100644 index 0000000..3e0e475 --- /dev/null +++ b/crates/moonhare_window/src/window_config.rs @@ -0,0 +1,55 @@ +use std::{any::Any, string}; + +/// General Config for [`WinitWindow`](crate::winit::winit_window::WinitWindow) +pub struct WindowConfig { + pub title: String, + pub width: u32, + pub height: u32, + pub visble: bool, + pub decorations: bool, +} + +impl Default for WindowConfig { + fn default() -> Self { + Self { + title: "Moonhare Engine".to_owned(), + width: 1280, + height: 720, + visble: default_visibility(), + decorations: default_decorations(), + } + } +} + +// Todo: Set Functions should be inside WinitWindow i guess? +impl WindowConfig { + fn set_window_name(mut self, name: String) { + self.title = name; + } + + fn set_window_height(mut self, new_height: u32) { + self.height = new_height; + } + + fn set_window_width(mut self, new_width: u32) { + self.width = new_width; + } + + fn set_window_visible(mut self, visible: bool) { + self.visble = visible; + } + + fn set_window_decoration(mut self, decoration: bool) { + self.decorations = decoration; + } +} + + + +fn default_visibility() -> bool { + true +} + +fn default_decorations() -> bool { + true +} \ No newline at end of file diff --git a/crates/moonhare_window/src/winit_window.rs b/crates/moonhare_window/src/winit_window.rs new file mode 100644 index 0000000..c037895 --- /dev/null +++ b/crates/moonhare_window/src/winit_window.rs @@ -0,0 +1,54 @@ +use std::error::Error; + +use winit::{application::ApplicationHandler, dpi::LogicalSize, event::WindowEvent, event_loop::{ActiveEventLoop, EventLoop}, window::{Window, WindowAttributes, WindowId}}; + +use crate::window_config::WindowConfig; + +#[derive(Default)] +pub struct WinitWindow { + pub window: Option, +} + +impl WinitWindow { + pub fn create_window(&mut self, event_loop: &ActiveEventLoop, config: WindowConfig) -> WinitWindow { + let mut window_attributes = WindowAttributes::default() + .with_title(config.title); + + let logical_size = LogicalSize::new(config.width, config.height); + window_attributes = window_attributes.with_inner_size(logical_size); + window_attributes = window_attributes.with_max_inner_size(logical_size); + + // Set Visible + window_attributes = window_attributes.with_visible(config.visble); + window_attributes = window_attributes.with_decorations(config.decorations); + + let window = event_loop.create_window(window_attributes).unwrap(); + + Self { window: Some(window) } + } +} + +impl ApplicationHandler for WinitWindow { + fn resumed(&mut self, event_loop: &ActiveEventLoop) { + } + + fn window_event( + &mut self, + event_loop: &ActiveEventLoop, + window_id: winit::window::WindowId, + event: winit::event::WindowEvent, + ) { + match event { + WindowEvent::CloseRequested => { + event_loop.exit(); + }, + WindowEvent::RedrawRequested => { + + }, + _ => (), + } + } +} + + + diff --git a/moonhare_engine/Cargo.toml b/moonhare_engine/Cargo.toml index 898d396..f139908 100644 --- a/moonhare_engine/Cargo.toml +++ b/moonhare_engine/Cargo.toml @@ -4,7 +4,5 @@ version = "0.1.0" edition = "2024" [dependencies] -glium = "0.36.0" -log = "0.4" -fern = "0.7" -winit = "0.30.12" +moonhare_internal = { path = "../crates/moonhare_internal" } + diff --git a/moonhare_engine/src/core/game.rs b/moonhare_engine/src/core/game.rs deleted file mode 100644 index de40a67..0000000 --- a/moonhare_engine/src/core/game.rs +++ /dev/null @@ -1,71 +0,0 @@ -use std::{ops::{ControlFlow, DerefMut}, sync::Mutex}; - -use glium::{glutin::{api::egl::surface::Surface, surface::WindowSurface}, winit::{self, event::{self, WindowEvent}, event_loop::{self, EventLoop}, window::Window}, Display}; -use winit::application::ApplicationHandler; - -use crate::{core::game, game_plugin::GamePlugin, window::winit_window::WinitWindow, ENGINE_NAME}; - - -pub struct Game { - pub running: bool, - pub game_plugin: Option>, - pub window: WinitWindow, -} - -impl Game { - pub fn new() -> Self { - let _event_loop: EventLoop<()> = EventLoop::new().unwrap(); - - let mut game_window = WinitWindow::default(); - _event_loop.run_app(&mut game_window); - - Game { - running: true, - game_plugin: None, - window: game_window, - } - } - - pub fn register_plugin(&mut self, plugin: Box) { - self.game_plugin = Some(plugin); - } - - pub fn init(&mut self) { - if let Some(ref mut game_plugin) = self.game_plugin { - game_plugin.init(); - } else { - panic!("Needs Game Plugin to run!"); - } - } - - pub fn update(&mut self) { - if let Some(ref mut game_plugin) = self.game_plugin { - game_plugin.update(); - } - } - - pub fn render(&mut self) { - //let mut target = display.draw(); - - //if let Some(ref mut game_plugin) = self.game_plugin { - // game_plugin.render(&mut target); - //} - - //target.finish().unwrap(); - } - - pub fn cleanup(&mut self) { - if let Some(ref mut game_plugin) = self.game_plugin { - game_plugin.cleanup(); - } - } - - pub fn run(&mut self) { - while self.running { - self.update(); - self.render(); - } - - self.cleanup(); - } -} diff --git a/moonhare_engine/src/core/mod.rs b/moonhare_engine/src/core/mod.rs deleted file mode 100644 index 68c160d..0000000 --- a/moonhare_engine/src/core/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod game; \ No newline at end of file diff --git a/moonhare_engine/src/game_plugin.rs b/moonhare_engine/src/game_plugin.rs deleted file mode 100644 index f24e161..0000000 --- a/moonhare_engine/src/game_plugin.rs +++ /dev/null @@ -1,10 +0,0 @@ -use glium::Frame; - - -pub trait GamePlugin { - fn init(&mut self); - fn update(&mut self); - fn render(&mut self, target: &mut Frame); - fn cleanup(&mut self); - fn handle_events(&mut self); -} \ No newline at end of file diff --git a/moonhare_engine/src/lib.rs b/moonhare_engine/src/lib.rs index 4b4a97b..746c67f 100644 --- a/moonhare_engine/src/lib.rs +++ b/moonhare_engine/src/lib.rs @@ -1,24 +1,3 @@ -pub mod vertex; -pub mod core; -pub mod game_plugin; -pub mod window; -pub mod logger; - -const ENGINE_NAME: &str = "Moonhare Engine"; - - -pub struct CPointer(T); - -impl Drop for CPointer { - fn drop(&mut self) { - println!("Dropping") - } -} - -// rescaling: position *= factor; -// rotating: new_position = vec2(pos.x * cos(angle) - pos.y * sin(angle), pos.x * sin(single) + pos.y * cos(angle)); -// skewing: position.x += position.y * factor; - - - +pub use moonhare_internal::*; +pub const ENGINE_NAME: &str = "Moonhare Engine"; \ No newline at end of file diff --git a/moonhare_engine/src/logger/mod.rs b/moonhare_engine/src/logger/mod.rs deleted file mode 100644 index 28a6d08..0000000 --- a/moonhare_engine/src/logger/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub struct Logger { - -} \ No newline at end of file diff --git a/moonhare_engine/src/math/mod.rs b/moonhare_engine/src/math/mod.rs deleted file mode 100644 index e69de29..0000000 diff --git a/moonhare_engine/src/vertex.rs b/moonhare_engine/src/vertex.rs deleted file mode 100644 index 10e3bd0..0000000 --- a/moonhare_engine/src/vertex.rs +++ /dev/null @@ -1,19 +0,0 @@ -use glium::implement_vertex; - -#[derive(Copy, Clone)] -pub struct Vertex { - pub position: [f32; 2], - pub color: [f32; 3], -} -implement_vertex!(Vertex, position, color); - -impl Vertex { - pub fn define_shape(v1: Vertex, v2: Vertex, v3: Vertex) -> Vec { - let shape = vec![ - v1, - v2, - v3 - ]; - return shape; - } -} \ No newline at end of file diff --git a/moonhare_engine/src/window/mod.rs b/moonhare_engine/src/window/mod.rs deleted file mode 100644 index 4924f53..0000000 --- a/moonhare_engine/src/window/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod winit_window; -pub mod window_config; \ No newline at end of file diff --git a/moonhare_engine/src/window/window_config.rs b/moonhare_engine/src/window/window_config.rs deleted file mode 100644 index 1c7b594..0000000 --- a/moonhare_engine/src/window/window_config.rs +++ /dev/null @@ -1,32 +0,0 @@ -use glium::{backend::glutin::SimpleWindowBuilder, glutin::config::{ConfigTemplate, ConfigTemplateBuilder}, winit::window::WindowAttributes}; - -use crate::ENGINE_NAME; - -/// General Config for [`WinitWindow`](crate::winit::winit_window::WinitWindow) -pub struct WindowConfig { - pub title: &'static str, - pub width: u32, - pub height: u32, - pub visble: bool, - pub decorations: bool, -} - -impl Default for WindowConfig { - fn default() -> Self { - Self { - title: ENGINE_NAME, - width: 1280, - height: 720, - visble: default_visibility(), - decorations: default_decorations(), - } - } -} - -fn default_visibility() -> bool { - true -} - -fn default_decorations() -> bool { - true -} \ No newline at end of file diff --git a/moonhare_engine/src/window/winit_window.rs b/moonhare_engine/src/window/winit_window.rs deleted file mode 100644 index 7cec57c..0000000 --- a/moonhare_engine/src/window/winit_window.rs +++ /dev/null @@ -1,48 +0,0 @@ - -use glium::{backend::{glutin::SimpleWindowBuilder, Context}, glutin::{display::GetGlDisplay, prelude::GlContext, surface::WindowSurface}, winit::{self, dpi::LogicalSize, event_loop::{ActiveEventLoop, EventLoop}, raw_window_handle::HasDisplayHandle, window::{Window, WindowAttributes}}, Display}; -use winit::application::ApplicationHandler; - -use crate::window::window_config::WindowConfig; - -use crate::ENGINE_NAME; - -#[derive(Default)] -pub struct WinitWindow { - pub window: Option, -} - - -impl ApplicationHandler for WinitWindow { - fn resumed(&mut self, event_loop: &ActiveEventLoop) { - let config = WindowConfig::default(); - - let mut window_attributes = WindowAttributes::default(); - - let logical_size = LogicalSize::new(config.width, config.height); - window_attributes = window_attributes.with_inner_size(logical_size); - window_attributes = window_attributes.with_max_inner_size(logical_size); - - window_attributes = window_attributes.with_title(config.title) - .with_fullscreen(None); - - // Set Visible - window_attributes = window_attributes.with_visible(true); - - window_attributes = winit::platform::wayland::WindowAttributesExtWayland::with_name(window_attributes, ENGINE_NAME, ""); - - - self.window = Some(event_loop.create_window(window_attributes).unwrap()); - } - - fn window_event( - &mut self, - event_loop: &ActiveEventLoop, - window_id: winit::window::WindowId, - event: winit::event::WindowEvent, - ) { - todo!() - } -} - - - diff --git a/moonhare_window/src/lib.rs b/moonhare_window/src/lib.rs deleted file mode 100644 index b93cf3f..0000000 --- a/moonhare_window/src/lib.rs +++ /dev/null @@ -1,14 +0,0 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} diff --git a/playground/Cargo.toml b/playground/Cargo.toml index 76ef8c0..f62b1ed 100644 --- a/playground/Cargo.toml +++ b/playground/Cargo.toml @@ -5,5 +5,3 @@ edition = "2024" [dependencies] moonhare_engine = { path = "../moonhare_engine" } -moonhare_log = { path = "../moonhare_log" } -glium = "0.36.0" diff --git a/playground/src/main.rs b/playground/src/main.rs index 51bb8e1..a31b5e5 100644 --- a/playground/src/main.rs +++ b/playground/src/main.rs @@ -1,144 +1,6 @@ -use std::fs::read_to_string; - -use glium::{index::NoIndices, Frame, Program, VertexBuffer}; -use glium::{uniform, Surface}; -use moonhare_engine::{core::game::Game, game_plugin::GamePlugin, vertex::Vertex}; -use moonhare_log::{mh_debug, mh_error, mh_info, mh_trace, mh_warn}; - -struct PlaygroundGame { - t: f32, - shape: Vec, - vertex_buffer: Option>, - indices: Option, - program: Option, -} - -impl GamePlugin for PlaygroundGame { - fn init(&mut self) { - self.t = 0.0; - } - fn update(&mut self) { - self.t += 0.02; - // use 't' as an offset -> smooth animation - - } - fn render(&mut self, target: &mut Frame) { - - target.clear_color( - 0.0, - 0.0, - 1.0, - 1.0 - ); - let x_offset = self.t.sin() * 0.5; - - // Note: In OpenGL matrices are column-major - // Standard mathematical notation is row major: - // 1.0 0.0 0.0 x_offset - // 0.0 1.0 0.0 0.0 - // 0.0 0.0 1.0 0.0 - // 0.0 0.0 0.0 1.0 - let uniforms = uniform! { - matrix: [ - [1.0, 0.0, 0.0, 0.0], - [0.0, 1.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0], - [x_offset, 0.0, 0.0, 1.0f32], - ] - }; - - target.draw( - self.vertex_buffer.as_ref().unwrap(), - &self.indices.unwrap(), - self.program.as_ref().unwrap(), - &uniforms, - &Default::default() - ).unwrap(); - } - fn cleanup(&mut self) { - - } - fn handle_events(&mut self) { - - } -} - - +use moonhare_engine::{event, log::{self}, window::{self, winit_window::WinitWindow}}; fn main() { - let _ = moonhare_log::configere_logger(); - mh_info("Blub"); - mh_debug("blub"); - mh_warn("blug"); - mh_trace("trace"); - mh_error("error"); - println!("Blaa"); -/* - let mut game = Game::new(); - game.register_plugin(Box::new(PlaygroundGame{ t: 0.0, shape: Default::default(), vertex_buffer: None, indices: None, program: None })); - game.init(); - - let binding = Some(game.display.clone()).unwrap(); - // todo: unwraps on none - let display = binding; - - let shape = Vertex::define_shape( - Vertex { position: [-0.5, -0.5], color: [1.0, 0.0, 0.0] }, - Vertex { position: [ 0.0, 0.5], color: [0.0, 1.0, 0.0] }, - Vertex { position: [ 0.5, -0.5], color: [0.0, 0.0, 1.0] } - ); - - - // "Upload" shape to the memory of the GPU (Vertex Buffer) - // Isn't strictly necessary but, makes tge drawing operation faster - - let vertex_buffer: VertexBuffer = VertexBuffer::new(&display, &shape).unwrap(); - - - // Complex shapes consist of hundreds/thousands of vertices -> need to have a list of vertices and tell OpenGL how to link these - // vertices together to obtain triangles. - // For only one triangle -> pass dummy marker to glium - // This line tells OpenGl that we don't use indices and instand want to draw a certain number of seperate triangles - let indices = glium::index::NoIndices(glium::index::PrimitiveType::TrianglesList); - - // (Simplified) Render Pipeline: - // Vertex Shader -> Fragment (Pixel) Shader - // uniform: - // value is set when we draw by passing its value to the draw function - // (easiest way is uniform! macro) - // Important to write matrix * vertex -> Matrix operations produce different results depending on the order - // out: defines a variable that is going to be passed along to the fragment shader - - let vertex_shader_src = read_to_string("playground/src/shaders/vertex_shader.glsl").unwrap_or("vertex shader failed to unwrap".to_owned()); - let fragment_shader_src = read_to_string("playground/src/shaders/fragment_shader.glsl").unwrap_or("fragment shader failed to unwrap".to_owned()); - - // send shader source code to glium - let program = match glium::Program::from_source( - &display, - &vertex_shader_src, - &fragment_shader_src, - None - ) { - Ok(program) => program, - Err(err) => { - eprintln!("Shader compilation error: {:?}", err); - panic!("Failed to compile shaders") - } - }; - - - let pg_game = PlaygroundGame { - t: 0.0, - shape: shape, - vertex_buffer: Some(vertex_buffer), - indices: Some(indices), - program: Some(program), - }; - - //let mut a = game.borrow_mut(); - game.register_plugin(Box::new(pg_game)); - - game.run(); - -*/ + let _ = log::configere_logger(); + log::info("test"); } \ No newline at end of file