comparison flax/Node.py @ 110:490843093506

all of this stuff is super rough and not well thought out yet. all of this stuff is super rough and not well thought out yet. i'm just checking in so we have some stuff to work with for the sprint tonight.
author dmcc
date Tue, 10 Jun 2003 10:31:57 +0000
parents 45b12307c695
children 7ccf1d10804b
comparison
equal deleted inserted replaced
109:ec82e1eea3c8 110:490843093506
4 NoChange = "NoChange" 4 NoChange = "NoChange"
5 5
6 class NodeType: 6 class NodeType:
7 def __init__(self, iports=None, oports=None): 7 def __init__(self, iports=None, oports=None):
8 make_attributes_from_args('iports', 'oports') 8 make_attributes_from_args('iports', 'oports')
9 def process(self,iports,oports): 9 def process(self):
10 pass 10 pass
11 # TODO: handle NoChange stuff 11 # TODO: handle NoChange stuff
12 12
13 class AddNode(NodeType): 13 class AddNode(NodeType):
14 """Adds two nodes together""" 14 """Adds two nodes together"""
32 ports.out1 = val 32 ports.out1 = val
33 33
34 class FadeNode(NodeType): 34 class FadeNode(NodeType):
35 """Provides a UI scaler to let you fade a value""" 35 """Provides a UI scaler to let you fade a value"""
36 def __init__(self): 36 def __init__(self):
37 NodeType.__init__(self, iports={'in1' : Port(), 37 NodeType.__init__(self, iports={'in1' : Port,
38 'scale1' : Port()}, 38 'scale1' : Port},
39 oports={'out1' : Port()}, 39 oports={'out1' : Port},
40 def process(self, iports, oports): 40 def process(self, ports):
41 ports.out1 = ports.in1 * ports.scale1 41 ports.out1 = ports.in1 * ports.scale1
42 42
43 class FadeConstellation(Constellation): 43 class FadeConstellation(Constellation):
44 """This somehow describes the following: 44 """This somehow describes the following:
45 45
73 \ - - - - - - - - - - - -- - - / 73 \ - - - - - - - - - - - -- - - /
74 | 74 |
75 | out 75 | out
76 | 76 |
77 """ 77 """
78
79 Persistence
80 node instance saves:
81 node name, id, and such
82 input ports:
83 any port details
84 what the port connects to
85 values:
86 maybe UI.Scale level
87 maybe group contents
88
89
90 p=InputPort(node=self,minconns=1,maxconns=2) # an input port to this node
91 p.connect(othernode)
92 print p.connections()
93 p.connect(yetanother)
94
95 op=OutputPort(node=self) # an output port
96 print op.connections() # lists all the nodes that call us an input node
97 op.connect(n) # calls n.connect(self)
98
99
100
101
102 Ports
103 Port: "scalar"
104 MultiPort: "array of Port"
105 ^ all wrong
106
107 Ports II:
108 min/max number of connections
109 (failure to fit these numbers means port is "deactivated")
110 "Normal" ports are min=1, max=1
111 "Multiports" are min=0, max=None
112 "Binary" ports are min=2, max=2
113 oh yeah, there are two totally different types of ports
114
115 Input ports: min/max numbers of connections
116 store current connections
117 Output ports: nothing
118 store nothing!
119
120 fake node persistence for subtract node
121
122 <!-- "my subtract" is a unique id -->
123 <!-- drew: there is no such thing as a subtract group -->
124 <node name="my subtract" type="math.Add">
125 <inputs>
126 <port name="in1">
127 <noderef name="node I"/>
128 <noderef name="node II"/>
129 </port>
130 </inputs>
131 <state>
132 </state>
133
134 </node>
135
136
137 <node name="the group" type="group">
138
139 <!-- all of the port names of the group are being made up right
140 here- a group has no preset inputs or outputs-->
141
142 <inputs>
143 <port name="group-in 1">
144 <noderef name="node5"/>
145 <noderef name="node6"/>
146 </port>
147 </inputs>
148
149 <state>
150 <children>
151 <noderef name="node3">
152 <connect localPort="in1" groupPort="group-in1"/>
153 </noderef>
154 <noderef name="node4">
155 <connect localPort="in1" groupPort="group-in1"/>
156 <connect localPort="out1" groupPort="theoutput"/>
157 </noderef>
158 </children>
159
160 </state>
161 </node>
162
163 <node name="preset value" type="source.Scalar">
164 <!-- no inputs, node has output only -->
165 <state>
166 <value>8.3</value>
167
168 <minvalue>0</minvalue>
169 <maxvalue>100</maxvalue>
170
171 <gui>
172 <slider res=".1" height="200" bgcolor="red"/>
173 <priority>very high</priority>
174 <xpos>395</xpos>
175 <ypos>21</ypos>
176 </gui>
177
178 </state>
179
180 </node>