VUML is a VAM plugin by JayJayWon designed to provide basic logic flow and calculations that can be setup within the VAM virtual space. Combined with the ActionGrouper plugin (by JayJayWon) it allows creators to trigger actions based on a combination of states and conditions without having to code their own C# Unity plugins. VUML allows the user to create any number of boolean, float or string variables the values of which can be static or derived/calculated from a combination of other variables. The plugin UI controls are as follows: VUML Left side Plugin UI - Add vBOOL: Creates a new boolean variable which can be configured to be True or False through the options available on the right hand plugin UI - Add vFLOAT: Creates a new float variable. The numeric value of the float can be configured through the right hand plugin UI - Add vSTRING: Creates a new string variable. The text value can be configured through the right hand plugin UI. - Duplicate : Creates a new variable that duplicates the variable currently selected in the right hand plugin UI. - Results summary: A list of all VUML variables created in this plugin and their current value. VUML Right side Plugin UI - VUML Variable: Select a VUML variable to modify. All other fields on the right hand UI relate to the VUML variable selected - Operation Type: Different operation types will be available depending on the type of Variable (ie vBOOL, vFLOAT or vSTRING) being modified. The possible available options include: • Static (All variable types): allows the variable result to be set to a fixed value. e.g. True or False for a vBOOL variable. • Dynamic (All variable types): allows the variable to be set to the value of another variable (i.e. vBOOL, vFLOAT or vSTRING) or VAM parameter (i.e. Atom/Receiver/Target). • Boolean Logic (vBOOL only): the variable will be the result of a boolean logic operation (e.g. AND/OR/NOR etc) of two other Boolean VAM variables or VAM parameters. • Float Comparison (vBOOL only): the variable will be the result of a comparison (e.g. less than, more than, equal etc) between two other Float variables or VAM parameters. • String Comparison (vBOOL only): the variable will be the result of a comparison (equal to, not equal to etc) between two other String variables or VAM parameters. • Look At (vBOOL only): this variable will be true if the user is looking at the selected target Atom. For people Atoms a specific body node must be selected (e.g. Head, Chest etc). Additionally a FOV angle can be set which will determine what angle the user can look away from the centre of the target before the variable results switches to false. • Collision (vBOOL only): this variable will be true if a collision is detected between a Collider Node and a target atom or Rigidbody node of a person atom. Collider Nodes can be a Collision Trigger atom or any of the Collision Trigger nodes associated with a person (e.g. Lip or Mouth trigger). • Maths (vFLOAT only): this variable will be a numeric calculation (e.g. plus, minus, multiplication, division etc) result of two other float variables or VAM parameters. • Distance (vFLOAT only): the distance between two atoms or person nodes. • Timer (vFLOAT only): a float value that increments with time. Specific operations determine whether the timer reacts to the Freeze or Time Scale options in the main VAM UI. • Counter (vFLOAT only): a float that increments or decrements by 1, when the Increment or Decrement buttons or actions are activated. - Operation: Depending on the Operation Type selected (see above) an Operation option may also be selectable. For example for the 'Maths' Operation type, there will be the following available Operations that will apply to two selectable Parameters (Param A and Param B): • + : sum (i.e. Param A plus Param B) • - : subtraction(i.e. Param A minus Param B) • *: multiplication (i.e. Param A multiplied by Param B) • /: division (i.e. Param A divided by Param B • ^: power (i.e. Param A to the power of Param B) • MIN: minimum of Param A or Param B value • MAX: maximum of Param A or Param B value - Result Update Frequency: determines whether the value of the VUML variable is calculated continuously or just when the Execute Update button is pressed (or action triggered). -Most of the above Operations require either one or two target parameters (Param A and Param B). Where a parameter is required the following UI controls are displayed for each parameter: • Scope/Atom: The selector can be used to select an Atom or another VUML Plugin or which can be used to access other VUML Variables in the current plugin. • Receiver Group: Only displayed when a person Atom is selected in 'Scope/Atom'. Receiver Groups collate related Receivers into one collection to simplify navigation. • Receiver: Only displayed where an Atom has been selected in 'Scope/Atom'. Targets are grouped under Receivers. • Target: The variable or VUML parameter to be used for the operation. The options available will vary depending on the Scope/Atom and Receiver options selected above. Only variables of the correct type will be displayed - for example if a float comparison operation is being performed then only float variables will be selectable. - Notes: free text field for making notes that help in identifying the intended purpose of the VUML variable.