This commit is contained in:
ethan merchant 2024-04-10 08:07:02 -04:00
parent bd8fa9cebc
commit d36f4c0ed8

View file

@ -1,28 +1,350 @@
use manifest_dir_macros::directory_relative_path;
use stardust_xr_fusion::{
client::Client, core::values::{Color, ResourceID}, drawable::{Line, Model}, spatial::Transform
client::Client, core::values::Color, drawable::{Line, LinePoint, Lines}, spatial::Transform
};
use stardust_xr_molecules::lines;
#[tokio::main]
async fn main() {
let (client, event_loop) = Client::connect_with_async_loop().await.unwrap();
client.set_base_prefixes(&[directory_relative_path!("res")]);
let _model = Model::create(
// stardust_xr_fusion::drawable::Model
// pub fn create(spatial_parent: &impl SpatialAspect, transform: Transform, model: &ResourceID) -> NodeResult<Self>
// let _model = Model::create(
// client.get_root(),
// Transform::identity(),
// &ResourceID::new_namespaced(
// "color_cube",
// "color_cube"
// ),
// ).unwrap();
let thickness = 0.03;
// stardust_xr_fusion::drawable::Lines
// pub fn create(spatial_parent: &impl SpatialAspect, transform: Transform, lines: &[Line]) -> NodeResult<Self>
let back_points = vec![
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x000000FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF0000FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFF00FF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FF00FF),
},
];
let back_line = Line {
points: back_points,
cyclic: true,
};
let _back_lines = Lines::create(
client.get_root(),
Transform::identity(),
&ResourceID::new_namespaced(
"color_cube",
"color_cube"
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[back_line]
).unwrap();
lines::make_line_points(
[mint::Vector3 { x: 0.0, y: 0.0, z: 0.0 }, mint::Vector3 { x: 1.0, y: 0.0, z: 0.0 }],
0.04,
Color::from_hex(0xFF0000FF),
);
let front_points = vec![
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x0000FFFF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF00FFFF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFFFFFF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FFFFFF),
},
];
let front_line = Line {
points: front_points,
cyclic: true,
};
let _front_lines = Lines::create(
client.get_root(),
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[front_line]
).unwrap();
let left_points = vec![
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x000000FF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x0000FFFF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FFFFFF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FF00FF),
},
];
let left_line = Line {
points: left_points,
cyclic: true,
};
let _left_lines = Lines::create(
client.get_root(),
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[left_line]
).unwrap();
let right_points = vec![
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF0000FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF00FFFF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFFFFFF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFF00FF),
},
];
let right_line = Line {
points: right_points,
cyclic: true,
};
let _right_lines = Lines::create(
client.get_root(),
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[right_line]
).unwrap();
let bottom_points = vec![
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x000000FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF0000FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFF00FFFF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y:-1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x0000FFFF),
},
];
let bottom_line = Line {
points: bottom_points,
cyclic: true,
};
let _bottom_lines = Lines::create(
client.get_root(),
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[bottom_line]
).unwrap();
let top_points = vec![
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FF00FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z:-1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFF00FF),
},
LinePoint {
point: mint::Vector3 {
x: 1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0xFFFFFFFF),
},
LinePoint {
point: mint::Vector3 {
x:-1.0,
y: 1.0,
z: 1.0,
},
thickness: thickness,
color: Color::from_hex(0x00FFFFFF),
},
];
let top_line = Line {
points: top_points,
cyclic: true,
};
let _top_lines = Lines::create(
client.get_root(),
Transform::from_scale(
mint::Vector3 {
x: 0.1,
y: 0.1,
z: 0.1,
}
),
&[top_line]
).unwrap();
tokio::select! {
_ = tokio::signal::ctrl_c() => (),