My Job:
My job was mainly to create the main UI system, its rendering pipeline, components and resources.
Also the input system inspired by the system proposed by Unity in this link, the idea that raises is that we can create groups of inputs of specific actions (such as the inputs used by the UI, or the player) and group them, that way we can deactivate or activate if we want.
UI System
Component Interactive
They have a Navigation system that allows to move from one interactive component to another in a strict or automatic way (that last was finish by Joan Pareja).
Two transitions modes, Color transition and Sprite transition for all the 4 states that we manage (Idle, Highlighted, Pressed, Disabled)
The Button and Check Box have a Onclick functionality that allows to communicate with the scripts made in C # at first it only called a fixed virtual function but with the help of Elliot the system was extended to have a similarity to the OnClick () Unity functionality
From the interactive components I create the main interactive component, the button component, the connection of the inputs and this components and I help Marc Fabian to create the check box and slider component
Component Graphic
Supports normal or filled render, the normal system generates a Quad per image, the filled mode allows to be used horizontally, vertically or 360
The Image Component support texture, color and alpha and the Text Component Support fonts, color and alpha
From the graphic components I create the main graphic component, the image component (render and 360 filled mode) and the text component (resource font included)
Component Canvas Render
Canvas calls this component to render the mesh it has inside
The CanvasRender had the functionality of creating the mesh of the graphic component of the gameobject (only you can have 1 image component or 1 text component on the same Game Object)
Component RectTransform
Inherits the functionality of the transform component but includes important functionalities for the UI such as width, height and anchor point
Of the RectTransform I Create the component and implement the width and height functionalities, the part of anchor point was done by Pere Rifa.
Component Canvas
Stores all the graphic components of the scene and is responsible for its rendering and its scaling depending on the screen
Of the Canvas component I done the part of the rendering part, the rescaled system was done by Pere Rifa
UI Animation System
The 2d animation system allows you to preserve certain UI components and perform animations.
Of this system I create the base class that allows you to edit key and activate the animation in a generic way so that other components can make it work and I made it work with the RectTransform component
Because in the last this system is not used currently is deprecated and not work in the engine. The images below were the last iterations
Input System
Key Bind
Database that connects all the inputs of SDL (control, keybinding and mouse) and we add our own information, such as which device is part and a name that will show on screen
Created by Nicolas Babot and then edited by me to add small features to differentiate keys by device
Player Action
Player Action is a class that stores Input Managers (explained below) managing them and updating their status
Player Action updates the inputs managers in a hierarchical way and if an input managers receives an input that it can use, it consumes it, preventing others from using it, that allows controlling the inputs giving preference depending on which input is higher in the hierarchy
Player Action allows you to activate and deactivate inputs managers or make it possible to block inputs to prevent them from passing to the inputs below the hierarchy
It also allows to search within an input managers if a key has been pressed, maintained or released. In case you want to know your Axis we can also ask for it
Input Manager
The input manager is a class that stores groups of input actions. Its functionality is to create an input action, and link a key with an action, for example we can link the key "Space" with "Interact"
We can link the same action to other key allowing to use the same action with controller and keyboard for example
From the Input Manager I create the UI interaction and the conexion with the Player Action, and Nicolas Barbot create the connection between the Input Manager and the Input Action
Input Action
The Input Action class its on we store the basic data of the keybinding (action name, key name, device type) and the state of that action (is pressed, axis value, etc) the Input Manager gets this Input Action to send his information by request of the Player Action
The Input Action can store two keys, one is the positive key, that key reacts to press event and axis events, and the negative key, that one only reacts to axis events
Created by Nicolas Babot and then edited by me to add negative key feature
Ingame Key Binding
I implemented a ingame key binding editor, you can change the keys and save the changes or return them to a default state
Controller Support
I implemented a simple joystick control system that allows to send signals to the controller to activate the vibration, deactivate and activate the controller in run time, finally the game shows the information for controller if it is being used