WIP scene definitions from blender files
This commit is contained in:
parent
28cb1c09fd
commit
0047c4eda4
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -1097,6 +1097,16 @@ dependencies = [
|
|||
"constant_time_eq",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blend"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56036f5e6c7ce6edb901e7a75ec34d6da2472ad3a2cbcd00df60a518b071a5b2"
|
||||
dependencies = [
|
||||
"linked-hash-map",
|
||||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block"
|
||||
version = "0.1.6"
|
||||
|
@ -2296,6 +2306,12 @@ dependencies = [
|
|||
"redox_syscall 0.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linked-hash-map"
|
||||
version = "0.5.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.13"
|
||||
|
@ -2772,6 +2788,7 @@ dependencies = [
|
|||
"bevy",
|
||||
"bevy_embedded_assets",
|
||||
"bevy_xpbd_3d",
|
||||
"blend",
|
||||
"embed-resource",
|
||||
"fastrand",
|
||||
"regex",
|
||||
|
|
|
@ -64,6 +64,7 @@ features = ["3d", "f64", "parry-f64", "parallel", "async-collider"]
|
|||
# a [target[...]build-dependencies] block because in case of cross-compiling, the
|
||||
# build.rs will be compiled for a different, non-windows target than the main executable.
|
||||
embed-resource = "1.6.3" # embedding of .exe metadata
|
||||
blend = "0.8.0"
|
||||
|
||||
[features]
|
||||
default = ["x11", "embed_assets"]
|
||||
|
|
33
build.rs
33
build.rs
|
@ -8,10 +8,43 @@
|
|||
// + + + ███
|
||||
// + ▀████████████████████████████████████████████████████▀
|
||||
|
||||
use blend::Blend;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
|
||||
fn main() {
|
||||
let target = std::env::var("TARGET").unwrap();
|
||||
if target.contains("windows") {
|
||||
println!("cargo:warning=Embedding Windows Icon");
|
||||
embed_resource::compile("build/windows/icon.rc");
|
||||
}
|
||||
|
||||
let file = File::create("src/data/scenes.in");
|
||||
if let Ok(mut file) = file {
|
||||
generate_scenes(&mut file, "src/blender/suit_v2.blend");
|
||||
generate_scenes(&mut file, "src/blender/cruiser.blend");
|
||||
}
|
||||
}
|
||||
|
||||
fn generate_scenes(stream: &mut File, source_blend_file: &str) {
|
||||
let blend = Blend::from_path(source_blend_file).expect("error loading blend file");
|
||||
for obj in blend.root_instances() {
|
||||
let loc: Vec<f32> = if obj.is_valid("loc") {
|
||||
obj.get_f32_vec("loc")
|
||||
} else {
|
||||
vec![0.0, 0.0, 0.0]
|
||||
};
|
||||
let rot: Vec<f32> = if obj.is_valid("rot") {
|
||||
obj.get_f32_vec("rot")
|
||||
} else {
|
||||
vec![0.0, 0.0, 0.0]
|
||||
};
|
||||
let name = obj.get("id").get_string("name");
|
||||
|
||||
let result = write!(stream, "(\"{}\", {:?}, {:?}),\n", name, loc, rot);
|
||||
if result.is_err() {
|
||||
println!("{:?}", result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue