IPO System - Code Cleanup and Commenting:
authorJoshua Leung <aligorith@gmail.com>
Sun, 28 Sep 2008 12:01:41 +0000 (12:01 +0000)
committerJoshua Leung <aligorith@gmail.com>
Sun, 28 Sep 2008 12:01:41 +0000 (12:01 +0000)
Went through and commented all the code in ipo.c, tidying up formating and coding style in places, and also rearranging to have a more logical order in some places. There shouldn't be any major issues arising from this commit.

source/blender/blenkernel/BKE_ipo.h
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/ipo.c
source/blender/makesdna/DNA_ipo_types.h
source/blender/src/drawobject.c

index 5b209cb8f5b80838d71f4a486618936271e76f05..fdd176e0e643ea1e8bfa19e4469e53c05bc34fec 100644 (file)
@@ -54,41 +54,71 @@ struct bPoseChannel;
 struct bActionChannel;
 struct rctf;
 
+/* ------------ Time Management ------------ */
+
 float frame_to_float(int cfra);
 
+/* ------------ IPO Management ---------- */
+
 void free_ipo_curve(struct IpoCurve *icu);
 void free_ipo(struct Ipo *ipo);
+
 void ipo_default_v2d_cur(int blocktype, struct rctf *cur);
+
 struct Ipo *add_ipo(char *name, int idcode);
 struct Ipo *copy_ipo(struct Ipo *ipo);
+
 void ipo_idnew(struct Ipo *ipo);
+
+struct IpoCurve *find_ipocurve(struct Ipo *ipo, int adrcode);
+short has_ipo_code(struct Ipo *ipo, int code);
+
+/* -------------- Make Local -------------- */
+
 void make_local_obipo(struct Ipo *ipo);
 void make_local_matipo(struct Ipo *ipo);
 void make_local_keyipo(struct Ipo *ipo);
 void make_local_ipo(struct Ipo *ipo);
-struct IpoCurve *find_ipocurve(struct Ipo *ipo, int adrcode);
+
+/* ------------ IPO-Curve Sanity ---------------- */
 
 void calchandles_ipocurve(struct IpoCurve *icu);
 void testhandles_ipocurve(struct IpoCurve *icu);
 void sort_time_ipocurve(struct IpoCurve *icu);
 int test_time_ipocurve(struct IpoCurve *icu);
+
+/* -------- IPO-Curve (Bezier) Calculations ---------- */
+
 void correct_bezpart(float *v1, float *v2, float *v3, float *v4);
 int findzero(float x, float q0, float q1, float q2, float q3, float *o);
 void berekeny(float f1, float f2, float f3, float f4, float *o, int b);
 void berekenx(float *f, float *o, int b);
+
+/* -------- IPO Curve Calculation and Evaluation --------- */
+
 float eval_icu(struct IpoCurve *icu, float ipotime);
 void calc_icu(struct IpoCurve *icu, float ctime);
 float calc_ipo_time(struct Ipo *ipo, float ctime);
 void calc_ipo(struct Ipo *ipo, float ctime);
+
+/* ------------ Keyframe Column Tools -------------- */
+
+void add_to_cfra_elem(struct ListBase *lb, struct BezTriple *bezt);
+void make_cfra_list(struct Ipo *ipo, struct ListBase *elems);
+
+/* ---------------- IPO DataAPI ----------------- */
+
 void write_ipo_poin(void *poin, int type, float val);
 float read_ipo_poin(void *poin, int type);
-void *give_mtex_poin(struct MTex *mtex, int adrcode );
 
-void *get_ipo_poin(struct ID *id, struct IpoCurve *icu, int *type);
+void *give_mtex_poin(struct MTex *mtex, int adrcode );
 void *get_pchan_ipo_poin(struct bPoseChannel *pchan, int adrcode);
+void *get_ipo_poin(struct ID *id, struct IpoCurve *icu, int *type);
 
 void set_icu_vars(struct IpoCurve *icu);
 
+/* ---------------- IPO Execution --------------- */
+
 void execute_ipo(struct ID *id, struct Ipo *ipo);
 void execute_action_ipo(struct bActionChannel *achan, struct bPoseChannel *pchan);
 
@@ -99,21 +129,16 @@ void do_ob_ipo(struct Object *ob);
 void do_seq_ipo(struct Sequence *seq, int cfra);
 void do_ob_ipodrivers(struct Object *ob, struct Ipo *ipo, float ctime);
 
-int has_ipo_code(struct Ipo *ipo, int code);
 void do_all_data_ipos(void);
-int calc_ipo_spec(struct Ipo *ipo, int adrcode, float *ctime);
+short calc_ipo_spec(struct Ipo *ipo, int adrcode, float *ctime);
 void clear_delta_obipo(struct Ipo *ipo);
-void add_to_cfra_elem(struct ListBase *lb, struct BezTriple *bezt);
-void make_cfra_list(struct Ipo *ipo, struct ListBase *elems);
 
-/* the sort is an IPO_Channel... */
-int IPO_GetChannels(struct Ipo *ipo, short *channels);
+/* ----------- IPO <-> GameEngine API ---------------- */
+
+/* the short is an IPO_Channel... */
 
-float IPO_GetFloatValue(struct Ipo *ipo,
-/*                                             struct IPO_Channel channel, */
-                                               /* channels are shorts... bit ugly for now*/
-                                               short c,
-                                               float ctime);
+short IPO_GetChannels(struct Ipo *ipo, short *channels);
+float IPO_GetFloatValue(struct Ipo *ipo, short c, float ctime);
 
 #ifdef __cplusplus
 };
index 06c1dd4ffe6f41cc84f72d985fc31f505a7f9145..6ece16deb4b3147173fda9e3d41ab8dd374d7bde 100644 (file)
@@ -1509,7 +1509,7 @@ void makeBevelList(Object *ob)
        BevList *bl, *blnew, *blnext;
        BevPoint *bevp, *bevp2, *bevp1 = NULL, *bevp0;
        float min, inp, x1, x2, y1, y2, vec[3];
-       float *coord_array, *tilt_array=NULL, *radius_array=NULL, *coord_fp, *tilt_fp=NULL, *radius_fp;
+       float *coord_array, *tilt_array=NULL, *radius_array=NULL, *coord_fp, *tilt_fp=NULL, *radius_fp=NULL;
        float *v1, *v2;
        struct bevelsort *sortdata, *sd, *sd1;
        int a, b, nr, poly, resolu, len=0;
index b58a9e51b05632e9a47238f689d5dddd3002cd04..f0135636bb1c5872bdae148fc1ca43612455c1ac 100644 (file)
@@ -77,6 +77,8 @@
 
 #define SMALL -1.0e-10
 
+#if 0 // IPO_OLD_TEMP
+
 /* This array concept was meant to make sure that defines such as OB_LOC_X
    don't have to be enumerated, also for backward compatibility, future changes,
    and to enable it all can be accessed with a for-next loop.
@@ -969,7 +971,7 @@ float eval_icu(IpoCurve *icu, float ipotime)
                        cvalue+= cycyofs;
                }
                else if( (prevbezt+a)->vec[1][0]<=ipotime) {
-                       if( (icu->extrap & IPO_DIR) && icu->ipo!=IPO_CONST) {
+                       if( (icu->extrap & IPO_DIR) && (icu->ipo!=IPO_CONST)) {
                                prevbezt+= a;
                                
                                if (icu->ipo==IPO_LIN) {
@@ -2580,3 +2582,5 @@ float IPO_GetFloatValue(Ipo *ipo, IPO_Channel channel, float ctime)
 
        return ctime;
 }
+
+#endif // IPO_OLD_TEMP
index 5be6dd727c04ec1abbe24f523d9a74f6688e2176..432399e358100e3f226a1b5dc6989b15ecc1231d 100644 (file)
@@ -201,6 +201,8 @@ typedef struct Ipo {
 #define MA_MAP17       (1<<21)
 #define MA_MAP18       (1<<22)
 
+/* ********** Texture Slots (MTex) ********** */
+
 #define TEX_TOTNAM     14
 
 #define MAP_OFS_X      1
index b9bcf4063a3460747821b7887f019382bd05dab8..b7aa29e2482388aec8b24b6c5aeb24a0477ebf1e 100644 (file)
@@ -4816,7 +4816,8 @@ void draw_object(Base *base, int flag)
                                warning_recursive= 1;
 
                                elems.first= elems.last= 0;
-                               make_cfra_list(ob->ipo, &elems);
+                               // warning: no longer checks for certain ob-keys only... (so does this need to use the proper ipokeys then?)
+                               make_cfra_list(ob->ipo, &elems); 
 
                                cfraont= (G.scene->r.cfra);
                                drawtype= G.vd->drawtype;