14 #ifndef __RBD_Object_H__
15 #define __RBD_Object_H__
70 bool isInfiniteExtent()
const;
96 void restoreStatePos();
98 void restoreStateVel();
107 int getNumGlueSubObjects()
const;
114 bool hasGlueSubObjects()
const;
153 void buildConstraints(
const RBD_Solver *solver,
159 void removeConstraints();
185 void initFromGeometry();
191 void initBBox(
bool useSDF);
197 void initForCollisions();
200 fpreal getPropertyAtPosition(
206 void rebuildAffectorList(
const RBD_Solver *solver,
214 void getStashedTransform(
UT_DMatrix4 &xform)
const;
218 {
if( mySharedAffectorList )
219 mySharedAffectorList->findOverlapIdx(solver,
225 {
if( mySharedAffectorList )
226 mySharedAffectorList->setObjectTreeDirty(); }
229 {
return mySharedAffectorList
230 ? mySharedAffectorList->entries()
233 {
return (*mySharedAffectorList)(
j); }
235 {
return mySharedAffectorList->
236 getCollider(j, myObject, defaultlabel); }
238 {
return mySharedAffectorList->getImpactApplyType(j); }
244 {
return myArrayIndex; }
246 { myArrayIndex =
index; }
249 {
return myHasConstraints; }
252 void clearCollideCache();
254 void cachePhysicalValues();
255 void restorePhysicalValues();
272 void accumulateConstraints(
const RBD_Solver *solver,
287 void findClosestPropertyAtPosition(
fpreal &newvalue,
290 bool &found,
fpreal &closestdist)
const;
323 bool myHasConstraints;
339 bool myHasCachedPhysicalValues;
346 bool myHasInitFromGeometry;
SIM_Object * getObject() const
UT_Vector3Array myPinAnchorPos
int getArrayIndex() const
GT_API const UT_StringHolder time
UT_Vector3Array myPinAnchorGoalPos
int getNumAffectors() const
const SIM_Collider * getCollider(int j, const char *defaultlabel) const
RBD_ObjectArray myPinObjects
void setAffectorTreeDirty()
const SIM_Geometry * getGeometry() const
const SIM_SDF * getSDF() const
This class provides a way to manage a reference to an attribute permitting Read-Only access...
SIM_ImpactApplyType
Defines the possible affector types when doing collision detection.
This class holds a signed distance function representing a GU_Detail.
UT_ValArray< RBD_Object * > RBD_ObjectArray
void setArrayIndex(int index)
RBD_Object * getAffector(int j) const
exint entries() const
Alias of size(). size() is preferred.
UT_ValArray< SIM_ColliderCacheData * > & getCollideCache()
SIM_Collider::SIM_ImpactApplyType getImpactApplyType(int j) const
bool hasNailConstraints() const
RBD_State * getState() const
void findOverlapIdx(const RBD_Solver *solver, UT_IntArray &overlap)
RBD_Object * getGlueParent() const
Returns our parent object, null if not glued.
bool isGlued() const
Return if this object is glued to somewhere else.