Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2019-12-14 11:02:16 +0300
committerJulien Duroure <julien.duroure@gmail.com>2019-12-14 11:02:16 +0300
commitf505743b2f9f75f53b1497796869f799aa16020e (patch)
treefbe03ab40c55f2146f4fe06c15522bf3615c839c /io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py
parent76fc4142b518189b602ff69b4c43ebbfb1b23441 (diff)
glTF exporter: Basic SK driver export (driven by armature animation)
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py')
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py
index f514e913..4efd08f3 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_cache.py
@@ -95,3 +95,48 @@ def bonecache(func):
call_or_fetch = cached
unique = cached
+def skdriverdiscovercache(func):
+
+ def reset_cache_skdriverdiscovercache():
+ func.__current_armature_name = None
+ func.__skdriverdiscover = {}
+
+ func.reset_cache = reset_cache_skdriverdiscovercache
+
+ @functools.wraps(func)
+ def wrapper_skdriverdiscover(*args, **kwargs):
+ if not hasattr(func, "__current_armature_name") or func.__current_armature_name is None:
+ func.__current_armature_name = None
+ func.reset_cache()
+
+ if args[0] != func.__current_armature_name:
+ result = func(*args)
+ func.__skdriverdiscover[args[0]] = result
+ func.__current_armature_name = args[0]
+ return result
+ else:
+ return func.__skdriverdiscover[args[0]]
+ return wrapper_skdriverdiscover
+
+def skdrivervalues(func):
+
+ def reset_cache_skdrivervalues():
+ func.__skdrivervalues = {}
+
+ func.reset_cache = reset_cache_skdrivervalues
+
+ @functools.wraps(func)
+ def wrapper_skdrivervalues(*args, **kwargs):
+ if not hasattr(func, "__skdrivervalues") or func.__skdrivervalues is None:
+ func.reset_cache()
+
+ if args[0].name not in func.__skdrivervalues.keys():
+ func.__skdrivervalues[args[0].name] = {}
+ if args[1] not in func.__skdrivervalues[args[0].name]:
+ vals = func(*args)
+ func.__skdrivervalues[args[0].name][args[1]] = vals
+ return vals
+ else:
+ return func.__skdrivervalues[args[0].name][args[1]]
+ return wrapper_skdrivervalues
+