MiceOnABeam Product Documentation

Modified: 5/26/2013 7:59 PM
Recently changed articles You can subscribe to this wiki article using an RSS feed reader.

V1.0.4

What's New

Enhanced LSL Code Editor features:

(919) User LSL Code is now fully type-checked!:
With release v1.0.4, all LSL code entered into a MiceOnABeam model is now fully type-checked, capturing type-check errors that were previously only reported when the code was saved in the Second Life Code Editor.

In particular, errors will be flagged whenever incompatible data is assigned to a variable or passed as an argument to a system or user-defined State Function.

(488) Code Completion Improvements:
The following improvements have been made to the Code Completion feature in the LSL Code Editor:
- All variables and functions within scope are now included in the Code Completion popup, including Custom Globals, State Variables & Functions, Local Declarations as well as System Constants and Functions.
- The type signature is now shown for any selected item in the Code Completion popup including all System Constants.

(955) LSL Syntax Highlighting:
The various elements comprising LSL code within the Code Editor are now highlighted with unique colors. This dramatically improves the readability of complex sequences of code.

In addition, placing the cursor to the right of a starting or ending bracket including (), {}, [] and <> will highlight both brackets.

(970) Hover Tooltips now provided in the LSL Code Editor:
In a Code Editor, a pop-up help tip will now be shown whenever the mouse cursor hovers over a variable, constant or function, showing it's type and description (if any).

These hover tips are by default enabled, but can be disabled by de-selecting Show coding hover tips in the Code Editor panel of the Options menu.

(974) Other Instances of Selected Text now shown in LSL Code Editor:
Whenever text is selected in the Code Editor, other instances of that same text will also be highlighted. This feature can be disabled by de-selecting Show extended selection highlighting in the Code Editor pane of the Options dialog.

In addition you can also tab (or Enter key) forward or backward (using the Shift key) between highlighted items.

(9) Find/Replace Text now provided in the LSL Code Editor:
As part of the new features for MiceOnABeam's LSL code Editor, a Find/Replace function is now supported.

The Find/Replace dialog box can be opened by pressing CTRL-F to find some text or CTRL-H to both find and replace some text. You can also first select some text in the Code Editor prior to pressing the keys in order to pre-fill the Find what: field in the Find/Replace dialog.

Within the Find/Replace dialog box you can select various options for the search and click the appropriate button to either find the next occurrence of the text, replace the found text with the text in the Replace with: field or replace all occurrences of the text with the replacement text.

There is a single Find/Replace dialog box for all open LSL Code Editors, however the dialog box is linked to only a single code editor at a time. This link is shown in the title bar of the dialog. You can switch the Find/Replace dialog box to another code editor by simply clicking within the desired editor or pressing CTRL-F or CTRL-H from it.

If you are in the Find/Replace dialog box and wish to bring up the hidden Replace buttons simply press CTRL-H.

Note that the Find/Replace is not available for certain single-line code entry fields associated with State Variable & Functions, Component Configuration and LSL Action editors.

(824) Forward Referencing of Functions & Variables in Custom Globals is now supported:
In previous releases, global variables and functions in the Custom Globals code editor could only be referenced after they had been declared. You can now reference a variable or function before it's declaration.

(989) Full Description is now included alongside the LSL Action directive:
When editing an LSL Action, it's full description has always been provided in the LSL Action Configuration Wizard. However in previous releases, only the first line of this description was entered into the LSL code along with the action directive.

The default behavior is to now include the complete LSL Action description within the code. A new option Insert First Line Only of Description is also available in the Components & LSL Actions tab of the Options menu, which when enabled, will revert to the previous behavior of only including the first line of the action description within the LSL code alongside the action directive.

(1008) Component & LSL Action Configuration Wizards dialog size improved:
The dialog size of the Component Configuration Wizard and the LSL Action Configuration Wizard now displays in a larger format so as to minimize the need for scroll bars or manual resizing.

(990) LSL Actions Parm Type:
For user-defined Custom LSL Actions, parameter types which resolve to an LSL statement that does not return a value, must have their type set to nothing (blank).

This is required as the new type checking feature will verify the type of the action code entered for the LSL Action.

(796) Improved Handling of list Values for Configured Choices:
The use of the LSL list type for Configured State Variables and user-defined Custom LSL Actions has been clarified as follows:

If the State Variable type or LSL Action parameter type is specified as an LSL list, then the value specified as a Choice can be of any type and will be automatically enclosed within the list brackets [ and ], unless the value specified is already enclosed in list brackets.

(946) Event help popup is now shown:
A help popup is now displayed describing the selected event when choosing an event in the Transition Properties Editor.

(949) Code Generation Errors List Improvements:
The Code Generation Errors List will now flag non-critical Warnings separate from Errors. Warnings are generated for local variables that are declared but never used, or used but not previously initialized. As well, obvious cases of unreachable code are flagged here.

You can disabled the detection and displaying of warnings by de-selecting Show Warnings in the Code Generation panel of the Options menu.

In addition the Code Generation Errors list can now be sorted by any column by clicking the column header. Clicking the same column header again will reverse the sort.

(964) Versioning Improvements:
The script version of a MiceOnABeam model is now shown in the title bar of the top level State Editor. Additionally, the Major Version number can now be set to 0;

(969) Capping of State notation is now configurable:
In the previous release, state properties shown on a State component had each line capped to a fixed number of characters.

With release v1.0.4 there is a new configuration item, Cap Notation within the States panel of the Options menu. By default, this option is enabled. However when disabled, as much text as the state's width allows will be displayed for each line of property information.

In addition with this release, the Show Comment button in the State Editor toolbar has been renamed to Show Info. After selecting Show Info and hovering over a state, the resulting pop-up will show the complete Entry & Exit Action code for the state. In this way a model's code can be more easily scanned without having to repeatedly open and close state Property Editors.

(941) ELSE Guard Condition now flagged as error during editing if transition not connected to a Choice Point:
ELSE is now only valid in the Guard Condition of an outgoing transition of a Choice Point.

Note that the error ("Undeclared Identifier: ELSE") will only be flagged during editing of the Guard Condition. During code generation, an ELSE in the Guard Condition of a transition whose source is not a Choice Point, will continue to be handled as if the guard had been set TRUE.

(800) New Events:
- transaction_result
- path_update

(1038) New Built-In Components:
- GetInput
- SendHTTP
- ReadNotecard

(800) New & Updated LSL Actions:
Updated LSL Actions:
- HTTPRequest: Added options NoCache, SSL, & Length.
- Attach: Added temporary option.
- RequestPermission & TestPermission: Supports the following new items:
   - PERMISSION_TELEPORT
   - PERMISSION_SILENT_ESTATE_MANAGEMENT
   - PERMISSION_OVERRIDE_ANIMATIONS
- GetObjectDetails: Supports the following new items:
   - OBJECT_CHARACTER_TIME
   - OBJECT_ROOT
   - OBJECT_ATTACHED_POINT
   - OBJECT_PATHFINDING_TYPE
   - OBJECT_PHYSICS
   - OBJECT_PHANTOM
   - OBJECT_TEMP_ON_REZ
- (921) ScanForSomething & ScanRepeatedly: You can now specify a key to scan for by entering a key in the new "Key" field together with selecting one of the following new options:
   - AvatarByKey
   - MovingObjectByKey
   - StationaryObjectByKey
- (921) DetectCollision: You can now specify a key to detect (or exclude) collisions for by entering a key in the new "Key" field together with selecting the following new option:
   - AvatarByKey
- (992) For an LSL Action created menu, if a button was clicked in SL within one second of the menu's display, the click might be ignored. The problem has been fixed. To correct the error in scripts generated from MiceOnABeam models using the following LSL Actions (or ShowMenu component), simply re-generate the code; no other changes to the model are required.
  - ShowCustomMenu
  - ShowOKCancelMenu
  - ShowMenu

New LSL Actions:
- ShowTextBox: Show a textbox to someone to have them input some text.
- TransferMoney: Transfers an amount of L$ from the script owner to the specified avatar.
- GiveMoney: Transfers an amount of L$ from the script owner to the specified avatar (no confirmation).
- MoveInRegion: Tries to move the entire object so that the root prim is within 0.1m of the selected position.
- MoveInRegionXYZ: Tries to move the entire object so that the root prim is within 0.1m of the selected X, Y & Z position.
- GetRegionInfo: Gets the requested information about the current region.
- AvatarInRegion: Determines whether the specified avatar is within the current region.
- GetAvatarsInRegion: Gets a scoped list of avatar keys in the current region.
- SetPrimSlice: Sets the prim's slice value (a shape attribute).
- GetPrimInfo: Gets the requested prim attribute
- Teleport: Teleports avatar to a position within the current region using either a landmark in the object's inventory or the specified position.
- TeleportToRegion: Teleports avatar to a position within the specified region.
- CharactersUpdated: Gets the percentage of pathfinding characters updated each frame, averaged over the last minute.
- CreateCharacter: Creates a pathfinding character from the object containing the script.
- UpdateCharacter: Updates the configuration options for an existing pathfinding character.
- DeleteCharacter: Removes all pathfinding properties for an object.
- HideFromTarget: Makes the character hide from the specified target.
- StayAwayFrom: Makes the character keep a specified distance from a specified position in the region or adjacent regions.
- GoTo: Makes the character travel to a specified position in the region or adjacent regions.
- PursueTarget: Makes the character pursue the specified target.
- Patrol: Makes the character patrol between the specified positions.
- Wander: Makes the character wander about a central spot within a specified radius.
- StopCurrentOperation: Stops the current pathfinding operation.
- Jump: Makes the character jump.
- SetStatus: Sets the status of one or more properties of the object to TRUE or FALSE.
- GetStatus: Gets the status, TRUE or FALSE  of the selected property of the object.
- CastRay: Casts a ray and returns collision data for its intersection with objects as well as status.
- GetAnimationOverride: Gets the animation that plays for the specified animation state.
- SetAnimationOverride: Overrides the default animation that plays for the specified animation state.
- ResetAnimationOverride: Resets the animation override of the specified animation state to its default value.
 

(940) New LSL functions and constants:
The following new LSL functions and constants are now supported. Note that some of them may still be in pre-release status in Second Life and as such may not yet be fully-supported.

New Functions:
- llTransferLindenDollars
- llGetParcelMusicURL
- llSetRegionPos
- llGetAgentList
- llAttachToAvatarTemp
- llTeleportAgent
- llTeleportAgentGlobalCoords
- llGetSimStats
- llCreateCharacter
- llUpdateCharacter
- llDeleteCharacter
- llEvade
- llExecCharacterCmd
- llGetClosestNavPoint
- llFleeFrom
- llNavigateTo
- llPatrolPoints
- llPursue
- llWanderWithin
- llGetStaticPath
- llGenerateKey
- llSetKeyframedMotion
- llSetAnimationOverride
- llGetAnimationOverride
- llResetAnimationOverride

New Constants:
- "frame_number"
- "region_idle"
- "dynamic_pathfinding"
- AGENT_LIST_PARCEL
- AGENT_LIST_PARCEL_OWNER
- AGENT_LIST_REGION
- HTTP_CUSTOM_HEADER
- HTTP_PRAGMA_NO_CACHE
- PRIM_SLICE
- PERMISSION_TELEPORT
- PERMISSION_SILENT_ESTATE_MANAGEMENT
- PERMISSION_OVERRIDE_ANIMATIONS
- SIM_STAT_PCT_CHARS_STEPPED
- CHARACTER_DESIRED_SPEED
- CHARACTER_LENGTH
- CHARACTER_ORIENTATION
- CHARACTER_RADIUS
- VERTICAL
- HORIZONTAL
- TRAVERSAL_TYPE
- TRAVERSAL_TYPE_FAST
- TRAVERSAL_TYPE_NONE
- TRAVERSAL_TYPE_SLOW
- CHARACTER_TYPE
- CHARACTER_TYPE_A
- CHARACTER_TYPE_B
- CHARACTER_TYPE_C
- CHARACTER_TYPE_D
- CHARACTER_TYPE_NONE
- CHARACTER_AVOIDANCE_MODE
- AVOID_CHARACTERS
- AVOID_DYNAMIC_OBSTACLES
- AVOID_NONE
- CHARACTER_MAX_ACCEL
- CHARACTER_MAX_DECEL
- CHARACTER_MAX_ANGULAR_ACCEL
- CHARACTER_MAX_ANGULAR_SPEED
- CHARACTER_DESIRED_TURN_SPEED
- CHARACTER_DESIRED_SPEED
- CHARACTER_MAX_TURN_RADIUS
- CHARACTER_MAX_SPEED
- CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES
- CHARACTER_CMD_JUMP
- CHARACTER_CMD_SMOOTH_STOP
- CHARACTER_CMD_STOP
- GCNP_RADIUS
- GCNP_STATIC
- FORCE_DIRECT_PATH
- PATROL_PAUSE_AT_WAYPOINTS
- REQUIRE_LINE_OF_SIGHT
- PURSUIT_FUZZ_FACTOR
- PURSUIT_GOAL_TOLERANCE
- PURSUIT_INTERCEPT
- PURSUIT_OFFSET
- WANDER_PAUSE_AT_WAYPOINTS
- PU_SLOWDOWN_DISTANCE_REACHED
- PU_GOAL_REACHED
- PU_FAILURE_INVALID_START
- PU_FAILURE_INVALID_GOAL
- PU_FAILURE_UNREACHABLE
- PU_FAILURE_TARGET_GONE
- PU_FAILURE_NO_VALID_DESTINATION
- PU_EVADE_HIDDEN
- PU_EVADE_SPOTTED
- PU_FAILURE_NO_NAVMESH
- PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED
- PU_FAILURE_PARCEL_UNREACHABLE
- PU_FAILURE_OTHER
- OBJECT_PATHFINDING_TYPE
- OBJECT_CHARACTER_TIME
- OBJECT_PHYSICS
- OBJECT_PHANTOM
- OBJECT_TEMP_ON_REZ
- OBJECT_ATTACHED_POINT
- OBJECT_ROOT
- OPT_AVATAR
- OPT_CHARACTER
- OPT_EXCLUSION_VOLUME
- OPT_LEGACY_LINKSET
- OPT_MATERIAL_VOLUME
- OPT_OTHER
- OPT_STATIC_OBSTACLE
- OPT_WALKABLE
- STATUS_BLOCK_GRAB_OBJECT
- KFM_CMD_PAUSE
- KFM_CMD_PLAY
- KFM_CMD_STOP
- KFM_COMMAND
- KFM_DATA
- KFM_FORWARD
- KFM_LOOP
- KFM_MODE
- KFM_PING_PONG
- KFM_REVERSE
- KFM_ROTATION
- KFM_TRANSLATION
- RC_DATA_FLAGS
- RC_DETECT_PHANTOM
- RC_GET_LINK_NUM
- RC_GET_NORMAL
- RC_GET_ROOT_KEY
- RC_MAX_HITS
- RC_REJECT_AGENTS
- RC_REJECT_LAND
- RC_REJECT_NONPHYSICAL
- RC_REJECT_PHYSICAL
- RC_REJECT_TYPES
- RCERR_CAST_TIME_EXCEEDED
- RCERR_SIM_PERF_LOW
- RCERR_UNKNOWN
 

Bug Fixes

(843) New ESV/ESF's not yet saved are flagged as undeclared within ESV Editor:
In the previous release, a new or changed State Variable or State Function that was defined within the State Variables & Functions Editor would be flagged as undeclared if used elsewhere within the editor prior to saving the changes. In this release new and changed variables and functions will be properly reflected when the LSL code is checked.

Note however that references to deleted variables or functions will not be flagged as undeclared until after the changes are saved and the LSL code is generated for the model.

(967) Show signature for full code completion matches:
The signature for a variable which perfectly matches an item in the code completion popup will now be shown. (Previously it wasn't.)

(973) Collapsed main model windows are saved that way:
In the previous release, when a model was saved while its State Editor window was minimized, upon the model's re-opening, the State Editor would open with its minimized size. This has been fixed. Any models previously saved in this minimized state will be automatically fixed upon re-loading.

In addition if a State Editor was minimized and then requested to be opened from another window (e.g., containing State Editor), then previously it remained in its minimized state. This also has been fixed.

(918) Incorrect trace output under certain option selections:
When the Execution Trace Events option is selected, under certain conditions* the wrong state will be indicated in the trace message output during script execution. This has been fixed.

* - Multiple transitions with the same Guard Condition and Transition Action that target the same state; or
  - Group Transition with the Include section comments deselected;

(797) Crash on Edit User Actions if Comment field not specified:
If a new LSL Action definition is created within the Edit user LSL Actions window and the Comment field is not assigned, then clicking Save or OK will cause a crash. This has been fixed. In addition the Comment field has been made mandatory.

(992) Menu clicks could be lost when using LSL Actions to create menus:
For an LSL Action created menu, if a button was clicked in SL within one second of the menu's display, the click might be ignored.

This problem could occur when using the following LSL Actions:
- ShowCustomMenu
- ShowOKCancelMenu
- ShowMenu

as well as the following built-in component:
- ShowMenu

The code generated for the above has been fixed. To correct the error in scripts generated from MiceOnABeam models using these LSL Actions or component, simply re-generate the code; no other changes to the model are required.

(993) Bug in Code Completion for ATTACH_HUD_BOTTOM & ATTACH_HUD_TOP_CENTER:
Several ATTACH_HUD_XXX constants were incorrect. These have been fixed.

(999) Performance Analysis code improperly placed for return statement:
If Performance Analysis was enabled for State Functions and if a function had a return statement that was not on it's own line, the code inserted to gather the statistics was improperly placed. (It was inserted on a line prior to the return statement instead of inline before the return statement.) This has been fixed.

(944) State Variables can be declared with no type!:
If a State Variable's type is cleared when data exists in other fields of the State Variable, an error will now be flagged when leaving the row.

(965) Creating new State Variable/Function could cause crash:
Creating a new State Variable or Function and immediately clearing all fields to delete it will cause an exception on creating the next new State Variable. This has been fixed.

Note that a State Variable or Function can also simply be deleted by clicking the row header cell and then pressing the Delete key.

(966) Duplicate action names cause action menu creation to fail:
This has been fixed. Further, error messages will be now flagged in the splash screen banner and in the confirmation dialog when LSL actions are manually re-loaded.

(968) Eliminate selection flicker on code completion:
On choosing a code completion item, sometimes the text would briefly highlight when being replaced. This will no longer occur.

(484) Parsing standalone string with missing ending quote:
In the previous release, a string in entered LSL code with a missing end double-quote would not always flag an error. A specific error message will now be issued in this case. indicating the missing double-quote.

Note that all strings entered in LSL code within MiceOnABeam must only be entered on a single line. Use "\n" within the string to enter a new line character.

(959) Code Completion should not work on comment lines:
The auto-completion feature is now disabled within strings and comments.

(669) Search results did not show highlighted in previously opened property editors:
In previous releases, text in an already opened Properties Editor that matches a search was not highlighted when that Properties Editor was activated from the Search Dialog. This has been fixed.

(790) Accented letters in string flag coding error:
Non-English characters in strings would cause a parsing error in previous releases. This has been fixed.

(829) TRACE_XXX functions not generated if only placed within state functions:
In the previous release, if a call to one of the TRACE_xxx functions was only placed within a State Function and nowhere else, the corresponding code for the specific TRACE_xxx function was not inserted into the generated code. This has been fixed.

(135) Moving a State Editor window will clear the Undo/Redo history.
In the previous release, moving a State Editor cleared the Undo/Redo history. This is no longer the case.

Note however that resizing a State Editor will continue to clear the Undo/Redo history.

Known Issues

(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.

(224) Crash on startup updating Splash Screen:
Particularly in Windows 7 installations a rare crash may occur on startup of the MiceOnABeam program after displaying the initial Splash Screen. Code has been put in to detect this issue and avoid aborting the program.

A work-around for the problem if it still occurs is to disable the Splash Screen by de-selecting Show Splash Screen in the General pane of the Tools/Options menu.

(1032) Functions cannot be defined within Compiler Directives within Custom Globals:
Incorrect parsing errors will be flagged if a function is declared within Compiler Directives (such as #if...#endif) within the Custom Globals LSL code entered for a model. Assuming a correct function definition, these parsing errors can be ignored and the function will be properly included in the generated code.

(1094) Crash when entering LSL code that wraps to another line:
This problem occurs when typing in code that starts to wrap to another line. It only happens when using of one of the "grid" code editors where line wrapping is enabled such as the LSL Action Wizard, State Variable & Functions Editor, State Variable Configure Options editor & the Edit User LSL Actions editor. It will not occur in the other standard editors (State Entry/Exit Action, Transition Action, etc).

A workaround for now is simply to avoid wrapping code lines as you're entering in one of the grid code editors by resizing the code field (enlarge the editor dialog) to accommodate the code you plan to enter. An alternative is to copy the complete code for the field prepared elsewhere (i.e., Notepad) into the field.

Tags:
Home: MiceOnABeam Product Documentation Copyright © 2010-2018 MiceOnABeam Software