f8fb61f9fa
add -nojoystick commandline option: it takes 5 seconds everytime to start the game engine, while there IS no joystick. In other words: blender -noaudio -nojoystick improves workflow turnaround times for P - ESC from 7 seconds to 1 second! Improved Bullet soft body advanced options, still work-in-progress. Make sure to create game Bullet soft bodies from scratch, it is not compatible with last weeks builds.
188 lines
5.3 KiB
C++
188 lines
5.3 KiB
C++
/**
|
|
* $Id$
|
|
*
|
|
* ***** 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.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
#ifndef KX_CONVERTPHYSICSOBJECTS
|
|
#define KX_CONVERTPHYSICSOBJECTS
|
|
|
|
/* These are defined by the build system... */
|
|
//but the build system is broken, because it doesn't allow for 2 or more defines at once.
|
|
//Please leave Sumo _AND_ Bullet enabled
|
|
#define USE_SUMO_SOLID
|
|
#define USE_BULLET
|
|
|
|
//#define USE_ODE
|
|
|
|
//on visual studio 7/8, always enable BULLET for now
|
|
//you can have multiple physics engines running anyway, and
|
|
//the scons build system doesn't really support this at the moment.
|
|
//if you got troubles, just comment out USE_BULLET
|
|
#if 1300 <= _MSC_VER
|
|
#define USE_BULLET
|
|
#endif
|
|
|
|
class RAS_MeshObject;
|
|
class KX_Scene;
|
|
|
|
typedef enum {
|
|
KX_BOUNDBOX,
|
|
KX_BOUNDSPHERE,
|
|
KX_BOUNDCYLINDER,
|
|
KX_BOUNDCONE,
|
|
KX_BOUNDMESH,
|
|
KX_BOUNDPOLYTOPE,
|
|
KX_BOUND_DYN_MESH
|
|
} KX_BoundBoxClass;
|
|
|
|
struct KX_BoxBounds
|
|
{
|
|
float m_center[3];
|
|
float m_extends[3];
|
|
};
|
|
|
|
/* Cone/Cylinder */
|
|
struct KX_CBounds
|
|
{
|
|
float m_radius;
|
|
float m_height;
|
|
};
|
|
|
|
|
|
struct KX_ObjectProperties
|
|
{
|
|
bool m_dyna;
|
|
bool m_softbody;
|
|
double m_radius;
|
|
bool m_angular_rigidbody;
|
|
bool m_in_active_layer;
|
|
bool m_ghost;
|
|
class KX_GameObject* m_dynamic_parent;
|
|
bool m_isactor;
|
|
bool m_concave;
|
|
bool m_isdeformable;
|
|
bool m_disableSleeping;
|
|
bool m_hasCompoundChildren;
|
|
bool m_isCompoundChild;
|
|
|
|
/////////////////////////
|
|
|
|
int m_gamesoftFlag;
|
|
float m_soft_linStiff; /* linear stiffness 0..1 */
|
|
float m_soft_angStiff; /* angular stiffness 0..1 */
|
|
float m_soft_volume; /* volume preservation 0..1 */
|
|
|
|
int m_soft_viterations; /* Velocities solver iterations */
|
|
int m_soft_piterations; /* Positions solver iterations */
|
|
int m_soft_diterations; /* Drift solver iterations */
|
|
int m_soft_citerations; /* Cluster solver iterations */
|
|
|
|
float m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */
|
|
float m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */
|
|
float m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */
|
|
float m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
|
|
|
|
float m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
|
|
float m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */
|
|
float m_soft_kVCF; /* Velocities correction factor (Baumgarte) */
|
|
float m_soft_kDP; /* Damping coefficient [0,1] */
|
|
|
|
float m_soft_kDG; /* Drag coefficient [0,+inf] */
|
|
float m_soft_kLF; /* Lift coefficient [0,+inf] */
|
|
float m_soft_kPR; /* Pressure coefficient [-inf,+inf] */
|
|
float m_soft_kVC; /* Volume conversation coefficient [0,+inf] */
|
|
|
|
float m_soft_kDF; /* Dynamic friction coefficient [0,1] */
|
|
float m_soft_kMT; /* Pose matching coefficient [0,1] */
|
|
float m_soft_kCHR; /* Rigid contacts hardness [0,1] */
|
|
float m_soft_kKHR; /* Kinetic contacts hardness [0,1] */
|
|
|
|
float m_soft_kSHR; /* Soft contacts hardness [0,1] */
|
|
float m_soft_kAHR; /* Anchors hardness [0,1] */
|
|
int m_soft_collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */
|
|
int m_soft_numclusteriterations; /* number of iterations to refine collision clusters*/
|
|
|
|
/////////////////////////
|
|
|
|
double m_margin;
|
|
KX_BoundBoxClass m_boundclass;
|
|
union {
|
|
KX_BoxBounds box;
|
|
KX_CBounds c;
|
|
} m_boundobject;
|
|
};
|
|
|
|
#ifdef USE_ODE
|
|
|
|
|
|
void KX_ConvertODEEngineObject(KX_GameObject* gameobj,
|
|
RAS_MeshObject* meshobj,
|
|
KX_Scene* kxscene,
|
|
struct PHY_ShapeProps* shapeprops,
|
|
struct PHY_MaterialProps* smmaterial,
|
|
struct KX_ObjectProperties* objprop);
|
|
|
|
|
|
#endif //USE_ODE
|
|
|
|
|
|
void KX_ConvertDynamoObject(KX_GameObject* gameobj,
|
|
RAS_MeshObject* meshobj,
|
|
KX_Scene* kxscene,
|
|
struct PHY_ShapeProps* shapeprops,
|
|
struct PHY_MaterialProps* smmaterial,
|
|
struct KX_ObjectProperties* objprop);
|
|
|
|
#ifdef USE_SUMO_SOLID
|
|
|
|
void KX_ConvertSumoObject( class KX_GameObject* gameobj,
|
|
class RAS_MeshObject* meshobj,
|
|
class KX_Scene* kxscene,
|
|
struct PHY_ShapeProps* shapeprops,
|
|
struct PHY_MaterialProps* smmaterial,
|
|
struct KX_ObjectProperties* objprop);
|
|
|
|
void KX_ClearSumoSharedShapes();
|
|
bool KX_ReInstanceShapeFromMesh(RAS_MeshObject* meshobj);
|
|
|
|
#endif
|
|
|
|
#ifdef USE_BULLET
|
|
|
|
void KX_ConvertBulletObject( class KX_GameObject* gameobj,
|
|
class RAS_MeshObject* meshobj,
|
|
class KX_Scene* kxscene,
|
|
struct PHY_ShapeProps* shapeprops,
|
|
struct PHY_MaterialProps* smmaterial,
|
|
struct KX_ObjectProperties* objprop);
|
|
|
|
void KX_ClearBulletSharedShapes();
|
|
//bool KX_ReInstanceShapeFromMesh(RAS_MeshObject* meshobj);
|
|
|
|
#endif
|
|
#endif //KX_CONVERTPHYSICSOBJECTS
|
|
|