feat: workspace!!!
6
.gitignore
vendored
@@ -2,13 +2,7 @@
|
|||||||
# will have compiled files and executables
|
# will have compiled files and executables
|
||||||
/target/
|
/target/
|
||||||
|
|
||||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
|
||||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
|
||||||
Cargo.lock
|
|
||||||
|
|
||||||
# These are backup files generated by rustfmt
|
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
Cargo.lock
|
|
||||||
|
|
||||||
*.blend1
|
*.blend1
|
||||||
.vscode
|
.vscode
|
||||||
339
Cargo.lock
generated
@@ -2,12 +2,6 @@
|
|||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "Inflector"
|
|
||||||
version = "0.11.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "addr2line"
|
name = "addr2line"
|
||||||
version = "0.20.0"
|
version = "0.20.0"
|
||||||
@@ -83,16 +77,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anstream"
|
name = "anstream"
|
||||||
version = "0.3.2"
|
version = "0.6.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
|
checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"anstyle-parse",
|
"anstyle-parse",
|
||||||
"anstyle-query",
|
"anstyle-query",
|
||||||
"anstyle-wincon",
|
"anstyle-wincon",
|
||||||
"colorchoice",
|
"colorchoice",
|
||||||
"is-terminal",
|
|
||||||
"utf8parse",
|
"utf8parse",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -122,14 +115,31 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anstyle-wincon"
|
name = "anstyle-wincon"
|
||||||
version = "1.0.1"
|
version = "3.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
|
checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"windows-sys",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "app_grid"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"color-eyre",
|
||||||
|
"glam",
|
||||||
|
"manifest-dir-macros",
|
||||||
|
"mint",
|
||||||
|
"protostar",
|
||||||
|
"stardust-xr-fusion",
|
||||||
|
"stardust-xr-molecules",
|
||||||
|
"tokio",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tween",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayref"
|
name = "arrayref"
|
||||||
version = "0.3.7"
|
version = "0.3.7"
|
||||||
@@ -150,7 +160,7 @@ checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -204,12 +214,6 @@ version = "1.3.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "2.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.13.0"
|
version = "3.13.0"
|
||||||
@@ -292,30 +296,26 @@ checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"android-tzdata",
|
"android-tzdata",
|
||||||
"iana-time-zone",
|
"iana-time-zone",
|
||||||
"js-sys",
|
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"serde",
|
"serde",
|
||||||
"time 0.1.45",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.3.19"
|
version = "4.4.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
|
checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
"clap_derive",
|
"clap_derive",
|
||||||
"once_cell",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_builder"
|
name = "clap_builder"
|
||||||
version = "4.3.19"
|
version = "4.4.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
|
checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstream",
|
"anstream",
|
||||||
"anstyle",
|
"anstyle",
|
||||||
@@ -325,14 +325,14 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "4.3.12"
|
version = "4.4.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
|
checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -377,9 +377,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "color-rs"
|
name = "color-rs"
|
||||||
version = "0.7.1"
|
version = "0.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "05d6cda18d80350d6a6d15d1f2dd6f5c88b3d61882e08801e8d68f506434b808"
|
checksum = "3415c18b81f66b23614db9fcccbf19d2af434e04d9a6c7ac10e49930f39d89f8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"angle",
|
"angle",
|
||||||
"half 1.8.2",
|
"half 1.8.2",
|
||||||
@@ -521,7 +521,7 @@ dependencies = [
|
|||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"strsim",
|
"strsim",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -543,7 +543,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core 0.20.3",
|
"darling_core 0.20.3",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -632,7 +632,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -641,27 +641,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "errno"
|
|
||||||
version = "0.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
|
|
||||||
dependencies = [
|
|
||||||
"errno-dragonfly",
|
|
||||||
"libc",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "errno-dragonfly"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "exr"
|
name = "exr"
|
||||||
version = "1.7.0"
|
version = "1.7.0"
|
||||||
@@ -721,7 +700,7 @@ version = "23.5.26"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640"
|
checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
"rustc_version",
|
"rustc_version",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -741,7 +720,7 @@ version = "2.0.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "15d14128f06405808ce75bfebe11e9b0f9da18719ede6d7bdb1702d6bfe0f7e8"
|
checksum = "15d14128f06405808ce75bfebe11e9b0f9da18719ede6d7bdb1702d6bfe0f7e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"num_enum",
|
"num_enum",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -894,7 +873,7 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"libc",
|
"libc",
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
"wasi",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -916,13 +895,23 @@ checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glam"
|
name = "glam"
|
||||||
version = "0.24.1"
|
version = "0.24.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42218cb640844e3872cc3c153dc975229e080a6c4733b34709ef445610550226"
|
checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"mint",
|
"mint",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "global_counter"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2a77c0a6d353621e0ba32c0eb64a5ed3832d900135712779e38bd2ea31d6509f"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"parking_lot 0.11.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "half"
|
name = "half"
|
||||||
version = "1.8.2"
|
version = "1.8.2"
|
||||||
@@ -986,6 +975,23 @@ version = "0.4.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hexagon_launcher"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"color-eyre",
|
||||||
|
"glam",
|
||||||
|
"manifest-dir-macros",
|
||||||
|
"mint",
|
||||||
|
"protostar",
|
||||||
|
"stardust-xr-fusion",
|
||||||
|
"stardust-xr-molecules",
|
||||||
|
"tokio",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tween",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iana-time-zone"
|
name = "iana-time-zone"
|
||||||
version = "0.1.57"
|
version = "0.1.57"
|
||||||
@@ -1076,17 +1082,6 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "is-terminal"
|
|
||||||
version = "0.4.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
|
|
||||||
dependencies = [
|
|
||||||
"hermit-abi",
|
|
||||||
"rustix",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
@@ -1150,6 +1145,15 @@ version = "0.5.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
|
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lerp"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ecc56a024593ecbcacb6bb4f8f4ace719eb08ae9b701535640ef3efb0e706260"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.147"
|
version = "0.2.147"
|
||||||
@@ -1166,12 +1170,6 @@ dependencies = [
|
|||||||
"rust-ini 0.17.0",
|
"rust-ini 0.17.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "linux-raw-sys"
|
|
||||||
version = "0.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
version = "0.4.10"
|
version = "0.4.10"
|
||||||
@@ -1190,14 +1188,14 @@ checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "manifest-dir-macros"
|
name = "manifest-dir-macros"
|
||||||
version = "0.1.17"
|
version = "0.1.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "450e5ef583bc05177c4975b9ea907047091a9f62e74e81fcafb99dbffac51e7e"
|
checksum = "9c6d40de1ccdbf8bde2eaa0750595478a368f7b3a3f89c426e3454f64e29f593"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1283,7 +1281,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
|
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
"wasi",
|
||||||
"windows-sys",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1311,7 +1309,7 @@ version = "0.26.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
|
checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
"memoffset 0.7.1",
|
"memoffset 0.7.1",
|
||||||
@@ -1443,25 +1441,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ouroboros"
|
name = "ouroboros"
|
||||||
version = "0.15.6"
|
version = "0.18.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db"
|
checksum = "1c86de06555b970aec45229b27291b53154f21a5743a163419f4e4c0b065dcde"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aliasable",
|
"aliasable",
|
||||||
"ouroboros_macro",
|
"ouroboros_macro",
|
||||||
|
"static_assertions",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ouroboros_macro"
|
name = "ouroboros_macro"
|
||||||
version = "0.15.6"
|
version = "0.18.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7"
|
checksum = "8cad0c4b129e9696e37cb712b243777b90ef489a0bfaa0ac34e7d9b860e4f134"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"heck",
|
||||||
|
"itertools",
|
||||||
"proc-macro-error",
|
"proc-macro-error",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 1.0.109",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1547,14 +1547,14 @@ checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-lite"
|
name = "pin-project-lite"
|
||||||
version = "0.2.10"
|
version = "0.2.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
|
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-utils"
|
name = "pin-utils"
|
||||||
@@ -1568,7 +1568,7 @@ version = "0.17.9"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11"
|
checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
"crc32fast",
|
"crc32fast",
|
||||||
"fdeflate",
|
"fdeflate",
|
||||||
"flate2",
|
"flate2",
|
||||||
@@ -1778,7 +1778,7 @@ version = "0.2.16"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1787,7 +1787,7 @@ version = "0.3.5"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1945,26 +1945,13 @@ dependencies = [
|
|||||||
"semver",
|
"semver",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rustix"
|
|
||||||
version = "0.38.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 2.3.3",
|
|
||||||
"errno",
|
|
||||||
"libc",
|
|
||||||
"linux-raw-sys",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustybuzz"
|
name = "rustybuzz"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "162bdf42e261bee271b3957691018634488084ef577dddeb6420a9684cab2a6a"
|
checksum = "162bdf42e261bee271b3957691018634488084ef577dddeb6420a9684cab2a6a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"ttf-parser",
|
"ttf-parser",
|
||||||
@@ -2003,22 +1990,22 @@ checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.175"
|
version = "1.0.188"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b"
|
checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.175"
|
version = "1.0.188"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4"
|
checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2034,13 +2021,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_repr"
|
name = "serde_repr"
|
||||||
version = "0.1.15"
|
version = "0.1.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e168eaaf71e8f9bd6037feb05190485708e019f4fd87d161b3c0a0d37daf85e5"
|
checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2056,7 +2043,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_with_macros",
|
"serde_with_macros",
|
||||||
"time 0.3.23",
|
"time",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2068,7 +2055,7 @@ dependencies = [
|
|||||||
"darling 0.20.3",
|
"darling 0.20.3",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2104,12 +2091,47 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "single"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"color-eyre",
|
||||||
|
"glam",
|
||||||
|
"manifest-dir-macros",
|
||||||
|
"mint",
|
||||||
|
"protostar",
|
||||||
|
"stardust-xr-fusion",
|
||||||
|
"stardust-xr-molecules",
|
||||||
|
"tokio",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tween",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "siphasher"
|
name = "siphasher"
|
||||||
version = "0.3.10"
|
version = "0.3.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
|
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sirius"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"color-eyre",
|
||||||
|
"glam",
|
||||||
|
"manifest-dir-macros",
|
||||||
|
"mint",
|
||||||
|
"protostar",
|
||||||
|
"stardust-xr-fusion",
|
||||||
|
"stardust-xr-molecules",
|
||||||
|
"tokio",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tween",
|
||||||
|
"walkdir",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.11.0"
|
version = "1.11.0"
|
||||||
@@ -2118,12 +2140,12 @@ checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
version = "0.4.9"
|
version = "0.5.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
|
checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"winapi",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2137,15 +2159,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr"
|
name = "stardust-xr"
|
||||||
version = "0.11.4"
|
version = "0.14.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/StardustXR/core.git#7b6c7b1b77075a7035f8a3ef07b430863ed9d60e"
|
||||||
checksum = "0efaf53544cca5e641ba51928f492a8639cf62399207f8d5c1e3f917e4fc4aa1"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
|
||||||
"cluFlock",
|
"cluFlock",
|
||||||
"color-rs",
|
"color-rs",
|
||||||
"dirs 5.0.1",
|
"dirs 5.0.1",
|
||||||
|
"global_counter",
|
||||||
"mint",
|
"mint",
|
||||||
|
"nix",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -2157,9 +2179,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr-fusion"
|
name = "stardust-xr-fusion"
|
||||||
version = "0.40.2"
|
version = "0.43.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/StardustXR/core.git#7b6c7b1b77075a7035f8a3ef07b430863ed9d60e"
|
||||||
checksum = "10dc289847fa08d3a67bd2be88abbc04584c6cab0081cc43bf4d56fe3cf43b5a"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"color-eyre",
|
"color-eyre",
|
||||||
"color-rs",
|
"color-rs",
|
||||||
@@ -2179,13 +2200,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr-molecules"
|
name = "stardust-xr-molecules"
|
||||||
version = "0.24.3"
|
version = "0.29.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/StardustXR/molecules.git#6e389f837375a34a10dfd35a633072a77a9f14d8"
|
||||||
checksum = "724a92e67765300651d165950b70ec4800d4ad6450f473882f6024d5a559ea9d"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"color-rs",
|
"color-rs",
|
||||||
"glam",
|
"glam",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
"lerp",
|
||||||
"map-range",
|
"map-range",
|
||||||
"mint",
|
"mint",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
@@ -2198,9 +2219,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr-schemas"
|
name = "stardust-xr-schemas"
|
||||||
version = "1.5.1"
|
version = "1.5.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/StardustXR/core.git#7b6c7b1b77075a7035f8a3ef07b430863ed9d60e"
|
||||||
checksum = "bd65a40d6e6e8dc993ea9832666cf4cdc09c1a329f38b48ec9704af26cba229b"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"flatbuffers",
|
"flatbuffers",
|
||||||
"flexbuffers",
|
"flexbuffers",
|
||||||
@@ -2277,9 +2297,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.27"
|
version = "2.0.32"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0"
|
checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -2313,7 +2333,7 @@ checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2337,17 +2357,6 @@ dependencies = [
|
|||||||
"weezl",
|
"weezl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "time"
|
|
||||||
version = "0.1.45"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"wasi 0.10.0+wasi-snapshot-preview1",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.23"
|
version = "0.3.23"
|
||||||
@@ -2402,11 +2411,10 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.29.1"
|
version = "1.32.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
|
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
"libc",
|
"libc",
|
||||||
@@ -2428,7 +2436,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2468,7 +2476,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2639,20 +2647,14 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "walkdir"
|
name = "walkdir"
|
||||||
version = "2.3.3"
|
version = "2.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
|
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"same-file",
|
"same-file",
|
||||||
"winapi-util",
|
"winapi-util",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wasi"
|
|
||||||
version = "0.10.0+wasi-snapshot-preview1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasi"
|
name = "wasi"
|
||||||
version = "0.11.0+wasi-snapshot-preview1"
|
version = "0.11.0+wasi-snapshot-preview1"
|
||||||
@@ -2680,7 +2682,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2702,7 +2704,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.27",
|
"syn 2.0.32",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
@@ -2842,13 +2844,20 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xkbcommon"
|
name = "xkbcommon"
|
||||||
version = "0.5.1"
|
version = "0.6.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "52db25b599e92bf6e3904134618728eeb7b49a5a4f38f107f92399bb9c496b88"
|
checksum = "c286371c44b3572d19b09196c129a8fff47d7704d6494daefb44fec10f0278ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
|
"xkeysym",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "xkeysym"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xmlparser"
|
name = "xmlparser"
|
||||||
version = "0.13.5"
|
version = "0.13.5"
|
||||||
|
|||||||
39
Cargo.toml
@@ -1,37 +1,2 @@
|
|||||||
[package]
|
[workspace]
|
||||||
name = "protostar"
|
members = ["app_grid", "hexagon_launcher", "protostar", "single", "sirius"]
|
||||||
version = "0.4.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
cached = "0.43.0"
|
|
||||||
clap = { version = "4.1.3", features = ["derive"] }
|
|
||||||
color-eyre = "0.6.2"
|
|
||||||
directories = "5.0.0"
|
|
||||||
dirs = "5.0.0"
|
|
||||||
ez-pixmap = "0.2.2"
|
|
||||||
freedesktop-icons-greedy = "0.2.6"
|
|
||||||
glam = { version = "0.24.0", features = ["mint"] }
|
|
||||||
image = "0.24.5"
|
|
||||||
itertools = "0.11.0"
|
|
||||||
lazy_static = "1.4.0"
|
|
||||||
linicon-theme = "1.2.0"
|
|
||||||
manifest-dir-macros = "0.1.16"
|
|
||||||
mint = "0.5.9"
|
|
||||||
nix = "0.26.1"
|
|
||||||
regex = "1.7.1"
|
|
||||||
resvg = "0.29.0"
|
|
||||||
rustc-hash = "1.1.0"
|
|
||||||
serde = "1.0.155"
|
|
||||||
serde_json = "1.0.94"
|
|
||||||
serde_with = "2.3.1"
|
|
||||||
stardust-xr-fusion = "0.40.2"
|
|
||||||
stardust-xr-molecules = "0.24.3"
|
|
||||||
tokio = { version = "1.24.1", features = ["full"] }
|
|
||||||
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }
|
|
||||||
tween = "2.0.0"
|
|
||||||
ustr = "0.9.0"
|
|
||||||
walkdir = "2.3.3"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
tempdir = "0.3.7"
|
|
||||||
|
|||||||
23
app_grid/Cargo.toml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
[package]
|
||||||
|
name = "app_grid"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { version = "1.32.0", features = ["rt", "tokio-macros", "sync"] }
|
||||||
|
protostar = { path = "../protostar" }
|
||||||
|
color-eyre = "0.6.2"
|
||||||
|
clap = "4.4.6"
|
||||||
|
manifest-dir-macros = "0.1.18"
|
||||||
|
glam = "0.24.2"
|
||||||
|
mint = "0.5.9"
|
||||||
|
tween = "2.0.1"
|
||||||
|
tracing-subscriber = "0.3.17"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-fusion]
|
||||||
|
git = "https://github.com/StardustXR/core.git"
|
||||||
|
# path = "../../core/fusion"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-molecules]
|
||||||
|
git = "https://github.com/StardustXR/molecules.git"
|
||||||
|
# path = "../../molecules"
|
||||||
@@ -7,14 +7,14 @@ use protostar::{
|
|||||||
xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType},
|
xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType},
|
||||||
};
|
};
|
||||||
use stardust_xr_fusion::{
|
use stardust_xr_fusion::{
|
||||||
client::{Client, FrameInfo, RootHandler},
|
client::{Client, ClientState, FrameInfo, RootHandler},
|
||||||
core::values::Transform,
|
core::values::Transform,
|
||||||
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
||||||
fields::BoxField,
|
fields::BoxField,
|
||||||
node::NodeType,
|
node::NodeType,
|
||||||
spatial::Spatial,
|
spatial::Spatial,
|
||||||
};
|
};
|
||||||
use stardust_xr_molecules::{GrabData, Grabbable};
|
use stardust_xr_molecules::{Grabbable, GrabbableSettings};
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
const APP_LIMIT: usize = 300;
|
const APP_LIMIT: usize = 300;
|
||||||
@@ -75,6 +75,9 @@ impl RootHandler for AppGrid {
|
|||||||
app.frame(info);
|
app.frame(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn save_state(&mut self) -> ClientState {
|
||||||
|
ClientState::default()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
||||||
@@ -124,15 +127,14 @@ impl App {
|
|||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
let root = Spatial::create(parent, Transform::from_position(position), false)?;
|
let root = Spatial::create(parent, Transform::from_position(position), false)?;
|
||||||
let field = BoxField::create(&root, Transform::default(), [APP_SIZE; 3])?;
|
let field = BoxField::create(&root, Transform::default(), [APP_SIZE; 3])?;
|
||||||
let application = Application::create(&parent.client()?, desktop_file)?;
|
let application = Application::create(desktop_file)?;
|
||||||
let icon = application.icon(128, true);
|
let icon = application.icon(128, true);
|
||||||
let grabbable = Grabbable::create(
|
let grabbable = Grabbable::create(
|
||||||
&root,
|
&root,
|
||||||
Transform::identity(),
|
Transform::identity(),
|
||||||
&field,
|
&field,
|
||||||
GrabData {
|
GrabbableSettings {
|
||||||
max_distance: 0.01,
|
max_distance: 0.01,
|
||||||
frame_cancel_threshold: 50,
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
@@ -186,8 +188,7 @@ impl App {
|
|||||||
.set_transform(Some(&self.root), Transform::identity())
|
.set_transform(Some(&self.root), Transform::identity())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
impl RootHandler for App {
|
|
||||||
fn frame(&mut self, info: FrameInfo) {
|
fn frame(&mut self, info: FrameInfo) {
|
||||||
let _ = self.grabbable.update(&info);
|
let _ = self.grabbable.update(&info);
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Running the examples:
|
|
||||||
|
|
||||||
```
|
|
||||||
cargo run --example=sirius
|
|
||||||
cargo run --example=app_grid
|
|
||||||
cargo run --example=hexagon_launcher
|
|
||||||
|
|
||||||
```
|
|
||||||
23
hexagon_launcher/Cargo.toml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
[package]
|
||||||
|
name = "hexagon_launcher"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { version = "1.32.0", features = ["rt", "tokio-macros", "sync"] }
|
||||||
|
protostar = { path = "../protostar" }
|
||||||
|
color-eyre = "0.6.2"
|
||||||
|
clap = "4.4.6"
|
||||||
|
manifest-dir-macros = "0.1.18"
|
||||||
|
glam = "0.24.2"
|
||||||
|
mint = "0.5.9"
|
||||||
|
tween = "2.0.1"
|
||||||
|
tracing-subscriber = "0.3.17"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-fusion]
|
||||||
|
git = "https://github.com/StardustXR/core.git"
|
||||||
|
# path = "../../core/fusion"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-molecules]
|
||||||
|
git = "https://github.com/StardustXR/molecules.git"
|
||||||
|
# path = "../../molecules"
|
||||||
BIN
hexagon_launcher/res/protostar/cartridge.glb
Normal file
BIN
hexagon_launcher/res/protostar/default_icon.glb
Executable file
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
44
hexagon_launcher/src/hex.rs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
use crate::{APP_SIZE, PADDING};
|
||||||
|
use tween::TweenTime;
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct Hex {
|
||||||
|
q: isize,
|
||||||
|
r: isize,
|
||||||
|
s: isize,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const HEX_CENTER: Hex = Hex { q: 0, r: 0, s: 0 };
|
||||||
|
pub const HEX_DIRECTION_VECTORS: [Hex; 6] = [
|
||||||
|
Hex { q: 1, r: 0, s: -1 },
|
||||||
|
Hex { q: 1, r: -1, s: 0 },
|
||||||
|
Hex { q: 0, r: -1, s: 1 },
|
||||||
|
Hex { q: -1, r: 0, s: 1 },
|
||||||
|
Hex { q: -1, r: 1, s: 0 },
|
||||||
|
Hex { q: 0, r: 1, s: -1 },
|
||||||
|
];
|
||||||
|
|
||||||
|
impl Hex {
|
||||||
|
pub fn new(q: isize, r: isize, s: isize) -> Self {
|
||||||
|
Hex { q, r, s }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_coords(&self) -> [f32; 3] {
|
||||||
|
let x = 3.0 / 2.0 * (APP_SIZE + PADDING) / 2.0 * (-self.q - self.s).to_f32();
|
||||||
|
let y = 3.0_f32.sqrt() * (APP_SIZE + PADDING) / 2.0
|
||||||
|
* ((-self.q - self.s).to_f32() / 2.0 + self.s.to_f32());
|
||||||
|
[x, y, 0.0]
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add(self, vec: &Hex) -> Self {
|
||||||
|
Hex::new(self.q + vec.q, self.r + vec.r, self.s + vec.s)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn neighbor(self, direction: usize) -> Self {
|
||||||
|
self.add(&HEX_DIRECTION_VECTORS[direction])
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn scale(self, factor: isize) -> Self {
|
||||||
|
Hex::new(self.q * factor, self.r * factor, self.s * factor)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
|
pub mod hex;
|
||||||
|
|
||||||
use color_eyre::eyre::Result;
|
use color_eyre::eyre::Result;
|
||||||
use glam::{Quat, Vec3};
|
use glam::{Quat, Vec3};
|
||||||
|
use hex::{HEX_CENTER, HEX_DIRECTION_VECTORS};
|
||||||
use manifest_dir_macros::directory_relative_path;
|
use manifest_dir_macros::directory_relative_path;
|
||||||
use mint::Vector3;
|
use mint::Vector3;
|
||||||
use protostar::{
|
use protostar::{
|
||||||
@@ -7,7 +10,7 @@ use protostar::{
|
|||||||
xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType},
|
xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType},
|
||||||
};
|
};
|
||||||
use stardust_xr_fusion::{
|
use stardust_xr_fusion::{
|
||||||
client::{Client, FrameInfo, RootHandler},
|
client::{Client, ClientState, FrameInfo, RootHandler},
|
||||||
core::values::Transform,
|
core::values::Transform,
|
||||||
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
||||||
fields::BoxField,
|
fields::BoxField,
|
||||||
@@ -15,9 +18,8 @@ use stardust_xr_fusion::{
|
|||||||
node::NodeType,
|
node::NodeType,
|
||||||
spatial::Spatial,
|
spatial::Spatial,
|
||||||
};
|
};
|
||||||
use stardust_xr_molecules::{touch_plane::TouchPlane, GrabData, Grabbable};
|
use stardust_xr_molecules::{touch_plane::TouchPlane, Grabbable, GrabbableSettings};
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
use tween::TweenTime;
|
|
||||||
use tween::{QuartInOut, Tweener};
|
use tween::{QuartInOut, Tweener};
|
||||||
|
|
||||||
const APP_SIZE: f32 = 0.06;
|
const APP_SIZE: f32 = 0.06;
|
||||||
@@ -29,48 +31,6 @@ const CYAN: [f32; 4] = [0.0, 1.0, 1.0, 1.0];
|
|||||||
const BTN_SELECTED_COLOR: [f32; 4] = [0.0, 1.0, 0.0, 1.0];
|
const BTN_SELECTED_COLOR: [f32; 4] = [0.0, 1.0, 0.0, 1.0];
|
||||||
const BTN_COLOR: [f32; 4] = [1.0, 1.0, 0.0, 1.0];
|
const BTN_COLOR: [f32; 4] = [1.0, 1.0, 0.0, 1.0];
|
||||||
|
|
||||||
#[derive(Clone)]
|
|
||||||
struct Hex {
|
|
||||||
q: isize,
|
|
||||||
r: isize,
|
|
||||||
s: isize,
|
|
||||||
}
|
|
||||||
|
|
||||||
const HEX_CENTER: Hex = Hex { q: 0, r: 0, s: 0 };
|
|
||||||
const HEX_DIRECTION_VECTORS: [Hex; 6] = [
|
|
||||||
Hex { q: 1, r: 0, s: -1 },
|
|
||||||
Hex { q: 1, r: -1, s: 0 },
|
|
||||||
Hex { q: 0, r: -1, s: 1 },
|
|
||||||
Hex { q: -1, r: 0, s: 1 },
|
|
||||||
Hex { q: -1, r: 1, s: 0 },
|
|
||||||
Hex { q: 0, r: 1, s: -1 },
|
|
||||||
];
|
|
||||||
|
|
||||||
impl Hex {
|
|
||||||
fn new(q: isize, r: isize, s: isize) -> Self {
|
|
||||||
Hex { q, r, s }
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_coords(&self) -> [f32; 3] {
|
|
||||||
let x = 3.0 / 2.0 * (APP_SIZE + PADDING) / 2.0 * (-self.q - self.s).to_f32();
|
|
||||||
let y = 3.0_f32.sqrt() * (APP_SIZE + PADDING) / 2.0
|
|
||||||
* ((-self.q - self.s).to_f32() / 2.0 + self.s.to_f32());
|
|
||||||
[x, y, 0.0]
|
|
||||||
}
|
|
||||||
|
|
||||||
fn add(self, vec: &Hex) -> Self {
|
|
||||||
Hex::new(self.q + vec.q, self.r + vec.r, self.s + vec.s)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn neighbor(self, direction: usize) -> Self {
|
|
||||||
self.add(&HEX_DIRECTION_VECTORS[direction])
|
|
||||||
}
|
|
||||||
|
|
||||||
fn scale(self, factor: isize) -> Self {
|
|
||||||
Hex::new(self.q * factor, self.r * factor, self.s * factor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::main(flavor = "current_thread")]
|
#[tokio::main(flavor = "current_thread")]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
color_eyre::install().unwrap();
|
color_eyre::install().unwrap();
|
||||||
@@ -157,6 +117,10 @@ impl RootHandler for AppHexGrid {
|
|||||||
app.frame(info);
|
app.frame(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn save_state(&mut self) -> ClientState {
|
||||||
|
ClientState::default()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Button {
|
struct Button {
|
||||||
@@ -171,7 +135,7 @@ impl Button {
|
|||||||
client.get_root(),
|
client.get_root(),
|
||||||
Transform::default(),
|
Transform::default(),
|
||||||
&field,
|
&field,
|
||||||
GrabData {
|
GrabbableSettings {
|
||||||
max_distance: 0.01,
|
max_distance: 0.01,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
@@ -203,8 +167,7 @@ impl Button {
|
|||||||
model,
|
model,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
impl RootHandler for Button {
|
|
||||||
fn frame(&mut self, info: FrameInfo) {
|
fn frame(&mut self, info: FrameInfo) {
|
||||||
let _ = self.grabbable.update(&info);
|
let _ = self.grabbable.update(&info);
|
||||||
if self.grabbable.grab_action().actor_started() {
|
if self.grabbable.grab_action().actor_started() {
|
||||||
@@ -218,7 +181,6 @@ impl RootHandler for Button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Model handling
|
// Model handling
|
||||||
|
|
||||||
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
||||||
match &icon.icon_type {
|
match &icon.icon_type {
|
||||||
IconType::Png => {
|
IconType::Png => {
|
||||||
@@ -271,15 +233,14 @@ impl App {
|
|||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
let position = position.into();
|
let position = position.into();
|
||||||
let field = BoxField::create(parent, Transform::default(), [APP_SIZE; 3])?;
|
let field = BoxField::create(parent, Transform::default(), [APP_SIZE; 3])?;
|
||||||
let application = Application::create(&parent.client()?, desktop_file)?;
|
let application = Application::create(desktop_file)?;
|
||||||
let icon = application.icon(128, false);
|
let icon = application.icon(128, false);
|
||||||
let grabbable = Grabbable::create(
|
let grabbable = Grabbable::create(
|
||||||
parent,
|
parent,
|
||||||
Transform::from_position(position),
|
Transform::from_position(position),
|
||||||
&field,
|
&field,
|
||||||
GrabData {
|
GrabbableSettings {
|
||||||
max_distance: 0.01,
|
max_distance: 0.01,
|
||||||
frame_cancel_threshold: 50,
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
@@ -350,8 +311,7 @@ impl App {
|
|||||||
}
|
}
|
||||||
self.currently_shown = !self.currently_shown;
|
self.currently_shown = !self.currently_shown;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
impl RootHandler for App {
|
|
||||||
fn frame(&mut self, info: FrameInfo) {
|
fn frame(&mut self, info: FrameInfo) {
|
||||||
let _ = self.grabbable.update(&info);
|
let _ = self.grabbable.update(&info);
|
||||||
|
|
||||||
@@ -435,6 +395,7 @@ impl RootHandler for App {
|
|||||||
let distance = Vec3::from(distance_vector).length_squared();
|
let distance = Vec3::from(distance_vector).length_squared();
|
||||||
|
|
||||||
if distance > ACTIVATION_DISTANCE {
|
if distance > ACTIVATION_DISTANCE {
|
||||||
|
let _ = space.set_scale(None, [1.0; 3]);
|
||||||
let _ = application.launch(&space);
|
let _ = application.launch(&space);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
44
protostar/Cargo.toml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[package]
|
||||||
|
name = "protostar"
|
||||||
|
version = "0.4.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
cached = "0.43.0"
|
||||||
|
clap = { version = "4.1.3", features = ["derive"] }
|
||||||
|
color-eyre = "0.6.2"
|
||||||
|
directories = "5.0.0"
|
||||||
|
dirs = "5.0.0"
|
||||||
|
ez-pixmap = "0.2.2"
|
||||||
|
freedesktop-icons-greedy = "0.2.5"
|
||||||
|
glam = { version = "0.24.0", features = ["mint"] }
|
||||||
|
image = "0.24.5"
|
||||||
|
itertools = "0.11.0"
|
||||||
|
lazy_static = "1.4.0"
|
||||||
|
linicon-theme = "1.2.0"
|
||||||
|
manifest-dir-macros = "0.1.16"
|
||||||
|
mint = "0.5.9"
|
||||||
|
nix = "0.26.1"
|
||||||
|
regex = "1.7.1"
|
||||||
|
resvg = "0.29.0"
|
||||||
|
rustc-hash = "1.1.0"
|
||||||
|
serde = "1.0.155"
|
||||||
|
serde_json = "1.0.94"
|
||||||
|
serde_with = "2.3.1"
|
||||||
|
tokio = { version = "1.24.1", features = ["full"] }
|
||||||
|
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }
|
||||||
|
tween = "2.0.0"
|
||||||
|
ustr = "0.9.0"
|
||||||
|
walkdir = "2.3.3"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-fusion]
|
||||||
|
git = "https://github.com/StardustXR/core.git"
|
||||||
|
# path = "../../core/fusion"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-molecules]
|
||||||
|
git = "https://github.com/StardustXR/molecules.git"
|
||||||
|
# path = "../../molecules"
|
||||||
|
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempdir = "0.3.7"
|
||||||
BIN
protostar/res/protostar/default_icon.glb
Executable file
@@ -2,33 +2,26 @@ use crate::xdg::{DesktopFile, Icon, IconType};
|
|||||||
use nix::unistd::setsid;
|
use nix::unistd::setsid;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use stardust_xr_fusion::{
|
use stardust_xr_fusion::{
|
||||||
client::Client,
|
client::ClientState,
|
||||||
node::{NodeError, NodeType},
|
node::{NodeError, NodeType},
|
||||||
spatial::Spatial,
|
spatial::Spatial,
|
||||||
startup_settings::StartupSettings,
|
|
||||||
};
|
};
|
||||||
use std::{
|
use std::{
|
||||||
os::unix::process::CommandExt,
|
os::unix::process::CommandExt,
|
||||||
process::{Command, Stdio},
|
process::{Command, Stdio},
|
||||||
sync::Arc,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Application {
|
pub struct Application {
|
||||||
desktop_file: DesktopFile,
|
desktop_file: DesktopFile,
|
||||||
startup_settings: Arc<StartupSettings>,
|
|
||||||
}
|
}
|
||||||
impl Application {
|
impl Application {
|
||||||
pub fn create(client: &Arc<Client>, desktop_file: DesktopFile) -> Result<Self, NodeError> {
|
pub fn create(desktop_file: DesktopFile) -> Result<Self, NodeError> {
|
||||||
if desktop_file.no_display {
|
if desktop_file.no_display {
|
||||||
return Err(NodeError::DoesNotExist);
|
return Err(NodeError::DoesNotExist);
|
||||||
}
|
}
|
||||||
|
|
||||||
let startup_settings = Arc::new(StartupSettings::create(client)?);
|
Ok(Application { desktop_file })
|
||||||
Ok(Application {
|
|
||||||
desktop_file,
|
|
||||||
startup_settings,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn name(&self) -> Option<&str> {
|
pub fn name(&self) -> Option<&str> {
|
||||||
@@ -52,13 +45,12 @@ impl Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn launch(&self, launch_space: &Spatial) -> Result<(), NodeError> {
|
pub fn launch(&self, launch_space: &Spatial) -> Result<(), NodeError> {
|
||||||
self.startup_settings.set_root(launch_space)?;
|
let client = launch_space.node().client()?;
|
||||||
let future_startup_token = self.startup_settings.generate_startup_token()?;
|
let future_startup_token = client.state_token(&ClientState {
|
||||||
let future_connection_env = self
|
root: Some(launch_space.alias()),
|
||||||
.startup_settings
|
..Default::default()
|
||||||
.node()
|
})?;
|
||||||
.client()?
|
let future_connection_env = client.get_connection_environment()?;
|
||||||
.get_connection_environment()?;
|
|
||||||
|
|
||||||
let executable = self
|
let executable = self
|
||||||
.desktop_file
|
.desktop_file
|
||||||
@@ -68,7 +60,6 @@ impl Application {
|
|||||||
tokio::task::spawn(async move {
|
tokio::task::spawn(async move {
|
||||||
let Ok(startup_token) = future_startup_token.await else {return};
|
let Ok(startup_token) = future_startup_token.await else {return};
|
||||||
let Ok(connection_env) = future_connection_env.await else {return};
|
let Ok(connection_env) = future_connection_env.await else {return};
|
||||||
dbg!(&connection_env);
|
|
||||||
for (k, v) in connection_env.into_iter() {
|
for (k, v) in connection_env.into_iter() {
|
||||||
std::env::set_var(k, v);
|
std::env::set_var(k, v);
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
pub mod application;
|
pub mod application;
|
||||||
pub mod protostar;
|
|
||||||
pub mod xdg;
|
pub mod xdg;
|
||||||
23
single/Cargo.toml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
[package]
|
||||||
|
name = "single"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { version = "1.32.0", features = ["rt", "tokio-macros", "sync"] }
|
||||||
|
protostar = { path = "../protostar" }
|
||||||
|
color-eyre = "0.6.2"
|
||||||
|
clap = "4.4.6"
|
||||||
|
manifest-dir-macros = "0.1.18"
|
||||||
|
glam = "0.24.2"
|
||||||
|
mint = "0.5.9"
|
||||||
|
tween = "2.0.1"
|
||||||
|
tracing-subscriber = "0.3.17"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-fusion]
|
||||||
|
git = "https://github.com/StardustXR/core.git"
|
||||||
|
# path = "../../core/fusion"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-molecules]
|
||||||
|
git = "https://github.com/StardustXR/molecules.git"
|
||||||
|
# path = "../../molecules"
|
||||||
BIN
single/res/protostar/default_icon.glb
Executable file
BIN
single/res/protostar/hexagon/hex_atlas.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
single/res/protostar/hexagon/hexagon.bin
Normal file
286
single/res/protostar/hexagon/hexagon.gltf
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
{
|
||||||
|
"asset":{
|
||||||
|
"generator":"Khronos glTF Blender I/O v3.5.30",
|
||||||
|
"version":"2.0"
|
||||||
|
},
|
||||||
|
"extensionsUsed":[
|
||||||
|
"KHR_materials_unlit"
|
||||||
|
],
|
||||||
|
"scene":0,
|
||||||
|
"scenes":[
|
||||||
|
{
|
||||||
|
"name":"Scene",
|
||||||
|
"nodes":[
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nodes":[
|
||||||
|
{
|
||||||
|
"mesh":0,
|
||||||
|
"name":"Icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mesh":1,
|
||||||
|
"name":"Hex"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"materials":[
|
||||||
|
{
|
||||||
|
"alphaCutoff":0.5,
|
||||||
|
"alphaMode":"MASK",
|
||||||
|
"extensions":{
|
||||||
|
"KHR_materials_unlit":{}
|
||||||
|
},
|
||||||
|
"name":"Icon",
|
||||||
|
"pbrMetallicRoughness":{
|
||||||
|
"baseColorTexture":{
|
||||||
|
"index":0,
|
||||||
|
"texCoord":0
|
||||||
|
},
|
||||||
|
"metallicFactor":0,
|
||||||
|
"roughnessFactor":0.9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alphaMode":"BLEND",
|
||||||
|
"extensions":{
|
||||||
|
"KHR_materials_unlit":{}
|
||||||
|
},
|
||||||
|
"name":"Hex",
|
||||||
|
"pbrMetallicRoughness":{
|
||||||
|
"baseColorFactor":[
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"baseColorTexture":{
|
||||||
|
"index":1,
|
||||||
|
"texCoord":0
|
||||||
|
},
|
||||||
|
"metallicFactor":0,
|
||||||
|
"roughnessFactor":0.9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meshes":[
|
||||||
|
{
|
||||||
|
"name":"Circle",
|
||||||
|
"primitives":[
|
||||||
|
{
|
||||||
|
"attributes":{
|
||||||
|
"COLOR_0":0,
|
||||||
|
"POSITION":1,
|
||||||
|
"TEXCOORD_0":2,
|
||||||
|
"NORMAL":3
|
||||||
|
},
|
||||||
|
"indices":4,
|
||||||
|
"material":0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"Circle.001",
|
||||||
|
"primitives":[
|
||||||
|
{
|
||||||
|
"attributes":{
|
||||||
|
"COLOR_0":5,
|
||||||
|
"POSITION":6,
|
||||||
|
"TEXCOORD_0":7,
|
||||||
|
"NORMAL":8
|
||||||
|
},
|
||||||
|
"indices":9,
|
||||||
|
"material":1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textures":[
|
||||||
|
{
|
||||||
|
"sampler":0,
|
||||||
|
"source":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sampler":1,
|
||||||
|
"source":1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"images":[
|
||||||
|
{
|
||||||
|
"mimeType":"image/png",
|
||||||
|
"name":"icon_test",
|
||||||
|
"uri":"icon_test.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mimeType":"image/png",
|
||||||
|
"name":"hex_atlas",
|
||||||
|
"uri":"hex_atlas.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accessors":[
|
||||||
|
{
|
||||||
|
"bufferView":0,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":4,
|
||||||
|
"normalized":true,
|
||||||
|
"type":"VEC4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":1,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"max":[
|
||||||
|
0.5853440165519714,
|
||||||
|
0.05000000074505806,
|
||||||
|
0.5853440165519714
|
||||||
|
],
|
||||||
|
"min":[
|
||||||
|
-0.5853440165519714,
|
||||||
|
0.05000000074505806,
|
||||||
|
-0.5853440165519714
|
||||||
|
],
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":2,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"type":"VEC2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":3,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":4,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":6,
|
||||||
|
"type":"SCALAR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":5,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":54,
|
||||||
|
"normalized":true,
|
||||||
|
"type":"VEC4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":6,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"max":[
|
||||||
|
1.0441828966140747,
|
||||||
|
0.05000000074505806,
|
||||||
|
0.9042890667915344
|
||||||
|
],
|
||||||
|
"min":[
|
||||||
|
-1.0441828966140747,
|
||||||
|
0,
|
||||||
|
-0.9042890667915344
|
||||||
|
],
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":7,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"type":"VEC2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":8,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":9,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":84,
|
||||||
|
"type":"SCALAR"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bufferViews":[
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":32,
|
||||||
|
"byteOffset":0,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":48,
|
||||||
|
"byteOffset":32,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":32,
|
||||||
|
"byteOffset":80,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":48,
|
||||||
|
"byteOffset":112,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":12,
|
||||||
|
"byteOffset":160,
|
||||||
|
"target":34963
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":432,
|
||||||
|
"byteOffset":172,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":648,
|
||||||
|
"byteOffset":604,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":432,
|
||||||
|
"byteOffset":1252,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":648,
|
||||||
|
"byteOffset":1684,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":168,
|
||||||
|
"byteOffset":2332,
|
||||||
|
"target":34963
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"samplers":[
|
||||||
|
{
|
||||||
|
"magFilter":9729,
|
||||||
|
"minFilter":9987,
|
||||||
|
"wrapS":33071,
|
||||||
|
"wrapT":33071
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"magFilter":9729,
|
||||||
|
"minFilter":9987
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buffers":[
|
||||||
|
{
|
||||||
|
"byteLength":2500,
|
||||||
|
"uri":"hexagon.bin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
single/res/protostar/hexagon/icon_test.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
@@ -1,9 +1,14 @@
|
|||||||
|
mod single;
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use color_eyre::{eyre::Result, Report};
|
use color_eyre::{eyre::Result, Report};
|
||||||
use manifest_dir_macros::directory_relative_path;
|
use manifest_dir_macros::directory_relative_path;
|
||||||
use protostar::{protostar::ProtoStar, xdg::parse_desktop_file};
|
use protostar::xdg::parse_desktop_file;
|
||||||
use stardust_xr_fusion::client::Client;
|
use stardust_xr_fusion::client::Client;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
use tracing_subscriber::EnvFilter;
|
||||||
|
|
||||||
|
use crate::single::Single;
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
#[clap(author, version, about, long_about = None)]
|
#[clap(author, version, about, long_about = None)]
|
||||||
@@ -14,18 +19,22 @@ struct Args {
|
|||||||
|
|
||||||
#[tokio::main(flavor = "current_thread")]
|
#[tokio::main(flavor = "current_thread")]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
|
tracing_subscriber::fmt()
|
||||||
|
.compact()
|
||||||
|
.with_env_filter(EnvFilter::from_env("LOG_LEVEL"))
|
||||||
|
.init();
|
||||||
color_eyre::install()?;
|
color_eyre::install()?;
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
let (client, event_loop) = Client::connect_with_async_loop().await?;
|
let (client, event_loop) = Client::connect_with_async_loop().await?;
|
||||||
client.set_base_prefixes(&[directory_relative_path!("res")]);
|
client.set_base_prefixes(&[directory_relative_path!("res")]);
|
||||||
|
|
||||||
let protostar = ProtoStar::create_from_desktop_file(
|
let protostar = Single::create_from_desktop_file(
|
||||||
client.get_root(),
|
client.get_root(),
|
||||||
[0.0, 0.0, 0.0],
|
[0.0, 0.0, 0.0],
|
||||||
parse_desktop_file(args.desktop_file).map_err(Report::msg)?,
|
parse_desktop_file(args.desktop_file).map_err(Report::msg)?,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let _root = client.wrap_root(protostar);
|
let _root = client.wrap_root(protostar)?;
|
||||||
|
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
_ = tokio::signal::ctrl_c() => (),
|
_ = tokio::signal::ctrl_c() => (),
|
||||||
@@ -1,23 +1,23 @@
|
|||||||
use crate::{
|
|
||||||
application::Application,
|
|
||||||
xdg::{DesktopFile, Icon, IconType},
|
|
||||||
};
|
|
||||||
use color_eyre::eyre::Result;
|
use color_eyre::eyre::Result;
|
||||||
use glam::{Quat, Vec3};
|
use glam::{Quat, Vec3};
|
||||||
use mint::Vector3;
|
use mint::Vector3;
|
||||||
|
use protostar::{
|
||||||
|
application::Application,
|
||||||
|
xdg::{DesktopFile, Icon, IconType},
|
||||||
|
};
|
||||||
use stardust_xr_fusion::{
|
use stardust_xr_fusion::{
|
||||||
client::{FrameInfo, RootHandler},
|
client::{ClientState, FrameInfo, RootHandler},
|
||||||
core::values::Transform,
|
core::values::Transform,
|
||||||
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
||||||
fields::BoxField,
|
fields::BoxField,
|
||||||
node::NodeType,
|
node::NodeType,
|
||||||
spatial::Spatial,
|
spatial::Spatial,
|
||||||
};
|
};
|
||||||
use stardust_xr_molecules::{GrabData, Grabbable};
|
use stardust_xr_molecules::{Grabbable, GrabbableSettings};
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
use tween::{QuartInOut, Tweener};
|
use tween::{QuartInOut, Tweener};
|
||||||
|
|
||||||
const MODEL_SCALE: f32 = 0.03;
|
const MODEL_SCALE: f32 = 0.05;
|
||||||
const ACTIVATION_DISTANCE: f32 = 0.5;
|
const ACTIVATION_DISTANCE: f32 = 0.5;
|
||||||
|
|
||||||
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
||||||
@@ -51,7 +51,7 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ProtoStar {
|
pub struct Single {
|
||||||
application: Application,
|
application: Application,
|
||||||
parent: Spatial,
|
parent: Spatial,
|
||||||
position: Vector3<f32>,
|
position: Vector3<f32>,
|
||||||
@@ -65,7 +65,7 @@ pub struct ProtoStar {
|
|||||||
currently_shown: bool,
|
currently_shown: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ProtoStar {
|
impl Single {
|
||||||
pub fn create_from_desktop_file(
|
pub fn create_from_desktop_file(
|
||||||
parent: &Spatial,
|
parent: &Spatial,
|
||||||
position: impl Into<Vector3<f32>>,
|
position: impl Into<Vector3<f32>>,
|
||||||
@@ -73,13 +73,13 @@ impl ProtoStar {
|
|||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
let position = position.into();
|
let position = position.into();
|
||||||
let field = BoxField::create(parent, Transform::default(), [MODEL_SCALE * 2.0; 3])?;
|
let field = BoxField::create(parent, Transform::default(), [MODEL_SCALE * 2.0; 3])?;
|
||||||
let application = Application::create(&parent.client()?, desktop_file)?;
|
let application = Application::create(desktop_file)?;
|
||||||
let icon = application.icon(128, false);
|
let icon = application.icon(128, false);
|
||||||
let grabbable = Grabbable::create(
|
let grabbable = Grabbable::create(
|
||||||
parent,
|
parent,
|
||||||
Transform::from_position(position),
|
Transform::from_position(position),
|
||||||
&field,
|
&field,
|
||||||
GrabData {
|
GrabbableSettings {
|
||||||
max_distance: 0.01,
|
max_distance: 0.01,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
@@ -91,11 +91,8 @@ impl ProtoStar {
|
|||||||
.unwrap_or_else(|| {
|
.unwrap_or_else(|| {
|
||||||
Ok(Model::create(
|
Ok(Model::create(
|
||||||
grabbable.content_parent(),
|
grabbable.content_parent(),
|
||||||
Transform::from_rotation_scale(
|
Transform::from_scale([MODEL_SCALE; 3]),
|
||||||
Quat::from_rotation_x(PI / 2.0) * Quat::from_rotation_y(PI),
|
&ResourceID::new_namespaced("protostar", "default_icon"),
|
||||||
[MODEL_SCALE; 3],
|
|
||||||
),
|
|
||||||
&ResourceID::new_namespaced("protostar", "hexagon/hexagon"),
|
|
||||||
)?)
|
)?)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
@@ -121,7 +118,7 @@ impl ProtoStar {
|
|||||||
)
|
)
|
||||||
.ok()
|
.ok()
|
||||||
});
|
});
|
||||||
Ok(ProtoStar {
|
Ok(Single {
|
||||||
parent: parent.alias(),
|
parent: parent.alias(),
|
||||||
position,
|
position,
|
||||||
grabbable,
|
grabbable,
|
||||||
@@ -139,7 +136,7 @@ impl ProtoStar {
|
|||||||
self.grabbable.content_parent()
|
self.grabbable.content_parent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl RootHandler for ProtoStar {
|
impl RootHandler for Single {
|
||||||
fn frame(&mut self, info: FrameInfo) {
|
fn frame(&mut self, info: FrameInfo) {
|
||||||
let _ = self.grabbable.update(&info);
|
let _ = self.grabbable.update(&info);
|
||||||
|
|
||||||
@@ -235,4 +232,8 @@ impl RootHandler for ProtoStar {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn save_state(&mut self) -> ClientState {
|
||||||
|
ClientState::default()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
24
sirius/Cargo.toml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[package]
|
||||||
|
name = "sirius"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { version = "1.32.0", features = ["rt", "tokio-macros", "sync"] }
|
||||||
|
protostar = { path = "../protostar" }
|
||||||
|
color-eyre = "0.6.2"
|
||||||
|
clap = "4.4.6"
|
||||||
|
manifest-dir-macros = "0.1.18"
|
||||||
|
glam = "0.24.2"
|
||||||
|
mint = "0.5.9"
|
||||||
|
tween = "2.0.1"
|
||||||
|
tracing-subscriber = "0.3.17"
|
||||||
|
walkdir = "2.4.0"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-fusion]
|
||||||
|
git = "https://github.com/StardustXR/core.git"
|
||||||
|
# path = "../../core/fusion"
|
||||||
|
|
||||||
|
[dependencies.stardust-xr-molecules]
|
||||||
|
git = "https://github.com/StardustXR/molecules.git"
|
||||||
|
# path = "../../molecules"
|
||||||
BIN
sirius/res/protostar/button.glb
Normal file
BIN
sirius/res/protostar/default_icon.glb
Executable file
BIN
sirius/res/protostar/hexagon/hex_atlas.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
sirius/res/protostar/hexagon/hexagon.bin
Normal file
286
sirius/res/protostar/hexagon/hexagon.gltf
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
{
|
||||||
|
"asset":{
|
||||||
|
"generator":"Khronos glTF Blender I/O v3.5.30",
|
||||||
|
"version":"2.0"
|
||||||
|
},
|
||||||
|
"extensionsUsed":[
|
||||||
|
"KHR_materials_unlit"
|
||||||
|
],
|
||||||
|
"scene":0,
|
||||||
|
"scenes":[
|
||||||
|
{
|
||||||
|
"name":"Scene",
|
||||||
|
"nodes":[
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nodes":[
|
||||||
|
{
|
||||||
|
"mesh":0,
|
||||||
|
"name":"Icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mesh":1,
|
||||||
|
"name":"Hex"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"materials":[
|
||||||
|
{
|
||||||
|
"alphaCutoff":0.5,
|
||||||
|
"alphaMode":"MASK",
|
||||||
|
"extensions":{
|
||||||
|
"KHR_materials_unlit":{}
|
||||||
|
},
|
||||||
|
"name":"Icon",
|
||||||
|
"pbrMetallicRoughness":{
|
||||||
|
"baseColorTexture":{
|
||||||
|
"index":0,
|
||||||
|
"texCoord":0
|
||||||
|
},
|
||||||
|
"metallicFactor":0,
|
||||||
|
"roughnessFactor":0.9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alphaMode":"BLEND",
|
||||||
|
"extensions":{
|
||||||
|
"KHR_materials_unlit":{}
|
||||||
|
},
|
||||||
|
"name":"Hex",
|
||||||
|
"pbrMetallicRoughness":{
|
||||||
|
"baseColorFactor":[
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"baseColorTexture":{
|
||||||
|
"index":1,
|
||||||
|
"texCoord":0
|
||||||
|
},
|
||||||
|
"metallicFactor":0,
|
||||||
|
"roughnessFactor":0.9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meshes":[
|
||||||
|
{
|
||||||
|
"name":"Circle",
|
||||||
|
"primitives":[
|
||||||
|
{
|
||||||
|
"attributes":{
|
||||||
|
"COLOR_0":0,
|
||||||
|
"POSITION":1,
|
||||||
|
"TEXCOORD_0":2,
|
||||||
|
"NORMAL":3
|
||||||
|
},
|
||||||
|
"indices":4,
|
||||||
|
"material":0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"Circle.001",
|
||||||
|
"primitives":[
|
||||||
|
{
|
||||||
|
"attributes":{
|
||||||
|
"COLOR_0":5,
|
||||||
|
"POSITION":6,
|
||||||
|
"TEXCOORD_0":7,
|
||||||
|
"NORMAL":8
|
||||||
|
},
|
||||||
|
"indices":9,
|
||||||
|
"material":1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textures":[
|
||||||
|
{
|
||||||
|
"sampler":0,
|
||||||
|
"source":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sampler":1,
|
||||||
|
"source":1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"images":[
|
||||||
|
{
|
||||||
|
"mimeType":"image/png",
|
||||||
|
"name":"icon_test",
|
||||||
|
"uri":"icon_test.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mimeType":"image/png",
|
||||||
|
"name":"hex_atlas",
|
||||||
|
"uri":"hex_atlas.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accessors":[
|
||||||
|
{
|
||||||
|
"bufferView":0,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":4,
|
||||||
|
"normalized":true,
|
||||||
|
"type":"VEC4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":1,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"max":[
|
||||||
|
0.5853440165519714,
|
||||||
|
0.05000000074505806,
|
||||||
|
0.5853440165519714
|
||||||
|
],
|
||||||
|
"min":[
|
||||||
|
-0.5853440165519714,
|
||||||
|
0.05000000074505806,
|
||||||
|
-0.5853440165519714
|
||||||
|
],
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":2,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"type":"VEC2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":3,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":4,
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":4,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":6,
|
||||||
|
"type":"SCALAR"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":5,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":54,
|
||||||
|
"normalized":true,
|
||||||
|
"type":"VEC4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":6,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"max":[
|
||||||
|
1.0441828966140747,
|
||||||
|
0.05000000074505806,
|
||||||
|
0.9042890667915344
|
||||||
|
],
|
||||||
|
"min":[
|
||||||
|
-1.0441828966140747,
|
||||||
|
0,
|
||||||
|
-0.9042890667915344
|
||||||
|
],
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":7,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"type":"VEC2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":8,
|
||||||
|
"componentType":5126,
|
||||||
|
"count":54,
|
||||||
|
"type":"VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView":9,
|
||||||
|
"componentType":5123,
|
||||||
|
"count":84,
|
||||||
|
"type":"SCALAR"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bufferViews":[
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":32,
|
||||||
|
"byteOffset":0,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":48,
|
||||||
|
"byteOffset":32,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":32,
|
||||||
|
"byteOffset":80,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":48,
|
||||||
|
"byteOffset":112,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":12,
|
||||||
|
"byteOffset":160,
|
||||||
|
"target":34963
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":432,
|
||||||
|
"byteOffset":172,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":648,
|
||||||
|
"byteOffset":604,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":432,
|
||||||
|
"byteOffset":1252,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":648,
|
||||||
|
"byteOffset":1684,
|
||||||
|
"target":34962
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer":0,
|
||||||
|
"byteLength":168,
|
||||||
|
"byteOffset":2332,
|
||||||
|
"target":34963
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"samplers":[
|
||||||
|
{
|
||||||
|
"magFilter":9729,
|
||||||
|
"minFilter":9987,
|
||||||
|
"wrapS":33071,
|
||||||
|
"wrapT":33071
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"magFilter":9729,
|
||||||
|
"minFilter":9987
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buffers":[
|
||||||
|
{
|
||||||
|
"byteLength":2500,
|
||||||
|
"uri":"hexagon.bin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
sirius/res/protostar/hexagon/icon_test.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
@@ -8,7 +8,7 @@ use protostar::{
|
|||||||
xdg::{parse_desktop_file, DesktopFile, Icon, IconType},
|
xdg::{parse_desktop_file, DesktopFile, Icon, IconType},
|
||||||
};
|
};
|
||||||
use stardust_xr_fusion::{
|
use stardust_xr_fusion::{
|
||||||
client::{Client, FrameInfo, RootHandler},
|
client::{Client, ClientState, FrameInfo, RootHandler},
|
||||||
core::values::Transform,
|
core::values::Transform,
|
||||||
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
drawable::{Alignment, Bounds, MaterialParameter, Model, ResourceID, Text, TextFit, TextStyle},
|
||||||
fields::BoxField,
|
fields::BoxField,
|
||||||
@@ -16,7 +16,7 @@ use stardust_xr_fusion::{
|
|||||||
node::NodeType,
|
node::NodeType,
|
||||||
spatial::Spatial,
|
spatial::Spatial,
|
||||||
};
|
};
|
||||||
use stardust_xr_molecules::{touch_plane::TouchPlane, GrabData, Grabbable};
|
use stardust_xr_molecules::{touch_plane::TouchPlane, Grabbable, GrabbableSettings};
|
||||||
use std::{f32::consts::PI, path::PathBuf};
|
use std::{f32::consts::PI, path::PathBuf};
|
||||||
|
|
||||||
use tween::{QuartInOut, Tweener};
|
use tween::{QuartInOut, Tweener};
|
||||||
@@ -68,8 +68,12 @@ impl Sirius {
|
|||||||
let root = Spatial::create(client.get_root(), Transform::default(), false).unwrap();
|
let root = Spatial::create(client.get_root(), Transform::default(), false).unwrap();
|
||||||
|
|
||||||
let field = BoxField::create(&root, Transform::default(), [0.1; 3]).unwrap();
|
let field = BoxField::create(&root, Transform::default(), [0.1; 3]).unwrap();
|
||||||
let grabbable =
|
let grabbable = Grabbable::create(
|
||||||
Grabbable::create(&root, Transform::default(), &field, GrabData::default())?;
|
&root,
|
||||||
|
Transform::default(),
|
||||||
|
&field,
|
||||||
|
GrabbableSettings::default(),
|
||||||
|
)?;
|
||||||
let touch_plane = TouchPlane::create(
|
let touch_plane = TouchPlane::create(
|
||||||
grabbable.content_parent(),
|
grabbable.content_parent(),
|
||||||
Transform::default(),
|
Transform::default(),
|
||||||
@@ -194,6 +198,10 @@ impl RootHandler for Sirius {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn save_state(&mut self) -> ClientState {
|
||||||
|
ClientState::default()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result<Model> {
|
||||||
@@ -248,15 +256,14 @@ impl App {
|
|||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
let position = position.into();
|
let position = position.into();
|
||||||
let field = BoxField::create(parent, Transform::default(), [APP_SIZE; 3])?;
|
let field = BoxField::create(parent, Transform::default(), [APP_SIZE; 3])?;
|
||||||
let application = Application::create(&parent.client()?, desktop_file)?;
|
let application = Application::create(desktop_file)?;
|
||||||
let icon = application.icon(128, false);
|
let icon = application.icon(128, false);
|
||||||
let grabbable = Grabbable::create(
|
let grabbable = Grabbable::create(
|
||||||
parent,
|
parent,
|
||||||
Transform::from_position(position),
|
Transform::from_position(position),
|
||||||
&field,
|
&field,
|
||||||
GrabData {
|
GrabbableSettings {
|
||||||
max_distance: 0.01,
|
max_distance: 0.01,
|
||||||
frame_cancel_threshold: 50,
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
@@ -327,8 +334,7 @@ impl App {
|
|||||||
}
|
}
|
||||||
self.currently_shown = !self.currently_shown;
|
self.currently_shown = !self.currently_shown;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
impl RootHandler for App {
|
|
||||||
fn frame(&mut self, info: FrameInfo) {
|
fn frame(&mut self, info: FrameInfo) {
|
||||||
let _ = self.grabbable.update(&info);
|
let _ = self.grabbable.update(&info);
|
||||||
|
|
||||||