[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / Bullet3Serialize / Bullet2FileLoader / autogenerated / bullet2.h
1 /* Copyright (C) 2011 Erwin Coumans & Charlie C
2 *
3 * This software is provided 'as-is', without any express or implied
4 * warranty.  In no event will the authors be held liable for any damages
5 * arising from the use of this software.
6 *
7 * Permission is granted to anyone to use this software for any purpose,
8 * including commercial applications, and to alter it and redistribute it
9 * freely, subject to the following restrictions:
10 *
11 * 1. The origin of this software must not be misrepresented; you must not
12 *    claim that you wrote the original software. If you use this software
13 *    in a product, an acknowledgment in the product documentation would be
14 *    appreciated but is not required.
15 * 2. Altered source versions must be plainly marked as such, and must not be
16 *    misrepresented as being the original software.
17 * 3. This notice may not be removed or altered from any source distribution.
18 */
19 // Auto generated from Bullet/Extras/HeaderGenerator/bulletGenerate.py
20 #ifndef __BULLET2_H__
21 #define __BULLET2_H__
22 namespace Bullet3SerializeBullet2
23 {
24 // put an empty struct in the case
25 typedef struct bInvalidHandle
26 {
27         int unused;
28 } bInvalidHandle;
29
30 class PointerArray;
31 class b3PhysicsSystem;
32 class ListBase;
33 class b3Vector3FloatData;
34 class b3Vector3DoubleData;
35 class b3Matrix3x3FloatData;
36 class b3Matrix3x3DoubleData;
37 class b3TransformFloatData;
38 class b3TransformDoubleData;
39 class b3BvhSubtreeInfoData;
40 class b3OptimizedBvhNodeFloatData;
41 class b3OptimizedBvhNodeDoubleData;
42 class b3QuantizedBvhNodeData;
43 class b3QuantizedBvhFloatData;
44 class b3QuantizedBvhDoubleData;
45 class b3CollisionShapeData;
46 class b3StaticPlaneShapeData;
47 class b3ConvexInternalShapeData;
48 class b3PositionAndRadius;
49 class b3MultiSphereShapeData;
50 class b3IntIndexData;
51 class b3ShortIntIndexData;
52 class b3ShortIntIndexTripletData;
53 class b3CharIndexTripletData;
54 class b3MeshPartData;
55 class b3StridingMeshInterfaceData;
56 class b3TriangleMeshShapeData;
57 class b3ScaledTriangleMeshShapeData;
58 class b3CompoundShapeChildData;
59 class b3CompoundShapeData;
60 class b3CylinderShapeData;
61 class b3CapsuleShapeData;
62 class b3TriangleInfoData;
63 class b3TriangleInfoMapData;
64 class b3GImpactMeshShapeData;
65 class b3ConvexHullShapeData;
66 class b3CollisionObjectDoubleData;
67 class b3CollisionObjectFloatData;
68 class b3DynamicsWorldDoubleData;
69 class b3DynamicsWorldFloatData;
70 class b3RigidBodyFloatData;
71 class b3RigidBodyDoubleData;
72 class b3ConstraintInfo1;
73 class b3TypedConstraintData;
74 class b3Point2PointConstraintFloatData;
75 class b3Point2PointConstraintDoubleData;
76 class b3HingeConstraintDoubleData;
77 class b3HingeConstraintFloatData;
78 class b3ConeTwistConstraintData;
79 class b3Generic6DofConstraintData;
80 class b3Generic6DofSpringConstraintData;
81 class b3SliderConstraintData;
82 class b3ContactSolverInfoDoubleData;
83 class b3ContactSolverInfoFloatData;
84 class SoftBodyMaterialData;
85 class SoftBodyNodeData;
86 class SoftBodyLinkData;
87 class SoftBodyFaceData;
88 class SoftBodyTetraData;
89 class SoftRigidAnchorData;
90 class SoftBodyConfigData;
91 class SoftBodyPoseData;
92 class SoftBodyClusterData;
93 class b3SoftBodyJointData;
94 class b3SoftBodyFloatData;
95 // -------------------------------------------------- //
96 class PointerArray
97 {
98 public:
99         int m_size;
100         int m_capacity;
101         void *m_data;
102 };
103
104 // -------------------------------------------------- //
105 class b3PhysicsSystem
106 {
107 public:
108         PointerArray m_collisionShapes;
109         PointerArray m_collisionObjects;
110         PointerArray m_constraints;
111 };
112
113 // -------------------------------------------------- //
114 class ListBase
115 {
116 public:
117         void *first;
118         void *last;
119 };
120
121 // -------------------------------------------------- //
122 class b3Vector3FloatData
123 {
124 public:
125         float m_floats[4];
126 };
127
128 // -------------------------------------------------- //
129 class b3Vector3DoubleData
130 {
131 public:
132         double m_floats[4];
133 };
134
135 // -------------------------------------------------- //
136 class b3Matrix3x3FloatData
137 {
138 public:
139         b3Vector3FloatData m_el[3];
140 };
141
142 // -------------------------------------------------- //
143 class b3Matrix3x3DoubleData
144 {
145 public:
146         b3Vector3DoubleData m_el[3];
147 };
148
149 // -------------------------------------------------- //
150 class b3TransformFloatData
151 {
152 public:
153         b3Matrix3x3FloatData m_basis;
154         b3Vector3FloatData m_origin;
155 };
156
157 // -------------------------------------------------- //
158 class b3TransformDoubleData
159 {
160 public:
161         b3Matrix3x3DoubleData m_basis;
162         b3Vector3DoubleData m_origin;
163 };
164
165 // -------------------------------------------------- //
166 class b3BvhSubtreeInfoData
167 {
168 public:
169         int m_rootNodeIndex;
170         int m_subtreeSize;
171         short m_quantizedAabbMin[3];
172         short m_quantizedAabbMax[3];
173 };
174
175 // -------------------------------------------------- //
176 class b3OptimizedBvhNodeFloatData
177 {
178 public:
179         b3Vector3FloatData m_aabbMinOrg;
180         b3Vector3FloatData m_aabbMaxOrg;
181         int m_escapeIndex;
182         int m_subPart;
183         int m_triangleIndex;
184         char m_pad[4];
185 };
186
187 // -------------------------------------------------- //
188 class b3OptimizedBvhNodeDoubleData
189 {
190 public:
191         b3Vector3DoubleData m_aabbMinOrg;
192         b3Vector3DoubleData m_aabbMaxOrg;
193         int m_escapeIndex;
194         int m_subPart;
195         int m_triangleIndex;
196         char m_pad[4];
197 };
198
199 // -------------------------------------------------- //
200 class b3QuantizedBvhNodeData
201 {
202 public:
203         short m_quantizedAabbMin[3];
204         short m_quantizedAabbMax[3];
205         int m_escapeIndexOrTriangleIndex;
206 };
207
208 // -------------------------------------------------- //
209 class b3QuantizedBvhFloatData
210 {
211 public:
212         b3Vector3FloatData m_bvhAabbMin;
213         b3Vector3FloatData m_bvhAabbMax;
214         b3Vector3FloatData m_bvhQuantization;
215         int m_curNodeIndex;
216         int m_useQuantization;
217         int m_numContiguousLeafNodes;
218         int m_numQuantizedContiguousNodes;
219         b3OptimizedBvhNodeFloatData *m_contiguousNodesPtr;
220         b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
221         b3BvhSubtreeInfoData *m_subTreeInfoPtr;
222         int m_traversalMode;
223         int m_numSubtreeHeaders;
224 };
225
226 // -------------------------------------------------- //
227 class b3QuantizedBvhDoubleData
228 {
229 public:
230         b3Vector3DoubleData m_bvhAabbMin;
231         b3Vector3DoubleData m_bvhAabbMax;
232         b3Vector3DoubleData m_bvhQuantization;
233         int m_curNodeIndex;
234         int m_useQuantization;
235         int m_numContiguousLeafNodes;
236         int m_numQuantizedContiguousNodes;
237         b3OptimizedBvhNodeDoubleData *m_contiguousNodesPtr;
238         b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
239         int m_traversalMode;
240         int m_numSubtreeHeaders;
241         b3BvhSubtreeInfoData *m_subTreeInfoPtr;
242 };
243
244 // -------------------------------------------------- //
245 class b3CollisionShapeData
246 {
247 public:
248         char *m_name;
249         int m_shapeType;
250         char m_padding[4];
251 };
252
253 // -------------------------------------------------- //
254 class b3StaticPlaneShapeData
255 {
256 public:
257         b3CollisionShapeData m_collisionShapeData;
258         b3Vector3FloatData m_localScaling;
259         b3Vector3FloatData m_planeNormal;
260         float m_planeConstant;
261         char m_pad[4];
262 };
263
264 // -------------------------------------------------- //
265 class b3ConvexInternalShapeData
266 {
267 public:
268         b3CollisionShapeData m_collisionShapeData;
269         b3Vector3FloatData m_localScaling;
270         b3Vector3FloatData m_implicitShapeDimensions;
271         float m_collisionMargin;
272         int m_padding;
273 };
274
275 // -------------------------------------------------- //
276 class b3PositionAndRadius
277 {
278 public:
279         b3Vector3FloatData m_pos;
280         float m_radius;
281 };
282
283 // -------------------------------------------------- //
284 class b3MultiSphereShapeData
285 {
286 public:
287         b3ConvexInternalShapeData m_convexInternalShapeData;
288         b3PositionAndRadius *m_localPositionArrayPtr;
289         int m_localPositionArraySize;
290         char m_padding[4];
291 };
292
293 // -------------------------------------------------- //
294 class b3IntIndexData
295 {
296 public:
297         int m_value;
298 };
299
300 // -------------------------------------------------- //
301 class b3ShortIntIndexData
302 {
303 public:
304         short m_value;
305         char m_pad[2];
306 };
307
308 // -------------------------------------------------- //
309 class b3ShortIntIndexTripletData
310 {
311 public:
312         short m_values[3];
313         char m_pad[2];
314 };
315
316 // -------------------------------------------------- //
317 class b3CharIndexTripletData
318 {
319 public:
320         char m_values[3];
321         char m_pad;
322 };
323
324 // -------------------------------------------------- //
325 class b3MeshPartData
326 {
327 public:
328         b3Vector3FloatData *m_vertices3f;
329         b3Vector3DoubleData *m_vertices3d;
330         b3IntIndexData *m_indices32;
331         b3ShortIntIndexTripletData *m_3indices16;
332         b3CharIndexTripletData *m_3indices8;
333         b3ShortIntIndexData *m_indices16;
334         int m_numTriangles;
335         int m_numVertices;
336 };
337
338 // -------------------------------------------------- //
339 class b3StridingMeshInterfaceData
340 {
341 public:
342         b3MeshPartData *m_meshPartsPtr;
343         b3Vector3FloatData m_scaling;
344         int m_numMeshParts;
345         char m_padding[4];
346 };
347
348 // -------------------------------------------------- //
349 class b3TriangleMeshShapeData
350 {
351 public:
352         b3CollisionShapeData m_collisionShapeData;
353         b3StridingMeshInterfaceData m_meshInterface;
354         b3QuantizedBvhFloatData *m_quantizedFloatBvh;
355         b3QuantizedBvhDoubleData *m_quantizedDoubleBvh;
356         b3TriangleInfoMapData *m_triangleInfoMap;
357         float m_collisionMargin;
358         char m_pad3[4];
359 };
360
361 // -------------------------------------------------- //
362 class b3ScaledTriangleMeshShapeData
363 {
364 public:
365         b3TriangleMeshShapeData m_trimeshShapeData;
366         b3Vector3FloatData m_localScaling;
367 };
368
369 // -------------------------------------------------- //
370 class b3CompoundShapeChildData
371 {
372 public:
373         b3TransformFloatData m_transform;
374         b3CollisionShapeData *m_childShape;
375         int m_childShapeType;
376         float m_childMargin;
377 };
378
379 // -------------------------------------------------- //
380 class b3CompoundShapeData
381 {
382 public:
383         b3CollisionShapeData m_collisionShapeData;
384         b3CompoundShapeChildData *m_childShapePtr;
385         int m_numChildShapes;
386         float m_collisionMargin;
387 };
388
389 // -------------------------------------------------- //
390 class b3CylinderShapeData
391 {
392 public:
393         b3ConvexInternalShapeData m_convexInternalShapeData;
394         int m_upAxis;
395         char m_padding[4];
396 };
397
398 // -------------------------------------------------- //
399 class b3CapsuleShapeData
400 {
401 public:
402         b3ConvexInternalShapeData m_convexInternalShapeData;
403         int m_upAxis;
404         char m_padding[4];
405 };
406
407 // -------------------------------------------------- //
408 class b3TriangleInfoData
409 {
410 public:
411         int m_flags;
412         float m_edgeV0V1Angle;
413         float m_edgeV1V2Angle;
414         float m_edgeV2V0Angle;
415 };
416
417 // -------------------------------------------------- //
418 class b3TriangleInfoMapData
419 {
420 public:
421         int *m_hashTablePtr;
422         int *m_nextPtr;
423         b3TriangleInfoData *m_valueArrayPtr;
424         int *m_keyArrayPtr;
425         float m_convexEpsilon;
426         float m_planarEpsilon;
427         float m_equalVertexThreshold;
428         float m_edgeDistanceThreshold;
429         float m_zeroAreaThreshold;
430         int m_nextSize;
431         int m_hashTableSize;
432         int m_numValues;
433         int m_numKeys;
434         char m_padding[4];
435 };
436
437 // -------------------------------------------------- //
438 class b3GImpactMeshShapeData
439 {
440 public:
441         b3CollisionShapeData m_collisionShapeData;
442         b3StridingMeshInterfaceData m_meshInterface;
443         b3Vector3FloatData m_localScaling;
444         float m_collisionMargin;
445         int m_gimpactSubType;
446 };
447
448 // -------------------------------------------------- //
449 class b3ConvexHullShapeData
450 {
451 public:
452         b3ConvexInternalShapeData m_convexInternalShapeData;
453         b3Vector3FloatData *m_unscaledPointsFloatPtr;
454         b3Vector3DoubleData *m_unscaledPointsDoublePtr;
455         int m_numUnscaledPoints;
456         char m_padding3[4];
457 };
458
459 // -------------------------------------------------- //
460 class b3CollisionObjectDoubleData
461 {
462 public:
463         void *m_broadphaseHandle;
464         void *m_collisionShape;
465         b3CollisionShapeData *m_rootCollisionShape;
466         char *m_name;
467         b3TransformDoubleData m_worldTransform;
468         b3TransformDoubleData m_interpolationWorldTransform;
469         b3Vector3DoubleData m_interpolationLinearVelocity;
470         b3Vector3DoubleData m_interpolationAngularVelocity;
471         b3Vector3DoubleData m_anisotropicFriction;
472         double m_contactProcessingThreshold;
473         double m_deactivationTime;
474         double m_friction;
475         double m_rollingFriction;
476         double m_restitution;
477         double m_hitFraction;
478         double m_ccdSweptSphereRadius;
479         double m_ccdMotionThreshold;
480         int m_hasAnisotropicFriction;
481         int m_collisionFlags;
482         int m_islandTag1;
483         int m_companionId;
484         int m_activationState1;
485         int m_internalType;
486         int m_checkCollideWith;
487         char m_padding[4];
488 };
489
490 // -------------------------------------------------- //
491 class b3CollisionObjectFloatData
492 {
493 public:
494         void *m_broadphaseHandle;
495         void *m_collisionShape;
496         b3CollisionShapeData *m_rootCollisionShape;
497         char *m_name;
498         b3TransformFloatData m_worldTransform;
499         b3TransformFloatData m_interpolationWorldTransform;
500         b3Vector3FloatData m_interpolationLinearVelocity;
501         b3Vector3FloatData m_interpolationAngularVelocity;
502         b3Vector3FloatData m_anisotropicFriction;
503         float m_contactProcessingThreshold;
504         float m_deactivationTime;
505         float m_friction;
506         float m_rollingFriction;
507         float m_restitution;
508         float m_hitFraction;
509         float m_ccdSweptSphereRadius;
510         float m_ccdMotionThreshold;
511         int m_hasAnisotropicFriction;
512         int m_collisionFlags;
513         int m_islandTag1;
514         int m_companionId;
515         int m_activationState1;
516         int m_internalType;
517         int m_checkCollideWith;
518         char m_padding[4];
519 };
520
521 // -------------------------------------------------- //
522 class b3RigidBodyFloatData
523 {
524 public:
525         b3CollisionObjectFloatData m_collisionObjectData;
526         b3Matrix3x3FloatData m_invInertiaTensorWorld;
527         b3Vector3FloatData m_linearVelocity;
528         b3Vector3FloatData m_angularVelocity;
529         b3Vector3FloatData m_angularFactor;
530         b3Vector3FloatData m_linearFactor;
531         b3Vector3FloatData m_gravity;
532         b3Vector3FloatData m_gravity_acceleration;
533         b3Vector3FloatData m_invInertiaLocal;
534         b3Vector3FloatData m_totalForce;
535         b3Vector3FloatData m_totalTorque;
536         float m_inverseMass;
537         float m_linearDamping;
538         float m_angularDamping;
539         float m_additionalDampingFactor;
540         float m_additionalLinearDampingThresholdSqr;
541         float m_additionalAngularDampingThresholdSqr;
542         float m_additionalAngularDampingFactor;
543         float m_linearSleepingThreshold;
544         float m_angularSleepingThreshold;
545         int m_additionalDamping;
546 };
547
548 // -------------------------------------------------- //
549 class b3RigidBodyDoubleData
550 {
551 public:
552         b3CollisionObjectDoubleData m_collisionObjectData;
553         b3Matrix3x3DoubleData m_invInertiaTensorWorld;
554         b3Vector3DoubleData m_linearVelocity;
555         b3Vector3DoubleData m_angularVelocity;
556         b3Vector3DoubleData m_angularFactor;
557         b3Vector3DoubleData m_linearFactor;
558         b3Vector3DoubleData m_gravity;
559         b3Vector3DoubleData m_gravity_acceleration;
560         b3Vector3DoubleData m_invInertiaLocal;
561         b3Vector3DoubleData m_totalForce;
562         b3Vector3DoubleData m_totalTorque;
563         double m_inverseMass;
564         double m_linearDamping;
565         double m_angularDamping;
566         double m_additionalDampingFactor;
567         double m_additionalLinearDampingThresholdSqr;
568         double m_additionalAngularDampingThresholdSqr;
569         double m_additionalAngularDampingFactor;
570         double m_linearSleepingThreshold;
571         double m_angularSleepingThreshold;
572         int m_additionalDamping;
573         char m_padding[4];
574 };
575
576 // -------------------------------------------------- //
577 class b3ConstraintInfo1
578 {
579 public:
580         int m_numConstraintRows;
581         int nub;
582 };
583
584 // -------------------------------------------------- //
585 class b3TypedConstraintData
586 {
587 public:
588         bInvalidHandle *m_rbA;
589         bInvalidHandle *m_rbB;
590         char *m_name;
591         int m_objectType;
592         int m_userConstraintType;
593         int m_userConstraintId;
594         int m_needsFeedback;
595         float m_appliedImpulse;
596         float m_dbgDrawSize;
597         int m_disableCollisionsBetweenLinkedBodies;
598         int m_overrideNumSolverIterations;
599         float m_breakingImpulseThreshold;
600         int m_isEnabled;
601 };
602
603 // -------------------------------------------------- //
604 class b3Point2PointConstraintFloatData
605 {
606 public:
607         b3TypedConstraintData m_typeConstraintData;
608         b3Vector3FloatData m_pivotInA;
609         b3Vector3FloatData m_pivotInB;
610 };
611
612 // -------------------------------------------------- //
613 class b3Point2PointConstraintDoubleData
614 {
615 public:
616         b3TypedConstraintData m_typeConstraintData;
617         b3Vector3DoubleData m_pivotInA;
618         b3Vector3DoubleData m_pivotInB;
619 };
620
621 // -------------------------------------------------- //
622 class b3HingeConstraintDoubleData
623 {
624 public:
625         b3TypedConstraintData m_typeConstraintData;
626         b3TransformDoubleData m_rbAFrame;
627         b3TransformDoubleData m_rbBFrame;
628         int m_useReferenceFrameA;
629         int m_angularOnly;
630         int m_enableAngularMotor;
631         float m_motorTargetVelocity;
632         float m_maxMotorImpulse;
633         float m_lowerLimit;
634         float m_upperLimit;
635         float m_limitSoftness;
636         float m_biasFactor;
637         float m_relaxationFactor;
638 };
639
640 // -------------------------------------------------- //
641 class b3HingeConstraintFloatData
642 {
643 public:
644         b3TypedConstraintData m_typeConstraintData;
645         b3TransformFloatData m_rbAFrame;
646         b3TransformFloatData m_rbBFrame;
647         int m_useReferenceFrameA;
648         int m_angularOnly;
649         int m_enableAngularMotor;
650         float m_motorTargetVelocity;
651         float m_maxMotorImpulse;
652         float m_lowerLimit;
653         float m_upperLimit;
654         float m_limitSoftness;
655         float m_biasFactor;
656         float m_relaxationFactor;
657 };
658
659 // -------------------------------------------------- //
660 class b3ConeTwistConstraintData
661 {
662 public:
663         b3TypedConstraintData m_typeConstraintData;
664         b3TransformFloatData m_rbAFrame;
665         b3TransformFloatData m_rbBFrame;
666         float m_swingSpan1;
667         float m_swingSpan2;
668         float m_twistSpan;
669         float m_limitSoftness;
670         float m_biasFactor;
671         float m_relaxationFactor;
672         float m_damping;
673         char m_pad[4];
674 };
675
676 // -------------------------------------------------- //
677 class b3Generic6DofConstraintData
678 {
679 public:
680         b3TypedConstraintData m_typeConstraintData;
681         b3TransformFloatData m_rbAFrame;
682         b3TransformFloatData m_rbBFrame;
683         b3Vector3FloatData m_linearUpperLimit;
684         b3Vector3FloatData m_linearLowerLimit;
685         b3Vector3FloatData m_angularUpperLimit;
686         b3Vector3FloatData m_angularLowerLimit;
687         int m_useLinearReferenceFrameA;
688         int m_useOffsetForConstraintFrame;
689 };
690
691 // -------------------------------------------------- //
692 class b3Generic6DofSpringConstraintData
693 {
694 public:
695         b3Generic6DofConstraintData m_6dofData;
696         int m_springEnabled[6];
697         float m_equilibriumPoint[6];
698         float m_springStiffness[6];
699         float m_springDamping[6];
700 };
701
702 // -------------------------------------------------- //
703 class b3SliderConstraintData
704 {
705 public:
706         b3TypedConstraintData m_typeConstraintData;
707         b3TransformFloatData m_rbAFrame;
708         b3TransformFloatData m_rbBFrame;
709         float m_linearUpperLimit;
710         float m_linearLowerLimit;
711         float m_angularUpperLimit;
712         float m_angularLowerLimit;
713         int m_useLinearReferenceFrameA;
714         int m_useOffsetForConstraintFrame;
715 };
716
717 // -------------------------------------------------- //
718 class b3ContactSolverInfoDoubleData
719 {
720 public:
721         double m_tau;
722         double m_damping;
723         double m_friction;
724         double m_timeStep;
725         double m_restitution;
726         double m_maxErrorReduction;
727         double m_sor;
728         double m_erp;
729         double m_erp2;
730         double m_globalCfm;
731         double m_splitImpulsePenetrationThreshold;
732         double m_splitImpulseTurnErp;
733         double m_linearSlop;
734         double m_warmstartingFactor;
735         double m_maxGyroscopicForce;
736         double m_singleAxisRollingFrictionThreshold;
737         int m_numIterations;
738         int m_solverMode;
739         int m_restingContactRestitutionThreshold;
740         int m_minimumSolverBatchSize;
741         int m_splitImpulse;
742         char m_padding[4];
743 };
744
745 // -------------------------------------------------- //
746 class b3ContactSolverInfoFloatData
747 {
748 public:
749         float m_tau;
750         float m_damping;
751         float m_friction;
752         float m_timeStep;
753         float m_restitution;
754         float m_maxErrorReduction;
755         float m_sor;
756         float m_erp;
757         float m_erp2;
758         float m_globalCfm;
759         float m_splitImpulsePenetrationThreshold;
760         float m_splitImpulseTurnErp;
761         float m_linearSlop;
762         float m_warmstartingFactor;
763         float m_maxGyroscopicForce;
764         float m_singleAxisRollingFrictionThreshold;
765         int m_numIterations;
766         int m_solverMode;
767         int m_restingContactRestitutionThreshold;
768         int m_minimumSolverBatchSize;
769         int m_splitImpulse;
770         char m_padding[4];
771 };
772
773 // -------------------------------------------------- //
774 class b3DynamicsWorldDoubleData
775 {
776 public:
777         b3ContactSolverInfoDoubleData m_solverInfo;
778         b3Vector3DoubleData m_gravity;
779 };
780
781 // -------------------------------------------------- //
782 class b3DynamicsWorldFloatData
783 {
784 public:
785         b3ContactSolverInfoFloatData m_solverInfo;
786         b3Vector3FloatData m_gravity;
787 };
788
789 // -------------------------------------------------- //
790 class SoftBodyMaterialData
791 {
792 public:
793         float m_linearStiffness;
794         float m_angularStiffness;
795         float m_volumeStiffness;
796         int m_flags;
797 };
798
799 // -------------------------------------------------- //
800 class SoftBodyNodeData
801 {
802 public:
803         SoftBodyMaterialData *m_material;
804         b3Vector3FloatData m_position;
805         b3Vector3FloatData m_previousPosition;
806         b3Vector3FloatData m_velocity;
807         b3Vector3FloatData m_accumulatedForce;
808         b3Vector3FloatData m_normal;
809         float m_inverseMass;
810         float m_area;
811         int m_attach;
812         int m_pad;
813 };
814
815 // -------------------------------------------------- //
816 class SoftBodyLinkData
817 {
818 public:
819         SoftBodyMaterialData *m_material;
820         int m_nodeIndices[2];
821         float m_restLength;
822         int m_bbending;
823 };
824
825 // -------------------------------------------------- //
826 class SoftBodyFaceData
827 {
828 public:
829         b3Vector3FloatData m_normal;
830         SoftBodyMaterialData *m_material;
831         int m_nodeIndices[3];
832         float m_restArea;
833 };
834
835 // -------------------------------------------------- //
836 class SoftBodyTetraData
837 {
838 public:
839         b3Vector3FloatData m_c0[4];
840         SoftBodyMaterialData *m_material;
841         int m_nodeIndices[4];
842         float m_restVolume;
843         float m_c1;
844         float m_c2;
845         int m_pad;
846 };
847
848 // -------------------------------------------------- //
849 class SoftRigidAnchorData
850 {
851 public:
852         b3Matrix3x3FloatData m_c0;
853         b3Vector3FloatData m_c1;
854         b3Vector3FloatData m_localFrame;
855         bInvalidHandle *m_rigidBody;
856         int m_nodeIndex;
857         float m_c2;
858 };
859
860 // -------------------------------------------------- //
861 class SoftBodyConfigData
862 {
863 public:
864         int m_aeroModel;
865         float m_baumgarte;
866         float m_damping;
867         float m_drag;
868         float m_lift;
869         float m_pressure;
870         float m_volume;
871         float m_dynamicFriction;
872         float m_poseMatch;
873         float m_rigidContactHardness;
874         float m_kineticContactHardness;
875         float m_softContactHardness;
876         float m_anchorHardness;
877         float m_softRigidClusterHardness;
878         float m_softKineticClusterHardness;
879         float m_softSoftClusterHardness;
880         float m_softRigidClusterImpulseSplit;
881         float m_softKineticClusterImpulseSplit;
882         float m_softSoftClusterImpulseSplit;
883         float m_maxVolume;
884         float m_timeScale;
885         int m_velocityIterations;
886         int m_positionIterations;
887         int m_driftIterations;
888         int m_clusterIterations;
889         int m_collisionFlags;
890 };
891
892 // -------------------------------------------------- //
893 class SoftBodyPoseData
894 {
895 public:
896         b3Matrix3x3FloatData m_rot;
897         b3Matrix3x3FloatData m_scale;
898         b3Matrix3x3FloatData m_aqq;
899         b3Vector3FloatData m_com;
900         b3Vector3FloatData *m_positions;
901         float *m_weights;
902         int m_numPositions;
903         int m_numWeigts;
904         int m_bvolume;
905         int m_bframe;
906         float m_restVolume;
907         int m_pad;
908 };
909
910 // -------------------------------------------------- //
911 class SoftBodyClusterData
912 {
913 public:
914         b3TransformFloatData m_framexform;
915         b3Matrix3x3FloatData m_locii;
916         b3Matrix3x3FloatData m_invwi;
917         b3Vector3FloatData m_com;
918         b3Vector3FloatData m_vimpulses[2];
919         b3Vector3FloatData m_dimpulses[2];
920         b3Vector3FloatData m_lv;
921         b3Vector3FloatData m_av;
922         b3Vector3FloatData *m_framerefs;
923         int *m_nodeIndices;
924         float *m_masses;
925         int m_numFrameRefs;
926         int m_numNodes;
927         int m_numMasses;
928         float m_idmass;
929         float m_imass;
930         int m_nvimpulses;
931         int m_ndimpulses;
932         float m_ndamping;
933         float m_ldamping;
934         float m_adamping;
935         float m_matching;
936         float m_maxSelfCollisionImpulse;
937         float m_selfCollisionImpulseFactor;
938         int m_containsAnchor;
939         int m_collide;
940         int m_clusterIndex;
941 };
942
943 // -------------------------------------------------- //
944 class b3SoftBodyJointData
945 {
946 public:
947         void *m_bodyA;
948         void *m_bodyB;
949         b3Vector3FloatData m_refs[2];
950         float m_cfm;
951         float m_erp;
952         float m_split;
953         int m_delete;
954         b3Vector3FloatData m_relPosition[2];
955         int m_bodyAtype;
956         int m_bodyBtype;
957         int m_jointType;
958         int m_pad;
959 };
960
961 // -------------------------------------------------- //
962 class b3SoftBodyFloatData
963 {
964 public:
965         b3CollisionObjectFloatData m_collisionObjectData;
966         SoftBodyPoseData *m_pose;
967         SoftBodyMaterialData **m_materials;
968         SoftBodyNodeData *m_nodes;
969         SoftBodyLinkData *m_links;
970         SoftBodyFaceData *m_faces;
971         SoftBodyTetraData *m_tetrahedra;
972         SoftRigidAnchorData *m_anchors;
973         SoftBodyClusterData *m_clusters;
974         b3SoftBodyJointData *m_joints;
975         int m_numMaterials;
976         int m_numNodes;
977         int m_numLinks;
978         int m_numFaces;
979         int m_numTetrahedra;
980         int m_numAnchors;
981         int m_numClusters;
982         int m_numJoints;
983         SoftBodyConfigData m_config;
984 };
985
986 }  // namespace Bullet3SerializeBullet2
987 #endif  //__BULLET2_H__