nodebpy 0.1.1__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,314 @@
1
+ from typing import Literal
2
+ from ..builder import NodeBuilder, SocketLinker
3
+ import bpy
4
+
5
+ from .types import TYPE_INPUT_INT, TYPE_INPUT_VALUE
6
+
7
+
8
+ class List(NodeBuilder):
9
+ """Create a list of values"""
10
+
11
+ name = "GeometryNodeList"
12
+ node: bpy.types.GeometryNodeList
13
+
14
+ def __init__(
15
+ self,
16
+ count: TYPE_INPUT_INT = 1,
17
+ value: TYPE_INPUT_VALUE = 0.0,
18
+ data_type: Literal[
19
+ "FLOAT",
20
+ "INT",
21
+ "BOOLEAN",
22
+ "VECTOR",
23
+ "RGBA",
24
+ "ROTATION",
25
+ "MATRIX",
26
+ "STRING",
27
+ "MENU",
28
+ "SHADER",
29
+ "OBJECT",
30
+ "IMAGE",
31
+ "GEOMETRY",
32
+ "COLLECTION",
33
+ "TEXTURE",
34
+ "MATERIAL",
35
+ "BUNDLE",
36
+ "CLOSURE",
37
+ ] = "FLOAT",
38
+ **kwargs,
39
+ ):
40
+ super().__init__()
41
+ key_args = {"Count": count, "Value": value}
42
+ key_args.update(kwargs)
43
+ self.data_type = data_type
44
+ self._establish_links(**key_args)
45
+
46
+ @property
47
+ def i_count(self) -> SocketLinker:
48
+ """Input socket: Count"""
49
+ return self._input("Count")
50
+
51
+ @property
52
+ def i_value(self) -> SocketLinker:
53
+ """Input socket: Value"""
54
+ return self._input("Value")
55
+
56
+ @property
57
+ def o_list(self) -> SocketLinker:
58
+ """Output socket: List"""
59
+ return self._output("List")
60
+
61
+ @property
62
+ def data_type(
63
+ self,
64
+ ) -> Literal[
65
+ "FLOAT",
66
+ "INT",
67
+ "BOOLEAN",
68
+ "VECTOR",
69
+ "RGBA",
70
+ "ROTATION",
71
+ "MATRIX",
72
+ "STRING",
73
+ "MENU",
74
+ "SHADER",
75
+ "OBJECT",
76
+ "IMAGE",
77
+ "GEOMETRY",
78
+ "COLLECTION",
79
+ "TEXTURE",
80
+ "MATERIAL",
81
+ "BUNDLE",
82
+ "CLOSURE",
83
+ ]:
84
+ return self.node.data_type
85
+
86
+ @data_type.setter
87
+ def data_type(
88
+ self,
89
+ value: Literal[
90
+ "FLOAT",
91
+ "INT",
92
+ "BOOLEAN",
93
+ "VECTOR",
94
+ "RGBA",
95
+ "ROTATION",
96
+ "MATRIX",
97
+ "STRING",
98
+ "MENU",
99
+ "SHADER",
100
+ "OBJECT",
101
+ "IMAGE",
102
+ "GEOMETRY",
103
+ "COLLECTION",
104
+ "TEXTURE",
105
+ "MATERIAL",
106
+ "BUNDLE",
107
+ "CLOSURE",
108
+ ],
109
+ ):
110
+ self.node.data_type = value
111
+
112
+
113
+ class GetListItem(NodeBuilder):
114
+ """Retrieve a value from a list"""
115
+
116
+ name = "GeometryNodeListGetItem"
117
+ node: bpy.types.GeometryNodeListGetItem
118
+
119
+ def __init__(
120
+ self,
121
+ list: TYPE_INPUT_VALUE = 0.0,
122
+ index: TYPE_INPUT_INT = 0,
123
+ data_type: Literal[
124
+ "FLOAT",
125
+ "INT",
126
+ "BOOLEAN",
127
+ "VECTOR",
128
+ "RGBA",
129
+ "ROTATION",
130
+ "MATRIX",
131
+ "STRING",
132
+ "MENU",
133
+ "SHADER",
134
+ "OBJECT",
135
+ "IMAGE",
136
+ "GEOMETRY",
137
+ "COLLECTION",
138
+ "TEXTURE",
139
+ "MATERIAL",
140
+ "BUNDLE",
141
+ "CLOSURE",
142
+ ] = "FLOAT",
143
+ **kwargs,
144
+ ):
145
+ super().__init__()
146
+ key_args = {"List": list, "Index": index}
147
+ key_args.update(kwargs)
148
+ self.data_type = data_type
149
+ self._establish_links(**key_args)
150
+
151
+ @property
152
+ def i_list(self) -> SocketLinker:
153
+ """Input socket: List"""
154
+ return self._input("List")
155
+
156
+ @property
157
+ def i_index(self) -> SocketLinker:
158
+ """Input socket: Index"""
159
+ return self._input("Index")
160
+
161
+ @property
162
+ def o_value(self) -> SocketLinker:
163
+ """Output socket: Value"""
164
+ return self._output("Value")
165
+
166
+ @property
167
+ def data_type(
168
+ self,
169
+ ) -> Literal[
170
+ "FLOAT",
171
+ "INT",
172
+ "BOOLEAN",
173
+ "VECTOR",
174
+ "RGBA",
175
+ "ROTATION",
176
+ "MATRIX",
177
+ "STRING",
178
+ "MENU",
179
+ "SHADER",
180
+ "OBJECT",
181
+ "IMAGE",
182
+ "GEOMETRY",
183
+ "COLLECTION",
184
+ "TEXTURE",
185
+ "MATERIAL",
186
+ "BUNDLE",
187
+ "CLOSURE",
188
+ ]:
189
+ return self.node.data_type
190
+
191
+ @data_type.setter
192
+ def data_type(
193
+ self,
194
+ value: Literal[
195
+ "FLOAT",
196
+ "INT",
197
+ "BOOLEAN",
198
+ "VECTOR",
199
+ "RGBA",
200
+ "ROTATION",
201
+ "MATRIX",
202
+ "STRING",
203
+ "MENU",
204
+ "SHADER",
205
+ "OBJECT",
206
+ "IMAGE",
207
+ "GEOMETRY",
208
+ "COLLECTION",
209
+ "TEXTURE",
210
+ "MATERIAL",
211
+ "BUNDLE",
212
+ "CLOSURE",
213
+ ],
214
+ ):
215
+ self.node.data_type = value
216
+
217
+
218
+ class ListLength(NodeBuilder):
219
+ """Count how many items are in a given list"""
220
+
221
+ name = "GeometryNodeListLength"
222
+ node: bpy.types.GeometryNodeListLength
223
+
224
+ def __init__(
225
+ self,
226
+ list: TYPE_INPUT_VALUE = 0.0,
227
+ data_type: Literal[
228
+ "FLOAT",
229
+ "INT",
230
+ "BOOLEAN",
231
+ "VECTOR",
232
+ "RGBA",
233
+ "ROTATION",
234
+ "MATRIX",
235
+ "STRING",
236
+ "MENU",
237
+ "SHADER",
238
+ "OBJECT",
239
+ "IMAGE",
240
+ "GEOMETRY",
241
+ "COLLECTION",
242
+ "TEXTURE",
243
+ "MATERIAL",
244
+ "BUNDLE",
245
+ "CLOSURE",
246
+ ] = "FLOAT",
247
+ **kwargs,
248
+ ):
249
+ super().__init__()
250
+ key_args = {"List": list}
251
+ key_args.update(kwargs)
252
+ self.data_type = data_type
253
+ self._establish_links(**key_args)
254
+
255
+ @property
256
+ def i_list(self) -> SocketLinker:
257
+ """Input socket: List"""
258
+ return self._input("List")
259
+
260
+ @property
261
+ def o_length(self) -> SocketLinker:
262
+ """Output socket: Length"""
263
+ return self._output("Length")
264
+
265
+ @property
266
+ def data_type(
267
+ self,
268
+ ) -> Literal[
269
+ "FLOAT",
270
+ "INT",
271
+ "BOOLEAN",
272
+ "VECTOR",
273
+ "RGBA",
274
+ "ROTATION",
275
+ "MATRIX",
276
+ "STRING",
277
+ "MENU",
278
+ "SHADER",
279
+ "OBJECT",
280
+ "IMAGE",
281
+ "GEOMETRY",
282
+ "COLLECTION",
283
+ "TEXTURE",
284
+ "MATERIAL",
285
+ "BUNDLE",
286
+ "CLOSURE",
287
+ ]:
288
+ return self.node.data_type
289
+
290
+ @data_type.setter
291
+ def data_type(
292
+ self,
293
+ value: Literal[
294
+ "FLOAT",
295
+ "INT",
296
+ "BOOLEAN",
297
+ "VECTOR",
298
+ "RGBA",
299
+ "ROTATION",
300
+ "MATRIX",
301
+ "STRING",
302
+ "MENU",
303
+ "SHADER",
304
+ "OBJECT",
305
+ "IMAGE",
306
+ "GEOMETRY",
307
+ "COLLECTION",
308
+ "TEXTURE",
309
+ "MATERIAL",
310
+ "BUNDLE",
311
+ "CLOSURE",
312
+ ],
313
+ ):
314
+ self.node.data_type = value