feat: initial material input support

This commit is contained in:
Swann Martinez 2023-02-20 14:09:35 +01:00
parent 4c42a5be92
commit d93c227521

View File

@ -64,7 +64,7 @@ def load_node(node_data: dict, node_tree: bpy.types.ShaderNodeTree):
if idx < len(inputs_data) and hasattr(inpt, "default_value"): if idx < len(inputs_data) and hasattr(inpt, "default_value"):
loaded_input = inputs_data[idx] loaded_input = inputs_data[idx]
try: try:
if inpt.type in ['OBJECT', 'COLLECTION']: if inpt.type in ['OBJECT', 'COLLECTION', 'MATERIAL']:
inpt.default_value = get_datablock_from_uuid(loaded_input, None) inpt.default_value = get_datablock_from_uuid(loaded_input, None)
else: else:
inpt.default_value = loaded_input inpt.default_value = loaded_input
@ -80,7 +80,7 @@ def load_node(node_data: dict, node_tree: bpy.types.ShaderNodeTree):
if idx < len(outputs_data) and hasattr(output, "default_value"): if idx < len(outputs_data) and hasattr(output, "default_value"):
loaded_output = outputs_data[idx] loaded_output = outputs_data[idx]
try: try:
if output.type in ['OBJECT', 'COLLECTION']: if output.type in ['OBJECT', 'COLLECTION', 'MATERIAL']:
output.default_value = get_datablock_from_uuid(loaded_output, None) output.default_value = get_datablock_from_uuid(loaded_output, None)
else: else:
output.default_value = loaded_output output.default_value = loaded_output
@ -351,6 +351,11 @@ def get_node_tree_dependencies(node_tree: bpy.types.NodeTree) -> list:
def has_texture(node): return ( def has_texture(node): return (
node.type in ['ATTRIBUTE_SAMPLE_TEXTURE','TEXTURE'] and node.texture) node.type in ['ATTRIBUTE_SAMPLE_TEXTURE','TEXTURE'] and node.texture)
def has_material(node): return (
node.type == 'MATERIAL' and node.inputs[2].default_value is not None
)
deps = [] deps = []
for node in node_tree.nodes: for node in node_tree.nodes:
@ -360,7 +365,9 @@ def get_node_tree_dependencies(node_tree: bpy.types.NodeTree) -> list:
deps.append(node.node_tree) deps.append(node.node_tree)
elif has_texture(node): elif has_texture(node):
deps.append(node.texture) deps.append(node.texture)
elif has_material(node):
print(node.inputs[2].default_value.name)
deps.append(node.inputs[2].default_value)
return deps return deps