diff --git a/src/core/scenegraph.rs b/src/core/scenegraph.rs index fd94520..423f296 100644 --- a/src/core/scenegraph.rs +++ b/src/core/scenegraph.rs @@ -48,7 +48,6 @@ impl<'a> scenegraph::Scenegraph for Scenegraph<'a> { .ok_or(ScenegraphError::NodeNotFound)? .borrow() .send_local_signal(self.get_client(), method, data) - .map_err(|_| ScenegraphError::SignalNotFound) } fn execute_method( &self, @@ -60,6 +59,5 @@ impl<'a> scenegraph::Scenegraph for Scenegraph<'a> { .ok_or(ScenegraphError::NodeNotFound)? .borrow() .execute_local_method(self.get_client(), method, data) - .map_err(|_| ScenegraphError::MethodNotFound) } } diff --git a/src/nodes/core.rs b/src/nodes/core.rs index dfe8ded..f2476e3 100644 --- a/src/nodes/core.rs +++ b/src/nodes/core.rs @@ -2,7 +2,8 @@ use super::data::PulseSender; use super::field::Field; use super::spatial::Spatial; use crate::core::client::Client; -use anyhow::{anyhow, Result}; +use anyhow::Result; +use libstardustxr::scenegraph::ScenegraphError; use std::rc::{Rc, Weak}; use std::sync::Arc; use std::{collections::HashMap, vec::Vec}; @@ -81,24 +82,28 @@ impl<'a> Node<'a> { calling_client: Rc, method: &str, data: &[u8], - ) -> Result<()> { + ) -> Result<(), ScenegraphError> { let signal = self .local_signals .get(method) - .ok_or_else(|| anyhow!("Signal {} not found", method))?; - signal(self, calling_client, data) + .ok_or(ScenegraphError::SignalNotFound)?; + signal(self, calling_client, data).map_err(|err| ScenegraphError::SignalError { + error: format!("{}", err), + }) } pub fn execute_local_method( &self, calling_client: Rc, method: &str, data: &[u8], - ) -> Result> { + ) -> Result, ScenegraphError> { let method = self .local_methods .get(method) - .ok_or_else(|| anyhow!("Method {} not found", method))?; - method(self, calling_client, data) + .ok_or(ScenegraphError::MethodNotFound)?; + method(self, calling_client, data).map_err(|err| ScenegraphError::MethodError { + error: format!("{}", err), + }) } // pub fn send_remote_signal(&self, method: &str, data: &[u8]) -> Result<()> { // self.get_client()