pub struct ProofEngine {
pub config: EngineConfig,
pub scene: SceneGraph,
pub camera: ProofCamera,
pub input: InputState,
pub audio: Option<AudioEngine>,
/* private fields */
}Expand description
The main engine struct. Create once, run forever.
Fields§
§config: EngineConfig§scene: SceneGraph§camera: ProofCamera§input: InputState§audio: Option<AudioEngine>Optional audio engine — None if no output device is available.
Implementations§
Source§impl ProofEngine
impl ProofEngine
Sourcepub fn run_game<G: ProofGame>(game: G)
pub fn run_game<G: ProofGame>(game: G)
Run the engine with a ProofGame implementation.
This is the preferred entry point for games that implement ProofGame.
It calls on_start(), runs the game loop calling update() each frame,
then calls on_stop() on clean exit.
use proof_engine::prelude::*;
use proof_engine::integration::ProofGame;
struct MyGame;
impl ProofGame for MyGame {
fn title(&self) -> &str { "My Game" }
fn update(&mut self, _engine: &mut ProofEngine, _dt: f32) {}
}
ProofEngine::run_game(MyGame);Source§impl ProofEngine
impl ProofEngine
Source§impl ProofEngine
impl ProofEngine
pub fn new(config: EngineConfig) -> Self
Sourcepub fn emit_audio(&self, event: AudioEvent)
pub fn emit_audio(&self, event: AudioEvent)
Send an audio event. No-op if audio is unavailable.
Sourcepub fn run<F>(&mut self, update: F)
pub fn run<F>(&mut self, update: F)
Run the engine. Calls update every frame with elapsed seconds.
Blocks until the window is closed.
Sourcepub fn run_with_overlay<F>(&mut self, update: F)
pub fn run_with_overlay<F>(&mut self, update: F)
Run the engine with an overlay callback. The overlay callback receives the glow GL context reference and is called AFTER scene rendering but BEFORE buffer swap — perfect for egui.
Sourcepub fn add_field(&mut self, field: ForceField) -> FieldId
pub fn add_field(&mut self, field: ForceField) -> FieldId
Add a force field to the scene.
Sourcepub fn remove_field(&mut self, id: FieldId)
pub fn remove_field(&mut self, id: FieldId)
Remove a force field.
Sourcepub fn spawn_glyph(&mut self, glyph: Glyph) -> GlyphId
pub fn spawn_glyph(&mut self, glyph: Glyph) -> GlyphId
Spawn a glyph into the scene.
Sourcepub fn spawn_entity(&mut self, entity: AmorphousEntity) -> EntityId
pub fn spawn_entity(&mut self, entity: AmorphousEntity) -> EntityId
Spawn an amorphous entity, creating its formation glyphs.
Sourcepub fn emit_particles(&mut self, emitter: EmitterPreset, origin: Vec3)
pub fn emit_particles(&mut self, emitter: EmitterPreset, origin: Vec3)
Emit a burst of particles at a position.
Sourcepub fn add_trauma(&mut self, amount: f32)
pub fn add_trauma(&mut self, amount: f32)
Apply trauma (screen shake). 0.0 = none, 1.0 = maximum.
Source§impl ProofEngine
Request quit on next frame.
impl ProofEngine
Request quit on next frame.
pub fn request_quit(&mut self)
Sourcepub fn gl(&self) -> Option<&Context>
pub fn gl(&self) -> Option<&Context>
Get a reference to the glow GL context (for egui integration). Returns None if the pipeline hasn’t been initialized yet.
Sourcepub fn window(&self) -> Option<&Window>
pub fn window(&self) -> Option<&Window>
Get the window reference (for egui-winit event processing).
Sourcepub fn window_size(&self) -> (u32, u32)
pub fn window_size(&self) -> (u32, u32)
Get the current window size in pixels.
Auto Trait Implementations§
impl !Freeze for ProofEngine
impl !RefUnwindSafe for ProofEngine
impl !Send for ProofEngine
impl !Sync for ProofEngine
impl Unpin for ProofEngine
impl UnsafeUnpin for ProofEngine
impl !UnwindSafe for ProofEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.