refactor: compact flex_vec shenanigans
This commit is contained in:
@@ -64,12 +64,10 @@ pub trait FieldTrait {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn field_distance_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<Vec<u8>> {
|
fn field_distance_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<Vec<u8>> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let reference_space_path = flex_vec.idx(0).as_str();
|
|
||||||
let reference_space = calling_client
|
let reference_space = calling_client
|
||||||
.scenegraph
|
.scenegraph
|
||||||
.get_node(reference_space_path)
|
.get_node(flex_vec.idx(0).as_str())
|
||||||
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
||||||
.spatial
|
.spatial
|
||||||
.get()
|
.get()
|
||||||
@@ -85,12 +83,10 @@ fn field_distance_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) ->
|
|||||||
Ok(FlexBuffable::from(distance).build_singleton())
|
Ok(FlexBuffable::from(distance).build_singleton())
|
||||||
}
|
}
|
||||||
fn field_normal_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<Vec<u8>> {
|
fn field_normal_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<Vec<u8>> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let reference_space_path = flex_vec.idx(0).as_str();
|
|
||||||
let reference_space = calling_client
|
let reference_space = calling_client
|
||||||
.scenegraph
|
.scenegraph
|
||||||
.get_node(reference_space_path)
|
.get_node(flex_vec.idx(0).as_str())
|
||||||
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
||||||
.spatial
|
.spatial
|
||||||
.get()
|
.get()
|
||||||
@@ -110,12 +106,10 @@ fn field_closest_point_flex(
|
|||||||
calling_client: Rc<Client>,
|
calling_client: Rc<Client>,
|
||||||
data: &[u8],
|
data: &[u8],
|
||||||
) -> Result<Vec<u8>> {
|
) -> Result<Vec<u8>> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let reference_space_path = flex_vec.idx(0).as_str();
|
|
||||||
let reference_space = calling_client
|
let reference_space = calling_client
|
||||||
.scenegraph
|
.scenegraph
|
||||||
.get_node(reference_space_path)
|
.get_node(flex_vec.idx(0).as_str())
|
||||||
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
.ok_or_else(|| anyhow!("Reference space node does not exist"))?
|
||||||
.spatial
|
.spatial
|
||||||
.get()
|
.get()
|
||||||
@@ -236,8 +230,7 @@ impl CylinderField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_size_flex(node: &Node, _calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
pub fn set_size_flex(node: &Node, _calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let length = flex_vec.idx(0).as_f32();
|
let length = flex_vec.idx(0).as_f32();
|
||||||
let radius = flex_vec.idx(1).as_f32();
|
let radius = flex_vec.idx(1).as_f32();
|
||||||
if let Field::Cylinder(cylinder_field) = node.field.get().unwrap().as_ref() {
|
if let Field::Cylinder(cylinder_field) = node.field.get().unwrap().as_ref() {
|
||||||
@@ -326,8 +319,7 @@ pub fn create_interface(client: &Rc<Client>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_box_field_flex(_node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
pub fn create_box_field_flex(_node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
||||||
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
||||||
let transform = Mat4::from_rotation_translation(
|
let transform = Mat4::from_rotation_translation(
|
||||||
@@ -350,8 +342,7 @@ pub fn create_cylinder_field_flex(
|
|||||||
calling_client: Rc<Client>,
|
calling_client: Rc<Client>,
|
||||||
data: &[u8],
|
data: &[u8],
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
||||||
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
||||||
let transform = Mat4::from_rotation_translation(
|
let transform = Mat4::from_rotation_translation(
|
||||||
@@ -375,8 +366,7 @@ pub fn create_sphere_field_flex(
|
|||||||
calling_client: Rc<Client>,
|
calling_client: Rc<Client>,
|
||||||
data: &[u8],
|
data: &[u8],
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
let node = Node::create("/field", flex_vec.idx(0).get_str()?, true);
|
||||||
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
||||||
let transform = Mat4::from_translation(
|
let transform = Mat4::from_translation(
|
||||||
|
|||||||
@@ -124,8 +124,7 @@ impl Spatial {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
pub fn set_transform_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
pub fn set_transform_flex(node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let reference_space_path = flex_vec.idx(0).as_str();
|
let reference_space_path = flex_vec.idx(0).as_str();
|
||||||
let reference_space_transform = if reference_space_path.is_empty() {
|
let reference_space_transform = if reference_space_path.is_empty() {
|
||||||
None
|
None
|
||||||
@@ -185,8 +184,7 @@ pub fn create_interface(client: &Rc<Client>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_spatial_flex(_node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
pub fn create_spatial_flex(_node: &Node, calling_client: Rc<Client>, data: &[u8]) -> Result<()> {
|
||||||
let root = flexbuffers::Reader::get_root(data)?;
|
let flex_vec = flexbuffers::Reader::get_root(data)?.get_vector()?;
|
||||||
let flex_vec = root.get_vector()?;
|
|
||||||
let spatial = Node::create("/spatial/spatial", flex_vec.idx(0).get_str()?, true);
|
let spatial = Node::create("/spatial/spatial", flex_vec.idx(0).get_str()?, true);
|
||||||
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
let parent = get_spatial_parent_flex(&calling_client, flex_vec.idx(1).get_str()?)?;
|
||||||
let transform = Mat4::from_scale_rotation_translation(
|
let transform = Mat4::from_scale_rotation_translation(
|
||||||
|
|||||||
Reference in New Issue
Block a user