Skip to content

HTMLRendererOptions

Options passées au module dans gwen.config.ts ou directement à HTMLRendererPlugin.

ts
interface HTMLRendererPluginOptions {
  layers: Record<string, HTMLLayerDef>
  layerTemplates?: Record<string, HTMLLayerTemplate>
  renderFn?: FrameworkRenderFn
  container?: HTMLElement
  viewportId?: string
  log?: GwenLogger
}

layers

Requis. Au moins un layer doit être déclaré.

Chaque entrée est un HTMLLayerDef — un LayerDef avec un champ optionnel viewportId qui lie le layer à un viewport spécifique.

ts
layers: {
  background: { order: 0 },
  hud:        { order: 100 },
}

HTMLLayerDef

ChampTypeDescription
ordernumberOrdre d'empilement Z (hérité de LayerDef).
coordinate'world' | 'screen''world' = transformé par caméra ; 'screen' = plein écran (hérité de LayerDef).
viewportIdstring?Viewport auquel ce layer est associé. Non défini = chaîne de repli (voir ci-dessous).

Règle de résolution du viewport (priorité décroissante) :

PrioritéSourceUtilisé quand
1layer.viewportIdLayer explicitement lié à un viewport
2opts.viewportIdRepli au niveau du plugin
3Premier viewport actifRepli global (projets mono-viewport)

Voir Intégration de la caméra pour des exemples split-screen.


layerTemplates

Optionnel. Templates de layers instanciés automatiquement pour chaque viewport ajouté à l'exécution. Le pattern de clé accepte {id} comme placeholder pour l'identifiant du viewport. viewportId est injecté automatiquement.

ts
layerTemplates: {
  'world_{id}': { order: 10, coordinate: 'world' },
  'hud_{id}':   { order: 100 },
}
// viewport 'p1' ajouté → crée 'world_p1' et 'hud_p1'
// viewport 'p1' supprimé → détruit 'world_p1' et 'hud_p1'

Voir Split-screen N joueurs pour un exemple complet.


renderFn

Optionnel. Fonction adaptateur pour monter des nœuds JSX ou VDOM.

ts
type FrameworkRenderFn = (content: unknown, container: HTMLElement) => () => void

Voir Adaptateurs JSX pour des exemples spécifiques aux frameworks.


container

Optionnel. Élément DOM racine dans lequel monter les layers. Par défaut document.body.

ts
container: document.getElementById('game-root')!

Seul le premier plugin renderer à appeler getOrCreateLayerManager() détermine le conteneur — les plugins suivants partagent la même instance de LayerManager quel que soit ce qu'ils passent.


viewportId

Optionnel. Viewport de repli au niveau du plugin pour les layers qui ne déclarent pas leur propre viewportId. Par défaut, le premier viewport enregistré dans ViewportManager.

ts
viewportId: 'main'

Uniquement pertinent lorsque @gwenjs/camera-core est installé.

Voir Intégration de la caméra pour plus de détails.


log

Optionnel. Logger enfant issu de engine.logger.child('@gwenjs/renderer-html'). Lorsqu'il est fourni, le renderer émet des diagnostics structurés.

ts
// Dans une configuration de plugin personnalisée :
const log = engine.logger.child('@gwenjs/renderer-html')
engine.use(HTMLRendererPlugin({ layers, log }))

Lors de l'utilisation du système de modules (gwen.config.ts), le logger est créé automatiquement par le plugin — il n'est pas nécessaire de le passer manuellement.

ÉvénementNiveau
Template de layer instanciédebug
Template de layer détruitdebug
Nom de layer inconnu demandéerror