30 auto elementQuery = std::make_shared<NeighborElementQuery<TDataType>>();
37 auto contactMapper = std::make_shared<ContactsToEdgeSet<DataType3f>>();
42 auto wireRender = std::make_shared<GLWireframeVisualModule>();
54 auto cdBV = std::make_shared<CollistionDetectionBoundingBox<TDataType>>();
59 auto merge = std::make_shared<ContactsUnion<TDataType>>();
60 elementQuery->outContacts()->connect(merge->inContactsA());
61 cdBV->outContacts()->connect(merge->inContactsB());
64 auto iterSolver = std::make_shared<PJSConstraintSolver<TDataType>>();
83 merge->outContacts()->connect(
iterSolver->inContacts());
87 auto driver = std::make_shared<SimpleVechicleDriver>();
121 for (
uint i = 0; i < mBindingPair.size(); i++)
128 for (
uint i = 0; i <
N; i++)
139 auto offset =
deTopo->calculateElementOffset();
144 for (
int i = 0; i < mBindingPair.size(); i++)
146 auto actor = mActors[i];
147 int idx =
actor->idx + offset.checkElementOffset(
actor->shapeType);
154 mBindingTagDevice.assign(
tags);
158 this->updateInstanceTransform();
Implementation of a rigid body system containing a variety of rigid bodies with different shapes.
std::shared_ptr< PdActor > addBox(const BoxInfo &box, const RigidBodyInfo &bodyDef, const Real density=Real(100))
HingeJoint & createHingeJoint(std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2)
void resetStates() override
FixedJoint & createFixedJoint(std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2)
std::shared_ptr< PdActor > addCapsule(const CapsuleInfo &capsule, const RigidBodyInfo &bodyDef, const Real density=Real(100))
void ApplyTransform(DArrayList< Transform3f > &instanceTransform, const DArray< Vec3f > &diff, const DArray< Vec3f > &translate, const DArray< Mat3f > &rotation, const DArray< Mat3f > &rotationInit, const DArray< Pair< uint, uint > > &binding, const DArray< int > &bindingtag)