353 lines
7 KiB
Rust
353 lines
7 KiB
Rust
use manifest_dir_macros::directory_relative_path;
|
|
use stardust_xr_fusion::{
|
|
client::Client, core::values::Color, drawable::{Line, LinePoint, Lines}, spatial::Transform
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let (client, event_loop) = Client::connect_with_async_loop().await.unwrap();
|
|
client.set_base_prefixes(&[directory_relative_path!("res")]);
|
|
|
|
// 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::from_scale(
|
|
mint::Vector3 {
|
|
x: 0.1,
|
|
y: 0.1,
|
|
z: 0.1,
|
|
}
|
|
),
|
|
&[back_line]
|
|
).unwrap();
|
|
|
|
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() => (),
|
|
_ = event_loop => panic!("server crashed"),
|
|
}
|
|
}
|