UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

63 lines (46 loc) 1.81 kB
import { BinaryClassSerializationAdapter } from "../../../../../ecs/storage/binary/BinaryClassSerializationAdapter.js"; import { AnimationGraph } from "./AnimationGraph.js"; import { AnimationGraphDefinitionSerializationAdapter } from "./definition/serialization/AnimationGraphDefinitionSerializationAdapter.js"; import { AnimationGraphDefinition } from "./definition/AnimationGraphDefinition.js"; export class AnimationGraphSerializationAdapter extends BinaryClassSerializationAdapter { klass = AnimationGraph; version = 0; /** * * @type {AnimationGraphDefinitionSerializationAdapter} * @private */ __definitionAdapter = new AnimationGraphDefinitionSerializationAdapter(); /** * * @param {BinaryBuffer} buffer * @param {AnimationGraph} value */ serialize(buffer, value) { /** * * @type {AnimationGraphDefinition} */ const graphDefinition = value.def; this.__definitionAdapter.serialize(buffer, graphDefinition); const stateIndex = graphDefinition.states.indexOf(value.state.def); buffer.writeUintVar(stateIndex); buffer.writeFloat32(value.debtTime); } /** * * @param {BinaryBuffer} buffer * @param {AnimationGraph} value */ deserialize(buffer, value) { const graphDefinition = new AnimationGraphDefinition(); this.__definitionAdapter.deserialize(buffer, graphDefinition); value.initialize(graphDefinition); const stateIndex = buffer.readUintVar(); const debtTime = buffer.readFloat32(); value.state = value.getStateByDefinition(graphDefinition.states[stateIndex]); value.debtTime = debtTime; } }