From 4084829d3ed0eb72c892dc294f72f4a183e895ab Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Sat, 24 Nov 2018 00:34:38 -0800 Subject: [PATCH] made color and size creation sync --- src/mol-geo/geometry/color-data.ts | 34 +++++-------------- .../geometry/direct-volume/direct-volume.ts | 5 ++- src/mol-geo/geometry/lines/lines.ts | 7 ++-- src/mol-geo/geometry/mesh/mesh.ts | 6 ++-- src/mol-geo/geometry/points/points.ts | 7 ++-- src/mol-geo/geometry/size-data.ts | 34 +++++-------------- src/mol-repr/shape/representation.ts | 2 +- src/mol-repr/structure/complex-visual.ts | 8 ++--- src/mol-repr/structure/units-visual.ts | 8 ++--- src/mol-repr/structure/visual/util/common.ts | 21 ++++++------ src/mol-repr/volume/direct-volume.ts | 4 +-- src/mol-repr/volume/isosurface-mesh.ts | 4 +-- src/mol-repr/volume/representation.ts | 4 +-- 13 files changed, 54 insertions(+), 90 deletions(-) diff --git a/src/mol-geo/geometry/color-data.ts b/src/mol-geo/geometry/color-data.ts index fe85ae1bc..41ca6f169 100644 --- a/src/mol-geo/geometry/color-data.ts +++ b/src/mol-geo/geometry/color-data.ts @@ -11,7 +11,6 @@ import { Vec2, Vec3 } from 'mol-math/linear-algebra'; import { LocationIterator } from '../util/location-iterator'; import { NullLocation } from 'mol-model/location'; import { LocationColor, ColorTheme } from 'mol-theme/color'; -import { RuntimeContext } from 'mol-task'; import { getGranularity } from './geometry'; export type ColorType = 'uniform' | 'instance' | 'group' | 'groupInstance' @@ -24,12 +23,12 @@ export type ColorData = { dColorType: ValueCell<string>, } -export function createColors(ctx: RuntimeContext, locationIt: LocationIterator, colorTheme: ColorTheme, colorData?: ColorData): Promise<ColorData> { +export function createColors(locationIt: LocationIterator, colorTheme: ColorTheme, colorData?: ColorData): ColorData { switch (getGranularity(locationIt, colorTheme.granularity)) { - case 'uniform': return createUniformColor(ctx, locationIt, colorTheme.color, colorData) - case 'group': return createGroupColor(ctx, locationIt, colorTheme.color, colorData) - case 'groupInstance': return createGroupInstanceColor(ctx, locationIt, colorTheme.color, colorData) - case 'instance': return createInstanceColor(ctx, locationIt, colorTheme.color, colorData) + case 'uniform': return createUniformColor(locationIt, colorTheme.color, colorData) + case 'group': return createGroupColor(locationIt, colorTheme.color, colorData) + case 'groupInstance': return createGroupInstanceColor(locationIt, colorTheme.color, colorData) + case 'instance': return createInstanceColor(locationIt, colorTheme.color, colorData) } } @@ -52,7 +51,7 @@ export function createValueColor(value: Color, colorData?: ColorData): ColorData } /** Creates color uniform */ -export async function createUniformColor(ctx: RuntimeContext, locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): Promise<ColorData> { +export function createUniformColor(locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): ColorData { return createValueColor(color(NullLocation, false), colorData) } @@ -76,51 +75,36 @@ export function createTextureColor(colors: TextureImage<Uint8Array>, type: Color } /** Creates color texture with color for each instance/unit */ -export async function createInstanceColor(ctx: RuntimeContext, locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): Promise<ColorData> { +export function createInstanceColor(locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): ColorData { const { instanceCount } = locationIt const colors = colorData && colorData.tColor.ref.value.array.length >= instanceCount * 3 ? colorData.tColor.ref.value : createTextureImage(instanceCount, 3) - let i = 0 while (locationIt.hasNext) { const { location, isSecondary, instanceIndex } = locationIt.move() Color.toArray(color(location, isSecondary), colors.array, instanceIndex * 3) locationIt.skipInstance() - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating instance colors', current: i, max: instanceCount }); - } - ++i } return createTextureColor(colors, 'instance', colorData) } /** Creates color texture with color for each group (i.e. shared across instances/units) */ -export async function createGroupColor(ctx: RuntimeContext, locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): Promise<ColorData> { +export function createGroupColor(locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): ColorData { const { groupCount } = locationIt const colors = colorData && colorData.tColor.ref.value.array.length >= groupCount * 3 ? colorData.tColor.ref.value : createTextureImage(groupCount, 3) - let i = 0 while (locationIt.hasNext && !locationIt.isNextNewInstance) { const { location, isSecondary, groupIndex } = locationIt.move() Color.toArray(color(location, isSecondary), colors.array, groupIndex * 3) - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating group colors', current: i, max: groupCount }); - } - ++i } return createTextureColor(colors, 'group', colorData) } /** Creates color texture with color for each group in each instance (i.e. for each unit) */ -export async function createGroupInstanceColor(ctx: RuntimeContext, locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): Promise<ColorData> { +export function createGroupInstanceColor(locationIt: LocationIterator, color: LocationColor, colorData?: ColorData): ColorData { const { groupCount, instanceCount } = locationIt const count = instanceCount * groupCount const colors = colorData && colorData.tColor.ref.value.array.length >= count * 3 ? colorData.tColor.ref.value : createTextureImage(count, 3) - let i = 0 while (locationIt.hasNext) { const { location, isSecondary, index } = locationIt.move() Color.toArray(color(location, isSecondary), colors.array, index * 3) - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating group instance colors', current: i, max: count }); - } - ++i } return createTextureColor(colors, 'groupInstance', colorData) } \ No newline at end of file diff --git a/src/mol-geo/geometry/direct-volume/direct-volume.ts b/src/mol-geo/geometry/direct-volume/direct-volume.ts index e89cbf695..773d381f4 100644 --- a/src/mol-geo/geometry/direct-volume/direct-volume.ts +++ b/src/mol-geo/geometry/direct-volume/direct-volume.ts @@ -4,7 +4,6 @@ * @author Alexander Rose <alexander.rose@weirdbyte.de> */ -import { RuntimeContext } from 'mol-task' import { ValueCell } from 'mol-util' import { Sphere3D, Box3D } from 'mol-math/geometry' import { ParamDefinition as PD } from 'mol-util/param-definition'; @@ -76,12 +75,12 @@ export namespace DirectVolume { } export type Params = typeof Params - export async function createValues(ctx: RuntimeContext, directVolume: DirectVolume, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): Promise<DirectVolumeValues> { + export function createValues(directVolume: DirectVolume, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): DirectVolumeValues { const { gridTexture, gridTextureDim } = directVolume const { bboxSize, bboxMin, bboxMax, gridDimension, transform: gridTransform } = directVolume const { instanceCount, groupCount } = locationIt - const color = await createColors(ctx, locationIt, theme.color) + const color = createColors(locationIt, theme.color) const marker = createMarkers(instanceCount * groupCount) const counts = { drawCount: VolumeBox.indices.length, groupCount, instanceCount } diff --git a/src/mol-geo/geometry/lines/lines.ts b/src/mol-geo/geometry/lines/lines.ts index 03e670442..5f9fc1d1c 100644 --- a/src/mol-geo/geometry/lines/lines.ts +++ b/src/mol-geo/geometry/lines/lines.ts @@ -8,7 +8,6 @@ import { ValueCell } from 'mol-util' import { Mat4 } from 'mol-math/linear-algebra' import { transformPositionArray/* , transformDirectionArray, getNormalMatrix */ } from '../../util'; import { Geometry } from '../geometry'; -import { RuntimeContext } from 'mol-task'; import { createColors } from '../color-data'; import { createMarkers } from '../marker-data'; import { createSizes } from '../size-data'; @@ -99,10 +98,10 @@ export namespace Lines { } export type Params = typeof Params - export async function createValues(ctx: RuntimeContext, lines: Lines, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): Promise<LinesValues> { + export function createValues(lines: Lines, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): LinesValues { const { instanceCount, groupCount } = locationIt - const color = await createColors(ctx, locationIt, theme.color) - const size = await createSizes(ctx, locationIt, theme.size) + const color = createColors(locationIt, theme.color) + const size = createSizes(locationIt, theme.size) const marker = createMarkers(instanceCount * groupCount) const counts = { drawCount: lines.lineCount * 2 * 3, groupCount, instanceCount } diff --git a/src/mol-geo/geometry/mesh/mesh.ts b/src/mol-geo/geometry/mesh/mesh.ts index 8acf165af..5a30e6a55 100644 --- a/src/mol-geo/geometry/mesh/mesh.ts +++ b/src/mol-geo/geometry/mesh/mesh.ts @@ -4,7 +4,7 @@ * @author David Sehnal <david.sehnal@gmail.com> */ -import { Task, RuntimeContext } from 'mol-task' +import { Task } from 'mol-task' import { ValueCell } from 'mol-util' import { Vec3, Mat4 } from 'mol-math/linear-algebra' import { Sphere3D } from 'mol-math/geometry' @@ -349,9 +349,9 @@ export namespace Mesh { } export type Params = typeof Params - export async function createValues(ctx: RuntimeContext, mesh: Mesh, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): Promise<MeshValues> { + export function createValues(mesh: Mesh, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): MeshValues { const { instanceCount, groupCount } = locationIt - const color = await createColors(ctx, locationIt, theme.color) + const color = createColors(locationIt, theme.color) const marker = createMarkers(instanceCount * groupCount) const counts = { drawCount: mesh.triangleCount * 3, groupCount, instanceCount } diff --git a/src/mol-geo/geometry/points/points.ts b/src/mol-geo/geometry/points/points.ts index 08724686b..f179d330c 100644 --- a/src/mol-geo/geometry/points/points.ts +++ b/src/mol-geo/geometry/points/points.ts @@ -8,7 +8,6 @@ import { ValueCell } from 'mol-util' import { Mat4 } from 'mol-math/linear-algebra' import { transformPositionArray/* , transformDirectionArray, getNormalMatrix */ } from '../../util'; import { Geometry } from '../geometry'; -import { RuntimeContext } from 'mol-task'; import { createColors } from '../color-data'; import { createMarkers } from '../marker-data'; import { createSizes } from '../size-data'; @@ -63,10 +62,10 @@ export namespace Points { } export type Params = typeof Params - export async function createValues(ctx: RuntimeContext, points: Points, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): Promise<PointsValues> { + export function createValues(points: Points, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values<Params>): PointsValues { const { instanceCount, groupCount } = locationIt - const color = await createColors(ctx, locationIt, theme.color) - const size = await createSizes(ctx, locationIt, theme.size) + const color = createColors(locationIt, theme.color) + const size = createSizes(locationIt, theme.size) const marker = createMarkers(instanceCount * groupCount) const counts = { drawCount: points.pointCount, groupCount, instanceCount } diff --git a/src/mol-geo/geometry/size-data.ts b/src/mol-geo/geometry/size-data.ts index 6b791ed0f..21bf256a8 100644 --- a/src/mol-geo/geometry/size-data.ts +++ b/src/mol-geo/geometry/size-data.ts @@ -9,7 +9,6 @@ import { Vec2 } from 'mol-math/linear-algebra'; import { TextureImage, createTextureImage } from 'mol-gl/renderable/util'; import { LocationIterator } from '../util/location-iterator'; import { Location, NullLocation } from 'mol-model/location'; -import { RuntimeContext } from 'mol-task'; import { SizeTheme } from 'mol-theme/size'; import { getGranularity } from './geometry'; @@ -23,12 +22,12 @@ export type SizeData = { dSizeType: ValueCell<string>, } -export async function createSizes(ctx: RuntimeContext, locationIt: LocationIterator, sizeTheme: SizeTheme, sizeData?: SizeData): Promise<SizeData> { +export function createSizes(locationIt: LocationIterator, sizeTheme: SizeTheme, sizeData?: SizeData): SizeData { switch (getGranularity(locationIt, sizeTheme.granularity)) { - case 'uniform': return createUniformSize(ctx, locationIt, sizeTheme.size, sizeData) - case 'group': return createGroupSize(ctx, locationIt, sizeTheme.size, sizeData) - case 'groupInstance': return createGroupInstanceSize(ctx, locationIt, sizeTheme.size, sizeData) - case 'instance': return createInstanceSize(ctx, locationIt, sizeTheme.size, sizeData) + case 'uniform': return createUniformSize(locationIt, sizeTheme.size, sizeData) + case 'group': return createGroupSize(locationIt, sizeTheme.size, sizeData) + case 'groupInstance': return createGroupInstanceSize(locationIt, sizeTheme.size, sizeData) + case 'instance': return createInstanceSize(locationIt, sizeTheme.size, sizeData) } } @@ -60,7 +59,7 @@ export function createValueSize(value: number, sizeData?: SizeData): SizeData { } /** Creates size uniform */ -export async function createUniformSize(ctx: RuntimeContext, locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): Promise<SizeData> { +export function createUniformSize(locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): SizeData { return createValueSize(sizeFn(NullLocation), sizeData) } @@ -84,51 +83,36 @@ export function createTextureSize(sizes: TextureImage<Uint8Array>, type: SizeTyp } /** Creates size texture with size for each instance/unit */ -export async function createInstanceSize(ctx: RuntimeContext, locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): Promise<SizeData> { +export function createInstanceSize(locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): SizeData { const { instanceCount} = locationIt const sizes = sizeData && sizeData.tSize.ref.value.array.length >= instanceCount ? sizeData.tSize.ref.value : createTextureImage(instanceCount, 1) - let i = 0 while (locationIt.hasNext && !locationIt.isNextNewInstance) { const v = locationIt.move() sizes.array[v.instanceIndex] = sizeFn(v.location) locationIt.skipInstance() - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating instance sizes', current: i, max: instanceCount }); - } - ++i } return createTextureSize(sizes, 'instance', sizeData) } /** Creates size texture with size for each group (i.e. shared across instances/units) */ -export async function createGroupSize(ctx: RuntimeContext, locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): Promise<SizeData> { +export function createGroupSize(locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): SizeData { const { groupCount } = locationIt const sizes = sizeData && sizeData.tSize.ref.value.array.length >= groupCount ? sizeData.tSize.ref.value : createTextureImage(groupCount, 1) - let i = 0 while (locationIt.hasNext && !locationIt.isNextNewInstance) { const v = locationIt.move() sizes.array[v.groupIndex] = sizeFn(v.location) - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating group sizes', current: i, max: groupCount }); - } - ++i } return createTextureSize(sizes, 'group', sizeData) } /** Creates size texture with size for each group in each instance (i.e. for each unit) */ -export async function createGroupInstanceSize(ctx: RuntimeContext, locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): Promise<SizeData> { +export function createGroupInstanceSize(locationIt: LocationIterator, sizeFn: LocationSize, sizeData?: SizeData): SizeData { const { groupCount, instanceCount } = locationIt const count = instanceCount * groupCount const sizes = sizeData && sizeData.tSize.ref.value.array.length >= count ? sizeData.tSize.ref.value : createTextureImage(count, 1) - let i = 0 while (locationIt.hasNext && !locationIt.isNextNewInstance) { const v = locationIt.move() sizes.array[v.index] = sizeFn(v.location) - if (i % 10000 === 0 && ctx.shouldUpdate) { - await ctx.update({ message: 'Creating group instance sizes', current: i, max: count }); - } - ++i } return createTextureSize(sizes, 'groupInstance', sizeData) } \ No newline at end of file diff --git a/src/mol-repr/shape/representation.ts b/src/mol-repr/shape/representation.ts index ef2a5076c..d54e0f9e1 100644 --- a/src/mol-repr/shape/representation.ts +++ b/src/mol-repr/shape/representation.ts @@ -55,7 +55,7 @@ export function ShapeRepresentation<P extends ShapeParams>(ctx: RepresentationCo locationIt = ShapeGroupIterator.fromShape(_shape) const transform = createIdentityTransform() - const values = await Mesh.createValues(runtime, mesh, transform, locationIt, _theme, currentProps) + const values = Mesh.createValues(mesh, transform, locationIt, _theme, currentProps) const state = createRenderableState(currentProps) _renderObject = createMeshRenderObject(values, state) diff --git a/src/mol-repr/structure/complex-visual.ts b/src/mol-repr/structure/complex-visual.ts index ac70ac744..65086af89 100644 --- a/src/mol-repr/structure/complex-visual.ts +++ b/src/mol-repr/structure/complex-visual.ts @@ -47,7 +47,7 @@ interface ComplexVisualBuilder<P extends ComplexParams, G extends Geometry> { interface ComplexVisualGeometryBuilder<P extends ComplexParams, G extends Geometry> extends ComplexVisualBuilder<P, G> { createEmptyGeometry(geometry?: G): G - createRenderObject(ctx: VisualContext, structure: Structure, geometry: Geometry, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): Promise<ComplexRenderObject> + createRenderObject(structure: Structure, geometry: Geometry, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): ComplexRenderObject updateValues(values: RenderableValues, newProps: PD.Values<P>): void, updateBoundingSphere(values: RenderableValues, geometry: Geometry): void } @@ -74,7 +74,7 @@ export function ComplexVisual<P extends ComplexParams>(builder: ComplexVisualGeo geometry = await createGeometry(ctx, currentStructure, theme, currentProps, geometry) locationIt = createLocationIterator(structure) - renderObject = await createRenderObject(ctx, structure, geometry, locationIt, theme, currentProps) + renderObject = createRenderObject(structure, geometry, locationIt, theme, currentProps) } async function update(ctx: VisualContext, theme: Theme, props: Partial<PD.Values<P>>) { @@ -107,12 +107,12 @@ export function ComplexVisual<P extends ComplexParams>(builder: ComplexVisualGeo if (updateState.updateSize) { // not all geometries have size data, so check here if ('uSize' in renderObject.values) { - await createSizes(ctx.runtime, locationIt, theme.size, renderObject.values) + createSizes(locationIt, theme.size, renderObject.values) } } if (updateState.updateColor) { - await createColors(ctx.runtime, locationIt, theme.color, renderObject.values) + createColors(locationIt, theme.color, renderObject.values) } updateValues(renderObject.values, newProps) diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts index 8679baa90..6fde0097d 100644 --- a/src/mol-repr/structure/units-visual.ts +++ b/src/mol-repr/structure/units-visual.ts @@ -47,7 +47,7 @@ interface UnitsVisualBuilder<P extends UnitsParams, G extends Geometry> { interface UnitsVisualGeometryBuilder<P extends UnitsParams, G extends Geometry> extends UnitsVisualBuilder<P, G> { createEmptyGeometry(geometry?: G): G - createRenderObject(ctx: VisualContext, group: Unit.SymmetryGroup, geometry: Geometry, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): Promise<UnitsRenderObject> + createRenderObject(group: Unit.SymmetryGroup, geometry: Geometry, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): UnitsRenderObject updateValues(values: RenderableValues, newProps: PD.Values<P>): void updateBoundingSphere(values: RenderableValues, geometry: Geometry): void } @@ -79,7 +79,7 @@ export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryB // TODO create empty location iterator when not in unitKinds locationIt = createLocationIterator(group) - renderObject = await createRenderObject(ctx, group, geometry, locationIt, theme, currentProps) + renderObject = createRenderObject(group, geometry, locationIt, theme, currentProps) } async function update(ctx: VisualContext, group: Unit.SymmetryGroup, theme: Theme, props: Partial<PD.Values<P>> = {}) { @@ -148,13 +148,13 @@ export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryB // not all geometries have size data, so check here if ('uSize' in renderObject.values) { // console.log('update size') - await createSizes(ctx.runtime, locationIt, theme.size, renderObject.values) + createSizes(locationIt, theme.size, renderObject.values) } } if (updateState.updateColor) { // console.log('update color') - await createColors(ctx.runtime, locationIt, theme.color, renderObject.values) + createColors(locationIt, theme.color, renderObject.values) } updateValues(renderObject.values, newProps) diff --git a/src/mol-repr/structure/visual/util/common.ts b/src/mol-repr/structure/visual/util/common.ts index b1997df8a..b07f9931b 100644 --- a/src/mol-repr/structure/visual/util/common.ts +++ b/src/mol-repr/structure/visual/util/common.ts @@ -14,7 +14,6 @@ import { createRenderableState } from 'mol-geo/geometry/geometry'; import { Points } from 'mol-geo/geometry/points/points'; import { Lines } from 'mol-geo/geometry/lines/lines'; import { DirectVolume } from 'mol-geo/geometry/direct-volume/direct-volume'; -import { VisualContext } from 'mol-repr/representation'; import { Theme } from 'mol-theme/theme'; import { ParamDefinition as PD } from 'mol-util/param-definition'; import { StructureMeshParams, StructurePointsParams, StructureLinesParams, StructureDirectVolumeParams } from 'mol-repr/structure/representation'; @@ -70,43 +69,43 @@ export function includesUnitKind(unitKinds: UnitKind[], unit: Unit) { // mesh -export async function createComplexMeshRenderObject(ctx: VisualContext, structure: Structure, mesh: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureMeshParams>) { +export function createComplexMeshRenderObject(structure: Structure, mesh: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureMeshParams>) { const transform = createIdentityTransform() - const values = await Mesh.createValues(ctx.runtime, mesh, transform, locationIt, theme, props) + const values = Mesh.createValues(mesh, transform, locationIt, theme, props) const state = createRenderableState(props) return createMeshRenderObject(values, state) } -export async function createUnitsMeshRenderObject(ctx: VisualContext, group: Unit.SymmetryGroup, mesh: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureMeshParams>) { +export function createUnitsMeshRenderObject(group: Unit.SymmetryGroup, mesh: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureMeshParams>) { const transform = createUnitsTransform(group) - const values = await Mesh.createValues(ctx.runtime, mesh, transform, locationIt, theme, props) + const values = Mesh.createValues(mesh, transform, locationIt, theme, props) const state = createRenderableState(props) return createMeshRenderObject(values, state) } // points -export async function createUnitsPointsRenderObject(ctx: VisualContext, group: Unit.SymmetryGroup, points: Points, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructurePointsParams>) { +export function createUnitsPointsRenderObject(group: Unit.SymmetryGroup, points: Points, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructurePointsParams>) { const transform = createUnitsTransform(group) - const values = await Points.createValues(ctx.runtime, points, transform, locationIt, theme, props) + const values = Points.createValues(points, transform, locationIt, theme, props) const state = createRenderableState(props) return createPointsRenderObject(values, state) } // lines -export async function createUnitsLinesRenderObject(ctx: VisualContext, group: Unit.SymmetryGroup, lines: Lines, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureLinesParams>) { +export function createUnitsLinesRenderObject(group: Unit.SymmetryGroup, lines: Lines, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureLinesParams>) { const transform = createUnitsTransform(group) - const values = await Lines.createValues(ctx.runtime, lines, transform, locationIt, theme, props) + const values = Lines.createValues(lines, transform, locationIt, theme, props) const state = createRenderableState(props) return createLinesRenderObject(values, state) } // direct-volume -export async function createUnitsDirectVolumeRenderObject(ctx: VisualContext, group: Unit.SymmetryGroup, directVolume: DirectVolume, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureDirectVolumeParams>) { +export function createUnitsDirectVolumeRenderObject(group: Unit.SymmetryGroup, directVolume: DirectVolume, locationIt: LocationIterator, theme: Theme, props: PD.Values<StructureDirectVolumeParams>) { const transform = createUnitsTransform(group) - const values = await DirectVolume.createValues(ctx.runtime, directVolume, transform, locationIt, theme, props) + const values = DirectVolume.createValues(directVolume, transform, locationIt, theme, props) const state = createRenderableState(props) return createDirectVolumeRenderObject(values, state) } \ No newline at end of file diff --git a/src/mol-repr/volume/direct-volume.ts b/src/mol-repr/volume/direct-volume.ts index b2e8dea23..306f7cf46 100644 --- a/src/mol-repr/volume/direct-volume.ts +++ b/src/mol-repr/volume/direct-volume.ts @@ -172,9 +172,9 @@ export function DirectVolumeVisual(): VolumeVisual<DirectVolumeParams> { mark: () => false, setUpdateState: (state: VisualUpdateState, newProps: PD.Values<DirectVolumeParams>, currentProps: PD.Values<DirectVolumeParams>) => { }, - createRenderObject: async (ctx: VisualContext, geometry: DirectVolume, locationIt: LocationIterator, theme: Theme, props: PD.Values<DirectVolumeParams>) => { + createRenderObject: (geometry: DirectVolume, locationIt: LocationIterator, theme: Theme, props: PD.Values<DirectVolumeParams>) => { const transform = createIdentityTransform() - const values = await DirectVolume.createValues(ctx.runtime, geometry, transform, locationIt, theme, props) + const values = DirectVolume.createValues(geometry, transform, locationIt, theme, props) const state = createRenderableState(props) return createDirectVolumeRenderObject(values, state) }, diff --git a/src/mol-repr/volume/isosurface-mesh.ts b/src/mol-repr/volume/isosurface-mesh.ts index e2b82d003..135f5d291 100644 --- a/src/mol-repr/volume/isosurface-mesh.ts +++ b/src/mol-repr/volume/isosurface-mesh.ts @@ -57,9 +57,9 @@ export function IsosurfaceVisual(): VolumeVisual<IsosurfaceParams> { setUpdateState: (state: VisualUpdateState, newProps: PD.Values<IsosurfaceParams>, currentProps: PD.Values<IsosurfaceParams>) => { if (newProps.isoValue !== currentProps.isoValue) state.createGeometry = true }, - createRenderObject: async (ctx: VisualContext, geometry: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<IsosurfaceParams>) => { + createRenderObject: (geometry: Mesh, locationIt: LocationIterator, theme: Theme, props: PD.Values<IsosurfaceParams>) => { const transform = createIdentityTransform() - const values = await Mesh.createValues(ctx.runtime, geometry, transform, locationIt, theme, props) + const values = Mesh.createValues(geometry, transform, locationIt, theme, props) const state = createRenderableState(props) return createMeshRenderObject(values, state) }, diff --git a/src/mol-repr/volume/representation.ts b/src/mol-repr/volume/representation.ts index e274058eb..f9407ce60 100644 --- a/src/mol-repr/volume/representation.ts +++ b/src/mol-repr/volume/representation.ts @@ -35,7 +35,7 @@ interface VolumeVisualBuilder<P extends VolumeParams, G extends Geometry> { } interface VolumeVisualGeometryBuilder<P extends VolumeParams, G extends Geometry> extends VolumeVisualBuilder<P, G> { - createRenderObject(ctx: VisualContext, geometry: G, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): Promise<VolumeRenderObject> + createRenderObject(geometry: G, locationIt: LocationIterator, theme: Theme, currentProps: PD.Values<P>): VolumeRenderObject updateValues(values: RenderableValues, newProps: PD.Values<P>): void, updateBoundingSphere(values: RenderableValues, geometry: G): void } @@ -55,7 +55,7 @@ export function VolumeVisual<P extends VolumeParams>(builder: VolumeVisualGeomet currentProps = Object.assign({}, defaultProps, props) geometry = await createGeometry(ctx, volume, currentProps, geometry) locationIt = LocationIterator(1, 1, () => NullLocation) - renderObject = await createRenderObject(ctx, geometry, locationIt, theme, currentProps) + renderObject = createRenderObject(geometry, locationIt, theme, currentProps) } async function update(ctx: VisualContext, theme: Theme, props: Partial<PD.Values<P>> = {}) { -- GitLab