Browse Source

ChunkedArray.addRepeat

Alexander Rose 6 years ago
parent
commit
a7d70f4b69
2 changed files with 10 additions and 1 deletions
  1. 9 0
      src/mol-data/util/chunked-array.ts
  2. 1 1
      src/mol-geo/geometry/mesh/builder/tube.ts

+ 9 - 0
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) {

+ 1 - 1
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)
 }