Пример #1
0
	def testPartialConnectionSerialisation( self ) :

		s = Gaffer.SplineDefinitionff(
			(
				( 0, 0 ),
				( 0.2, 0.3 ),
				( 0.4, 0.9 ),
				( 1, 1 ),
			),
			Gaffer.SplineDefinitionInterpolation.CatmullRom
		)

		script = Gaffer.ScriptNode()
		script["n"] = Gaffer.Node()
		script["n"]["user"]["s"] = Gaffer.SplineffPlug( defaultValue=s, flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		script["n"]["user"]["x"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		script["n"]["user"]["y"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

		script["n"]["user"]["s"].pointXPlug( 0 ).setInput( script["n"]["user"]["x"] )
		script["n"]["user"]["s"].pointYPlug( 2 ).setInput( script["n"]["user"]["y"] )

		def assertConnection( script ) :

			self.assertTrue( script["n"]["user"]["s"].getInput() is None )
			self.assertTrue( script["n"]["user"]["s"]["interpolation"].getInput() is None )
			for i in range( 0, 4 ) :

				if i == 0 :
					self.assertTrue( script["n"]["user"]["s"].pointXPlug( i ).getInput().isSame( script["n"]["user"]["x"] ) )
				else :
					self.assertTrue( script["n"]["user"]["s"].pointXPlug( i ).getInput() is None )

				if i == 2 :
					self.assertTrue( script["n"]["user"]["s"].pointYPlug( i ).getInput().isSame( script["n"]["user"]["y"] ) )
				else :
					self.assertTrue( script["n"]["user"]["s"].pointYPlug( i ).getInput() is None )

		assertConnection( script )

		script2 = Gaffer.ScriptNode()
		script2.execute( script.serialise() )

		assertConnection( script2 )
Пример #2
0
    def testReadOnlySerialisation(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["p"] = GafferImage.AtomicFormatPlug(
            flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic)
        s["n"]["p"].setValue(
            GafferImage.Format(IECore.Box2i(IECore.V2i(0), IECore.V2i(10)),
                               2.0))
        s["n"]["p"].setFlags(Gaffer.Plug.Flags.ReadOnly, True)

        s2 = Gaffer.ScriptNode()
        s2.execute(s.serialise())

        self.assertEqual(
            s2["n"]["p"].getValue(),
            GafferImage.Format(IECore.Box2i(IECore.V2i(0), IECore.V2i(10)),
                               2.0))
        self.assertTrue(s2["n"]["p"].getFlags(Gaffer.Plug.Flags.ReadOnly))
Пример #3
0
	def testPlugFlagsChangedSignal( self ) :
	
		n = Gaffer.Node()
		n["p"] = Gaffer.Plug()

		cs = GafferTest.CapturingSlot( n.plugFlagsChangedSignal() )
		self.assertEqual( len( cs ), 0 )
		
		n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, True )
		self.assertEqual( len( cs ), 1 )
		self.failUnless( cs[0][0].isSame( n["p"] ) )
		
		# second time should have no effect because they're the same
		n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, True )
		self.assertEqual( len( cs ), 1 )
		
		n["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, False )
		self.assertEqual( len( cs ), 2 )
		self.failUnless( cs[1][0].isSame( n["p"] ) )
Пример #4
0
    def testSerialiseDynamicBoolPlugs(self):

        n = Gaffer.Node()

        n["p1"] = Gaffer.BoolPlug(defaultValue=True,
                                  flags=Gaffer.Plug.Flags.Default
                                  | Gaffer.Plug.Flags.Dynamic)
        n["p1"].setValue(False)

        s = Gaffer.ScriptNode()
        s["n"] = n

        ss = s.serialise()

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.assertEqual(s["n"]["p1"].defaultValue(), True)
        self.assertEqual(s["n"]["p1"].getValue(), False)
Пример #5
0
	def testAddNoduleWithInputConnection( self ) :

		script = Gaffer.ScriptNode()

		script["n"] = Gaffer.Node()
		script["n"]["in"] = Gaffer.Plug()
		script["n"]["out"] = Gaffer.Plug( direction = Gaffer.Plug.Direction.Out )
		script["n"]["out"].setInput( script["n"]["in"] )

		Gaffer.Metadata.registerValue( script["n"]["out"], "nodule:type", "" )

		g = GafferUI.GraphGadget( script )
		self.assertTrue( g.nodeGadget( script["n"] ).nodule( script["n"]["out"] ) is None )
		self.assertTrue( g.connectionGadget( script["n"]["out"] ) is None )

		Gaffer.Metadata.registerValue( script["n"]["out"], "nodule:type", "GafferUI::StandardNodule" )

		self.assertTrue( g.nodeGadget( script["n"] ).nodule( script["n"]["out"] ) is not None )
		self.assertTrue( g.connectionGadget( script["n"]["out"] ) is None )
Пример #6
0
    def testPlugValueWidgetAccess(self):

        n = Gaffer.Node()
        n["c"] = Gaffer.CompoundPlug()
        n["c"]["i"] = Gaffer.IntPlug()
        n["c"]["s"] = Gaffer.StringPlug()

        u = GafferUI.StandardNodeUI(n)

        self.assertTrue(
            isinstance(u.plugValueWidget(n["c"]), GafferUI.PlugValueWidget))
        self.assertTrue(u.plugValueWidget(n["c"]).getPlug().isSame(n["c"]))

        self.assertEqual(u.plugValueWidget(n["c"]["i"]), None)
        self.assertTrue(
            isinstance(u.plugValueWidget(n["c"]["i"], lazy=False),
                       GafferUI.PlugValueWidget))
        self.assertTrue(
            u.plugValueWidget(n["c"]["i"]).getPlug().isSame(n["c"]["i"]))
Пример #7
0
	def testSerialisationOfMeshPrimitives( self ) :

		# right now we can only serialise types which define __repr__, but that
		# isn't defined for all cortex types. this test should pass when we get round
		# to defining it for MeshPrimitives - we should do the other primitives at the
		# same time, obviously.

		s = Gaffer.ScriptNode()
		s["n"] = Gaffer.Node()
		s["n"]["t"] = Gaffer.ObjectPlug( "hello", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, defaultValue = IECore.MeshPrimitive.createPlane( IECore.Box2f( IECore.V2f( 0 ), IECore.V2f( 10 ) ) ) )
		s["n"]["t"].setValue( IECore.MeshPrimitive.createPlane( IECore.Box2f( IECore.V2f( 0 ), IECore.V2f( 1 ) ) ) )

 		se = s.serialise()

		s2 = Gaffer.ScriptNode()
 		s2.execute( se )

		self.assertEqual( s["n"]["t"].defaultValue(), s2["n"]["t"].defaultValue() )
		self.assertEqual( s["n"]["t"].getValue(), s2["n"]["t"].getValue() )
Пример #8
0
    def testAcquire(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["p"] = Gaffer.IntPlug()

        # hold a reference to the ScriptWindow
        # to make sure it stays alive
        sw = GafferUI.ScriptWindow.acquire(s)

        w = GafferUI.PlugValueWidget.acquire(s["n"]["p"])
        self.assertTrue(isinstance(w, GafferUI.NumericPlugValueWidget))
        self.assertTrue(w.getPlug().isSame(s["n"]["p"]))
        self.assertTrue(GafferUI.PlugValueWidget.acquire(s["n"]["p"]) is w)

        pw = GafferUI.PlugWidget.acquire(s["n"]["p"])
        self.assertTrue(isinstance(pw, GafferUI.PlugWidget))
        self.assertTrue(pw.plugValueWidget() is w)
        self.assertTrue(GafferUI.PlugWidget.acquire(s["n"]["p"]) is pw)
Пример #9
0
    def testComparisonIsNotAssignment(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default
                                             | Gaffer.Plug.Flags.Dynamic)
        s["n"]["user"]["o"] = Gaffer.BoolPlug(flags=Gaffer.Plug.Flags.Default
                                              | Gaffer.Plug.Flags.Dynamic)

        s["e"] = Gaffer.Expression()
        s["e"].setExpression("""parent.n.user.o = parent.n.user.i == 2;""",
                             "OSL")

        self.assertTrue(s["n"]["user"]["i"].getInput() is None)
        self.assertFalse(s["n"]["user"]["o"].getValue())

        s["n"]["user"]["i"].setValue(2)
        self.assertTrue(s["n"]["user"]["o"].getValue())
Пример #10
0
	def testFactory( self ) :

		node = GafferTest.AddNode()
		self.assertTrue( GafferUI.View.create( node["sum"] ) is None )

		# check that we can make our own view and register it for the node

		GafferUI.View.registerView( GafferTest.AddNode, "sum", self.MyView )

		view = GafferUI.View.create( node["sum"] )
		self.assertTrue( isinstance( view, self.MyView ) )
		self.assertTrue( view["in"].getInput().isSame( node["sum"] ) )

		# and check that that registration leaves other nodes alone

		n = Gaffer.Node()
		n["sum"] = Gaffer.IntPlug( direction = Gaffer.Plug.Direction.Out )

		self.assertTrue( GafferUI.View.create( n["sum"] ) is None )
Пример #11
0
    def testAnimationWithinAReference(self):

        s = Gaffer.ScriptNode()

        s["b"] = Gaffer.Box()
        s["b"]["n"] = Gaffer.Node()
        s["b"]["n"] = GafferTest.AddNode()

        Gaffer.PlugAlgo.promote(s["b"]["n"]["op1"])
        Gaffer.PlugAlgo.promote(s["b"]["n"]["sum"])

        self.assertTrue(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["op2"]))

        op2Curve = Gaffer.Animation.acquire(s["b"]["n"]["op2"])

        # Cannot promote an animated plug, because it has an input.
        self.assertFalse(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["op2"]))

        op2Curve.addKey(Gaffer.Animation.Key(0, 0, Gaffer.Animation.Type.Step))
        op2Curve.addKey(Gaffer.Animation.Key(1, 1, Gaffer.Animation.Type.Step))

        with Gaffer.Context() as c:
            self.assertEqual(s["b"]["sum"].getValue(), 0)
            c.setTime(1)
            self.assertEqual(s["b"]["sum"].getValue(), 1)

        fileName = self.temporaryDirectory() + "/reference.grf"
        s["b"].exportForReference(fileName)

        s["r"] = Gaffer.Reference()
        s["r"].load(fileName)

        with Gaffer.Context() as c:
            self.assertEqual(s["r"]["sum"].getValue(), 0)
            c.setTime(1)
            self.assertEqual(s["r"]["sum"].getValue(), 1)

        s["r"]["op1"].setValue(2)

        with Gaffer.Context() as c:
            self.assertEqual(s["r"]["sum"].getValue(), 2)
            c.setTime(1)
            self.assertEqual(s["r"]["sum"].getValue(), 3)
Пример #12
0
    def testUndoAcquire(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default
                                               | Gaffer.Plug.Flags.Dynamic)

        self.assertEqual(len(s.children(Gaffer.Node)), 1)

        with Gaffer.UndoScope(s):
            curve = Gaffer.Animation.acquire(s["n"]["user"]["f"])
            self.assertEqual(len(s.children(Gaffer.Node)), 2)

        s.undo()
        self.assertEqual(len(s.children(Gaffer.Node)), 1)

        s.redo()
        self.assertEqual(len(s.children(Gaffer.Node)), 2)
Пример #13
0
    def testPromoteDynamicColorPlugAndSerialise(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["c"] = Gaffer.Color3fPlug(flags=Gaffer.Plug.Flags.Default
                                         | Gaffer.Plug.Flags.Dynamic)

        b = Gaffer.Box.create(s, Gaffer.StandardSet([s["n"]]))
        b.promotePlug(b["n"]["c"])

        ss = s.serialise()

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.assertTrue(isinstance(s["Box"]["user"]["n_c"],
                                   Gaffer.Color3fPlug))
        self.assertTrue(s["Box"]["n"]["c"].getInput().isSame(
            s["Box"]["user"]["n_c"]))
Пример #14
0
    def testContext(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["p"] = Gaffer.IntPlug()

        l = GafferUI.PlugLayout(s["n"])
        self.assertTrue(l.getContext().isSame(s.context()))
        self.assertTrue(
            l.plugValueWidget(s["n"]["p"],
                              lazy=False).getContext().isSame(s.context()))

        c = Gaffer.Context()
        l.setContext(c)
        self.assertTrue(l.getContext().isSame(c))
        self.assertTrue(l.plugValueWidget(s["n"]["p"]).getContext().isSame(c))

        l = GafferUI.PlugLayout(s)
        self.assertTrue(l.getContext().isSame(s.context()))
Пример #15
0
    def testFlagsNeverSerialisedAsAll(self):

        # it's a terrible idea to serialise a set of flags that happen to be All
        # as All, rather than as the or-ing of the specific flags, because when new
        # flags are introduced in the future (and default to off) they will suddenly
        # pop on when loading old files.

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["p"] = Gaffer.Plug(flags=Gaffer.Plug.Flags.All)

        ss = s.serialise()

        self.failIf("All" in ss)

        s = Gaffer.ScriptNode()
        s.execute(ss)

        self.assertEqual(s["n"]["p"].getFlags(), Gaffer.Plug.Flags.All)
Пример #16
0
    def testPromoteColor(self):

        s = Gaffer.ScriptNode()
        s["b"] = Gaffer.Box()
        s["b"]["n"] = Gaffer.Node()
        s["b"]["n"]["c"] = Gaffer.Color3fPlug()
        s["b"]["n"]["c"].setValue(IECore.Color3f(1, 0, 1))

        self.assertTrue(Gaffer.PlugAlgo.canPromote(s["b"]["n"]["c"]))
        self.assertFalse(Gaffer.PlugAlgo.isPromoted(s["b"]["n"]["c"]))

        p = Gaffer.PlugAlgo.promote(s["b"]["n"]["c"])

        self.assertTrue(isinstance(p, Gaffer.Color3fPlug))
        self.assertTrue(s["b"]["n"]["c"].getInput().isSame(p))
        self.assertTrue(s["b"]["n"]["c"]["r"].getInput().isSame(p["r"]))
        self.assertTrue(s["b"]["n"]["c"]["g"].getInput().isSame(p["g"]))
        self.assertTrue(s["b"]["n"]["c"]["b"].getInput().isSame(p["b"]))
        self.assertEqual(p.getValue(), IECore.Color3f(1, 0, 1))
Пример #17
0
    def testSectionQueries(self):

        n = Gaffer.Node()
        n["user"]["a"] = Gaffer.IntPlug()
        n["user"]["b"] = Gaffer.IntPlug()
        n["user"]["c"] = Gaffer.IntPlug()

        self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]), [""])

        Gaffer.Metadata.registerValue(n["user"]["a"], "layout:section", "A")
        Gaffer.Metadata.registerValue(n["user"]["b"], "layout:section", "B")
        Gaffer.Metadata.registerValue(n["user"]["c"], "layout:section", "C")

        self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]),
                         ["A", "B", "C"])

        Gaffer.Metadata.registerValue(n["user"]["a"], "layout:index", 3)
        self.assertEqual(GafferUI.PlugLayout.layoutSections(n["user"]),
                         ["B", "C", "A"])
Пример #18
0
    def testYDrivingX(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["v"] = Gaffer.V2fPlug(flags=Gaffer.Plug.Flags.Default
                                             | Gaffer.Plug.Flags.Dynamic)

        s["e"] = Gaffer.Expression()
        s["e"].setExpression(
            'parent["n"]["user"]["v"]["x"] = parent["n"]["user"]["v"]["y"] * 2'
        )

        s["n"]["user"]["v"]["y"].setValue(2)
        self.assertEqual(s["n"]["user"]["v"]["x"].getValue(), 4)

        s2 = Gaffer.ScriptNode()
        s2.execute(s.serialise())
        self.assertEqual(s2["n"]["user"]["v"]["x"].getValue(), 4)
Пример #19
0
	def testDisabledShaderPassesThroughExternalValue( self ) :

		n1 = Gaffer.Node()
		n1["user"]["v"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		n1["user"]["v"].setValue( IECore.V3f( 12, 11, 10 ) )

		n2 = GafferOSL.OSLShader()
		n2.loadShader( "Maths/VectorAdd" )
		n2["parameters"]["a"].setInput( n1["user"]["v"] )

		n3 = GafferOSL.OSLShader()
		n3.loadShader( "Maths/VectorAdd" )
		n3["parameters"]["a"].setInput( n2["parameters"]["a"] )

		n2["enabled"].setValue( False )

		network = n3.attributes()["osl:shader"]
		self.assertEqual( len( network ), 1 )
		self.assertEqual( network[0].parameters["a"].value, IECore.V3f( 12, 11, 10 ) )
Пример #20
0
    def testReplaceFloatWithInt(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default
                                               | Gaffer.Plug.Flags.Dynamic)
        s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default
                                             | Gaffer.Plug.Flags.Dynamic)

        s["e"] = Gaffer.Expression()

        s["e"].setExpression('parent["n"]["user"]["f"] = 10')
        self.assertEqual(s["n"]["user"]["f"].getValue(), 10)
        self.assertEqual(s["n"]["user"]["i"].getValue(), 0)

        s["e"].setExpression('parent["n"]["user"]["i"] = 10')
        self.assertEqual(s["n"]["user"]["f"].getValue(), 0)
        self.assertEqual(s["n"]["user"]["i"].getValue(), 10)
Пример #21
0
    def testSetExpressionShortcuts(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["i"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default
                                             | Gaffer.Plug.Flags.Dynamic)

        s["e"] = Gaffer.Expression()
        cs = GafferTest.CapturingSlot(s["e"].expressionChangedSignal())

        s["e"].setExpression('parent["n"]["user"]["i"] = 10')
        self.assertEqual(len(cs), 1)

        s["e"].setExpression('parent["n"]["user"]["i"] = 10')
        self.assertEqual(len(cs), 1)

        s["e"].setExpression('parent["n"]["user"]["i"] = 20')
        self.assertEqual(len(cs), 2)
Пример #22
0
    def testReadOnlySerialisation(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()
        s["n"]["p"] = Gaffer.Plug(flags=Gaffer.Plug.Flags.Default
                                  | Gaffer.Plug.Flags.Dynamic)
        s["n"]["p2"] = Gaffer.Plug(direction=Gaffer.Plug.Direction.Out,
                                   flags=Gaffer.Plug.Flags.Default
                                   | Gaffer.Plug.Flags.Dynamic)
        s["n"]["p"].setInput(s["n"]["p2"])
        s["n"]["p"].setFlags(Gaffer.Plug.Flags.ReadOnly, True)
        ss = s.serialise()

        s2 = Gaffer.ScriptNode()
        s2.execute(ss)

        self.assertTrue(s2["n"]["p"].getInput().isSame(s2["n"]["p2"]))
        self.assertEqual(s2["n"]["p"].getFlags(Gaffer.Plug.Flags.ReadOnly),
                         True)
Пример #23
0
    def testChangeNoduleType(self):

        n = Gaffer.Node()
        n["p1"] = Gaffer.Plug()
        n["p2"] = Gaffer.Plug()

        g = GafferUI.StandardNodeGadget(n)
        n1 = g.nodule(n["p1"])
        n2 = g.nodule(n["p2"])

        self.assertTrue(isinstance(n1, GafferUI.StandardNodule))
        self.assertTrue(isinstance(n2, GafferUI.StandardNodule))

        Gaffer.Metadata.registerValue(n["p1"], "nodule:type",
                                      "GafferUI::CompoundNodule")

        self.assertTrue(isinstance(g.nodule(n["p1"]), GafferUI.CompoundNodule))
        self.assertTrue(g.nodule(n["p2"]).isSame(n2))
        self.assertTrue(n1.parent() is None)
Пример #24
0
	def testChildPropagationToOutputPlugs( self ) :

		s = Gaffer.ScriptNode()

		s["n"] = Gaffer.Node()
		s["n"]["in"] = Gaffer.Plug()
		s["n"]["out"] = Gaffer.Plug( direction = Gaffer.Plug.Direction.Out )
		s["n"]["out"].setInput( s["n"]["in"] )

		def assertPreconditions() :

			self.assertEqual( s["n"]["in"].keys(), [] )
			self.assertEqual( s["n"]["out"].keys(), [] )
			self.assertTrue( s["n"]["out"].getInput().isSame( s["n"]["in"] ) )

		def assertPostconditions() :

			self.assertEqual( s["n"]["in"].keys(), [ "i", "f" ] )
			self.assertEqual( s["n"]["out"].keys(), [ "i", "f" ] )

			self.assertTrue( isinstance( s["n"]["out"]["i"], Gaffer.IntPlug ) )
			self.assertTrue( s["n"]["out"]["i"].direction(), Gaffer.Plug.Direction.Out )
			self.assertTrue( s["n"]["out"]["i"].getInput().isSame( s["n"]["in"]["i"] ) )
			self.assertTrue( s["n"]["out"].getInput().isSame( s["n"]["in"] ) )

			self.assertTrue( isinstance( s["n"]["out"]["f"], Gaffer.FloatPlug ) )
			self.assertTrue( s["n"]["out"]["f"].direction(), Gaffer.Plug.Direction.Out )
			self.assertTrue( s["n"]["out"]["f"].getInput().isSame( s["n"]["in"]["f"] ) )

		assertPreconditions()

		with Gaffer.UndoScope( s ) :

			s["n"]["in"].addChild( Gaffer.IntPlug( "i" ) )
			s["n"]["in"].addChild( Gaffer.FloatPlug( "f" ) )

		assertPostconditions()

		s.undo()
		assertPreconditions()

		s.redo()
		assertPostconditions()
Пример #25
0
	def testSerialisation( self ) :

		s = Gaffer.ScriptNode()
		s["n"] = Gaffer.Node()
		s["n"]["user"]["i"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["user"]["o"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

		s["e"] = Gaffer.Expression()
		s["e"].setExpression( "parent.n.user.o = parent.n.user.i + 1;", "OSL" )

		s["n"]["user"]["i"].setValue( 1 )
		self.assertEqual( s["n"]["user"]["o"].getValue(), 2 )

		s2 = Gaffer.ScriptNode()
		s2.execute( s.serialise() )

		self.assertEqual( s2["n"]["user"]["o"].getValue(), 2 )
		s2["n"]["user"]["i"].setValue( 2 )
		self.assertEqual( s2["n"]["user"]["o"].getValue(), 3 )
Пример #26
0
	def testContextTypes( self ) :

		s = Gaffer.ScriptNode()
		s["n"] = Gaffer.Node()
		s["n"]["user"]["f"] = Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["user"]["i"] = Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["user"]["c"] = Gaffer.Color3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["user"]["v"] = Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )
		s["n"]["user"]["s"] = Gaffer.StringPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic )

		s["e"] = Gaffer.Expression()
		s["e"].setExpression(
			inspect.cleandoc(
				"""
				parent.n.user.f = context( "f", 1 );
				parent.n.user.i = context( "i", 1 );
				parent.n.user.c = context( "c", color( 1, 2, 3 ) );
				parent.n.user.v = context( "v", vector( 0, 1, 2 ) );
				parent.n.user.s = context( "s", "default" );
				"""
			),
			"OSL"
		)

		with Gaffer.Context() as c :

			self.assertEqual( s["n"]["user"]["f"].getValue(), 1 )
			self.assertEqual( s["n"]["user"]["i"].getValue(), 1 )
			self.assertEqual( s["n"]["user"]["c"].getValue(), imath.Color3f( 1, 2, 3 ) )
			self.assertEqual( s["n"]["user"]["v"].getValue(), imath.V3f( 0, 1, 2 ) )
			self.assertEqual( s["n"]["user"]["s"].getValue(), "default" )

			c["f"] = 10
			c["i"] = 11
			c["c"] = imath.Color3f( 4, 5, 6 )
			c["v"] = imath.V3f( 1, 2, 3 )
			c["s"] = "non-default"

			self.assertEqual( s["n"]["user"]["f"].getValue(), 10 )
			self.assertEqual( s["n"]["user"]["i"].getValue(), 11 )
			self.assertEqual( s["n"]["user"]["c"].getValue(), imath.Color3f( 4, 5, 6 ) )
			self.assertEqual( s["n"]["user"]["v"].getValue(), imath.V3f( 1, 2, 3 ) )
			self.assertEqual( s["n"]["user"]["s"].getValue(), "non-default" )
Пример #27
0
    def testRemoveKey(self):

        s = Gaffer.ScriptNode()

        s["n"] = Gaffer.Node()
        s["n"]["user"]["f"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default
                                               | Gaffer.Plug.Flags.Dynamic)

        curve = Gaffer.Animation.acquire(s["n"]["user"]["f"])
        key = Gaffer.Animation.Key(time=10, value=10)
        curve.addKey(key)
        self.assertTrue(curve.getKey(key.getTime()).isSame(key))
        self.assertTrue(curve.closestKey(0).isSame(key))
        self.assertTrue(key.parent().isSame(curve))

        curve.removeKey(key)
        self.assertEqual(curve.getKey(key.getTime()), None)
        self.assertEqual(curve.closestKey(0), None)
        self.assertEqual(key.parent(), None)
Пример #28
0
    def testMembershipQueries(self):

        members = [Gaffer.Node(), Gaffer.Node(), Gaffer.Node()]
        notMembers = [Gaffer.Node(), Gaffer.Node(), Gaffer.Node()]

        s = Gaffer.StandardSet(members)

        for m in members:
            self.failUnless(m in s)
            self.failUnless(s.contains(m))

        for m in notMembers:
            self.failIf(m in s)
            self.failIf(s.contains(m))
Пример #29
0
	def testMembershipQueries( self ) :

		members = [ Gaffer.Node(), Gaffer.Node(), Gaffer.Node() ]
		notMembers = [ Gaffer.Node(), Gaffer.Node(), Gaffer.Node() ]

		s = Gaffer.StandardSet( members )

		for m in members :
			self.assertIn( m, s )
			self.assertTrue( s.contains( m ) )

		for m in notMembers :
			self.assertNotIn( m, s )
			self.assertFalse( s.contains( m ) )
Пример #30
0
    def testRemoveChildUndoIndices(self):

        s = Gaffer.ScriptNode()
        s["n"] = Gaffer.Node()

        a = Gaffer.Plug("a")
        b = Gaffer.Plug("b")
        c = Gaffer.Plug("c")

        s["n"]["user"].addChild(a)
        s["n"]["user"].addChild(b)
        s["n"]["user"].addChild(c)

        def assertPreconditions():

            self.assertEqual(len(s["n"]["user"]), 3)
            self.assertEqual(s["n"]["user"][0], a)
            self.assertEqual(s["n"]["user"][1], b)
            self.assertEqual(s["n"]["user"][2], c)

        assertPreconditions()

        with Gaffer.UndoScope(s):

            del s["n"]["user"]["b"]

        def assertPostConditions():

            self.assertEqual(len(s["n"]["user"]), 2)
            self.assertEqual(s["n"]["user"][0], a)
            self.assertEqual(s["n"]["user"][1], c)

        assertPostConditions()

        s.undo()
        assertPreconditions()

        s.redo()
        assertPostConditions()

        s.undo()
        assertPreconditions()