Ember
Loading...
Searching...
No Matches
EmberForge::ui::SceneContainer Class Reference

Container for managing multiple scenes. More...

#include <SceneContainer.h>

Inheritance diagram for EmberForge::ui::SceneContainer:

Classes

struct  SceneInfo

Public Types

enum class  SceneState {
  Active , Inactive , Loading , Error ,
  Suspended
}
enum class  TransitionType { Immediate , Fade , Slide , Custom }
using SceneActivatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>
using SceneDeactivatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>
using SceneCreatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>
using SceneDestroyedCallback = std::function<void(IScene *scene, const wxString &sceneName)>

Public Member Functions

 SceneContainer (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL)
virtual ~SceneContainer ()
bool AddScene (std::unique_ptr< IScene > scene, const wxString &name, const wxString &description=wxEmptyString)
bool RemoveScene (const wxString &name)
void RemoveAllScenes ()
ISceneGetScene (const wxString &name) const
ISceneGetActiveScene () const
wxString GetActiveSceneName () const
std::vector< wxString > GetSceneNames () const
int GetSceneCount () const
void SetSceneDescription (const wxString &name, const wxString &description)
wxString GetSceneDescription (const wxString &name) const
void SetSceneState (const wxString &name, SceneState state)
SceneState GetSceneState (const wxString &name) const
void SetScenePersistent (const wxString &name, bool persistent)
bool IsScenePersistent (const wxString &name) const
bool SwitchToScene (const wxString &name, TransitionType transition=TransitionType::Immediate)
bool SwitchToScene (IScene *scene, TransitionType transition=TransitionType::Immediate)
bool HasScene (const wxString &name) const
void RefreshScene (const wxString &name)
void RefreshActiveScene ()
void RefreshAllScenes ()
bool CanSwitchScene (const wxString &name)
void SetSceneActivatedCallback (SceneActivatedCallback callback)
void SetSceneDeactivatedCallback (SceneDeactivatedCallback callback)
void SetSceneCreatedCallback (SceneCreatedCallback callback)
void SetSceneDestroyedCallback (SceneDestroyedCallback callback)
void SetSceneUserData (const wxString &name, void *userData)
void * GetSceneUserData (const wxString &name) const
void SetSceneSize (const wxString &name, const wxSize &size)
wxSize GetSceneSize (const wxString &name) const
void FitSceneToContainer (const wxString &name)
void FitActiveSceneToContainer ()
bool SerializeState (wxString &data) const
bool DeserializeState (const wxString &data)
void SuspendInactiveScenes ()
void ResumeAllScenes ()
void SetMaxInactiveScenes (int maxScenes)
int GetMaxInactiveScenes () const

Protected Member Functions

void OnSize (wxSizeEvent &event)
void OnPaint (wxPaintEvent &event)
void UpdateSceneLayout ()
void ShowScene (const wxString &name)
void HideScene (const wxString &name)
bool ValidateSceneName (const wxString &name) const
void NotifySceneActivated (const wxString &name)
void NotifySceneDeactivated (const wxString &name)
void NotifySceneCreated (const wxString &name)
void NotifySceneDestroyed (const wxString &name)
void PerformTransition (const wxString &fromScene, const wxString &toScene, TransitionType transition)
void FadeTransition (const wxString &fromScene, const wxString &toScene)
void SlideTransition (const wxString &fromScene, const wxString &toScene)

Private Attributes

std::unordered_map< wxString, SceneInfom_scenes
SceneActivatedCallback m_sceneActivatedCallback
SceneDeactivatedCallback m_sceneDeactivatedCallback
SceneCreatedCallback m_sceneCreatedCallback
SceneDestroyedCallback m_sceneDestroyedCallback
wxString m_activeSceneName
int m_maxInactiveScenes
bool m_enableTransitions
wxBoxSizer * m_sizer

Detailed Description

Container for managing multiple scenes.

SceneContainer manages a collection of IScene instances, providing:

  • Scene lifecycle management (create, activate, destroy)
  • Scene switching with optional transitions
  • State persistence for inactive scenes
  • Callback notifications for scene events

Only one scene can be active at a time. Inactive scenes can be suspended to reduce resource usage.

Usage

SceneContainer* container = new SceneContainer(parent);
// Add a scene
auto scene = std::make_unique<BehaviorTreeScene>(container);
container->AddScene(std::move(scene), "MyTree", "Description");
// Activate the scene
container->ActivateScene("MyTree");
// Set up callbacks
container->SetSceneActivatedCallback([](IScene* s, const wxString& name) {
// Handle activation
});
SceneContainer(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL)
void SetSceneActivatedCallback(SceneActivatedCallback callback)
bool AddScene(std::unique_ptr< IScene > scene, const wxString &name, const wxString &description=wxEmptyString)
Interface for scene-based UI components (e.g., views or screens).
Definition IScene.h:7

Definition at line 44 of file SceneContainer.h.

Member Typedef Documentation

◆ SceneActivatedCallback

using EmberForge::ui::SceneContainer::SceneActivatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>

Definition at line 47 of file SceneContainer.h.

◆ SceneCreatedCallback

using EmberForge::ui::SceneContainer::SceneCreatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>

Definition at line 49 of file SceneContainer.h.

◆ SceneDeactivatedCallback

using EmberForge::ui::SceneContainer::SceneDeactivatedCallback = std::function<void(IScene *scene, const wxString &sceneName)>

Definition at line 48 of file SceneContainer.h.

◆ SceneDestroyedCallback

using EmberForge::ui::SceneContainer::SceneDestroyedCallback = std::function<void(IScene *scene, const wxString &sceneName)>

Definition at line 50 of file SceneContainer.h.

Member Enumeration Documentation

◆ SceneState

Enumerator
Active 
Inactive 
Loading 
Error 
Suspended 

Definition at line 53 of file SceneContainer.h.

◆ TransitionType

Enumerator
Immediate 
Fade 
Slide 
Custom 

Definition at line 56 of file SceneContainer.h.

Constructor & Destructor Documentation

◆ SceneContainer()

EmberForge::ui::SceneContainer::SceneContainer ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxTAB_TRAVERSAL )

◆ ~SceneContainer()

EmberForge::ui::SceneContainer::~SceneContainer ( )
virtual

Definition at line 19 of file SceneContainer.cpp.

Member Function Documentation

◆ AddScene()

bool EmberForge::ui::SceneContainer::AddScene ( std::unique_ptr< IScene > scene,
const wxString & name,
const wxString & description = wxEmptyString )

Definition at line 21 of file SceneContainer.cpp.

◆ CanSwitchScene()

bool EmberForge::ui::SceneContainer::CanSwitchScene ( const wxString & name)

Definition at line 236 of file SceneContainer.cpp.

◆ DeserializeState()

bool EmberForge::ui::SceneContainer::DeserializeState ( const wxString & data)

Definition at line 314 of file SceneContainer.cpp.

◆ FadeTransition()

void EmberForge::ui::SceneContainer::FadeTransition ( const wxString & fromScene,
const wxString & toScene )
protected

Definition at line 436 of file SceneContainer.cpp.

◆ FitActiveSceneToContainer()

void EmberForge::ui::SceneContainer::FitActiveSceneToContainer ( )

Definition at line 302 of file SceneContainer.cpp.

◆ FitSceneToContainer()

void EmberForge::ui::SceneContainer::FitSceneToContainer ( const wxString & name)

Definition at line 292 of file SceneContainer.cpp.

◆ GetActiveScene()

IScene * EmberForge::ui::SceneContainer::GetActiveScene ( ) const

Definition at line 101 of file SceneContainer.cpp.

◆ GetActiveSceneName()

wxString EmberForge::ui::SceneContainer::GetActiveSceneName ( ) const

Definition at line 108 of file SceneContainer.cpp.

◆ GetMaxInactiveScenes()

int EmberForge::ui::SceneContainer::GetMaxInactiveScenes ( ) const

Definition at line 339 of file SceneContainer.cpp.

◆ GetScene()

IScene * EmberForge::ui::SceneContainer::GetScene ( const wxString & name) const

Definition at line 93 of file SceneContainer.cpp.

◆ GetSceneCount()

int EmberForge::ui::SceneContainer::GetSceneCount ( ) const

Definition at line 118 of file SceneContainer.cpp.

◆ GetSceneDescription()

wxString EmberForge::ui::SceneContainer::GetSceneDescription ( const wxString & name) const

Definition at line 127 of file SceneContainer.cpp.

◆ GetSceneNames()

std::vector< wxString > EmberForge::ui::SceneContainer::GetSceneNames ( ) const

Definition at line 110 of file SceneContainer.cpp.

◆ GetSceneSize()

wxSize EmberForge::ui::SceneContainer::GetSceneSize ( const wxString & name) const

Definition at line 281 of file SceneContainer.cpp.

◆ GetSceneState()

SceneContainer::SceneState EmberForge::ui::SceneContainer::GetSceneState ( const wxString & name) const

Definition at line 142 of file SceneContainer.cpp.

◆ GetSceneUserData()

void * EmberForge::ui::SceneContainer::GetSceneUserData ( const wxString & name) const

Definition at line 263 of file SceneContainer.cpp.

◆ HasScene()

bool EmberForge::ui::SceneContainer::HasScene ( const wxString & name) const

Definition at line 213 of file SceneContainer.cpp.

◆ HideScene()

void EmberForge::ui::SceneContainer::HideScene ( const wxString & name)
protected

Definition at line 368 of file SceneContainer.cpp.

◆ IsScenePersistent()

bool EmberForge::ui::SceneContainer::IsScenePersistent ( const wxString & name) const

Definition at line 157 of file SceneContainer.cpp.

◆ NotifySceneActivated()

void EmberForge::ui::SceneContainer::NotifySceneActivated ( const wxString & name)
protected

Definition at line 382 of file SceneContainer.cpp.

◆ NotifySceneCreated()

void EmberForge::ui::SceneContainer::NotifySceneCreated ( const wxString & name)
protected

Definition at line 400 of file SceneContainer.cpp.

◆ NotifySceneDeactivated()

void EmberForge::ui::SceneContainer::NotifySceneDeactivated ( const wxString & name)
protected

Definition at line 391 of file SceneContainer.cpp.

◆ NotifySceneDestroyed()

void EmberForge::ui::SceneContainer::NotifySceneDestroyed ( const wxString & name)
protected

Definition at line 409 of file SceneContainer.cpp.

◆ OnPaint()

void EmberForge::ui::SceneContainer::OnPaint ( wxPaintEvent & event)
protected

Definition at line 347 of file SceneContainer.cpp.

◆ OnSize()

void EmberForge::ui::SceneContainer::OnSize ( wxSizeEvent & event)
protected

Definition at line 342 of file SceneContainer.cpp.

◆ PerformTransition()

void EmberForge::ui::SceneContainer::PerformTransition ( const wxString & fromScene,
const wxString & toScene,
TransitionType transition )
protected

Definition at line 418 of file SceneContainer.cpp.

◆ RefreshActiveScene()

void EmberForge::ui::SceneContainer::RefreshActiveScene ( )

Definition at line 222 of file SceneContainer.cpp.

◆ RefreshAllScenes()

void EmberForge::ui::SceneContainer::RefreshAllScenes ( )

Definition at line 228 of file SceneContainer.cpp.

◆ RefreshScene()

void EmberForge::ui::SceneContainer::RefreshScene ( const wxString & name)

Definition at line 215 of file SceneContainer.cpp.

◆ RemoveAllScenes()

void EmberForge::ui::SceneContainer::RemoveAllScenes ( )

Definition at line 80 of file SceneContainer.cpp.

◆ RemoveScene()

bool EmberForge::ui::SceneContainer::RemoveScene ( const wxString & name)

Definition at line 49 of file SceneContainer.cpp.

◆ ResumeAllScenes()

void EmberForge::ui::SceneContainer::ResumeAllScenes ( )

Definition at line 328 of file SceneContainer.cpp.

◆ SerializeState()

bool EmberForge::ui::SceneContainer::SerializeState ( wxString & data) const

Definition at line 308 of file SceneContainer.cpp.

◆ SetMaxInactiveScenes()

void EmberForge::ui::SceneContainer::SetMaxInactiveScenes ( int maxScenes)

Definition at line 337 of file SceneContainer.cpp.

◆ SetSceneActivatedCallback()

void EmberForge::ui::SceneContainer::SetSceneActivatedCallback ( SceneActivatedCallback callback)

Definition at line 246 of file SceneContainer.cpp.

◆ SetSceneCreatedCallback()

void EmberForge::ui::SceneContainer::SetSceneCreatedCallback ( SceneCreatedCallback callback)

Definition at line 252 of file SceneContainer.cpp.

◆ SetSceneDeactivatedCallback()

void EmberForge::ui::SceneContainer::SetSceneDeactivatedCallback ( SceneDeactivatedCallback callback)

Definition at line 248 of file SceneContainer.cpp.

◆ SetSceneDescription()

void EmberForge::ui::SceneContainer::SetSceneDescription ( const wxString & name,
const wxString & description )

Definition at line 120 of file SceneContainer.cpp.

◆ SetSceneDestroyedCallback()

void EmberForge::ui::SceneContainer::SetSceneDestroyedCallback ( SceneDestroyedCallback callback)

Definition at line 254 of file SceneContainer.cpp.

◆ SetScenePersistent()

void EmberForge::ui::SceneContainer::SetScenePersistent ( const wxString & name,
bool persistent )

Definition at line 150 of file SceneContainer.cpp.

◆ SetSceneSize()

void EmberForge::ui::SceneContainer::SetSceneSize ( const wxString & name,
const wxSize & size )

Definition at line 271 of file SceneContainer.cpp.

◆ SetSceneState()

void EmberForge::ui::SceneContainer::SetSceneState ( const wxString & name,
SceneState state )

Definition at line 135 of file SceneContainer.cpp.

◆ SetSceneUserData()

void EmberForge::ui::SceneContainer::SetSceneUserData ( const wxString & name,
void * userData )

Definition at line 256 of file SceneContainer.cpp.

◆ ShowScene()

void EmberForge::ui::SceneContainer::ShowScene ( const wxString & name)
protected

Definition at line 358 of file SceneContainer.cpp.

◆ SlideTransition()

void EmberForge::ui::SceneContainer::SlideTransition ( const wxString & fromScene,
const wxString & toScene )
protected

Definition at line 441 of file SceneContainer.cpp.

◆ SuspendInactiveScenes()

void EmberForge::ui::SceneContainer::SuspendInactiveScenes ( )

Definition at line 319 of file SceneContainer.cpp.

◆ SwitchToScene() [1/2]

bool EmberForge::ui::SceneContainer::SwitchToScene ( const wxString & name,
TransitionType transition = TransitionType::Immediate )

Definition at line 165 of file SceneContainer.cpp.

◆ SwitchToScene() [2/2]

bool EmberForge::ui::SceneContainer::SwitchToScene ( IScene * scene,
TransitionType transition = TransitionType::Immediate )

Definition at line 204 of file SceneContainer.cpp.

◆ UpdateSceneLayout()

void EmberForge::ui::SceneContainer::UpdateSceneLayout ( )
protected

Definition at line 353 of file SceneContainer.cpp.

◆ ValidateSceneName()

bool EmberForge::ui::SceneContainer::ValidateSceneName ( const wxString & name) const
protected

Definition at line 378 of file SceneContainer.cpp.

Member Data Documentation

◆ m_activeSceneName

wxString EmberForge::ui::SceneContainer::m_activeSceneName
private

Definition at line 163 of file SceneContainer.h.

◆ m_enableTransitions

bool EmberForge::ui::SceneContainer::m_enableTransitions
private

Definition at line 165 of file SceneContainer.h.

◆ m_maxInactiveScenes

int EmberForge::ui::SceneContainer::m_maxInactiveScenes
private

Definition at line 164 of file SceneContainer.h.

◆ m_sceneActivatedCallback

SceneActivatedCallback EmberForge::ui::SceneContainer::m_sceneActivatedCallback
private

Definition at line 157 of file SceneContainer.h.

◆ m_sceneCreatedCallback

SceneCreatedCallback EmberForge::ui::SceneContainer::m_sceneCreatedCallback
private

Definition at line 159 of file SceneContainer.h.

◆ m_sceneDeactivatedCallback

SceneDeactivatedCallback EmberForge::ui::SceneContainer::m_sceneDeactivatedCallback
private

Definition at line 158 of file SceneContainer.h.

◆ m_sceneDestroyedCallback

SceneDestroyedCallback EmberForge::ui::SceneContainer::m_sceneDestroyedCallback
private

Definition at line 160 of file SceneContainer.h.

◆ m_scenes

std::unordered_map<wxString, SceneInfo> EmberForge::ui::SceneContainer::m_scenes
private

Definition at line 154 of file SceneContainer.h.

◆ m_sizer

wxBoxSizer* EmberForge::ui::SceneContainer::m_sizer
private

Definition at line 168 of file SceneContainer.h.


The documentation for this class was generated from the following files: