28 #include "BulletSoftBody/btSoftRigidDynamicsWorld.h"
40 tgRigidAutoCompound::tgRigidAutoCompound(std::vector<tgRigidInfo*> rigids)
42 m_rigids.insert(m_rigids.end(), rigids.begin(), rigids.end());
45 tgRigidAutoCompound::tgRigidAutoCompound(std::deque<tgRigidInfo*> rigids) : m_rigids(rigids)
48 std::vector< tgRigidInfo* > tgRigidAutoCompound::execute() {
57 for(
int i=0; i < m_groups.size(); i++) {
60 setRigidInfoForGroup(m_compounded[i], m_groups[i]);
68 void tgRigidAutoCompound::setRigidBodyForGroup(btRigidBody* body, std::deque<tgRigidInfo*>& group) {
69 for(
int i = 0; i < group.size(); i++) {
70 group[i]->setRigidBody(body);
74 void tgRigidAutoCompound::setRigidInfoForGroup(
tgRigidInfo* rigidInfo, std::deque<tgRigidInfo*>& group) {
75 for(
int i = 0; i < group.size(); i++) {
76 group[i]->setRigidInfoGroup(rigidInfo);
80 void tgRigidAutoCompound::groupRigids()
82 std::deque<tgRigidInfo*> ungrouped = std::deque<tgRigidInfo*>(m_rigids);
84 while(ungrouped.size() > 0) {
90 std::deque<tgRigidInfo*> group = findGroup(elem, ungrouped);
93 m_groups.push_back(group);
99 std::deque<tgRigidInfo*> tgRigidAutoCompound::findGroup(
tgRigidInfo* rigid, std::deque<tgRigidInfo*>& ungrouped) {
101 std::deque<tgRigidInfo*> group;
104 group.push_back(rigid);
107 ungrouped.erase(std::remove(ungrouped.begin(), ungrouped.end(), rigid), ungrouped.end());
111 while(i < ungrouped.size()) {
114 std::deque<tgRigidInfo*> links = findGroup(other, ungrouped);
115 group.insert(group.end(), links.begin(), links.end());
125 void tgRigidAutoCompound::createCompounds() {
126 for(
int i=0; i < m_groups.size(); i++) {
127 std::deque<tgRigidInfo*>& group = m_groups[i];
128 if(group.size() == 1) {
130 m_compounded.push_back(group[0]);
133 m_compounded.push_back(compound);
138 tgRigidInfo* tgRigidAutoCompound::createCompound(std::deque<tgRigidInfo*> rigids) {
140 for(
int i = 0; i < rigids.size(); i++) {
146 bool tgRigidAutoCompound::rigidBelongsIn(
tgRigidInfo* rigid, std::deque<tgRigidInfo*> group) {
147 for(
int i = 0; i < group.size(); i++) {
Definition of class tgCompoundRigidInfo.
virtual bool sharesNodesWith(const tgRigidInfo &other) const =0
void addRigid(tgRigidInfo &rigid)
Contains the definition of class tgUtil and overloaded operator<<() free functions.
Definition of class tgRigidAutoCompound.