28 link(NxSoftBody *softbodyPtr) {
33 _ptr->userData =
this;
38 scene->_softbodies.add(
this);
48 _ptr->userData =
nullptr;
49 _error_type = ET_released;
52 scene->_softbodies.remove(
this);
63 nassertv(_error_type == ET_ok);
66 _ptr->getScene().releaseSoftBody(*_ptr);
83 _ptr->getWorldBounds(bounds);
87 _node->set_bounds(&bb);
97 nassertr(_error_type == ET_ok,
nullptr);
98 return (
PhysxScene *)_ptr->getScene().userData;
105 get_soft_body_node()
const {
107 nassertr(_error_type == ET_ok,
nullptr);
115 create_soft_body_node(
const char *name) {
117 nassertr(_error_type == ET_ok,
nullptr);
120 _node->allocate(
this);
132 nassertv(_error_type == ET_ok);
134 _name = name ? name :
"";
135 _ptr->setName(_name.c_str());
144 nassertr(_error_type == ET_ok,
"");
145 return _ptr->getName();
155 nassertv(_error_type == ET_ok);
156 nassertv(group >= 0 && group < 32);
157 _ptr->setGroup(group);
166 nassertr(_error_type == ET_ok, 0);
167 return _ptr->getGroup();
176 nassertv(_error_type == ET_ok);
178 NxGroupsMask _mask = mask.get_mask();
179 _ptr->setGroupsMask(_mask);
190 nassertr(_error_type == ET_ok, mask);
192 NxGroupsMask _mask = _ptr->getGroupsMask();
193 mask.set_mask(_mask);
204 nassertr(_error_type == ET_ok, 0);
205 return _ptr->getNumberOfParticles();
214 nassertv(_error_type == ET_ok);
215 _ptr->setParticleRadius(radius);
224 nassertr(_error_type == ET_ok, 0.0f);
225 return _ptr->getParticleRadius();
232 set_flag(PhysxSoftBodyFlag flag,
bool value) {
234 nassertv(_error_type == ET_ok);
236 NxU32 flags = _ptr->getFlags();
245 _ptr->setFlags(flags);
252 get_flag(PhysxSoftBodyFlag flag)
const {
254 nassertr(_error_type == ET_ok,
false);
256 return (_ptr->getFlags() & flag) ? true :
false;
265 nassertr(_error_type == ET_ok, 0.0f);
266 return _ptr->getDensity();
278 nassertr(_error_type == ET_ok, 0.0f);
279 return _ptr->getRelativeGridSpacing();
288 nassertv(_error_type == ET_ok);
289 ptr()->setVolumeStiffness(stiffness);
298 nassertr(_error_type == ET_ok, 0.0f);
299 return ptr()->getVolumeStiffness();
308 nassertv(_error_type == ET_ok);
309 ptr()->setStretchingStiffness(stiffness);
318 nassertr(_error_type == ET_ok, 0.0f);
319 return ptr()->getStretchingStiffness();
328 nassertv(_error_type == ET_ok);
329 ptr()->setDampingCoefficient(coef);
338 nassertr(_error_type == ET_ok, 0.0f);
339 return ptr()->getDampingCoefficient();
348 nassertv(_error_type == ET_ok);
349 ptr()->setFriction(friction);
358 nassertr(_error_type == ET_ok, 0.0f);
359 return ptr()->getFriction();
368 nassertv(_error_type == ET_ok);
369 nassertv(factor > 1.0f);
370 ptr()->setTearFactor(factor);
379 nassertr(_error_type == ET_ok, 0.0f);
380 return ptr()->getTearFactor();
389 nassertv(_error_type == ET_ok);
390 nassertv(factor > 1.0f);
391 ptr()->setAttachmentTearFactor(factor);
400 nassertr(_error_type == ET_ok, 0.0f);
401 return ptr()->getAttachmentTearFactor();
410 nassertv(_error_type == ET_ok);
411 ptr()->setSolverIterations(iterations);
420 nassertr(_error_type == ET_ok, 0);
421 return ptr()->getSolverIterations();
436 nassertr(_error_type == ET_ok,
false);
437 return _ptr->isSleeping();
448 wake_up(
float wakeCounterValue) {
450 nassertv(_error_type == ET_ok);
451 _ptr->wakeUp(wakeCounterValue);
464 nassertv(_error_type == ET_ok);
479 nassertv(_error_type == ET_ok);
480 _ptr->setSleepLinearVelocity(threshold);
491 nassertr(_error_type == ET_ok, 0.0f);
492 return _ptr->getSleepLinearVelocity();
495 #if NX_SDK_VERSION_NUMBER > 281
500 set_self_collision_thickness(
float thickness) {
502 nassertv(_error_type == ET_ok);
503 _ptr->setSelfCollisionThickness(thickness);
509 float PhysxSoftBody::
510 get_self_collision_thickness()
const {
512 nassertr(_error_type == ET_ok, 0.0f);
513 return _ptr->getSelfCollisionThickness();
520 set_hard_stretch_limitation_factor(
float factor) {
522 nassertv(_error_type == ET_ok);
523 ptr()->setHardStretchLimitationFactor(factor);
529 float PhysxSoftBody::
530 get_hard_stretch_limitation_factor()
const {
532 nassertr(_error_type == ET_ok, 0.0f);
533 return ptr()->getHardStretchLimitationFactor();
535 #endif // NX_SDK_VERSION_NUMBER > 281