Skip to content

Commit aa23805

Browse files
committed
Avoid casting errors for floats.
Fix narrowing conversion errors in OpenXR plugin with explicit float casts
1 parent 31aa564 commit aa23805

File tree

2 files changed

+44
-9
lines changed

2 files changed

+44
-9
lines changed

Diff for: plugin/src/main/cpp/extensions/openxr_fb_passthrough_extension_wrapper.cpp

+37-7
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,11 @@ XrGeometryInstanceFB OpenXRFbPassthroughExtensionWrapper::create_geometry_instan
438438
vertices.resize(vertex_array.size());
439439
for (int j = 0; j < vertex_array.size(); j++) {
440440
Vector3 vertex = vertex_array[j];
441-
vertices[j] = { vertex.x, vertex.y, vertex.z };
441+
vertices[j] = {
442+
static_cast<float>(vertex.x),
443+
static_cast<float>(vertex.y),
444+
static_cast<float>(vertex.z)
445+
};
442446
}
443447

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

475-
XrQuaternionf xr_orientation = { quat.x, quat.y, quat.z, quat.w };
476-
XrVector3f xr_position = { transform.origin.x, transform.origin.y, transform.origin.z };
479+
XrQuaternionf xr_orientation = {
480+
static_cast<float>(quat.x),
481+
static_cast<float>(quat.y),
482+
static_cast<float>(quat.z),
483+
static_cast<float>(quat.w)
484+
};
485+
XrVector3f xr_position = {
486+
static_cast<float>(transform.origin.x),
487+
static_cast<float>(transform.origin.y),
488+
static_cast<float>(transform.origin.z)
489+
};
477490
XrPosef xr_pose = { xr_orientation, xr_position };
478-
XrVector3f xr_scale = { scale.x, scale.y, scale.z };
491+
XrVector3f xr_scale = {
492+
static_cast<float>(scale.x),
493+
static_cast<float>(scale.y),
494+
static_cast<float>(scale.z)
495+
};
479496

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

507-
XrQuaternionf xr_orientation = { quat.x, quat.y, quat.z, quat.w };
508-
XrVector3f xr_position = { transform.origin.x, transform.origin.y, transform.origin.z };
524+
XrQuaternionf xr_orientation = {
525+
static_cast<float>(quat.x),
526+
static_cast<float>(quat.y),
527+
static_cast<float>(quat.z),
528+
static_cast<float>(quat.w)
529+
};
530+
XrVector3f xr_position = {
531+
static_cast<float>(transform.origin.x),
532+
static_cast<float>(transform.origin.y),
533+
static_cast<float>(transform.origin.z)
534+
};
509535
XrPosef xr_pose = { xr_orientation, xr_position };
510-
XrVector3f xr_scale = { scale.x, scale.y, scale.z };
536+
XrVector3f xr_scale = {
537+
static_cast<float>(scale.x),
538+
static_cast<float>(scale.y),
539+
static_cast<float>(scale.z)
540+
};
511541

512542
XrGeometryInstanceTransformFB xr_transform = {
513543
XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB, // type

Diff for: plugin/src/main/cpp/extensions/openxr_fb_spatial_entity_extension_wrapper.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,13 @@ bool OpenXRFbSpatialEntityExtensionWrapper::create_spatial_anchor(const Transfor
166166
Quaternion quat = Quaternion(p_transform.basis);
167167
Vector3 pos = p_transform.origin;
168168
XrPosef pose = {
169-
{ quat.x, quat.y, quat.z, quat.w }, // orientation
170-
{ pos.x, pos.y, pos.z }, // position
169+
{ static_cast<float>(quat.x),
170+
static_cast<float>(quat.y),
171+
static_cast<float>(quat.z),
172+
static_cast<float>(quat.w) }, // orientation
173+
{ static_cast<float>(pos.x),
174+
static_cast<float>(pos.y),
175+
static_cast<float>(pos.z) } // position
171176
};
172177

173178
XrSpatialAnchorCreateInfoFB info = {

0 commit comments

Comments
 (0)