1 #ifndef GfxTL__BBOXBUILDINFORMATIONTREESTRATEGY_HEADER__
2 #define GfxTL__BBOXBUILDINFORMATIONTREESTRATEGY_HEADER__
7 template <
class InheritedStrategyT>
10 typedef typename InheritedStrategyT::value_type
value_type;
12 class CellData :
public InheritedStrategyT::CellData
16 template <
class BaseT>
56 template <
class BuildInformationT>
60 BaseType::InitRootBuildInformation(bi);
67 typename BaseType::HandleType i = bi->Range().first;
68 BaseType::AssignAsAABoxMin(this->at(this->Dereference(i)), &bi->m_bbox[0]);
69 BaseType::AssignAsAABoxMax(this->at(this->Dereference(i)), &bi->m_bbox[1]);
70 for (++i; i != bi->Range().second; ++i)
72 BaseType::IncludeInAABox(this->at(this->Dereference(i)), bi->BBox());
76 template <
class BuildInformationT>
79 const BuildInformationT& parentInfo,
80 unsigned int childIdx,
81 BuildInformationT* bi)
83 BaseType::InitBuildInformation(parent, parentInfo, childIdx, bi);
90 if (!(bi->Range().second - bi->Range().first))
92 std::fill(bi->m_bbox[0],
93 bi->m_bbox[0] + BaseType::m_dim,
95 std::fill(bi->m_bbox[1],
96 bi->m_bbox[1] + BaseType::m_dim,
100 typename BaseType::HandleType i = bi->Range().first;
101 BaseType::AssignAsAABoxMin(this->at(this->Dereference(i)), &bi->m_bbox[0]);
102 BaseType::AssignAsAABoxMax(this->at(this->Dereference(i)), &bi->m_bbox[1]);
103 for (++i; i != bi->Range().second; ++i)
105 BaseType::IncludeInAABox(this->at(this->Dereference(i)), bi->BBox());