Files
IAEngine/Engine/Src/Inc/IAEngine/Scene.hpp
Isuru Samarathunga b10aacaee7 Text Rendering
2025-10-20 23:39:54 +05:30

82 lines
2.0 KiB
C++

// IAEngine: 2D Game Engine by IA
// Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#pragma once
#include <IAEngine/Components/CameraComponent.hpp>
#include <IAEngine/Nodes/INode.hpp>
namespace ia::iae
{
class Scene
{
public:
Scene();
STATIC RefPtr<Scene> Create();
public:
VOID AddNode(IN RefPtr<INode> node);
INode *GetNode(IN CONST String &name);
VOID RemoveNode(IN CONST String &name);
public:
String &UIMarkup()
{
return m_uiMarkup;
}
String &UIMarkupStyles()
{
return m_uiMarkupStyles;
}
IVec2 &Extent()
{
return m_extent;
}
IVec2 &Viewport()
{
return m_viewport;
}
Color &BackgroundColor()
{
return m_backgroundColor;
}
private:
String m_uiMarkup{};
String m_uiMarkupStyles{};
IVec2 m_extent{100, 100};
IVec2 m_viewport{100, 100};
CameraComponent *m_camera{};
Color m_backgroundColor{0, 0, 0, 255};
Map<String, RefPtr<INode>> m_nodes;
public:
VIRTUAL VOID Draw();
VIRTUAL VOID DebugDraw();
VIRTUAL VOID FixedUpdate();
VIRTUAL VOID Update();
private:
VOID OnActivate();
friend class WorldManager;
};
} // namespace ia::iae