29 link(NxCloth *clothPtr) {
34 _ptr->userData =
this;
39 scene->_cloths.add(
this);
49 _ptr->userData =
nullptr;
50 _error_type = ET_released;
53 scene->_cloths.remove(
this);
64 nassertv(_error_type == ET_ok);
67 _ptr->getScene().releaseCloth(*_ptr);
84 _ptr->getWorldBounds(bounds);
88 _node->set_bounds(&bb);
98 nassertr(_error_type == ET_ok,
nullptr);
99 return (
PhysxScene *)_ptr->getScene().userData;
106 get_cloth_node()
const {
108 nassertr(_error_type == ET_ok,
nullptr);
116 create_cloth_node(
const char *name) {
118 nassertr(_error_type == ET_ok,
nullptr);
121 _node->allocate(
this);
133 nassertv(_error_type == ET_ok);
135 _name = name ? name :
"";
136 _ptr->setName(_name.c_str());
145 nassertr(_error_type == ET_ok,
"");
146 return _ptr->getName();
156 nassertv(_error_type == ET_ok);
157 nassertv(group >= 0 && group < 32);
158 _ptr->setGroup(group);
167 nassertr(_error_type == ET_ok, 0);
168 return _ptr->getGroup();
177 nassertv(_error_type == ET_ok);
178 _ptr->setThickness(thickness);
187 nassertr(_error_type == ET_ok, 0.0f);
188 return _ptr->getThickness();
197 nassertr(_error_type == ET_ok, 0.0f);
198 return _ptr->getDensity();
210 nassertr(_error_type == ET_ok, 0.0f);
211 return _ptr->getRelativeGridSpacing();
220 nassertr(_error_type == ET_ok, 0);
221 return _ptr->getNumberOfParticles();
230 nassertv(_error_type == ET_ok);
232 NxU32 flags = _ptr->getFlags();
241 _ptr->setFlags(flags);
250 nassertr(_error_type == ET_ok,
false);
252 return (_ptr->getFlags() & flag) ? true :
false;
261 nassertv(_error_type == ET_ok);
263 NxGroupsMask _mask = mask.get_mask();
264 _ptr->setGroupsMask(_mask);
275 nassertr(_error_type == ET_ok, mask);
277 NxGroupsMask _mask = _ptr->getGroupsMask();
278 mask.set_mask(_mask);
295 nassertr(_error_type == ET_ok,
false);
296 return _ptr->isSleeping();
309 nassertv(_error_type == ET_ok);
310 _ptr->wakeUp(wakeCounterValue);
323 nassertv(_error_type == ET_ok);
337 nassertv(_error_type == ET_ok);
338 _ptr->setSleepLinearVelocity(threshold);
349 nassertr(_error_type == ET_ok, 0.0f);
350 return _ptr->getSleepLinearVelocity();
359 nassertv(_error_type == ET_ok);
360 nassertv(!pos.is_nan());
375 nassertv(_error_type == ET_ok);
378 NxU32 attachmentFlags = 0;
379 _ptr->attachToShape(shape->ptr(), attachmentFlags);
391 nassertv(_error_type == ET_ok);
393 NxU32 attachmentFlags = 0;
394 _ptr->attachToCollidingShapes(attachmentFlags);
406 nassertv(_error_type == ET_ok);
409 _ptr->detachFromShape(shape->ptr());
418 nassertv(_error_type == ET_ok);
419 _ptr->freeVertex(vertexId);
428 nassertv(_error_type == ET_ok);
429 nassertv(!localPos.is_nan());
432 NxU32 attachmentFlags = 0;
433 _ptr->attachVertexToShape(vertexId, shape->ptr(),
444 nassertr(_error_type == ET_ok, VAS_none);
447 return (PhysxVertexAttachmentStatus) _ptr->getVertexAttachmentStatus(vertexId);
458 nassertr(_error_type == ET_ok,
nullptr);
461 NxShape *shapePtr = _ptr->getVertexAttachmentShape(vertexId);
475 nassertr(_error_type == ET_ok, LPoint3f::zero());
489 nassertv(_error_type == ET_ok);
490 nassertv_always(!acceleration.is_nan());
501 nassertv(_error_type == ET_ok);
502 nassertv_always(!acceleration.is_nan());
514 nassertr(_error_type == ET_ok, LVector3f::zero());
525 nassertr(_error_type == ET_ok, LVector3f::zero());
536 nassertv(_error_type == ET_ok);
547 add_force_at_pos(LPoint3f
const &pos,
float magnitude,
float radius, PhysxForceMode mode) {
549 nassertv(_error_type == ET_ok);
563 nassertv(_error_type == ET_ok);