void Gource::interactDirs() { // update quad tree Bounds2D quadtreebounds = dir_bounds; quadtreebounds.min -= vec2f(1.0f, 1.0f); quadtreebounds.max += vec2f(1.0f, 1.0f); update_dir_tree_time = SDL_GetTicks(); if(dirNodeTree !=0) delete dirNodeTree; int max_depth = 1; //dont use deep quad tree initially when all the nodes are in one place if(dir_bounds.area() > 10000.0) { max_depth = 6; } dirNodeTree = new QuadTree(quadtreebounds, max_depth, 1); //apply forces with other directories for(std::map<std::string,RDirNode*>::iterator it = gGourceDirMap.begin(); it!=gGourceDirMap.end(); it++) { RDirNode* node = it->second; if(!node->empty()) { node->updateQuadItemBounds(); dirNodeTree->addItem(node); } } update_dir_tree_time = SDL_GetTicks() - update_dir_tree_time; root->applyForces(*dirNodeTree); }