remove/comment unused defines.
[blender.git] / source / blender / blenkernel / nla_private.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2009 Blender Foundation, Joshua Leung
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): Joshua Leung (full recode)
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 #ifndef NLA_PRIVATE
31 #define NLA_PRIVATE
32
33 /* --------------- NLA Evaluation DataTypes ----------------------- */
34
35 /* used for list of strips to accumulate at current time */
36 typedef struct NlaEvalStrip {
37         struct NlaEvalStrip *next, *prev;
38         
39         NlaTrack *track;                        /* track that this strip belongs to */
40         NlaStrip *strip;                        /* strip that's being used */
41         
42         short track_index;                      /* the index of the track within the list */
43         short strip_mode;                       /* which end of the strip are we looking at */
44         
45         float strip_time;                       /* time at which which strip is being evaluated */
46 } NlaEvalStrip;
47
48 /* NlaEvalStrip->strip_mode */
49 enum {
50                 /* standard evaluation */
51         NES_TIME_BEFORE = -1,
52         NES_TIME_WITHIN,
53         NES_TIME_AFTER,
54         
55                 /* transition-strip evaluations */
56         NES_TIME_TRANSITION_START,
57         NES_TIME_TRANSITION_END,
58 } eNlaEvalStrip_StripMode;
59
60
61 /* temp channel for accumulating data from NLA (avoids needing to clear all values first) */
62 // TODO: maybe this will be used as the 'cache' stuff needed for editable values too?
63 typedef struct NlaEvalChannel {
64         struct NlaEvalChannel *next, *prev;
65         
66         PointerRNA ptr;                 /* pointer to struct containing property to use */
67         PropertyRNA *prop;              /* RNA-property type to use (should be in the struct given) */
68         int index;                              /* array index (where applicable) */
69         
70         float value;                    /* value of this channel */
71 } NlaEvalChannel;
72
73 /* --------------- NLA Functions (not to be used as a proper API) ----------------------- */
74
75 /* convert from strip time <-> global time */
76 float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode);
77
78 /* --------------- NLA Evaluation (very-private stuff) ----------------------- */
79 /* these functions are only defined here to avoid problems with the order in which they get defined... */
80
81 NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short index, float ctime);
82 void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers, NlaEvalStrip *nes);
83 void nladata_flush_channels(ListBase *channels);
84
85 #endif // NLA_PRIVATE