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.