// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "scene/SceneItemComponent.hpp" #include "display/RenderTarget.hpp" namespace Dawn { enum UIDrawType { UI_DRAW_TYPE_WORLD_ABSOLUTE, UI_DRAW_TYPE_WORLD_CAMERA_RELATIVE, UI_DRAW_TYPE_CAMERA_OVERLAY }; class UIComponent; class UICanvas : public SceneItemComponent { protected: void onBackBufferResize( RenderTarget &target, float_t width, float_t height ); public: static std::shared_ptr createCanvas( std::shared_ptr scene ); // std::vector> children; UIDrawType drawType = UI_DRAW_TYPE_WORLD_CAMERA_RELATIVE; UICanvas(SceneItem &item); template std::shared_ptr addElement() { auto item = std::make_shared(*this); this->children.push_back(item); return item; } float_t getWidth(); float_t getHeight(); void onStart() override; ~UICanvas(); }; }