//============================================================================ // bvtree.cpp : Bounding-Volume tree base class implementation //============================================================================ #include "bvtree.hpp" int* BVtree::Objs; // THE GLOBAL MASTER LIST OF OBJECT IDs int BVtree::MINOBJSLIMIT=10; // MIN # OF OBJS ALLOWED TO BE IN OBB (>=0) #ifdef STATS_ON float BVtree::_TotalBVs_; // TOTAL # OF BVs (# TIMES CONSTRUCTOR IS CALLED) float BVtree::_NumBVtests_; // # OF BV OVERLAP TESTS PERFORMED #endif //---------------------------------------------------------------------------- // ALLOCATES GLOBAL OBJECT ID ARRAY, COPIES OBJECT LIST INTO IT, CONNECTS // TOP-LEVEL OBB TO THE HEAD OF THE ARRAY //---------------------------------------------------------------------------- void BVtree::CopyPtSetObjList(PtSetObjList* OL) { Objs = new int[OL->NumObjs]; // ALLOCATE GLOBAL OBJECT ID ARRAY for (int i=0; i < OL->NumObjs; i++) // COPY ALL OF THE OBJECTS INTO GLOBAL ARRAY Objs[i]=OL->Objs[i]; MyObjs = Objs; // "CONNECT" TOP-LEVEL OBB TO GLOBAL OBJECT ID ARRAY NumObjs = OL->NumObjs; // STORE # OF OBJECTS } //---------------------------------------------------------------------------- // TURNS THE GLOBAL MASTER LIST OF OBJECT PTRS TO OBJECT IDs (COPIES THEM OVER) //---------------------------------------------------------------------------- void BVtree::PtSetObjListToIDs() { for (int i=0; i < NumObjs; i++) // Objs[i] IS ACTUALLY A PTR TO AN OBJECT Objs[i] = ((PtSetObj*)(Objs[i]))->ID; // EXTRACT THE ID AND COPY OVER PTR }