pub struct EngineBuilder { /* private fields */ }Expand description
A builder class that helps create an application with specific details
Implementations§
Source§impl EngineBuilder
impl EngineBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a builder with some defualt presets
Self {
resolution: (600, 600),
full_screen: false,
target_fps: 30,
close_key: None,
window_icon: None,
window_title: "Bottonless-Pit Game".into(),
resizable: true,
vysnc: false,
}Examples found in repository?
More examples
examples/debug_triangle.rs (line 10)
9fn main() {
10 let mut engine = EngineBuilder::new()
11 .with_resolution((400, 400))
12 .build()
13 .unwrap();
14
15 let material = MaterialBuilder::new().build(&mut engine);
16
17 let pos = DebugTriangle { material };
18
19 engine.run(pos);
20}examples/input.rs (line 10)
9fn main() {
10 let engine = EngineBuilder::new().build().unwrap();
11
12 let text_mat = TextMaterial::new("this is a test", Colour::RED, 20.0, 20.0 * 1.3);
13
14 let text_example = TextExample {
15 text_mat,
16 text: String::new(),
17 };
18
19 engine.run(text_example);
20}examples/text.rs (line 12)
11fn main() {
12 let mut engine = EngineBuilder::new().build().unwrap();
13
14 let comic = Font::new("examples/Comic.ttf", &mut engine, LoadingOp::Blocking);
15 let text_mat = TextMaterial::new("this is a test", Colour::RED, 0.5, 0.5 * 1.3);
16
17 let text_example = TextExample {
18 text_mat,
19 comic,
20 font_size: 0.5,
21 };
22
23 engine.run(text_example);
24}examples/rectangles.rs (line 13)
12fn main() {
13 let mut engine = EngineBuilder::new().build().unwrap();
14
15 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
16
17 let texture_material = MaterialBuilder::new()
18 .add_texture(texture)
19 .build(&mut engine);
20 let regular_material = MaterialBuilder::new().build(&mut engine);
21
22 let pos = Position {
23 pos: vec2! { 0.0 },
24 regular_material,
25 texture_material,
26 state: false,
27 };
28
29 engine.run(pos);
30}examples/camera.rs (line 14)
13fn main() {
14 let mut engine = EngineBuilder::new().build().unwrap();
15
16 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
17
18 let material = MaterialBuilder::new()
19 .add_texture(texture)
20 .build(&mut engine);
21
22 let camera = Camera::default();
23
24 let text = TextMaterial::new(
25 "Mouse pos: 0,0 \n Mouse pos: 0, 0",
26 Colour::WHITE,
27 15.0,
28 20.0,
29 );
30
31 let game = CameraExample {
32 material,
33 text,
34 camera,
35 };
36
37 engine.run(game);
38}Additional examples can be found in:
Sourcepub fn with_resolution(self, resolution: (u32, u32)) -> Self
pub fn with_resolution(self, resolution: (u32, u32)) -> Self
Overides the defualt resolution
Examples found in repository?
examples/debug_triangle.rs (line 11)
9fn main() {
10 let mut engine = EngineBuilder::new()
11 .with_resolution((400, 400))
12 .build()
13 .unwrap();
14
15 let material = MaterialBuilder::new().build(&mut engine);
16
17 let pos = DebugTriangle { material };
18
19 engine.run(pos);
20}More examples
examples/texture.rs (line 15)
12fn main() {
13 let mut engine = EngineBuilder::new()
14 .set_window_title("Testing Triangle")
15 .with_resolution((400, 400))
16 .build()
17 .unwrap();
18
19 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
20
21 let texture = MaterialBuilder::new()
22 .add_texture(texture)
23 .build(&mut engine);
24 let defualt = MaterialBuilder::new().build(&mut engine);
25
26 let s = TextureExample {
27 current: texture,
28 other: defualt,
29 pos: vec2! { 0.0 },
30 };
31
32 engine.run(s);
33}examples/ngon.rs (line 18)
16fn main() {
17 let mut engine = EngineBuilder::new()
18 .with_resolution((500, 500))
19 .remove_vsync()
20 .build()
21 .unwrap();
22
23 let data = Time {
24 time: 0.0,
25 _pading: 0.0,
26 _padding2: 0.0,
27 _padding4: 0.0,
28 };
29
30 let uniform_data = UniformData::new(&data);
31
32 let mouse_shader = Shader::new(
33 "examples/sinewaves.wgsl",
34 ShaderOptions::with_uniform_data(&uniform_data),
35 &mut engine,
36 LoadingOp::Blocking,
37 );
38
39 let regular_material = MaterialBuilder::new()
40 .set_shader(mouse_shader)
41 .build(&mut engine);
42
43 let pos = Position {
44 regular_material,
45 time: data,
46 };
47
48 engine.run(pos);
49}examples/lightmap.rs (line 18)
15fn main() {
16 let mut engine = EngineBuilder::new()
17 .set_window_title("Lightmap")
18 .with_resolution((800, 800))
19 .build()
20 .unwrap();
21
22 let uniform_texture = UniformTexture::new(&engine, engine.get_window_size());
23
24 let light = Light {
25 colour: Colour::ORANGE,
26 pos_x: 0.0,
27 pos_y: 0.0,
28 brightness: 0.75,
29 aspect_ratio: 1.0,
30 };
31
32 let light_data = UniformData::new(&light);
33
34 let shader_options = ShaderOptions::with_all(&light_data, &uniform_texture);
35 let light_shader = Shader::new(
36 "examples/light.wgsl",
37 shader_options,
38 &mut engine,
39 LoadingOp::Blocking,
40 );
41
42 let material = MaterialBuilder::new()
43 .set_shader(light_shader)
44 .build(&mut engine);
45
46 let ocluder_material = MaterialBuilder::new().build(&mut engine);
47
48 let rectangles = vec![
49 Rectangle::new(Vec2 { x: 120.0, y: 20.0 }, Vec2 { x: 50.0, y: 50.0 }),
50 Rectangle::new(Vec2 { x: 270.0, y: 70.0 }, Vec2 { x: 50.0, y: 50.0 }),
51 Rectangle::new(Vec2 { x: 130.0, y: 280.0 }, Vec2 { x: 50.0, y: 50.0 }),
52 Rectangle::new(Vec2 { x: 220.0, y: 300.0 }, Vec2 { x: 50.0, y: 50.0 }),
53 Rectangle::new(Vec2 { x: 350.0, y: 350.0 }, Vec2 { x: 100.0, y: 100.0 }),
54 ];
55
56 let s = TextureExample {
57 material,
58 ocluder_material,
59 light,
60 uniform_texture,
61 rectangles,
62 mouse_pos: ZEROS,
63 };
64
65 engine.run(s);
66}Sourcepub fn fullscreen(self) -> Self
pub fn fullscreen(self) -> Self
Will cause the window to be fullscreen upon launch
Sourcepub fn set_target_fps(self, fps: u16) -> Self
pub fn set_target_fps(self, fps: u16) -> Self
Sets a target fps cap. The thread will spin sleep using the spin_sleep crate untill the desired frame time is reached. If the frames are slower than the target no action is taken to “speed” up the rendering and updating
Sourcepub fn remove_vsync(self) -> Self
pub fn remove_vsync(self) -> Self
Will cause the framerate to be uncapped if the platform supports it using wgpu’s PresentMode::AutoNoVsync by defualt the engine uses PresentMode::AutoVsync
Examples found in repository?
examples/ngon.rs (line 19)
16fn main() {
17 let mut engine = EngineBuilder::new()
18 .with_resolution((500, 500))
19 .remove_vsync()
20 .build()
21 .unwrap();
22
23 let data = Time {
24 time: 0.0,
25 _pading: 0.0,
26 _padding2: 0.0,
27 _padding4: 0.0,
28 };
29
30 let uniform_data = UniformData::new(&data);
31
32 let mouse_shader = Shader::new(
33 "examples/sinewaves.wgsl",
34 ShaderOptions::with_uniform_data(&uniform_data),
35 &mut engine,
36 LoadingOp::Blocking,
37 );
38
39 let regular_material = MaterialBuilder::new()
40 .set_shader(mouse_shader)
41 .build(&mut engine);
42
43 let pos = Position {
44 regular_material,
45 time: data,
46 };
47
48 engine.run(pos);
49}Sourcepub fn set_close_key(self, key: Key) -> Self
pub fn set_close_key(self, key: Key) -> Self
Sets a key that will instantly close the window
Sourcepub fn set_window_title(self, title: &str) -> Self
pub fn set_window_title(self, title: &str) -> Self
Sets the title of the window
Examples found in repository?
examples/texture.rs (line 14)
12fn main() {
13 let mut engine = EngineBuilder::new()
14 .set_window_title("Testing Triangle")
15 .with_resolution((400, 400))
16 .build()
17 .unwrap();
18
19 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
20
21 let texture = MaterialBuilder::new()
22 .add_texture(texture)
23 .build(&mut engine);
24 let defualt = MaterialBuilder::new().build(&mut engine);
25
26 let s = TextureExample {
27 current: texture,
28 other: defualt,
29 pos: vec2! { 0.0 },
30 };
31
32 engine.run(s);
33}More examples
examples/lightmap.rs (line 17)
15fn main() {
16 let mut engine = EngineBuilder::new()
17 .set_window_title("Lightmap")
18 .with_resolution((800, 800))
19 .build()
20 .unwrap();
21
22 let uniform_texture = UniformTexture::new(&engine, engine.get_window_size());
23
24 let light = Light {
25 colour: Colour::ORANGE,
26 pos_x: 0.0,
27 pos_y: 0.0,
28 brightness: 0.75,
29 aspect_ratio: 1.0,
30 };
31
32 let light_data = UniformData::new(&light);
33
34 let shader_options = ShaderOptions::with_all(&light_data, &uniform_texture);
35 let light_shader = Shader::new(
36 "examples/light.wgsl",
37 shader_options,
38 &mut engine,
39 LoadingOp::Blocking,
40 );
41
42 let material = MaterialBuilder::new()
43 .set_shader(light_shader)
44 .build(&mut engine);
45
46 let ocluder_material = MaterialBuilder::new().build(&mut engine);
47
48 let rectangles = vec![
49 Rectangle::new(Vec2 { x: 120.0, y: 20.0 }, Vec2 { x: 50.0, y: 50.0 }),
50 Rectangle::new(Vec2 { x: 270.0, y: 70.0 }, Vec2 { x: 50.0, y: 50.0 }),
51 Rectangle::new(Vec2 { x: 130.0, y: 280.0 }, Vec2 { x: 50.0, y: 50.0 }),
52 Rectangle::new(Vec2 { x: 220.0, y: 300.0 }, Vec2 { x: 50.0, y: 50.0 }),
53 Rectangle::new(Vec2 { x: 350.0, y: 350.0 }, Vec2 { x: 100.0, y: 100.0 }),
54 ];
55
56 let s = TextureExample {
57 material,
58 ocluder_material,
59 light,
60 uniform_texture,
61 rectangles,
62 mouse_pos: ZEROS,
63 };
64
65 engine.run(s);
66}Sourcepub fn set_window_icon(self, icon: Icon) -> Self
pub fn set_window_icon(self, icon: Icon) -> Self
Sets the window icon
Sourcepub fn unresizable(self) -> Self
pub fn unresizable(self) -> Self
Prevents the window from being resized during runtime
Sourcepub fn build(self) -> Result<Engine, BuildError>
pub fn build(self) -> Result<Engine, BuildError>
Attempts to buld the Engine
Examples found in repository?
More examples
examples/debug_triangle.rs (line 12)
9fn main() {
10 let mut engine = EngineBuilder::new()
11 .with_resolution((400, 400))
12 .build()
13 .unwrap();
14
15 let material = MaterialBuilder::new().build(&mut engine);
16
17 let pos = DebugTriangle { material };
18
19 engine.run(pos);
20}examples/input.rs (line 10)
9fn main() {
10 let engine = EngineBuilder::new().build().unwrap();
11
12 let text_mat = TextMaterial::new("this is a test", Colour::RED, 20.0, 20.0 * 1.3);
13
14 let text_example = TextExample {
15 text_mat,
16 text: String::new(),
17 };
18
19 engine.run(text_example);
20}examples/text.rs (line 12)
11fn main() {
12 let mut engine = EngineBuilder::new().build().unwrap();
13
14 let comic = Font::new("examples/Comic.ttf", &mut engine, LoadingOp::Blocking);
15 let text_mat = TextMaterial::new("this is a test", Colour::RED, 0.5, 0.5 * 1.3);
16
17 let text_example = TextExample {
18 text_mat,
19 comic,
20 font_size: 0.5,
21 };
22
23 engine.run(text_example);
24}examples/rectangles.rs (line 13)
12fn main() {
13 let mut engine = EngineBuilder::new().build().unwrap();
14
15 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
16
17 let texture_material = MaterialBuilder::new()
18 .add_texture(texture)
19 .build(&mut engine);
20 let regular_material = MaterialBuilder::new().build(&mut engine);
21
22 let pos = Position {
23 pos: vec2! { 0.0 },
24 regular_material,
25 texture_material,
26 state: false,
27 };
28
29 engine.run(pos);
30}examples/camera.rs (line 14)
13fn main() {
14 let mut engine = EngineBuilder::new().build().unwrap();
15
16 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
17
18 let material = MaterialBuilder::new()
19 .add_texture(texture)
20 .build(&mut engine);
21
22 let camera = Camera::default();
23
24 let text = TextMaterial::new(
25 "Mouse pos: 0,0 \n Mouse pos: 0, 0",
26 Colour::WHITE,
27 15.0,
28 20.0,
29 );
30
31 let game = CameraExample {
32 material,
33 text,
34 camera,
35 };
36
37 engine.run(game);
38}Additional examples can be found in:
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EngineBuilder
impl RefUnwindSafe for EngineBuilder
impl Send for EngineBuilder
impl Sync for EngineBuilder
impl Unpin for EngineBuilder
impl UnwindSafe for EngineBuilder
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more