Skip to content
Snippets Groups Projects
Commit c1a3c28c authored by Alexander Rose's avatar Alexander Rose
Browse files

don't use getter for repr.renderObjects

parent 2e80558e
No related branches found
No related tags found
No related merge requests found
...@@ -95,14 +95,14 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa ...@@ -95,14 +95,14 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
} }
if (updateState.createNew) { if (updateState.createNew) {
renderObjects.length = 0 renderObjects.length = 0 // clear list o renderObjects
locationIt = ShapeGroupIterator.fromShape(_shape) locationIt = ShapeGroupIterator.fromShape(_shape)
const transform = createShapeTransform(_shape.transforms) const transform = createShapeTransform(_shape.transforms)
const values = geometryUtils.createValues(_shape.geometry, transform, locationIt, _theme, newProps) const values = geometryUtils.createValues(_shape.geometry, transform, locationIt, _theme, newProps)
const state = geometryUtils.createRenderableState(newProps) const state = geometryUtils.createRenderableState(newProps)
_renderObject = createRenderObject(_shape.geometry.kind, values, state) _renderObject = createRenderObject(_shape.geometry.kind, values, state)
if (_renderObject) renderObjects.push(_renderObject) if (_renderObject) renderObjects.push(_renderObject) // add new renderObject to list
} else { } else {
if (!_renderObject) { if (!_renderObject) {
throw new Error('expected renderObject to be available') throw new Error('expected renderObject to be available')
...@@ -144,6 +144,7 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa ...@@ -144,6 +144,7 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
} }
currentProps = newProps currentProps = newProps
// increment version
updated.next(version++) updated.next(version++)
}); });
} }
...@@ -151,11 +152,11 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa ...@@ -151,11 +152,11 @@ export function ShapeRepresentation<D, G extends Geometry, P extends Geometry.Pa
return { return {
label: 'Shape geometry', label: 'Shape geometry',
get groupCount () { return locationIt ? locationIt.count : 0 }, get groupCount () { return locationIt ? locationIt.count : 0 },
get renderObjects () { return renderObjects },
get props () { return currentProps }, get props () { return currentProps },
get params () { return currentParams }, get params () { return currentParams },
get state() { return _state }, get state() { return _state },
get theme() { return _theme }, get theme() { return _theme },
renderObjects,
updated, updated,
createOrUpdate, createOrUpdate,
getLoci(pickingId: PickingId) { getLoci(pickingId: PickingId) {
......
...@@ -16,10 +16,12 @@ import { RepresentationContext, RepresentationParamsGetter } from 'mol-repr/repr ...@@ -16,10 +16,12 @@ import { RepresentationContext, RepresentationParamsGetter } from 'mol-repr/repr
import { Theme, createEmptyTheme } from 'mol-theme/theme'; import { Theme, createEmptyTheme } from 'mol-theme/theme';
import { ParamDefinition as PD } from 'mol-util/param-definition'; import { ParamDefinition as PD } from 'mol-util/param-definition';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { GraphicsRenderObject } from 'mol-gl/render-object';
export function ComplexRepresentation<P extends StructureParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, P>, visualCtor: () => ComplexVisual<P>): StructureRepresentation<P> { export function ComplexRepresentation<P extends StructureParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, P>, visualCtor: () => ComplexVisual<P>): StructureRepresentation<P> {
let version = 0 let version = 0
const updated = new Subject<number>() const updated = new Subject<number>()
const renderObjects: GraphicsRenderObject[] = []
const _state = StructureRepresentationStateBuilder.create() const _state = StructureRepresentationStateBuilder.create()
let visual: ComplexVisual<P> | undefined let visual: ComplexVisual<P> | undefined
...@@ -40,6 +42,10 @@ export function ComplexRepresentation<P extends StructureParams>(label: string, ...@@ -40,6 +42,10 @@ export function ComplexRepresentation<P extends StructureParams>(label: string,
if (!visual) visual = visualCtor() if (!visual) visual = visualCtor()
const promise = visual.createOrUpdate({ webgl: ctx.webgl, runtime }, _theme, _props, structure) const promise = visual.createOrUpdate({ webgl: ctx.webgl, runtime }, _theme, _props, structure)
if (promise) await promise if (promise) await promise
// update list of renderObjects
renderObjects.length = 0
if (visual && visual.renderObject) renderObjects.push(visual.renderObject)
// increment version
updated.next(version++) updated.next(version++)
}); });
} }
...@@ -81,13 +87,11 @@ export function ComplexRepresentation<P extends StructureParams>(label: string, ...@@ -81,13 +87,11 @@ export function ComplexRepresentation<P extends StructureParams>(label: string,
get groupCount() { get groupCount() {
return visual ? visual.groupCount : 0 return visual ? visual.groupCount : 0
}, },
get renderObjects() {
return visual && visual.renderObject ? [ visual.renderObject ] : []
},
get props() { return _props }, get props() { return _props },
get params() { return _params }, get params() { return _params },
get state() { return _state }, get state() { return _state },
get theme() { return _theme }, get theme() { return _theme },
renderObjects,
updated, updated,
createOrUpdate, createOrUpdate,
setState, setState,
......
...@@ -31,6 +31,7 @@ export interface UnitsVisual<P extends UnitsParams> extends Visual<StructureGrou ...@@ -31,6 +31,7 @@ export interface UnitsVisual<P extends UnitsParams> extends Visual<StructureGrou
export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, P>, visualCtor: () => UnitsVisual<P>): StructureRepresentation<P> { export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, P>, visualCtor: () => UnitsVisual<P>): StructureRepresentation<P> {
let version = 0 let version = 0
const updated = new Subject<number>() const updated = new Subject<number>()
const renderObjects: GraphicsRenderObject[] = []
const _state = StructureRepresentationStateBuilder.create() const _state = StructureRepresentationStateBuilder.create()
let visuals = new Map<number, { group: Unit.SymmetryGroup, visual: UnitsVisual<P> }>() let visuals = new Map<number, { group: Unit.SymmetryGroup, visual: UnitsVisual<P> }>()
...@@ -140,7 +141,14 @@ export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: R ...@@ -140,7 +141,14 @@ export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: R
if (runtime.shouldUpdate) await runtime.update({ message: 'Creating or updating UnitsVisual', current: i, max: il }) if (runtime.shouldUpdate) await runtime.update({ message: 'Creating or updating UnitsVisual', current: i, max: il })
} }
} }
// update list of renderObjects
renderObjects.length = 0
visuals.forEach(({ visual }) => {
if (visual.renderObject) renderObjects.push(visual.renderObject)
})
// set new structure
if (structure) _structure = structure if (structure) _structure = structure
// increment version
updated.next(version++) updated.next(version++)
}); });
} }
...@@ -199,17 +207,11 @@ export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: R ...@@ -199,17 +207,11 @@ export function UnitsRepresentation<P extends UnitsParams>(label: string, ctx: R
}) })
return groupCount return groupCount
}, },
get renderObjects() {
const renderObjects: GraphicsRenderObject[] = []
visuals.forEach(({ visual }) => {
if (visual.renderObject) renderObjects.push(visual.renderObject)
})
return renderObjects
},
get props() { return _props }, get props() { return _props },
get params() { return _params }, get params() { return _params },
get state() { return _state }, get state() { return _state },
get theme() { return _theme }, get theme() { return _theme },
renderObjects,
updated, updated,
createOrUpdate, createOrUpdate,
setState, setState,
......
...@@ -154,6 +154,7 @@ export type VolumeParams = typeof VolumeParams ...@@ -154,6 +154,7 @@ export type VolumeParams = typeof VolumeParams
export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<VolumeData, P>, visualCtor: (volume: VolumeData) => VolumeVisual<P>): VolumeRepresentation<P> { export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<VolumeData, P>, visualCtor: (volume: VolumeData) => VolumeVisual<P>): VolumeRepresentation<P> {
let version = 0 let version = 0
const updated = new Subject<number>() const updated = new Subject<number>()
const renderObjects: GraphicsRenderObject[] = []
const _state = Representation.createState() const _state = Representation.createState()
let visual: VolumeVisual<P> let visual: VolumeVisual<P>
...@@ -187,6 +188,10 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: ...@@ -187,6 +188,10 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx:
await visual.createOrUpdate({ webgl: ctx.webgl, runtime }, _theme, _props, volume) await visual.createOrUpdate({ webgl: ctx.webgl, runtime }, _theme, _props, volume)
busy = false busy = false
} }
// update list of renderObjects
renderObjects.length = 0
if (visual && visual.renderObject) renderObjects.push(visual.renderObject)
// increment version
updated.next(version++) updated.next(version++)
}); });
} }
...@@ -220,13 +225,11 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: ...@@ -220,13 +225,11 @@ export function VolumeRepresentation<P extends VolumeParams>(label: string, ctx:
get groupCount() { get groupCount() {
return visual ? visual.groupCount : 0 return visual ? visual.groupCount : 0
}, },
get renderObjects() {
return visual && visual.renderObject ? [ visual.renderObject ] : []
},
get props () { return _props }, get props () { return _props },
get params() { return _params }, get params() { return _params },
get state() { return _state }, get state() { return _state },
get theme() { return _theme }, get theme() { return _theme },
renderObjects,
updated, updated,
createOrUpdate, createOrUpdate,
setState, setState,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment