Übersicht

Entity-System

Die hierarchische Entity-Architektur für alle Spielobjekte.

Das Entity-System ist eine Klassenhierarchie, wobei jede Ebene mehr Funktionen hinzufügt. Wähle die passende Basisklasse für deine Entity.

GameObject
  └── Actor
        ├── Entity3D
        └── LivingActor

GameObject

Die Basisklasse für alles in der Welt.

import { GameObject } from '@mavonengine/core'

class MyObject extends GameObject {
  update(delta: number): void {
    // Bei jedem Tick/Frame aufgerufen
  }
}

Eigenschaften

EigenschaftTypBeschreibung
positionVector3Weltposition
rotationVector3Euler-Rotation
scaleVector3Skalierung
colliderMeshMesh | undefinedOptionales Physik-Collider-Mesh
garbageCollectbooleanAuf true setzen, um zum Löschen zu markieren

Methoden

MethodeBeschreibung
abstract update(delta)Bei jedem Tick aufgerufen. Muss implementiert werden.
serialize()Gibt ein einfaches Objekt für Netzwerk-/Zustandsserialisierung zurück
destroy()Ressourcen bereinigen

Actor

Erweitert GameObject um eine Pushdown-Automat-Zustandsmaschine.

import { Actor } from '@mavonengine/core'

class MyActor extends Actor {
  // Zustandsmaschine wird automatisch verwaltet
}

Eigenschaften

EigenschaftTypBeschreibung
stateEntityState[]Stack der aktiven Zustände
stateHashstringHash des serialisierten Zustands-Stacks

Die update(delta)-Methode auf Actor delegiert automatisch an den obersten Zustand im Stack.

Siehe Zustandsmaschine für vollständige Details.

Entity3D

Erweitert Actor um Three.js-Modellunterstützung und Animationen.

import { Entity3D } from '@mavonengine/core'
import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader'

class MyCharacter extends Entity3D {
  constructor(gltf: GLTF) {
    super()
    this.initModel(gltf)
  }
}

Eigenschaften

EigenschaftTypBeschreibung
instanceGroupThree.js-Objektgruppe (das Modell)
animationMixerAnimationMixer | undefinedThree.js-Animations-Mixer
animationsMapMap<string, AnimationAction>Benannte Animationsaktionen
activeActionAnimationAction | undefinedAktuell abspielende Animation

Methoden

MethodeBeschreibung
initModel(gltf)Aus einem geladenen GLTF-Asset initialisieren
fadeToAction(name, duration)Sanft zu einer benannten Animation übergehen
destroy()Entfernt Modell aus der Szene und gibt Geometrie frei

LivingActor

Abstrakte Erweiterung von Actor für Entities, die Schaden nehmen und Gesundheit haben können.

import { LivingActor } from '@mavonengine/core'

class MyEnemy extends LivingActor {
  health = 100
  maxHealth = 100

  isDead(): void { /* ... */ }
  takeDamage(amount: number): void { /* ... */ }
  heal(amount: number): void { /* ... */ }
}

Abstrakte Mitglieder

MitgliedBeschreibung
healthAktueller Gesundheitswert
maxHealthMaximaler Gesundheitswert
isDead()Wird aufgerufen, wenn die Gesundheit auf null sinkt
takeDamage(amount)Schaden zufügen
heal(amount)Gesundheit wiederherstellen

Implementiert das Damageable-Interface.