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

cleanup, fix test

parent 0739a5e6
No related branches found
No related tags found
No related merge requests found
......@@ -29,12 +29,10 @@ describe('renderable', () => {
2, 0, 0, 0
])
const bs = calculateBoundingSphere({
position,
positionCount: position.length / 3,
transform,
transformCount: transform.length / 16
})
const bs = calculateBoundingSphere(
position, position.length / 3,
transform, transform.length / 16
)
expect(bs.radius).toBe(1.5)
expect(bs.center).toEqual([1.5, 0.0, 0.0])
......
......@@ -8,7 +8,7 @@ import { Program } from './webgl/program';
import { RenderableValues, Values, RenderableSchema, BaseValues } from './renderable/schema';
import { RenderVariant, RenderItem } from './webgl/render-item';
import { Sphere3D } from 'mol-math/geometry';
import { calculateBoundingSphere } from './renderable/util';
import { calculateBoundingSphereFromValues } from './renderable/util';
export type RenderableState = {
visible: boolean
......@@ -27,11 +27,6 @@ export interface Renderable<T extends RenderableValues & BaseValues> {
}
export function createRenderable<T extends Values<RenderableSchema> & BaseValues>(renderItem: RenderItem, values: T, state: RenderableState): Renderable<T> {
const position = values.aPosition.ref.value
const transform = values.aTransform.ref.value
const positionCount = values.drawCount.ref.value / 3 / 3
const transformCount = values.instanceCount.ref.value
let boundingSphere: Sphere3D | undefined
return {
......@@ -39,7 +34,7 @@ export function createRenderable<T extends Values<RenderableSchema> & BaseValues
get state () { return state },
get boundingSphere () {
if (boundingSphere) return boundingSphere
boundingSphere = calculateBoundingSphere({ position, positionCount, transform, transformCount })
boundingSphere = calculateBoundingSphereFromValues(values)
return boundingSphere
},
......
......@@ -6,6 +6,7 @@
import { Sphere3D } from 'mol-math/geometry'
import { Mat4, Vec3 } from 'mol-math/linear-algebra'
import { ValueCell } from 'mol-util';
export function calculateTextureInfo (n: number, itemSize: number) {
const sqN = Math.sqrt(n * itemSize)
......@@ -32,15 +33,28 @@ export function fillSerial<T extends Helpers.NumberArray> (array: T) {
return array
}
export interface PositionData {
position: Float32Array
positionCount: number,
transform: Float32Array,
transformCount: number,
export interface PositionValues {
aPosition: ValueCell<Float32Array>
drawCount: ValueCell<number>,
aTransform: ValueCell<Float32Array>,
instanceCount: ValueCell<number>,
}
export function calculateBoundingSphere(data: PositionData): Sphere3D {
const { position, positionCount, transform, transformCount } = data
function getPositionDataFromValues(values: PositionValues) {
return {
position: values.aPosition.ref.value,
positionCount: values.drawCount.ref.value / 3 / 3,
transform: values.aTransform.ref.value,
transformCount: values.instanceCount.ref.value
}
}
export function calculateBoundingSphereFromValues(values: PositionValues){
const { position, positionCount, transform, transformCount } = getPositionDataFromValues(values)
return calculateBoundingSphere(position, positionCount, transform, transformCount)
}
export function calculateBoundingSphere(position: Float32Array, positionCount: number, transform: Float32Array, transformCount: number): Sphere3D {
const m = Mat4.zero()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment