Source code for mini_arcade_core.engine.render.context
"""
Render context and stats for a single frame render.
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any
from mini_arcade_core.engine.render.viewport import ViewportState
[docs]
@dataclass
class RenderStats:
"""
Statistics about the rendering process for a single frame.
:ivar packets (int): Number of render packets processed.
:ivar ops (int): Number of rendering operations executed.
:ivar draw_groups (int): Number of draw groups processed.
:ivar renderables (int): Number of renderable objects processed.
"""
packets: int = 0
ops: int = 0
draw_groups: int = 0 # approx ok
renderables: int = 0
[docs]
@dataclass
class RenderContext:
"""
Context for rendering a single frame.
:ivar viewport: ViewportState: Current viewport state.
:ivar debug_overlay: bool: Whether to render debug overlays.
:ivar frame_ms: float: Time taken to render the frame in milliseconds.
:ivar stats: RenderStats: Statistics about the rendering process.
:ivar meta: dict[str, Any]: Additional metadata for rendering.
"""
viewport: ViewportState
debug_overlay: bool = False
frame_ms: float = 0.0
stats: RenderStats = field(default_factory=RenderStats)
meta: dict[str, Any] = field(default_factory=dict)