class EE::Window::Engine

Overview

The window management class. Here the engine starts working. (Singleton Class). More…

#include <engine.hpp>

class Engine {
public:
    // classes

    class WindowContext;

    // construction

    ~Engine();

    // methods

    EE::Window::Window* createWindow(WindowSettings Settings, ContextSettings Context = ContextSettings());
    void destroyWindow(EE::Window::Window* window);
    EE::Window::Window* getCurrentWindow() const;
    void setCurrentWindow(EE::Window::Window* window);
    WindowContext makeWindowCurrent(EE::Window::Window* window);
    Uint32 getWindowCount() const;
    bool isRunning() const;
    bool existsWindow(EE::Window::Window* window);
    void forEachWindow(std::function<void(EE::Window::Window*)> cb);
    EE::Window::Window* getWindowID(const Uint32& winID);
    void updateInput();
    WindowSettings createWindowSettings(std::string iniPath, std::string iniKeyName = "EEPP");
    WindowSettings createWindowSettings(IniFile* ini, std::string iniKeyName = "EEPP");
    ContextSettings createContextSettings(std::string iniPath, std::string iniKeyName = "EEPP");
    ContextSettings createContextSettings(IniFile* ini, std::string iniKeyName = "EEPP", bool vsyncEnabledByDefault = true);
    void enableSharedGLContext();
    void disableSharedGLContext();
    bool isSharedGLContextEnabled();
    bool isThreaded();
    PlatformHelper* getPlatformHelper();
    DisplayManager* getDisplayManager();
    std::shared_ptr<Graphics::ResourceCatalog> getGlobalResourceCatalog() const;
    std::shared_ptr<Graphics::ResourceScope> getDefaultResourceScope() const;
    bool openURI(const std::string& url);
    static bool isEngineRunning();
    static UintPtr getMainThreadId();
    static bool isMainThread();
};

Detailed Documentation

The window management class. Here the engine starts working. (Singleton Class).

Methods

EE::Window::Window* createWindow(WindowSettings Settings, ContextSettings Context = ContextSettings())

Creates a new window.

void destroyWindow(EE::Window::Window* window)

Destroy the window instance, and set as current other window running ( if any ). This function is only useful for multi-window environment. Avoid using it with one window context.

EE::Window::Window* getCurrentWindow() const

Returns:

The current Window context.

void setCurrentWindow(EE::Window::Window* window)

Set the window as the current.

WindowContext makeWindowCurrent(EE::Window::Window* window)

Makes window and its graphics context current for the returned scope.

Uint32 getWindowCount() const

Returns:

The number of windows created.

bool isRunning() const

Returns:

If any window is created.

bool existsWindow(EE::Window::Window* window)

Returns:

If the window instance is inside the window list.

void updateInput()

Begins an input frame for every window, pumps the backend event queue once, routes events by window ID, and then completes every input frame.

WindowSettings createWindowSettings(std::string iniPath, std::string iniKeyName = "EEPP")

Constructs WindowSettings from an ini file It will search for the following properties: Width Window width Height Window height BitColor 32,16,8 Windowed bool Resizeable bool Backend SDL2 WinIcon The path to the window icon WinTitle The window default title

Parameters:

iniPath

The ini file path

iniKeyName

The ini key name to search the properties

WindowSettings createWindowSettings(IniFile* ini, std::string iniKeyName = "EEPP")

Constructs WindowSettings from an ini file instance It will search for the following properties: Width Window width Height Window height BitColor 32,16,8 Windowed bool Resizeable bool Backend SDL2 WinIcon The path to the window icon WinTitle The window default title

Parameters:

ini

The ini file instance

iniKeyName

The ini key name to search the properties

ContextSettings createContextSettings(std::string iniPath, std::string iniKeyName = "EEPP")

Constructs ContextSettings from an ini file

It will search for the following properties: VSync bool GLVersion Selects the default renderer: 2 for OpenGL 2, 3 for OpenGL 3, 4 for OpenGL ES 2 DoubleBuffering bool DepthBufferSize int StencilBufferSize int

@param iniPath The ini file path
@param iniKeyName The ini key name to search the properties
ContextSettings createContextSettings(IniFile* ini, std::string iniKeyName = "EEPP", bool vsyncEnabledByDefault = true)

Constructs ContextSettings from an ini file instance

It will search for the following properties: VSync bool GLVersion Selects the default renderer: 2 for OpenGL 2, 3 for OpenGL 3, 4 for OpenGL ES 2 DoubleBuffering bool DepthBufferSize int StencilBufferSize int

@param ini The ini file instance
@param iniKeyName The ini key name to search the properties
void enableSharedGLContext()

Enabling Shared GL Context allows asynchronous OpenGL resource loading ( only if is supported by the backend and the OS, SDL 2 backend is the only one supported ). * If the TextureLoader is threaded, will upload the texture in another thread to the GPU. So, it will not block the main rendering thread. * Shared GL Context is disabled by default.

void disableSharedGLContext()

Disable the Shared GL Context

See also:

enableSharedGLContext()

bool isSharedGLContextEnabled()

Returns:

If the Shared GL Context is enabled and ready to use.

bool isThreaded()

Returns:

Indicates if the current running platform/OS supports threads (always true except for emscripten)

PlatformHelper* getPlatformHelper()

Returns:

The instance of platform class that provides some helpers for some platforms

DisplayManager* getDisplayManager()

Returns:

The display manager. Holds the physical displays information.

std::shared_ptr<Graphics::ResourceCatalog> getGlobalResourceCatalog() const

Returns:

The catalog used for resources intentionally exported application-wide.

std::shared_ptr<Graphics::ResourceScope> getDefaultResourceScope() const

Returns:

The default Graphics scope. It explicitly imports the global resource catalog.

bool openURI(const std::string& url)

Open a URL in a separate, system-provided application.

Returns:

true if success

static UintPtr getMainThreadId()

Returns:

The id of the thread that was used to initialize the OpenGL Context.

static bool isMainThread()

Returns:

True if the current thread is the main thread.