Cleanup: internally renaming NLA Channels to NLA Tracks

After renaming "NLA Channels" to "NLA Tracks" user facing, doing a cleanup pass to internally rename things.

Pull Request: https://projects.blender.org/blender/blender/pulls/115011
This commit is contained in:
Nate Rupsis
2023-11-23 15:33:40 +01:00
committed by Nate Rupsis
parent eb935bf32d
commit f9b9ec3b26
11 changed files with 181 additions and 187 deletions

View File

@@ -1133,7 +1133,7 @@ static void acf_nla_controls_name(bAnimListElem * /*ale*/, char *name)
BLI_strncpy_utf8(name, IFACE_("NLA Strip Controls"), ANIM_CHAN_NAME_SIZE);
}
/* check if some setting exists for this channel */
/* check if some setting exists for this track */
static bool acf_nla_controls_setting_valid(bAnimContext * /*ac*/,
bAnimListElem * /*ale*/,
eAnimChannel_Settings setting)
@@ -1189,7 +1189,7 @@ static int acf_nla_controls_icon(bAnimListElem * /*ale*/)
/** NLA Control F-Curves expander type define. */
static bAnimChannelType ACF_NLACONTROLS = {
/*channel_type_name*/ "NLA Controls Expander",
/*channel_role*/ ACHANNEL_ROLE_EXPANDER,
/*track_role*/ ACHANNEL_ROLE_EXPANDER,
/*get_backdrop_color*/ acf_nla_controls_color,
/*get_channel_color*/ nullptr,
@@ -4080,7 +4080,7 @@ static int acf_nlaaction_icon(bAnimListElem *ale)
return ICON_ACTION;
}
/* Backdrop color for nla action channel
/* Backdrop color for nla action track
* Although this can't be used directly for NLA Action drawing,
* it is still needed for use behind the RHS toggles
*/
@@ -4090,19 +4090,19 @@ static void acf_nlaaction_color(bAnimContext * /*ac*/, bAnimListElem *ale, float
/* Action Line
* The alpha values action_get_color returns are only useful for drawing
* strips backgrounds but here we're doing channel list backgrounds instead
* strips backgrounds but here we're doing track list backgrounds instead
* so we ignore that and use our own when needed
*/
nla_action_get_color(ale->adt, (bAction *)ale->data, color);
/* NOTE: since the return types only allow rgb, we cannot do the alpha-blending we'd
* like for the solo-drawing case. Hence, this method isn't actually used for drawing
* most of the channel...
* most of the track...
*/
copy_v3_v3(r_color, color);
}
/* backdrop for nla action channel */
/* backdrop for nla action track */
static void acf_nlaaction_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
{
const bAnimChannelType *acf = ANIM_channel_get_typeinfo(ale);
@@ -4113,7 +4113,7 @@ static void acf_nlaaction_backdrop(bAnimContext *ac, bAnimListElem *ale, float y
/* Action Line
* The alpha values action_get_color returns are only useful for drawing
* strips backgrounds but here we're doing channel list backgrounds instead
* strips backgrounds but here we're doing track list backgrounds instead
* so we ignore that and use our own when needed
*/
nla_action_get_color(adt, (bAction *)ale->data, color);
@@ -4125,19 +4125,19 @@ static void acf_nlaaction_backdrop(bAnimContext *ac, bAnimListElem *ale, float y
color[3] = (adt && (adt->flag & ADT_NLA_SOLO_TRACK)) ? 0.3f : 1.0f;
}
/* only on top left corner, to show that this channel sits on top of the preceding ones
/* only on top left corner, to show that this track sits on top of the preceding ones
* while still linking into the action line strip to the right
*/
UI_draw_roundbox_corner_set(UI_CNR_TOP_LEFT);
/* draw slightly shifted up vertically to look like it has more separation from other channels,
/* draw slightly shifted up vertically to look like it has more separation from other tracks,
* but we then need to slightly shorten it so that it doesn't look like it overlaps
*/
rctf box;
box.xmin = offset;
box.xmax = float(v2d->cur.xmax);
box.ymin = yminc + NLACHANNEL_SKIP;
box.ymax = ymaxc + NLACHANNEL_SKIP - 1;
box.ymin = yminc + NLATRACK_SKIP;
box.ymax = ymaxc + NLATRACK_SKIP - 1;
UI_draw_roundbox_4fv(&box, true, 8, color);
}
@@ -4170,7 +4170,7 @@ static bool acf_nlaaction_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, Prope
return false;
}
/* check if some setting exists for this channel */
/* check if some setting exists for this track */
static bool acf_nlaaction_setting_valid(bAnimContext * /*ac*/,
bAnimListElem *ale,
eAnimChannel_Settings setting)
@@ -4853,9 +4853,9 @@ void ANIM_channel_draw(
/* NOTE: technically, NLA Action "pushdown" should be here too,
* but there are no sliders there. */
/* NLA action channels have slightly different spacing requirements... */
/* NLA action tracks have slightly different spacing requirements... */
if (ale->type == ANIMTYPE_NLAACTION) {
ymin_ofs = NLACHANNEL_SKIP;
ymin_ofs = NLATRACK_SKIP;
}
}

View File

@@ -1340,7 +1340,7 @@ static bool rearrange_animchannel_islands(ListBase *list,
* ! NLA tracks are displayed in opposite order, so directions need care
* mode: REARRANGE_ANIMCHAN_*
*/
static void rearrange_nla_channels(bAnimContext *ac, AnimData *adt, eRearrangeAnimChan_Mode mode)
static void rearrange_nla_tracks(bAnimContext *ac, AnimData *adt, eRearrangeAnimChan_Mode mode)
{
AnimChanRearrangeFp rearrange_func;
ListBase anim_data_visible = {nullptr, nullptr};
@@ -1773,7 +1773,7 @@ static int animchannels_rearrange_exec(bContext *C, wmOperator *op)
switch (ac.datatype) {
case ANIMCONT_NLA: /* NLA-tracks only */
rearrange_nla_channels(&ac, adt, mode);
rearrange_nla_tracks(&ac, adt, mode);
DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION);
break;
@@ -2983,7 +2983,7 @@ static void box_select_anim_channels(bAnimContext *ac, rcti *rect, short selectm
float ymax;
if (ac->datatype == ANIMCONT_NLA) {
ymax = NLACHANNEL_FIRST_TOP(ac);
ymax = NLATRACK_FIRST_TOP(ac);
}
else {
ymax = ANIM_UI_get_first_channel_top(v2d);
@@ -2999,7 +2999,7 @@ static void box_select_anim_channels(bAnimContext *ac, rcti *rect, short selectm
}
if (ac->datatype == ANIMCONT_NLA) {
ymin = ymax - NLACHANNEL_STEP(snla);
ymin = ymax - NLATRACK_STEP(snla);
}
else {
ymin = ymax - ANIM_UI_get_channel_step();
@@ -3209,10 +3209,10 @@ static int animchannels_channel_get(bAnimContext *ac, const int mval[2])
if (ac->datatype == ANIMCONT_NLA) {
SpaceNla *snla = (SpaceNla *)ac->sl;
UI_view2d_listview_view_to_cell(NLACHANNEL_NAMEWIDTH,
NLACHANNEL_STEP(snla),
UI_view2d_listview_view_to_cell(NLATRACK_NAMEWIDTH,
NLATRACK_STEP(snla),
0,
NLACHANNEL_FIRST_TOP(ac),
NLATRACK_FIRST_TOP(ac),
x,
y,
nullptr,
@@ -3821,7 +3821,7 @@ static int mouse_anim_channels(bContext *C,
}
/* action to take depends on what channel we've got */
/* WARNING: must keep this in sync with the equivalent function in `nla_channels.cc`. */
/* WARNING: must keep this in sync with the equivalent function in `nla_tracks.cc`. */
switch (ale->type) {
case ANIMTYPE_SCENE:
notifierFlags |= click_select_channel_scene(ale, selectmode);

View File

@@ -440,22 +440,22 @@ ENUM_OPERATORS(eAnimFilter_Flags, ANIMFILTER_TMP_IGNORE_ONLYSEL);
* \{ */
/** NLA track heights */
#define NLACHANNEL_FIRST_TOP(ac) \
(UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLACHANNEL_SKIP)
#define NLACHANNEL_HEIGHT(snla) \
#define NLATRACK_FIRST_TOP(ac) \
(UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLATRACK_SKIP)
#define NLATRACK_HEIGHT(snla) \
(((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
(1.2f * U.widget_unit))
#define NLACHANNEL_SKIP (0.1f * U.widget_unit)
#define NLACHANNEL_STEP(snla) (NLACHANNEL_HEIGHT(snla) + NLACHANNEL_SKIP)
#define NLATRACK_SKIP (0.1f * U.widget_unit)
#define NLATRACK_STEP(snla) (NLATRACK_HEIGHT(snla) + NLATRACK_SKIP)
/** Additional offset to give some room at the end. */
#define NLACHANNEL_TOT_HEIGHT(ac, item_amount) \
(-NLACHANNEL_FIRST_TOP(ac) + NLACHANNEL_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
#define NLATRACK_TOT_HEIGHT(ac, item_amount) \
(-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
/** Channel widths */
#define NLACHANNEL_NAMEWIDTH (10 * U.widget_unit)
/** Track widths */
#define NLATRACK_NAMEWIDTH (10 * U.widget_unit)
/** Channel toggle-buttons */
#define NLACHANNEL_BUTTON_WIDTH (0.8f * U.widget_unit)
/** Track toggle-buttons */
#define NLATRACK_BUTTON_WIDTH (0.8f * U.widget_unit)
/** \} */

View File

@@ -21,7 +21,7 @@ set(INC_SYS
set(SRC
nla_buttons.cc
nla_channels.cc
nla_tracks.cc
nla_draw.cc
nla_edit.cc
nla_ops.cc
@@ -38,7 +38,6 @@ set(LIB
PRIVATE bf::intern::guardedalloc
)
blender_add_lib(bf_editor_space_nla "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
# RNA_prototypes.h dna_type_offsets.h

View File

@@ -793,35 +793,36 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region)
const float pixelx = BLI_rctf_size_x(&v2d->cur) / BLI_rcti_size_x(&v2d->mask);
const float text_margin_x = (8 * UI_SCALE_FAC) * pixelx;
/* build list of channels to draw */
/* build list of tracks to draw */
ListBase anim_data = {nullptr, nullptr};
eAnimFilter_Flags filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE |
ANIMFILTER_LIST_CHANNELS | ANIMFILTER_FCURVESONLY);
size_t items = ANIM_animdata_filter(
ac, &anim_data, filter, ac->data, eAnimCont_Types(ac->datatype));
/* Update max-extent of channels here (taking into account scrollers):
* - this is done to allow the channel list to be scrollable, but must be done here
* to avoid regenerating the list again and/or also because channels list is drawn first
* - offset of NLACHANNEL_HEIGHT*2 is added to the height of the channels, as first is for
/* Update max-extent of tracks here (taking into account scrollers):
* - this is done to allow the track list to be scrollable, but must be done here
* to avoid regenerating the list again and/or also because tracks list is drawn first
* - offset of NLATRACK_HEIGHT*2 is added to the height of the tracks, as first is for
* start of list offset, and the second is as a correction for the scrollers.
*/
int height = NLACHANNEL_TOT_HEIGHT(ac, items);
int height = NLATRACK_TOT_HEIGHT(ac, items);
v2d->tot.ymin = -height;
/* Loop through channels, and set up drawing depending on their type. */
float ymax = NLACHANNEL_FIRST_TOP(ac);
/* Loop through tracks, and set up drawing depending on their type. */
float ymax = NLATRACK_FIRST_TOP(ac);
for (bAnimListElem *ale = static_cast<bAnimListElem *>(anim_data.first); ale;
ale = ale->next, ymax -= NLACHANNEL_STEP(snla))
ale = ale->next, ymax -= NLATRACK_STEP(snla))
{
float ymin = ymax - NLACHANNEL_HEIGHT(snla);
float ymin = ymax - NLATRACK_HEIGHT(snla);
float ycenter = (ymax + ymin) / 2.0f;
/* check if visible */
if (IN_RANGE(ymin, v2d->cur.ymin, v2d->cur.ymax) ||
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax)) {
/* data to draw depends on the type of channel */
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax))
{
/* data to draw depends on the type of track */
switch (ale->type) {
case ANIMTYPE_NLATRACK: {
AnimData *adt = ale->adt;
@@ -873,16 +874,13 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region)
nla_action_get_color(adt, static_cast<bAction *>(ale->data), color);
immUniformColor4fv(color);
/* draw slightly shifted up for greater separation from standard channels,
/* draw slightly shifted up for greater separation from standard tracks,
* but also slightly shorter for some more contrast when viewing the strips
*/
switch (adt->act_extendmode) {
case NLASTRIP_EXTEND_HOLD: {
immRectf(pos,
v2d->cur.xmin,
ymin + NLACHANNEL_SKIP,
v2d->cur.xmax,
ymax - NLACHANNEL_SKIP);
immRectf(
pos, v2d->cur.xmin, ymin + NLATRACK_SKIP, v2d->cur.xmax, ymax - NLATRACK_SKIP);
break;
}
case NLASTRIP_EXTEND_HOLD_FORWARD: {
@@ -891,7 +889,7 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region)
BKE_action_frame_range_get(static_cast<bAction *>(ale->data), &r_start, &r_end);
BKE_nla_clip_length_ensure_nonzero(&r_start, &r_end);
immRectf(pos, r_end, ymin + NLACHANNEL_SKIP, v2d->cur.xmax, ymax - NLACHANNEL_SKIP);
immRectf(pos, r_end, ymin + NLATRACK_SKIP, v2d->cur.xmax, ymax - NLATRACK_SKIP);
break;
}
case NLASTRIP_EXTEND_NOTHING:
@@ -905,8 +903,8 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region)
adt,
static_cast<bAction *>(ale->data),
ycenter,
ymin + NLACHANNEL_SKIP,
ymax - NLACHANNEL_SKIP);
ymin + NLATRACK_SKIP,
ymax - NLATRACK_SKIP);
GPU_blend(GPU_BLEND_NONE);
break;
@@ -915,14 +913,14 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region)
}
}
/* Free temporary channels. */
/* Free temporary tracks. */
ANIM_animdata_freelist(&anim_data);
}
/* *********************************************** */
/* Channel List */
/* Track List */
void draw_nla_channel_list(const bContext *C, bAnimContext *ac, ARegion *region)
void draw_nla_track_list(const bContext *C, bAnimContext *ac, ARegion *region)
{
ListBase anim_data = {nullptr, nullptr};
@@ -930,63 +928,65 @@ void draw_nla_channel_list(const bContext *C, bAnimContext *ac, ARegion *region)
View2D *v2d = &region->v2d;
size_t items;
/* build list of channels to draw */
/* build list of tracks to draw */
eAnimFilter_Flags filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE |
ANIMFILTER_LIST_CHANNELS | ANIMFILTER_FCURVESONLY);
items = ANIM_animdata_filter(ac, &anim_data, filter, ac->data, eAnimCont_Types(ac->datatype));
/* Update max-extent of channels here (taking into account scrollers):
* - this is done to allow the channel list to be scrollable, but must be done here
* to avoid regenerating the list again and/or also because channels list is drawn first
* - offset of NLACHANNEL_HEIGHT*2 is added to the height of the channels, as first is for
/* Update max-extent of tracks here (taking into account scrollers):
* - this is done to allow the track list to be scrollable, but must be done here
* to avoid regenerating the list again and/or also because tracks list is drawn first
* - offset of NLATRACK_HEIGHT*2 is added to the height of the tracks, as first is for
* start of list offset, and the second is as a correction for the scrollers.
*/
int height = NLACHANNEL_TOT_HEIGHT(ac, items);
int height = NLATRACK_TOT_HEIGHT(ac, items);
v2d->tot.ymin = -height;
/* need to do a view-sync here, so that the keys area doesn't jump around
* (it must copy this) */
UI_view2d_sync(nullptr, ac->area, v2d, V2D_LOCK_COPY);
/* draw channels */
/* draw tracks */
{ /* first pass: just the standard GL-drawing for backdrop + text */
size_t channel_index = 0;
float ymax = NLACHANNEL_FIRST_TOP(ac);
size_t track_index = 0;
float ymax = NLATRACK_FIRST_TOP(ac);
for (bAnimListElem *ale = static_cast<bAnimListElem *>(anim_data.first); ale;
ale = ale->next, ymax -= NLACHANNEL_STEP(snla), channel_index++)
ale = ale->next, ymax -= NLATRACK_STEP(snla), track_index++)
{
float ymin = ymax - NLACHANNEL_HEIGHT(snla);
float ymin = ymax - NLATRACK_HEIGHT(snla);
/* check if visible */
if (IN_RANGE(ymin, v2d->cur.ymin, v2d->cur.ymax) ||
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax)) {
/* draw all channels using standard channel-drawing API */
ANIM_channel_draw(ac, ale, ymin, ymax, channel_index);
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax))
{
/* draw all tracks using standard channel-drawing API */
ANIM_channel_draw(ac, ale, ymin, ymax, track_index);
}
}
}
{ /* second pass: UI widgets */
uiBlock *block = UI_block_begin(C, region, __func__, UI_EMBOSS);
size_t channel_index = 0;
float ymax = NLACHANNEL_FIRST_TOP(ac);
size_t track_index = 0;
float ymax = NLATRACK_FIRST_TOP(ac);
/* set blending again, as may not be set in previous step */
GPU_blend(GPU_BLEND_ALPHA);
/* Loop through channels, and set up drawing depending on their type. */
/* Loop through tracks, and set up drawing depending on their type. */
for (bAnimListElem *ale = static_cast<bAnimListElem *>(anim_data.first); ale;
ale = ale->next, ymax -= NLACHANNEL_STEP(snla), channel_index++)
ale = ale->next, ymax -= NLATRACK_STEP(snla), track_index++)
{
float ymin = ymax - NLACHANNEL_HEIGHT(snla);
float ymin = ymax - NLATRACK_HEIGHT(snla);
/* check if visible */
if (IN_RANGE(ymin, v2d->cur.ymin, v2d->cur.ymax) ||
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax)) {
/* draw all channels using standard channel-drawing API */
rctf channel_rect;
BLI_rctf_init(&channel_rect, 0, v2d->cur.xmax, ymin, ymax);
ANIM_channel_draw_widgets(C, ac, ale, block, &channel_rect, channel_index);
IN_RANGE(ymax, v2d->cur.ymin, v2d->cur.ymax))
{
/* draw all tracks using standard channel-drawing API */
rctf track_rect;
BLI_rctf_init(&track_rect, 0, v2d->cur.xmax, ymin, ymax);
ANIM_channel_draw_widgets(C, ac, ale, block, &track_rect, track_index);
}
}
@@ -996,7 +996,7 @@ void draw_nla_channel_list(const bContext *C, bAnimContext *ac, ARegion *region)
GPU_blend(GPU_BLEND_NONE);
}
/* free temporary channels */
/* free temporary tracks */
ANIM_animdata_freelist(&anim_data);
}

View File

@@ -322,9 +322,9 @@ static void get_nlastrip_extents(bAnimContext *ac, float *min, float *max, const
*min = 999999999.0f;
*max = -999999999.0f;
/* check if any channels to set range with */
/* check if any tracks to set range with */
if (anim_data.first) {
/* go through channels, finding max extents */
/* go through tracks, finding max extents */
LISTBASE_FOREACH (bAnimListElem *, ale, &anim_data) {
NlaTrack *nlt = static_cast<NlaTrack *>(ale->data);
@@ -415,18 +415,18 @@ void NLA_OT_previewrange_set(wmOperatorType *ot)
* \{ */
/**
* Find the extents of the active channel
* Find the extents of the active track
*
* \param r_min: Bottom y-extent of channel.
* \param r_max: Top y-extent of channel.
* \return Success of finding a selected channel.
* \param r_min: Bottom y-extent of track.
* \param r_max: Top y-extent of track.
* \return Success of finding a selected track.
*/
static bool nla_channels_get_selected_extents(bAnimContext *ac, float *r_min, float *r_max)
static bool nla_tracks_get_selected_extents(bAnimContext *ac, float *r_min, float *r_max)
{
ListBase anim_data = {nullptr, nullptr};
SpaceNla *snla = reinterpret_cast<SpaceNla *>(ac->sl);
/* NOTE: not bool, since we want prioritize individual channels over expanders. */
/* NOTE: not bool, since we want prioritize individual tracks over expanders. */
short found = 0;
/* get all items - we need to do it this way */
@@ -434,11 +434,11 @@ static bool nla_channels_get_selected_extents(bAnimContext *ac, float *r_min, fl
ANIMFILTER_LIST_CHANNELS | ANIMFILTER_FCURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, eAnimCont_Types(ac->datatype));
/* loop through all channels, finding the first one that's selected */
float ymax = NLACHANNEL_FIRST_TOP(ac);
/* loop through all tracks, finding the first one that's selected */
float ymax = NLATRACK_FIRST_TOP(ac);
for (bAnimListElem *ale = static_cast<bAnimListElem *>(anim_data.first); ale;
ale = ale->next, ymax -= NLACHANNEL_STEP(snla))
ale = ale->next, ymax -= NLATRACK_STEP(snla))
{
const bAnimChannelType *acf = ANIM_channel_get_typeinfo(ale);
@@ -447,13 +447,13 @@ static bool nla_channels_get_selected_extents(bAnimContext *ac, float *r_min, fl
ANIM_channel_setting_get(ac, ale, ACHANNEL_SETTING_SELECT))
{
/* update best estimate */
*r_min = ymax - NLACHANNEL_HEIGHT(snla);
*r_min = ymax - NLATRACK_HEIGHT(snla);
*r_max = ymax;
/* is this high enough priority yet? */
found = acf->channel_role;
/* only stop our search when we've found an actual channel
/* only stop our search when we've found an actual track
* - data-block expanders get less priority so that we don't abort prematurely
*/
if (found == ACHANNEL_ROLE_CHANNEL) {
@@ -489,17 +489,17 @@ static int nlaedit_viewall(bContext *C, const bool only_sel)
/* set vertical range */
if (only_sel == false) {
/* view all -> the summary channel is usually the shows everything,
/* view all -> the summary track is usually the shows everything,
* and resides right at the top... */
v2d->cur.ymax = 0.0f;
v2d->cur.ymin = float(-BLI_rcti_size_y(&v2d->mask));
}
else {
/* locate first selected channel (or the active one), and frame those */
/* locate first selected track (or the active one), and frame those */
float ymin = v2d->cur.ymin;
float ymax = v2d->cur.ymax;
if (nla_channels_get_selected_extents(&ac, &ymin, &ymax)) {
if (nla_tracks_get_selected_extents(&ac, &ymin, &ymax)) {
/* recenter the view so that this range is in the middle */
float ymid = (ymax - ymin) / 2.0f + ymin;
float x_center;
@@ -2164,7 +2164,8 @@ static int nlaedit_apply_scale_exec(bContext *C, wmOperator * /*op*/)
* (transitions don't have scale) */
if ((strip->flag & NLASTRIP_FLAG_SELECT) && (strip->type == NLASTRIP_TYPE_CLIP)) {
if (strip->act == nullptr || ID_IS_OVERRIDE_LIBRARY(strip->act) ||
ID_IS_LINKED(strip->act)) {
ID_IS_LINKED(strip->act))
{
continue;
}
/* if the referenced action is used by other strips,

View File

@@ -27,7 +27,7 @@ void nla_buttons_register(ARegionType *art);
/* `nla_draw.cc` */
void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region);
void draw_nla_channel_list(const bContext *C, bAnimContext *ac, ARegion *region);
void draw_nla_track_list(const bContext *C, bAnimContext *ac, ARegion *region);
/* **************************************** */
/* `nla_select.cc` */
@@ -107,7 +107,7 @@ void NLA_OT_fmodifier_copy(wmOperatorType *ot);
void NLA_OT_fmodifier_paste(wmOperatorType *ot);
/* **************************************** */
/* `nla_channels.cc` */
/* `nla_tracks.cc` */
/**
* Helper - add NLA Tracks alongside existing ones.

View File

@@ -194,7 +194,7 @@ void NLA_OT_select_all(wmOperatorType *ot)
* - BKEY - 1: all strips within region are selected #NLAEDIT_BOX_ALLSTRIPS.
* - ALT-BKEY - depending on which axis of the region was larger.
* - 2: x-axis, so select all frames within frame range #NLAEDIT_BOXSEL_FRAMERANGE.
* - 3: y-axis, so select all frames within channels that region included
* - 3: y-axis, so select all frames within tracks that region included
* #NLAEDIT_BOXSEL_CHANNELS.
*/
@@ -226,11 +226,11 @@ static void box_select_nla_strips(bAnimContext *ac, rcti rect, short mode, short
selectmode = selmodes_to_flagmodes(selectmode);
/* loop over data, doing box select */
float ymax = NLACHANNEL_FIRST_TOP(ac);
float ymax = NLATRACK_FIRST_TOP(ac);
for (bAnimListElem *ale = static_cast<bAnimListElem *>(anim_data.first); ale;
ale = ale->next, ymax -= NLACHANNEL_STEP(snla))
ale = ale->next, ymax -= NLATRACK_STEP(snla))
{
float ymin = ymax - NLACHANNEL_HEIGHT(snla);
float ymin = ymax - NLATRACK_HEIGHT(snla);
/* perform vertical suitability check (if applicable) */
if ((mode == NLA_BOXSEL_FRAMERANGE) || !((ymax < rectf.ymin) || (ymin > rectf.ymax))) {
@@ -241,7 +241,8 @@ static void box_select_nla_strips(bAnimContext *ac, rcti rect, short mode, short
/* only select strips if they fall within the required ranges (if applicable) */
LISTBASE_FOREACH (NlaStrip *, strip, &nlt->strips) {
if ((mode == NLA_BOXSEL_CHANNELS) ||
BKE_nlastrip_within_bounds(strip, rectf.xmin, rectf.xmax)) {
BKE_nlastrip_within_bounds(strip, rectf.xmin, rectf.xmax))
{
/* set selection */
ACHANNEL_SET_FLAG(strip, selectmode, NLASTRIP_FLAG_SELECT);
@@ -269,16 +270,10 @@ static void nlaedit_strip_at_region_position(
View2D *v2d = &ac->region->v2d;
float view_x, view_y;
int channel_index;
int track_index;
UI_view2d_region_to_view(v2d, region_x, region_y, &view_x, &view_y);
UI_view2d_listview_view_to_cell(0,
NLACHANNEL_STEP(snla),
0,
NLACHANNEL_FIRST_TOP(ac),
view_x,
view_y,
nullptr,
&channel_index);
UI_view2d_listview_view_to_cell(
0, NLATRACK_STEP(snla), 0, NLATRACK_FIRST_TOP(ac), view_x, view_y, nullptr, &track_index);
ListBase anim_data = {nullptr, nullptr};
eAnimFilter_Flags filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE |
@@ -292,7 +287,7 @@ static void nlaedit_strip_at_region_position(
const float xmin = UI_view2d_region_to_view_x(v2d, region_x - 7);
const float xmax = UI_view2d_region_to_view_x(v2d, region_x + 7);
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, channel_index));
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, track_index));
if (ale != nullptr) {
if (ale->type == ANIMTYPE_NLATRACK) {
NlaTrack *nlt = static_cast<NlaTrack *>(ale->data);
@@ -378,9 +373,9 @@ static int nlaedit_box_select_exec(bContext *C, wmOperator *op)
/* mode depends on which axis of the range is larger to determine which axis to use.
* - Checking this in region-space is fine,
* as it's fundamentally still going to be a different rect size.
* - The frame-range select option is favored over the channel one (x over y),
* - The frame-range select option is favored over the track one (x over y),
* as frame-range one is often.
* Used for tweaking timing when "blocking", while channels is not that useful.
* Used for tweaking timing when "blocking", while tracks is not that useful.
*/
if (BLI_rcti_size_x(&rect) >= BLI_rcti_size_y(&rect)) {
mode = NLA_BOXSEL_FRAMERANGE;
@@ -459,12 +454,12 @@ static void nlaedit_select_leftright(bContext *C,
WM_operator_name_call(C, "NLA_OT_tweakmode_exit", WM_OP_EXEC_DEFAULT, nullptr, nullptr);
}
/* if select mode is replace, deselect all keyframes (and channels) first */
/* if select mode is replace, deselect all keyframes (and tracks) first */
if (select_mode == SELECT_REPLACE) {
select_mode = SELECT_ADD;
/* - deselect all other keyframes, so that just the newly selected remain
* - channels aren't deselected, since we don't re-select any as a consequence
* - tracks aren't deselected, since we don't re-select any as a consequence
*/
deselect_nla_strips(ac, 0, SELECT_SUBTRACT);
}
@@ -531,7 +526,7 @@ static int nlaedit_select_leftright_exec(bContext *C, wmOperator *op)
/* do the selecting now */
nlaedit_select_leftright(C, &ac, leftright, selectmode);
/* set notifier that keyframe selection (and channels too) have changed */
/* set notifier that keyframe selection (and tracks too) have changed */
WM_event_add_notifier(C, NC_ANIMATION | ND_KEYFRAME | NA_SELECTED, nullptr);
WM_event_add_notifier(C, NC_ANIMATION | ND_ANIMCHAN | NA_SELECTED, nullptr);
@@ -638,12 +633,12 @@ static int mouse_nla_strips(bContext *C,
/* deselect all strips */
deselect_nla_strips(ac, 0, SELECT_SUBTRACT);
/* deselect all other channels first */
/* deselect all other tracks first */
ANIM_anim_channels_select_set(ac, ACHANNEL_SETFLAG_CLEAR);
}
}
/* only select strip if we clicked on a valid channel and hit something */
/* only select strip if we clicked on a valid track and hit something */
if (ale != nullptr) {
/* select the strip accordingly (if a matching one was found) */
if (strip != nullptr) {
@@ -672,7 +667,7 @@ static int mouse_nla_strips(bContext *C,
}
}
/* free this channel */
/* free this track */
MEM_freeN(ale);
}

View File

@@ -52,40 +52,39 @@
* from the standard Animation Editor ones */
/* ******************** Mouse-Click Operator *********************** */
/* Depending on the channel that was clicked on, the mouse click will activate whichever
* part of the channel is relevant.
/* Depending on the track that was clicked on, the mouse click will activate whichever
* part of the track is relevant.
*
* NOTE: eventually,
* this should probably be phased out when many of these things are replaced with buttons
* --> Most channels are now selection only.
* --> Most tracks are now selection only.
*/
static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index, short selectmode)
static int mouse_nla_tracks(bContext *C, bAnimContext *ac, int track_index, short selectmode)
{
ListBase anim_data = {nullptr, nullptr};
int notifierFlags = 0;
/* get the channel that was clicked on */
/* filter channels */
/* get the track that was clicked on */
/* filter tracks */
eAnimFilter_Flags filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE |
ANIMFILTER_LIST_CHANNELS | ANIMFILTER_FCURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, eAnimCont_Types(ac->datatype));
/* get channel from index */
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, channel_index));
/* get track from index */
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, track_index));
if (ale == nullptr) {
/* channel not found */
/* track not found */
if (G.debug & G_DEBUG) {
printf("Error: animation channel (index = %d) not found in mouse_anim_channels()\n",
channel_index);
printf("Error: animation track (index = %d) not found in mouse_nla_tracks()\n", track_index);
}
ANIM_animdata_freelist(&anim_data);
return 0;
}
/* action to take depends on what channel we've got */
/* action to take depends on what track we've got */
/* WARNING: must keep this in sync with the equivalent function in `anim_channels_edit.cc`. */
switch (ale->type) {
case ANIMTYPE_SCENE: {
@@ -128,7 +127,7 @@ static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index,
}
else {
/* deselect all */
/* TODO: should this deselect all other types of channels too? */
/* TODO: should this deselect all other types of tracks too? */
BKE_view_layer_synced_ensure(ac->scene, view_layer);
LISTBASE_FOREACH (Base *, b, BKE_view_layer_object_bases_get(view_layer)) {
ED_object_base_select(b, BA_DESELECT);
@@ -151,7 +150,7 @@ static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index,
adt->flag |= ADT_UI_ACTIVE;
}
/* notifiers - channel was selected */
/* notifiers - track was selected */
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
}
break;
@@ -222,7 +221,7 @@ static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index,
ac, ac->data, eAnimCont_Types(ac->datatype), filter, nlt, ANIMTYPE_NLATRACK);
}
/* notifier flags - channel was selected */
/* notifier flags - track was selected */
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
}
break;
@@ -269,12 +268,12 @@ static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index,
}
default:
if (G.debug & G_DEBUG) {
printf("Error: Invalid channel type in mouse_nla_channels()\n");
printf("Error: Invalid track type in mouse_nla_tracks()\n");
}
break;
}
/* free channels */
/* free tracks */
ANIM_animdata_update(ac, &anim_data);
ANIM_animdata_freelist(&anim_data);
@@ -285,12 +284,12 @@ static int mouse_nla_channels(bContext *C, bAnimContext *ac, int channel_index,
/* ------------------- */
/* handle clicking */
static int nlachannels_mouseclick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int nlatracks_mouseclick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
bAnimContext ac;
ARegion *region;
View2D *v2d;
int channel_index;
int track_index;
int notifierFlags = 0;
short selectmode;
float x, y;
@@ -313,19 +312,19 @@ static int nlachannels_mouseclick_invoke(bContext *C, wmOperator *op, const wmEv
selectmode = SELECT_REPLACE;
}
/* Figure out which channel user clicked in. */
/* Figure out which track user clicked in. */
UI_view2d_region_to_view(v2d, event->mval[0], event->mval[1], &x, &y);
UI_view2d_listview_view_to_cell(NLACHANNEL_NAMEWIDTH,
NLACHANNEL_STEP(snla),
UI_view2d_listview_view_to_cell(NLATRACK_NAMEWIDTH,
NLATRACK_STEP(snla),
0,
NLACHANNEL_FIRST_TOP(&ac),
NLATRACK_FIRST_TOP(&ac),
x,
y,
nullptr,
&channel_index);
&track_index);
/* handle mouse-click in the relevant channel then */
notifierFlags = mouse_nla_channels(C, &ac, channel_index, selectmode);
/* handle mouse-click in the relevant track then */
notifierFlags = mouse_nla_tracks(C, &ac, track_index, selectmode);
/* set notifier that things have changed */
WM_event_add_notifier(C, NC_ANIMATION | notifierFlags, nullptr);
@@ -343,7 +342,7 @@ void NLA_OT_channels_click(wmOperatorType *ot)
ot->description = "Handle clicks to select NLA tracks";
/* api callbacks */
ot->invoke = nlachannels_mouseclick_invoke;
ot->invoke = nlatracks_mouseclick_invoke;
ot->poll = ED_operator_nla_active;
/* flags */
@@ -359,12 +358,12 @@ void NLA_OT_channels_click(wmOperatorType *ot)
/* ******************** Action Push Down ******************************** */
static int nlachannels_pushdown_exec(bContext *C, wmOperator *op)
static int nlatracks_pushdown_exec(bContext *C, wmOperator *op)
{
bAnimContext ac;
ID *id = nullptr;
AnimData *adt = nullptr;
int channel_index = RNA_int_get(op->ptr, "channel_index");
int track_index = RNA_int_get(op->ptr, "track_index");
/* get editor data */
if (ANIM_animdata_get_context(C, &ac) == 0) {
@@ -372,7 +371,7 @@ static int nlachannels_pushdown_exec(bContext *C, wmOperator *op)
}
/* get anim-channel to use (or more specifically, the animdata block behind it) */
if (channel_index == -1) {
if (track_index == -1) {
PointerRNA adt_ptr = {nullptr};
/* active animdata block */
@@ -389,31 +388,31 @@ static int nlachannels_pushdown_exec(bContext *C, wmOperator *op)
adt = static_cast<AnimData *>(adt_ptr.data);
}
else {
/* indexed channel */
/* indexed track */
ListBase anim_data = {nullptr, nullptr};
/* filter channels */
/* filter tracks */
eAnimFilter_Flags filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE |
ANIMFILTER_LIST_CHANNELS | ANIMFILTER_FCURVESONLY);
ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, eAnimCont_Types(ac.datatype));
/* get channel from index */
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, channel_index));
/* get track from index */
bAnimListElem *ale = static_cast<bAnimListElem *>(BLI_findlink(&anim_data, track_index));
if (ale == nullptr) {
BKE_reportf(op->reports, RPT_ERROR, "No animation channel found at index %d", channel_index);
BKE_reportf(op->reports, RPT_ERROR, "No animation track found at index %d", track_index);
ANIM_animdata_freelist(&anim_data);
return OPERATOR_CANCELLED;
}
if (ale->type != ANIMTYPE_NLAACTION) {
BKE_reportf(op->reports,
RPT_ERROR,
"Animation channel at index %d is not a NLA 'Active Action' channel",
channel_index);
"Animation track at index %d is not a NLA 'Active Action' track",
track_index);
ANIM_animdata_freelist(&anim_data);
return OPERATOR_CANCELLED;
}
/* grab AnimData from the channel */
/* grab AnimData from the track */
adt = ale->adt;
id = ale->id;
@@ -460,7 +459,7 @@ void NLA_OT_action_pushdown(wmOperatorType *ot)
ot->description = "Push action down onto the top of the NLA stack as a new strip";
/* callbacks */
ot->exec = nlachannels_pushdown_exec;
ot->exec = nlatracks_pushdown_exec;
ot->poll = nlaop_poll_tweakmode_off;
/* flags */
@@ -468,12 +467,12 @@ void NLA_OT_action_pushdown(wmOperatorType *ot)
/* properties */
ot->prop = RNA_def_int(ot->srna,
"channel_index",
"track_index",
-1,
-1,
INT_MAX,
"Channel Index",
"Index of NLA action channel to perform pushdown operation on",
"Track Index",
"Index of NLA action track to perform pushdown operation on",
0,
INT_MAX);
RNA_def_property_flag(ot->prop, PROP_SKIP_SAVE | PROP_HIDDEN);

View File

@@ -66,8 +66,8 @@ static SpaceLink *nla_create(const ScrArea *area, const Scene *scene)
region->regiontype = RGN_TYPE_HEADER;
region->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
/* channel list region */
region = MEM_cnew<ARegion>("channel list for nla");
/* track list region */
region = MEM_cnew<ARegion>("track list for nla");
BLI_addtail(&snla->regionbase, region);
region->regiontype = RGN_TYPE_CHANNELS;
region->alignment = RGN_ALIGN_LEFT;
@@ -151,7 +151,7 @@ static SpaceLink *nla_duplicate(SpaceLink *sl)
}
/* add handlers, stuff you only do once or on area/region changes */
static void nla_channel_region_init(wmWindowManager *wm, ARegion *region)
static void nla_track_region_init(wmWindowManager *wm, ARegion *region)
{
wmKeyMap *keymap;
@@ -161,7 +161,7 @@ static void nla_channel_region_init(wmWindowManager *wm, ARegion *region)
UI_view2d_region_reinit(&region->v2d, V2D_COMMONVIEW_LIST, region->winx, region->winy);
/* own keymap */
/* own channels map first to override some channel keymaps */
/* own tracks map first to override some track keymaps */
keymap = WM_keymap_ensure(wm->defaultconf, "NLA Tracks", SPACE_NLA, RGN_TYPE_WINDOW);
WM_event_add_keymap_handler_v2d_mask(&region->handlers, keymap);
/* now generic channels map for everything else that can apply */
@@ -173,7 +173,7 @@ static void nla_channel_region_init(wmWindowManager *wm, ARegion *region)
}
/* draw entirely, view changes should be handled here */
static void nla_channel_region_draw(const bContext *C, ARegion *region)
static void nla_track_region_draw(const bContext *C, ARegion *region)
{
bAnimContext ac;
View2D *v2d = &region->v2d;
@@ -185,10 +185,10 @@ static void nla_channel_region_draw(const bContext *C, ARegion *region)
/* data */
if (ANIM_animdata_get_context(C, &ac)) {
draw_nla_channel_list(C, &ac, region);
draw_nla_track_list(C, &ac, region);
}
/* channel filter next to scrubbing area */
/* track filter next to scrubbing area */
ED_time_scrub_channel_search_draw(C, region, ac.ads);
/* reset view matrix */
@@ -439,12 +439,12 @@ static void nla_main_region_view2d_changed(const bContext *C, ARegion *region)
* so bottom strip isn't hidden.
*/
if (!BLI_listbase_is_empty(ED_context_get_markers(C))) {
v2d->tot.ymin -= (UI_MARKER_MARGIN_Y - NLACHANNEL_STEP(snla));
v2d->tot.ymin -= (UI_MARKER_MARGIN_Y - NLATRACK_STEP(snla));
}
UI_view2d_curRect_clamp_y(v2d);
}
static void nla_channel_region_listener(const wmRegionListenerParams *params)
static void nla_track_region_listener(const wmRegionListenerParams *params)
{
ARegion *region = params->region;
const wmNotifier *wmn = params->notifier;
@@ -486,7 +486,7 @@ static void nla_channel_region_listener(const wmRegionListenerParams *params)
}
}
static void nla_channel_region_message_subscribe(const wmRegionMessageSubscribeParams *params)
static void nla_track_region_message_subscribe(const wmRegionMessageSubscribeParams *params)
{
wmMsgBus *mbus = params->message_bus;
ARegion *region = params->region;
@@ -641,16 +641,16 @@ void ED_spacetype_nla()
BLI_addhead(&st->regiontypes, art);
/* regions: channels */
/* regions: tracks */
art = MEM_cnew<ARegionType>("spacetype nla region");
art->regionid = RGN_TYPE_CHANNELS;
art->prefsizex = 200;
art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES;
art->init = nla_channel_region_init;
art->draw = nla_channel_region_draw;
art->listener = nla_channel_region_listener;
art->message_subscribe = nla_channel_region_message_subscribe;
art->init = nla_track_region_init;
art->draw = nla_track_region_draw;
art->listener = nla_track_region_listener;
art->message_subscribe = nla_track_region_message_subscribe;
BLI_addhead(&st->regiontypes, art);

View File

@@ -559,7 +559,7 @@ static void createTransNlaData(bContext *C, TransInfo *t)
tdn->trackIndex = BLI_findindex(&adt->nla_tracks, nlt);
tdn->signed_track_index = tdn->trackIndex;
yval = float(tdn->trackIndex * NLACHANNEL_STEP(snla));
yval = float(tdn->trackIndex * NLATRACK_STEP(snla));
tdn->h1[0] = strip->start;
tdn->h1[1] = yval;
@@ -726,8 +726,8 @@ static void recalcData_nla(TransInfo *t)
continue;
}
delta_y1 = (int(tdn->h1[1]) / NLACHANNEL_STEP(snla) - tdn->signed_track_index);
delta_y2 = (int(tdn->h2[1]) / NLACHANNEL_STEP(snla) - tdn->signed_track_index);
delta_y1 = (int(tdn->h1[1]) / NLATRACK_STEP(snla) - tdn->signed_track_index);
delta_y2 = (int(tdn->h2[1]) / NLATRACK_STEP(snla) - tdn->signed_track_index);
/* Move strip into track in the requested direction. */
/* If we cannot find the strip in the track, this strip has moved tracks already (if multiple
@@ -959,7 +959,7 @@ static void special_aftertrans_update__nla(bContext *C, TransInfo *t)
ListBase anim_data = {nullptr, nullptr};
short filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_FCURVESONLY);
/* get channels to work on */
/* get tracks to work on */
ANIM_animdata_filter(
&ac, &anim_data, eAnimFilter_Flags(filter), ac.data, eAnimCont_Types(ac.datatype));