Test::TestGroup* Test::TestGroup::getLastTest() { TestGroup* current = getLastLeaf(); if (!current || current->isTest()) return current; return getPreviousTest(current); }
void Group::triggerHitListeners() { typedef GroupIteratorType GIType; for(GIType iter = getChildGroups(); iter != getLastGroup(); ++iter) { (**iter).triggerHitListeners(); } typedef LeafIteratorType LIType; for(LIType iter = getChildLeaves(); iter != getLastLeaf(); ++iter) { (**iter).triggerHitListeners(); } Node::triggerHitListeners(); }
void Group::clearChildren() { GroupIteratorType groupIter; GroupIteratorType groupEnd = getLastGroup(); for(groupIter = getChildGroups(); groupIter != groupEnd; ++groupIter) { Node& node = **groupIter; node._isOwned = false; } LeafIteratorType leafIter; LeafIteratorType leafEnd = getLastLeaf(); for(leafIter = getChildLeaves(); leafIter != leafEnd; ++leafIter) { Node& node = **leafIter; node._isOwned = false; } _childGroups.clear(); _childLeaves.clear(); }
void Group::compile(std::set <Shape*>& shapes) { GroupIteratorType groupIter; GroupIteratorType groupEnd = getLastGroup(); for(groupIter = getChildGroups(); groupIter != groupEnd; ++groupIter) { (*groupIter)->compile(shapes); } Leaf* leaf = 0; Shape* shape = 0; LeafIteratorType leafIter; LeafIteratorType leafEnd = getLastLeaf(); for(leafIter = getChildLeaves(); leafIter != leafEnd; ++leafIter) { leaf = *leafIter; if (typeid(*leaf) == typeid(Shape)) { shape = dynamic_cast <Shape*> (leaf); shapes.insert(shape); } } }
void Group::update() { _globalTransform[0][0] = _multiplier[0][0] * _localTransform[0][0]; _globalTransform[0][0] += _multiplier[0][1] * _localTransform[1][0]; _globalTransform[0][0] += _multiplier[0][2] * _localTransform[2][0]; _globalTransform[0][0] += _multiplier[0][3] * _localTransform[3][0]; _globalTransform[0][1] = _multiplier[0][0] * _localTransform[0][1]; _globalTransform[0][1] += _multiplier[0][1] * _localTransform[1][1]; _globalTransform[0][1] += _multiplier[0][2] * _localTransform[2][1]; _globalTransform[0][1] += _multiplier[0][3] * _localTransform[3][1]; _globalTransform[0][2] = _multiplier[0][0] * _localTransform[0][2]; _globalTransform[0][2] += _multiplier[0][1] * _localTransform[1][2]; _globalTransform[0][2] += _multiplier[0][2] * _localTransform[2][2]; _globalTransform[0][2] += _multiplier[0][3] * _localTransform[3][2]; _globalTransform[0][3] = _multiplier[0][0] * _localTransform[0][3]; _globalTransform[0][3] += _multiplier[0][1] * _localTransform[1][3]; _globalTransform[0][3] += _multiplier[0][2] * _localTransform[2][3]; _globalTransform[0][3] += _multiplier[0][3] * _localTransform[3][3]; _globalTransform[1][0] = _multiplier[1][0] * _localTransform[0][0]; _globalTransform[1][0] += _multiplier[1][1] * _localTransform[1][0]; _globalTransform[1][0] += _multiplier[1][2] * _localTransform[2][0]; _globalTransform[1][0] += _multiplier[1][3] * _localTransform[3][0]; _globalTransform[1][1] = _multiplier[1][0] * _localTransform[0][1]; _globalTransform[1][1] += _multiplier[1][1] * _localTransform[1][1]; _globalTransform[1][1] += _multiplier[1][2] * _localTransform[2][1]; _globalTransform[1][1] += _multiplier[1][3] * _localTransform[3][1]; _globalTransform[1][2] = _multiplier[1][0] * _localTransform[0][2]; _globalTransform[1][2] += _multiplier[1][1] * _localTransform[1][2]; _globalTransform[1][2] += _multiplier[1][2] * _localTransform[2][2]; _globalTransform[1][2] += _multiplier[1][3] * _localTransform[3][2]; _globalTransform[1][3] = _multiplier[1][0] * _localTransform[0][3]; _globalTransform[1][3] += _multiplier[1][1] * _localTransform[1][3]; _globalTransform[1][3] += _multiplier[1][2] * _localTransform[2][3]; _globalTransform[1][3] += _multiplier[1][3] * _localTransform[3][3]; _globalTransform[2][0] = _multiplier[2][0] * _localTransform[0][0]; _globalTransform[2][0] += _multiplier[2][1] * _localTransform[1][0]; _globalTransform[2][0] += _multiplier[2][2] * _localTransform[2][0]; _globalTransform[2][0] += _multiplier[2][3] * _localTransform[3][0]; _globalTransform[2][1] = _multiplier[2][0] * _localTransform[0][1]; _globalTransform[2][1] += _multiplier[2][1] * _localTransform[1][1]; _globalTransform[2][1] += _multiplier[2][2] * _localTransform[2][1]; _globalTransform[2][1] += _multiplier[2][3] * _localTransform[3][1]; _globalTransform[2][2] = _multiplier[2][0] * _localTransform[0][2]; _globalTransform[2][2] += _multiplier[2][1] * _localTransform[1][2]; _globalTransform[2][2] += _multiplier[2][2] * _localTransform[2][2]; _globalTransform[2][2] += _multiplier[2][3] * _localTransform[3][2]; _globalTransform[2][3] = _multiplier[2][0] * _localTransform[0][3]; _globalTransform[2][3] += _multiplier[2][1] * _localTransform[1][3]; _globalTransform[2][3] += _multiplier[2][2] * _localTransform[2][3]; _globalTransform[2][3] += _multiplier[2][3] * _localTransform[3][3]; _globalTransform[3][0] = _multiplier[3][0] * _localTransform[0][0]; _globalTransform[3][0] += _multiplier[3][1] * _localTransform[1][0]; _globalTransform[3][0] += _multiplier[3][2] * _localTransform[2][0]; _globalTransform[3][0] += _multiplier[3][3] * _localTransform[3][0]; _globalTransform[3][1] = _multiplier[3][0] * _localTransform[0][1]; _globalTransform[3][1] += _multiplier[3][1] * _localTransform[1][1]; _globalTransform[3][1] += _multiplier[3][2] * _localTransform[2][1]; _globalTransform[3][1] += _multiplier[3][3] * _localTransform[3][1]; _globalTransform[3][2] = _multiplier[3][0] * _localTransform[0][2]; _globalTransform[3][2] += _multiplier[3][1] * _localTransform[1][2]; _globalTransform[3][2] += _multiplier[3][2] * _localTransform[2][2]; _globalTransform[3][2] += _multiplier[3][3] * _localTransform[3][2]; _globalTransform[3][3] = _multiplier[3][0] * _localTransform[0][3]; _globalTransform[3][3] += _multiplier[3][1] * _localTransform[1][3]; _globalTransform[3][3] += _multiplier[3][2] * _localTransform[2][3]; _globalTransform[3][3] += _multiplier[3][3] * _localTransform[3][3]; typedef GroupIteratorType GIType; for(GIType iter = getChildGroups(); iter != getLastGroup(); ++iter) { (*iter)->update(_globalTransform); } typedef LeafIteratorType LIType; for(LIType iter = getChildLeaves(); iter != getLastLeaf(); ++iter) { (*iter)->update(_globalTransform); } }