32 "The strip values replace the accumulated results by amount specified by influence"},
37 "The strip values are combined with accumulated results by appropriately using addition, "
38 "multiplication, or quaternion math, based on channel type"},
44 "Weighted result of strip is added to the accumulated results"},
49 "Weighted result of strip is removed from the accumulated results"},
54 "Weighted result of strip is multiplied with the accumulated results"},
64 "Hold the first frame if no previous strips in track, and always hold last frame"},
86 static void rna_NlaStrip_name_set(
PointerRNA *
ptr,
const char *value)
110 for (nlt = adt->nla_tracks.first; nlt; nlt = nlt->
next) {
114 char name_esc_nlt[
sizeof(nlt->
name) * 2];
115 char name_esc_strip[
sizeof(strip->
name) * 2];
120 "animation_data.nla_tracks[\"%s\"].strips[\"%s\"]", name_esc_nlt, name_esc_strip);
141 rna_NlaStrip_update(bmain,
scene,
ptr);
160 rna_NlaStrip_update(bmain,
scene,
ptr);
163 static void rna_NlaStrip_start_frame_set(
PointerRNA *
ptr,
float value)
176 CLAMP(value, limit_prev, limit_next);
190 data->end = limit_next;
201 static void rna_NlaStrip_frame_start_ui_set(
PointerRNA *
ptr,
float value)
217 const float striplen =
data->end -
data->start;
231 CLAMP(value, limit_prev, limit_next);
247 static void rna_NlaStrip_end_frame_set(
PointerRNA *
ptr,
float value)
253 CLAMP(value, limit_prev, limit_next);
267 data->start = limit_prev;
278 static void rna_NlaStrip_frame_end_ui_set(
PointerRNA *
ptr,
float value)
286 const float old_strip_end =
data->end;
297 CLAMP(value, limit_prev, limit_next);
302 data->next->start = value;
308 float actlen =
data->actend -
data->actstart;
309 if (
IS_EQF(actlen, 0.0f)) {
320 float action_length_delta = (old_strip_end -
data->end) /
data->scale;
325 if (
IS_EQF(action_length_delta, actlen)) {
326 data->actend =
data->actstart + 1.0f;
329 else if (action_length_delta < actlen) {
331 data->actend =
data->actend - action_length_delta;
338 data->repeat -= (action_length_delta / actlen);
343 static void rna_NlaStrip_scale_set(
PointerRNA *
ptr,
float value)
350 CLAMP(value, 0.0001f, 1000.0f);
357 static void rna_NlaStrip_repeat_set(
PointerRNA *
ptr,
float value)
364 CLAMP(value, 0.01f, 1000.0f);
365 data->repeat = value;
371 static void rna_NlaStrip_blend_in_set(
PointerRNA *
ptr,
float value)
380 data->blendin = value;
383 static void rna_NlaStrip_blend_out_set(
PointerRNA *
ptr,
float value)
393 if ((
len - value) <
data->blendin) {
397 data->blendout = value;
400 static void rna_NlaStrip_use_auto_blend_set(
PointerRNA *
ptr,
bool value)
423 data->blendin = 0.0f;
424 data->blendout = 0.0f;
453 static void rna_NlaStrip_action_start_frame_set(
PointerRNA *
ptr,
float value)
459 data->actstart = value;
466 static void rna_NlaStrip_action_end_frame_set(
PointerRNA *
ptr,
float value)
472 data->actend = value;
478 static void rna_NlaStrip_animated_influence_set(
PointerRNA *
ptr,
bool value)
492 static void rna_NlaStrip_animated_time_set(
PointerRNA *
ptr,
bool value)
508 const char *data_path,
511 if (data_path[0] ==
'\0') {
536 strip->
end += (start - strip->
start);
537 strip->
start = start;
543 "Unable to add strip (the track does not have any space to accommodate this new strip)");
585 static void rna_NlaStrip_remove(
591 reports,
RPT_ERROR,
"NLA strip '%s' not found in track '%s'", strip->
name, track->
name);
607 static void rna_NlaTrack_solo_set(
PointerRNA *
ptr,
bool value)
618 for (nt =
data; nt; nt = nt->
next) {
621 for (nt =
data; nt; nt = nt->
prev) {
659 "Find an F-Curve. Note that this function performs a linear scan "
660 "of all F-Curves in the NLA strip.");
664 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Array index", 0, INT_MAX);
667 func,
"fcurve",
"FCurve",
"",
"The found F-Curve, or None if it doesn't exist");
683 "NLA Strip 'transitions' between adjacent strips"},
684 {
NLASTRIP_TYPE_META,
"META", 0,
"Meta",
"NLA Strip acts as a container for adjacent strips"},
689 "NLA Strip representing a sound event for speakers"},
721 prop,
"Extrapolation",
"Action to take for gaps past the strip extents");
728 prop,
"Blending",
"Method used for combining strip's result with accumulated result");
752 "Start Frame (manipulated from UI)",
753 "Start frame of the NLA strip. Note: changing this value also updates the value of "
754 "the strip's end frame. If only the start frame should be changed, see the \"frame_start\" "
764 "End Frame (manipulated from UI)",
765 "End frame of the NLA strip. Note: changing this value also updates the value of "
766 "the strip's repeats or its action's end frame. If only the end frame should be "
767 "changed, see the \"frame_end\" property instead");
776 prop,
"Blend In",
"Number of frames at start of strip to fade in influence");
790 "Number of frames for Blending In/Out is automatically determined from "
791 "overlapping strips");
845 prop,
"F-Curves",
"F-Curves for controlling the strip's influence and timing");
852 prop,
"Modifiers",
"Modifiers affecting all the F-Curves in the referenced Action");
860 "NLA Strips that this strip acts as a container for (if it is of type Meta)");
866 prop,
"Influence",
"Amount the strip contributes to the current result");
885 "Animated Influence",
886 "Influence setting is controlled by an F-Curve rather than automatically determined");
894 "Animated Strip Time",
895 "Strip time is controlled by an F-Curve rather than automatically determined");
901 prop,
"Cyclic Strip Time",
"Cycle the animated time within the action start and end");
928 "NLA Strip is played back in reverse order (only when timing is "
929 "automatically determined)");
935 "Sync Action Length",
936 "Update range of frames referenced from action "
937 "after tweaking strip and its keyframes");
958 parm =
RNA_def_string(func,
"name",
"NlaStrip", 0,
"",
"Name for the NLA Strips");
966 "Start frame for this strip",
970 parm =
RNA_def_pointer(func,
"action",
"Action",
"",
"Action to assign to this strip");
973 parm =
RNA_def_pointer(func,
"strip",
"NlaStrip",
"",
"New NLA Strip");
980 parm =
RNA_def_pointer(func,
"strip",
"NlaStrip",
"",
"NLA Strip to remove");
992 srna,
"NLA Track",
"A animation layer containing Actions referenced as NLA strips");
1008 "In a local override data, whether this NLA track comes from the linked "
1009 "reference data, or is local to the override");
1035 "NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the "
1036 "same AnimData block are disabled)");
struct AnimData * BKE_animdata_from_id(const struct ID *id)
struct FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], int array_index)
float BKE_nlastrip_compute_frame_to_next_strip(struct NlaStrip *strip)
float BKE_nlastrip_compute_frame_from_previous_strip(struct NlaStrip *strip)
void BKE_nlastrip_validate_name(struct AnimData *adt, struct NlaStrip *strip)
void BKE_nlameta_flush_transforms(struct NlaStrip *mstrip)
void BKE_nlastrip_recalculate_bounds(struct NlaStrip *strip)
bool BKE_nlastrips_add_strip(ListBase *strips, struct NlaStrip *strip)
void BKE_nlastrip_validate_fcurves(struct NlaStrip *strip)
void BKE_nla_validate_state(struct AnimData *adt)
struct NlaStrip * BKE_nlastrip_new(struct bAction *act)
#define NLASTRIP_MIN_LEN_THRESH
void BKE_nlastrip_free(ListBase *strips, struct NlaStrip *strip, bool do_id_user)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
void DEG_id_tag_update_ex(struct Main *bmain, struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_COPY_ON_WRITE
@ NLASTRIP_FLAG_USR_INFLUENCE
@ NLASTRIP_FLAG_AUTO_BLENDS
@ NLASTRIP_FLAG_USR_TIME_CYCLIC
@ NLASTRIP_FLAG_TWEAKUSER
@ NLASTRIP_FLAG_SYNC_LENGTH
@ NLASTRIP_EXTEND_HOLD_FORWARD
@ NLASTRIP_EXTEND_NOTHING
@ NLASTRIP_TYPE_TRANSITION
@ NLATRACK_OVERRIDELIBRARY_LOCAL
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
#define RNA_POINTER_INVALIDATE(ptr)
#define RNA_ENUM_ITEM_SEPR
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
void ANIM_id_update(Main *bmain, ID *id)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_define_lib_overridable(const bool make_overridable)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *prop)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_nla(BlenderRNA *brna)
static void rna_def_nlastrip(BlenderRNA *brna)
static void rna_def_nlatrack(BlenderRNA *brna)
const EnumPropertyItem rna_enum_nla_mode_blend_items[]
static void rna_api_nlatrack_strips(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_strip_fcurves(BlenderRNA *brna, PropertyRNA *cprop)
const EnumPropertyItem rna_enum_nla_mode_extend_items[]
void WM_event_add_notifier(const bContext *C, uint type, void *reference)