34 #include "LinearMath/btVector3.h"
35 #include "BulletDynamics/Dynamics/btRigidBody.h"
43 if(tagSearch.
matches(pair.getTags())) {
44 connectorInfo = createConnectorInfo(pair);
49 std::vector<tgConnectorInfo*> tgConnectorInfo::createConnectorInfos(
const tgPairs& pairs,
const tgTagSearch& tagSearch)
51 std::vector<tgConnectorInfo*> result;
52 for(
int i = 0; i < pairs.size(); i++) {
61 void tgConnectorInfo::chooseRigids(std::set<tgRigidInfo*> rigids)
66 if(getFromRigidInfo() == 0) {
67 tgRigidInfo* fromRigidInfo = chooseRigid(rigids, getFrom());
69 setFromRigidInfo(fromRigidInfo);
73 if(getToRigidInfo() == 0) {
74 tgRigidInfo* toRigidInfo = chooseRigid(rigids, getTo());
76 setToRigidInfo(toRigidInfo);
81 tgRigidInfo* tgConnectorInfo::chooseRigid(std::set<tgRigidInfo*> rigids,
const btVector3& v) {
83 std::set<tgRigidInfo*> candidateRigids = findRigidsContaining(rigids, v);
86 if (candidateRigids.size() == 1) {
88 chosenRigid = *(candidateRigids.begin());
91 chosenRigid = findClosestCenterOfMass(candidateRigids, v);
97 btRigidBody* tgConnectorInfo::getToRigidBody() {
102 btRigidBody* tgConnectorInfo::getFromRigidBody() {
111 tgRigidInfo* tgConnectorInfo::findClosestCenterOfMass(std::set<tgRigidInfo*> rigids,
const btVector3& v) {
112 if (rigids.size() == 0) {
115 std::set<tgRigidInfo*>::iterator it;
119 for(; it != rigids.end(); ++it) {
129 std::set<tgRigidInfo*> tgConnectorInfo::findRigidsContaining(std::set<tgRigidInfo*> rigids,
const btVector3& toFind) {
130 std::set<tgRigidInfo*> found;
131 std::set<tgRigidInfo*>::iterator it;
132 for(it=rigids.begin(); it != rigids.end(); ++it) {
133 if ((*it)->containsNode(toFind)) {
141 bool tgConnectorInfo::rigidFoundIn(std::set<tgRigidInfo*> rigids,
tgRigidInfo* rigid) {
143 std::set<tgRigidInfo*>::iterator it;
144 for(it = rigids.begin(); it != rigids.end(); ++it) {
Contains the definition of class tgTagSearch $Id$.
Definition of abstract class tgRigidInfo.
virtual tgRigidInfo * getRigidInfoGroup()
Definition of class tgPair.
virtual btRigidBody * getRigidBody()
Definition of class tgPairs.
Definition of class tgConnectorInfo.
const bool matches(const tgTags &tags) const
virtual btVector3 getCenterOfMass() const =0