Blender V4.3
nla_private.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 Blender Authors, Joshua Leung. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BLI_bitmap.h"
12#include "BLI_ghash.h"
13#include "RNA_types.hh"
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
20
21/* --------------- NLA Evaluation DataTypes ----------------------- */
22
40
43 /* standard evaluation */
47
48 /* transition-strip evaluations */
51};
52
53struct NlaEvalChannel;
54struct NlaEvalData;
55
61
67
69typedef struct NlaEvalChannelSnapshot {
71
74
78
79 int length; /* Number of values in the property. */
80 bool is_base; /* Base snapshot of the channel. */
81
82 float values[]; /* Item values. */
83 /* Memory over-allocated to provide space for values. */
85
93
98typedef struct NlaEvalChannel {
101
102 /* Original RNA path string and property key. */
103 const char *rna_path;
105
106 int index;
109
110 /* Associated with the RNA property's value(s), marks which elements are affected by NLA. */
112
113 /* Base set of values. */
115 /* Memory over-allocated to provide space for base_snapshot.values. */
117
119typedef struct NlaEvalSnapshot {
120 /* Snapshot this one defaults to. */
122
123 int size;
126
128typedef struct NlaEvalData {
130
131 /* Mapping of paths and NlaEvalChannelKeys to channels. */
134
135 /* Base snapshot. */
138
139 /* Evaluation result snapshot. */
142
144typedef struct NlaKeyframingContext {
146
147 /* AnimData for which this context was built. */
148 struct AnimData *adt;
149
150 /* Data of the currently edited strip (copy, or fake strip for the main action). */
153 /* Storage for the action track as a strip. */
155
156 /* Strips above tweaked strip. */
158 /* Evaluated NLA stack below the tweak strip. */
161
162/* --------------- NLA Functions (not to be used as a proper API) ----------------------- */
163
171float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode);
172
173/* --------------- NLA Evaluation (very-private stuff) ----------------------- */
174/* these functions are only defined here to avoid problems with the order
175 * in which they get defined. */
176
181 ListBase *strips,
182 short index,
183 const struct AnimationEvalContext *anim_eval_context,
184 bool flush_to_original);
202
203void nlastrip_evaluate(const int evaluation_mode,
205 NlaEvalData *channels,
206 ListBase *modifiers,
207 NlaEvalStrip *nes,
208 NlaEvalSnapshot *snapshot,
209 const struct AnimationEvalContext *anim_eval_context,
210 bool flush_to_original);
215 NlaEvalData *channels,
216 NlaEvalSnapshot *snapshot,
217 bool flush_to_original);
218
220
222
231void nlasnapshot_blend(NlaEvalData *eval_data,
232 NlaEvalSnapshot *lower_snapshot,
233 NlaEvalSnapshot *upper_snapshot,
234 short upper_blendmode,
235 float upper_influence,
236 NlaEvalSnapshot *r_blended_snapshot);
237
247 NlaEvalSnapshot *lower_snapshot,
248 NlaEvalSnapshot *blended_snapshot,
249 short upper_blendmode,
250 float upper_influence,
251 NlaEvalSnapshot *r_upper_snapshot);
252
265 NlaEvalSnapshot *blended_snapshot,
266 NlaEvalSnapshot *upper_snapshot,
267 const short upper_blendmode,
268 const float upper_influence,
269 NlaEvalSnapshot *r_lower_snapshot);
270
272 NlaEvalData *channels,
273 ListBase *modifiers,
274 NlaEvalStrip *nes,
275 NlaEvalSnapshot *snapshot,
276 const struct AnimationEvalContext *anim_eval_context,
277 const bool flush_to_original);
278
281 NlaEvalData *channels,
282 ListBase *modifiers,
283 NlaEvalStrip *nes,
284 NlaEvalSnapshot *snapshot,
285 const struct AnimationEvalContext *anim_eval_context);
286
288 NlaEvalData *channels,
289 ListBase *modifiers,
290 NlaEvalStrip *nes,
291 NlaEvalSnapshot *snapshot,
292 const struct AnimationEvalContext *anim_eval_context);
293
294#ifdef __cplusplus
295}
296#endif
unsigned int BLI_bitmap
Definition BLI_bitmap.h:17
float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode)
struct NlaKeyframingContext NlaKeyframingContext
eNlaStripEvaluate_Mode
@ STRIP_EVAL_NOBLEND
@ STRIP_EVAL_BLEND_GET_INVERTED_LOWER_SNAPSHOT
@ STRIP_EVAL_BLEND
void nlasnapshot_enable_all_blend_domain(NlaEvalSnapshot *snapshot)
Definition anim_sys.cc:3645
struct NlaEvalChannelSnapshot NlaEvalChannelSnapshot
struct NlaEvalData NlaEvalData
void nlasnapshot_ensure_channels(NlaEvalData *eval_data, NlaEvalSnapshot *snapshot)
Definition anim_sys.cc:3657
NlaEvalStrip * nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short index, const struct AnimationEvalContext *anim_eval_context, bool flush_to_original)
void nlasnapshot_blend_strip_get_inverted_lower_snapshot(PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const struct AnimationEvalContext *anim_eval_context)
void nlasnapshot_blend(NlaEvalData *eval_data, NlaEvalSnapshot *lower_snapshot, NlaEvalSnapshot *upper_snapshot, short upper_blendmode, float upper_influence, NlaEvalSnapshot *r_blended_snapshot)
Definition anim_sys.cc:3664
void nlastrip_evaluate(const int evaluation_mode, PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const struct AnimationEvalContext *anim_eval_context, bool flush_to_original)
struct NlaEvalChannelKey NlaEvalChannelKey
struct NlaEvalStrip NlaEvalStrip
struct NlaValidMask NlaValidMask
eNlaEvalChannel_MixMode
Definition nla_private.h:87
@ NEC_MIX_AXIS_ANGLE
Definition nla_private.h:91
@ NEC_MIX_ADD
Definition nla_private.h:88
@ NEC_MIX_MULTIPLY
Definition nla_private.h:89
@ NEC_MIX_QUATERNION
Definition nla_private.h:90
eNlaEvalStrip_StripMode
Definition nla_private.h:42
@ NES_TIME_TRANSITION_END
Definition nla_private.h:50
@ NES_TIME_TRANSITION_START
Definition nla_private.h:49
@ NES_TIME_AFTER
Definition nla_private.h:46
@ NES_TIME_BEFORE
Definition nla_private.h:44
@ NES_TIME_WITHIN
Definition nla_private.h:45
struct NlaEvalSnapshot NlaEvalSnapshot
void nlasnapshot_blend_get_inverted_lower_snapshot(NlaEvalData *eval_data, NlaEvalSnapshot *blended_snapshot, NlaEvalSnapshot *upper_snapshot, const short upper_blendmode, const float upper_influence, NlaEvalSnapshot *r_lower_snapshot)
Definition anim_sys.cc:3719
struct NlaEvalChannel NlaEvalChannel
void nladata_flush_channels(PointerRNA *ptr, NlaEvalData *channels, NlaEvalSnapshot *snapshot, bool flush_to_original)
Definition anim_sys.cc:3101
void nlasnapshot_blend_get_inverted_upper_snapshot(NlaEvalData *eval_data, NlaEvalSnapshot *lower_snapshot, NlaEvalSnapshot *blended_snapshot, short upper_blendmode, float upper_influence, NlaEvalSnapshot *r_upper_snapshot)
Definition anim_sys.cc:3691
void nlasnapshot_blend_strip_no_blend(PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const struct AnimationEvalContext *anim_eval_context)
void nlasnapshot_blend_strip(PointerRNA *ptr, NlaEvalData *channels, ListBase *modifiers, NlaEvalStrip *nes, NlaEvalSnapshot *snapshot, const struct AnimationEvalContext *anim_eval_context, const bool flush_to_original)
unsigned __int64 uint64_t
Definition stdint.h:90
struct PropertyRNA * prop
Definition nla_private.h:59
struct PointerRNA ptr
Definition nla_private.h:58
NlaValidMask remap_domain
Definition nla_private.h:77
NlaValidMask blend_domain
Definition nla_private.h:73
struct NlaEvalChannel * channel
Definition nla_private.h:70
struct NlaEvalData * owner
struct NlaEvalChannel * next
Definition nla_private.h:99
NlaEvalChannelSnapshot base_snapshot
const char * rna_path
NlaEvalChannelKey key
struct NlaEvalChannel * prev
Definition nla_private.h:99
NlaValidMask domain
NlaEvalSnapshot eval_snapshot
GHash * path_hash
NlaEvalSnapshot base_snapshot
ListBase channels
GHash * key_hash
struct NlaEvalSnapshot * base
NlaEvalChannelSnapshot ** channels
struct NlaEvalStrip * next
Definition nla_private.h:25
NlaStrip * strip
Definition nla_private.h:30
short track_index
Definition nla_private.h:33
NlaTrack * track
Definition nla_private.h:28
short strip_mode
Definition nla_private.h:35
float strip_time
Definition nla_private.h:38
struct NlaEvalStrip * prev
Definition nla_private.h:25
NlaStrip action_track_strip
struct NlaKeyframingContext * next
struct AnimData * adt
NlaEvalData lower_eval_data
struct NlaKeyframingContext * prev
NlaEvalStrip * eval_strip
BLI_bitmap * ptr
Definition nla_private.h:64
BLI_bitmap buffer[sizeof(uint64_t)/sizeof(BLI_bitmap)]
Definition nla_private.h:65
PointerRNA * ptr
Definition wm_files.cc:4126