m-byte918 / QuadTree-Cpp

Simple QuadTree written in C++ with SFML demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QuadTree-Cpp

Simple QuadTree written in C++ with SFML demo

SFML Demo

Constructing a quadtree

QuadTree *quadTree = new QuadTree({ x, y, width, height }, 8, 4);

Inserting objects

// Inserts an object into the quadtree
int data = 5;
Collidable obj = Collidable({ x, y, width, height }, data);
quadTree->insert(&obj);

Removing objects

// Removes an object from the quadtree
quadTree->remove(&obj);

Updating objects

// Updates an object within the quadtree
// Useful for objects that move
obj.bound.x = 123.456;
obj.bound.y = 654.321;
quadTree->update(&obj);

Searching for objects within boundary

// Getting objects within a particular boundary
Rect box = { x, y, width, height };
std::vector<Collidable*> foundObjects = quadTree->getObjectsInBound(box);

Getting objects & children count

std::cout << quadTree->totalChildren() << "\n";
std::cout << quadTree->totalObjects() << "\n";

Clearing a quadtree

quadTree->clear();

Getting data from a Collidable

int stuff = 123;
Collidable obj = Collidable({ 0, 0, 10, 20}, stuff);

std::cout << std::any_cast<int>(obj.data) << '\n';

About

Simple QuadTree written in C++ with SFML demo


Languages

Language:C++ 100.0%