Fix T43830: Packing skips some image datablocks
Add support for ParticleSystems (render as - object & group)
This commit is contained in:
@@ -48,6 +48,10 @@ class C_defs:
|
|||||||
# DNA_modifier_types.h
|
# DNA_modifier_types.h
|
||||||
eModifierType_MeshCache = 46
|
eModifierType_MeshCache = 46
|
||||||
|
|
||||||
|
# DNA_particle_types.h
|
||||||
|
PART_DRAW_OB = 7
|
||||||
|
PART_DRAW_GR = 8
|
||||||
|
|
||||||
|
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
import logging
|
import logging
|
||||||
@@ -676,6 +680,14 @@ class ExpandID:
|
|||||||
item_custom = item.get_pointer(b'custom', sdna_index_refine=sdna_index_bPoseChannel)
|
item_custom = item.get_pointer(b'custom', sdna_index_refine=sdna_index_bPoseChannel)
|
||||||
if item_custom is not None:
|
if item_custom is not None:
|
||||||
yield item_custom
|
yield item_custom
|
||||||
|
# Expand the objects 'ParticleSettings' via:
|
||||||
|
# 'ob->particlesystem[...].part'
|
||||||
|
sdna_index_ParticleSystem = block.file.sdna_index_from_id.get(b'ParticleSystem')
|
||||||
|
if sdna_index_ParticleSystem is not None:
|
||||||
|
for item in bf_utils.iter_ListBase(block.get_pointer(b'particlesystem.first')):
|
||||||
|
item_part = item.get_pointer(b'part', sdna_index_refine=sdna_index_ParticleSystem)
|
||||||
|
if item_part is not None:
|
||||||
|
yield item_part
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def expand_ME(block): # 'Mesh'
|
def expand_ME(block): # 'Mesh'
|
||||||
@@ -740,6 +752,15 @@ class ExpandID:
|
|||||||
yield from ExpandID._expand_generic_animdata(block)
|
yield from ExpandID._expand_generic_animdata(block)
|
||||||
yield from ExpandID._expand_generic_nodetree(block)
|
yield from ExpandID._expand_generic_nodetree(block)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def expand_PA(block): # 'ParticleSettings'
|
||||||
|
yield from ExpandID._expand_generic_animdata(block)
|
||||||
|
block_ren_as = block[b'ren_as']
|
||||||
|
if block_ren_as == C_defs.PART_DRAW_GR:
|
||||||
|
yield block.get_pointer(b'dup_group')
|
||||||
|
elif block_ren_as == C_defs.PART_DRAW_OB:
|
||||||
|
yield block.get_pointer(b'dup_ob')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def expand_SC(block): # 'Scene'
|
def expand_SC(block): # 'Scene'
|
||||||
yield from ExpandID._expand_generic_animdata(block)
|
yield from ExpandID._expand_generic_animdata(block)
|
||||||
|
Reference in New Issue
Block a user