0.54.0

  • Added base classes Executable and Despatcher and two derived Node classes: ExecutableNode and ExecutableOpHolder.

  • Added an enabled/disabled plug to all SceneNodes. Nodes with no inputs output an empty scene when disabled, and SceneProcessors output the first input unchanged. The enabled/disabled state can be toggled using the node right click menu or the “d” hotkey in the Graph Editor.

  • Added SceneNode::hash*() methods to match the GafferScene::compute*() methods. This was necessary for the enabled plug to be implemented, and also makes the implementation of derived classes more readable. Matching pairs of hash*() and compute*() methods should be reused as a pattern throughout Gaffer where appropriate in the future.

  • Renamed SceneElementProcessor::process*() methods to SceneElementProcessor::computeProcessed*() and SceneElementProcessor::hash*() methods to SceneElementProcessor::hashProcessed*(). This was necessary to resolve conflicts with the name hash*() methods at the SceneNode level.

  • Removed the ability to return distant descendants from the GraphComponent::getChild() function. Also modified GraphComponent method signatures to use InternedString where appropriate. This change alone gives a 10-15% speedup in evaluating a benchmark GafferScene network.

  • Added GraphComponent::descendant() method to replace the lost functionality in GraphComponent::getChild().

  • Fixed bug whereby ViewportGadget sent keyReleaseSignal() to the keyPressSignal() of child Gadgets.

  • Added Style::renderLine() method.

  • VectorDataWidget now supports InternedStringVectorData. This makes it possible to view InternedStringVectorData in the browser app.

  • Fixed errors caused by trying to view a SceneReader with an empty filename.

  • The currently active tab for each panel is now saved with each layout.

  • Renamed GraphEditor to NodeGraph - the previous name was confusing to users. Renaming all the classes rather than just changing the label, because we want a fairly straightforward mapping from UI->API to help users make the transition into scripting.

  • Multiple shortcuts may now be specified for each menu item by passing a comma separated list of shortcuts in the “shortCut” field of the menu item.

  • EditMenu now uses both backspace and delete as shortcuts for the delete action.

  • Double-clicking a node in the Node Graph now makes any Node Editor tabs editing that node visible by making them the current tab.

  • The ` key (left of the 1 on the keyboard) may now be used to toggle in and out of fullscreen mode.

  • Renamed SceneEditor to SceneHierarchy to be more explicit that it visualises the scene graph and doesn’t really provide much in the way of editing.

  • Renamed TimeEditor to a more user friendly Timeline.

  • The File->SaveAs… menu item now ensures that the file saved always has a “.gfr” extension.

  • Added Scene->Object->Modifiers->MeshType node for converting meshes between polygons and subdivs, and optionally adding normals when converting to polygons.

  • The Scene Inspector now displays mesh interpolation.

  • Fixed bugs which could prevent the UI updating appropriately when plug values were changed.

  • Optimised redundant updates in the SceneHierarchy editor.