Anim: avoid logged warnings when visiting layered Action in NLA evaluation

Avoid logging actions about `action->idroot` not matching, when evaluating
the NLA and visiting a layered Action. Layered Actions are not limited to
a single data-block type, and so the code should ignore `action->idroot`.
This commit is contained in:
Sybren A. Stüvel 2024-06-19 18:12:26 +02:00
parent aa0e5368e7
commit 4c0a77ee8f
2 changed files with 15 additions and 0 deletions

@ -818,6 +818,10 @@ if(WITH_TBB)
)
endif()
if(WITH_EXPERIMENTAL_FEATURES)
add_definitions(-DWITH_ANIM_BAKLAVA)
endif()
# # Warnings as errors, this is too strict!
# if(MSVC)
# string(APPEND CMAKE_C_FLAGS " /WX")

@ -800,6 +800,17 @@ static void action_idcode_patch_check(ID *id, bAction *act)
return;
}
#ifdef WITH_ANIM_BAKLAVA
if (act->wrap().is_action_layered()) {
/* Layered Actions can always be assigned to any ID. It's actually the Binding that is limited
* to an ID type (similar to legacy Actions). Layered Actions are evaluated differently,
* though, and their evaluation shouldn't end up here. At the moment of writing it can still
* happen through NLA evaluation, though, so there's no assert here to prevent this. */
/* TODO: when possible, add a BLI_assert_unreachable() here. */
return;
}
#endif
idcode = GS(id->name);
/* the actual checks... hopefully not too much of a performance hit in the long run... */