refactor: compact flex_vec shenanigans

This commit is contained in:
Nova
2022-06-14 20:58:29 -04:00
parent 2f63d5aaec
commit 3421fa84af
2 changed files with 12 additions and 24 deletions

View File

@@ -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(

View File

@@ -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(