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.