idk wut im doin
This commit is contained in:
@@ -5,8 +5,8 @@ use bevy::window::RawHandleWrapper;
|
|||||||
use wgpu::Instance;
|
use wgpu::Instance;
|
||||||
|
|
||||||
use crate::input::XrInput;
|
use crate::input::XrInput;
|
||||||
use crate::resources::{XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrViews};
|
use crate::resources::{XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrViews, XrFrameState};
|
||||||
|
|
||||||
pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Result<(RenderDevice, RenderQueue, RenderAdapterInfo, RenderAdapter, Instance, XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrInput, XrViews)>{
|
pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Result<(RenderDevice, RenderQueue, RenderAdapterInfo, RenderAdapter, Instance, XrInstance, XrSession, XrEnvironmentBlendMode, XrSessionRunning, XrFrameWaiter, XrSwapchain, XrInput, XrViews, XrFrameState)>{
|
||||||
vulkan::initialize_xr_graphics(window)
|
vulkan::initialize_xr_graphics(window)
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ use wgpu::Instance;
|
|||||||
|
|
||||||
use crate::input::XrInput;
|
use crate::input::XrInput;
|
||||||
use crate::resources::{
|
use crate::resources::{
|
||||||
XrEnvironmentBlendMode, XrFrameWaiter, XrInstance, XrSession, XrSessionRunning, XrSwapchain, Swapchain, SwapchainInner, XrViews,
|
XrEnvironmentBlendMode, XrFrameWaiter, XrInstance, XrSession, XrSessionRunning, XrSwapchain, Swapchain, SwapchainInner, XrViews, XrFrameState,
|
||||||
};
|
};
|
||||||
use crate::VIEW_TYPE;
|
use crate::VIEW_TYPE;
|
||||||
|
|
||||||
@@ -31,6 +31,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
|
|||||||
XrSwapchain,
|
XrSwapchain,
|
||||||
XrInput,
|
XrInput,
|
||||||
XrViews,
|
XrViews,
|
||||||
|
XrFrameState,
|
||||||
)> {
|
)> {
|
||||||
use wgpu_hal::{api::Vulkan as V, Api};
|
use wgpu_hal::{api::Vulkan as V, Api};
|
||||||
|
|
||||||
@@ -371,6 +372,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
|
|||||||
})).into(),
|
})).into(),
|
||||||
XrInput::new(xr_instance, session.into_any_graphics())?,
|
XrInput::new(xr_instance, session.into_any_graphics())?,
|
||||||
Mutex::default().into(),
|
Mutex::default().into(),
|
||||||
|
Mutex::default().into(),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
17
src/lib.rs
17
src/lib.rs
@@ -36,6 +36,7 @@ pub struct FutureXrResources(
|
|||||||
XrSwapchain,
|
XrSwapchain,
|
||||||
XrInput,
|
XrInput,
|
||||||
XrViews,
|
XrViews,
|
||||||
|
XrFrameState,
|
||||||
)>,
|
)>,
|
||||||
>,
|
>,
|
||||||
>,
|
>,
|
||||||
@@ -59,7 +60,7 @@ impl Plugin for OpenXrPlugin {
|
|||||||
|
|
||||||
bevy::tasks::IoTaskPool::get()
|
bevy::tasks::IoTaskPool::get()
|
||||||
.spawn_local(async move {
|
.spawn_local(async move {
|
||||||
let (device, queue, adapter_info, render_adapter, instance, xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views) = graphics::initialize_xr_graphics(primary_window).unwrap();
|
let (device, queue, adapter_info, render_adapter, instance, xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state) = graphics::initialize_xr_graphics(primary_window).unwrap();
|
||||||
debug!("Configured wgpu adapter Limits: {:#?}", device.limits());
|
debug!("Configured wgpu adapter Limits: {:#?}", device.limits());
|
||||||
debug!("Configured wgpu adapter Features: {:#?}", device.features());
|
debug!("Configured wgpu adapter Features: {:#?}", device.features());
|
||||||
let mut future_renderer_resources_inner =
|
let mut future_renderer_resources_inner =
|
||||||
@@ -68,11 +69,11 @@ impl Plugin for OpenXrPlugin {
|
|||||||
Some((device, queue, adapter_info, render_adapter, instance));
|
Some((device, queue, adapter_info, render_adapter, instance));
|
||||||
let mut future_xr_resources_inner = future_xr_resources_wrapper.lock().unwrap();
|
let mut future_xr_resources_inner = future_xr_resources_wrapper.lock().unwrap();
|
||||||
*future_xr_resources_inner =
|
*future_xr_resources_inner =
|
||||||
Some((xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views));
|
Some((xr_instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state));
|
||||||
})
|
})
|
||||||
.detach();
|
.detach();
|
||||||
|
|
||||||
app.add_systems(Last, pre_frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ready(&self, app: &App) -> bool {
|
fn ready(&self, app: &App) -> bool {
|
||||||
@@ -86,7 +87,7 @@ impl Plugin for OpenXrPlugin {
|
|||||||
if let Some(future_renderer_resources) =
|
if let Some(future_renderer_resources) =
|
||||||
app.world.remove_resource::<FutureXrResources>()
|
app.world.remove_resource::<FutureXrResources>()
|
||||||
{
|
{
|
||||||
let (instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views) =
|
let (instance, session, blend_mode, session_running, frame_waiter, swapchain, input, views, frame_state) =
|
||||||
future_renderer_resources.0.lock().unwrap().take().unwrap();
|
future_renderer_resources.0.lock().unwrap().take().unwrap();
|
||||||
|
|
||||||
app.insert_resource(instance.clone())
|
app.insert_resource(instance.clone())
|
||||||
@@ -96,7 +97,8 @@ impl Plugin for OpenXrPlugin {
|
|||||||
.insert_resource(frame_waiter.clone())
|
.insert_resource(frame_waiter.clone())
|
||||||
.insert_resource(swapchain.clone())
|
.insert_resource(swapchain.clone())
|
||||||
.insert_resource(input.clone())
|
.insert_resource(input.clone())
|
||||||
.insert_resource(views.clone());
|
.insert_resource(views.clone())
|
||||||
|
.insert_resource(frame_state.clone());
|
||||||
|
|
||||||
let render_app = app.sub_app_mut(RenderApp);
|
let render_app = app.sub_app_mut(RenderApp);
|
||||||
|
|
||||||
@@ -107,8 +109,9 @@ impl Plugin for OpenXrPlugin {
|
|||||||
.insert_resource(frame_waiter)
|
.insert_resource(frame_waiter)
|
||||||
.insert_resource(swapchain)
|
.insert_resource(swapchain)
|
||||||
.insert_resource(input)
|
.insert_resource(input)
|
||||||
.insert_resource(views);
|
.insert_resource(views)
|
||||||
render_app.add_systems(Render, (post_frame.in_set(RenderSet::Prepare), post_queue_submit.in_set(RenderSet::Cleanup)));
|
.insert_resource(frame_state);
|
||||||
|
render_app.add_systems(Render, (pre_frame.in_set(RenderSet::Prepare).before(post_frame), post_frame.in_set(RenderSet::Prepare), post_queue_submit.in_set(RenderSet::Cleanup)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user