new UserModeHandler()
Example
const original_handler = PD.Registry.getUserModeHandler(PD.MODE.EDIT); PD.Registry.registerUserModeHandler(PD.MODE.EDIT, MyCustomUserModelHandlerClass); /// ... /// When done, reset to the original. PD.Registry.registerUserModeHandler(PD.MODE.EDIT, original_handler);
Classes
Members
-
:boolean
isUserModeHandler <readonly>
-
A flag identifying this object as an edit mode handler.
Type
- boolean
Methods
-
cancel(host)
-
Cancels this edit mode.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
-
complete(host)
-
Completes any pending modal action(s) in this edit mode.
If this is a multi-stage action and it is still within the setup stages, this method should perform any cleanup actions that may be required to cancel out, then reset the user mode to the default edit mode and return false.
If setup stages are over, the user mode should perform whatever actions are required to complete or finalise the action, reset the user mode to the default edit mode and return true.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
Returns:
Returns true if a pending action was completed.
- Type
- boolean
-
displayDimensions(host, mesh)
-
Regenerates dimension lines associated with this action, if any.
This method is called when the host selection manager is updating the model view after something has changed. The role of this method is to add whatever dimensions are associated with this action to the given dimension mesh.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
meshPD.PolyMesh The mesh to add the dimension(s) to.
Returns:
Returns true if something in the model was dimensioned and the mesh should be visible, otherwise false.
- Type
- boolean
-
handleClickSelect(host, raycaster, event)
-
Handle interactive click/tap selection events in the canvas.
This method is called when the user has clicked/tapped and released the pointer within the model canvas without dragging, but away from the 3D cursor.
For actions that have one or more initial setup stages (such as a rotation that first needs an origin and then a reference point to rotate from), this method typically checks whether the
host.userActionStageis still within setup and, if so, progresses it to the next stage and returns true.If setup stages are over and the action is completed, the user mode should be returned to the default edit mode and the method should return false.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
raycasterTHREE.Raycaster The ray cast into the current scene.
eventobject The DOM event that triggered this selection.
Returns:
Returns true if something in the model was selected and geometry was added to the mesh, otherwise false.
- Type
- boolean
-
handleDragEnd(host, cursor, event)
-
Complete the action when the 3D cursor drag has finished.
This method is called when the user interactively releases the pointer after dragging the 3D cursor in the model canvas.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
cursorPD.Cursor The cursor that just finished moving.
eventobject The DOM event that triggered the end of the move.
Returns:
Returns true if the move was finalised.
- Type
- boolean
-
handleDragMove(host, newPos, cursor, event)
-
Update the action as the 3D cursor is interactively dragged.
This method is called multiple times as the user interactively drags the 3D cursor in the model canvas with the pointer down.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
newPosTHREE.Vector3 The proposed new position of the cursor.
cursorPD.Cursor The cursor that moved.
eventobject The DOM event that triggered this move.
Returns:
Returns true if the move was applied.
- Type
- boolean
-
handleDragStart(host, cursor, event)
-
Prepare the action just prior to a 3D cursor drag event.
This method is called when the user has clicked/tapped the pointer on one of the active cursor manipulators in the model canvas and has just begun to drag with the pointer down.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
cursorPD.Cursor The cursor that is about to move.
eventobject The DOM event that triggered this move.
Returns:
Returns true if the move is allowed.
- Type
- boolean
-
handlePreSelect(host, raycaster, event)
-
Handle interactive pre-selection events within the model canvas.
This method is called when the user first clicks/taps within the model canvas, but away from the 3D cursor. At this stage, the system doesn't yet know whether the user intends to select something in the model or is simply trying to pan or rotate the view. Thus, the role of this method is to provide some visual feedback to indicate what would be selected if the user were to release the pointer without dragging.
For actions that have one or more initial setup stages (such as a rotation that first needs an origin and then a reference point to rotate from), this method typically checks whether the
host.userActionStageis still within setup and, if so, positions the 3D cursor at the position at the clicked point on the cursor plane, ready to be dragged into position.Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
raycasterTHREE.Raycaster The ray cast into the current scene.
eventobject The DOM event that triggered this callback.
Returns:
Returns true if something in the model was pre-selected and geometry was added to the mesh, otherwise false.
- Type
- boolean
-
initialise(host)
-
Called each time this edit mode is entered.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
-
progressToNextStage(host [, stage])
-
Increments through the stages of an interactive process.
This method should do whatever is required to end the previous stage and transition to the next stage in a multi-stage action.
Parameters:
Name Type Argument Description hostPD.SelectionManager The selection manager.
stagenumber <optional>
An optional stage in the progress, defaults to -1.
-
setCursorPosition(host, pos [, event])
-
Manually sets the cursor position during an action.
This method is called when the user manually edits the cursor position using the keyboard or other numeric input within the UI, as opposed to dragging the cursor. It is not called when the cursor is moved interactively using the manipulators and a pointer.
This method should undertake whatever action dragging the cursor would have at the current progress stage.
Parameters:
Name Type Argument Description hostPD.SelectionManager The selection manager.
posObject | Array The new position to move the cursor to.
eventEvent <optional>
The event that invoked this method.
-
dimensionCurrentSelection(host, mesh) <static>
-
A utility method to dimension the current selection set.
This will update dimensions on either the selected junction, path segment or element.
Parameters:
Name Type Description hostPD.SelectionManager The selection manager.
meshPD.PolyMesh The mesh to add the dimension(s) to.
-
isUserModeHandlerClass() <static>
-
Indicates that this is an edit mode class rather than instance.