Browse Source

StructureGroup as first argument for UnitsVisualBuilder.createLocationIterator

Alexander Rose 5 years ago
parent
commit
44b00edcb6

+ 3 - 3
src/mol-repr/structure/units-visual.ts

@@ -52,7 +52,7 @@ function createUnitsRenderObject<G extends Geometry>(group: Unit.SymmetryGroup,
 interface UnitsVisualBuilder<P extends UnitsParams, G extends Geometry> {
     defaultProps: PD.Values<P>
     createGeometry(ctx: VisualContext, unit: Unit, structure: Structure, theme: Theme, props: PD.Values<P>, geometry?: G): Promise<G> | G
-    createLocationIterator(group: Unit.SymmetryGroup): LocationIterator
+    createLocationIterator(structureGroup: StructureGroup): LocationIterator
     getLoci(pickingId: PickingId, structureGroup: StructureGroup, id: number): Loci
     eachLocation(loci: Loci, structureGroup: StructureGroup, apply: (interval: Interval) => boolean): boolean
     setUpdateState(state: VisualUpdateState, newProps: PD.Values<P>, currentProps: PD.Values<P>, newTheme: Theme, currentTheme: Theme, newStructureGroup: StructureGroup, currentStructureGroup: StructureGroup): void
@@ -149,7 +149,7 @@ export function UnitsVisual<G extends Geometry, P extends UnitsParams & Geometry
 
     function update(newGeometry?: G) {
         if (updateState.createNew) {
-            locationIt = createLocationIterator(newStructureGroup.group)
+            locationIt = createLocationIterator(newStructureGroup)
             if (newGeometry) {
                 renderObject = createUnitsRenderObject(newStructureGroup.group, newGeometry, locationIt, newTheme, newProps, materialId)
             } else {
@@ -162,7 +162,7 @@ export function UnitsVisual<G extends Geometry, P extends UnitsParams & Geometry
 
             if (updateState.updateTransform) {
                 // console.log('update transform')
-                locationIt = createLocationIterator(newStructureGroup.group)
+                locationIt = createLocationIterator(newStructureGroup)
                 const { instanceCount, groupCount } = locationIt
                 createMarkers(instanceCount * groupCount, renderObject.values)
             }

+ 2 - 1
src/mol-repr/structure/visual/orientation-ellipsoid-mesh.ts

@@ -87,7 +87,8 @@ export function createOrientationEllipsoidMesh(ctx: VisualContext, unit: Unit, s
 
 //
 
-function UnitIterator(group: Unit.SymmetryGroup): LocationIterator {
+function UnitIterator(structureGroup: StructureGroup): LocationIterator {
+    const { group } = structureGroup
     const groupCount = 1
     const instanceCount = group.units.length
     const location = StructureElement.Location.create()

+ 2 - 1
src/mol-repr/structure/visual/util/element.ts

@@ -157,7 +157,8 @@ export function getSerialElementLoci(pickingId: PickingId, structure: Structure,
 //
 
 export namespace ElementIterator {
-    export function fromGroup(group: Unit.SymmetryGroup): LocationIterator {
+    export function fromGroup(structureGroup: StructureGroup): LocationIterator {
+        const { group } = structureGroup
         const groupCount = group.elements.length
         const instanceCount = group.units.length
         const location = StructureElement.Location.create()

+ 3 - 1
src/mol-repr/structure/visual/util/link.ts

@@ -14,6 +14,7 @@ import { CylinderProps } from '../../../../mol-geo/primitive/cylinder';
 import { addFixedCountDashedCylinder, addCylinder, addDoubleCylinder } from '../../../../mol-geo/geometry/mesh/builder/cylinder';
 import { LocationIterator } from '../../../../mol-geo/util/location-iterator';
 import { VisualContext } from '../../../../mol-repr/visual';
+import { StructureGroup } from '../../units-visual';
 
 export const LinkCylinderParams = {
     linkScale: PD.Numeric(0.4, { min: 0, max: 1, step: 0.1 }),
@@ -127,7 +128,8 @@ export function createLinkCylinderMesh(ctx: VisualContext, linkBuilder: LinkCyli
 }
 
 export namespace LinkIterator {
-    export function fromGroup(group: Unit.SymmetryGroup): LocationIterator {
+    export function fromGroup(structureGroup: StructureGroup): LocationIterator {
+        const { group } = structureGroup
         const unit = group.units[0]
         const groupCount = Unit.isAtomic(unit) ? unit.links.edgeCount * 2 : 0
         const instanceCount = group.units.length

+ 2 - 1
src/mol-repr/structure/visual/util/nucleotide.ts

@@ -14,7 +14,8 @@ import { getResidueLoci } from './common';
 import { eachAtomicUnitTracedElement } from './polymer';
 
 export namespace NucleotideLocationIterator {
-    export function fromGroup(group: Unit.SymmetryGroup): LocationIterator {
+    export function fromGroup(structureGroup: StructureGroup): LocationIterator {
+        const { group } = structureGroup
         const u = group.units[0]
         const nucleotideElementIndices = Unit.isAtomic(u) ? u.nucleotideElements : []
         const groupCount = nucleotideElementIndices.length

+ 4 - 2
src/mol-repr/structure/visual/util/polymer.ts

@@ -42,7 +42,8 @@ export function getGapRanges(unit: Unit): SortedRanges<ElementIndex> {
 }
 
 export namespace PolymerLocationIterator {
-    export function fromGroup(group: Unit.SymmetryGroup): LocationIterator {
+    export function fromGroup(structureGroup: StructureGroup): LocationIterator {
+        const { group } = structureGroup
         const polymerElements = group.units[0].polymerElements
         const groupCount = polymerElements.length
         const instanceCount = group.units.length
@@ -58,7 +59,8 @@ export namespace PolymerLocationIterator {
 }
 
 export namespace PolymerGapLocationIterator {
-    export function fromGroup(group: Unit.SymmetryGroup): LocationIterator {
+    export function fromGroup(structureGroup: StructureGroup): LocationIterator {
+        const { group } = structureGroup
         const gapElements = group.units[0].gapElements
         const groupCount = gapElements.length
         const instanceCount = group.units.length