LUTE: Media Components
See also: LUTE Framework
What are the LUTE Media Components?
LUTE handles media by following the same process as the majority of Orders (where Orders are individual aspects of behaviour that are contained within a list on a Node, an object that exists during runtime which executes through the list of Orders based on a series of conditions).
For the most part, an Order is called via a Node and this Order executes behaviour on an existing separate object or by creating a new object where the separate behaviour exists (following typical object-oriented paradigms). For example, an Order called ‘Fade Sprite’ will require a Sprite Renderer property to be declared in the Order inspector as well as ‘Time To Fade’ and ‘Fade Value’ (floating point values). When this Order is called, a method on a separate ‘Sprite Manager’ class is called where the parameters declared on the Order are passed to it. This method will handle the fading of the sprite on the Sprite Renderer object using either Update methods or methods that return IEnumerator values (for controlling time based functionality).
The example above applies to the majority of media based functionality within LUTE where one can declare Orders that will interact with existing media derived components that exist within the Unity system or subsystems. However, LUTE also extends the built-in Unity UI components to work alongside Nodes and Orders within the Flow Engine. In these instances, base UI components and types are overridden by our system to allow for more complex interactions with Unity UI systems and LUTE. The most apparent example of this is the ‘Node Button’ component. This component uses the same properties of the base Unity Button with an additional property that allows one to declare a Node; if this property is declared then the Node will be executed upon the Button being ‘Clicked’ (alongside any other ‘On-Click Events’ that have been defined on that Button component).
Finally, media components can be used within LUTE’s variable system. As Variables can be based on any type, one can create a Variable based on Unity’s UI media types or “media-based” types (such as Sprites 3D objects). Using this system, one can use ‘Variable Attributes’ to use ‘media derived variables’ on any class that inherits either from Monobehaviour or Scriptable objects. For example, we can create a ‘Sprite Variable’ where the value of this Variable can change during runtime (i.e., the image of the Sprite) based on a condition or state change. By using the ‘Variable Attribute’ on another class we can reference this specific ‘Sprite Variable’ and then use it for many purposes. For example, when interacting with a character using LUTE’s dialogue system, certain actions may change that character’s portrait; we can use conditions to update the value based on those actions and then use that same ‘Sprite Variable’ to draw the character portrait on the dialogue box.
Technical Details:
Current ‘Media-Based’ Orders:
- Play/Stop Music/Sound: Plays or stops a SFX clip using Unity’s Audio Player component.
- Play Video: Creates a video player and plays the provided media clip with parameters.
- Generic Button: Creates a button on screen where one can declare a list of events.
- Dialogue: Instantiates a ‘Dialogue Box’ where a character and text is declared.
- Dialogue Choice: Instantiates a ‘Choice Button’ which will execute another Node.
- Text-Info Panel: Instantiates a panel that can be used to display information.
- Popup Menu: Instantiates a ‘Popup Menu’ which can be used with:
- Menu Choice: A button that executes another Node or Unity Event.
- Menu Text: Sets title text for the ‘Popup Menu’
- Menu Slider: Defines a ‘Slider’ that can alter specific range-based values.
- Fade Screen: Fades the screen to a defined alpha value.
- Fade Text: Will fade a text-based component within a given time to a given alpha value.
- Fade Sprite: Will fade a sprite within a given time to a given alpha value.
- Hide/Reveal Location Marker: Will hide or show a ‘Location Marker’ on the map.
Current ‘LUTE-UI’ Components:
- Node Button: Unity-based Button that executes the declared Node.
- Variable Image: Unity-based Image component that uses a ‘Sprite Variable’ property.
- Variable Text: Unity-based Text component that uses a ‘String Variable’ property.
Current ‘Media-Based’ Variables:
- SpriteVariable
- TextVariable (string)
- SpriteRendererVariable
- ImageVariable
- AnimatorVariable
- ColourVariable
- TextureVariable

Figure 1: Fade Sprite.


Figure 2: Dialogue Box

Figure 3: Popup Menu

Figure 4: Node Button Component

Figure 5: Sprite Variable
See also: LUTE Framework
The LUTE Team is:
Dr Jack Brett – Lead Engineer
Dr Charlie Hargood – Academic Investigator and Architect
Dr David Millard – Academic Investigator and Architect
Dr Yoan Malinov – Engineer
Dr Bob Rimmington – Qualitative Researcher