فهرست منبع

Merge pull request #835 from JonStargaryen/channels

Adjust VolumeRepresentation#setState
Alexander Rose 1 سال پیش
والد
کامیت
9bf859d6ed
3فایلهای تغییر یافته به همراه12 افزوده شده و 11 حذف شده
  1. 1 0
      CHANGELOG.md
  2. 6 6
      src/mol-repr/structure/units-representation.ts
  3. 5 5
      src/mol-repr/volume/representation.ts

+ 1 - 0
CHANGELOG.md

@@ -12,6 +12,7 @@ Note that since we don't clearly distinguish between a public and private interf
 - Remove erroneous bounding-box overlap test in `Structure.eachUnitPair`
 - Fix `EdgeBuilder.addNextEdge` for loop edges
 - Optimize inter unit bond compute
+- Ensure consistent state for volume representation (#210)
 - Improve SSAO for thin geometry (e.g. lines)
 - Add snapshot support for structure selections
 

+ 6 - 6
src/mol-repr/structure/units-representation.ts

@@ -258,9 +258,9 @@ export function UnitsRepresentation<P extends StructureParams>(label: string, ct
         const { visible, alphaFactor, pickable, overpaint, transparency, substance, clipping, themeStrength, transform, unitTransforms, syncManually, markerActions } = state;
         const newState: Partial<StructureRepresentationState> = {};
 
-        if (visible !== _state.visible) newState.visible = visible;
-        if (alphaFactor !== _state.alphaFactor) newState.alphaFactor = alphaFactor;
-        if (pickable !== _state.pickable) newState.pickable = pickable;
+        if (visible !== undefined) newState.visible = visible;
+        if (alphaFactor !== undefined) newState.alphaFactor = alphaFactor;
+        if (pickable !== undefined) newState.pickable = pickable;
         if (overpaint !== undefined && _structure) {
             newState.overpaint = Overpaint.remap(overpaint, _structure);
         }
@@ -277,12 +277,12 @@ export function UnitsRepresentation<P extends StructureParams>(label: string, ct
         if (transform !== undefined && !Mat4.areEqual(transform, _state.transform, EPSILON)) {
             newState.transform = transform;
         }
-        if (unitTransforms !== _state.unitTransforms || unitTransforms?.version !== state.unitTransformsVersion) {
+        if (unitTransforms !== _state.unitTransforms || unitTransforms?.version !== _state.unitTransformsVersion) {
             newState.unitTransforms = unitTransforms;
             _state.unitTransformsVersion = unitTransforms ? unitTransforms?.version : -1;
         }
-        if (syncManually !== _state.syncManually) newState.syncManually = syncManually;
-        if (markerActions !== _state.markerActions) newState.markerActions = markerActions;
+        if (syncManually !== undefined) newState.syncManually = syncManually;
+        if (markerActions !== undefined) newState.markerActions = markerActions;
 
         visuals.forEach(({ visual, group }) => setVisualState(visual, group, newState));
 

+ 5 - 5
src/mol-repr/volume/representation.ts

@@ -385,9 +385,9 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx:
         const { visible, alphaFactor, pickable, overpaint, transparency, substance, clipping, transform, themeStrength, syncManually, markerActions } = state;
         const newState: Partial<Representation.State> = {};
 
-        if (visible !== _state.visible) newState.visible = visible;
-        if (alphaFactor !== _state.alphaFactor) newState.alphaFactor = alphaFactor;
-        if (pickable !== _state.pickable) newState.pickable = pickable;
+        if (visible !== undefined) newState.visible = visible;
+        if (alphaFactor !== undefined) newState.alphaFactor = alphaFactor;
+        if (pickable !== undefined) newState.pickable = pickable;
         if (overpaint !== undefined) newState.overpaint = overpaint;
         if (transparency !== undefined) newState.transparency = transparency;
         if (substance !== undefined) newState.substance = substance;
@@ -396,8 +396,8 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx:
         if (transform !== undefined && !Mat4.areEqual(transform, _state.transform, EPSILON)) {
             newState.transform = transform;
         }
-        if (syncManually !== _state.syncManually) newState.syncManually = syncManually;
-        if (markerActions !== _state.markerActions) newState.markerActions = markerActions;
+        if (syncManually !== undefined) newState.syncManually = syncManually;
+        if (markerActions !== undefined) newState.markerActions = markerActions;
 
         visuals.forEach(visual => setVisualState(visual, newState));