|
Blender V4.3
|
#include <cstdio>#include "DNA_anim_types.h"#include "DNA_space_types.h"#include "MEM_guardedalloc.h"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BKE_anim_data.hh"#include "BKE_context.hh"#include "BKE_nla.hh"#include "ED_anim_api.hh"#include "WM_api.hh"#include "WM_types.hh"#include "RNA_access.hh"#include "RNA_prototypes.hh"#include "transform.hh"#include "transform_convert.hh"Go to the source code of this file.
Classes | |
| struct | TransDataNla |
| struct | IDGroupedTransData |
Functions | |
| static bool | is_overlap (const float left_bound_a, const float right_bound_a, const float left_bound_b, const float right_bound_b) |
| static bool | nlastrip_is_overlap (const NlaStrip *strip_a, const float offset_a, const NlaStrip *strip_b, const float offset_b) |
| static float | transdata_get_time_shuffle_offset_side (ListBase *trans_datas, const bool shuffle_left) |
| static float | transdata_get_time_shuffle_offset (ListBase *trans_datas) |
| static bool | transdata_get_track_shuffle_offset_side (ListBase *trans_datas, const int shuffle_direction, int *r_total_offset) |
| static bool | transdata_get_track_shuffle_offset (ListBase *trans_datas, int *r_track_offset) |
Transform application to NLA strips | |
| static void | nlatrack_truncate_temporary_tracks (bAnimContext *ac) |
| static void | applyTransformNLA_translation (PointerRNA *strip_rna_ptr, const TransDataNla *transdata) |
| Applies a translation to the given NlaStrip. | |
| static void | applyTransformNLA_timeScale (PointerRNA *strip_rna_ptr, const float value) |
| static void | nlastrip_overlap_reorder (TransDataNla *tdn, NlaStrip *strip) |
| static void | nlastrip_flag_overlaps (NlaStrip *strip) |
| static void | nlastrip_fix_overlapping (TransInfo *t, TransDataNla *tdn, NlaStrip *strip) |
NLA Transform Creation | |
| static void | createTransNlaData (bContext *C, TransInfo *t) |
| static void | recalcData_nla (TransInfo *t) |
Special After Transform NLA | |
| static void | nlastrip_shuffle_transformed (TransDataContainer *tc, TransDataNla *first_trans_data) |
| static void | special_aftertrans_update__nla (bContext *C, TransInfo *t) |
Variables | |
| TransConvertTypeInfo | TransConvertType_NLA |
|
static |
Definition at line 320 of file transform_convert_nla.cc.
References RNA_float_set().
Referenced by nlastrip_fix_overlapping().
|
static |
Applies a translation to the given NlaStrip.
| strip_rna_ptr | The RNA pointer of the NLA strip to modify. |
| transdata | The transformation info structure. |
Definition at line 308 of file transform_convert_nla.cc.
References TransDataNla::h1, TransDataNla::h2, and RNA_float_set().
Referenced by nlastrip_fix_overlapping().
Definition at line 441 of file transform_convert_nla.cc.
References ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIM_animdata_get_context(), ANIMFILTER_DATA_VISIBLE, ANIMFILTER_FCURVESONLY, ANIMFILTER_FOREDIT, ANIMFILTER_LIST_VISIBLE, ANIMTYPE_NLATRACK, TransData::axismtx, BKE_nlastrips_clear_metas(), BKE_nlastrips_make_metas(), BLI_assert, BLI_findindex(), copy_v3_v3(), count, TransDataContainer::custom, bAnimContext::data, TransCustomData::data, TransDataContainer::data, TransDataContainer::data_len, bAnimContext::datatype, ELEM, filter(), float, TransInfo::frame_side, FrameOnMouseSide(), TransDataNla::h1, TransDataNla::h2, TransDataNla::handle, TransDataNla::id, LISTBASE_FOREACH, MEM_callocN, TransInfo::mode, TransData::mtx, AnimData::nla_tracks, NLASTRIP_FLAG_SELECT, NLASTRIP_TYPE_TRANSITION, NLATRACK_STEP, TransDataNla::nlt, TransDataNla::oldTrack, TransInfo::scene, TransDataNla::signed_track_index, bAnimContext::sl, TransData::smtx, TransDataNla::strip, NlaTrack::strips, TD_SELECTED, TFM_TIME_EXTEND, TFM_TRANSLATION, TransDataNla::trackIndex, TRANS_DATA_CONTAINER_FIRST_SINGLE, transform_convert_frame_side_dir_get(), TransCustomDataContainer::type, unit_m3(), and TransCustomData::use_free.
|
static |
Definition at line 67 of file transform_convert_nla.cc.
Referenced by BM_face_exists_overlap_subset(), and nlastrip_is_overlap().
|
static |
Check the Transformation data for the given Strip, and fix any overlap. Then apply the Transformation.
Definition at line 363 of file transform_convert_nla.cc.
References applyTransformNLA_timeScale(), applyTransformNLA_translation(), BKE_nlastrip_next_in_track(), BKE_nlastrip_prev_in_track(), NlaStrip::end, TransDataNla::h1, TransDataNla::h2, TransInfo::mode, next, printf, RNA_pointer_create(), NlaStrip::start, TFM_TIME_EXTEND, TFM_TIME_SCALE, TFM_TRANSLATION, and TransInfo::values_final.
Referenced by recalcData_nla().
|
static |
Flag overlaps with adjacent strips.
Since the strips are re-ordered as they're transformed, we only have to check adjacent strips for overlap instead of all of them.
Definition at line 342 of file transform_convert_nla.cc.
References NlaStrip::flag, NlaStrip::next, NLASTRIP_FLAG_INVALID_LOCATION, NLASTRIP_FLAG_SELECT, nlastrip_is_overlap(), and NlaStrip::prev.
Referenced by recalcData_nla().
|
static |
Definition at line 75 of file transform_convert_nla.cc.
References NlaStrip::end, is_overlap(), and NlaStrip::start.
Referenced by nlastrip_flag_overlaps(), and transdata_get_time_shuffle_offset_side().
|
static |
Reorder strips for proper nla stack evaluation while dragging.
Definition at line 326 of file transform_convert_nla.cc.
References BLI_listbase_swaplinks(), TransDataNla::h1, NlaStrip::next, TransDataNla::nlt, NlaStrip::prev, NlaStrip::start, and NlaTrack::strips.
Referenced by recalcData_nla().
|
static |
Horizontally translate (shuffle) the transformed strip to a non-overlapping state.
Definition at line 828 of file transform_convert_nla.cc.
References BKE_animdata_from_id(), BKE_nlameta_flush_transforms(), BKE_nlastrips_add_strip_unsafe(), BKE_nlatrack_add_strip(), BKE_nlatrack_remove_strip(), BLI_addhead(), BLI_addtail(), BLI_findindex(), BLI_findlink(), BLI_freelistN(), BLI_genericNodeN(), TransDataContainer::data_len, NlaStrip::end, NlaStrip::flag, NlaTrack::flag, TransDataNla::handle, IDGroupedTransData::id, TransDataNla::id, LISTBASE_FOREACH, MEM_callocN, NlaTrack::name, AnimData::nla_tracks, NLASTRIP_FLAG_INVALID_LOCATION, NLATRACK_OVERRIDELIBRARY_LOCAL, NLATRACK_PROTECTED, TransDataNla::nlt, TransDataNla::oldTrack, printf, NlaStrip::start, TransDataNla::strip, NlaTrack::strips, TransDataNla::trackIndex, IDGroupedTransData::trans_datas, transdata_get_time_shuffle_offset(), and transdata_get_track_shuffle_offset().
Referenced by special_aftertrans_update__nla().
|
static |
Remove top tracks that weren't necessary.
Remove bottom tracks that weren't necessary.
Clear temporary flag.
Definition at line 248 of file transform_convert_nla.cc.
References ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIMFILTER_ANIMDATA, ANIMFILTER_DATA_VISIBLE, ANIMFILTER_FCURVESONLY, BKE_nlatrack_remove_and_free(), bAnimContext::data, bAnimContext::datatype, LISTBASE_FOREACH, LISTBASE_FOREACH_BACKWARD_MUTABLE, LISTBASE_FOREACH_MUTABLE, NLATRACK_OVERRIDELIBRARY_LOCAL, and NLATRACK_TEMPORARILY_ADDED.
Referenced by special_aftertrans_update__nla().
|
static |
Definition at line 638 of file transform_convert_nla.cc.
References ANIM_id_update(), TransInfo::area, BKE_animdata_from_id(), BKE_nlameta_flush_transforms(), BKE_nlastrips_add_strip_unsafe(), BKE_nlatrack_insert_after(), BKE_nlatrack_insert_before(), BKE_nlatrack_is_nonlocal_in_liboverride(), BKE_nlatrack_new(), BKE_nlatrack_remove_strip(), BKE_nlatrack_set_active(), BLI_addtail(), BLI_findindex(), BLI_remlink(), CLAMP, TransInfo::context, CTX_data_main(), TransDataContainer::custom, TransCustomData::data, TransDataContainer::data_len, ELEM, NlaStrip::end, ListBase::first, NlaStrip::flag, NlaTrack::flag, SpaceNla::flag, TransDataNla::h1, TransDataNla::h2, TransDataNla::handle, TransDataNla::id, ID_IS_OVERRIDE_LIBRARY, int, ListBase::last, TransInfo::mode, NlaStrip::next, NlaTrack::next, AnimData::nla_tracks, nlastrip_fix_overlapping(), NLASTRIP_FLAG_INVALID_LOCATION, nlastrip_flag_overlaps(), nlastrip_overlap_reorder(), NLASTRIP_TYPE_TRANSITION, NLATRACK_PROTECTED, NLATRACK_STEP, NLATRACK_TEMPORARILY_ADDED, TransDataNla::nlt, TransDataNla::oldTrack, NlaStrip::prev, NlaTrack::prev, NlaStrip::scale, TransDataNla::signed_track_index, SNLA_NOREALTIMEUPDATES, ScrArea::spacedata, NlaStrip::start, TransInfo::state, TransDataNla::strip, NlaTrack::strips, TFM_TRANSLATION, TransDataNla::trackIndex, TRANS_CANCEL, TRANS_DATA_CONTAINER_FIRST_SINGLE, NlaStrip::type, and TransCustomDataContainer::type.
Definition at line 928 of file transform_convert_nla.cc.
References ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIM_animdata_get_context(), ANIMFILTER_DATA_VISIBLE, ANIMFILTER_FCURVESONLY, ANIMFILTER_FOREDIT, BKE_nlastrips_clear_metas(), BKE_nlatrack_sort_strips(), TransDataContainer::custom, bAnimContext::data, TransCustomData::data, TransDataContainer::data_len, bAnimContext::datatype, ED_nla_postop_refresh(), ELEM, NlaStrip::flag, LISTBASE_FOREACH, TransInfo::mode, NA_ADDED, NC_ANIMATION, ND_NLA, nlastrip_shuffle_transformed(), nlatrack_truncate_temporary_tracks(), TransInfo::state, TransDataNla::strip, NlaTrack::strips, TFM_TRANSLATION, TRANS_CANCEL, TRANS_DATA_CONTAINER_FIRST_SINGLE, TransCustomDataContainer::type, and WM_event_add_notifier().
Assumes strips to horizontally translate (shuffle) are tagged with NLASTRIP_FLAG_INVALID_LOCATION.
Definition at line 141 of file transform_convert_nla.cc.
References BLI_assert, and transdata_get_time_shuffle_offset_side().
Referenced by nlastrip_shuffle_transformed().
|
static |
Assumes strips to horizontally translate (shuffle) are tagged with NLASTRIP_FLAG_INVALID_LOCATION.
Definition at line 93 of file transform_convert_nla.cc.
References e, NlaStrip::end, IS_EQT, LISTBASE_FOREACH, NLASTRIP_FLAG_INVALID_LOCATION, nlastrip_is_overlap(), NLASTRIP_TYPE_TRANSITION, TransDataNla::nlt, NlaStrip::start, TransDataNla::strip, and NlaTrack::strips.
Referenced by transdata_get_time_shuffle_offset().
|
static |
Assumes all of given trans_datas are part of the same ID.
| r_track_offset | The minimal total signed offset that results in valid strip track-moves for all strips from trans_datas. |
Definition at line 218 of file transform_convert_nla.cc.
References abs(), and transdata_get_track_shuffle_offset_side().
Referenced by nlastrip_shuffle_transformed().
|
static |
Assumes all of given trans_datas are part of the same ID.
| shuffle_direction | the direction the strip is traveling. 1 is towards the bottom of the stack, -1 is away from it. |
| r_total_offset | The minimal total signed offset that results in valid strip track-moves for all strips from trans_datas. |
Definition at line 163 of file transform_convert_nla.cc.
References BKE_animdata_from_id(), BKE_nlatrack_is_nonlocal_in_liboverride(), BLI_findlink(), BLI_listbase_is_empty(), LinkData::data, ListBase::first, NlaTrack::flag, TransDataNla::id, LISTBASE_FOREACH, AnimData::nla_tracks, NLATRACK_PROTECTED, and TransDataNla::trackIndex.
Referenced by transdata_get_track_shuffle_offset().
| TransConvertTypeInfo TransConvertType_NLA |
Definition at line 994 of file transform_convert_nla.cc.
Referenced by convert_type_get().