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.
- nodebpy/builder.py +770 -306
- nodebpy/nodes/__init__.py +623 -9
- nodebpy/nodes/attribute.py +174 -273
- nodebpy/nodes/color.py +76 -0
- nodebpy/nodes/converter.py +4518 -0
- nodebpy/nodes/experimental.py +314 -0
- nodebpy/nodes/geometry.py +3665 -5250
- nodebpy/nodes/grid.py +1228 -0
- nodebpy/nodes/group.py +20 -0
- nodebpy/nodes/input.py +1571 -254
- nodebpy/nodes/interface.py +400 -0
- nodebpy/nodes/mesh.py +0 -1391
- nodebpy/nodes/texture.py +70 -0
- nodebpy/nodes/types.py +319 -6
- nodebpy/nodes/vector.py +0 -0
- nodebpy/nodes/zone.py +442 -0
- nodebpy/screenshot.py +2 -1
- nodebpy/sockets.py +12 -12
- {nodebpy-0.1.1.dist-info → nodebpy-0.2.0.dist-info}/METADATA +4 -4
- nodebpy-0.2.0.dist-info/RECORD +25 -0
- nodebpy/nodes/curve.py +0 -2006
- nodebpy/nodes/manually_specified.py +0 -1382
- nodebpy/nodes/utilities.py +0 -2344
- nodebpy-0.1.1.dist-info/RECORD +0 -19
- {nodebpy-0.1.1.dist-info → nodebpy-0.2.0.dist-info}/WHEEL +0 -0
- {nodebpy-0.1.1.dist-info → nodebpy-0.2.0.dist-info}/entry_points.txt +0 -0
|
@@ -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
|