refactor: remove stereokit dependency and fix all warnings

Signed-off-by: Schmarni <marnistromer@gmail.com>
This commit is contained in:
Schmarni
2025-06-29 12:04:45 +02:00
committed by Nova King
parent cc8b9c0378
commit 5a5695f2cc
15 changed files with 35 additions and 599 deletions

View File

@@ -1,3 +1,4 @@
#![allow(dead_code)]
use super::{Item, ItemType, create_item_acceptor_flex, register_item_ui_flex};
use crate::bail;
use crate::core::error::Result;
@@ -9,7 +10,7 @@ use crate::{
core::{client::Client, registry::Registry, scenegraph::MethodResponseSender},
nodes::{
Message, Node,
drawable::{model::ModelPart, shaders::UNLIT_SHADER_BYTES},
drawable::model::ModelPart,
items::TypeInfo,
spatial::{Spatial, Transform},
},
@@ -21,19 +22,6 @@ use parking_lot::Mutex;
use stardust_xr::schemas::flex::{deserialize, serialize};
use std::sync::Arc;
use std::sync::OnceLock;
use stereokit_rust::{
material::{Material, Transparency},
shader::Shader,
sk::MainThreadToken,
system::Renderer,
tex::{Tex, TexFormat, TexType},
util::Color128,
};
pub struct TexWrapper(pub Tex);
unsafe impl Send for TexWrapper {}
unsafe impl Sync for TexWrapper {}
stardust_xr_server_codegen::codegen_item_camera_protocol!();
lazy_static! {
@@ -64,7 +52,6 @@ struct FrameInfo {
pub struct CameraItem {
space: Arc<Spatial>,
frame_info: Mutex<FrameInfo>,
sk_tex: OnceLock<TexWrapper>,
applied_to: Registry<ModelPart>,
apply_to: Registry<ModelPart>,
}
@@ -77,7 +64,6 @@ impl CameraItem {
proj_matrix,
px_size,
}),
sk_tex: OnceLock::new(),
applied_to: Registry::new(),
apply_to: Registry::new(),
});
@@ -122,41 +108,6 @@ impl CameraItem {
pub fn send_acceptor_item_created(&self, node: &Node, item: &Arc<Node>) {
let _ = camera_item_acceptor_client::capture_item(node, item);
}
pub fn update(&self, token: &MainThreadToken) {
let frame_info = self.frame_info.lock();
let sk_tex = self.sk_tex.get_or_init(|| {
TexWrapper(Tex::gen_color(
Color128::default(),
frame_info.px_size.x as i32,
frame_info.px_size.y as i32,
TexType::Rendertarget,
TexFormat::RGBA32Linear,
))
});
// let sk_mat = self.sk_mat.get_or_init(|| {
// let shader = Shader::from_memory(UNLIT_SHADER_BYTES).unwrap();
// let mut mat = Material::new(&shader, None);
// mat.get_all_param_info().set_texture("diffuse", &sk_tex.0);
// mat.transparency(Transparency::Blend);
// Arc::new(MaterialWrapper(mat))
// });
for model_part in self.apply_to.take_valid_contents() {
// model_part.replace_material(sk_mat.clone())
}
if !self.applied_to.is_empty() {
Renderer::render_to(
token,
&sk_tex.0,
self.space.global_transform(),
frame_info.proj_matrix,
None,
None,
None,
)
}
}
}
impl AspectIdentifier for CameraItem {
impl_aspect_for_camera_item_aspect_id! {}
@@ -188,15 +139,6 @@ impl CameraItemAcceptorAspect for CameraItemAcceptor {
}
}
pub fn update(token: &MainThreadToken) {
for camera in ITEM_TYPE_INFO_CAMERA.items.get_valid_contents() {
let ItemType::Camera(camera) = &camera.specialization else {
continue;
};
camera.update(token);
}
}
impl InterfaceAspect for Interface {
#[doc = "Create a camera item at a specific location"]
fn create_camera_item(