diff --git a/Cargo.lock b/Cargo.lock index d9e84050a..bc9764487 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,6 +65,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "all" +version = "0.1.0" +dependencies = [ + "cuboid", + "fj", + "spacer", + "star", +] + [[package]] name = "android-activity" version = "0.4.1" diff --git a/Cargo.toml b/Cargo.toml index f2459e714..53faeb5ca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ members = [ "crates/fj-viewer", "crates/fj-window", + "models/all", "models/cuboid", "models/spacer", "models/star", diff --git a/models/all/Cargo.toml b/models/all/Cargo.toml new file mode 100644 index 000000000..484b5bcda --- /dev/null +++ b/models/all/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "all" +version = "0.1.0" +edition = "2021" + +[dependencies.fj] +path = "../../crates/fj" + +[dependencies.cuboid] +path = "../cuboid" + +[dependencies.spacer] +path = "../spacer" + +[dependencies.star] +path = "../star" diff --git a/models/all/src/lib.rs b/models/all/src/lib.rs new file mode 100644 index 000000000..9d711b9eb --- /dev/null +++ b/models/all/src/lib.rs @@ -0,0 +1,32 @@ +use fj::{ + core::{ + algorithms::transform::TransformObject, + objects::Solid, + operations::{Insert, Merge}, + services::Services, + storage::Handle, + }, + math::{Scalar, Vector}, +}; + +pub fn model(services: &mut Services) -> Handle { + // Just combine all the other models using offsets/rotations that won't + // result in neat vertex positions or axis-aligned edges/faces. This is + // useful for testing. + + let offset = Vector::from([5., 5., 5.]); + let axis = Vector::from([1., 1., 1.]).normalize(); + let angle_rad = Scalar::PI / 6.; + + let cuboid = cuboid::model(1., 2., 3., services) + .translate(offset * 1., services) + .rotate(axis * angle_rad * 1., services); + let spacer = spacer::model(2., 1., 1., services) + .translate(offset * 2., services) + .rotate(axis * angle_rad * 2., services); + let star = star::model(5, 2., 1., 1., services) + .translate(offset * 3., services) + .rotate(axis * angle_rad * 3., services); + + cuboid.merge(&spacer).merge(&star).insert(services) +} diff --git a/models/all/src/main.rs b/models/all/src/main.rs new file mode 100644 index 000000000..27e7d3073 --- /dev/null +++ b/models/all/src/main.rs @@ -0,0 +1,7 @@ +use fj::{core::services::Services, handle_model}; + +fn main() -> fj::Result { + let model = all::model(&mut Services::new()); + handle_model(model)?; + Ok(()) +}