# Released under the MIT License. See LICENSE for details.
#
# AUTO-GENERATED by `tools/pcommand gen_scene_asset_set_py`.
# DO NOT EDIT BY HAND.
#
# Generated from src/codegen/bascenev1codegen/scene_assets.py.
"""Supplying scene_v1 with the assets it draws itself with."""
from __future__ import annotations # Docs-generation hack.
from typing import TYPE_CHECKING
import _bascenev1
from bascenev1 import _scenev1assets
from bascenev1 import _classiccharacterassets
from bascenev1 import _commonassets
from bascenev1 import _classiccatalogassets
if TYPE_CHECKING:
from bascenev1._assetref import (
MeshHandle,
SoundHandle,
TextureHandle,
)
[docs]
class SceneV1AssetSet:
"""The assets the scene_v1 node layer draws itself with.
An app-mode using scene_v1 carries one of these on its
app-mode config and hands it to
:func:`bascenev1.set_scene_asset_set` when activating,
which is what lets an app-mode (or a plugin amending its
config) reskin the art scene_v1 nodes draw themselves
with.
Slots hold asset *handles*, not loaded assets; nothing
loads until the set is applied at activation, so art that
gets replaced is never loaded at all. Every slot defaults
to scene_v1's own art, so a bare ``SceneV1AssetSet()`` is
complete and a supplier names only what it changes.
"""
# One attr per slot is the whole point of this class; the
# complexity limits are aimed at hand-written code where
# this shape signals trouble.
# pylint: disable=too-many-instance-attributes
# -- Art and sounds scene_v1 nodes draw and play themselves with --
# character features, flag poles, shields, locators and effects.
#: Opaque filled circle (locator fills).
circle_no_alpha: TextureHandle
#: Circle outline (locators).
circle_outline: TextureHandle
#: Opaque circle outline (locators).
circle_outline_no_alpha: TextureHandle
#: Explosion flash billboard.
explosion: TextureHandle
#: Character eyeball color map.
eye_color: TextureHandle
#: Tint mask for character eye color.
eye_color_tint_mask: TextureHandle
#: RGB stripe pattern used by character billboards.
rgb_stripes: TextureHandle
#: Ground scorch mark.
scorch: TextureHandle
#: Large ground scorch mark.
scorch_big: TextureHandle
#: Energy shield surface.
shield: TextureHandle
#: Character wings color map.
wings: TextureHandle
#: Cross-out marker mesh.
cross_out: MeshHandle
#: Character eyeball.
eye_ball: MeshHandle
#: Character eyeball iris.
eye_ball_iris: MeshHandle
#: Character eye lid.
eye_lid: MeshHandle
#: Flag pole.
flag_pole: MeshHandle
#: Billboard flash burst.
flash: MeshHandle
#: Character hair tuft (style 1).
hair_tuft1: MeshHandle
#: Character hair tuft (style 1b).
hair_tuft1b: MeshHandle
#: Character hair tuft (style 2).
hair_tuft2: MeshHandle
#: Character hair tuft (style 3).
hair_tuft3: MeshHandle
#: Character hair tuft (style 4).
hair_tuft4: MeshHandle
#: Full-screen square image sheet.
image1x1_full_screen: MeshHandle
#: Full-screen square image sheet (VR variant).
image1x1_vrfull_screen: MeshHandle
#: Ground locator marker.
locator: MeshHandle
#: Box-shaped ground locator.
locator_box: MeshHandle
#: Circular ground locator.
locator_circle: MeshHandle
#: Circular ground locator outline.
locator_circle_outline: MeshHandle
#: Ground scorch decal sheet.
scorch_mesh: MeshHandle
#: Energy shield dome.
shield_mesh: MeshHandle
#: Explosion shock-wave ring.
shock_wave: MeshHandle
#: Character wing.
wing: MeshHandle
#: Character sparkle effect 1.
sparkle01: SoundHandle
#: Character sparkle effect 2.
sparkle02: SoundHandle
#: Character sparkle effect 3.
sparkle03: SoundHandle
#: Frantic bomb-ticking loop.
ticking_crazy: SoundHandle
# -- Utility art from the common asset package that the node layer
# leans on directly.
#: Solid black (data role); an identity colorize mask.
black: TextureHandle
# -- What the character display node draws character icons with: the
# shared round shape mask every icon is cut with, and the standard-
# spaz standin icon it shows whenever a definition's own icon art is
# not local (still downloading, unavailable, or not understood).
#: Round shape mask applied to every character icon.
character_icon_mask: TextureHandle
#: Standin (standard spaz) icon.
standin_icon: TextureHandle
#: Standin icon colorize mask.
standin_icon_color_mask: TextureHandle
# -- The standard-spaz look a spaz node wears whenever it has a
# character id but not (yet) that character's own art -- still
# downloading, unavailable, or not understood by this client.
#: Standin character color map.
standin_color: TextureHandle
#: Standin character colorize mask.
standin_color_mask: TextureHandle
#: Standin character head mesh.
standin_head: MeshHandle
#: Standin character torso mesh.
standin_torso: MeshHandle
#: Standin character pelvis mesh.
standin_pelvis: MeshHandle
#: Standin character upper arm mesh.
standin_upper_arm: MeshHandle
#: Standin character forearm mesh.
standin_forearm: MeshHandle
#: Standin character hand mesh.
standin_hand: MeshHandle
#: Standin character upper leg mesh.
standin_upper_leg: MeshHandle
#: Standin character lower leg mesh.
standin_lower_leg: MeshHandle
#: Standin character toes mesh.
standin_toes: MeshHandle
#: Standin character jump sound 1.
standin_jump01: SoundHandle
#: Standin character jump sound 2.
standin_jump02: SoundHandle
#: Standin character jump sound 3.
standin_jump03: SoundHandle
#: Standin character jump sound 4.
standin_jump04: SoundHandle
#: Standin character attack sound 1.
standin_attack01: SoundHandle
#: Standin character attack sound 2.
standin_attack02: SoundHandle
#: Standin character attack sound 3.
standin_attack03: SoundHandle
#: Standin character attack sound 4.
standin_attack04: SoundHandle
#: Standin character impact sound 1.
standin_impact01: SoundHandle
#: Standin character impact sound 2.
standin_impact02: SoundHandle
#: Standin character impact sound 3.
standin_impact03: SoundHandle
#: Standin character impact sound 4.
standin_impact04: SoundHandle
#: Standin character death sound 1.
standin_death01: SoundHandle
#: Standin character pickup sound 1.
standin_pickup01: SoundHandle
#: Standin character fall sound 1.
standin_fall01: SoundHandle
def __init__(self) -> None:
# All slots start at scene_v1's own art (handles only;
# nothing is loaded here).
self.circle_no_alpha = _scenev1assets.textures.circle_no_alpha
self.circle_outline = _scenev1assets.textures.circle_outline
self.circle_outline_no_alpha = (
_scenev1assets.textures.circle_outline_no_alpha
)
self.explosion = _scenev1assets.textures.explosion
self.eye_color = _scenev1assets.textures.eye_color
self.eye_color_tint_mask = _scenev1assets.textures.eye_color_tint_mask
self.rgb_stripes = _scenev1assets.textures.rgb_stripes
self.scorch = _scenev1assets.textures.scorch
self.scorch_big = _scenev1assets.textures.scorch_big
self.shield = _scenev1assets.textures.shield
self.wings = _scenev1assets.textures.wings
self.cross_out = _scenev1assets.meshes.cross_out
self.eye_ball = _scenev1assets.meshes.eye_ball
self.eye_ball_iris = _scenev1assets.meshes.eye_ball_iris
self.eye_lid = _scenev1assets.meshes.eye_lid
self.flag_pole = _scenev1assets.meshes.flag_pole
self.flash = _scenev1assets.meshes.flash
self.hair_tuft1 = _classiccharacterassets.meshes.hair_tuft1
self.hair_tuft1b = _classiccharacterassets.meshes.hair_tuft1b
self.hair_tuft2 = _classiccharacterassets.meshes.hair_tuft2
self.hair_tuft3 = _classiccharacterassets.meshes.hair_tuft3
self.hair_tuft4 = _classiccharacterassets.meshes.hair_tuft4
self.image1x1_full_screen = _scenev1assets.meshes.image1x1_full_screen
self.image1x1_vrfull_screen = (
_scenev1assets.meshes.image1x1_vrfull_screen
)
self.locator = _scenev1assets.meshes.locator
self.locator_box = _scenev1assets.meshes.locator_box
self.locator_circle = _scenev1assets.meshes.locator_circle
self.locator_circle_outline = (
_scenev1assets.meshes.locator_circle_outline
)
self.scorch_mesh = _scenev1assets.meshes.scorch
self.shield_mesh = _scenev1assets.meshes.shield
self.shock_wave = _scenev1assets.meshes.shock_wave
self.wing = _scenev1assets.meshes.wing
self.sparkle01 = _scenev1assets.audio.sparkle01
self.sparkle02 = _scenev1assets.audio.sparkle02
self.sparkle03 = _scenev1assets.audio.sparkle03
self.ticking_crazy = _scenev1assets.audio.ticking_crazy
self.black = _commonassets.textures.black_data
self.character_icon_mask = (
_classiccatalogassets.textures.character_icon_mask
)
self.standin_icon = _classiccharacterassets.textures.neo_spaz_icon
self.standin_icon_color_mask = (
_classiccharacterassets.textures.neo_spaz_icon_color_mask
)
self.standin_color = _classiccharacterassets.textures.neo_spaz_color
self.standin_color_mask = (
_classiccharacterassets.textures.neo_spaz_color_mask
)
self.standin_head = _classiccharacterassets.meshes.neo_spaz_head
self.standin_torso = _classiccharacterassets.meshes.neo_spaz_torso
self.standin_pelvis = _classiccharacterassets.meshes.neo_spaz_pelvis
self.standin_upper_arm = (
_classiccharacterassets.meshes.neo_spaz_upper_arm
)
self.standin_forearm = _classiccharacterassets.meshes.neo_spaz_fore_arm
self.standin_hand = _classiccharacterassets.meshes.neo_spaz_hand
self.standin_upper_leg = (
_classiccharacterassets.meshes.neo_spaz_upper_leg
)
self.standin_lower_leg = (
_classiccharacterassets.meshes.neo_spaz_lower_leg
)
self.standin_toes = _classiccharacterassets.meshes.neo_spaz_toes
self.standin_jump01 = _classiccharacterassets.audio.spaz_jump01
self.standin_jump02 = _classiccharacterassets.audio.spaz_jump02
self.standin_jump03 = _classiccharacterassets.audio.spaz_jump03
self.standin_jump04 = _classiccharacterassets.audio.spaz_jump04
self.standin_attack01 = _classiccharacterassets.audio.spaz_attack01
self.standin_attack02 = _classiccharacterassets.audio.spaz_attack02
self.standin_attack03 = _classiccharacterassets.audio.spaz_attack03
self.standin_attack04 = _classiccharacterassets.audio.spaz_attack04
self.standin_impact01 = _classiccharacterassets.audio.spaz_impact01
self.standin_impact02 = _classiccharacterassets.audio.spaz_impact02
self.standin_impact03 = _classiccharacterassets.audio.spaz_impact03
self.standin_impact04 = _classiccharacterassets.audio.spaz_impact04
self.standin_death01 = _classiccharacterassets.audio.spaz_death01
self.standin_pickup01 = _classiccharacterassets.audio.spaz_pickup01
self.standin_fall01 = _classiccharacterassets.audio.spaz_fall01
[docs]
def set_scene_asset_set(assets: SceneV1AssetSet) -> None:
"""Supply the assets the scene_v1 node layer draws with.
Called by an app-mode during activation (normally from
:meth:`~babase.AppMode.on_activate`, with the
:class:`SceneV1AssetSet` carried by its app-mode config),
before any scene sessions exist. Unlike the ui set this is
supplied on headless builds too -- servers run scenes.
Loading happens native-side as the set is applied, so
replaced defaults are never loaded. The supplied art is
wiped by scene_v1's app-subsystem
:meth:`~babase.AppSubsystem.reset` at every app-mode
switch, so a mode can never inherit a previous mode's art.
"""
# Positional, in spec order -- the native side is generated
# from the same spec, so the two cannot drift.
_bascenev1.set_scene_asset_set_native(
assets.circle_no_alpha,
assets.circle_outline,
assets.circle_outline_no_alpha,
assets.explosion,
assets.eye_color,
assets.eye_color_tint_mask,
assets.rgb_stripes,
assets.scorch,
assets.scorch_big,
assets.shield,
assets.wings,
assets.cross_out,
assets.eye_ball,
assets.eye_ball_iris,
assets.eye_lid,
assets.flag_pole,
assets.flash,
assets.hair_tuft1,
assets.hair_tuft1b,
assets.hair_tuft2,
assets.hair_tuft3,
assets.hair_tuft4,
assets.image1x1_full_screen,
assets.image1x1_vrfull_screen,
assets.locator,
assets.locator_box,
assets.locator_circle,
assets.locator_circle_outline,
assets.scorch_mesh,
assets.shield_mesh,
assets.shock_wave,
assets.wing,
assets.sparkle01,
assets.sparkle02,
assets.sparkle03,
assets.ticking_crazy,
assets.black,
assets.character_icon_mask,
assets.standin_icon,
assets.standin_icon_color_mask,
assets.standin_color,
assets.standin_color_mask,
assets.standin_head,
assets.standin_torso,
assets.standin_pelvis,
assets.standin_upper_arm,
assets.standin_forearm,
assets.standin_hand,
assets.standin_upper_leg,
assets.standin_lower_leg,
assets.standin_toes,
assets.standin_jump01,
assets.standin_jump02,
assets.standin_jump03,
assets.standin_jump04,
assets.standin_attack01,
assets.standin_attack02,
assets.standin_attack03,
assets.standin_attack04,
assets.standin_impact01,
assets.standin_impact02,
assets.standin_impact03,
assets.standin_impact04,
assets.standin_death01,
assets.standin_pickup01,
assets.standin_fall01,
)
# Docs-generation hack; import some stuff that we likely only forward-declared
# in our actual source code so that docs tools can find it.
from typing import (Coroutine, Any, Literal, Callable,
Generator, Awaitable, Sequence, Self, TypeIs)
import asyncio
from concurrent.futures import Future
from pathlib import Path
from enum import Enum