57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
// 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::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)
|
|
;
|
|
} |