forked from StrafesNET/roblox-bot-player
move setup into lib
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
pub mod bot;
|
||||
pub mod graphics;
|
||||
pub mod head;
|
||||
pub mod setup;
|
||||
pub mod surface;
|
||||
|
||||
// Create Surface
|
||||
|
||||
@@ -13,19 +13,19 @@ fn required_downlevel_capabilities()->wgpu::DownlevelCapabilities{
|
||||
}
|
||||
}
|
||||
|
||||
mod step1{
|
||||
pub mod step1{
|
||||
pub fn create_instance()->wgpu::Instance{
|
||||
Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
mod step2{
|
||||
pub mod step2{
|
||||
pub fn create_surface<'window>(instance:&wgpu::Instance,target:impl Into<wgpu::SurfaceTarget<'window>>)->Result<wgpu::Surface<'window>,wgpu::CreateSurfaceError>{
|
||||
instance.create_surface(target)
|
||||
}
|
||||
}
|
||||
|
||||
mod step3{
|
||||
pub mod step3{
|
||||
pub async fn pick_adapter(instance:&wgpu::Instance,surface:&wgpu::Surface<'_>)->Option<wgpu::Adapter>{
|
||||
let backends=wgpu::Backends::from_env().unwrap_or_default();
|
||||
//TODO: prefer adapter that implements optional features
|
||||
@@ -63,7 +63,7 @@ mod step3{
|
||||
}
|
||||
}
|
||||
|
||||
mod step4{
|
||||
pub mod step4{
|
||||
pub async fn request_device(adapter:&wgpu::Adapter)->(wgpu::Device,wgpu::Queue){
|
||||
let optional_features=super::optional_features();
|
||||
let required_features=super::required_features();
|
||||
@@ -90,7 +90,8 @@ mod step4{
|
||||
)
|
||||
}
|
||||
}
|
||||
mod step5{
|
||||
|
||||
pub mod step5{
|
||||
pub fn configure_surface(
|
||||
adapter:&wgpu::Adapter,
|
||||
device:&wgpu::Device,
|
||||
@@ -104,46 +105,8 @@ mod step5{
|
||||
let surface_view_format=config.format.add_srgb_suffix();
|
||||
config.view_formats.push(surface_view_format);
|
||||
config.present_mode=wgpu::PresentMode::AutoNoVsync;
|
||||
surface.configure(device, &config);
|
||||
surface.configure(device,&config);
|
||||
|
||||
config
|
||||
}
|
||||
}
|
||||
|
||||
struct ToSurfaceTarget{
|
||||
canvas:web_sys::HtmlCanvasElement,
|
||||
}
|
||||
impl From<ToSurfaceTarget> for wgpu::SurfaceTarget<'static>{
|
||||
fn from(ToSurfaceTarget{canvas}:ToSurfaceTarget)->Self{
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
let target=wgpu::SurfaceTarget::Canvas(canvas);
|
||||
#[expect(unused)]
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
let target=panic!("{canvas:?}");
|
||||
#[allow(unused)]
|
||||
target
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn setup_and_start(canvas:web_sys::HtmlCanvasElement)->(wgpu::Device,wgpu::Queue,wgpu::Surface<'static>,wgpu::SurfaceConfiguration){
|
||||
let size=(canvas.width(),canvas.height());
|
||||
|
||||
println!("Initializing the surface...");
|
||||
|
||||
let instance=step1::create_instance();
|
||||
|
||||
let surface=step2::create_surface(&instance,ToSurfaceTarget{canvas}).unwrap();
|
||||
|
||||
let adapter=step3::pick_adapter(&instance,&surface).await.expect("No suitable GPU adapters found on the system!");
|
||||
|
||||
let (device,queue)=step4::request_device(&adapter).await;
|
||||
|
||||
let config=step5::configure_surface(&adapter,&device,&surface,size);
|
||||
|
||||
(
|
||||
device,
|
||||
queue,
|
||||
surface,
|
||||
config,
|
||||
)
|
||||
}
|
||||
@@ -1,9 +1,45 @@
|
||||
use wasm_bindgen::prelude::wasm_bindgen;
|
||||
use wasm_bindgen::JsValue;
|
||||
use strafesnet_roblox_bot_player::{bot,graphics,head};
|
||||
use strafesnet_roblox_bot_player::{bot,graphics,head,setup};
|
||||
use strafesnet_common::session::Time as SessionTime;
|
||||
|
||||
mod setup;
|
||||
struct ToSurfaceTarget{
|
||||
canvas:web_sys::HtmlCanvasElement,
|
||||
}
|
||||
impl From<ToSurfaceTarget> for wgpu::SurfaceTarget<'static>{
|
||||
fn from(ToSurfaceTarget{canvas}:ToSurfaceTarget)->Self{
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
let target=wgpu::SurfaceTarget::Canvas(canvas);
|
||||
#[expect(unused)]
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
let target=panic!("{canvas:?}");
|
||||
#[allow(unused)]
|
||||
target
|
||||
}
|
||||
}
|
||||
|
||||
async fn setup_and_start(canvas:web_sys::HtmlCanvasElement)->(wgpu::Device,wgpu::Queue,wgpu::Surface<'static>,wgpu::SurfaceConfiguration){
|
||||
let size=(canvas.width(),canvas.height());
|
||||
|
||||
println!("Initializing the surface...");
|
||||
|
||||
let instance=setup::step1::create_instance();
|
||||
|
||||
let surface=setup::step2::create_surface(&instance,ToSurfaceTarget{canvas}).unwrap();
|
||||
|
||||
let adapter=setup::step3::pick_adapter(&instance,&surface).await.expect("No suitable GPU adapters found on the system!");
|
||||
|
||||
let (device,queue)=setup::step4::request_device(&adapter).await;
|
||||
|
||||
let config=setup::step5::configure_surface(&adapter,&device,&surface,size);
|
||||
|
||||
(
|
||||
device,
|
||||
queue,
|
||||
surface,
|
||||
config,
|
||||
)
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub struct Setup{
|
||||
@@ -14,7 +50,7 @@ pub struct Setup{
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
pub async fn setup(canvas:web_sys::HtmlCanvasElement)->Setup{
|
||||
let (device,queue,surface,config)=setup::setup_and_start(canvas).await;
|
||||
let (device,queue,surface,config)=setup_and_start(canvas).await;
|
||||
Setup{device,queue,surface,config}
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
|
||||
Reference in New Issue
Block a user