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