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
8
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);
188
202
203void nlastrip_evaluate(const int evaluation_mode,
206 ListBase *modifiers,
207 NlaEvalStrip *nes,
208 NlaEvalSnapshot *snapshot,
209 const struct AnimationEvalContext *anim_eval_context,
210 bool flush_to_original);
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
273 ListBase *modifiers,
274 NlaEvalStrip *nes,
275 NlaEvalSnapshot *snapshot,
276 const struct AnimationEvalContext *anim_eval_context,
277 const bool flush_to_original);
278
282 ListBase *modifiers,
283 NlaEvalStrip *nes,
284 NlaEvalSnapshot *snapshot,
285 const struct AnimationEvalContext *anim_eval_context);
286
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
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 Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode)
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
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)
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
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
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