ClangFormat: apply to source, most of intern
[blender.git] / source / blender / blenkernel / BKE_anim.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 #ifndef __BKE_ANIM_H__
20 #define __BKE_ANIM_H__
21
22 /** \file
23  * \ingroup bke
24  */
25 struct Depsgraph;
26 struct ListBase;
27 struct Main;
28 struct Object;
29 struct ParticleSystem;
30 struct Path;
31 struct ReportList;
32 struct Scene;
33 struct bAnimVizSettings;
34 struct bMotionPath;
35 struct bPoseChannel;
36
37 /* ---------------------------------------------------- */
38 /* Animation Visualization */
39
40 void animviz_settings_init(struct bAnimVizSettings *avs);
41
42 struct bMotionPath *animviz_copy_motionpath(const struct bMotionPath *mpath_src);
43
44 void animviz_free_motionpath_cache(struct bMotionPath *mpath);
45 void animviz_free_motionpath(struct bMotionPath *mpath);
46
47 struct bMotionPath *animviz_verify_motionpaths(struct ReportList *reports,
48                                                struct Scene *scene,
49                                                struct Object *ob,
50                                                struct bPoseChannel *pchan);
51
52 /* ---------------------------------------------------- */
53 /* Curve Paths */
54
55 void free_path(struct Path *path);
56 void calc_curvepath(struct Object *ob, struct ListBase *nurbs);
57 int where_on_path(struct Object *ob,
58                   float ctime,
59                   float vec[4],
60                   float dir[3],
61                   float quat[4],
62                   float *radius,
63                   float *weight);
64
65 /* ---------------------------------------------------- */
66 /* Dupli-Geometry */
67
68 struct ListBase *object_duplilist(struct Depsgraph *depsgraph,
69                                   struct Scene *sce,
70                                   struct Object *ob);
71 void free_object_duplilist(struct ListBase *lb);
72
73 typedef struct DupliObject {
74   struct DupliObject *next, *prev;
75   struct Object *ob;
76   float mat[4][4];
77   float orco[3], uv[2];
78
79   short type; /* from Object.transflag */
80   char no_draw;
81
82   /* Persistent identifier for a dupli object, for inter-frame matching of
83    * objects with motion blur, or inter-update matching for syncing. */
84   int persistent_id[16]; /* 2*MAX_DUPLI_RECUR */
85
86   /* Particle this dupli was generated from. */
87   struct ParticleSystem *particle_system;
88
89   /* Random ID for shading */
90   unsigned int random_id;
91 } DupliObject;
92
93 #endif