chore: update to rust edition 2024
Signed-off-by: Schmarni <marnistromer@gmail.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
edition = "2021"
|
edition = "2024"
|
||||||
description = "Community crate for XR in Bevy"
|
description = "Community crate for XR in Bevy"
|
||||||
repository = "https://github.com/awtterpip/bevy_oxr"
|
repository = "https://github.com/awtterpip/bevy_oxr"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
|
|||||||
@@ -207,16 +207,16 @@ unsafe impl GraphicsExt for openxr::Vulkan {
|
|||||||
system_id,
|
system_id,
|
||||||
};
|
};
|
||||||
let mut out = sys::Session::NULL;
|
let mut out = sys::Session::NULL;
|
||||||
cvt((instance.fp().create_session)(
|
cvt(unsafe { (instance.fp().create_session)(
|
||||||
instance.as_raw(),
|
instance.as_raw(),
|
||||||
&info,
|
&info,
|
||||||
&mut out,
|
&mut out,
|
||||||
))?;
|
) })?;
|
||||||
Ok(openxr::Session::from_raw(
|
Ok(unsafe { openxr::Session::from_raw(
|
||||||
instance.clone(),
|
instance.clone(),
|
||||||
out,
|
out,
|
||||||
Box::new(()),
|
Box::new(()),
|
||||||
))
|
) })
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_fallback_graphics(
|
fn init_fallback_graphics(
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
use std::sync::atomic::Ordering;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use std::sync::atomic::Ordering;
|
||||||
|
|
||||||
use bevy_app::App;
|
use bevy_app::App;
|
||||||
use bevy_app::Plugin;
|
use bevy_app::Plugin;
|
||||||
use bevy_ecs::message::MessageWriter;
|
use bevy_ecs::message::MessageWriter;
|
||||||
use bevy_ecs::message::Messages;
|
use bevy_ecs::message::Messages;
|
||||||
use bevy_ecs::resource::Resource;
|
use bevy_ecs::resource::Resource;
|
||||||
|
use bevy_ecs::schedule::IntoScheduleConfigs as _;
|
||||||
use bevy_ecs::schedule::SystemCondition as _;
|
use bevy_ecs::schedule::SystemCondition as _;
|
||||||
use bevy_ecs::schedule::common_conditions::on_message;
|
use bevy_ecs::schedule::common_conditions::on_message;
|
||||||
use bevy_ecs::schedule::common_conditions::resource_exists;
|
use bevy_ecs::schedule::common_conditions::resource_exists;
|
||||||
use bevy_ecs::schedule::IntoScheduleConfigs as _;
|
|
||||||
use bevy_ecs::system::Commands;
|
use bevy_ecs::system::Commands;
|
||||||
use bevy_ecs::system::Local;
|
use bevy_ecs::system::Local;
|
||||||
use bevy_ecs::system::Res;
|
use bevy_ecs::system::Res;
|
||||||
@@ -22,6 +22,12 @@ use bevy_log::info;
|
|||||||
use bevy_log::warn;
|
use bevy_log::warn;
|
||||||
use bevy_math::UVec2;
|
use bevy_math::UVec2;
|
||||||
use bevy_mod_xr::session::*;
|
use bevy_mod_xr::session::*;
|
||||||
|
use bevy_render::ExtractSchedule;
|
||||||
|
use bevy_render::MainWorld;
|
||||||
|
use bevy_render::Render;
|
||||||
|
use bevy_render::RenderApp;
|
||||||
|
use bevy_render::RenderDebugFlags;
|
||||||
|
use bevy_render::RenderPlugin;
|
||||||
use bevy_render::extract_resource::ExtractResourcePlugin;
|
use bevy_render::extract_resource::ExtractResourcePlugin;
|
||||||
use bevy_render::renderer::RenderAdapter;
|
use bevy_render::renderer::RenderAdapter;
|
||||||
use bevy_render::renderer::RenderAdapterInfo;
|
use bevy_render::renderer::RenderAdapterInfo;
|
||||||
@@ -30,12 +36,6 @@ use bevy_render::renderer::RenderInstance;
|
|||||||
use bevy_render::renderer::RenderQueue;
|
use bevy_render::renderer::RenderQueue;
|
||||||
use bevy_render::renderer::WgpuWrapper;
|
use bevy_render::renderer::WgpuWrapper;
|
||||||
use bevy_render::settings::RenderCreation;
|
use bevy_render::settings::RenderCreation;
|
||||||
use bevy_render::ExtractSchedule;
|
|
||||||
use bevy_render::MainWorld;
|
|
||||||
use bevy_render::Render;
|
|
||||||
use bevy_render::RenderApp;
|
|
||||||
use bevy_render::RenderDebugFlags;
|
|
||||||
use bevy_render::RenderPlugin;
|
|
||||||
#[cfg(feature = "window_support")]
|
#[cfg(feature = "window_support")]
|
||||||
use bevy_winit::UpdateMode;
|
use bevy_winit::UpdateMode;
|
||||||
#[cfg(feature = "window_support")]
|
#[cfg(feature = "window_support")]
|
||||||
@@ -185,8 +185,8 @@ impl Plugin for OxrInitPlugin {
|
|||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Failed to initialize openxr: {e}");
|
error!("Failed to initialize openxr: {e}");
|
||||||
if let Some(cfg) = cfg {
|
if let Some(cfg) = cfg
|
||||||
if let Ok(WgpuGraphics(device, queue, adapter_info, adapter, wgpu_instance)) =
|
&& let Ok(WgpuGraphics(device, queue, adapter_info, adapter, wgpu_instance)) =
|
||||||
graphics_match!(
|
graphics_match!(
|
||||||
cfg.fallback_backend;
|
cfg.fallback_backend;
|
||||||
_ => Api::init_fallback_graphics(&self.app_info ,&cfg)
|
_ => Api::init_fallback_graphics(&self.app_info ,&cfg)
|
||||||
@@ -209,7 +209,6 @@ impl Plugin for OxrInitPlugin {
|
|||||||
.insert_resource(XrState::Unavailable);
|
.insert_resource(XrState::Unavailable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
app.add_plugins(RenderPlugin::default())
|
app.add_plugins(RenderPlugin::default())
|
||||||
.insert_resource(XrState::Unavailable);
|
.insert_resource(XrState::Unavailable);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use bevy_derive::{Deref, DerefMut};
|
use bevy_derive::{Deref, DerefMut};
|
||||||
use bevy_ecs::resource::Resource;
|
use bevy_ecs::resource::Resource;
|
||||||
|
use bevy_log::error;
|
||||||
use bevy_math::UVec2;
|
use bevy_math::UVec2;
|
||||||
use bevy_render::extract_resource::ExtractResource;
|
use bevy_render::extract_resource::ExtractResource;
|
||||||
use bevy_log::error;
|
|
||||||
|
|
||||||
use crate::error::OxrError;
|
use crate::error::OxrError;
|
||||||
use crate::graphics::*;
|
use crate::graphics::*;
|
||||||
@@ -144,7 +144,7 @@ impl OxrInstance {
|
|||||||
graphics_match!(
|
graphics_match!(
|
||||||
info.0;
|
info.0;
|
||||||
info => {
|
info => {
|
||||||
let (session, frame_waiter, frame_stream) = Api::create_session(self,system_id, &info,chain)?;
|
let (session, frame_waiter, frame_stream) = unsafe { Api::create_session(self,system_id, &info,chain)? };
|
||||||
Ok((session.into(), OxrFrameWaiter(frame_waiter), OxrFrameStream(Api::wrap(frame_stream))))
|
Ok((session.into(), OxrFrameWaiter(frame_waiter), OxrFrameStream(Api::wrap(frame_stream))))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -192,8 +192,8 @@ impl OxrFrameStream {
|
|||||||
let mut new_layers = vec![];
|
let mut new_layers = vec![];
|
||||||
|
|
||||||
for (i, layer) in layers.iter().enumerate() {
|
for (i, layer) in layers.iter().enumerate() {
|
||||||
if let Some(swapchain) = layer.swapchain() {
|
if let Some(swapchain) = layer.swapchain()
|
||||||
if !swapchain.0.using_graphics::<Api>() {
|
&& !swapchain.0.using_graphics::<Api>() {
|
||||||
error!(
|
error!(
|
||||||
"Composition layer {i} is using graphics api '{}', expected graphics api '{}'. Excluding layer from frame submission.",
|
"Composition layer {i} is using graphics api '{}', expected graphics api '{}'. Excluding layer from frame submission.",
|
||||||
swapchain.0.graphics_name(),
|
swapchain.0.graphics_name(),
|
||||||
@@ -201,7 +201,6 @@ impl OxrFrameStream {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
new_layers.push(unsafe {
|
new_layers.push(unsafe {
|
||||||
#[allow(clippy::missing_transmute_annotations)]
|
#[allow(clippy::missing_transmute_annotations)]
|
||||||
std::mem::transmute(layer.header())
|
std::mem::transmute(layer.header())
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
use bevy_app::{App, Plugin, PreUpdate, Startup};
|
use bevy_app::{App, Plugin, PreUpdate, Startup};
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
component::Component, message::MessageReader, schedule::IntoScheduleConfigs as _, system::{Query, Res, ResMut}
|
component::Component,
|
||||||
|
message::MessageReader,
|
||||||
|
schedule::IntoScheduleConfigs as _,
|
||||||
|
system::{Query, Res, ResMut},
|
||||||
};
|
};
|
||||||
use bevy_log::{error, info};
|
|
||||||
use bevy_log::warn;
|
use bevy_log::warn;
|
||||||
|
use bevy_log::{error, info};
|
||||||
use bevy_math::Isometry3d;
|
use bevy_math::Isometry3d;
|
||||||
use bevy_mod_xr::{
|
use bevy_mod_xr::{
|
||||||
session::{XrFirst, XrHandleEvents},
|
session::{XrFirst, XrHandleEvents},
|
||||||
@@ -15,8 +18,8 @@ use bevy_mod_xr::{
|
|||||||
use bevy_platform::collections::hash_set::HashSet;
|
use bevy_platform::collections::hash_set::HashSet;
|
||||||
use bevy_transform::components::Transform;
|
use bevy_transform::components::Transform;
|
||||||
use openxr::{
|
use openxr::{
|
||||||
sys, HandJointLocation, HandJointLocations, HandJointVelocities, HandJointVelocity,
|
HAND_JOINT_COUNT, HandJointLocation, HandJointLocations, HandJointVelocities,
|
||||||
ReferenceSpaceType, SpaceLocationFlags, SpaceVelocityFlags, HAND_JOINT_COUNT,
|
HandJointVelocity, ReferenceSpaceType, SpaceLocationFlags, SpaceVelocityFlags, sys,
|
||||||
};
|
};
|
||||||
use std::{mem::MaybeUninit, ptr, sync::Mutex};
|
use std::{mem::MaybeUninit, ptr, sync::Mutex};
|
||||||
|
|
||||||
@@ -95,10 +98,12 @@ unsafe extern "system" fn patched_destroy_space(space: openxr::sys::Space) -> op
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.contains(&space.into_raw())
|
.contains(&space.into_raw())
|
||||||
{
|
{
|
||||||
|
unsafe {
|
||||||
OXR_ORIGINAL_DESTOY_SPACE
|
OXR_ORIGINAL_DESTOY_SPACE
|
||||||
.lock()
|
.lock()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.expect("has to be initialized")(space)
|
.expect("has to be initialized")(space)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
info!("Inject Worked, not destroying space");
|
info!("Inject Worked, not destroying space");
|
||||||
openxr::sys::Result::SUCCESS
|
openxr::sys::Result::SUCCESS
|
||||||
@@ -581,11 +586,7 @@ unsafe impl OxrSpaceExt for XrSpace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn cvt(x: sys::Result) -> openxr::Result<sys::Result> {
|
fn cvt(x: sys::Result) -> openxr::Result<sys::Result> {
|
||||||
if x.into_raw() >= 0 {
|
if x.into_raw() >= 0 { Ok(x) } else { Err(x) }
|
||||||
Ok(x)
|
|
||||||
} else {
|
|
||||||
Err(x)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#[allow(clippy::obfuscated_if_else)]
|
#[allow(clippy::obfuscated_if_else)]
|
||||||
unsafe fn create_view(flags: openxr::ViewStateFlags, raw: &MaybeUninit<sys::View>) -> openxr::View {
|
unsafe fn create_view(flags: openxr::ViewStateFlags, raw: &MaybeUninit<sys::View>) -> openxr::View {
|
||||||
@@ -595,31 +596,31 @@ unsafe fn create_view(flags: openxr::ViewStateFlags, raw: &MaybeUninit<sys::View
|
|||||||
pose: openxr::Posef {
|
pose: openxr::Posef {
|
||||||
orientation: flags
|
orientation: flags
|
||||||
.contains(sys::ViewStateFlags::ORIENTATION_VALID)
|
.contains(sys::ViewStateFlags::ORIENTATION_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).pose.orientation))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).pose.orientation) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
position: flags
|
position: flags
|
||||||
.contains(sys::ViewStateFlags::POSITION_VALID)
|
.contains(sys::ViewStateFlags::POSITION_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).pose.position))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).pose.position) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
},
|
},
|
||||||
fov: *ptr::addr_of!((*ptr).fov),
|
fov: unsafe { *ptr::addr_of!((*ptr).fov) },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[allow(clippy::obfuscated_if_else)]
|
#[allow(clippy::obfuscated_if_else)]
|
||||||
unsafe fn create_space_location(raw: &MaybeUninit<sys::SpaceLocation>) -> openxr::SpaceLocation {
|
unsafe fn create_space_location(raw: &MaybeUninit<sys::SpaceLocation>) -> openxr::SpaceLocation {
|
||||||
// Applications *must* not read invalid parts of a pose, i.e. they may be uninitialized
|
// Applications *must* not read invalid parts of a pose, i.e. they may be uninitialized
|
||||||
let ptr = raw.as_ptr();
|
let ptr = raw.as_ptr();
|
||||||
let flags = *ptr::addr_of!((*ptr).location_flags);
|
let flags = unsafe { *ptr::addr_of!((*ptr).location_flags) };
|
||||||
openxr::SpaceLocation {
|
openxr::SpaceLocation {
|
||||||
location_flags: flags,
|
location_flags: flags,
|
||||||
pose: openxr::Posef {
|
pose: openxr::Posef {
|
||||||
orientation: flags
|
orientation: flags
|
||||||
.contains(sys::SpaceLocationFlags::ORIENTATION_VALID)
|
.contains(sys::SpaceLocationFlags::ORIENTATION_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).pose.orientation))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).pose.orientation) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
position: flags
|
position: flags
|
||||||
.contains(sys::SpaceLocationFlags::POSITION_VALID)
|
.contains(sys::SpaceLocationFlags::POSITION_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).pose.position))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).pose.position) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -628,16 +629,16 @@ unsafe fn create_space_location(raw: &MaybeUninit<sys::SpaceLocation>) -> openxr
|
|||||||
unsafe fn create_space_velocity(raw: &MaybeUninit<sys::SpaceVelocity>) -> openxr::SpaceVelocity {
|
unsafe fn create_space_velocity(raw: &MaybeUninit<sys::SpaceVelocity>) -> openxr::SpaceVelocity {
|
||||||
// Applications *must* not read invalid velocities, i.e. they may be uninitialized
|
// Applications *must* not read invalid velocities, i.e. they may be uninitialized
|
||||||
let ptr = raw.as_ptr();
|
let ptr = raw.as_ptr();
|
||||||
let flags = *ptr::addr_of!((*ptr).velocity_flags);
|
let flags = unsafe { *ptr::addr_of!((*ptr).velocity_flags) };
|
||||||
openxr::SpaceVelocity {
|
openxr::SpaceVelocity {
|
||||||
velocity_flags: flags,
|
velocity_flags: flags,
|
||||||
linear_velocity: flags
|
linear_velocity: flags
|
||||||
.contains(sys::SpaceVelocityFlags::LINEAR_VALID)
|
.contains(sys::SpaceVelocityFlags::LINEAR_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).linear_velocity))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).linear_velocity) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
angular_velocity: flags
|
angular_velocity: flags
|
||||||
.contains(sys::SpaceVelocityFlags::ANGULAR_VALID)
|
.contains(sys::SpaceVelocityFlags::ANGULAR_VALID)
|
||||||
.then(|| *ptr::addr_of!((*ptr).angular_velocity))
|
.then(|| unsafe { *ptr::addr_of!((*ptr).angular_velocity) })
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user