wip: started to test filter for dump
This commit is contained in:
@ -68,18 +68,24 @@ class BlMaterial(BlDatablock):
|
||||
|
||||
def dump(self, pointer=None):
|
||||
assert(pointer)
|
||||
|
||||
data = utils.dump_datablock(pointer, 2)
|
||||
if pointer.use_nodes:
|
||||
# nodes inputs
|
||||
nodes = {}
|
||||
for node in pointer.node_tree.nodes:
|
||||
dumper = utils.dump_anything.Dumper()
|
||||
dumper.exclude_filter = [
|
||||
"dimensions",
|
||||
"select",
|
||||
]
|
||||
|
||||
for node in pointer.node_tree.nodes:
|
||||
if node.type == 'TEX_IMAGE':
|
||||
dumper.depth = 2
|
||||
else:
|
||||
dumper.depth = 4
|
||||
|
||||
dumper.depth = 3
|
||||
dumper.filter = ["inputs"]
|
||||
nodes[node.name] = dumper.dump(node)
|
||||
|
||||
data["node_tree"]['nodes'] = nodes
|
||||
utils.dump_datablock_attibutes(
|
||||
pointer.node_tree, ["links"], 3, data['node_tree'])
|
||||
@ -111,6 +117,7 @@ class BlMaterial(BlDatablock):
|
||||
def is_valid(self):
|
||||
return bpy.data.materials.get(self.buffer['name'])
|
||||
|
||||
|
||||
bl_id = "materials"
|
||||
bl_class = bpy.types.Material
|
||||
bl_rep_class = BlMaterial
|
||||
|
@ -78,6 +78,8 @@ class Dumper:
|
||||
self._build_inline_dump_functions()
|
||||
self._build_match_elements()
|
||||
self.type_subset = self.match_subset_all
|
||||
self.filter = []
|
||||
self.exclude_filter = []
|
||||
# self._atomic_types = [] # TODO future option?
|
||||
|
||||
def dump(self, any):
|
||||
@ -85,7 +87,6 @@ class Dumper:
|
||||
|
||||
def _dump_any(self, any, depth):
|
||||
for filter_function, dump_function in self.type_subset:
|
||||
|
||||
if filter_function(any):
|
||||
# print(any)
|
||||
return dump_function[not (depth >= self.depth)](any, depth + 1)
|
||||
@ -142,6 +143,8 @@ class Dumper:
|
||||
def _dump_default_as_branch(self, default, depth):
|
||||
def is_valid_property(p):
|
||||
try:
|
||||
if (self.filter and default not in self.exclude_filter) or \
|
||||
not self.exclude_filter:
|
||||
getattr(default, p)
|
||||
except AttributeError:
|
||||
return False
|
||||
@ -153,7 +156,7 @@ class Dumper:
|
||||
return False
|
||||
return True
|
||||
|
||||
all_property_names = [p for p in dir(default) if is_valid_property(p)]
|
||||
all_property_names = [p for p in dir(default) if is_valid_property(p) and p != '']
|
||||
dump = {}
|
||||
for p in all_property_names:
|
||||
dp = self._dump_any(getattr(default, p), depth)
|
||||
|
Reference in New Issue
Block a user