Find textures and images of various modifiers
- Wave - UV Project - Weight VG Edit - Weight VG Mix - Weight VG Proximity
This commit is contained in:
parent
0d82dc7fd0
commit
21fb18247d
@ -34,8 +34,13 @@ IMA_SRC_SEQUENCE = 2
|
||||
IMA_SRC_MOVIE = 3
|
||||
|
||||
# DNA_modifier_types.h
|
||||
eModifierType_Wave = 7
|
||||
eModifierType_Displace = 14
|
||||
eModifierType_UVProject = 15
|
||||
eModifierType_ParticleSystem = 19
|
||||
eModifierType_WeightVGEdit = 36
|
||||
eModifierType_WeightVGMix = 37
|
||||
eModifierType_WeightVGProximity = 38
|
||||
eModifierType_Ocean = 39
|
||||
eModifierType_MeshCache = 46
|
||||
|
||||
|
||||
@ -62,18 +62,54 @@ def modifier_ocean(modifier: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
block_name=block_name)
|
||||
|
||||
|
||||
@mod_handler(cdefs.eModifierType_Displace)
|
||||
def modifier_texture(modifier: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
def _get_texture(prop_name: bytes, dblock: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
-> typing.Iterator[result.BlockUsage]:
|
||||
tx = modifier.get_pointer(b'texture')
|
||||
if not tx:
|
||||
"""Yield block usages from a texture propery.
|
||||
|
||||
Assumes dblock[prop_name] is a texture data block.
|
||||
"""
|
||||
if dblock is None:
|
||||
return
|
||||
ima = tx.get_pointer(b'ima')
|
||||
|
||||
tx = dblock.get_pointer(prop_name)
|
||||
yield from _get_image(b'ima', tx, block_name)
|
||||
|
||||
|
||||
def _get_image(prop_name: bytes, dblock: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
-> typing.Iterator[result.BlockUsage]:
|
||||
"""Yield block usages from an image propery.
|
||||
|
||||
Assumes dblock[prop_name] is an image data block.
|
||||
"""
|
||||
if not dblock:
|
||||
return
|
||||
ima = dblock.get_pointer(prop_name)
|
||||
if not ima:
|
||||
return
|
||||
|
||||
path, field = ima.get(b'name', return_field=True)
|
||||
yield result.BlockUsage(modifier, path, path_full_field=field, block_name=block_name)
|
||||
yield result.BlockUsage(ima, path, path_full_field=field, block_name=block_name)
|
||||
|
||||
|
||||
@mod_handler(cdefs.eModifierType_Displace)
|
||||
@mod_handler(cdefs.eModifierType_Wave)
|
||||
def modifier_texture(modifier: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
-> typing.Iterator[result.BlockUsage]:
|
||||
return _get_texture(b'texture', modifier, block_name)
|
||||
|
||||
|
||||
@mod_handler(cdefs.eModifierType_WeightVGEdit)
|
||||
@mod_handler(cdefs.eModifierType_WeightVGMix)
|
||||
@mod_handler(cdefs.eModifierType_WeightVGProximity)
|
||||
def modifier_mask_texture(modifier: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
-> typing.Iterator[result.BlockUsage]:
|
||||
return _get_texture(b'mask_texture', modifier, block_name)
|
||||
|
||||
|
||||
@mod_handler(cdefs.eModifierType_UVProject)
|
||||
def modifier_image(modifier: blendfile.BlendFileBlock, block_name: bytes) \
|
||||
-> typing.Iterator[result.BlockUsage]:
|
||||
yield from _get_image(b'image', modifier, block_name)
|
||||
|
||||
|
||||
@mod_handler(cdefs.eModifierType_ParticleSystem)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user