merge trunk 16118 -> 116886
[blender.git] / source / blender / blenkernel / BKE_softbody.h
index 24abff44a2b1af260002baf0563e291780aec3b2..1756734813bc75a52f54a71c9496d00a3df0a150 100644 (file)
@@ -3,15 +3,12 @@
  *     
  * $Id: BKE_softbody.h 
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 #ifndef BKE_SOFTBODY_H
 #define BKE_SOFTBODY_H
 
+struct Object;
+struct SoftBody;
+
 typedef struct BodyPoint {
        float origS[3], origE[3], origT[3], pos[3], vec[3], force[3];
-       float weight, goal;
+       float goal;
        float prevpos[3], prevvec[3], prevdx[3], prevdv[3]; /* used for Heun integration */
+    float impdv[3],impdx[3];
     int nofsprings; int *springs;
+       float choke,choke2,frozen;
+       float colball;
+       short flag;
+       char octantflag;
 } BodyPoint;
 
-typedef struct BodySpring {
-       int v1, v2;
-       float len, strength;
-} BodySpring;
+/* allocates and initializes general main data */
+extern struct SoftBody *sbNew(void);
 
-typedef struct SoftBody {
-       int totpoint, totspring;
-       
-       BodyPoint *bpoint;
-       BodySpring *bspring;
-       
-       float ctime;    // last time calculated
-} SoftBody;
+/* frees internal data and softbody itself */
+extern void                            sbFree(struct SoftBody *sb);
 
-/* temporal data, nothing saved in file */
-extern void free_softbody(SoftBody *sb);
+/* frees simulation data to reset simulation */
+extern void                            sbFreeSimulation(struct SoftBody *sb);
 
-/* makes totally fresh start situation */
-extern void object_to_softbody(Object *ob,float ctime);
+/* do one simul step, reading and writing vertex locs from given array */
+extern void                            sbObjectStep(struct Object *ob, float framnr, float (*vertexCos)[3], int numVerts);
 
-/* copy original (but new) situation in softbody, as result of matrices or deform */
-void object_update_softbody(Object *ob);
+/* makes totally fresh start situation, resets time */
+extern void                            sbObjectToSoftbody(struct Object *ob);
 
-/* copies softbody result back to object (in displist) */
-extern void softbody_to_object(Object *ob);
+/* links the softbody module to a 'test for Interrupt' function */
+/* pass NULL to unlink again */
+extern void             sbSetInterruptCallBack(int (*f)(void));
 
-/* go one step in simulation */
-extern void object_softbody_step(Object *ob, float ctime);
+/* writing to cache for bake editing */
+extern void                    sbWriteCache(struct Object *ob, int framenr);
 
 #endif