Blender  V3.3
BKE_nla.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2009 Blender Foundation, Joshua Leung. All rights reserved. */
3 
4 #pragma once
5 
10 /* temp constant defined for these funcs only... */
11 #define NLASTRIP_MIN_LEN_THRESH 0.1f
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 struct AnimData;
19 struct Main;
20 struct NlaStrip;
21 struct NlaTrack;
22 struct Scene;
23 struct Speaker;
24 struct bAction;
25 
26 struct BlendDataReader;
27 struct BlendExpander;
28 struct BlendLibReader;
29 struct BlendWriter;
30 struct PointerRNA;
31 struct PropertyRNA;
32 
33 /* ----------------------------- */
34 /* Data Management */
35 
40 void BKE_nlastrip_free(ListBase *strips, struct NlaStrip *strip, bool do_id_user);
45 void BKE_nlatrack_free(ListBase *tracks, struct NlaTrack *nlt, bool do_id_user);
50 void BKE_nla_tracks_free(ListBase *tracks, bool do_id_user);
51 
59 struct NlaStrip *BKE_nlastrip_copy(struct Main *bmain,
60  struct NlaStrip *strip,
61  bool use_same_action,
62  int flag);
68 struct NlaTrack *BKE_nlatrack_copy(struct Main *bmain,
69  struct NlaTrack *nlt,
70  bool use_same_actions,
71  int flag);
77 void BKE_nla_tracks_copy(struct Main *bmain, ListBase *dst, const ListBase *src, int flag);
78 
84  struct AnimData *adt_dest,
85  const struct AnimData *adt_source,
86  int flag);
87 
92 struct NlaTrack *BKE_nlatrack_add(struct AnimData *adt,
93  struct NlaTrack *prev,
94  bool is_liboverride);
98 struct NlaStrip *BKE_nlastrip_new(struct bAction *act);
103 struct NlaStrip *BKE_nlastack_add_strip(struct AnimData *adt,
104  struct bAction *act,
105  bool is_liboverride);
109 struct NlaStrip *BKE_nla_add_soundstrip(struct Main *bmain,
110  struct Scene *scene,
111  struct Speaker *speaker);
112 
117 void BKE_nla_strip_foreach_id(struct NlaStrip *strip, struct LibraryForeachIDData *data);
118 
119 /* ----------------------------- */
120 /* API */
121 
125 bool BKE_nlastrips_has_space(ListBase *strips, float start, float end);
131 
136 bool BKE_nlastrips_add_strip(ListBase *strips, struct NlaStrip *strip);
137 
144 void BKE_nlastrips_make_metas(ListBase *strips, bool is_temp);
151 void BKE_nlastrips_clear_metas(ListBase *strips, bool only_sel, bool only_temp);
160 bool BKE_nlameta_add_strip(struct NlaStrip *mstrip, struct NlaStrip *strip);
165 void BKE_nlameta_flush_transforms(struct NlaStrip *mstrip);
166 
167 /* ............ */
168 
177 void BKE_nlatrack_set_active(ListBase *tracks, struct NlaTrack *nlt);
178 
185 struct NlaTrack *BKE_nlatrack_find_tweaked(struct AnimData *adt);
186 
191 void BKE_nlatrack_solo_toggle(struct AnimData *adt, struct NlaTrack *nlt);
192 
196 bool BKE_nlatrack_has_space(struct NlaTrack *nlt, float start, float end);
201 void BKE_nlatrack_sort_strips(struct NlaTrack *nlt);
202 
207 bool BKE_nlatrack_add_strip(struct NlaTrack *nlt, struct NlaStrip *strip, bool is_liboverride);
208 
213 bool BKE_nlatrack_get_bounds(struct NlaTrack *nlt, float bounds[2]);
220 bool BKE_nlatrack_is_nonlocal_in_liboverride(const struct ID *id, const struct NlaTrack *nlt);
221 
222 /* ............ */
223 
248 
249 /* ............ */
250 
254 struct NlaStrip *BKE_nlastrip_find_active(struct NlaTrack *nlt);
258 void BKE_nlastrip_set_active(struct AnimData *adt, struct NlaStrip *strip);
259 
263 bool BKE_nlastrip_within_bounds(struct NlaStrip *strip, float min, float max);
268 void BKE_nlastrip_recalculate_bounds(struct NlaStrip *strip);
274 
281 void BKE_nlastrip_validate_name(struct AnimData *adt, struct NlaStrip *strip);
282 
283 /* ............ */
284 
296 void BKE_nlastrip_validate_fcurves(struct NlaStrip *strip);
297 
303  const struct PropertyRNA *prop);
304 
308 void BKE_nla_validate_state(struct AnimData *adt);
309 
310 /* ............ */
311 
319 bool BKE_nla_action_is_stashed(struct AnimData *adt, struct bAction *act);
324 bool BKE_nla_action_stash(struct AnimData *adt, bool is_liboverride);
325 
326 /* ............ */
327 
336 void BKE_nla_action_pushdown(struct AnimData *adt, bool is_liboverride);
337 
342 bool BKE_nla_tweakmode_enter(struct AnimData *adt);
346 void BKE_nla_tweakmode_exit(struct AnimData *adt);
347 
348 /* ----------------------------- */
349 /* Time Mapping */
350 
351 /* time mapping conversion modes */
353  /* convert from global time to strip time - for evaluation */
355  /* convert from global time to strip time - for editing corrections */
356  /* XXX: old 0 invert. */
358  /* convert from strip time to global time */
359  /* XXX: old 1 invert. */
361 };
362 
370 float BKE_nla_tweakedit_remap(struct AnimData *adt, float cframe, short mode);
371 
372 /* ----------------------------- */
373 /* .blend file API */
374 
375 void BKE_nla_blend_write(struct BlendWriter *writer, struct ListBase *tracks);
376 void BKE_nla_blend_read_data(struct BlendDataReader *reader, struct ListBase *tracks);
377 void BKE_nla_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *tracks);
378 void BKE_nla_blend_read_expand(struct BlendExpander *expander, struct ListBase *tracks);
379 
380 #ifdef __cplusplus
381 }
382 #endif
bool BKE_nlatrack_is_nonlocal_in_liboverride(const struct ID *id, const struct NlaTrack *nlt)
void BKE_nlastrips_clear_metastrip(ListBase *strips, struct NlaStrip *strip)
Definition: nla.c:855
float BKE_nlastrip_compute_frame_to_next_strip(struct NlaStrip *strip)
Definition: nla.c:1259
void BKE_nla_action_pushdown(struct AnimData *adt, bool is_liboverride)
Definition: nla.c:1909
void BKE_nlatrack_sort_strips(struct NlaTrack *nlt)
Definition: nla.c:1157
bool BKE_nlatrack_has_space(struct NlaTrack *nlt, float start, float end)
Definition: nla.c:1137
void BKE_nla_strip_foreach_id(struct NlaStrip *strip, struct LibraryForeachIDData *data)
Definition: nla.c:513
bool BKE_nlatrack_get_bounds(struct NlaTrack *nlt, float bounds[2])
Definition: nla.c:1185
void BKE_nla_blend_read_data(struct BlendDataReader *reader, struct ListBase *tracks)
Definition: nla.c:2228
struct NlaTrack * BKE_nlatrack_copy(struct Main *bmain, struct NlaTrack *nlt, bool use_same_actions, int flag)
Definition: nla.c:197
float BKE_nlastrip_compute_frame_from_previous_strip(struct NlaStrip *strip)
Definition: nla.c:1242
void BKE_nlastrip_set_active(struct AnimData *adt, struct NlaStrip *strip)
Definition: nla.c:1285
bool BKE_nlastrip_has_curves_for_property(const struct PointerRNA *ptr, const struct PropertyRNA *prop)
void BKE_nlastrip_validate_name(struct AnimData *adt, struct NlaStrip *strip)
Definition: nla.c:1625
void BKE_nlastrips_sort_strips(ListBase *strips)
Definition: nla.c:724
void BKE_nlastrips_clear_metas(ListBase *strips, bool only_sel, bool only_temp)
Definition: nla.c:877
bool BKE_nla_action_is_stashed(struct AnimData *adt, struct bAction *act)
Definition: nla.c:1823
bool BKE_nlameta_add_strip(struct NlaStrip *mstrip, struct NlaStrip *strip)
Definition: nla.c:902
void BKE_nlameta_flush_transforms(struct NlaStrip *mstrip)
Definition: nla.c:950
void BKE_nlastrip_recalculate_bounds(struct NlaStrip *strip)
Definition: nla.c:1452
bool BKE_nlatrack_add_strip(struct NlaTrack *nlt, struct NlaStrip *strip, bool is_liboverride)
Definition: nla.c:1168
bool BKE_nlastrips_add_strip(ListBase *strips, struct NlaStrip *strip)
Definition: nla.c:767
bool BKE_nlatrack_has_animated_strips(struct NlaTrack *nlt)
Definition: nla.c:1483
void BKE_nlastrip_validate_fcurves(struct NlaStrip *strip)
Definition: nla.c:1523
struct NlaStrip * BKE_nla_add_soundstrip(struct Main *bmain, struct Scene *scene, struct Speaker *speaker)
Definition: nla.c:477
eNlaTime_ConvertModes
Definition: BKE_nla.h:352
@ NLATIME_CONVERT_EVAL
Definition: BKE_nla.h:354
@ NLATIME_CONVERT_MAP
Definition: BKE_nla.h:360
@ NLATIME_CONVERT_UNMAP
Definition: BKE_nla.h:357
struct NlaStrip * BKE_nlastrip_find_active(struct NlaTrack *nlt)
Definition: nla.c:1276
bool BKE_nlastrips_has_space(ListBase *strips, float start, float end)
Definition: nla.c:690
void BKE_nla_validate_state(struct AnimData *adt)
Definition: nla.c:1798
bool BKE_nla_action_stash(struct AnimData *adt, bool is_liboverride)
Definition: nla.c:1841
struct NlaStrip * BKE_nlastrip_new(struct bAction *act)
Definition: nla.c:396
struct NlaStrip * BKE_nlastrip_copy(struct Main *bmain, struct NlaStrip *strip, bool use_same_action, int flag)
Definition: nla.c:148
void BKE_nla_tracks_free(ListBase *tracks, bool do_id_user)
Definition: nla.c:127
void BKE_nlatrack_solo_toggle(struct AnimData *adt, struct NlaTrack *nlt)
Definition: nla.c:1083
float BKE_nla_tweakedit_remap(struct AnimData *adt, float cframe, short mode)
Definition: nla.c:642
bool BKE_nlastrip_within_bounds(struct NlaStrip *strip, float min, float max)
Definition: nla.c:1308
bool BKE_nla_tweakmode_enter(struct AnimData *adt)
Definition: nla.c:2019
void BKE_nla_tracks_copy_from_adt(struct Main *bmain, struct AnimData *adt_dest, const struct AnimData *adt_source, int flag)
void BKE_nla_tracks_copy(struct Main *bmain, ListBase *dst, const ListBase *src, int flag)
Definition: nla.c:226
struct NlaStrip * BKE_nlastack_add_strip(struct AnimData *adt, struct bAction *act, bool is_liboverride)
Definition: nla.c:445
struct NlaTrack * BKE_nlatrack_add(struct AnimData *adt, struct NlaTrack *prev, bool is_liboverride)
Definition: nla.c:353
void BKE_nlastrip_recalculate_bounds_sync_action(struct NlaStrip *strip)
Definition: nla.c:1435
void BKE_nla_tweakmode_exit(struct AnimData *adt)
Definition: nla.c:2092
void BKE_nla_blend_write(struct BlendWriter *writer, struct ListBase *tracks)
Definition: nla.c:2216
bool BKE_nlatracks_have_animated_strips(ListBase *tracks)
Definition: nla.c:1503
void BKE_nlastrip_free(ListBase *strips, struct NlaStrip *strip, bool do_id_user)
Definition: nla.c:64
struct NlaTrack * BKE_nlatrack_find_active(ListBase *tracks)
Definition: nla.c:1032
void BKE_nla_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *tracks)
Definition: nla.c:2239
void BKE_nlatrack_set_active(ListBase *tracks, struct NlaTrack *nlt)
Definition: nla.c:1117
void BKE_nla_blend_read_expand(struct BlendExpander *expander, struct ListBase *tracks)
Definition: nla.c:2252
void BKE_nlastrips_make_metas(ListBase *strips, bool is_temp)
Definition: nla.c:802
struct NlaTrack * BKE_nlatrack_find_tweaked(struct AnimData *adt)
Definition: nla.c:1052
void BKE_nlatrack_free(ListBase *tracks, struct NlaTrack *nlt, bool do_id_user)
Definition: nla.c:103
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
Definition: btDbvt.cpp:299
Scene scene
SyclQueue void void * src
SymEdge< T > * prev(const SymEdge< T > *se)
Definition: delaunay_2d.cc:105
#define min(a, b)
Definition: sort.c:35
Definition: DNA_ID.h:368
Definition: BKE_main.h:121
ListBase strips
bAction * act
ListBase tracks
Definition: tracking.c:60
float max
PointerRNA * ptr
Definition: wm_files.c:3480