ReleaseNotes:Planimate 5.33 Release Notes
5.33o (not released)
- NEW Item "following"
A mechanism has been added enabling an item's position on a spatial link/track to be used to adjust the position of a map, the idea being to keep the item centred whilst the map moves under it.
This is achieved in model code, the operations added provide the basic support. This feature creates no performance impact if it is not enabled.
For usage details refer to the Map Demo Model (5.33o)
- NEW System Attribute s.FollowLimit (0 by default) This acts as a "safety valve" so a model only gets a movement broadcast when it specifically asks for one.
When set AND an item with s.ItemFollow set takes a step on a link/track, PL will decrement this limit then send the new "_follow item" broadcast.
*** It also causes no subsequent periodic item animation. ***
The idea is that the modeller has an opportunity to shift/change the layout (eg: map) THEN force a repaint.
This attribute is automatically zero'd upon pause. Only set it to 1 at this stage.
The force repaint re-anables normal animation until another item step triggers the broadcast.
- NEW Item System Attribute s.ItemFollow This signals to PL which item "follow".
It can be set in code or by clicking the "Follow" line in the popup which appears when the item is clicked in edit mode.
See s.FollowLimit on the effect of setting this.
- NEW Broadcast "_Follow Item"
This is sent when an item with s.ItemFollow set takes a step as described above. It includes attributes:
_panel : Panel ID of panel item is on
_location: Object ID of link or track item is on
_id : Item ID
_x,_y : bottom left iFlow co-ordinate of item
To follow an item with a map:
- use map to determine (longitude/latitude) of the x/y point
- set the map's centre to (longitude/latitude)
- update the map and let map update object/bendpoint positions
- forcerepaintpanel containing the map
- Set s.FollowLimit to 1 again so the next step will be
broadcast to you
After doing this, the repaint will show the item in the centre with the map having moved under it.
NEW Viewport option : "Keep Client Size Even" This should be turned on for viewports containing a map on a panel with "Auto Fit Panel To Window" turned on.
This eliminates one pixel jitter of a followed item, which was caused by the map panel having an odd width and/or height.
- FIX To prevent co-ordinate errors the Map Paint Object always works in an even number of screen pixels. If you set it up on a panel which has even width/height at the time of edit, make the paint object have even width/height then look at it through a viewport with the "Keep Client Size Even" then you will not get the unused row/column of pixels that will appear on the right/bottom of the map display if its size is not even.
TIP pressing keypad minus when resizing shows a dialog of the co-ords
- FIX Memory leak when retrieving users of a label list
- SPEED Cleanup (further) windows message processing by using MSG structs
- The following changes enhance the performance of the Map Paint Object
- A new version of the MapDemo model (the reference model on using the
- Map Paint Object) will be available in the idBase Developers Tools
- region. It includes use of a tile DB file, easier configuration
- and support for zoom to mouse cursor.
- Documentation for this model is on the wiki:
- Existing models should be compatible with this version but 2 changes
- are recommended in existing map code:
1) Replace the 4 lines which set properties ObjectXPosition, ObjectYPosition,
ObjectXScale and ObjectYScale with one call to SetObjectPos() which is far more efficient.
2) Use the _panel_visible broadcast to update the map's position
(remove _panel_opened or other catches of this broadcast if present)
- NEW System broadcast '_Panel Visible" is sent to a panel when it becomes visible, whether because it has been selected to the main window, displayed in a popup or is now appearing in a viewport.
It is not sent to a panel at run start if it is already visible.
A panel will receive this broadcast before any previous panel receives the "_Panel Closed" broadcast and before the newly received panel receives the "_Panel Opened" broadcast.
Process this broadcast as quickly as possible and do not attempt to close the panel that is just appearing within the broadcast.
- NEW The map "SetLongLatXY" operation now takes into account any changes to the map zoom property without needing a repaint. This enables smoother updates when using this operation to keep the map centred on the mouse when zooming.
- NEW Map operations "SetLongLatXY", "LongLatToXY" and "XYToLongLat" now quietly do nothing if the map is not on a panel which is visible. Without a window they dont have a co-ordinate space to operate over.
- NEW Added and renamed mouse co-ordinate access system attributes. They are now:
MouseX,MouseY: The mouse co-ordinates in Planimate's cartesian co-ordinates where (0,0) is the bottom left pixel of the panel in the main window.
MouseXWindow,MouseYWindow (used to be MouseXPanel/MouseYPanel): The mouse co-ordinate in Windows' co-ordinates where (0,0) is the top left pixel of the panel in the main window.
MouseXOwner,MouseYOwner: The mouse co-ordinates in Planimate co-ordinates where (0,0) is the bottom left pixel of the first visible panel above the location where the reference is made.
This is useful for determining the co-ordinates on a panel which is in a viewport. In this case the code needs to be in a portal under the panel.
- NEW Routine operation SetObjectPos(obj,x,y,xscale,yscale) enables an object to be positioned and scaled in one efficient operation.
x/y specify the objects centre xscale/yscale set the scaling as a percentage with 100 = no scaling
- FIX Map Paint objects will now work in a popup which has been scaled.
- NEW The graph horizontal time scroller has a tip over the "resize" area
- FIX PBA's built with 5.33l would not "advance to time" properly and would likely have other issues due to the FEC being left in background event processing mode.
- NEW Deferred Drawing option added to train, gantt and column graphs. This causes changes to the graph to be rendered behind to scenes (quicker) and then the graph to updated all at once.
Future versions will auto-cache the rendered data when the graph is redrawn without the data having changed.
Tip: for faster graph updating, set a non zero update interval as it prevents repeated updates as data in the table is changed.
- CHANGE Graph views changed to avoid recalculating internal graph data if the table driving them hasn't changed and they haven't been moved.
- SPEED Optimisation to graph view line/bar drawing
- CHANGE The "Restart When Model Stops" option does not take effect when the system is in editing mode. This prevents models auto restarting when editing.
- FIX Reworked low level event handling to fix issue with listview controls and Window 8 Consumer Preview.
PL now works in Windows 8, previous versions would have problems with model editing, which uses the listview in various dialogs.
- FIX Train Graph and Gantt Graphs no longer cause fault if their table has columns removed while they are visible. Streamlined redraw code for transparency case.
- FIX Made Auto X Scale "on" by default for newly added gantt and train graphs.
- FIX Some printer drivers not handling transparent background attribute views
- FIX On some systems with multiple nested viewports, fit to panel and resize broadcasts enabled, nested resize broadcasts would generate system error 1134 which indicated a pause with a background-process event still pending.
The engine now checks for this and processes to completion all such events.
This may also clear up some cases of a missing panel resize/update that gets cleared up when continuing the run.
In addition to the fix, the diagnostic message is no longer reported in a PBA.
- FIX The label list combo in the attribute editor was not getting its length initialised properly causing it to pick the wrong initial label for longer labels that differed beyond the 10th character.
- CHANGE Engine: events posted in "Background" mode such as resize, page printed etc are not interruptable in PBAs.
- CHANGE engine: streamlined the main event processing loop by combining a few termination tests
- NEW Implemented setting the x scale range for gantt and train graph views. The Auto X scale option is now enabled for these graphs and it is on by default. It must be turned off to make setting the x scale effective.
- NEW Table View properties MinYValueRHS and MaxYValueRHS, can set the RHS Y axis range for log driven graphs with the secondary RHS axis enabled and Auto Y Scale disabled.
- CHANGE Reworked how object rectangles are managed to make it easier to manage the special cases (queue/dispatcher) which dont have the bottom left as their internal origin.
- FIX Edit time Ctrl-click/drag on a map (to drag the objects in the view) now updates the co-ordinates of the objects in a different way which hopefully achieves the goals of putting the centre of the object at the right position, keeping any object views in sync with the object and correcting any corrupted object bounding box which made it impossible to click or select the object even though it was visible.
- NEW Scale Parameter: X Scale Label Margin
This sets the minimum padding (in pixels) between adjacent x-scale labels.
PL omits scale labels if they are within this margin (too close).
Reducing this value enables scales with labels which are closer together
- FIX The sub label list editor will now remove all members from a sub label list which are not in the "selected" list - including labels which no longer exist in the parent label list.
Previously it would leave such labels even though they did not appear in the sub label list dialog.
- NEW Improve Column Overlay editing including detail display, Swap To Line and Duplicate of overlay items. Scale display cleaned up to not show unsupported RHS parameters for this graph type.
- NEW Column Overlay graphs in "Vertical Bar" mode have a new option: "Arrange Overlays Side By Side".
This distributes overlays horizontally (based on their width) centred on their bin value. It is very useful for multi-column histograms.
You can use the X Scale margin to add space for the bins at the edges of the graph, typically about 10% margin is enough.
- NEW Column Overlay graph option "Allow Negative X After Margin"
This enables the X scale to extend before 0 and is useful when using the "Arrange Overlays Side By Side" option where the first bin is at 0.
- NEW Graph view properties: MinXValue,MaxXValue,MinYValue,MaxYValue
This enable querying and setting the x and y data range for graphs with manual X/Y scales (the setting is ineffective if auto x/y scale is enabled).
Reading is supported for Column Overlay, Log Driven, Train and Gantt graphs.
Setting is only supported for Column Overlay and Log Driven graphs as Gantt and Train Graphs do their own management of the underlying graph object.
- FIX Column Overlay graph scales update to source changes on a redraw
- FIX Made line style names consistent between labels and selector
- NEW Clicking on an entry in Message Entry mode now displays the time and sender of the last message received from the entry.
A new option enables an item to be created at the entry which
triggers the code (as for clicking ona broadcast entry). This is useful for development/debugging.
- NEW Pipe behaviour with broadcasts has changed.
Previous versions would continually resend a broadcast every pipe update when an enabled trigger such as Target At Target Upper Limit occurred. If the modeller didn't stop the pipe or change the target, a broadcast storm would result.
From this version, a broadcast for an ongoing condition is only sent once whilst that condition is maintained, For the target upper limit case, if the target drops below the upper limit then goes above it again, then another broadcast is sent (see below about this).
If the pipe is stopped and restarted (using the pipe control attribute) then another broadcast is sent if there are any active conditions.
if the new Pipe option "Only Pipe Stop/Start Resets Broadcasts" is set, then the pipe wont rebroadcast when the target drops below the upper limit and goes above it again - a stop/restart is needed to reset the broadcast sending.
This change enables a modeller to be notified of a condition (such as the target reaching a threshold) but for the pipe to continue operating because the model is waiting upon other conditions to be met before taking action.
- CHANGE Improved multi-monitor support
Changed the window creation code to remove clamping the window width/height against the primary monitor, instead it now clamps against the virtual desktop area.
This prevents viewports from being restricted when a window is stretched across multiple monitors or onto a monitor which is larger than the primary display monitor.
- FIX The browse folder dialog now supports a default (currently used when selecting a DB for importing icons)
- NEW Managing Pipes with s.PipeTableRow and the "ObjID Column" setting
Pipes can now automatically find which row of a pipe table to use for storing their control, rate, limiting and other properties. This avoids the use of Matched Cell lookups in the pipes, which is very, very bad for performance.
The pipe needs to be associated with a configuration table that the modeller builds and maintains. This is done by setting the "ObjID Column" pipe object setting to a column refernce of a table. This column needs to be populated with the Object IDs of all the pipes that refer to it.
WIth this set, a pipe can then use the new system attribute s.PipeTableRow as a row index to the SAME table. This will be calculated at model start to point to the correct row for the pipe.
s.PipeTableRow is evaluated very quickly (as quickly as a constant).
The pipe table must NOT have rows added or removed at or above any rows that pipes are using. Appending is OK.
A dynamically added pipe (created based on a template which references a config table) will look for itself in the table, so the entry for it needs to be added there before creating the pipe.
You are not limited to one pipe configuration table but you MUST make sure that your pipe's settings use the table which matches the ObjID Column table.
Clicking on a pipe in edit mode will display the table and row index that the pipe is using.
The modeller has a table called PipeTable with columns
PipeID : contains pipe object IDs Control : pipe control values (0, 1) For each pipe, setting this will put it under control of the table: ObjID Column : t.PipeTable.Column(c.PipeID) Run Control : t.PipeTable[s.PipeTableRow][c.Control]
- SPEED References to s.Clock will be faster
- FIX Fixed a typo in the table column editor
- NEW It is now possible to work with tiled maps without having to install a folder with thousands (or hundreds of thousands) of small files.
Planimate's DB Admin Tool enables packaging of a tile folder into a DB file. The Map View can then be configured to fetch tiles from that DB instead of looking in folders. More details below.
- NEW DB Admin tool has new option to import a tileset into a DB file. The DB file must be initially empty. You can create an empty DB by typing a new name when the DB Admin Tool offers to select a DB.
You need to select the top level folder of the tileset (the one containing folders for each zoom level).
Only one tileset can be in a given DB file. DO NOT name it with a preceeding underscore, you must specify it explicitly in the Map View object. If it has a preceeding underscore, PL will waste a lot of time scanning it for regular icons.
A tile DB file must not be the model DB and cannot be merged into a standalone EXE, it gets shipped as a separate file which resides in the same place that the tile folder was.
Avoid using the icon mover or DB Admin Tool on a tile DB, it will be *very* slow when there is a large number of tiles.
Be aware that DB files are limited to 2GB in size at this time. The tiles are efficient, 120,000 tiles result in about a 150MB DB file.
Keep a backup of your tile folder (best done in a zip or 7z) in case you plan to alter it. There is no tool to extract the tile folder from the tile DB at this stage.
- NEW The Map View Paint Object has a new option "Fetch TIles From DB File". This causes it to treat the tileset name as the name of a DB file instead of a folder name.
The DB Admin tool can be used to import a tileset into a DB file.
NOTE 1: Multiple map view objects using the SAME tile DB will all load a separate copy of the DB index. With 150000 tiles this will use 15MB of RAM per view, not a great problem but it does allocate many memory objects.
Viewports of the one paint map object are not affected.
NOTE 2: Multiple map views with the "Cache Tiles In Memory" option and DIFFERENT tile DBs is not supported. The tile cache only supports one DB, so you will need to turn the cache option off on Map Paint objects which use a second, third etc. tile DB.
Generally a model will only need one tile database.
- CHANGE You can now type a name into the file dialog when opening the DB Admin tool, this will create a new DB file.
- FIX FillSteps option for AddStaticRoute
- NEW Routine operations AddStaticRoute and RemoveStaticRoute enable adding and removing routes (as edited under the Track-Routes menu) under model control.
AddStaticRoute(route_name, route_id, starting_cell, step_count, fill_steps) RemoveStaticRoute(route_id)
Both use route_id to identify which route. Adding using an existing route_id replaces that route, otherwise a new route is added. If route_id is 0, a new id gets allocated. The route_id used or allocated is returned.
Deleting a non existent route is silently ignored.
Starting_cell references a cell in the table. This points to the top of a column of portal object labels. 'step_count' specifies how many rows will be put into the route.
The fill_steps option allows PL to auto complete route steps when it is instantiated. Note the route steps added remain as specified.
It is imperative that any route modified or removed not have any items using it at the time. This is not supported and will likely result in Planimate seg-faulting.
If the objects are not all portals and all on the same panel, a model stop occurs.
- CHANGE Renamed the Change object File option "Write Free Text As Cell" to "Dont Binary Quote Text Cells"
- NEW Change object File Read (DAT files) now supports reading raw data into a free text column (not quoted binary data) when the option "Dont Binary Quote Text Cells" is enabled.
- CHANGE These routine operations can now set a text string instead of only working with label lists, depending on whether their target attribute is formatted to a label list or as text.
AppendToLabel RenameLabel ExtractFileName ExtractFileExtention ExtractPathName
- FIX Reporting of out-of-range column in Change object File Read/Write
- SPEED Optimised route step management, reducing memory usage and model file size by removing obsolete unreferenced data and taking advantage of route steps always being portals.
- NEW Gantt views now support an optional new column "_layer"
This enables blocks to be positioned behind/in front other blocks.
By default all blocks are drawn on layer 0. Adding the _layer column enables say layer 1 and 2 to be used. Layer 1 blocks will be drawn in front of layer 0 and layer 2 to be drawn in front of layer 1.
Its important that layer numbers start from 0 and increment by 1. (each layer increment step involves another pass through the data).
- NEW System attribute s.LastRunStopTime
This gives the simulation clock that the previous run stopped at. It is set at the same time as s.LastRunStopReason.
- NEW Gantt Views now support an optional column "_yoffset" enabling individual bars to be offset relative to each other on a row.
The value is specified as a percentage of the maximum possible bar size after taking into account the global gantt bar width.
For _yoffset To be useful, the _width of the bar must be less than 100, otherwise it has no space to move in. This is set using the existing _width column capability.
Column Column Result: _width _yoffset 100 0 The bar fills as much as of the row as the global gantt view _width determines. This is subsequently called its "maximum height". 50 0 The bar is half its maximum height, and centred 50 100 The bar is half its maximum hieght and top-aligned 33 -100 The bar is 1/3 its maximum height and bottom aligned Bar labels are offset accordingly. Used in conjunction with the _layer capability, very complex data can now be overlaid in the one Gantt View.
- NEW Ctrl-X is now supported in the table editor/views.
If the selection is all columns, the selection is copied then cut. Otherwise PL just beeps.
- FIX The in-place editing field for routine editing could extend off the edge of the window if the routine step edit window had a scrollbar. This made it difficult to inspect and edit long statements.
- FIX Planimate was not responding to loop break requests when the advance to time dialog was active (advance dialog was receiving notification but its state wasn't being tested in one instance).
- FIX Remove some obsolete testing from route fill finalisation code
- FIX Inner about box credits updated
- CHANGE Renamed routine editor "Expand Collapsed Blocks" to "Expand Collapsed Blocks In Selection", reflects better what it does.
- NOTE For a recap of development last year, Planimate's 2011 Feature Summary is at:
- NEW Standalone EXE version information
This is only available to Planimate users with a PBA Compiler key (level 4 license).
The "version" information that Windows displays when hovering over an application or checking Property/Version of an application in Explorer has can now be set for a Planimate Based Application (PBA).
The "Standalone EXE Creation" dialog has a Versioning button to configure the settings (which are saved with the model for next time).
The versioning is actually performed by a separate standalone executable called "VerPatch.EXE" which Planimate calls when making the PBA. Licensed users can access this on idBase in the Planimate Development Tools region. The EXE must be placed in the same directory as Planimate's executable. It will work for both 32 and 64 bit builds.
The way the EXE is called is specified in an INI setting [PBA] VersionCall= ...
You should not need to modify this as the PBA builder subsitites the values entered in the UI.
- CHANGE PBA Compiler options/settings for "App Icon", "Windows Icon", and "PL EXE To Use" are only available to users with a PBA compiler key license (level 4 license).
- NEW Multiserver option 'Low Priority 0 Delay" This configures the multiserver so it is a zero delay but the event is posted with a low priority so other FEC events at the same time will be processed first.
This is useful where a large number of updates are happening at a time and you want to perform some final processing after everything else is completed.
Typically flow order, messages and broadcast-wait dispatchers can help order activity but in some cases the system is too parallel and this option can help.
This delay mode is not pauseable and is mutually exclusive to the "pauseable 0 delay" multiserver mode.
- NEW Can "Find" multiservers with "Pauseable 0 Delay" and the new "Low Priority 0 Delay" options.
- NEW The 64 bit version of Planimate has new behaviour when loading DLLs which will make it easier to manage both 32 and 64 bit versions.
If loading a DLL which doesn't contain "64", the 64 bit version will change the name to include "64". If the load fails, it will fall back to using the name as selected.
Hence in a model that loads "MyDll.DLL".
A 32 bit version of Planimate will only load "MyDll.DLL".
A 64 bit version of Planimate will try load "MyDll64.DLL" first then if that isn't found, it will try "MyDll.DLL" (which then must be a 64 bit DLL for it to work).
When using this feature and editing your model's DLL call, you will need to have both 32 and 64 bit DLLs and select the version without the "64". For example, select "MyDll.DLL". PL will load "MyDll64.DLL" automatically.
- NEW Routine operation "ShowAboutBox"
- NEW The Advance To Time / Advance For Interval dialog has a new checkbox "Ignore Breakpoints" which will cause breakpoints during advance to be ignored. NOTE:This gets reset when the model engine restarts.
- NEW Can select "Clear on save" option from table creation dialog
- FIX Pipes no longer update bin areas when hidden
- FIX The "Replace" reference dialog now accepts a To Line > than the line count in the routine (clamping to the last actual line).
- FIX Sidebar reset after building PBA. Change in 5.33a caused hierarchy to disappear.
- NEW SetPanelProperty and GetPanelProperty routine operations, work with the new _panel_properties label list.
Initially a few panel options are available as run-time settable properties, more will be added as requested.
- NEW Engine option "Realtime BCast Within Events". This facilitates lockup/detection handling by enabling a real time broadcast to be sent while another event is still being processed.
s.RealTimeBCInEvent enables reading and changing this in code.
It should be left OFF for normal interactive models.
- CHANGE Reworked pause timer handling so it can be used in /BATCH mode. Some of the changes in 5.33 have been reversed to enable this.
- CHANGE Rework pause handling for case of item moving between objects indefinitely. It now uses the timer thread instead of just counting.
- CHANGE Full background debugging menu is now shown in User Mode to prevent getting stuck in a model. PBAs and end user only keys will not show the debug items.
- FIX Editing border radius for multiple selected objects now works
- FIX Sidebar hierarchy was not being hidden when loading a model which starts in usermode. This issue was introduced in 5.32p.
- This version has an enhanced routine DLL calling architecture
- The PLDLL API is now at version 9 and adds new functionality,
- makes it easier to document parameters / columns and streamlines the
- creation of DLLs for developers.
- PL remains compatible with DLLs supported by 5.32r. The new API is
- recommended but to get the most out of it you will want to rework
- your code.
- Licensed Planimate users can contact InterDynamics for the DLL API.
- NEW The way the routines in a DLL are specified has been streamlined removing the use of many small tables which made the code hard to work with.
The definition is mostly set up in two multi-column tables, one defining the routine operations and the other defining all the parameters.
The framework includes many new DLL-side integrity checks:
- initialisation time testing of DLL parameters being defined consistently in the 2 configuration tables. - the option to provide parameter enums in the parameter configuration table, which ensures the enum refers to the parameter that the DLL coder expects - testing within the Inline functions which access the various parameter types to ensure that the data type of the parameter matches the function being invoked on it (enabled in _DEBUG builds only) - range checking and error popup services for the coder to use (see below) This is on top of the PL side validation that is performed on the DLL before it is called.
- NEW New callbacks enable a DLL to access PL's value formatting/parsing services, read table and read column titles and Get/Set table cells using formatted text (including "Free Text" columns).
- NEW DLLs can now provide comments/notes on routine parameters to PL. They can also provide expected columns names and descriptions for columns.
Note that the PL side UI is yet to be enhanced to make the most of the new information available.
- NEW DLL Table Direct mode parameters can be specified as input or output. This doesn't affect what they do but it helps indicate to the user of the DLL what the parameter affects.
- NEW DLL support for "optional" parametes which can use s.NullAttribute as a placeholder instead of actual data. This helps consolidate multiple calls in cases where some variants use additional tables (eg; for logging).
- NEW A DLL can check if PL is running as a model or a compiled PBA. This can be used to enable/disable detailed debugging messages.
- NEW Range checking services for Table Direct columns, rows allocated and rows in use, with option to display a diagnostic message on failure. The message will include the name of the DLL parameter and the name of the corresponding Planimate table that it is associated with (in the DLL call).
- NEW PL's DLL configuration menu "Save Mappings" and "Load Mappings" can be used to save/reload the DLL parameter / attribute reference associations. This is useful if the DLL changes but the parameter names are (largely) the same. It helps reestablish associations when an input parameter becomes an output.
- Other features:
- NEW The Purge Attributes menu option now offers to purge unused label lists and broadcasts as well after it has purged the attributes.
- NEW New system attribute s.Planimate64 will be true if the Planimate executable running is a 64 bit version.
- FIX Better support for multiple monitors Table list etc. appear on monitor with PL window.
- FIX Reference List for SubLabel and MultiLabel lists now use same handler as for regular label lists, the references window is bigger and enables browsing
- FIX The simulation clock used to not update on the first item animating on a flow (ie: zero time) after an advance to time when the continue/pause dialog was disabled.
The clock is now updated not only for this case but during advance to time.
- CHANGE A model error for a model running in user mode in a regular Planimate (not a compiled PBA) with an editor key will present full debugging options.
- CHANGE For an editor, PL will always enable pausing of a model when processing a broadcast regardless of the "Check For Pauses During BCasts" option, even in "User Mode". This will assist when a model being deeloped gets into a loop.
If the user has a "run only" key or is running a compiled application, the plaform will act as previously.
- CHANGE The "Recently loaded" models list now removes entries which fail to load. It will remember all loads including models set to load in user mode. As previously, the recent list plays no role for a compiled PBA.
- CHANGE The "Run For System Close BCast" option now only applies if the model is in User Mode or a compiled application. If closing a model in edit mode, PL wont start the engine to send the close broadcast. If the model is already running, the close broadcast will get sent.
- CHANGE A "Show Lock" set by loading a model with the "Defer Display Until Model Loaded BC" option is reset when switching to edit mode.
- SPEED Handling of the advance-to-time dialog improved to reduce its load on the model. Was performing unnecessary testing every new-time event. Now uses the timer thread to rate control itself.