ShaderFX/LibOverride: Add `BKE_shaderfx_is_nonlocal_in_liboverride` util.
Used to detect if a shaderfx is purely local, or comes from linked data, in case of a liboverride. Not actually used yet since we do not currently support adding shaderfx's to overrides, but will be in the future, and matches constraints and modifiers code.
This commit is contained in:
parent
3953b82030
commit
af3d7123c9
|
@ -160,6 +160,8 @@ void BKE_shaderfx_free_ex(struct ShaderFxData *fx, const int flag);
|
|||
void BKE_shaderfx_free(struct ShaderFxData *fx);
|
||||
bool BKE_shaderfx_unique_name(struct ListBase *shaderfx, struct ShaderFxData *fx);
|
||||
bool BKE_shaderfx_depends_ontime(struct ShaderFxData *fx);
|
||||
bool BKE_shaderfx_is_nonlocal_in_liboverride(const struct Object *ob,
|
||||
const struct ShaderFxData *shaderfx);
|
||||
struct ShaderFxData *BKE_shaderfx_findby_type(struct Object *ob, ShaderFxType type);
|
||||
struct ShaderFxData *BKE_shaderfx_findby_name(struct Object *ob, const char *name);
|
||||
void BKE_shaderfx_copydata_generic(const struct ShaderFxData *fx_src, struct ShaderFxData *fx_dst);
|
||||
|
|
|
@ -164,6 +164,18 @@ const ShaderFxTypeInfo *BKE_shaderfx_get_info(ShaderFxType type)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether given shaderfx is not local (i.e. from linked data) when the object is a library
|
||||
* override.
|
||||
*
|
||||
* \param shaderfx: May be NULL, in which case we consider it as a non-local shaderfx case.
|
||||
*/
|
||||
bool BKE_shaderfx_is_nonlocal_in_liboverride(const Object *ob, const ShaderFxData *shaderfx)
|
||||
{
|
||||
return (ID_IS_OVERRIDE_LIBRARY(ob) &&
|
||||
((shaderfx == NULL) || (shaderfx->flag & eShaderFxFlag_OverrideLibrary_Local) == 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an effect's panel type, which was defined in the #panelRegister callback.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue