Scene
Handles all events and rendering for the engine.
Warning
Do not override __init__ in subclasses. Use on_init instead.
All Scene objects/instances are managed and created internally by the Engine. At no point will any developer need to do anything more than define a subclass of Scene.
engine
instance-attribute
engine: 'Engine' = engine
The engine running the scene.
screen
instance-attribute
The screen rendering all objects.
frame
instance-attribute
The UI frame responsible for handling all scene UI objects natively - Rendered each frame after on_render automatically, unless disabled.
on_cleanup
on_cleanup() -> None
Code below should be executed when the scene is being switched/cleaned up
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_cleanup(self) -> None:
... # Terminate background threads, save data, etc.
on_first
on_first() -> None
Code below should be executed when the scene is about to start rendering
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_first(self) -> None:
... # Start game timers, etc.
on_fixed_update
on_fixed_update() -> None
Code below should be executed every configurable, elapsed duration before objects are rendered to provide updates to instance states.
Info
This only runs on a certain configured duration, by default 60 times/second. If you wish to run this every frame, use on_update.
Tip
If you wish to change the duration of the fixed update, use engine.set_update_interval.
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_fixed_update(self) -> None:
... # Update positions, text, etc.
on_init
on_init(*args, **kwargs) -> None
Code below should be executed after the instance has been initialized by the engine.
Info
This should be treated as any other __init__ method.
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
# Initialize variables, logic, etc.
...
on_joystick_axis_motion
Code below should be executed when a joystick's axis moves
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_axis_motion(self, stick:int, axis:int, position:float) -> None:
...
on_joystick_button_down
Code below should be executed when a joystick's button gets pressed
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_button_down(self, stick:int, button:int) -> None:
...
on_joystick_button_up
Code below should be executed when a joystick's button gets released
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_button_up(self, stick:int, button:int) -> None:
...
on_joystick_device_added
on_joystick_device_added(device: int) -> None
Code below should be executed when a new joystick device is added
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_device_added(self, device:int) -> None:
...
on_joystick_device_removed
on_joystick_device_removed(device: int) -> None
Code below should be executed when an old joystick device is removed
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_device_removed(self, device:int) -> None:
...
on_joystick_hat_motion
on_joystick_hat_motion(
stick: int, hat: int, position: IntVector2
) -> None
Code below should be executed when a joystick's hat/D-Pad moves
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_joystick_hat_motion(self, stick:int, hat:int, position:wame.IntVector2) -> None:
...
on_key_pressed
Code below should be executed when a key is pressed
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_key_pressed(self, key:int, mods:int) -> None:
... # Pause game, display UI, etc.
on_key_pressing
Code below should be executed when a key is being pressed
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_key_pressing(self, key:int, mods:int) -> None:
... # Move forward, honk horn, etc.
on_key_released
Code below should be executed when a key is released
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_key_released(self, key:int, mods:int) -> None:
... # Stop moving forward, etc.
on_mouse_move
on_mouse_move(
mouse_position: IntVector2, relative: IntVector2
) -> None
Code below should be executed when the mouse moves
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_mouse_move(self, mouse_position:wame.IntVector2, relative:wame.IntVector2) -> None:
print(f"Mouse was moved {relative} amount @ {mouse_position}")
on_mouse_pressed
on_mouse_pressed(
mouse_position: IntVector2, button: int
) -> None
Code below should be executed when a mouse button was pressed
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_mouse_pressed(self, mouse_position:wame.IntVector2, button:int) -> None:
... # Start shooting, rotate character, etc.
on_mouse_released
on_mouse_released(
mouse_position: IntVector2, button: int
) -> None
Code below should be executed when a mouse button was released
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_mouse_released(self, mouse_position:wame.IntVector2, button:int) -> None:
... # Shoot arrow, stop shooting, etc.
on_mouse_wheel_scroll
on_mouse_wheel_scroll(
mouse_position: IntVector2, amount: int
) -> None
Code below should be executed when the scroll wheel moves
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_mouse_wheel_scroll(self, mouse_position:wame.IntVector2, amount:int) -> None:
if amount > 0:
print(f"Scroll wheel moved up @ {mouse_position}!")
else:
print(f"Scroll wheel moved down @ {mouse_position}!")
on_user_event
Code below should be executed when a custom user event is called
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_user_event(self, event:pygame.event.Event) -> None:
...
on_window_close
on_window_close() -> None
Code below should be executed when the window is requested to close
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_close(self) -> None:
...
on_window_display_changed
on_window_display_changed() -> None
Code below should be executed when the window's display/monitor changes
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_display_changed(self) -> None:
...
on_window_focus_gained
on_window_focus_gained() -> None
Code below should be executed when the window gains focus
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_focus_gained(self) -> None:
...
on_window_focus_lost
on_window_focus_lost() -> None
Code below should be executed when the window loses focus
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_focus_lost(self) -> None:
...
on_window_hidden
on_window_hidden() -> None
Code below should be executed when the window is hidden
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_hidden(self) -> None:
...
on_window_maximized
on_window_maximized() -> None
Code below should be executed when the window gets maximized
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_maximized(self) -> None:
...
on_window_minimized
on_window_minimized() -> None
Code below should be executed when the window gets minimized
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_minimized(self) -> None:
...
on_window_mouse_enter
on_window_mouse_enter() -> None
Code below should be executed when the mouse enters the window
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_mouse_enter(self) -> None:
...
on_window_mouse_leave
on_window_mouse_leave() -> None
Code below should be executed when the mouse leaves the window
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_mouse_leave(self) -> None:
...
on_window_moved
on_window_moved(position: IntVector2) -> None
Code below should be executed when the window moves
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_moved(self, position:wame.IntVector2) -> None:
...
on_window_resize
on_window_resize(size: IntVector2) -> None
Code below should be executed when the window is resized
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_resize(self, size:wame.IntVector2) -> None:
... # Edit OpenGL viewport, etc.
on_window_restored
on_window_restored() -> None
Code below should be executed when the window is restored from a minimized or maximized state
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_restored(self) -> None:
...
on_window_shown
on_window_shown() -> None
Code below should be executed when window becomes visible
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_window_shown(self) -> None:
...
on_render
on_render() -> None
Code below should be executed every frame to render all objects after being updated
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_render(self) -> None:
... # Render text, objects, etc.
on_update
on_update() -> None
Code below should be executed every frame before objects are rendered to provide updates to instance states
Example
class MyScene(wame.Scene):
def on_init(self, *args, **kwargs) -> None:
...
def on_update(self) -> None:
... # Update positions, text, etc.