Compare commits

...

3 Commits

Author SHA1 Message Date
Alexander Rose
64c72aa6f5 0.5.0-dev.3 2020-02-20 10:56:21 -08:00
Alexander Rose
0a22917773 add unknown/any DNA/RNA base names N/DN 2020-02-20 10:23:39 -08:00
David Sehnal
3c4888e52b mol-canvas3d: tweak commit and camera reset 2020-02-20 12:55:21 +01:00
5 changed files with 28 additions and 18 deletions

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "molstar",
"version": "0.5.0-dev.2",
"version": "0.5.0-dev.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "molstar",
"version": "0.5.0-dev.2",
"version": "0.5.0-dev.3",
"description": "A comprehensive macromolecular library.",
"homepage": "https://github.com/molstar/molstar#readme",
"repository": {

View File

@@ -62,7 +62,7 @@ interface Canvas3D {
/**
* This function must be called if animate() is not set up so that add/remove actions take place.
*/
commit(): void
commit(isSynchronous?: boolean): void
update(repr?: Representation.Any, keepBoundingSphere?: boolean): void
clear(): void
@@ -77,7 +77,7 @@ interface Canvas3D {
handleResize(): void
/** Focuses camera on scene's bounding sphere, centered and zoomed. */
requestCameraReset(): void
requestCameraReset(durationMs?: number): void
readonly camera: Camera
readonly boundingSphere: Readonly<Sphere3D>
downloadScreenshot(): void
@@ -190,6 +190,7 @@ namespace Canvas3D {
let drawPending = false
let cameraResetRequested = false
let nextCameraResetDuration: number | undefined = void 0
function getLoci(pickingId: PickingId) {
let loci: Loci = EmptyLoci
@@ -282,25 +283,30 @@ namespace Canvas3D {
return webgl.isContextLost ? undefined : pickPass.identify(x, y)
}
function commit() {
commitScene();
resolveCameraReset();
function commit(isSynchronous: boolean = false) {
const allCommited = commitScene(isSynchronous);
// Only reset the camera after the full scene has been commited.
if (allCommited) resolveCameraReset();
}
function resolveCameraReset() {
if (!cameraResetRequested) return;
const { center, radius } = scene.boundingSphere;
camera.focus(center, radius, radius, p.cameraResetDurationMs);
camera.focus(center, radius, radius,
typeof nextCameraResetDuration === 'undefined' ? p.cameraResetDurationMs : nextCameraResetDuration);
nextCameraResetDuration = void 0;
cameraResetRequested = false;
}
const sceneCommitTimeoutMs = 250;
function commitScene() {
if (!scene.needsCommit) return;
function commitScene(isSynchronous: boolean) {
if (!scene.needsCommit) return true;
if (!scene.commit(isSynchronous ? void 0 : sceneCommitTimeoutMs)) return false;
const allCommited = scene.commit(sceneCommitTimeoutMs);
if (debugHelper.isEnabled) debugHelper.update();
if (allCommited) reprCount.next(reprRenderObjects.size);
reprCount.next(reprRenderObjects.size);
return true;
}
function add(repr: Representation.Any) {
@@ -384,7 +390,8 @@ namespace Canvas3D {
getLoci,
handleResize,
requestCameraReset: () => {
requestCameraReset: (durationMs) => {
nextCameraResetDuration = durationMs;
cameraResetRequested = true;
},
camera,

View File

@@ -126,8 +126,6 @@ namespace Scene {
return true;
}
// const toAdd: GraphicsRenderObject[] = []
// const toRemove: GraphicsRenderObject[] = []
const commitQueue = new CommitQueue();
return {

View File

@@ -221,7 +221,6 @@ export const WaterNames = new Set([
export const AminoAcidNamesL = new Set([
'HIS', 'ARG', 'LYS', 'ILE', 'PHE', 'LEU', 'TRP', 'ALA', 'MET', 'PRO', 'CYS',
'ASN', 'VAL', 'GLY', 'SER', 'GLN', 'TYR', 'ASP', 'GLU', 'THR', 'SEC', 'PYL',
'UNK' // unknown amino acid from CCD
])
export const AminoAcidNamesD = new Set([
@@ -249,8 +248,14 @@ export const AminoAcidNamesD = new Set([
])
export const AminoAcidNames = SetUtils.unionMany(AminoAcidNamesL, AminoAcidNamesD)
export const RnaBaseNames = new Set([ 'A', 'C', 'T', 'G', 'I', 'U' ])
export const DnaBaseNames = new Set([ 'DA', 'DC', 'DT', 'DG', 'DI', 'DU' ])
export const RnaBaseNames = new Set([
'A', 'C', 'T', 'G', 'I', 'U',
'N' // unknown RNA base from CCD
])
export const DnaBaseNames = new Set([
'DA', 'DC', 'DT', 'DG', 'DI', 'DU',
'DN' // unknown DNA base from CCD
])
export const PeptideBaseNames = new Set([ 'APN', 'CPN', 'TPN', 'GPN' ])
export const PurineBaseNames = new Set([ 'A', 'G', 'DA', 'DG', 'DI', 'APN', 'GPN' ])
export const PyrimidineBaseNames = new Set([ 'C', 'T', 'U', 'DC', 'DT', 'DU', 'CPN', 'TPN' ])