idk wut im doin

This commit is contained in:
awtterpip
2023-08-23 18:58:49 -05:00
parent c30935a292
commit eaa244d247
3 changed files with 15 additions and 10 deletions

View File

@@ -5,8 +5,8 @@ use bevy::window::RawHandleWrapper;
use wgpu::Instance;
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)
}

View File

@@ -13,7 +13,7 @@ use wgpu::Instance;
use crate::input::XrInput;
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;
@@ -31,6 +31,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
XrSwapchain,
XrInput,
XrViews,
XrFrameState,
)> {
use wgpu_hal::{api::Vulkan as V, Api};
@@ -371,6 +372,7 @@ pub fn initialize_xr_graphics(window: Option<RawHandleWrapper>) -> anyhow::Resul
})).into(),
XrInput::new(xr_instance, session.into_any_graphics())?,
Mutex::default().into(),
Mutex::default().into(),
))
}

View File

@@ -36,6 +36,7 @@ pub struct FutureXrResources(
XrSwapchain,
XrInput,
XrViews,
XrFrameState,
)>,
>,
>,
@@ -59,7 +60,7 @@ impl Plugin for OpenXrPlugin {
bevy::tasks::IoTaskPool::get()
.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 Features: {:#?}", device.features());
let mut future_renderer_resources_inner =
@@ -68,11 +69,11 @@ impl Plugin for OpenXrPlugin {
Some((device, queue, adapter_info, render_adapter, instance));
let mut future_xr_resources_inner = future_xr_resources_wrapper.lock().unwrap();
*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();
app.add_systems(Last, pre_frame);
}
fn ready(&self, app: &App) -> bool {
@@ -86,7 +87,7 @@ impl Plugin for OpenXrPlugin {
if let Some(future_renderer_resources) =
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();
app.insert_resource(instance.clone())
@@ -96,7 +97,8 @@ impl Plugin for OpenXrPlugin {
.insert_resource(frame_waiter.clone())
.insert_resource(swapchain.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);
@@ -107,8 +109,9 @@ impl Plugin for OpenXrPlugin {
.insert_resource(frame_waiter)
.insert_resource(swapchain)
.insert_resource(input)
.insert_resource(views);
render_app.add_systems(Render, (post_frame.in_set(RenderSet::Prepare), post_queue_submit.in_set(RenderSet::Cleanup)));
.insert_resource(views)
.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)));
}
}