No documentation
FIRE: Any = 'fire'
WATER: Any = 'water'
SMOKE: Any = 'smoke'
DUST: Any = 'dust'
SPARK: Any = 'spark'
SNOW: Any = 'snow'
SAND: Any = 'sand'
EXHAUST: Any = 'exhaust'
STARFIELD: Any = 'starfield'
EXPLOSION: Any = 'explosion'
ENERGY: Any = 'energy'
PLASMA: Any = 'plasma'
ANTIMATTER: Any = 'antimatter'
RADIOACTIVE: Any = 'radioactive'
MAGIC: Any = 'magic'
BUBBLE: Any = 'bubble'
LEAF: Any = 'leaf'
RAIN: Any = 'rain'
CUSTOM: Any = 'custom'
No methods defined.
No documentation
TOP: Any = 'top'
BOTTOM: Any = 'bottom'
LEFT: Any = 'left'
RIGHT: Any = 'right'
CENTER: Any = 'center'
CIRCULAR: Any = 'circular'
No methods defined.
No documentation
TOPDOWN: Any = 'topdown'
PLATFORMER: Any = 'platformer'
SPACESHOOTER: Any = 'spaceshooter'
No methods defined.
No documentation
color_start: Tuple[int, int, int] = (255, 255, 255)
color_end: Tuple[int, int, int] = (255, 255, 255)
size_start: float = 4.0
size_end: float = 4.0
lifetime: float = 1.0
speed: float = 100.0
gravity: float = 98.0
damping: float = 0.98
fade_out: bool = True
grow: bool = False
spread: float = 45.0
No methods defined.
CPU-based particle system using NumPy arrays.
All physics updates happen when you call update().
def __init__(self: Any, max_particles: int) -> Any
def _init_arrays(self: Any) -> Any
def get_particles_names(self: Any, sort_name: bool = False, capitalize: bool = False) -> List[str]
def get_physics_names(self: Any, sort_name: bool = False, capitalize: bool = False) -> List[str]
def register_custom_particle(self: Any, name: str, config: ParticleConfig) -> Any
def get_custom_particle(self: Any, name: str) -> Optional[ParticleConfig]
def list_custom_particles(self: Any) -> List[str]
def update_max_particles(self: Any, new_max: int) -> Any
def get_render_data(self: Any) -> Dict[str, Any]
def emit(self: Any, x: float, y: float, particle_type: Union[ParticleType, str], count: int = 1, exit_point: ExitPoint = ExitPoint.CENTER, physics_type: PhysicsType = PhysicsType.TOPDOWN, spread: Optional[float] = None, angle: float = 0.0, custom_config: Optional[ParticleConfig] = None) -> Any
def update(self: Any, dt: float) -> Any
def clear(self: Any) -> Any
def get_stats(self: Any) -> Dict[str, Any]
def _resolve_config(self: Any, particle_type: Union[ParticleType, str], custom_config: Optional[ParticleConfig]) -> Optional[ParticleConfig]
def _get_exit_position(self: Any, x: float, y: float, exit_point: ExitPoint, offset: float) -> Tuple[float, float]
def _get_initial_velocity(self: Any, config: ParticleConfig, exit_point: ExitPoint, spread: float, base_angle: float) -> Tuple[float, float]
def _update_properties(self: Any, indices: np.ndarray) -> Any
ParticleSystem variant that updates physics in a separate thread.
The main thread's update() call becomes a no‑op – the thread runs
continuously at a fixed timestep.
Also provides a render(camera) method that uses the renderer passed
during construction, making it a drop‑in replacement for the old
GPUParticleSystem.
def __init__(self: Any, renderer: Any, max_particles: int, target_fps: int = 60, auto_start: bool = True) -> Any
def start_thread(self: Any) -> Any
def stop_thread(self: Any, join: bool = True) -> Any
def _thread_loop(self: Any) -> Any
def update(self: Any, dt: float) -> Any
def emit(self: Any, *args: tuple, **kwargs: dict) -> Any
def clear(self: Any) -> Any
def update_max_particles(self: Any, new_max: int) -> Any
def get_render_data(self: Any) -> Dict[str, Any]
def get_stats(self: Any) -> Dict[str, Any]
def render(self: Any, camera: Any) -> Any
def __del__(self: Any) -> Any