File ImguiManager.h

namespace Gsage
class ImguiDockspaceView : public Gsage::ImguiViewCollection
#include <ImguiManager.h>

Renders window collection into workspace

Public Functions

ImguiDockspaceView(ImguiManager *manager, const std::string &name)
void render(int x, int y, int width, int height)

Render views

Parameters
  • x: dockspace x

  • y: dockspace y

  • width: dockspace width

  • height: dockspace height

sol::table getState()

Get dockspace state

void setState(sol::table t)

Set dockspace state

Parameters
  • t: sol::table to read state data from

bool activateDock(const std::string &name)

Activate dock

Return

true if dock was found

Parameters

virtual bool addView(const std::string &name, sol::object view)

Add new lua view to the imgui renderer.

Parameters
  • name: view name

  • view: lua function that will render everything.

virtual bool removeView(const std::string &name, sol::object view)

Remove view from dockspace

Private Members

ImguiManager *mManager
DataProxy mState
std::unique_ptr<ImGuiDockspaceRenderer> mDockspace
std::string mName
class ImguiManager : public UIManager, public EventSubscriber<ImguiManager>, public Gsage::ImguiViewCollection

Public Types

typedef std::function<ImguiRenderer *()> RendererFactory

Public Functions

ImguiManager()
virtual ~ImguiManager()
virtual void initialize(GsageFacade *facade, lua_State *L = 0)

Initialize ui manager

Parameters
  • called: by gsage facade on setup

  • facade: Gsage Facade

  • L: init with lua state

lua_State *getLuaState()

Gets Rocket lua state

void setLuaState(lua_State *L)

Update load state

Parameters
  • L: lua_State

void setUp()

Configures rendering

void tearDown()

Tear down imgui manager

bool handleSystemChange(EventDispatcher *sender, const Event &event)

SystemChangeEvent::SYSTEM_ADDED and SystemChangeEvent::SYSTEM_REMOVED handler

bool handleMouseEvent(EventDispatcher *sender, const Event &event)

Handle mouse event from engine

Parameters
  • sender: EventDispatcher

  • event: Event

const std::string &getType()
void addRendererFactory(const std::string &type, RendererFactory f)

This method is called by render system interfaces plugins

Parameters
  • type: Type of render system to use for. RenderSystem must properly return “type” field from getSystemInfo call

  • f: Factory method to create renderables

void removeRendererFactory(const std::string &type)

Unregister renderer factory

ImGuiContext *getImGuiContext(std::string name, const ImVec2 &initialSize)

Get or create new ImGuiContext instance

Parameters
  • name: Context name

  • initialSize: Initial context size

virtual void renderViews(ImguiRenderer::Context &ctx)

Render a single imgui frame

Public Static Attributes

const std::string TYPE

Private Types

typedef std::map<std::string, RendererFactory> RendererFactories
typedef std::vector<ImVector<ImWchar>> GlyphRanges

Private Functions

bool handleKeyboardEvent(EventDispatcher *sender, const Event &event)

Handle keyboard event from engine

bool handleInputEvent(EventDispatcher *sender, const Event &event)

Handle input event from engine

bool doCapture()

Check if mouse event can be captured by any rocket element

bool render(EventDispatcher *dispatcher, const Event &e)

This function does not handle actual render system rendering, it only updates ImGUI draw list

Private Members

ImguiRenderer *mRenderer
ImFontAtlas *mFontAtlas
bool mIsSetUp
RendererFactories mRendererFactories
std::string mPendingSystemType
std::string mUsedRendererType
ImVector<ImFont *> mFonts
GlyphRanges mGlyphRanges
std::map<std::string, ImGuiContext *> mContexts
ImGuiDockspaceRenderer *mCurrentDockspace

Friends

friend Gsage::ImguiDockspaceView
class ImguiRenderer

Subclassed by Gsage::ImguiOgreRenderer

Public Functions

ImguiRenderer()
virtual ~ImguiRenderer()
virtual void initialize(Engine *facade, lua_State *L)

Set engine, setup lua bindings

Parameters
  • engine: Gsage CE

  • L: lua state

void setMousePosition(const std::string &name, ImVec2 position)

Update mouse position for the render target

Parameters
  • name: render target name

  • position: mouse position

virtual void createFontTexture(unsigned char *pixels, int width, int height) = 0

Create font texture in the underlying render system

Parameters
  • pixels: Raw texture

  • width: Texture width

  • height: Texture height

virtual void setImguiContext(ImGuiContext *ctx) = 0

Imgui context is not shared across plugins, so pass it to renderer

Parameters

void render()

Protected Functions

virtual Context *getContext(ImGuiContext *context)
virtual Context *initializeContext(const std::string &name)

Protected Attributes

std::map<std::string, ImVec2> mMousePositions
Engine *mEngine
std::map<std::string, bool> mRenderTargetWhitelist
std::mutex mContextLock
std::map<std::string, Context> mContexts
std::map<ImGuiContext *, std::string> mContextNames
ImguiManager *mManager

Friends

friend Gsage::ImguiManager
struct Context

Public Members

ImVec2 size
ImGuiContext *context
class ImguiViewCollection

Subclassed by Gsage::ImguiDockspaceView, Gsage::ImguiManager

Public Functions

virtual bool addView(const std::string &name, sol::object view)

Add new lua view to the imgui renderer.

Parameters
  • name: view name

  • view: lua function that will render everything.

virtual bool removeView(const std::string &name, sol::object view)

Remove view from collection

Protected Types

typedef std::function<sol::function_result()> RenderView
typedef std::map<std::string, RenderView> Views

Protected Attributes

Views mViews