[Go to site: main page, start]

Class SceneManager

A framework for imbuing special scripted behaviors into a single specific Scene. Managed scenes are registered in CONFIG.Canvas.managedScenes.

The SceneManager instance is called at various points in the Scene rendering life-cycle.

This also provides a framework for registering additional hook events which are required only for the life-cycle of the managed Scene.

// Define a custom SceneManager subclass
class MyCustomSceneManager extends SceneManager {
async _onInit() {
console.log(`Initializing managed Scene "${this.scene.name}"`);
}

_getAvailableLevels(defaultLevels) {
// Return a custom subset of levels for this Scene
return new Set([this.scene.levels.get(someLevelId)]);
}

async _onDraw() {
console.log(`Drawing managed Scene "${this.scene.name}"`);
}

async _onReady() {
console.log(`Readying managed Scene "${this.scene.name}"`);
}

async _onTearDown({nextScene}) {
console.log(`Deconstructing "${this.scene.name}", next up: ${nextScene?.name ?? "blank canvas"}`);
}

_registerHooks() {
this.registerHook("updateToken", this.#onUpdateToken.bind(this));
}

#onUpdateToken(document, updateData, options, userId) {
console.log("Updating a token within the managed Scene");
}
}

// Register MyCustomSceneManager to be used for a specific Scene
CONFIG.Canvas.sceneManagers = {
[sceneId]: MyCustomSceneManager
}
Index

Constructors

  • The SceneManager is constructed by passing a reference to the active Scene document.

    Parameters

    • scene: Scene

    Returns SceneManager

Accessors

  • get scene(): Scene

    The managed Scene.

    Returns Scene

Methods

  • Register additional hook functions are only used while this Scene is active and is automatically deactivated.

    Parameters

    • hookName: string
    • handler: Function

    Returns void

  • Protected

    Deactivate Hook functions that were added specifically for this Scene.

    Returns void

  • Protected

    Configure which level of the Scene should be initially viewed for a managed Scene. This initial level could be user-specific. This method may be called when the Scene is not viewed.

    Returns string | void

  • Protected

    Configure which levels of the Scene are available to the current user. This method may be called when the Scene is not viewed.

    Parameters

    • defaultLevels: Set<Level>

      The levels that are available to the current user by default in ascending order.

    Returns void | Set<Level>

    Return a Set of Level documents to override the default token-ownership logic, or return nothing to fall back to the default behavior. The returned Levels must be sorted in ascending order.

  • Protected

    Load additional texture resources for the Scene/Level. This method may be called when the Scene is not viewed.

    Parameters

    • textures: Record<string, string | Texture<Resource> | Spritesheet<ISpritesheetData>>

      Destination record to register textures into.

    • additionalSources: string[]

      Additional sources to load.

    • level: Level

      The Level to load textures for.

    Returns void

  • Protected

    Additional behaviors to perform after core groups and layers are drawn to the canvas.

    Returns Promise<void>

  • Protected

    Additional behaviors to perform when the Canvas is first initialized for the Scene.

    Returns Promise<void>

  • Protected

    Additional behaviors to perform after the Canvas is fully initialized for the Scene.

    Returns Promise<void>

  • Protected

    Additional behaviors to perform when the Scene is deactivated.

    Parameters

    Returns Promise<void>

  • Protected

    Register additional hook functions are only used while this Scene is active and is automatically deactivated. Hooks should be registered in this function by calling this._registerHook(hookName, handler)

    Returns void