fix(spatial): parse_transform returned result
This commit is contained in:
@@ -244,7 +244,7 @@ pub fn create_pulse_sender_flex(
|
|||||||
let info: CreatePulseSenderInfo = deserialize(data)?;
|
let info: CreatePulseSenderInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/data/sender", info.name, true);
|
let node = Node::create(&calling_client, "/data/sender", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
|
|
||||||
let mask = Mask(info.mask);
|
let mask = Mask(info.mask);
|
||||||
mask.get_mask()?;
|
mask.get_mask()?;
|
||||||
@@ -271,7 +271,7 @@ pub fn create_pulse_receiver_flex(
|
|||||||
let info: CreatePulseReceiverInfo = deserialize(data)?;
|
let info: CreatePulseReceiverInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/data/receiver", info.name, true);
|
let node = Node::create(&calling_client, "/data/receiver", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let field = find_field(&calling_client, info.field_path)?;
|
let field = find_field(&calling_client, info.field_path)?;
|
||||||
let mask = Mask(info.mask);
|
let mask = Mask(info.mask);
|
||||||
mask.get_mask()?;
|
mask.get_mask()?;
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ pub fn create_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8]) -> Re
|
|||||||
let mut info: CreateTextInfo = deserialize(data)?;
|
let mut info: CreateTextInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/drawable/lines", info.name, true);
|
let node = Node::create(&calling_client, "/drawable/lines", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, true)?;
|
let transform = parse_transform(info.transform, true, true, true);
|
||||||
|
|
||||||
for p in &mut info.points {
|
for p in &mut info.points {
|
||||||
p.color[0] = p.color[0].powf(2.2);
|
p.color[0] = p.color[0].powf(2.2);
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ pub fn create_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8]) -> Re
|
|||||||
let info: CreateModelInfo = deserialize(data)?;
|
let info: CreateModelInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/drawable/model", info.name, true);
|
let node = Node::create(&calling_client, "/drawable/model", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, true)?;
|
let transform = parse_transform(info.transform, true, true, true);
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, false)?;
|
Spatial::add_to(&node, Some(parent), transform, false)?;
|
||||||
Model::add_to(&node, info.resource)?;
|
Model::add_to(&node, info.resource)?;
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ pub fn create_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8]) -> Re
|
|||||||
let info: CreateTextInfo = deserialize(data)?;
|
let info: CreateTextInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/drawable/text", info.name, true);
|
let node = Node::create(&calling_client, "/drawable/text", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, true)?;
|
let transform = parse_transform(info.transform, true, true, true);
|
||||||
let color = Rgba::from_slice(&info.color);
|
let color = Rgba::from_slice(&info.color);
|
||||||
|
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ pub fn create_box_field_flex(_node: &Node, calling_client: Arc<Client>, data: &[
|
|||||||
let info: CreateFieldInfo = deserialize(data)?;
|
let info: CreateFieldInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/field", info.name, true);
|
let node = Node::create(&calling_client, "/field", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, false)?;
|
Spatial::add_to(&node, Some(parent), transform, false)?;
|
||||||
BoxField::add_to(&node, info.size)?;
|
BoxField::add_to(&node, info.size)?;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ pub fn create_cylinder_field_flex(
|
|||||||
let info: CreateFieldInfo = deserialize(data)?;
|
let info: CreateFieldInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/field", info.name, true);
|
let node = Node::create(&calling_client, "/field", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, false)?;
|
Spatial::add_to(&node, Some(parent), transform, false)?;
|
||||||
CylinderField::add_to(&node, info.length, info.radius)?;
|
CylinderField::add_to(&node, info.length, info.radius)?;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ pub fn create_torus_field_flex(
|
|||||||
let info: CreateFieldInfo = deserialize(data)?;
|
let info: CreateFieldInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/field", info.name, true);
|
let node = Node::create(&calling_client, "/field", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, false)?;
|
Spatial::add_to(&node, Some(parent), transform, false)?;
|
||||||
TorusField::add_to(&node, info.radius_a, info.radius_b)?;
|
TorusField::add_to(&node, info.radius_a, info.radius_b)?;
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ pub fn create_input_handler_flex(
|
|||||||
}
|
}
|
||||||
let info: CreateInputHandlerInfo = deserialize(data)?;
|
let info: CreateInputHandlerInfo = deserialize(data)?;
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, true)?;
|
let transform = parse_transform(info.transform, true, true, true);
|
||||||
let field = find_field(&calling_client, info.field_path)?;
|
let field = find_field(&calling_client, info.field_path)?;
|
||||||
|
|
||||||
let node = Node::create(&calling_client, "/input/handler", info.name, true).add_to_scenegraph();
|
let node = Node::create(&calling_client, "/input/handler", info.name, true).add_to_scenegraph();
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ pub fn create_tip_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8]) -
|
|||||||
let info: CreateTipInfo = deserialize(data)?;
|
let info: CreateTipInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/input/method/tip", info.name, true);
|
let node = Node::create(&calling_client, "/input/method/tip", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
|
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, false)?;
|
Spatial::add_to(&node, Some(parent), transform, false)?;
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ pub(super) fn create_environment_item_flex(
|
|||||||
let info: CreateEnvironmentItemInfo = deserialize(data)?;
|
let info: CreateEnvironmentItemInfo = deserialize(data)?;
|
||||||
let parent_name = format!("/item/{}/item", ITEM_TYPE_INFO_ENVIRONMENT.type_name);
|
let parent_name = format!("/item/{}/item", ITEM_TYPE_INFO_ENVIRONMENT.type_name);
|
||||||
let space = find_spatial_parent(&calling_client, info.parent_path)?;
|
let space = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
|
|
||||||
let node = Node::create(&INTERNAL_CLIENT, &parent_name, info.name, false).add_to_scenegraph();
|
let node = Node::create(&INTERNAL_CLIENT, &parent_name, info.name, false).add_to_scenegraph();
|
||||||
Spatial::add_to(&node, None, transform * space.global_transform(), false)?;
|
Spatial::add_to(&node, None, transform * space.global_transform(), false)?;
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ fn create_item_acceptor_flex(_node: &Node, calling_client: Arc<Client>, data: &[
|
|||||||
}
|
}
|
||||||
let info: CreateItemAcceptorInfo = deserialize(data)?;
|
let info: CreateItemAcceptorInfo = deserialize(data)?;
|
||||||
let space = find_spatial_parent(&calling_client, info.parent_path)?;
|
let space = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let field = find_field(&calling_client, info.field_path)?;
|
let field = find_field(&calling_client, info.field_path)?;
|
||||||
let type_info = type_info(info.item_type)?;
|
let type_info = type_info(info.item_type)?;
|
||||||
|
|
||||||
|
|||||||
@@ -310,12 +310,7 @@ impl Drop for Spatial {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_transform(
|
pub fn parse_transform(transform: Transform, position: bool, rotation: bool, scale: bool) -> Mat4 {
|
||||||
transform: Transform,
|
|
||||||
position: bool,
|
|
||||||
rotation: bool,
|
|
||||||
scale: bool,
|
|
||||||
) -> Result<Mat4> {
|
|
||||||
let position = position
|
let position = position
|
||||||
.then_some(transform.position)
|
.then_some(transform.position)
|
||||||
.flatten()
|
.flatten()
|
||||||
@@ -329,11 +324,7 @@ pub fn parse_transform(
|
|||||||
.flatten()
|
.flatten()
|
||||||
.unwrap_or_else(|| Vector3::from([1.0; 3]));
|
.unwrap_or_else(|| Vector3::from([1.0; 3]));
|
||||||
|
|
||||||
Ok(Mat4::from_scale_rotation_translation(
|
Mat4::from_scale_rotation_translation(scale.into(), rotation.into(), position.into())
|
||||||
scale.into(),
|
|
||||||
rotation.into(),
|
|
||||||
position.into(),
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn find_spatial(
|
pub fn find_spatial(
|
||||||
@@ -377,7 +368,7 @@ pub fn create_spatial_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8
|
|||||||
let info: CreateSpatialInfo = deserialize(data)?;
|
let info: CreateSpatialInfo = deserialize(data)?;
|
||||||
let node = Node::create(&calling_client, "/spatial/spatial", info.name, true);
|
let node = Node::create(&calling_client, "/spatial/spatial", info.name, true);
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, true)?;
|
let transform = parse_transform(info.transform, true, true, true);
|
||||||
let node = node.add_to_scenegraph();
|
let node = node.add_to_scenegraph();
|
||||||
Spatial::add_to(&node, Some(parent), transform, info.zoneable)?;
|
Spatial::add_to(&node, Some(parent), transform, info.zoneable)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ pub fn create_zone_flex(_node: &Node, calling_client: Arc<Client>, data: &[u8])
|
|||||||
}
|
}
|
||||||
let info: CreateZoneInfo = deserialize(data)?;
|
let info: CreateZoneInfo = deserialize(data)?;
|
||||||
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
let parent = find_spatial_parent(&calling_client, info.parent_path)?;
|
||||||
let transform = parse_transform(info.transform, true, true, false)?;
|
let transform = parse_transform(info.transform, true, true, false);
|
||||||
let field = find_field(&calling_client, info.field_path)?;
|
let field = find_field(&calling_client, info.field_path)?;
|
||||||
|
|
||||||
let node = Node::create(&calling_client, "/spatial/zone", info.name, true).add_to_scenegraph();
|
let node = Node::create(&calling_client, "/spatial/zone", info.name, true).add_to_scenegraph();
|
||||||
|
|||||||
Reference in New Issue
Block a user