-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Description
Overview
Add new button UI control system which unifies old CompoundButton and InteractiveButtonComponents
Requirements
A list of the required functionality this task requires to implement.
- A interaction system that is easy for designers to create buttons and other interactables with sensory feedback.
- An easy to use inspector that ties everything together
- States for interactables are configurable and easily extended.
- Profiles are a collection of themes paired to game objects.
- Themes allow the designer to assign object property values to states.
- Events are easily extendable at usable in the Inspector.
- Events can also be used by developers using code in optimized way.
- Events may care about states that themes do not.
- Toggle interaction and theming is supported
- Action filtering
- Keyword or voice commands
- Global listening can be enabled
- A collection of basic themes
- A collection of basic events
- A collection of button prefabs to show examples of interaction types
Acceptance Criteria
- Interactable assets including models, materials, textures, animations
- Inspector base code for layout, buttons and formatting
- InspectorFields, used by Event system and themes to allow for adding custom properties to a subclass that are automatically rendered in the inspector.
- Layout code to make building 3D and responsive buttons easier for designers.
- State management system using ScriptableObjects and a state logic abstract class allows for easily choosing only the states a designer cares about. A custom logic class can be created and assigned to handle unique edge cases.
- States are easily configured using the Unity Editor inspectors
- Profiles in the interactable is a list of Themes paired with the gameObjects they control
- Themes read in states and allow a designer to assign property values for each state
- Themes should manipulate transform, Text and shader properties
- Themes will be saved as ScriptableObjects for easy reuse
- Themes will have an easy to use inspector
- Event system that provides some basic functionality through the inspector, but is easily customizable and extendable. For instance default expectation is a click event, but could be extended to handle two handed gestures.
- Events can monitor Interactable states as well as all registered input events, the event system may care about states that themes do not.
- Events will have an easy interface for developer to connect to and use, either adding MonoBehavior components to the Interactable object or referencing the interactable from other objects. (in progress)
- Interactable will combine all the functionality above into one component that is easy to configure.
- All other functionality is not required (besides states) for a button to work and allow a designer to hook up an onClick event. Unused functionality will be collapsed, but easily discovered.
- Designers will be able to do basic configuration of the button like assigning a voice command keyword, assigning an action filter or setting the button to global a global listener.
- Interactables will filter actions and handle controller inputs that are assigned to actions ( in progress)
- A designer will be able to easily assign themes and game objects in the profiles section.
- A designer will be able to update theme properties through the interactable's insector or through the theme's inspector.
- A theme can be assigned to any material property available to the game object.
- New theme functionality can be easily added by a developer by extending the ThemeBase class.
- New events or the way states are evaluated can be created by extending the RecieverBase.
- A MonoBehavior Receiver class will be created to allow developers to easily access interactable states and pointer information.
jshowacre and keveleigh