Skip to content

Commit

Permalink
Avoid casting errors for floats.
Browse files Browse the repository at this point in the history
Fix narrowing conversion errors in OpenXR plugin with explicit float casts
  • Loading branch information
fire committed Feb 12, 2025
1 parent 31aa564 commit aa23805
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,11 @@ XrGeometryInstanceFB OpenXRFbPassthroughExtensionWrapper::create_geometry_instan
vertices.resize(vertex_array.size());
for (int j = 0; j < vertex_array.size(); j++) {
Vector3 vertex = vertex_array[j];
vertices[j] = { vertex.x, vertex.y, vertex.z };
vertices[j] = {
static_cast<float>(vertex.x),
static_cast<float>(vertex.y),
static_cast<float>(vertex.z)
};
}

Array index_array = surface_arrays[Mesh::ARRAY_INDEX];
Expand Down Expand Up @@ -472,10 +476,23 @@ XrGeometryInstanceFB OpenXRFbPassthroughExtensionWrapper::create_geometry_instan
Quaternion quat = transform.basis.get_rotation_quaternion();
Vector3 scale = transform.basis.get_scale();

XrQuaternionf xr_orientation = { quat.x, quat.y, quat.z, quat.w };
XrVector3f xr_position = { transform.origin.x, transform.origin.y, transform.origin.z };
XrQuaternionf xr_orientation = {
static_cast<float>(quat.x),
static_cast<float>(quat.y),
static_cast<float>(quat.z),
static_cast<float>(quat.w)
};
XrVector3f xr_position = {
static_cast<float>(transform.origin.x),
static_cast<float>(transform.origin.y),
static_cast<float>(transform.origin.z)
};
XrPosef xr_pose = { xr_orientation, xr_position };
XrVector3f xr_scale = { scale.x, scale.y, scale.z };
XrVector3f xr_scale = {
static_cast<float>(scale.x),
static_cast<float>(scale.y),
static_cast<float>(scale.z)
};

XrGeometryInstanceFB geometry_instance = XR_NULL_HANDLE;
XrGeometryInstanceCreateInfoFB geometry_instance_info = {
Expand Down Expand Up @@ -504,10 +521,23 @@ void OpenXRFbPassthroughExtensionWrapper::set_geometry_instance_transform(XrGeom
Quaternion quat = transform.basis.get_rotation_quaternion();
Vector3 scale = transform.basis.get_scale();

XrQuaternionf xr_orientation = { quat.x, quat.y, quat.z, quat.w };
XrVector3f xr_position = { transform.origin.x, transform.origin.y, transform.origin.z };
XrQuaternionf xr_orientation = {
static_cast<float>(quat.x),
static_cast<float>(quat.y),
static_cast<float>(quat.z),
static_cast<float>(quat.w)
};
XrVector3f xr_position = {
static_cast<float>(transform.origin.x),
static_cast<float>(transform.origin.y),
static_cast<float>(transform.origin.z)
};
XrPosef xr_pose = { xr_orientation, xr_position };
XrVector3f xr_scale = { scale.x, scale.y, scale.z };
XrVector3f xr_scale = {
static_cast<float>(scale.x),
static_cast<float>(scale.y),
static_cast<float>(scale.z)
};

XrGeometryInstanceTransformFB xr_transform = {
XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB, // type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,13 @@ bool OpenXRFbSpatialEntityExtensionWrapper::create_spatial_anchor(const Transfor
Quaternion quat = Quaternion(p_transform.basis);
Vector3 pos = p_transform.origin;
XrPosef pose = {
{ quat.x, quat.y, quat.z, quat.w }, // orientation
{ pos.x, pos.y, pos.z }, // position
{ static_cast<float>(quat.x),
static_cast<float>(quat.y),
static_cast<float>(quat.z),
static_cast<float>(quat.w) }, // orientation
{ static_cast<float>(pos.x),
static_cast<float>(pos.y),
static_cast<float>(pos.z) } // position
};

XrSpatialAnchorCreateInfoFB info = {
Expand Down

0 comments on commit aa23805

Please sign in to comment.