Files
XCEngine/engine/include/XCEngine/Scene/SceneRuntime.h

62 lines
1.5 KiB
C++

#pragma once
#include <XCEngine/Scene/Scene.h>
#include <XCEngine/UI/Types.h>
#include <memory>
namespace XCEngine {
namespace UI {
namespace Runtime {
class UISceneRuntimeContext;
class UISystem;
class UIScreenStackController;
struct UISystemFrameResult;
} // namespace Runtime
} // namespace UI
} // namespace XCEngine
namespace XCEngine {
namespace Components {
class SceneRuntime {
public:
SceneRuntime();
~SceneRuntime();
SceneRuntime(SceneRuntime&& other) noexcept;
SceneRuntime& operator=(SceneRuntime&& other) noexcept;
SceneRuntime(const SceneRuntime&) = delete;
SceneRuntime& operator=(const SceneRuntime&) = delete;
void Start(Scene* scene);
void Stop();
void ReplaceScene(Scene* scene);
void FixedUpdate(float fixedDeltaTime);
void Update(float deltaTime);
void LateUpdate(float deltaTime);
UI::Runtime::UISystem& GetUISystem();
UI::Runtime::UIScreenStackController& GetUIScreenStackController();
const UI::Runtime::UISystemFrameResult& GetLastUIFrame() const;
void SetUIViewportRect(const UI::UIRect& viewportRect);
void SetUIFocused(bool focused);
void QueueUIInputEvent(const UI::UIInputEvent& event);
void ClearQueuedUIInputEvents();
bool IsRunning() const { return m_running; }
Scene* GetScene() const { return m_scene; }
private:
std::unique_ptr<UI::Runtime::UISceneRuntimeContext> m_uiRuntime;
Scene* m_scene = nullptr;
bool m_running = false;
};
} // namespace Components
} // namespace XCEngine