diff --git a/blender_asset_tracer/cdefs.py b/blender_asset_tracer/cdefs.py index f7f05ae..2414fe3 100644 --- a/blender_asset_tracer/cdefs.py +++ b/blender_asset_tracer/cdefs.py @@ -34,6 +34,7 @@ IMA_SRC_SEQUENCE = 2 IMA_SRC_MOVIE = 3 # DNA_modifier_types.h +eModifierType_Displace = 14 eModifierType_ParticleSystem = 19 eModifierType_Ocean = 39 eModifierType_MeshCache = 46 diff --git a/blender_asset_tracer/trace/modifier_walkers.py b/blender_asset_tracer/trace/modifier_walkers.py index 1bb48ec..cbcf76b 100644 --- a/blender_asset_tracer/trace/modifier_walkers.py +++ b/blender_asset_tracer/trace/modifier_walkers.py @@ -62,6 +62,20 @@ 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) \ + -> typing.Iterator[result.BlockUsage]: + tx = modifier.get_pointer(b'texture') + if not tx: + return + ima = tx.get_pointer(b'ima') + 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) + + @mod_handler(cdefs.eModifierType_ParticleSystem) def modifier_particle_system(modifier: blendfile.BlendFileBlock, block_name: bytes) \ -> typing.Iterator[result.BlockUsage]: