26 class RBD_ContactGraph;
30 #define RBD_NAME_COLLISIONITERATIONS "collisioniterations"
31 #define RBD_NAME_CONTACTITERATIONS "contactiterations"
32 #define RBD_NAME_SUBCONTACTITERATIONS "subcontactiterations"
33 #define RBD_NAME_SHOCKPROPAGATION "shockpropagation"
34 #define RBD_NAME_USEEDGES "useedges"
35 #define RBD_NAME_FLAGPENETRATION "flagpenetration"
36 #define RBD_NAME_MINIMUMSUBSTEPS "minimumsubsteps"
37 #define RBD_NAME_MAXIMUMSUBSTEPS "maximumsubsteps"
38 #define RBD_NAME_CFLCOND "cflcond"
39 #define RBD_NAME_RESOLVEPENETRATION "resolvepenetration"
40 #define RBD_NAME_GLUEIGNORESRESTING "glueignoresrestingobjects"
87 CONTACTGROUP_NONE = 0,
122 bool &colliderreverseobjectroles
146 bool resolveContactForces(
const RBD_ContactGraph &graph,
150 bool applyshock)
const;
159 bool resolvePenetrations(
const RBD_ContactGraph &graph,
181 void resolvePinConstraintVelocities(
RBD_Object *obj)
const;
188 void shockPropagatePinConstraints(
const RBD_ObjectArray &objects)
const;
210 bool infinitemass)
const;
224 int child_id_b = -1)
const;
235 bool onlytoplevel =
false,
236 int child_id = -1)
const;
254 bool infiniteforceVSinfinitemass,
255 bool restingcollision)
const;
267 bool restingcollision)
const;
276 {
return myCurSolveTime; }
278 { myCurSolveTime =
time; }
280 {
return myCurSolveStep; }
282 { myCurSolveStep = step; }
284 bool doAddImpacts()
const
285 {
return myAddImpacts; }
286 bool doGlueIgnoresResting()
const
287 {
return myGlueIgnoresResting; }
293 getSolverRBDDopDescription());
300 mutable bool myBreakOccurred;
306 mutable bool myAddImpacts;
307 mutable bool myGlueIgnoresResting;
#define DECLARE_STANDARD_GETCASTTOTYPE()
#define RBD_NAME_RESOLVEPENETRATION
This class defines various types of collisions.
GLuint GLsizei const GLchar * label
#define GETSET_DATA_FUNCS_B(DataName, FuncName)
GT_API const UT_StringHolder time
virtual void getDefaultColliderSubclass(const SIM_Object &object, const UT_String &colliderlabel, UT_String &collidertype, bool &colliderreverseobjectroles) const
#define RBD_NAME_SHOCKPROPAGATION
#define GETSET_DATA_FUNCS_F(DataName, FuncName)
#define DECLARE_DATAFACTORY(DataClass, SuperClass, Description, DopParms)
GA_API const UT_StringHolder scale
#define GET_DATA_FUNC_I(DataName, FuncName)
#define RBD_NAME_SUBCONTACTITERATIONS
SIM_ImpactApplyType
Defines the possible affector types when doing collision detection.
#define RBD_NAME_COLLISIONITERATIONS
Holds pointers to a number of SIM_Object objects.
This class holds a signed distance function representing a GU_Detail.
virtual void getImpulseMassMatrixSubclass(const SIM_Object &object, const UT_Vector3 &impulseworldpos, UT_DMatrix3 &immatrix) const
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
#define GETSET_DATA_FUNCS_I(DataName, FuncName)
virtual SIM_Result solveObjectsSubclass(SIM_Engine &engine, SIM_ObjectArray &objects, SIM_ObjectArray &newobjects, SIM_ObjectArray &feedbacktoobjects, const SIM_Time ×tep)=0
virtual fpreal getPropertyAtPositionSubclass(const SIM_Object &object, const UT_Vector3 &worldpos, const SIM_Property &property) const
#define RBD_NAME_MAXIMUMSUBSTEPS
virtual void getDefaultColliderLabelSubclass(const SIM_Object &object, UT_String &label) const
Gets the default collider label for an object using this solver.
#define RBD_NAME_CONTACTGROUPMETHOD
#define RBD_NAME_CONTACTGROUPTOL
#define RBD_NAME_ADDIMPACTS
#define RBD_NAME_MINIMUMSUBSTEPS
#define RBD_NAME_USEPOINTVELOCITY
#define GET_DATA_FUNC_F(DataName, FuncName)
#define RBD_NAME_CULLMODE
#define RBD_NAME_USESDFVELOCITY
#define RBD_NAME_FLAGPENETRATION
#define RBD_NAME_GLUEIGNORESRESTING
virtual void getPointImpulseMassMatrixSubclass(const SIM_Object &object, int ptnum, UT_DMatrix3 &immatrix) const
GA_API const UT_StringHolder rest
virtual fpreal getPropertyAtPointSubclass(const SIM_Object &object, int ptnum, const SIM_Property &property) const
#define RBD_NAME_CONTACTITERATIONS