(494) Auto-Code with the LSL Action Wizard (Beta):
In an effort to further reduce the amount of LSL code that you must manually enter into your MiceOnABeam model, the LSL Action Wizard feature is now available.
An LSL Action represents a simple or complex operation that can be performed in your virtual world. A comprehensive set of built-in LSL Actions are provided and can be selected from the Code Editor context menu.
A selected LSL Action is then customized through the LSL Action Configuration Wizard and is automatically mapped to a set of LSL coding statements when the LSL script is generated for the model.
You can also create and edit your own custom LSL Actions and import them into MiceOnABeam via the convenient LSL Actions Editor which will create the corresponding XML file that will be automatically imported into MiceOnABeam.
(Note: The LSL Actions Editor and importation of custom LSL Actions are only available with the Professional version of MiceOnABeam.)
(480) Configurable Components:
This new feature provides a simplified interface to customize a reusable component that has been inserted into a model from the Component Library.
You can now develop your own reusable component by flagging one or more of a state's variables to be "Configurable", meaning that they can be displayed in a convenient form in order to be configured by users of that component.
A user of the component can simply select "Configure Component" from the context menu of the top-level state of the component, which will then display a form in which the user can fill in the values or initialization code for it's key "Configurable" variables.
(495) Built-In Reusable Modeling Components:
While the new LSL Actions feature helps reduce the amount of manual coding, it works by reusing built-in, configurable LSL coding statements.
It's also highly useful to be able to reuse models or portions thereof. Complimenting the enhanced Component Library Browser and new Configurable Components features, which facilitate this higher-level of reuse, several built-in modeling components are now provided for easy access and configuration.
These built-in modeling components can be accessed from the State Editor context menu to be inserted into your model. The Component Configuration Wizard will then be automatically opened for the selected component where it can be customized for your particular use.
(502) Pop-up help tips now available for editors and menus:
Short help descriptions are now displayed in the various MiceOnABeam editors and menus. To display the help text simply move the cursor over the field or menu item of interest.
To turn the display of the help pop-ups on or off, select Show Help Tips within the Help menu of the main menu.
(487) Exclude user code comments:
A new option "Include User Comments" is now available within the Code Generation options of the Options menu.
When de-selected, any LSL comments that you have inserted into your code will be excluded from the generated code. As well when "Generate LSL (Optimized)" is selected, user comments will automatically be excluded from the generated code.
(574) Keyboard short-cut added to generate LSL code:
The short-cut Control-g can now be used to generate the LSL code for the current model and automatically copy the code to the system's clipboard, bypassing the displaying of the generated code in a window. This can help save time in the script development process by enabling you to move more rapidly between making model changes within MiceOnABeam and testing out the resulting script within your virtual world environment.
Note that when using this short-cut (or associated menu item) the code optimization flag will be set depending on the type of code generation that was most recently done. When MiceOnABeam is first started up, the optimize flag is set false.
(490) State Variables and Functions can now be overridden in contained states:
Previously the State Variables & Functions Editor would not permit you to define a variable or function with a name that is used in a higher enclosing state or a lower substate. Now in such case, a confirmation prompt will be given asking whether you wish to proceed anyways.
A variable or function which has the same name as one defined within a higher-level enclosing state, will override the higher-level variable or function within the state's scope.
(491) Code Generation Optimizations:
The following optimizations of the LSL code generation have been included with this release:
The code generated for a Simple State has been reduced through the use of the new global function SET_STATE.
The xxx_LastState State History global variables will now only be created and set if the Deep History or Shall History features are used;
(515) Component Library Browser now supports sub-folders:
Folders can now be traversed in an enhanced Component Library Browser. Additional information on models in a folder is now displayed in several columns. These columns can also be sorted in ascending or descending order by clicking on the column header.
As well URL links contained in the model's top state Comment can be clicked and the link will be opened up in your default web browser.
(543) State Variables and State Functions can now be reordered via click & drag:
In the State Variables and Functions Editor, individual rows can now be reordered by clicking a State Variable or Function on it's row header and dragging it to another row to where it will be moved (inserted before).
(431) State Variables can now have an associated comment/description:
A comment or description can now be set for a State Variable in the new Description column of the State Variables & Functions Editor.
This comment will be included alongside the variable's declaration in the generated LSL code (non-optimized version).
(583) LSL control statement templates now supported in code completion:
LSL control flow statement templates can now be automatically inserted within your code using the pop-up code completion feature.
For example, to enter an if statement template into your code, type if , select the style of if that you want from the pop-up list box and press the Enter key.
The following control flow statements are supported:
- else if
(538) Performance compiler directives can now be nested within conditional compilation directives:
The performance compiler directives #stats and #endstats can now be contained within the sections of code bounded by the #if..#elif..#else..#endif directives. The nested directive will be ignored if it's code block is not outputted (the value of the boolean expression provided for the #if.. or #elif.. directives evaluates to FALSE).
(204) Multiple symbols can now be set with #define & #undef compiler directives:
Multiple symbols can now be included on #define and #undef compiler directives. In order to accommodate multiple symbols the #define & #undef action directive lines must now be terminated with a sharp symbol "#". Multiple symbols are separated by a comma.
Note that #define & #undef directives entered within a model imported from an earlier release will still generate LSL correctly, however if the code is subsequently edited, the Code Editor's syntax checker will issue an error regarding the missing "#".
(344) Improved handling of invalid arguments names for Event_XXX functions:
Previously if an invalid argument name was passed to one of the built-in EVENT_XXX functions, (which can be used to access event argument data), the first element of the list was returned and typecast to the calling EVENT_XXX function type.
Now in this case, the default value for the datatype will be returned.
(591) Event arguments can now be accessed directly within Group Transition code:
Accessing the arguments associated with an incoming event has been simplified. Group Transitions no longer require the use of the EVENT_XXX functions to access the event's arguments; they can now be referenced directly.
With this release, the following cases require the use of the EVENT_XXX functions in order to access the data of the most recently received event:
* State Entry and Exit Action code.
* Custom Global functions and State Functions.
* Continuing Transitions: Transitions which do not have a defined event. (If a transition has a defined event then the arguments can be referenced directly in your code.)
In addition the EVENT_LST utility function has been modified to return a list corresponding to the list argument. However as the list's elements have been converted to strings, they must be extracted using llList2String and explicitly cast to the correct type.
(580) Auto-word selection now disabled in LSL coding fields:
In previous releases individual words were automatically selected when crossing a word boundary making it impossible to select just portions of multiple words. This auto-word selection "feature" has been turned off.
Note that double-clicking a word will still select the entire word and any other word(s) the selection is extended to.
(233) More space now available for a Transition's Guard Condition:
When a Transition Editor is resized to be larger, the coding space provided for the Guard Condition will now also expand along with that provided for the Transition Action allowing for easier visibility of more complex code.
(342) The width of the Code Completion list box is now slightly larger:
The width of the code completion list box has been made slightly larger to accommodate larger keywords.
(585) Support for new LSL functions and constants:
MiceOnABeam v1.0.2 now supports the following new LSL functions and constants:
- TERMINATE_SCRIPT (MOAB function)
- #action (MOAB keyword)
(575) Moved MiceOnABeam copyright header to top of generated code:
The copyright information has been moved to the top of the generated code. Previously it followed the script name, version # and description where it was less visible.
(483) Error when validating Guard Condition and State Variable initialization code segments if they were empty:
Empty Guard Condition code will now be set automatically to TRUE. Empty lines at the start of a code segment will now be automatically deleted on syntax checking.
(486) Transition Properties Editor could not be minimized:
The Transition Properties editor had it's Minimize Box in the title bar disabled. The Minimize Box is now enabled.
(485) Moving a group of components recalculated the fixed endpoints on transitions connected to non-moving components:
Previously when moving a group of components connected to only one end of a transition, the position of the other end point of that transition would be recalculated even if that position was set to a fixed location.
(464) Pressing the Enter key while in the Choice Point properties editor did not automatically select the OK button:
Pressing the Enter key after changing the name of a Choice Point in the properties editor will now automatically select the OK button to save the new name.
(465) The minimum size of the State Editor has been increased:
The minimize size of the State Editor has been increased so that the Search Dialog icon is not cut off when the State Editor is re-sized to it's smallest size.
(457) Crash when setting font to non-Regular style:
In the Options menu, fonts for labels, comments and code can be chosen. The font dialog allows you to choose a font style other than Regular, however this is not currently supported and could cause a crash in some circumstances.
Although the generic Windows font dialog is still used in this release, MiceOnABeam will now issue a warning if a non-Regular font style is chosen and the new font will not be saved.
(458) The Find main menu item was not disabled when State Editor window not selected:
When a State Editor is not the active window, the main menu Find menu item (within the Edit menu) is now disabled.
(532) Non-standard escape characters now permitted in strings:
In previous releases the only escape chars allowed in strings were /n /t // & /". However LSL allows all other string characters to be escaped, even though the result is simply the character itself. Now all non-standard escape characters are permitted within strings.
(533) State Entry/Exit code header repeated for each state:
The comment header for State Entry and Exit functions in the generated code was repeated for each state. This has been fixed.
(534) Dragging a component from the Component Library browser did not set change flag:
Dragging a component from the Component Library browser did not set the change flag in the model's State Editor title bar. This has been fixed.
(581) Code Completion list-box did not always disappear when required:
The code completion pop-up list-box did not always disappear when clicking the mouse in another field or area of the Properties Editor. This has been fixed.
(607) Copying text from an Edit Comment editor to the system clipboard did not work properly:
Copying text from an Edit Comment editor did not copy the proper end of line characters to the system clipboard. This has been fixed to include the proper characters for the platform.
(608) Transition name not restored on interim edit:
Changing a transition's event in the Transition Properties editor and then changing it back to the original all without saving and closing the editor, did not change the transition's name back to the original event name. This has been fixed.
(609) Attempting to rename a script model to an existing name did not alert user:
Attempting to rename a script model to a name for a script that is already open will now issue an alert prompt.
(132) Moving a State Editor window will clear the Undo/Redo history.
(405) Can't close a State Variables and Functions Editor containing an invalid field:
If there is a field with invalid data in the State Variables/Functions Editor, the editor cannot be closed using the ESC key. It will also not close using the Close Box the first time it is pressed. In this case the Cancel button should be used to abort the changes.