Contains implementation of undo/redo controller OccUndoRedoController, which uses OccUndoRedoParams to build stack of application states. Contains implementation of OccPropertyUndoableController which tracks objects property changes and store their states in OccUndoRedoController stack.
// Enable undo/redoconst anUndoRedo = new OccUndoRedoController(OccViewerModule); Copy
// Enable undo/redoconst anUndoRedo = new OccUndoRedoController(OccViewerModule);
// Add on selection change callbackslet anOnSelectionChangeCallbacks = [];OccViewerModule.eventManager.addEventListener('onSelectedObjectsChanged', function (){ let aSelObjects = this.selectionManager.selectedObjects; for (let aCallback of anOnSelectionChangeCallbacks) { aCallback (aSelObjects); }return 0;});// Add on displayed change callbackslet anOnDisplayedChangeCallbacks = [];OccViewerModule.eventManager.addEventListener('onDisplayedObjectsChanged', function (){ let aDispObjects = OccViewerModule.interactiveContext.displayedObjects; for (let aCallback of anOnDisplayedChangeCallbacks) { aCallback (aDispObjects); }return 0;});// Create property undo/redo trackerconst aPropertyUndoable = new OccPropertyUndoableController(anUndoRedo);// Subscribe property tracker on selection and display changesanOnSelectionChangeCallbacks.push (aPropertyUndoable.checkChanges.bind(aPropertyUndoable));anOnDisplayedChangeCallbacks.push (aPropertyUndoable.checkChanges.bind(aPropertyUndoable));...// On undo button click if(!anUndoRedo){ return; } anUndoRedo.undo(); ... // On redo button click if(!anUndoRedo){ return; } anUndoRedo.redo();... Copy
// Add on selection change callbackslet anOnSelectionChangeCallbacks = [];OccViewerModule.eventManager.addEventListener('onSelectedObjectsChanged', function (){ let aSelObjects = this.selectionManager.selectedObjects; for (let aCallback of anOnSelectionChangeCallbacks) { aCallback (aSelObjects); }return 0;});// Add on displayed change callbackslet anOnDisplayedChangeCallbacks = [];OccViewerModule.eventManager.addEventListener('onDisplayedObjectsChanged', function (){ let aDispObjects = OccViewerModule.interactiveContext.displayedObjects; for (let aCallback of anOnDisplayedChangeCallbacks) { aCallback (aDispObjects); }return 0;});// Create property undo/redo trackerconst aPropertyUndoable = new OccPropertyUndoableController(anUndoRedo);// Subscribe property tracker on selection and display changesanOnSelectionChangeCallbacks.push (aPropertyUndoable.checkChanges.bind(aPropertyUndoable));anOnDisplayedChangeCallbacks.push (aPropertyUndoable.checkChanges.bind(aPropertyUndoable));...// On undo button click if(!anUndoRedo){ return; } anUndoRedo.undo(); ... // On redo button click if(!anUndoRedo){ return; } anUndoRedo.redo();...
Contains implementation of undo/redo controller OccUndoRedoController, which uses OccUndoRedoParams to build stack of application states. Contains implementation of OccPropertyUndoableController which tracks objects property changes and store their states in OccUndoRedoController stack.
Example: Initialization of undo redo controller.
Example: Usage of property undoable controller.