merge trunk 16118 -> 116886
[blender.git] / source / blender / blenkernel / BKE_softbody.h
index 529668c5fc8b5ae964dde64d18aefddf15bb7ee1..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 contactfrict;
+       float choke,choke2,frozen;
+       float colball;
+       short flag;
+       char octantflag;
 } BodyPoint;
 
-typedef struct BodySpring {
-       int v1, v2;
-       float len, strength;
-} BodySpring;
-
-struct Object;
-struct SoftBody;
-
 /* allocates and initializes general main data */
 extern struct SoftBody *sbNew(void);
 
 /* frees internal data and softbody itself */
 extern void                            sbFree(struct SoftBody *sb);
 
-/* go one step in simulation, copy result in vertexCos for meshes, or
- * directly for lattices.
- */
-extern void                            sbObjectStep(struct Object *ob, float framnr, float (*vertexCos)[3]);
+/* frees simulation data to reset simulation */
+extern void                            sbFreeSimulation(struct SoftBody *sb);
+
+/* 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);
 
 /* makes totally fresh start situation, resets time */
 extern void                            sbObjectToSoftbody(struct Object *ob);
 
-/* resets all motion and time */
-extern void                            sbObjectReset(struct Object *ob);
+/* links the softbody module to a 'test for Interrupt' function */
+/* pass NULL to unlink again */
+extern void             sbSetInterruptCallBack(int (*f)(void));
+
+/* writing to cache for bake editing */
+extern void                    sbWriteCache(struct Object *ob, int framenr);
 
 #endif