3.9.0 Migration Guide#

In this release, you’ll find only minor API cleanups, refactorings, and changes. In the majority of cases, these won’t impact already existing applications, which run on our previous version (3.8.0). This document provides both a general overview of the required updates and a detailed list of API changes.

Removal of Nodes and Other Entities from Snapshots#

In earlier versions, removing nodes or other first-class entities (like annotations, clip planes, etc.) didn’t affect existing snapshots. This could be confusing because restoring a snapshot created before the removal would recreate the deleted entities.

We’ve changed how deletions are handled in this release. Now, when you remove a first-class entity, it’s also removed from all existing snapshots. Restoring a snapshot won’t bring back deleted entities.

With this change, the any remove operation becomes permanent and irreversible. To help prevent accidental deletions, we’ve added a new “safe-delete” flag to all our removal functions. This flag lets you check if an entity is referenced by any snapshots before removing it.

The following example demonstrates a possible usage of the new “safe-delete” flag for the removal of a Node.

// Removal of a Node with the "safe-delete" flag set to true
const removeState : webvis.RemoveState = await myContext.remove(nodeId, true);

// If the Node is referenced by a Snaphot
if(removeState === webvis.RemoveState.REFERENCED_BY_SNAPSHOT)
{
    // Notify the user and ask if the removal is intended
    const answer : boolean = await askUser();

    // If the answer is yes, call remove again with the "safe-delete" flag set to false or without the flag
    // to perform a permanent removal of the Node.
    if(answer === true)
    {
        await myContext.remove(nodeId, false);
    }
}

Improved Control Over Render Modes (Viewers vs. Nodes)#

In earlier versions, the render mode setting applied at the viewer level webvis.ViewerSettingStrings.RENDER_MODE automatically overrode the render mode property webvis.Property.RENDER_MODE for all nodes within the scene. This caused conflicts because both settings ultimately controlled the render mode at the node level, leading to difficulties in using different render modes for separate viewers and potentially causing unexpected node states.

In this release we’ve introduced a new default render mode for nodes: webvis.RenderMode.UNSET. This allows a clear separation of how render modes are applied. Now, the viewer-level render mode applies to all nodes unless a specific node’s render mode is set differently.

API Changes#

The following list contain API additions, changes and removals which might be subject for migration efforts. Most alterations were performed to provide a more streamlined experience when working with the API and come only with minimal need for manual intervention from application developers.

ContextAPI

ViewerAPI

Events

Functions

Types

Enums

DrawingMode

EventType

GizmoTransformationMode

InteractionMode

MeasurementType

RenderMode

SettingStrings

TopologySubType

ViewerSettingStrings