[Bf-extensions-cvs] [8304b9ba] blender-v2.82-release: glTF exporter: convert extensions to dict

Julien Duroure noreply at git.blender.org
Fri Jan 10 22:00:15 CET 2020


Commit: 8304b9bac7dcd34a85e93cbb23c25a28cbee763d
Author: Julien Duroure
Date:   Fri Jan 10 21:58:16 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rBA8304b9bac7dcd34a85e93cbb23c25a28cbee763d

glTF exporter: convert extensions to dict

===================================================================

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/io/com/gltf2_io.py

===================================================================

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index d8381d0c..ab7946b5 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
 bl_info = {
     'name': 'glTF 2.0 format',
     'author': 'Julien Duroure, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 1, 36),
+    "version": (1, 1, 37),
     'blender': (2, 81, 6),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/io/com/gltf2_io.py b/io_scene_gltf2/io/com/gltf2_io.py
index 790ab52c..b8c4b9dd 100755
--- a/io_scene_gltf2/io/com/gltf2_io.py
+++ b/io_scene_gltf2/io/com/gltf2_io.py
@@ -19,6 +19,10 @@
 # TODO: add __slots__ to all classes by extending the generator
 
 # TODO: REMOVE traceback import
+
+# NOTE: this file is modified for addonExtension use. See
+# https://github.com/KhronosGroup/glTF-Blender-IO/commit/62ff119d8ffeab48f66e9d2699741407d532fe0f
+
 import sys
 import traceback
 
@@ -87,6 +91,25 @@ def to_float(x):
     return x
 
 
+def extension_to_dict(obj):
+    if hasattr(obj, 'to_list'):
+        obj = obj.to_list()
+    if hasattr(obj, 'to_dict'):
+        obj = obj.to_dict()
+    if isinstance(obj, list):
+        return [extension_to_dict(x) for x in obj]
+    elif isinstance(obj, dict):
+        return {k: extension_to_dict(v) for (k, v) in obj.items()}
+    return obj
+
+def from_extension(x):
+    x = extension_to_dict(x)
+    assert isinstance(x, dict)
+    return x
+
+def from_extra(x):
+    return extension_to_dict(x)
+
 class AccessorSparseIndices:
     """Index array of size `count` that points to those accessor attributes that deviate from
     their initialization value. Indices must strictly increase.
@@ -117,9 +140,9 @@ class AccessorSparseIndices:
         result["bufferView"] = from_int(self.buffer_view)
         result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
         result["componentType"] = from_int(self.component_type)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         return result
 
 
@@ -152,9 +175,9 @@ class AccessorSparseValues:
         result = {}
         result["bufferView"] = from_int(self.buffer_view)
         result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         return result
 
 
@@ -182,9 +205,9 @@ class AccessorSparse:
     def to_dict(self):
         result = {}
         result["count"] = from_int(self.count)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["indices"] = to_class(AccessorSparseIndices, self.indices)
         result["values"] = to_class(AccessorSparseValues, self.values)
         return result
@@ -236,9 +259,9 @@ class Accessor:
         result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
         result["componentType"] = from_int(self.component_type)
         result["count"] = from_int(self.count)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["max"] = from_union([lambda x: from_list(to_float, x), from_none], self.max)
         result["min"] = from_union([lambda x: from_list(to_float, x), from_none], self.min)
         result["name"] = from_union([from_str, from_none], self.name)
@@ -272,9 +295,9 @@ class AnimationChannelTarget:
 
     def to_dict(self):
         result = {}
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["node"] = from_union([from_int, from_none], self.node)
         result["path"] = from_str(self.path)
         return result
@@ -301,9 +324,9 @@ class AnimationChannel:
 
     def to_dict(self):
         result = {}
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["sampler"] = from_int(self.sampler)
         result["target"] = to_class(AnimationChannelTarget, self.target)
         return result
@@ -334,9 +357,9 @@ class AnimationSampler:
 
     def to_dict(self):
         result = {}
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["input"] = from_int(self.input)
         result["interpolation"] = from_union([from_str, from_none], self.interpolation)
         result["output"] = from_int(self.output)
@@ -367,9 +390,9 @@ class Animation:
     def to_dict(self):
         result = {}
         result["channels"] = from_list(lambda x: to_class(AnimationChannel, x), self.channels)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["name"] = from_union([from_str, from_none], self.name)
         result["samplers"] = from_list(lambda x: to_class(AnimationSampler, x), self.samplers)
         return result
@@ -401,9 +424,9 @@ class Asset:
     def to_dict(self):
         result = {}
         result["copyright"] = from_union([from_str, from_none], self.copyright)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["generator"] = from_union([from_str, from_none], self.generator)
         result["minVersion"] = from_union([from_str, from_none], self.min_version)
         result["version"] = from_str(self.version)
@@ -443,9 +466,9 @@ class BufferView:
         result["byteLength"] = from_int(self.byte_length)
         result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
         result["byteStride"] = from_union([from_int, from_none], self.byte_stride)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["name"] = from_union([from_str, from_none], self.name)
         result["target"] = from_union([from_int, from_none], self.target)
         return result
@@ -475,9 +498,9 @@ class Buffer:
     def to_dict(self):
         result = {}
         result["byteLength"] = from_int(self.byte_length)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["name"] = from_union([from_str, from_none], self.name)
         result["uri"] = from_union([from_str, from_none], self.uri)
         return result
@@ -508,9 +531,9 @@ class CameraOrthographic:
 
     def to_dict(self):
         result = {}
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+        result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
                                           self.extensions)
-        result["extras"] = self.extras
+        result["extras"] = from_extra(self.extras)
         result["xmag"] = to_float(self.xmag)
         result["ymag"] = to_float(self.ymag)
         result["zfar"] = to_float(self.zfar)
@@ -544,9 +567,9 @@ class CameraPerspective:
     def to_dict(self):
         result = {}
         result["aspectRatio"] = from_union([to_float, from_none], self.aspect_ratio)
-        result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list