|
@@ -16,10 +16,12 @@ import { RepresentationContext, RepresentationParamsGetter } from 'mol-repr/repr
|
|
|
import { Theme, createEmptyTheme } from 'mol-theme/theme';
|
|
|
import { ParamDefinition as PD } from 'mol-util/param-definition';
|
|
|
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> {
|
|
|
let version = 0
|
|
|
const updated = new Subject<number>()
|
|
|
+ const renderObjects: GraphicsRenderObject[] = []
|
|
|
const _state = StructureRepresentationStateBuilder.create()
|
|
|
let visual: ComplexVisual<P> | undefined
|
|
|
|
|
@@ -40,6 +42,10 @@ export function ComplexRepresentation<P extends StructureParams>(label: string,
|
|
|
if (!visual) visual = visualCtor()
|
|
|
const promise = visual.createOrUpdate({ webgl: ctx.webgl, runtime }, _theme, _props, structure)
|
|
|
if (promise) await promise
|
|
|
+ // update list of renderObjects
|
|
|
+ renderObjects.length = 0
|
|
|
+ if (visual && visual.renderObject) renderObjects.push(visual.renderObject)
|
|
|
+ // increment version
|
|
|
updated.next(version++)
|
|
|
});
|
|
|
}
|
|
@@ -81,13 +87,11 @@ export function ComplexRepresentation<P extends StructureParams>(label: string,
|
|
|
get groupCount() {
|
|
|
return visual ? visual.groupCount : 0
|
|
|
},
|
|
|
- get renderObjects() {
|
|
|
- return visual && visual.renderObject ? [ visual.renderObject ] : []
|
|
|
- },
|
|
|
get props() { return _props },
|
|
|
get params() { return _params },
|
|
|
get state() { return _state },
|
|
|
get theme() { return _theme },
|
|
|
+ renderObjects,
|
|
|
updated,
|
|
|
createOrUpdate,
|
|
|
setState,
|