From d36f4c0ed85888b23a7dc3cb133910fac829b085 Mon Sep 17 00:00:00 2001 From: spatialfree Date: Wed, 10 Apr 2024 08:07:02 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 346 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 334 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 27293c7..c89fb50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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 + // 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 + 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() => (),