Skip to content

Commit 3096777

Browse files
slimbuckDonovan Hutchence
andauthored
small fixes for safari (playcanvas#2022)
* small fixes for safari Co-authored-by: Donovan Hutchence <dhutchence@snapchat.com>
1 parent 8469df9 commit 3096777

File tree

2 files changed

+9
-28
lines changed

2 files changed

+9
-28
lines changed

src/graphics/vertex-iterator.js

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
Object.assign(pc, function () {
22
'use strict';
33

4+
// map of engine pc.TYPE_*** enums to their corresponding typed array constructors
5+
var typesMap = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array];
6+
47
/**
58
* @class
69
* @name pc.VertexIteratorAccessor
@@ -52,33 +55,11 @@ Object.assign(pc, function () {
5255
this.index = 0;
5356
this.numComponents = vertexElement.numComponents;
5457

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);
8263
}
8364

8465
// BYTES_PER_ELEMENT is on the instance and constructor for Chrome, Safari and Firefox, but just the constructor for Opera

src/scene/mesh.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ Object.assign(pc, function () {
459459
var streamIndices = this._geometryData.indices;
460460
count = this._geometryData.indexCount;
461461

462-
if (ArrayBuffer.isView(data)) {
462+
if (ArrayBuffer.isView(indices)) {
463463
// destination data is typed array
464464
indices.set(streamIndices);
465465
} else {

0 commit comments

Comments
 (0)