feat: async methods

This commit is contained in:
Nova
2023-09-02 19:49:53 -04:00
parent 5634729445
commit 6f4da69e36
9 changed files with 305 additions and 270 deletions

View File

@@ -3,6 +3,7 @@ use crate::{
core::{
client::{Client, INTERNAL_CLIENT},
registry::Registry,
scenegraph::MethodResponseSender,
},
nodes::{
drawable::{model::ModelPart, shaders::UNLIT_SHADER_BYTES, Drawable},
@@ -11,7 +12,7 @@ use crate::{
Message, Node,
},
};
use color_eyre::eyre::{bail, Result};
use color_eyre::eyre::{bail, eyre, Result};
use glam::Mat4;
use lazy_static::lazy_static;
use mint::{RowMatrix4, Vector2};
@@ -31,7 +32,7 @@ use stereokit::{
lazy_static! {
pub(super) static ref ITEM_TYPE_INFO_CAMERA: TypeInfo = TypeInfo {
type_name: "camera",
aliased_local_signals: vec!["frame"],
aliased_local_signals: vec!["apply_preview_material", "frame"],
aliased_local_methods: vec![],
aliased_remote_signals: vec![],
ui: Default::default(),
@@ -71,19 +72,26 @@ impl CameraItem {
apply_to: Registry::new(),
}),
);
// node.add_local_method("frame", CameraItem::frame_flex);
node.add_local_method("frame", CameraItem::frame_flex);
node.add_local_signal(
"apply_preview_material",
CameraItem::apply_preview_material_flex,
);
}
// fn frame_flex(node: &Node, _calling_client: Arc<Client>, message: Message) -> Result<Message> {
// let ItemType::Camera(camera) = &node.item.get().unwrap().specialization else {
// return Err(eyre!("Wrong item type?"))
// };
// Ok(serialize(())?.into())
// }
fn frame_flex(
node: &Node,
_calling_client: Arc<Client>,
_message: Message,
response: MethodResponseSender,
) {
response.wrap_sync(move || {
let ItemType::Camera(_camera) = &node.item.get().unwrap().specialization else {
return Err(eyre!("Wrong item type?"))
};
Ok(serialize(())?.into())
});
}
fn apply_preview_material_flex(
node: &Node,