Spaces:
Running
Running
| class SplatvData { | |
| static RowLength = 64; | |
| private _vertexCount: number; | |
| private _positions: Float32Array; | |
| private _data: Uint32Array; | |
| private _width: number; | |
| private _height: number; | |
| serialize: () => Uint8Array; | |
| constructor(vertexCount: number, positions: Float32Array, data: Uint32Array, width: number, height: number) { | |
| this._vertexCount = vertexCount; | |
| this._positions = positions; | |
| this._data = data; | |
| this._width = width; | |
| this._height = height; | |
| this.serialize = () => { | |
| return new Uint8Array(this._data.buffer); | |
| }; | |
| } | |
| static Deserialize(data: Uint8Array, width: number, height: number): SplatvData { | |
| const buffer = new Uint32Array(data.buffer); | |
| const f_buffer = new Float32Array(data.buffer); | |
| const vertexCount = Math.floor(f_buffer.byteLength / this.RowLength); | |
| const positions = new Float32Array(vertexCount * 3); | |
| for (let i = 0; i < vertexCount; i++) { | |
| positions[3 * i + 0] = f_buffer[16 * i + 0]; | |
| positions[3 * i + 1] = f_buffer[16 * i + 1]; | |
| positions[3 * i + 2] = f_buffer[16 * i + 2]; | |
| positions[3 * i + 0] = f_buffer[16 * i + 3]; | |
| } | |
| return new SplatvData(vertexCount, positions, buffer, width, height); | |
| } | |
| get vertexCount() { | |
| return this._vertexCount; | |
| } | |
| get positions() { | |
| return this._positions; | |
| } | |
| get data() { | |
| return this._data; | |
| } | |
| get width() { | |
| return this._width; | |
| } | |
| get height() { | |
| return this._height; | |
| } | |
| } | |
| export { SplatvData }; | |