From 0d82dc7fd06cf6b0b48558f6cab67a7bf497b722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Mon, 26 Mar 2018 16:46:13 +0200 Subject: [PATCH] Find texture of displacement modifier --- blender_asset_tracer/cdefs.py | 1 + blender_asset_tracer/trace/modifier_walkers.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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]: