Skip to content

Commit

Permalink
EditScopeAlgo : Fix tweak node enabled inputs
Browse files Browse the repository at this point in the history
The tweak nodes should have their `enabled` plugs driven by the scene processor `enabled` plug. Previously we were only setting their value at creation time, and to a `Plug` object which will always evaluate to `True`.
  • Loading branch information
ericmehl committed Jul 7, 2023
1 parent 8335938 commit 00188e8
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 2 deletions.
1 change: 1 addition & 0 deletions Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Fixes
- Fixed bug causing the cursor position to be reset to the end if the number of digits in the plug value changed while incrementing/decrementing with the keyboard up/down arrow keys.
- Fixed bug causing the cursor position to be reset to the end when incrementing an animated plug.
- Fixed intermittent `---` values when drag-changing an animated plug value.
- EditScopes : Fixed bug where the enabled state of `AttributeEdits`, `OptionEdits` and `SetMembershipEdits` did not have any effect. This fix will only apply to newly created `AttributeEdits`, `OptionEdits` and `SetMembershipEdits`.

1.2.9.0 (relative to 1.2.8.0)
=======
Expand Down
8 changes: 8 additions & 0 deletions python/GafferSceneTest/EditScopeAlgoTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def testPruning( self ) :
self.assertFalse( GafferScene.EditScopeAlgo.getPruned( scope, "/group/cube" ) )
self.assertEqual( len( list( GafferScene.SceneProcessor.Range( scope ) ) ), 1 )
self.assertEqual( scope["PruningEdits"]["paths"].getValue(), IECore.StringVectorData( [ "/group/plane" ] ) )
self.assertEqual( scope["PruningEdits"]["Prune"]["enabled"].getInput(), scope["PruningEdits"]["enabled"] )
self.assertFalse( GafferScene.SceneAlgo.exists( scope["out"], "/group/plane" ) )
self.assertTrue( GafferScene.SceneAlgo.exists( scope["out"], "/group/cube" ) )

Expand Down Expand Up @@ -162,6 +163,7 @@ def testTransform( self ) :
self.assertIsInstance( edit, GafferScene.EditScopeAlgo.TransformEdit )
self.assertTrue( GafferScene.EditScopeAlgo.hasTransformEdit( editScope, "/plane" ) )
self.assertIsNotNone( GafferScene.EditScopeAlgo.acquireTransformEdit( editScope, "/plane", createIfNecessary = False ) )
self.assertEqual( editScope["TransformEdits"]["Transform"]["enabled"].getInput(), editScope["TransformEdits"]["enabled"] )
self.assertEqual( editScope["out"].transform( "/plane" ), imath.M44f() )
edit.translate.setValue( imath.V3f( 2, 3, 4 ) )
self.assertEqual( editScope["out"].transform( "/plane" ), imath.M44f().translate( imath.V3f( 2, 3, 4 ) ) )
Expand Down Expand Up @@ -318,6 +320,7 @@ def testParameterEdits( self ) :
self.assertEqual( edit["mode"].getValue(), Gaffer.TweakPlug.Mode.Replace )
self.assertEqual( edit["value"].getValue(), imath.Color3f( 0 ) )
self.assertEqual( edit["enabled"].getValue(), False )
self.assertEqual( editScope["LightEdits"]["ShaderTweaks"]["enabled"].getInput(), editScope["LightEdits"]["enabled"] )

edit["enabled"].setValue( True )
edit["value"].setValue( imath.Color3f( 1 ) )
Expand Down Expand Up @@ -667,6 +670,7 @@ def testAttributeEdits( self ) :
self.assertEqual( edit["mode"].getValue(), Gaffer.TweakPlug.Mode.Create )
self.assertEqual( edit["value"].getValue(), 1.0 )
self.assertEqual( edit["enabled"].getValue(), False )
self.assertEqual( editScope["AttributeEdits"]["AttributeTweaks"]["enabled"].getInput(), editScope["AttributeEdits"]["enabled"] )

edit["enabled"].setValue( True )
edit["value"].setValue( 2.0 )
Expand Down Expand Up @@ -1084,6 +1088,9 @@ def testSetMembership( self ) :

GafferScene.EditScopeAlgo.setSetMembership( scope, IECore.PathMatcher( ["/group/cube"] ), "A", membership.Added )

self.assertEqual( scope["SetMembershipEdits"]["Set"]["enabled"].getInput(), scope["SetMembershipEdits"]["enabled"] )
self.assertEqual( scope["SetMembershipEdits"]["Set1"]["enabled"].getInput(), scope["SetMembershipEdits"]["enabled"] )

for path, set, status in (
( "/group/plane", "A", membership.Unchanged ),
( "/group/plane", "B", membership.Unchanged ),
Expand Down Expand Up @@ -1272,6 +1279,7 @@ def testOptionEdits( self ) :
self.assertEqual( edit["mode"].getValue(), Gaffer.TweakPlug.Mode.Create )
self.assertEqual( edit["value"].getValue(), 10 )
self.assertEqual( edit["enabled"].getValue(), False )
self.assertEqual( editScope["OptionEdits"]["OptionTweaks"]["enabled"].getInput(), editScope["OptionEdits"]["enabled"] )

edit["enabled"].setValue( True )
edit["value"].setValue( 20 )
Expand Down
6 changes: 4 additions & 2 deletions src/GafferScene/EditScopeAlgo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ SceneProcessorPtr attributeProcessor( const std::string &name )
result->addChild( attributeTweaks );
attributeTweaks->inPlug()->setInput( result->inPlug() );
attributeTweaks->filterPlug()->setInput( pathFilter->outPlug() );
attributeTweaks->enabledPlug()->setValue( result->enabledPlug() );
attributeTweaks->enabledPlug()->setInput( result->enabledPlug() );
attributeTweaks->localisePlug()->setValue( true );
attributeTweaks->ignoreMissingPlug()->setValue( true );

Expand Down Expand Up @@ -902,6 +902,7 @@ SceneProcessorPtr setMembershipProcessor()
addSet->filterPlug()->setInput( addPathFilter->outPlug() );
addSet->namePlug()->setInput( spreadsheet->enabledRowNamesPlug() );
addSet->modePlug()->setValue( GafferScene::Set::Mode::Add );
addSet->enabledPlug()->setInput( result->enabledPlug() );
addSet->setVariablePlug()->setValue( "setMembership:set" );

GafferScene::SetPtr removeSet = new GafferScene::Set();
Expand All @@ -910,6 +911,7 @@ SceneProcessorPtr setMembershipProcessor()
removeSet->filterPlug()->setInput( removePathFilter->outPlug() );
removeSet->namePlug()->setInput( spreadsheet->enabledRowNamesPlug() );
removeSet->modePlug()->setValue( GafferScene::Set::Mode::Remove );
removeSet->enabledPlug()->setInput( result->enabledPlug() );
removeSet->setVariablePlug()->setValue( "setMembership:set" );

auto rowsPlug = static_cast<Spreadsheet::RowsPlug *>(
Expand Down Expand Up @@ -1102,7 +1104,7 @@ SceneProcessorPtr optionProcessor( const std::string &name )
OptionTweaksPtr optionTweaks = new OptionTweaks;
result->addChild( optionTweaks );
optionTweaks->inPlug()->setInput( result->inPlug() );
optionTweaks->enabledPlug()->setValue( result->enabledPlug() );
optionTweaks->enabledPlug()->setInput( result->enabledPlug() );
optionTweaks->ignoreMissingPlug()->setValue( true );

PlugAlgo::promoteWithName( optionTweaks->tweaksPlug(), "edits" );
Expand Down

0 comments on commit 00188e8

Please sign in to comment.