30#include "RNA_prototypes.hh"
68 ListBase anim_data = {
nullptr,
nullptr};
137 if (ale->adt && adt_ptr) {
147 id =
static_cast<ID *
>(ale->data);
259 if (
ptr.data ==
nullptr) {
274 if (
ptr.data ==
nullptr) {
310 block = layout->
block();
325 row = &layout->
row(
true);
329 row->
label(
"", ICON_RIGHTARROW);
330 row->
label(
IFACE_(
"Animation Data"), ICON_ANIM_DATA);
338 uiTemplateID(
col,
C, &adt_ptr,
"action",
"ACTION_OT_new",
nullptr,
"NLA_OT_action_unlink");
344 "action_suitable_slots",
350 row = &layout->
row(
true);
354 row = &layout->
row(
true);
358 row = &layout->
row(
true);
374 block = layout->
block();
379 row = &layout->
row(
false);
381 row->
label(
"", ICON_ANIM);
384 row->
label(
"", ICON_ARROW_LEFTRIGHT);
387 row->
label(
"", ICON_SEQ_STRIP_META);
390 row->
label(
"", ICON_SOUND);
407 short showEvalProps = 1;
413 block = layout->
block();
423 column = &layout->
column(
true);
437 column = &layout->
column(
false);
438 column->
prop(&strip_ptr,
"extrapolation",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
439 column->
prop(&strip_ptr,
"blend_type",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
447 column = &layout->
column(
true);
452 row = &column->
row(
true);
455 &strip_ptr,
"use_auto_blend",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
459 row = &column->
row(
true);
462 row->
prop(&strip_ptr,
"use_reverse",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
464 column->
prop(&strip_ptr,
"use_animated_time_cyclic",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
481 block = layout->
block();
488 column = &layout->
column(
true);
489 column->
prop(&strip_ptr,
"action",
UI_ITEM_NONE, std::nullopt, ICON_ACTION);
506 "action_suitable_slots",
508 "anim.slot_unassign_from_nla_strip",
514 column = &layout->
column(
true);
518 row = &layout->
row(
false,
IFACE_(
"Sync Length"));
520 row->
op(
"NLA_OT_action_sync_length",
IFACE_(
"Now"), ICON_FILE_REFRESH);
523 column = &layout->
column(
true);
542 block = layout->
block();
546 col->prop(&strip_ptr,
"use_animated_influence",
UI_ITEM_NONE,
"", ICON_NONE);
561 block = layout->
block();
566 layout->
prop(&strip_ptr,
"influence",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
581 block = layout->
block();
585 col->prop(&strip_ptr,
"use_animated_time",
UI_ITEM_NONE,
"", ICON_NONE);
599 block = layout->
block();
604 layout->
prop(&strip_ptr,
"strip_time",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
607#define NLA_FMODIFIER_PANEL_PREFIX "NLA"
636 block = row->
block();
643 row = &row->
row(
true);
644 row->
op(
"NLA_OT_fmodifier_copy",
"", ICON_COPYDOWN);
645 row->
op(
"NLA_OT_fmodifier_paste",
"", ICON_PASTEDOWN);
704 pt->
parent = pt_properties;
718 pt->
parent = pt_properties;
Functions and classes to work with Actions.
Functions for backward compatibility with the legacy Action API.
const FModifierTypeInfo * get_fmodifier_typeinfo(int type)
NlaStrip * BKE_nlastrip_find_active(NlaTrack *nlt)
@ PANEL_TYPE_DEFAULT_CLOSED
LinkData * BLI_genericNodeN(void *data)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
size_t size_t size_t BLI_snprintf_utf8(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
@ NLASTRIP_TYPE_TRANSITION
@ ANIMTYPE_SPECIALDATA__UNUSED
@ ANIMTYPE_GREASE_PENCIL_DATABLOCK
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
Read Guarded memory(de)allocation.
void UI_block_emboss_set(uiBlock *block, blender::ui::EmbossType emboss)
void UI_block_func_handle_set(uiBlock *block, uiBlockHandleFunc func, void *arg)
void uiTemplateID(uiLayout *layout, const bContext *C, PointerRNA *ptr, blender::StringRefNull propname, const char *newop, const char *openop, const char *unlinkop, int filter=UI_TEMPLATE_ID_FILTER_ALL, bool live_icon=false, std::optional< blender::StringRef > text=std::nullopt)
void uiTemplateSearch(uiLayout *layout, const bContext *C, PointerRNA *ptr, blender::StringRefNull propname, PointerRNA *searchptr, const char *searchpropname, const char *newop, const char *unlinkop, std::optional< blender::StringRef > text=std::nullopt)
void ANIM_animdata_freelist(ListBase *anim_data)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
void ANIM_modifier_panels_register_graph_and_NLA(ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
void ANIM_fmodifier_panels(const bContext *C, ID *owner_id, ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
void * MEM_callocN(size_t len, const char *str)
bool action_treat_as_legacy(const bAction &action)
int RNA_struct_ui_icon(const StructRNA *type)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_id_pointer_create(ID *id)
void(* draw)(const bContext *C, Panel *panel)
char idname[BKE_ST_MAXNAME]
bool(* poll)(const bContext *C, PanelType *pt)
char translation_context[BKE_ST_MAXNAME]
char category[BKE_ST_MAXNAME]
char label[BKE_ST_MAXNAME]
char parent_id[BKE_ST_MAXNAME]
void(* draw_header)(const bContext *C, Panel *panel)
PointerRNA op_menu_enum(const bContext *C, wmOperatorType *ot, blender::StringRefNull propname, std::optional< blender::StringRefNull > name, int icon)
void use_property_decorate_set(bool is_sep)
void alignment_set(blender::ui::LayoutAlign alignment)
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
void active_set(bool active)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void enabled_set(bool enabled)
void context_ptr_set(blender::StringRef name, const PointerRNA *ptr)
uiLayout & row(bool align)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
void use_property_split_set(bool value)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)