20 size_t drawableCount = 0;
21 size_t drawableCapacity = 0;
25 void resizeDrawables(
size_t newCapacity) {
26 auto ** newDrawables =
new Drawable*[newCapacity];
29 std::copy(drawables, drawables + drawableCount, newDrawables);
33 drawables = newDrawables;
34 drawableCapacity = newCapacity;
38 Scene(uint16_t x_size, uint16_t y_size) {
39 this->x_size = x_size;
40 this->y_size = y_size;
43 void addDrawable(
Drawable* drawable) {
44 if (drawableCount == drawableCapacity) {
45 resizeDrawables(drawableCapacity == 0 ? 1 : drawableCapacity * 2);
47 drawables[drawableCount++] = drawable;
50 void removeDrawable(
Drawable* drawable) {
51 for (
size_t i = 0; i < drawableCount; ++i) {
52 if (drawables[i] == drawable) {
54 for (
size_t j = i; j < drawableCount - 1; ++j) {
55 drawables[j] = drawables[j + 1];
63 void forEachDrawable(
void (* func)(
Drawable*)) {
64 for (
size_t i = 0; i < drawableCount; ++i) {