Add alembic support (with option so we can disable)
This commit is contained in:
@@ -23,6 +23,8 @@ import os
|
|||||||
VERBOSE = False # os.environ.get('BAM_VERBOSE', False)
|
VERBOSE = False # os.environ.get('BAM_VERBOSE', False)
|
||||||
TIMEIT = False
|
TIMEIT = False
|
||||||
|
|
||||||
|
USE_ALEMBIC_BRANCH = True
|
||||||
|
|
||||||
|
|
||||||
class C_defs:
|
class C_defs:
|
||||||
__slots__ = ()
|
__slots__ = ()
|
||||||
@@ -52,6 +54,9 @@ class C_defs:
|
|||||||
PART_DRAW_OB = 7
|
PART_DRAW_OB = 7
|
||||||
PART_DRAW_GR = 8
|
PART_DRAW_GR = 8
|
||||||
|
|
||||||
|
# DNA_object_types.h
|
||||||
|
# Object.transflag
|
||||||
|
OB_DUPLIGROUP = 1 << 8
|
||||||
|
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
import logging
|
import logging
|
||||||
@@ -556,6 +561,11 @@ class FilePath:
|
|||||||
if block_external is not None:
|
if block_external is not None:
|
||||||
yield FPElem_block_path(basedir, level, (block_external, b'filename')), extra_info
|
yield FPElem_block_path(basedir, level, (block_external, b'filename')), extra_info
|
||||||
|
|
||||||
|
if USE_ALEMBIC_BRANCH:
|
||||||
|
@staticmethod
|
||||||
|
def _from_block_CL(block, basedir, extra_info, level):
|
||||||
|
yield FPElem_block_path(basedir, level, (block, b'output_filepath')), extra_info
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _from_block_SC(block, basedir, extra_info, level):
|
def _from_block_SC(block, basedir, extra_info, level):
|
||||||
block_ed = block.get_pointer(b'ed')
|
block_ed = block.get_pointer(b'ed')
|
||||||
@@ -686,12 +696,25 @@ class ExpandID:
|
|||||||
def expand_OB(block): # 'Object'
|
def expand_OB(block): # 'Object'
|
||||||
yield from ExpandID._expand_generic_animdata(block)
|
yield from ExpandID._expand_generic_animdata(block)
|
||||||
yield from ExpandID._expand_generic_material(block)
|
yield from ExpandID._expand_generic_material(block)
|
||||||
|
|
||||||
|
has_dup_group = False
|
||||||
yield block.get_pointer(b'data')
|
yield block.get_pointer(b'data')
|
||||||
yield block.get_pointer(b'dup_group')
|
if block[b'transflag'] & C_defs.OB_DUPLIGROUP:
|
||||||
|
dup_group = block.get_pointer(b'dup_group')
|
||||||
|
if dup_group is not None:
|
||||||
|
has_dup_group = True
|
||||||
|
yield dup_group
|
||||||
|
del dup_group
|
||||||
|
|
||||||
yield block.get_pointer(b'proxy')
|
yield block.get_pointer(b'proxy')
|
||||||
yield block.get_pointer(b'proxy_group')
|
yield block.get_pointer(b'proxy_group')
|
||||||
|
|
||||||
|
if USE_ALEMBIC_BRANCH:
|
||||||
|
if has_dup_group:
|
||||||
|
sdna_index_CacheLibrary = block.file.sdna_index_from_id.get(b'CacheLibrary')
|
||||||
|
if sdna_index_CacheLibrary is not None:
|
||||||
|
yield block.get_pointer(b'cache_library')
|
||||||
|
|
||||||
# 'ob->pose->chanbase[...].custom'
|
# 'ob->pose->chanbase[...].custom'
|
||||||
block_pose = block.get_pointer(b'pose')
|
block_pose = block.get_pointer(b'pose')
|
||||||
if block_pose is not None:
|
if block_pose is not None:
|
||||||
|
Reference in New Issue
Block a user