feat: object, light dump optimisation

This commit is contained in:
Swann
2019-09-20 22:37:32 +02:00
parent 4cbb088b0c
commit 51db89ca7a
4 changed files with 39 additions and 4 deletions

View File

@ -16,7 +16,28 @@ class BlLight(BlDatablock):
def dump(self, pointer=None):
assert(pointer)
return utils.dump_datablock(pointer, 3)
replicated_attributes = [
"name",
"type",
"color",
"energy",
"specular_factor",
"uuid",
"shadow_soft_size",
"use_custom_distance",
"cutoff_distance",
"use_shadow",
"shadow_buffer_clip_start",
"shadow_buffer_soft",
"shadow_buffer_bias",
"shadow_buffer_bleed_bias",
"contact_shadow_distance",
"contact_shadow_soft_size",
"contact_shadow_bias",
"contact_shadow_thickness"
]
data = { k:v for k,v in utils.dump_datablock(pointer, 3).items() if k in replicated_attributes }
return data
def resolve(self):
assert(self.buffer)

View File

@ -94,7 +94,7 @@ class BlMaterial(BlDatablock):
def diff(self):
diff_rev = diff(self.dump(pointer=self.pointer), self.buffer)
return (self.bl_diff() or
len(diff_rev.keys()) > 0)
len(diff_rev.keys()) > 1)
def resolve_dependencies(self):
deps = []

View File

@ -3,6 +3,7 @@ import mathutils
from .. import utils
from .bl_datablock import BlDatablock
from jsondiff import diff
class BlObject(BlDatablock):
@ -59,6 +60,19 @@ class BlObject(BlDatablock):
def dump(self, pointer=None):
assert(pointer)
data = utils.dump_datablock(pointer, 1)
replicated_attributes = [
"name",
"matrix_world",
"rotation_mode",
"parent",
"data",
"uuid",
"children",
"library"
]
data = { k:v for k,v in data.items() if k in replicated_attributes }
# data = {value in data for key, value in data.items() if key in replicated_attributes}
# data = utils.dump_datablock_attibutes(pointer, replicated_attributes)
if self.is_library:
return data
@ -77,8 +91,9 @@ class BlObject(BlDatablock):
pass
def diff(self):
diff_rev = diff(self.dump(pointer=self.pointer), self.buffer)
return (self.bl_diff() or
self.dump(pointer=self.pointer)['matrix_world'] != self.buffer['matrix_world'])
len(diff_rev.keys()))
def resolve_dependencies(self):
deps = super().resolve_dependencies()

View File

@ -201,7 +201,6 @@ def dump_datablock_attibutes(datablock=None, attributes=[], depth=1, dickt=None)
dumper.depth = depth
datablock_type = datablock.bl_rna.name
key = "{}/{}".format(datablock_type, datablock.name)
data = {}