void RenderDataManager::UpdateRect(int sx, int sy,int w,int h) { for (size_t a = 0; a < qrd.size(); a++) { QuadRenderData* rd = qrd[a]; TQuad* q = rd->GetQuad(); // rect vs rect collision: if (q->sqPos.x + q->width >= sx && q->sqPos.y + q->width >= sy && q->sqPos.x <= sx + w && q->sqPos.y <= sy + h) { assert(q->renderData==qrd[a]); Free(q->renderData); } } }
// delete all renderdata that is not used this frame and has maxlod < VBufMinDetail void RenderDataManager::FreeUnused() { for (int a = 0; a < qrd.size(); a++) { QuadRenderData* rd = qrd[a]; if (rd->used) { rd->used = false; continue; } if (rd->GetQuad()->maxLodValue < VBufMinDetail) { Free(rd); a--; } } }