[Bf-blender-cvs] [b2ff136f9d4] asset-engine: Fix various misc points, including Assets reloading, in Amber asset engine.
Bastien Montagne
noreply at git.blender.org
Mon Aug 21 17:38:06 CEST 2017
Commit: b2ff136f9d44c165e3bafe227115d6cd2bc1e2c5
Author: Bastien Montagne
Date: Mon Aug 21 15:31:20 2017 +0200
Branches: asset-engine
https://developer.blender.org/rBb2ff136f9d44c165e3bafe227115d6cd2bc1e2c5
Fix various misc points, including Assets reloading, in Amber asset engine.
===================================================================
M release/scripts/startup/bl_operators/amber/engine.py
M release/scripts/startup/bl_operators/amber/repository.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/amber/engine.py b/release/scripts/startup/bl_operators/amber/engine.py
index fb7c7d7a50c..17df5157cff 100644
--- a/release/scripts/startup/bl_operators/amber/engine.py
+++ b/release/scripts/startup/bl_operators/amber/engine.py
@@ -435,7 +435,7 @@ class AssetEngineAmber(AssetEngine):
(self.pretty_version(uuids.asset_engine_version), self.pretty_version()))
# print(entries.entries[:])
for uuid in uuids.uuids:
- repo_uuid = tuple(uuid.uuid_asset)[:2] + (0, 0)
+ repo_uuid = uuid.uuid_asset[:2] + (0, 0)
assert(repo_uuid in utils.amber_repos)
repo = self.repos.get(repo_uuid, None)
if repo is None:
@@ -452,7 +452,7 @@ class AssetEngineAmber(AssetEngine):
entry.type = {e.file_type}
entry.blender_type = e.blender_type
# archive part not yet implemented!
- entry.relpath = os.path.join(utils.amber_repos[repo_uuid], r["path"])
+ entry.relpath = os.path.join(utils.amber_repos[repo_uuid], r.path)
# print("added entry for", entry.relpath)
entry.uuid = e.uuid
var = entry.variants.add()
@@ -583,7 +583,7 @@ class AssetEngineAmber(AssetEngine):
# print(entries.entries[:])
if self.repo:
for uuid in uuids.uuids:
- self.entry_from_uuid(entries, tuple(uuid.uuid_asset), tuple(uuid.uuid_variant), tuple(uuid.uuid_revision))
+ self.entry_from_uuid(entries, uuid.uuid_asset[:], uuid.uuid_variant[:], uuid.uuid_revision[:])
return True
return False
diff --git a/release/scripts/startup/bl_operators/amber/repository.py b/release/scripts/startup/bl_operators/amber/repository.py
index 26ee57034bf..64ff2e67eed 100644
--- a/release/scripts/startup/bl_operators/amber/repository.py
+++ b/release/scripts/startup/bl_operators/amber/repository.py
@@ -321,11 +321,13 @@ class AmberDataAsset():
self.variant_default = None
@staticmethod
- def from_dict(assets, entries_dict):
+ def from_dict(assets, entries_dict, repo_uuid):
# For now, fully override entries.
assets.clear()
for uuid_hexstr, ent in entries_dict.items():
uuid = utils.uuid_unpack(uuid_hexstr)
+ assert(uuid[:2] == repo_uuid[:2])
+
asset = assets[uuid] = AmberDataAsset()
asset.name = ent["name"]
@@ -416,6 +418,14 @@ class AmberDataRepositoryPG(PropertyGroup):
class AmberDataRepository:
+ """
+ Amber repository main class.
+
+ Note: Remember that in Amber, first 8 bytes of asset's UUID are same as first 8 bytes of repository UUID.
+ Repository UUID's last 8 bytes shall always be NULL.
+ This allows us to store repository identifier into all assets, and ensure we have uniqueness of
+ Amber assets UUIDs (which is mandatory from Blender point of view).
+ """
VERSION = "1.0.1"
def __init__(self):
@@ -443,12 +453,13 @@ class AmberDataRepository:
self.name = repo_dict["name"]
self.description = repo_dict["description"]
self.uuid = utils.uuid_unpack(repo_dict["uuid"])
+ assert(self.uuid[2:] == (0, 0))
# We update tags instead of overriding them completely...
AmberDataTagPG.from_dict(self.tags, repo_dict["tags"])
# For now, fully override entries.
- AmberDataAsset.from_dict(self.assets, repo_dict["entries"])
+ AmberDataAsset.from_dict(self.assets, repo_dict["entries"], self.uuid)
else:
print("Unsupported repository version: ", self.version)
self.clear(self.storage)
@@ -459,6 +470,8 @@ class AmberDataRepository:
repo_dict["version"] = self.VERSION
repo_dict["name"] = self.name
repo_dict["description"] = self.description
+
+ assert(self.uuid[2:] == (0, 0))
repo_dict["uuid"] = utils.uuid_pack(self.uuid)
repo_dict["tags"] = AmberDataTagPG.to_dict(self.tags)
More information about the Bf-blender-cvs
mailing list