UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

55 lines (42 loc) 1.66 kB
import { BinaryClassSerializationAdapter } from "../../../../ecs/storage/binary/BinaryClassSerializationAdapter.js"; import { LightProbeVolume } from "../LightProbeVolume.js"; export class LightProbeVolumeSerializationAdapter extends BinaryClassSerializationAdapter { klass = LightProbeVolume version = 0 /** * * @param buffer * @param {LightProbeVolume} value */ serialize(buffer, value) { const count = value.count; buffer.writeUint32(count); // write probe position data buffer.writeFloat32Array(value.points, 0, count * 3); // probe values buffer.writeFloat32Array(value.harmonics, 0, count * 27); // depth const depth_resolution = value.depth_map_resolution; buffer.writeUint32(depth_resolution); buffer.writeFloat32Array(value.depth, 0, depth_resolution * depth_resolution * count * 2); value.mesh.serialize(buffer); } /** * * @param buffer * @param {LightProbeVolume} value */ deserialize(buffer, value) { value.clear(); const count = buffer.readUint32(); value.count = count; buffer.readFloat32Array(value.points, 0, count * 3); buffer.readFloat32Array(value.harmonics, 0, count * 27); // depth const depth_resolution = buffer.readUint32(); value.depth_map_resolution = depth_resolution; buffer.readFloat32Array(value.depth, 0, depth_resolution * depth_resolution * count * 2); value.mesh.deserialize(buffer); value.incrementVersion(); } }