// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #include "UICanvas.hpp" #include "scene/Scene.hpp" #include "ui/UIComponent.hpp" #include "game/DawnGame.hpp" using namespace Dawn; UICanvas * UICanvas::create(Scene *scene) { auto item = scene->createSceneItem(); return item->addComponent(); } UICanvas::UICanvas(SceneItem *item) : SceneItemComponent(item) { } float_t UICanvas::getWidth() { return this->getGame()->renderManager.getBackBuffer()->getWidth(); } float_t UICanvas::getHeight() { return this->getGame()->renderManager.getBackBuffer()->getHeight(); } void UICanvas::onStart() { this->getGame()->renderManager.getBackBuffer()->eventRenderTargetResized .addListener(this, &UICanvas::onBackBufferResize) ; } void UICanvas::onBackBufferResize( RenderTarget *target, float_t width, float_t height ) { auto it = this->children.begin(); while(it != this->children.end()) { (*it)->updatePositions(); ++it; } } UICanvas::~UICanvas() { auto it = this->children.begin(); while(it != this->children.end()) { delete *it; ++it; } this->getGame()->renderManager.getBackBuffer()->eventRenderTargetResized .removeListener(this, &UICanvas::onBackBufferResize) ; }