IDTypeInfo: add flag to indicate that ID has no animation data

This is part of T75724.

Reviewers: mont29

Differential Revision: https://developer.blender.org/D9134
This commit is contained in:
2020-10-07 12:35:58 +02:00
parent e2526e338f
commit 65a6caafce
15 changed files with 24 additions and 49 deletions

View File

@@ -47,6 +47,8 @@ enum {
IDTYPE_FLAGS_NO_LIBLINKING = 1 << 1,
/** Indicates that the given IDType does not support making a library-linked ID local. */
IDTYPE_FLAGS_NO_MAKELOCAL = 1 << 2,
/** Indicates that the given IDType does not have animation data. */
IDTYPE_FLAGS_NO_ANIMDATA = 1 << 3,
};
typedef struct IDCacheKey {

View File

@@ -282,7 +282,7 @@ IDTypeInfo IDType_ID_AC = {
.name = "Action",
.name_plural = "actions",
.translation_context = BLT_I18NCONTEXT_ID_ACTION,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = action_copy_data,

View File

@@ -31,6 +31,7 @@
#include "BKE_fcurve.h"
#include "BKE_fcurve_driver.h"
#include "BKE_global.h"
#include "BKE_idtype.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
@@ -70,42 +71,11 @@ static CLG_LogRef LOG = {"bke.anim_sys"};
/* Check if ID can have AnimData */
bool id_type_can_have_animdata(const short id_type)
{
/* Only some ID-blocks have this info for now */
/* TODO: finish adding this for the other blocktypes */
switch (id_type) {
/* has AnimData */
case ID_OB:
case ID_ME:
case ID_MB:
case ID_CU:
case ID_AR:
case ID_LT:
case ID_KE:
case ID_PA:
case ID_MA:
case ID_TE:
case ID_NT:
case ID_LA:
case ID_CA:
case ID_WO:
case ID_LS:
case ID_LP:
case ID_SPK:
case ID_SCE:
case ID_MC:
case ID_MSK:
case ID_GD:
case ID_CF:
case ID_HA:
case ID_PT:
case ID_VO:
case ID_SIM:
return true;
/* no AnimData */
default:
return false;
const IDTypeInfo *typeinfo = BKE_idtype_get_info_from_idcode(id_type);
if (typeinfo != NULL) {
return (typeinfo->flags & IDTYPE_FLAGS_NO_ANIMDATA) == 0;
}
return false;
}
bool id_can_have_animdata(const ID *id)

View File

@@ -363,7 +363,7 @@ IDTypeInfo IDType_ID_BR = {
.name = "Brush",
.name_plural = "brushes",
.translation_context = BLT_I18NCONTEXT_ID_BRUSH,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = brush_init_data,
.copy_data = brush_copy_data,

View File

@@ -166,7 +166,7 @@ IDTypeInfo IDType_ID_GR = {
.name = "Collection",
.name_plural = "collections",
.translation_context = BLT_I18NCONTEXT_ID_COLLECTION,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = collection_copy_data,

View File

@@ -155,7 +155,7 @@ IDTypeInfo IDType_ID_VF = {
.name = "Font",
.name_plural = "fonts",
.translation_context = BLT_I18NCONTEXT_ID_VFONT,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = vfont_init_data,
.copy_data = vfont_copy_data,

View File

@@ -311,7 +311,7 @@ IDTypeInfo IDType_ID_IM = {
.name = "Image",
.name_plural = "images",
.translation_context = BLT_I18NCONTEXT_ID_IMAGE,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = image_init_data,
.copy_data = image_copy_data,

View File

@@ -117,7 +117,8 @@ IDTypeInfo IDType_ID_IP = {
.name = "Ipo",
.name_plural = "ipos",
.translation_context = "",
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL |
IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = NULL,

View File

@@ -68,7 +68,8 @@ IDTypeInfo IDType_ID_LI = {
.name = "Library",
.name_plural = "libraries",
.translation_context = BLT_I18NCONTEXT_ID_LIBRARY,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL |
IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = NULL,

View File

@@ -133,7 +133,7 @@ IDTypeInfo IDType_ID_PAL = {
.name = "Palette",
.name_plural = "palettes",
.translation_context = BLT_I18NCONTEXT_ID_PALETTE,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = palette_init_data,
.copy_data = palette_copy_data,
@@ -194,7 +194,7 @@ IDTypeInfo IDType_ID_PC = {
.name = "PaintCurve",
.name_plural = "paint_curves",
.translation_context = BLT_I18NCONTEXT_ID_PAINTCURVE,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = paint_curve_copy_data,

View File

@@ -238,7 +238,7 @@ IDTypeInfo IDType_ID_SCR = {
.name = "Screen",
.name_plural = "screens",
.translation_context = BLT_I18NCONTEXT_ID_SCREEN,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_MAKELOCAL,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_MAKELOCAL | IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = NULL,

View File

@@ -197,7 +197,7 @@ IDTypeInfo IDType_ID_SO = {
.name = "Sound",
.name_plural = "sounds",
.translation_context = BLT_I18NCONTEXT_ID_SOUND,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
/* A fuzzy case, think NULLified content is OK here... */
.init_data = NULL,

View File

@@ -243,7 +243,7 @@ IDTypeInfo IDType_ID_TXT = {
.name = "Text",
.name_plural = "texts",
.translation_context = BLT_I18NCONTEXT_ID_TEXT,
.flags = 0,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = text_init_data,
.copy_data = text_copy_data,

View File

@@ -83,7 +83,7 @@ IDTypeInfo IDType_ID_WS = {
.name = "WorkSpace",
.name_plural = "workspaces",
.translation_context = BLT_I18NCONTEXT_ID_WORKSPACE,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_MAKELOCAL,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_MAKELOCAL | IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = NULL,

View File

@@ -106,7 +106,8 @@ IDTypeInfo IDType_ID_WM = {
.name = "WindowManager",
.name_plural = "window_managers",
.translation_context = BLT_I18NCONTEXT_ID_WINDOWMANAGER,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL |
IDTYPE_FLAGS_NO_ANIMDATA,
.init_data = NULL,
.copy_data = NULL,