ReleaseNotes:Planimate 4.92 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


BUGFIX: "Find" would crash if trying to locate a table column. It now brings the owning dynamic panel to the front.
NEW: Private item attribute option
These are relevant to class mapping. If a subsystem contains a class with private item attributes, these attributes are not set or returned to the "external' item class which is being mapping into or out of the subsystem.
BUGFIX: Fixed comment display in attribute listing dialog
BUGFIX: Table comments are now included in model report
NEW: Implemented tupling across classes when mapping classes into and outof a portal. This applies to both item attributes and item table references.
Matching names get mapped unless the INTERNAL item class has the "private" option set for the attribute/table reference.
A new "Report" button in the class mapping overview will display a summary of the attributes/table references that the internal class is allowing to be tupled and indicating which ones are actually matched by the external class.
BUGFIX: Data set file name browsers (menubar and routine generated) now use any extention provided in the filespec as a default for any new filenames typed in without extentions rather than defaulting back to ".SCN"
BUGFIX: The "default" dataset name used when loading a dataset using the menubar is now set to the first used dataset's default filespec and extention, rather than defaulting to an SCN file IF a data set has not yet been saved in that PL session.
This will make life easier for users if the modeller is not using the ".SCN" extention in their datasets and the menubar dataset load/ save options are being used
NEH: The file browser shows the file type instead of just putting "Selected Files" in the file type dropdown
BUGFIX: More careful about locking out the model explorer browser when stuff is happening where a panel change is undesirable (eg: positioning an object, editing a note)
BUGFIX: Item Table references now get renamed when the item table ref in a class is renamed
BUGFIX: Item table references also merge when 2 item classes are merged during a paste
BUGFIX: Using SET with 2 tables should now completely copy a table if the target table is totally empty (no rows, no columns)
Also should work if the target table has the right # of columns but no rows
NEW: The "Round to N" operation is now useable for entire columns as well as individual numbers
NEW: When naming a subroutine in a call, there is now a dropdown to select existing routines from
BUGFIX: Fixed bad code in the "redirect" of object labels when a portal is copied (from


). Might work properly now :)
NEW: Now "redirect" panel and paint object labels when a portal is copied
BUGFIX: Copying lines from subroutine will now copy the parent routine's attributes and offer to include them when pasting, just as occurs when copying lines in a parnet routine.
NEW: After routine lines are pasted and PL has asked and copied parent routine attributes, it now offers to do a purge of unreferenced routine attributes.
NEW: Now use a hierarchy selector for the selection of panels as button targets, inherit bases etc


BUGFIX: Paint objects & Control Attribute Scope
Another related issue fixed - was not re-initialising paint objects which were run-time inherited, causing their attrefs to fail.
Also was not re-ionitialised temporary copy paint objects created during the run as part of the inheritance update process


BUGFIX: Paint objects & Control Attribute Scope
An internal update is performed after a change to a paint object's options by the copy properties operation. This should fix scoping issues


For testing

  • NEW: Paint objects have a new option "Scope Control Attribute To Parent"

When this option is set, the visibility control and state control attributes (where present) for the paint object will be looked up using the scope of the parent object of an object instead of the scope of the paint object itself.
This means that paint objects throughout a model can share a control attribute located in scope of their ancestor object without the control attribute having to be in scope of every paint object in the model that wants to use it.

  • NEW: Object label "redirection"

When a portal is copy/pasted, the platform will now update any object references (ie: object label list labels) within the portal to point to the copies of the reference. This will help keep copied portals intact when they reference objects within themselves using labels.
This will also work when a portal is copied to another modem, however it is known that the object label names chosen may not match the object name when it gets pasted, particularly for the "top level" portal; something to be aware of.

  • BUGFIX: Copy pasting between models was broken when references to the class label list were used (and maybe in other cases) as the platform was not properly handling a structure being "unavailable' during the copy/paste process
  • cleaned up object label list to make it directly store SimObjects. This removed a lot of old testing and error handling code
  • rewrote way that attrefs are "scanned" for updates, initialisation etc



Spatial links, pipes and shared routines were broken in


  • SPEEDUP: Setting attrefs now faster as the "is it writeable" test has been sped up
  • SPEEDUP: Comment lines are skipped in the routine handling code which should speed up models with many comment lines/separators



No visible new features in this release and file format hasn't changed since


Rewrote AttRef code - there is now a distinction between the "data scope" that an attref has data access to and the "owning scope" within which it exists. Now make use of the structures introduced for scoped label lists.
Included rework of:

  • all routine operations
  • special operations such as search,conditions,multiconditions
  • simulation objects like multiserver, pipes, spatial links, trays
  • paint objects (visibility, state control)
  • views (visibility)

Each Attref will now use 8 bytes of memory more (additional caching)
I've optimised the code so constant-during-run attrefs and normal table references should be noticeably faster.
The rewritten code will enable better copy/paste and more scoping options to be considered.


  • BUGFIX: Wait for broadcast dispatcher option fixed:

The item would wait forever if ALL broadcasts were processed in 0 time

  • BUGFIX: fixed bug in resizing boxes with mouse introduced with



  • BUGFIX: reworked object hierarchy to make it possible to directly report which paint object causes an attribute referencing error and to properly highlight objects if they are not on the current screen

Known bug - if a paint object causes a referencing error as the result of a force repaint, the paint object will be identified and the routine name/line of the calling routine will be shown but not the object containing the routine.

  • BUGFIX: When an paint object is set to another paint object using the copy paint properties routine operation, objects which inherit from the object being updated will also get updated with the *changes* that the target object experienced.
  • BUGFIX: table editor crash when trying to edit a column which was referring to a label list which had become out of scope
  • NEW: Pressing an arrow key while dragging an object switches to keyboard movement mode (so you can let go the mouse button and continue moving the object with the keyboard.

Capslock should be off so the keypad can be used. <ENTER> accepts or <ESC> cancels. Co-ords are displayed in the titlebar

  • NEW: Pressing keypad "-" enables the co-ords of the currently dragged object to be entered numerically

Co-ordinates are specified using the planimate canvas co-ordinate system (0,0) is at the lower left of the panel area
If a resize is active, the width/height of the object can also be changed
This is a first release of significant new functionality in Planimate for initial testing.
These are a key part of the Version 5 we are moving towards.
Scoped Item Classes: -------------------

  • Item classes can be scoped to a portal (currently in item class edit menu)
  • This means that their flows can only exist in the scope of that portal
  • This keeps the portal self contained. Copying the portal will create a separete item class for the copy and the 2 will be isolated from each other
  • Scoped item classes will have access to scoped label lists (which global item classes do not) encouriging the modularity further

Class Mapping: ------------- The idea here is to provide a mechanism where a module (a portal) can be pasted into a model, carrying with it not just attributes and tables but also label lists and item classes (with their attributes) which it uses internally. The goal is that the module can be pasted (singly or multiply) into another model without any of its internal code interfering with existing model code, or with multiple instances of itself.
Scoped item classes are an important part of this as even if common global class names were somehow agreed upon, different modules would need different attributes and use the same named attribute differently. By scoping, this usage is kept local and isolated.
To work within an existing model, a mechanism is required to "map" the existing, outside or "external" classes in a model to the private, local or "internal" classes in the module being pasted in. This is provided by the "Class Mapper" and is a new option in the edit menu for a Portal.
The class mapper specifies how external classes are mapped to internal classes in the module as items enter (and also the reverse when items leave the module)
Items can enter a portal in the following ways:
1. via flows 2. via a apatial link/track 3. messaging to the portal 4. via a broadcast 5. via a wormhole 6. via a throw
Methods 1 and 2 are currently mapped by the class mapper. As the item enters portal it gets "translated" to an internal item for the portal. As it leaves, it gets translated back to the external item.
Method 3 will be in a later release. 4 should already occur due to the existing broadcast mechanism for class translation (see below though).
5 and 6 wont be supported for modules as they are not modular by nature.
The translation process involes copying matching item attributes (see below) as occurs in "tupling" with tables and between different item classes.
An external item survives while an internal item is inside a portal where a mapping has occurred. It gets put "aside" until the item leaves the portal whereupon its attributes are updated.
This whole process works both in lookahead (looking into the module/portal to determine if it has capacity, the module looking "out" to see if there is capacity for an item that wants to leave) and "lookthrough" (looking right through a module with no capacity to see if what is on the other side has capacity for an item to move.
It should also work recursively (modules inside modules). It has been challenging to ensure the mappings undo changes to the item attributes during the lookahead process at both incoming and outgoing interfaces and this needs testing.
Upcoming enhancements/fixes

  • At the moment, all item attributes with matching names are copied when translating external to internal and coming out again. This can expose what should be "private" attributes within the module so a "keep private" item attribute option is planned to enable the module builder to specify exactly which item attributes feed in/out of the module
  • A report of the class mappings and matching attributes which a given module will transfer. This report will help document the "API" of the module and help ensure that all expected attributes are properly defined in the external scope
  • Carried items to be transferred between the external and internal items on the way in/out
  • The ability for a module to produce an item without one entering and the class mapping to properly occur as the item leaves the module
  • Table references to be treated similar to item attributes as described above
  • If a class is mapped, the module is not able to assign routes/link targets for the external item. A mechanism to enable this needs to be developed (though this raises the issue - how does the module know about the external network)
  • A mechanism to "insulate" modules from scoped broadcasts is intended. This will prevent a module having its internals activated by modeller broadcasts in the model it is pasted into unless those broadcasts are specifically targetted at it.
  • Get the actual inter-model pasting working smoothly

This mechanism will slightly slow down items entering and leaving a portal even if scoped classes are not used. I can probably optimise this if it has a great impact. As far as I know existing models that dont use scoped classes should not be affected (run wise) by the new mechanism and I'd appreciate testing to confirm that this is the case.


  • BUGFIX: "Full Edit Menu With BC" also applies to the table's row select menu - ie: makes it available when cell click broadcasts are being sent.


  • NEW: Table view option "Full Edit Menu With BCs"

This shows the full editing context menu when a table cell is right clicked even if an edit broadcast is being sent.
This option is automatically turned on for models saved with


AND the "Dont Defer BC on FEC" option on, since the intention of the latter option is to enable BCs to be sent on edit whilst retaining full editing of the table under modeller control, with the context menu retaining all its options.


  • NEW: new system (display) attribute "Enable Table Cell Edit"

This enables the modeller to decide whether a cell edit should occur whne a table cell is clicked, using the cell click broadcast.
If the model sets this attribute nonzero while processing a table cell click broadcast (before edit) then the edit will actually occur. If this attribute is not set, the edit will not occur (as is current).
This attribute is reset to 0 before each cell click broadcast gets sent.
It is only valid to set/read this attribute in the initial thread of a cell click broadcast.
For this feature to work, the table view option "Dont Defer BC on FEC" must be enabled. This forces PL to send the BC immediately rather than waiting until a "safer" time. With this option "on" the modeller MUST NOT close the panel containing the table view as a result of the cell click broadcast, otherwise the platform will crash.

  • BUGFIX: panel window reading now returns correct co-ordinates (client based) for child windows
  • BUGFIX: Popup windows can now be closed using the close box while the model is running


  • New file format, save and reload models with this version before proceeding to use it
  • NEW: ODBC data source Username and Passwords These can optionally be read from an external file. This file is scrambled and generated by a small separate executable.

To use the external file, in the username and password fields preceed the filename with an "@" and append an "|1" for the username field and "|2" for the password field.
eg: for username you might have @mypassfile.dat|1
The filename can be remapped in the model's INI file as is possible with other files referenced in Planimate. This enables the end user to keep the exact path of the file out of the model/standalone EXE.

  • NEW Added YYYYMMDD time mode
  • NEW debugging - animation speed can be changed from the background run menu
  • NEW routine operations under "Display" PanelWindowLeft, PanelWindowTop

Return the co-ordinates (windows screen co-ords, top left of window is origin) of the given panel (if its visible).
This can be used to re-open the panel at the position when it gets hidden.
If the panel is not visible (-1.-1) is returned.

  • BUGFIX: sensor entries correctly reported if there is an attribute reference error (eg: table row error) in their reference
  • BUGFIX:draggable popups are now also draggable when PL is paused
  • BUGFIX: attribute editor handles selection of a different label list without having to change mode back to values first
  • BUGFIX: sub-routine editor edits parent routine attributes when attributes is selected from the menu (subroutines should not have their own attributes)
  • BUGFIX: Paint buttons
  • if dynamically sizing to text and have a bitmap set, the border is determined before drawing the bitmap
  • tooltip is registered after rectangle has been updated not before
  • background colour (if set) is shown before background image and the border (if set) is shown after

This means that buttons can be used with transparent bitmaps and a background colour instead of the background colour being 'hard coded' into the bitmap (which caused problems if the background colour in the bitmap was (0xBC,0xBC,0xBC as this is the transparent colour)

  • mouse down state image is properly shown when the engine is running (backing store is in use)
  • BUGFIX: Routine attribute dropdown updated after a line is edited (in case routine attributes were added)
  • BUGFIX: File loading had a leak if an attempt was made to load a model which was older or newer than supported, and it did not properly clear the database cache if a model load failed to occur.
  • CHANGE: rewrote item interaction saving to support multiple classes with the same name (to support scoping)
  • CHANGE/BUGFIX: scope of control attribute for views is now the same as the scope of the data for the view, rather than the scope of where the view is located.
  • SPEEDUP sped up/inlined counting of items as they enter/leave objects


  • properly check whether to send BC on a row append in an empty table view (if a user appended a row to an empty table, could cause crash)
  • panel link checks if in edit mode for popups as well as normal panel links.

The message to "add a link now" indicates that it wont be inherited (doing an inherit at "click" time isn't supported by the framework).

  • edit -> label list can be selected when viewing a panel (uses the dynamic scope of the panel being viewed)
  • creating new label lists now has handling for selecting global or local scope rather than defaulting to local scope (new checkbox)
  • label lists can be moved to a different scope
  • scope added to item classes (not fully implemented yet, dont use)
  • PLANIMAT.INI file only gets read once when Planimate starts up
  • Added INI file items for the object palette posistion and icon size.

ObjPalCellLimit sets the icon size, if 0 the default (currently 32) is used.

  • New display option "Edit: Include scope for portal atts" will include the owning portal name in portal attribute references in routines (if avail)
  • Have renamed the options in the "display options" dialog to try get some order in there and the picker lists are kept sorted.
  • Attribute display popup (debugging) is wider
  • The run background menu contains a new option if a routine window is open and a routine is being stepped through, "Change Stepping Interval"

This enables the stepping speed to be altered as the routine executes.
The setting made here is specific to the currently active routine window and will remain in place for that window until that routine window is closed. (ie:the INI default is used when the routine editor window is reopened)

  • extra internal debug checking during ocpy/paste, proper checks to handle copy/paste of label lists between models. If any new "system error" type messages appear, the debugging has caught something that was slipping through before.
  • display and debug menus, Display Options now renamed Modelling Options


  • The popupmenu code no longer locks screen redraws while a menu is being tracked. This will prevent the blank screen during routine type selection
  • paint buttons have a new option on each state: "Mouse Down State"

If a state of the button has this option set, then instead of changing the border style when the button is moused in, the button will switch to this state instead.
This gives the modeller more flexibilty in how the button looks when the user actually clicks in it.

  • Panels have a popup option enabling them to be draggable at runtime from any position IF they dont have a normal dragbar and the click is not on any button.

If the panel "Palette Style" popup option is also set, the window will be a popup rather than a child of the main window as is the default for windows without a titlebar.
This option is useful for creating "remote control" type panels.

  • Attribute and Cell Views have a new option "Broadcast to View's Scope"

This causes view edit broadcasts to be scoped to the scope of the closest dynamic panel to the view rather than the scope of the attribute which owns the view.

  • 4.33 version Entries in scheduled arrival mode with a loop point set now get a very large "end time" set to prevent them from "drying up"
  • Scheduled entries which have no outgoing flow no longer stop the run with an error
  • New _!System.DB included with the proper planimate logo BMP therein


  • Added extra handling in the switch loader so old switches which contained a time schedule (even if they were not using it anymore) can be read without errors


  • search window wider to accomodate wider attribute names
  • changed way tables are brought up to date after a routine operation so scroll broadcast processing does not cause IFTableVoid errors (as for



  • bugs with change object icon defaults fixed
  • fixed a very long standing bug: If icon selection palette was moved (or a redraw was required of the main window) after the last instance of an icon in the model was changed to another icon, the redraw would cause a crash
  • routine options dialog z-order fixed
  • new object palette icons

Mattias has provided some nice new icons and buttons for the object palette.
(time to leave 16 colour land)

      • You will need to start using the _!SYSTEM.DB provided with this EXE ***


  • more work on scheduled entry reading when loading 4.33 models
  • fixed bug with INI file RoutineFormatW note: this value sets the size of the formatting area to format into (in characters) for each routine line


  • Scheduled entries should now be a bit more compatible with older version entries when loading 4.33 models. If on a periodic arrival a "loop" point was set, then the item limit is now set to "infinite" (-1) so the entry wont "dry up" after one item.
  • The modeller can set the minimum formatting width for the routine editor's display of routine lines in the INI file

[Routine] RoutineFormatW = xxx
Run this version to create the default entry (0) in your INI file.

  • Items inspected in breakpoints always have details and attribute displayed
  • Label lists have an option to not clear the list when it gets imported from a file
  • a forced repaint is done before a breakpoint dialog is shown
  • swapped name and scope columns in in scope/name lists so the name gets selected not the scope


  • fixed table column bug (tables referencing label lists caused a crash when Planimate lost focus and transferred the data to the system clipboard because the copy table didn't have an "owner" to determine its scope from)
  • side effect of above fix: when a panel/portal is deleted, any table in the copy/paste buffer is deleted.


  • entries in single event time mode now "start" properly if a delayed schedule entry start is used
  • fixed a bug in the distribution pattern dialog editor if it was cancelled
  • Have reworked code so sections and loops "know" their connecting objects rather than having to fetch them from a table. This will speed track networks up.
  • This version will now read 4.33 models which still contain object stats (it quietly eats the stats) so they dont need to be removed.

New Track Options (from



  • New track section type "Double (Other Road On Closure)"

Works like No Overtake except if a road is closed, then the train may used the other road if its available

  • Loop Option "No Following Trains" has been split up into "No Following Trains (Forward)" and "No Following Trains (Reverse)"

This enables a loop to act as a junction in one direction and a signal (allowing following trains) in the other.


  • wider fields in condition and decision dialogs to support the longer attribute names
  • palette has bigger cells and hover labels; partial progress towards new palette design


  • The width of names has been increased to 32 characters

This applies to:
o Planimate Modelling Objects o Label, Sublabel, Multi label (the list names, not the labels .... yet) o Attributes (Portal, Item, Routine) o Item class Names o Table names o Column tuple name o Route names o Routine/subroutine names
PL now stores these names in fixed arrays rather than dynamic strings so models will use more memory but incur less fragmentation of RAM.

  • Updates to handle the longer names include:
  • status bar now resizes according to width so it can fit long class names
  • splitter editor, item class editor, item class selector
  • Attribute reference formatting field is wider
  • Routine editor field trimming
  • double clicking on a splitter edits interaction for first class entering it
  • Tables, Attribute and (new) Label List browsers use more common code and include a "scope" column.

(Edit -> Label lists will enable view/selection of all label lists in scope)

  • Routine Editor: Have reworked the field trimming code for each routine line, so now more of the attributes in a routine line will be shown if the space is available.
  • available width updates as the window is resized
  • longer attrefs will be trimmed proportionally more than shorter attrefs
  • A number of objects/structures have been coalesced to reduce memory allocations, fragmentation and increase speed.
  • this includes significant recoding of:
  • Entry, Exit, Change (Icon), Dispatcher, Queue, Multiserver, Splitter
  • Table (tuple cache), Table and column dependency lists,
  • Routine Loading
  • Conditions and decisions
  • Cleanups to the attribute/table/label managers to commonise code and remove lookups that are no longer needed (due to new scope code)
  • Rework item code for speedup and allocations
  • items that are "destroyed" in an exit are kept in a cache for quick re-use. This cache has been extended so
  • if the item was carrying items, the "carry list" is retained if the item doesn't change class.

This means if only a few instances of an item class every carry items, and there are many other instances of that same class which dont, then its best to either:

  • not destroy the "carrier" items, re-use them OR
  • make the carrier items a different item classes.
  • if the class of the re-used item hasn't changed, internal tables used to store attributes and item-tables are kept allocated
  • A structure used for info panels was being allocated for all items if any item attributes were set for info panel display.

This structure is now only allocated if the item is actually made visible with the Show Info Panel option "on".

  • the item's code has been "inlined" much more giving more speed
  • Table title width has been increased and the create/edit fields are now consistent for the maximum length they allow
  • Sped up and reduce memory of label references:

The new "scoped labels" meant references to these (millions in large models) were both too slow and using more memory.
I've reduced memory usage where the reference isn't referring to a label (eg: its a constant scalar or attribute)
I've increased speed by added a cache during runtime.

  • Fixed a big bug introduced in


which caused run performance to gradually degrade. Blocking switches were mismanaging an internal cache causing a memory and speed leak as the cache list grew
  • The loading of many objects has been reviewed and optimisations/cleanups done to reduce unnecessary allocation/copying during the loading process.

This will result in faster loading and less memory fragmentation.

  • clean up to table row name handling (sloppy when first non empty row label was added or loaded)
  • Run profile shows more internal model metrics which come in useful when determining where the memory is going.
  • sped up checking for user breaking out of an iteration/search
  • speed up: The simulation clock is now a faster-to-access global variable
  • sped up condition/comparison code (separating comparison and logical tests, integer only for logical tests), inlining, rework the double comparison code to avoid wasted evaluation in doing a "max()"
  • Distribution Pattern dialogs had to be reworked to be compatible with scope and still be efficient when a distribution was not actually being used

  • Cleanups to supporting scoped label lists.

Still to be done:

  • Saving/Loading scoped label lists from data sets
  • Migrating lists between levels
  • Handling "Put into subsystem" for top level lists (they stay at the top)
  • Creating label lists on the fly located in a portal

As models get bigger, the number of allocated memory blocks causes performance problems in the memory allocation system. Planimate deals with this in several ways including unused event and item caches, coalescing as much as possible into tables and using "contained" objects rather than pointers to allocated objects.
The challenge is to trade off

  • a linear increase in memory usage vs
  • an exponential slow down in memory manager performance due to the increaing number of objects.


fixed bug - copied splitters lost their split information


(built with MSVC++6.0)

This versions adds support for scoped label lists (like attributes/tables).
The menubar "Edit->Labels" continues to contain existing label lists (global) which will remain global (for now).
A portal/portal entry will have a "Labels" option to enable a label list to be created within that subsystem.
Scoped label lists will "osbsure" any label lists further up (or global) with the same name, as for attributes and tables.
To be added:

  • migrating label lists between levels in a hierarchy
  • ability to create "global" label lists which will automatically become scoped when the top level model is "put into a subsystem"
  • inspecting/editing label lists in the current scope via the edit menu.

This release involved significant rewrites. It's been tested with some of our recent and biggest models so loading/runtime seems OK. I've not tested editing very much.

I'm expecting modellers should be able to migrate to using this series if their model loads and runs OK. Feedback that it is robust is essential as I diverge away from 4.33

  • Distribution pattern

Removed lots of old code for setting units/format which was not being used but was causing a lot of interaction between distributions and the label list code

  • Cleaned up the editing of units/labels in the code, only done in one place now using a consistent data structure
  • rewrote all code pathways which involve label list references to include a "scope" which is the dynamic panel from which the reference originates.

This will enable scoped label lists just as we have scoped attributes and tables.
The change was significant and any code involving label lists must be watched carefully, particularly when scoped label lists actually start being used (rather than only the global ones as current).
Sub/Mult label lists have been enhanced to support a parent label list which is scoped. This means a subsystem using a private sub label list coukd be moved to a different place where a different parent list is in scope and the sub label list would now work with this instead.

  • reworked the way objects are used which makes the model database smaller and faster (contained tables rather than a pointer to allocated tables)
  • model merge: no longer purge unused label lists from the copied object during the merge. Eventually this will be done in a "create module" operation.
  • label list merging no longer gives option to create a new unique list. If a list needs to remain "unique" then a scoped list (private to the module) would be used.


  • fixes loading of models with non scheduled entries
  • has the vertical scrollbar fix as in


This is Planimate


/k with old code/obsolete code removed. Some of the remaining objects have been significantly changed. Warning are given about incompatability but "where" is not always shown.
Notwithstanding this, a few recent models I've tried do load.
This version will only read models saved under Planimate


or later.
  • REMOVED Single Server, Conveyor, Faciltiy, Mark, Record, Assembler
  • REMOVED the log viewer
  • REMOVED the logging system (wrote files for the log viewer)
  • REMOVED object stats/views. [Any model containing these will not load]
  • REMOVED "Global" Time Schedule support and
  • REMOVED Attribute references to global schedules
  • REMOVED Switch in schedule mode
  • REMOVED Multiserver reference to schedules [Any model containing these will not load]
  • REMOVED changling a class at a change object includes item's "Original class" tracking
  • Collapseed and streamlined internal object tables in Planimate, removed all supporting code for the above. Platform should be faster and smaller.
  • REWROTE TCP/IP support (sockets, URL processing) rewritten to use latest TCP/IP modules which I developed for idBase, enabling merging.
  • REWROTE Entry Object (Schedule Mode handling):
  • Removed support for multiple classes in schedule mode (first class leaving is now used)
  • Removed multi-line schedule mode. Just a single schedule mode "line" now and it gets edited on Object mode
  • Shortcut: double click on Entry now edits its details (the item production details, selects broadcast).
  • Converted "Schedule" mode into 2 new modes:

"Periodic Arrivals" Produces items between a "Start Time" and an "End Time" with the item IAT and the item limit count being specifiable from a distribution.
Only single items per IAT, no batches produced anymore. Use a splitter if a batch is required.
Make sure entries in "Periodic Arrivals" mode do not become blocked. Future verisons will complain about this.
"Single Time Arrival" Enables one or a batch of items to be produced at a single time.
A time and item count can be specified.
[old versions are mapped as much as possible to the new entry modes]

  • REWROTE Switch Object

REMOVED - switch interactions:

  • attribute selection mode no longer has flow specific remapping, flows are mapped numerically 0 = block, 1 = lowest path etc.
  • distrubtion seleciton mode now always distributes evenly, no flow specific probabilities.
  • priority selection, absolute path removed
  • runtime code completely cleaned up and much more efficient

BUGFIX - cyclic selection for assume no blocking switches started at the second path leaving the switch instead of the first
Remaining switch modes:
First Available: Chooses first flow which is not blocked Random Choice From Available Path: Randomly chooses between all available paths Shortest Queue Chooses the first shortest queue (or queue with empty object following) Sequential Cycles between all paths, whether available or blocked Attribute Attribute indexes which path to take Condition Single condition selects go/no go (or take second path) Multiple Condition Uses a ocndition table to determine which path to take
[old versions are mapped as much as possible to the new switch modes]

idkbase note 215