refactor: fix error module after rebase and reduce usage of the eyre! macro

Signed-off-by: Schmarni <marnistromer@gmail.com>
This commit is contained in:
Schmarni
2024-12-31 23:50:17 +01:00
parent 1fcb54c84c
commit 054109d9c7
6 changed files with 29 additions and 32 deletions

View File

@@ -8,7 +8,6 @@ use stardust_xr::{
FlexSerializeError,
},
};
use stereokit_rust::StereoKitError;
use thiserror::Error;
pub type Result<T, E = ServerError> = std::result::Result<T, E>;
@@ -19,6 +18,8 @@ pub enum ServerError {
NoClient,
#[error("Messenger does not exist for this node")]
NoMessenger,
#[error("Could not find resource")]
NoResource,
#[error("Messenger error: {0}")]
MessengerError(#[from] MessengerError),
#[error("Remote method error: {0}")]
@@ -29,8 +30,6 @@ pub enum ServerError {
DeserializationError(#[from] DeserializationError),
#[error("Reader error: {0}")]
ReaderError(#[from] ReaderError),
#[error("StereoKit error: {0}")]
StereoKitError(#[from] StereoKitError),
#[error("Aspect {} does not exist for node", 0.to_string())]
NoAspect(TypeId),
#[error("{0}")]

View File

@@ -1,7 +1,7 @@
use super::{Aspect, AspectIdentifier, Node};
use crate::core::client::Client;
use crate::core::destroy_queue;
use crate::core::error::Result;
use crate::core::error::{Result, ServerError};
use crate::core::registry::Registry;
use crate::core::resource::get_resource_file;
use crate::nodes::spatial::{Spatial, Transform, SPATIAL_ASPECT_ALIAS_INFO};
@@ -23,10 +23,10 @@ pub struct StardustSoundPlugin;
impl Plugin for StardustSoundPlugin {
fn build(&self, app: &mut App) {
let (tx, rx) = crossbeam_channel::unbounded();
SOUND_EVENT_SENDER.set(tx);
_ = SOUND_EVENT_SENDER.set(tx);
app.insert_resource(SoundEventReader(rx));
let (tx, rx) = crossbeam_channel::unbounded();
SPAWN_SOUND_SENDER.set(tx);
_ = SPAWN_SOUND_SENDER.set(tx);
app.insert_resource(SpawnSoundReader(rx));
app.add_systems(PostUpdate, update_sound_state);
app.add_systems(PreUpdate, spawn_sounds);
@@ -108,10 +108,10 @@ impl Sound {
pub fn add_to(node: &Arc<Node>, resource_id: ResourceID) -> Result<Arc<Sound>> {
let pending_audio_path = get_resource_file(
&resource_id,
&*node.get_client().ok_or_else(|| eyre!("Client not found"))?,
&*node.get_client().ok_or(ServerError::NoClient)?,
&[OsStr::new("wav"), OsStr::new("mp3")],
)
.ok_or_else(|| eyre!("Resource not found"))?;
.ok_or(ServerError::NoResource)?;
let sound = Sound {
space: node.get_aspect::<Spatial>().unwrap().clone(),
volume: 1.0,

View File

@@ -1,4 +1,5 @@
use super::{Line, LinesAspect};
use crate::core::error::Result;
use crate::{
bevy_plugin::{StardustExtract, TemporaryEntity, ViewLocation},
core::{client::Client, registry::Registry},
@@ -14,7 +15,6 @@ use bevy::{
AlphaMode, Commands, GlobalTransform, Mesh, Mesh3d, ResMut, Single, Transform, With,
},
};
use color_eyre::eyre::Result;
use glam::{Vec3, Vec3A};
use parking_lot::Mutex;
use prisma::Lerp;

View File

@@ -10,7 +10,11 @@ use super::{
spatial::{Spatial, Transform},
Aspect, AspectIdentifier, Node,
};
use crate::core::{client::Client, error::Result, resource::get_resource_file};
use crate::core::{
client::Client,
error::{Result, ServerError},
resource::get_resource_file,
};
use crate::nodes::spatial::SPATIAL_ASPECT_ALIAS_INFO;
use color_eyre::eyre::eyre;
use model::ModelPart;
@@ -51,7 +55,7 @@ impl Aspect for Text {
impl InterfaceAspect for Interface {
fn set_sky_tex(_node: Arc<Node>, calling_client: Arc<Client>, tex: ResourceID) -> Result<()> {
let resource_path = get_resource_file(&tex, &calling_client, &[OsStr::new("hdr")])
.ok_or(eyre!("Could not find resource"))?;
.ok_or(ServerError::NoResource)?;
QUEUED_SKYTEX.lock().replace(resource_path);
Ok(())
}
@@ -62,7 +66,7 @@ impl InterfaceAspect for Interface {
light: ResourceID,
) -> Result<()> {
let resource_path = get_resource_file(&light, &calling_client, &[OsStr::new("hdr")])
.ok_or(eyre!("Could not find resource"))?;
.ok_or(ServerError::NoResource)?;
QUEUED_SKYLIGHT.lock().replace(resource_path);
Ok(())
}

View File

@@ -1,44 +1,36 @@
use super::{MaterialParameter, ModelAspect, ModelPartAspect, MODEL_PART_ASPECT_ALIAS_INFO};
use crate::bail;
use crate::bevy_plugin::{MainWorldEntity, DESTROY_ENTITY};
use crate::bevy_plugin::DESTROY_ENTITY;
use crate::core::client::Client;
use crate::core::error::Result;
use crate::core::error::{Result, ServerError};
use crate::core::registry::Registry;
use crate::core::resource::get_resource_file;
use crate::nodes::alias::{Alias, AliasList};
use crate::nodes::spatial::Spatial;
use crate::nodes::Node;
use crate::{DefaultMaterial, TOKIO};
use crate::DefaultMaterial;
use bevy::app::{Plugin, PostUpdate, PreUpdate, Update};
use bevy::asset::{AssetServer, Assets};
use bevy::color::{Alpha, Color, LinearRgba, Srgba};
use bevy::color::{Color, LinearRgba};
use bevy::core::Name;
use bevy::gltf::GltfAssetLabel;
use bevy::math::bounding::Aabb3d;
use bevy::pbr::MeshMaterial3d;
use bevy::prelude::AlphaMode;
use bevy::prelude::{
BuildChildrenTransformExt, Children, Commands, Component, Deref, Entity, Has,
HierarchyQueryExt, Mesh3d, Parent, Query, Res, ResMut, Resource, Transform, Visibility, With,
Without,
HierarchyQueryExt, Parent, Query, Res, ResMut, Resource, Transform, Visibility, With, Without,
};
use bevy::reflect::{GetField, PartialReflect, Reflect};
use bevy::reflect::GetField;
use bevy::render::primitives::Aabb;
use bevy::scene::SceneRoot;
use color_eyre::eyre::eyre;
use bevy::tasks::futures_lite::FutureExt;
use glam::{Mat4, Vec2, Vec3};
use once_cell::sync::OnceCell;
use parking_lot::Mutex;
use rustc_hash::FxHashMap;
use stardust_xr::values::ResourceID;
use tokio::sync::Notify;
use tracing::{error, info, warn};
use std::ffi::OsStr;
use std::future::IntoFuture;
use std::ops::Deref;
use std::path::{self, PathBuf};
use std::path::PathBuf;
use std::sync::{Arc, Weak};
static MODEL_REGISTRY: Registry<Model> = Registry::new();
@@ -399,10 +391,10 @@ impl Model {
pub fn add_to(node: &Arc<Node>, resource_id: ResourceID) -> Result<Arc<Model>> {
let pending_model_path = get_resource_file(
&resource_id,
&*node.get_client().ok_or_else(|| eyre!("Client not found"))?,
&*node.get_client().ok_or(ServerError::NoClient)?,
&[OsStr::new("glb"), OsStr::new("gltf")],
)
.ok_or_else(|| eyre!("Resource not found"))?;
.ok_or(ServerError::NoResource)?;
let model = Arc::new(Model {
space: node.get_aspect::<Spatial>().unwrap().clone(),

View File

@@ -1,7 +1,10 @@
use crate::{
bevy_plugin::convert_linear_rgba,
core::{
client::Client, destroy_queue, error::Result, registry::Registry,
client::Client,
destroy_queue,
error::{Result, ServerError},
registry::Registry,
resource::get_resource_file,
},
nodes::{spatial::Spatial, Aspect, Node},
@@ -24,7 +27,6 @@ use bevy::{
text::{cosmic_text::Align, JustifyText, TextColor, TextFont},
ui::{AlignItems, BackgroundColor, FlexDirection, JustifyContent, TargetCamera, Val},
};
use color_eyre::eyre::eyre;
use glam::{vec3, Mat4, Vec2, Vec3};
use once_cell::sync::OnceCell;
use parking_lot::Mutex;
@@ -204,7 +206,7 @@ pub struct Text {
}
impl Text {
pub fn add_to(node: &Arc<Node>, text: String, style: TextStyle) -> Result<Arc<Text>> {
let client = node.get_client().ok_or_else(|| eyre!("Client not found"))?;
let client = node.get_client().ok_or(ServerError::NoClient)?;
let text = TEXT_REGISTRY.add(Text {
space: node.get_aspect::<Spatial>().unwrap().clone(),
font_path: style.font.as_ref().and_then(|res| {