Name: New UI (NUI)
Summary: A replacement UI system built on a underlying low-level Canvas
Scope: Engine
Current Goal: Main menu replacement
Phase: Implementation
Curator: Immortius
Work Involved
Canvas (DONE)
Establishing an underlying canvas system that encapsulates the low-level rendering details, insulating the rest of the UI framework from the rendering implementation.
The canvas capabilities are:
A widget is a UI element. It receives Canvas to draw itself. These will be registered in a similar fashion to components and events, so they can be discovered and referred to via a uri, and be serialized/deserialized from json (or otherwise).
Some basic widgets will be
UI containers are special UI Widgets that contain other widgets, providing them with layout.
Data Binding Framework (DONE)
In addition to having values directly set, widgets will be designed to allow binding to entities or other sources - that is a label could be bound to "engineisplayInformation.name" and linked to an entity, and if the entity has a DisplayInformationComponent, the name field of that component will be used as the text of the label.
UI Manager (Incomplete)
A UI manager will manage the active UI elements - rendering them, sending them inputs and so forth. It will allow screens, HUD elements, and windows to be opened, removed and accessed.
Screens, Hud Elements and Windows (Incomplete)
These are the three top-level UI elements that can be instantiated. Screens fill the entire screen, and exist in a stack. Hud Elements may be positioned to part of the screen, and their positions controlled through config. Windows are movable elements.
Main Menu Replacement (Incomplete)
The main menu needs to be switched over completely to use NUI.
Console Replacement (Unstarted)
The console needs to be replaced with a NUI based console, and made available both ingame and in the menu.
Ingame UI Replacement (Unstarted)
The ingame UI needs to be replaced with NUI based elements.
Extension Points (Unstarted)
There needs to be a system for supporting the introduction of UI elements into existing UI elements by modules.
Other Work Outstanding
Summary: A replacement UI system built on a underlying low-level Canvas
Scope: Engine
Current Goal: Main menu replacement
Phase: Implementation
Curator: Immortius
Work Involved
Canvas (DONE)
Establishing an underlying canvas system that encapsulates the low-level rendering details, insulating the rest of the UI framework from the rendering implementation.
The canvas capabilities are:
- Sub-regioning. Specifying a sub-region of the screen which will be the target of operations until the region is discarded. Optionally the region will crop anything drawn outside the region (allowing for scroll lists).
- Text drawing - featuring
- Color
- Shadowing
- Wrapping
- Alignment
- Texture drawing - featuring
- Stretching/scaling/repeating
- Border support, where the border is drawn at normal size and the contents are stretched/scaled/repeated
- Drawing sub-regions of textures.
- Material drawing
- Mesh drawing
- Alpha support for applying translucency to regions to allow fade in/out
- Optionally support for arbitrary transforms
- Interaction region "drawing"
A widget is a UI element. It receives Canvas to draw itself. These will be registered in a similar fashion to components and events, so they can be discovered and referred to via a uri, and be serialized/deserialized from json (or otherwise).
Some basic widgets will be
- Label
- TextInput
- Button
- Image
- Slider
UI containers are special UI Widgets that contain other widgets, providing them with layout.
Data Binding Framework (DONE)
In addition to having values directly set, widgets will be designed to allow binding to entities or other sources - that is a label could be bound to "engineisplayInformation.name" and linked to an entity, and if the entity has a DisplayInformationComponent, the name field of that component will be used as the text of the label.
UI Manager (Incomplete)
A UI manager will manage the active UI elements - rendering them, sending them inputs and so forth. It will allow screens, HUD elements, and windows to be opened, removed and accessed.
Screens, Hud Elements and Windows (Incomplete)
These are the three top-level UI elements that can be instantiated. Screens fill the entire screen, and exist in a stack. Hud Elements may be positioned to part of the screen, and their positions controlled through config. Windows are movable elements.
Main Menu Replacement (Incomplete)
The main menu needs to be switched over completely to use NUI.
Console Replacement (Unstarted)
The console needs to be replaced with a NUI based console, and made available both ingame and in the menu.
Ingame UI Replacement (Unstarted)
The ingame UI needs to be replaced with NUI based elements.
Extension Points (Unstarted)
There needs to be a system for supporting the introduction of UI elements into existing UI elements by modules.
Other Work Outstanding
- Cleanup
- Line drawing
- Databinding entities
- Tooltips