feat: start to resolve data by uuid
This commit is contained in:
@ -7,7 +7,9 @@ from .bl_datablock import BlDatablock
|
||||
|
||||
class BlCollection(BlDatablock):
|
||||
def construct(self,data):
|
||||
return bpy.data.collections.new(data["name"])
|
||||
instance = bpy.data.collections.new(data["name"])
|
||||
instance.uuid = self.uuid
|
||||
return instance
|
||||
|
||||
def load(self, data, target):
|
||||
# Load other meshes metadata
|
||||
@ -38,11 +40,17 @@ class BlCollection(BlDatablock):
|
||||
|
||||
def dump(self, pointer=None):
|
||||
assert(pointer)
|
||||
return utils.dump_datablock(pointer, 4)
|
||||
|
||||
dumper = utils.dump_anything.Dumper()
|
||||
dumper.depth = 4
|
||||
dumper.include_filter = ['name','objects', 'children', 'uuid']
|
||||
|
||||
return dumper.dump(pointer)
|
||||
|
||||
def resolve(self):
|
||||
assert(self.buffer)
|
||||
self.pointer = bpy.data.collections.get(self.buffer['name'])
|
||||
# self.pointer = bpy.data.collections.get(self.buffer['name'])
|
||||
self.pointer = utils.find_from_attr('uuid', self.uuid, bpy.data.collections)
|
||||
|
||||
def resolve_dependencies(self):
|
||||
deps = []
|
||||
|
@ -76,8 +76,10 @@ def dump_mesh(mesh, data={}):
|
||||
|
||||
class BlMesh(BlDatablock):
|
||||
def construct(self, data):
|
||||
return bpy.data.meshes.new(data["name"])
|
||||
|
||||
instance = bpy.data.meshes.new(data["name"])
|
||||
instance.uuid = self.uuid
|
||||
return instance
|
||||
|
||||
def load(self, data, target):
|
||||
if not target or not target.is_editmode:
|
||||
# 1 - LOAD MATERIAL SLOTS
|
||||
@ -153,8 +155,9 @@ class BlMesh(BlDatablock):
|
||||
return data
|
||||
|
||||
def resolve(self):
|
||||
assert(self.buffer)
|
||||
self.pointer = bpy.data.meshes.get(self.buffer['name'])
|
||||
assert(self.buffer)
|
||||
self.pointer = utils.find_from_attr('uuid', self.uuid, bpy.data.meshes)
|
||||
# self.pointer = bpy.data.meshes.get(self.buffer['name'])
|
||||
|
||||
def resolve_dependencies(self):
|
||||
deps = []
|
||||
|
@ -37,7 +37,10 @@ class BlObject(BlDatablock):
|
||||
elif data["data"] in bpy.data.curves.keys():
|
||||
pointer = bpy.data.curves[data["data"]]
|
||||
|
||||
return bpy.data.objects.new(data["name"], pointer)
|
||||
instance = bpy.data.objects.new(data["name"], pointer)
|
||||
instance.uuid = self.uuid
|
||||
|
||||
return instance
|
||||
|
||||
def load(self, data, target):
|
||||
target.uuid = data['uuid']
|
||||
@ -97,11 +100,12 @@ class BlObject(BlDatablock):
|
||||
|
||||
def resolve(self):
|
||||
assert(self.buffer)
|
||||
object_name = self.buffer['name']
|
||||
try:
|
||||
self.pointer = bpy.data.objects[object_name]
|
||||
except:
|
||||
pass
|
||||
self.pointer = utils.find_from_attr('uuid', self.uuid, bpy.data.objects)
|
||||
# object_name = self.buffer['name']
|
||||
# try:
|
||||
# self.pointer = bpy.data.objects[object_name]
|
||||
# except:
|
||||
# pass
|
||||
|
||||
def resolve_dependencies(self):
|
||||
deps = []
|
||||
|
@ -7,7 +7,9 @@ from .bl_datablock import BlDatablock
|
||||
|
||||
class BlScene(BlDatablock):
|
||||
def construct(self, data):
|
||||
return bpy.data.scenes.new(data["name"])
|
||||
instance = bpy.data.scenes.new(data["name"])
|
||||
instance.uuid = self.uuid
|
||||
return instance
|
||||
|
||||
def load(self, data, target):
|
||||
target = self.pointer
|
||||
@ -58,6 +60,7 @@ class BlScene(BlDatablock):
|
||||
scene_name = self.buffer['name']
|
||||
|
||||
self.pointer = bpy.data.scenes.get(scene_name)
|
||||
# self.pointer = utils.find_from_attr('uuid', self.uuid, bpy.data.objects)
|
||||
|
||||
def resolve_dependencies(self):
|
||||
deps = []
|
||||
|
@ -16,6 +16,13 @@ logger = logging.getLogger(__name__)
|
||||
logger.setLevel(logging.ERROR)
|
||||
|
||||
|
||||
def find_from_attr(attr_name, attr_value, list):
|
||||
for item in list:
|
||||
if getattr(item, attr_name, None) == attr_value:
|
||||
return item
|
||||
return None
|
||||
|
||||
|
||||
def get_datablock_users(datablock):
|
||||
users = []
|
||||
supported_types = bpy.context.window_manager.session.supported_datablock
|
||||
|
Reference in New Issue
Block a user