0.14.0.0

UI

  • NodeGraph
    • Improved “Select Affected Objects” menu item. This is now available on filters as well as on scene processors.
    • Added support for dragging objects from the Viewer and SceneHierarchy and dropping them onto scene processors and PathFilters, to specify the affected objects.
      • Dragging onto a node replaces the current paths.
      • Shift+Drag adds to the current paths.
      • Control+Drag removes from the current paths.
    • Added plug context menu for moving promoted plugs on Boxes.
  • NodeEditor
    • Added “Select Affected Objects” menu item in the tool menu for filters and scene processors.
  • UIEditor
    • Added + button for adding plugs, and - button for deleting them.
    • Added the ability to create nested sections and drag+drop plugs between them.
  • Viewer
    • Fixed grid and gnomon menus.

Core

  • Expression
    • Added support for setting multiple plugs from one expression (#1315).
    • Added support for vector, color and box outputs (#1315).
    • Added support for assigning to plugs within conditional branches (#1349).

Scene

  • Improved ParentConstraint so it is acts more like the equivalent parenting operation, and maintains the local transforms of the objects being constrained. Note that this is a change of behaviour, but one that we feel is much for the better.
  • Fixed ShaderAssignment to allow referencing of promoted shader input plugs.

API

  • Added parallelTraverse() and filteredParallelTraverse() methods to SceneAlgo. These make it trivial to traverse all locations in a scene using multiple threads.
  • Added inputTransform argument to Constraint::computeConstraint().
  • Removed TransformPlugValueWidget.
  • Used Plug rather than CompoundPlug in several places. CompoundPlug is being phased out because the Plug base class is now perfectly capable of having child plugs.
    • ExecutableNode::dispatcherPlug()
    • LocalDispatcher dispatcher plug
    • Shader::parametersPlug()
  • Fixed support for boost python object methods as menu commands.
  • Pointer
    • Fixed registerPointer() method.
    • Added binding for registerPointer().
  • Added scoped argument to Signal.connect() python bindings.
  • Added SignalClass for binding signals, and deprecated the old SignalBinder.
  • Added support for binding signals with 4 arguments.
  • Added LazyMethod.flush() method.
  • Fixed update bug in PathListingWidget.setSelectedPaths().
  • Added support for “nodule:type” metadata to control the type of nodule created for a plug. This should be used in preference to Nodule::registerNodule(), which has been deprecated.
  • Added support for modifying CompoundNodule orientation, spacing and direction using plug metadata.
  • Improved signalling of instance metadata changes.
  • Added default arguments for ValuePlug constructor arguments.

Incompatibilities

  • Changed Constraint::computeConstraint() function signature.
  • Changed ParentConstraint behaviour to include the local transform of the constrained object.
  • Removed TransformPlugValueWidget.
  • Changed plug type returned by ExecutableNode::dispatcherPlug().
  • Changed Dispatcher::SetupPlugsFn signature.
  • Changed ExecutableNode::dispatcherPlug() signature.
  • Changed Shader::parametersPlug() to Plug rather than CompoundPlug.
  • Removed asUserPlug arguments from Box promotion methods. Plugs are now always promoted directly under a box, and never as user plugs.
  • Changed signature of Nodule::registerNodule() when registering a subclass.
  • Changed signature of CompoundNodule constructor, which now accepts a Plug rather than CompoundPlug.
  • Replaced UIEditor setSelectedPlug()/getSelectedPlug() methods with setSelection()/getSelection().
  • Added arguments to Metadata signals.