Browse Source

factored out Unit BaseProperties

Alexander Rose 5 years ago
parent
commit
c6ef02d0a6
1 changed files with 22 additions and 22 deletions
  1. 22 22
      src/mol-model/structure/structure/unit.ts

+ 22 - 22
src/mol-model/structure/structure/unit.ts

@@ -137,6 +137,23 @@ namespace Unit {
         readonly objectPrimitive: mmCIF_Schema['ihm_model_representation_details']['model_object_primitive']['T']
     }
 
+    interface BaseProperties {
+        lookup3d: ValueRef<Lookup3D | undefined>,
+        principalAxes: ValueRef<PrincipalAxes | undefined>,
+        polymerElements: ValueRef<SortedArray<ElementIndex> | undefined>
+        gapElements: ValueRef<SortedArray<ElementIndex> | undefined>
+    }
+
+
+    function BaseProperties(): BaseProperties {
+        return {
+            lookup3d: ValueRef.create(void 0),
+            principalAxes: ValueRef.create(void 0),
+            polymerElements: ValueRef.create(void 0),
+            gapElements: ValueRef.create(void 0),
+        };
+    }
+
     function getSphereRadiusFunc(model: Model) {
         const r = model.coarseConformation.spheres.radius;
         return (i: number) => r[i];
@@ -250,7 +267,7 @@ namespace Unit {
         }
 
         getResidueIndex(elementIndex: StructureElement.UnitIndex) {
-            return this.model.atomicHierarchy.residueAtomSegments.index[this.elements[elementIndex]];
+            return this.residueIndex[this.elements[elementIndex]];
         }
 
         constructor(id: number, invariantId: number, chainGroupId: number, traits: Traits, model: Model, elements: StructureElement.Set, conformation: SymmetryOperator.ArrayMapping<ElementIndex>, props: AtomicProperties) {
@@ -268,13 +285,9 @@ namespace Unit {
         }
     }
 
-    interface AtomicProperties {
-        lookup3d: ValueRef<Lookup3D | undefined>,
-        principalAxes: ValueRef<PrincipalAxes | undefined>,
+    interface AtomicProperties extends BaseProperties {
         bonds: ValueRef<IntraUnitBonds | undefined>,
         rings: ValueRef<UnitRings | undefined>
-        polymerElements: ValueRef<SortedArray<ElementIndex> | undefined>
-        gapElements: ValueRef<SortedArray<ElementIndex> | undefined>
         nucleotideElements: ValueRef<SortedArray<ElementIndex> | undefined>
         proteinElements: ValueRef<SortedArray<ElementIndex> | undefined>
         residueCount: ValueRef<number | undefined>
@@ -282,12 +295,9 @@ namespace Unit {
 
     function AtomicProperties(): AtomicProperties {
         return {
-            lookup3d: ValueRef.create(void 0),
-            principalAxes: ValueRef.create(void 0),
+            ...BaseProperties(),
             bonds: ValueRef.create(void 0),
             rings: ValueRef.create(void 0),
-            polymerElements: ValueRef.create(void 0),
-            gapElements: ValueRef.create(void 0),
             nucleotideElements: ValueRef.create(void 0),
             proteinElements: ValueRef.create(void 0),
             residueCount: ValueRef.create(void 0),
@@ -369,20 +379,10 @@ namespace Unit {
         }
     }
 
-    interface CoarseProperties {
-        lookup3d: ValueRef<Lookup3D | undefined>,
-        principalAxes: ValueRef<PrincipalAxes | undefined>,
-        polymerElements: ValueRef<SortedArray<ElementIndex> | undefined>
-        gapElements: ValueRef<SortedArray<ElementIndex> | undefined>
-    }
+    interface CoarseProperties extends BaseProperties { }
 
     function CoarseProperties(): CoarseProperties {
-        return {
-            lookup3d: ValueRef.create(void 0),
-            principalAxes: ValueRef.create(void 0),
-            polymerElements: ValueRef.create(void 0),
-            gapElements: ValueRef.create(void 0),
-        };
+        return BaseProperties();
     }
 
     function createCoarse<K extends Kind.Gaussians | Kind.Spheres>(id: number, invariantId: number, chainGroupId: number, traits: Traits, model: Model, kind: K, elements: StructureElement.Set, conformation: SymmetryOperator.ArrayMapping<ElementIndex>, props: CoarseProperties): Unit {