|
@@ -8,17 +8,20 @@ import { State } from 'mol-state';
|
|
import { PluginStateObject as SO } from './state/objects';
|
|
import { PluginStateObject as SO } from './state/objects';
|
|
import { Camera } from 'mol-canvas3d/camera';
|
|
import { Camera } from 'mol-canvas3d/camera';
|
|
import { PluginBehavior } from './behavior';
|
|
import { PluginBehavior } from './behavior';
|
|
|
|
+import { CameraSnapshotManager } from './state/camera';
|
|
|
|
|
|
export { PluginState }
|
|
export { PluginState }
|
|
|
|
|
|
class PluginState {
|
|
class PluginState {
|
|
readonly data: State;
|
|
readonly data: State;
|
|
readonly behavior: State;
|
|
readonly behavior: State;
|
|
|
|
+ readonly cameraSnapshots: CameraSnapshotManager = new CameraSnapshotManager();
|
|
|
|
|
|
getSnapshot(): PluginState.Snapshot {
|
|
getSnapshot(): PluginState.Snapshot {
|
|
return {
|
|
return {
|
|
data: this.data.getSnapshot(),
|
|
data: this.data.getSnapshot(),
|
|
behaviour: this.behavior.getSnapshot(),
|
|
behaviour: this.behavior.getSnapshot(),
|
|
|
|
+ cameraSnapshots: this.cameraSnapshots.getStateSnapshot(),
|
|
canvas3d: {
|
|
canvas3d: {
|
|
camera: this.plugin.canvas3d.camera.getSnapshot()
|
|
camera: this.plugin.canvas3d.camera.getSnapshot()
|
|
}
|
|
}
|
|
@@ -28,12 +31,15 @@ class PluginState {
|
|
async setSnapshot(snapshot: PluginState.Snapshot) {
|
|
async setSnapshot(snapshot: PluginState.Snapshot) {
|
|
await this.plugin.runTask(this.behavior.setSnapshot(snapshot.behaviour));
|
|
await this.plugin.runTask(this.behavior.setSnapshot(snapshot.behaviour));
|
|
await this.plugin.runTask(this.data.setSnapshot(snapshot.data));
|
|
await this.plugin.runTask(this.data.setSnapshot(snapshot.data));
|
|
|
|
+ this.cameraSnapshots.setStateSnapshot(snapshot.cameraSnapshots);
|
|
this.plugin.canvas3d.camera.setState(snapshot.canvas3d.camera);
|
|
this.plugin.canvas3d.camera.setState(snapshot.canvas3d.camera);
|
|
this.plugin.canvas3d.requestDraw(true);
|
|
this.plugin.canvas3d.requestDraw(true);
|
|
}
|
|
}
|
|
|
|
|
|
dispose() {
|
|
dispose() {
|
|
this.data.dispose();
|
|
this.data.dispose();
|
|
|
|
+ this.behavior.dispose();
|
|
|
|
+ this.cameraSnapshots.dispose();
|
|
}
|
|
}
|
|
|
|
|
|
constructor(private plugin: import('./context').PluginContext) {
|
|
constructor(private plugin: import('./context').PluginContext) {
|
|
@@ -46,6 +52,7 @@ namespace PluginState {
|
|
export interface Snapshot {
|
|
export interface Snapshot {
|
|
data: State.Snapshot,
|
|
data: State.Snapshot,
|
|
behaviour: State.Snapshot,
|
|
behaviour: State.Snapshot,
|
|
|
|
+ cameraSnapshots: CameraSnapshotManager.StateSnapshot,
|
|
canvas3d: {
|
|
canvas3d: {
|
|
camera: Camera.Snapshot
|
|
camera: Camera.Snapshot
|
|
}
|
|
}
|