diff --git a/src/lib.rs b/src/lib.rs index 83b09f1..647b666 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -154,20 +154,6 @@ impl Plugin for OpenXrPlugin { .after(RenderSet::ExtractCommands), // .in_set(RenderSet::Prepare), ); - // render_app.add_systems( - // Render, - // ( - // locate_views, - // xr_input::xr_camera::xr_camera_head_sync_render, - // // sync_simple_transforms, - // // propagate_transforms, - // // update_cam_views, - // ) - // .chain() - // .run_if(xr_only()) - // // .run_if(xr_render_only()) - // .in_set(RenderSet::Prepare), - // ); render_app.add_systems( Render, xr_end_frame @@ -187,14 +173,6 @@ impl Plugin for OpenXrPlugin { } } -// Confirmed Working -// Not Working Actually, the cam doesn't render with the new pose for some reason -fn update_cam_views(mut query: Query<(&mut ExtractedView, &GlobalTransform)>) { - for (mut view, transform) in &mut query { - view.transform = *transform; - } -} - fn xr_skip_frame( xr_swapchain: Res, xr_frame_state: Res, @@ -238,7 +216,7 @@ impl PluginGroup for DefaultXrPlugins { ..default() }, }) - // .disable::() + .disable::() .disable::() .add_before::(OpenXrPlugin { prefered_blend_mode: self.prefered_blend_mode, diff --git a/src/resource_macros.rs b/src/resource_macros.rs index bb83a63..11ffd20 100644 --- a/src/resource_macros.rs +++ b/src/resource_macros.rs @@ -33,10 +33,15 @@ macro_rules! xr_resource_wrapper { } #[macro_export] -macro_rules! xr_resource_wrapper_no_extract { +macro_rules! xr_resource_wrapper_copy { ($wrapper_type:ident, $xr_type:ty) => { #[derive( - Clone, Copy, bevy::prelude::Resource, bevy::prelude::Deref, bevy::prelude::DerefMut, + Clone, + Copy, + bevy::prelude::Resource, + bevy::prelude::Deref, + bevy::prelude::DerefMut, + bevy::render::extract_resource::ExtractResource, )] pub struct $wrapper_type($xr_type); diff --git a/src/resources.rs b/src/resources.rs index 2854abc..41678bb 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -4,36 +4,24 @@ use std::sync::Mutex; use crate::input::XrInput; // use crate::passthrough::XrPassthroughLayer; -use crate::xr_init::XrStatus; -use crate::{resource_macros::*, xr_resource_wrapper_no_extract}; +use crate::{resource_macros::*, xr_resource_wrapper_copy}; use bevy::prelude::*; -use bevy::render::extract_resource::{ExtractResource, ExtractResourcePlugin}; +use bevy::render::extract_resource::ExtractResourcePlugin; use openxr as xr; xr_resource_wrapper!(XrInstance, xr::Instance); xr_resource_wrapper!(XrSession, xr::Session); -xr_resource_wrapper!(XrEnvironmentBlendMode, xr::EnvironmentBlendMode); -xr_resource_wrapper!(XrResolution, UVec2); -xr_resource_wrapper!(XrFormat, wgpu::TextureFormat); -xr_resource_wrapper_no_extract!(XrFrameState, xr::FrameState); +xr_resource_wrapper_copy!(XrEnvironmentBlendMode, xr::EnvironmentBlendMode); +xr_resource_wrapper_copy!(XrResolution, UVec2); +xr_resource_wrapper_copy!(XrFormat, wgpu::TextureFormat); +xr_resource_wrapper_copy!(XrFrameState, xr::FrameState); xr_resource_wrapper!(XrViews, Vec); xr_arc_resource_wrapper!(XrSessionRunning, AtomicBool); xr_arc_resource_wrapper!(XrSwapchain, Swapchain); xr_no_clone_resource_wrapper!(XrFrameWaiter, xr::FrameWaiter); -impl ExtractResource for XrFrameState { - type Source = Self; - fn extract_resource(source: &Self::Source) -> Self { - let mut state = *source; - state.predicted_display_time = xr::Time::from_nanos( - state.predicted_display_time.as_nanos() + state.predicted_display_period.as_nanos(), - ); - state - } -} - -pub(crate) struct VulkanOXrSessionSetupInfo { +pub struct VulkanOXrSessionSetupInfo { pub(crate) device_ptr: *const c_void, pub(crate) physical_device_ptr: *const c_void, pub(crate) vk_instance_ptr: *const c_void, @@ -41,7 +29,7 @@ pub(crate) struct VulkanOXrSessionSetupInfo { pub(crate) xr_system_id: xr::SystemId, } -pub(crate) enum OXrSessionSetupInfo { +pub enum OXrSessionSetupInfo { Vulkan(VulkanOXrSessionSetupInfo), }