Skip to content

Commit 41fba00

Browse files
committed
feat: bake node
1 parent d79de07 commit 41fba00

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

geometry/node_settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,8 @@
140140
'GeometryNodeToolSetSelection' : [],
141141

142142
# Geometry > Operations
143-
'GeometryNodeBake' : [ #TODO
143+
'GeometryNodeBake' : [
144+
NTPNodeSetting("bake_items", ST.BAKE_ITEMS, min_version = (4, 1, 0))
144145
],
145146

146147
'GeometryNodeBoundBox' : [],

ntp_operator.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,8 @@ def _set_settings_defaults(self, node: Node) -> None:
349349
self._index_switch_items(attr, f"{node_var}.{attr_name}")
350350
elif st == ST.ENUM_DEFINITION:
351351
self._enum_definition(attr, f"{node_var}.{attr_name}")
352+
elif st == ST.BAKE_ITEMS:
353+
self._bake_items(attr, f"{node_var}.{attr_name}")
352354

353355
if bpy.app.version < (4, 0, 0):
354356
def _set_group_socket_defaults(self, socket_interface: NodeSocketInterface,
@@ -1083,6 +1085,28 @@ def _enum_definition(self, enum_def: bpy.types.NodeEnumDefinition,
10831085
self._write(f"{enum_def_str}.enum_items[{i}].description = "
10841086
f"{str_to_py_str(enum_item.description)}")
10851087

1088+
def _bake_items(self, bake_items: bpy.types.NodeGeometryBakeItems,
1089+
bake_items_str: str) -> None:
1090+
"""
1091+
Set bake items for a node
1092+
1093+
Parameters:
1094+
bake_items (bpy.types.NodeGeometryBakeItems): bake items to replicate
1095+
bake_items_str (str): string for the generated bake items
1096+
"""
1097+
self._write(f"{bake_items_str}.clear()")
1098+
for i, bake_item in enumerate(bake_items):
1099+
socket_type = enum_to_py_str(bake_item.socket_type)
1100+
name = str_to_py_str(bake_item.name)
1101+
self._write(f"{bake_items_str}.new({socket_type}, {name})")
1102+
1103+
ad = enum_to_py_str(bake_item.attribute_domain)
1104+
self._write(f"{bake_items_str}[{i}].attribute_domain = {ad}")
1105+
1106+
if bake_item.is_attribute:
1107+
self._write(f"{bake_items_str}[{i}].is_attribute = True")
1108+
1109+
10861110

10871111
def _set_parents(self, node_tree: NodeTree) -> None:
10881112
"""

utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ class ST(Enum):
2929
CURVE_MAPPING = auto()
3030
NODE_TREE = auto()
3131

32-
ENUM_DEFINITION = auto() #TODO: unimplemented
33-
INDEX_SWITCH_ITEMS = auto() #TODO: unimplemented
32+
ENUM_DEFINITION = auto()
33+
INDEX_SWITCH_ITEMS = auto()
34+
BAKE_ITEMS = auto()
3435

3536
# Asset Library
3637
MATERIAL = auto() # Handle with asset library

0 commit comments

Comments
 (0)