forked from StrafesNET/roblox-bot-player
update graphics
This commit is contained in:
@@ -2,7 +2,7 @@ use wasm_bindgen::prelude::wasm_bindgen;
|
||||
use wasm_bindgen::JsError;
|
||||
use strafesnet_roblox_bot_file::v0;
|
||||
use strafesnet_roblox_bot_player::{bot,head,time,graphics};
|
||||
use strafesnet_graphics::setup;
|
||||
use strafesnet_graphics::{setup,surface};
|
||||
|
||||
// Hack to keep the code compiling,
|
||||
// SurfaceTarget::Canvas is not available in IDE for whatever reason.
|
||||
@@ -22,11 +22,13 @@ impl From<ToSurfaceTarget> for wgpu::SurfaceTarget<'static>{
|
||||
#[wasm_bindgen]
|
||||
pub struct Graphics{
|
||||
graphics:graphics::Graphics,
|
||||
surface:wgpu::Surface<'static>,
|
||||
surface:surface::Surface<'static>,
|
||||
device:wgpu::Device,
|
||||
queue:wgpu::Queue,
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
pub async fn setup_graphics(canvas:web_sys::HtmlCanvasElement)->Result<Graphics,JsError>{
|
||||
let size=(canvas.width(),canvas.height());
|
||||
let size=glam::uvec2(canvas.width(),canvas.height());
|
||||
|
||||
let instance_desc=wgpu::InstanceDescriptor::from_env_or_default();
|
||||
let instance=wgpu::util::new_instance_with_webgpu_detection(&instance_desc).await;
|
||||
@@ -37,10 +39,12 @@ pub async fn setup_graphics(canvas:web_sys::HtmlCanvasElement)->Result<Graphics,
|
||||
compatible_surface:Some(&surface),
|
||||
}).await.map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let (device,queue)=setup::step4::request_device(&adapter).await.map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let config=setup::step5::configure_surface(&adapter,&device,&surface,size).map_err(|e|JsError::new(&e.to_string()))?;
|
||||
let surface=setup::step5::configure_surface(&adapter,&device,surface,(size.x,size.y)).map_err(|e|JsError::new(&e.to_string()))?;
|
||||
Ok(Graphics{
|
||||
graphics:graphics::Graphics::new(device,queue,config),
|
||||
surface:surface,
|
||||
graphics:graphics::Graphics::new(&device,&queue,size,surface.view_format()),
|
||||
surface,
|
||||
device,
|
||||
queue,
|
||||
})
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
@@ -49,15 +53,21 @@ impl Graphics{
|
||||
pub fn render(&mut self,bot:&CompleteBot,head:&PlaybackHead,time:f64){
|
||||
let time=time::from_float(time).unwrap();
|
||||
let (pos,angles)=head.head.get_position_angles(&bot.bot,time);
|
||||
self.graphics.render(&self.surface,pos,angles);
|
||||
let frame=self.surface.new_frame(&self.device);
|
||||
let mut encoder=self.device.create_command_encoder(&wgpu::CommandEncoderDescriptor{label:None});
|
||||
self.graphics.encode_commands(&mut encoder,frame.view(),pos,angles);
|
||||
self.queue.submit([encoder.finish()]);
|
||||
frame.present();
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
pub fn resize(&mut self,width:u32,height:u32,fov_slope_x:f32,fov_slope_y:f32){
|
||||
self.graphics.resize(&self.surface,[width,height].into(),[fov_slope_x as f32,fov_slope_y as f32].into());
|
||||
let size=[width,height].into();
|
||||
self.surface.configure(&self.device,size);
|
||||
self.graphics.resize(&self.device,size,[fov_slope_x as f32,fov_slope_y as f32].into());
|
||||
}
|
||||
#[wasm_bindgen]
|
||||
pub fn change_map(&mut self,map:&CompleteMap){
|
||||
self.graphics.change_map(&map.map);
|
||||
self.graphics.change_map(&self.device,&self.queue,&map.map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user