|
1 | 1 | Object.assign(pc, function () {
|
2 | 2 | 'use strict';
|
3 | 3 |
|
| 4 | + // map of engine pc.TYPE_*** enums to their corresponding typed array constructors |
| 5 | + var typesMap = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array]; |
| 6 | + |
4 | 7 | /**
|
5 | 8 | * @class
|
6 | 9 | * @name pc.VertexIteratorAccessor
|
@@ -52,33 +55,11 @@ Object.assign(pc, function () {
|
52 | 55 | this.index = 0;
|
53 | 56 | this.numComponents = vertexElement.numComponents;
|
54 | 57 |
|
55 |
| - // map only section of underlaying buffer for non-interleaved format |
56 |
| - var bufferLength; |
57 |
| - if (!vertexFormat.interleaved) |
58 |
| - bufferLength = vertexFormat.vertexCount * vertexElement.numComponents; |
59 |
| - |
60 |
| - switch (vertexElement.dataType) { |
61 |
| - case pc.TYPE_INT8: |
62 |
| - this.array = new Int8Array(buffer, vertexElement.offset, bufferLength); |
63 |
| - break; |
64 |
| - case pc.TYPE_UINT8: |
65 |
| - this.array = new Uint8Array(buffer, vertexElement.offset, bufferLength); |
66 |
| - break; |
67 |
| - case pc.TYPE_INT16: |
68 |
| - this.array = new Int16Array(buffer, vertexElement.offset, bufferLength); |
69 |
| - break; |
70 |
| - case pc.TYPE_UINT16: |
71 |
| - this.array = new Uint16Array(buffer, vertexElement.offset, bufferLength); |
72 |
| - break; |
73 |
| - case pc.TYPE_INT32: |
74 |
| - this.array = new Int32Array(buffer, vertexElement.offset, bufferLength); |
75 |
| - break; |
76 |
| - case pc.TYPE_UINT32: |
77 |
| - this.array = new Uint32Array(buffer, vertexElement.offset, bufferLength); |
78 |
| - break; |
79 |
| - case pc.TYPE_FLOAT32: |
80 |
| - this.array = new Float32Array(buffer, vertexElement.offset, bufferLength); |
81 |
| - break; |
| 58 | + // create the typed array based on the element data type |
| 59 | + if (vertexFormat.interleaved) { |
| 60 | + this.array = new typesMap[vertexElement.dataType](buffer, vertexElement.offset); |
| 61 | + } else { |
| 62 | + this.array = new typesMap[vertexElement.dataType](buffer, vertexElement.offset, vertexFormat.vertexCount * vertexElement.numComponents); |
82 | 63 | }
|
83 | 64 |
|
84 | 65 | // BYTES_PER_ELEMENT is on the instance and constructor for Chrome, Safari and Firefox, but just the constructor for Opera
|
|
0 commit comments