Skip to content

Commit

Permalink
fix: PrimitiveView was using inconsistent byte and float strides.
Browse files Browse the repository at this point in the history
  • Loading branch information
bhouston committed Jul 20, 2020
1 parent 4dc5399 commit 182d36b
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/lib/math/arrays/PrimitiveView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,12 @@ export class PrimitiveView<P extends IArrayable> {
this.floatStride = dataArray.vertexStride / 4;
this.floatArray = new Float32Array(dataArray.attributeData.arrayBuffer);
} else if (dataArray instanceof Float32Array) {
console.log("dataArray is a Float32Array", dataArray);
this.floatArray = dataArray;
} else if (dataArray instanceof ArrayBuffer) {
this.floatArray = new Float32Array(dataArray);
console.log("dataArray is a ArrayBuffer", dataArray);
console.log("convering to a Float32Array", this.floatArray);
} else {
throw new Error("unsupported value");
}
Expand Down Expand Up @@ -61,8 +64,8 @@ export class PrimitiveView<P extends IArrayable> {
export class Vector2View extends PrimitiveView<Vector2> {
readonly tempPrimitive = new Vector2();

constructor(dataArray: DataArray, byteStride = -1, byteOffset = -1) {
super(dataArray, 8, byteStride, byteOffset);
constructor(dataArray: DataArray, floatStride = -1, floatOffset = -1) {
super(dataArray, 2, floatStride, floatOffset);
}

add(index: number, v: Vector2): this {
Expand All @@ -73,27 +76,31 @@ export class Vector2View extends PrimitiveView<Vector2> {
export class Vector3View extends PrimitiveView<Vector3> {
readonly tempPrimitive = new Vector3();

constructor(dataArray: DataArray, byteStride = -1, byteOffset = -1) {
super(dataArray, 12, byteStride, byteOffset);
constructor(dataArray: DataArray, floatStride = -1, floatOffset = -1) {
super(dataArray, 3, floatStride, floatOffset);
}

add(index: number, v: Vector3): this {
return this.set(index, this.get(index, this.tempPrimitive).add(v));
}
}

export function makeVector2View(dataArray: DataArray, byteStride = -1, byteOffset = -1): Vector2View {
return new Vector2View(dataArray, byteStride, byteOffset);
export function makeVector2View(dataArray: DataArray, floatStride = -1, floatOffset = -1): Vector2View {
return new Vector2View(dataArray, floatStride, floatOffset);
}
export function makeVector3View(dataArray: DataArray, byteStride = -1, byteOffset = -1): Vector3View {
return new Vector3View(dataArray, byteStride, byteOffset);
export function makeVector3View(dataArray: DataArray, floatStride = -1, floatOffset = -1): Vector3View {
return new Vector3View(dataArray, floatStride, floatOffset);
}
export function makeQuaternionView(dataArray: DataArray, byteStride = -1, byteOffset = -1): PrimitiveView<Quaternion> {
return new PrimitiveView<Quaternion>(dataArray, 16, byteStride, byteOffset);
export function makeQuaternionView(
dataArray: DataArray,
floatStride = -1,
floatOffset = -1,
): PrimitiveView<Quaternion> {
return new PrimitiveView<Quaternion>(dataArray, 4, floatStride, floatOffset);
}
export function makeMatrix3View(dataArray: DataArray, byteStride = -1, byteOffset = -1): PrimitiveView<Matrix3> {
return new PrimitiveView<Matrix3>(dataArray, 36, byteStride, byteOffset);
export function makeMatrix3View(dataArray: DataArray, floatStride = -1, floatOffset = -1): PrimitiveView<Matrix3> {
return new PrimitiveView<Matrix3>(dataArray, 9, floatStride, floatOffset);
}
export function makeMatrix4View(dataArray: DataArray, byteStride = -1, byteOffset = -1): PrimitiveView<Matrix4> {
return new PrimitiveView<Matrix4>(dataArray, 64, byteStride, byteOffset);
export function makeMatrix4View(dataArray: DataArray, floatStride = -1, floatOffset = -1): PrimitiveView<Matrix4> {
return new PrimitiveView<Matrix4>(dataArray, 16, floatStride, floatOffset);
}

0 comments on commit 182d36b

Please sign in to comment.