diff --git a/src/mol-data/util/chunked-array.ts b/src/mol-data/util/chunked-array.ts index bd4dd10867fce9c72076b12055524ab0e1de21a9..f7fa1ed91f7de64fa62ab173c1590d5b0de0ffd9 100644 --- a/src/mol-data/util/chunked-array.ts +++ b/src/mol-data/util/chunked-array.ts @@ -77,6 +77,15 @@ namespace ChunkedArray { return array.elementCount++; } + export function addRepeat<T>(array: ChunkedArray<T, 1>, n: number, x: T) { + for (let i = 0; i < n; i++) { + if (array.currentIndex >= array.currentSize) allocateNext(array); + array.currentChunk[array.currentIndex++] = x; + array.elementCount++; + } + return array.elementCount; + } + export function addMany<T>(array: ChunkedArray<T, any>, data: ArrayLike<T>) { const { elementSize } = array; for (let i = 0, _i = data.length; i < _i; i += elementSize) { diff --git a/src/mol-geo/geometry/mesh/builder/tube.ts b/src/mol-geo/geometry/mesh/builder/tube.ts index 5eabb36f68052eec636f177b82e7386369d0019a..f4d5d78c8807bbb0e9f4cebfe1d21e447691bdb3 100644 --- a/src/mol-geo/geometry/mesh/builder/tube.ts +++ b/src/mol-geo/geometry/mesh/builder/tube.ts @@ -131,5 +131,5 @@ export function addTube(builder: MeshBuilder, controlPoints: ArrayLike<number>, } const addedVertexCount = (linearSegments + 1) * radialSegments + (startCap ? radialSegments + 1 : 0) + (endCap ? radialSegments + 1 : 0) - for (let i = 0, il = addedVertexCount; i < il; ++i) ChunkedArray.add(groups, currentGroup) + ChunkedArray.addRepeat(groups, addedVertexCount, currentGroup) } \ No newline at end of file