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 }; | |