LScript Patch Release Notes

LScript Patch Release Notes

v1.4.1 v1.4.2 v1.4.3 v1.4.4 v1.4.5 v1.4.6
v1.4.7


patch: v1.4.1 released: 03.15.99


                                                                                        
  As a result of a new "buffering" mechanism, the pointmove() function was
  moving points in a relative fashion, instead of treating the provided
  coordinates as absolute locations (as they were in v1.3).


                                                                                        
  The new garbage collection mechanism contained a bug that reclaimed function
  memory in both the caller and the called functions upon return from the
  called function!

patch: v1.4.2 released: 03.17.99


                                                                                        
  The writeln() method had been inadvertently ommitted from the save()
  i/o object when a new function jump table was implemented.


                                                                                        
  Only the first Layout script to link in an external Object Agent Library
  (OAL) could do so successfully because of an oversight in the Layout
  LScript code.

patch: v1.4.3 released: 03.31.99


                                                                                        
  The internal callback functions that support the ctlrefresh() and
  ctlvisible() requester commands were munging LScript's run-time stack.

patch: v1.4.4 released: 04.07.99


                                                                                        
  The setvalue() function was not performing sanity checks and data
  conversions where certain Panels controls were concerned (such as
  popup controls).  The symptoms of the problem were that the correct
  value was not appearing in the control after setvalue() was called.


                                                                                        
  The ctlrefresh() and ctlactive() functions were behaving in a mutually-
  exclusive fashion.


                                                                                        
  Although it was documented in the original v1.4 release notes, Point
  and Polygon identifier usage in mathematical expressions was not
  complete in the LScript code.  Thinking I had completed this feature,
  I documented it in the release notes.

patch: v1.4.5 released: 04.20.99


                                                                                        
  An unforseen side effect of the correction to default value assignments,
  UDF arguments were being ignored in the pre-/post-increment code because
  of their (new) special type designations.


                                                                                        
  The Camera Object Agent fStop() method was actually returning the camera's
  focal distance setting.


                                                                                        
  Certain Camera- and Light-specific methods were incorrectly given to the
  Mesh Object interface.


                                                                                        
  Added a 'range' data member to the Light Object Agent.  This contains the
  maximum range (in meters) of the intensity falloff if this setting is
  enabled, and the light is not distant.


                                                                                        
  Added a 'null' data member to the Mesh Object Agent that contains a
  boolean true/false to indicate if an object is a Null.


                                                                                        
  Corrected the Tab requester control code to correctly recognize and
  handle ctlimage() data on pages.


                                                                                        
  Images placed on panels (with ctlimage()) now have the ability to
  be active or inactive (i.e., they can be used with ctlactive()
  callbacks).  When inactive, they are rendered in black and white.


                                                                                        
  Altering the value of a control using setvalue() while a panel
  was active (i.e., from a callback) did not invoke that control's
  registered refresh callback function.  This is not a bug, as it
  is a situation not explicitly handled by Panels (for good reason),
  however the lack of this type of handling was causing some
  problems with properly refreshing some controls.  A new mechanism
  in LScript now deals with this situation.


                                                                                        
  A new integral object method has been added called hash().  This
  method, useful only with character strings, will return an integer
  value that represents a calculated hash value for that string.  The
  array type also responds to this method, and will calculate a hash
  value for all string elements in the array.


                                                                                        
  Array duplications (which take place when an existing array is
  assigned to a variable) were only duplicating the contents of
  the source array in the target.  Other attributes of the source
  array, such as its dimension count, were not being duplicated.
  In cases of where multidimensional arrays are assigned to existing
  linear arrays, the target array would remain linear.


                                                                                        
  A new integral object method has been added called crc().  This
  method can be used to derive a CRC32 value for the data type.  In
  the case of arrays, all the elements in the array will generate
  a CRC32 value that will be added to the total for the array (making
  it the preferable method of equality testing for arrays).


                                                                                        
  As a result of poor design, the requester callback mechanism was
  treating the ctlactive(), ctlrefresh() and ctlvisible() settings
  as mutually exclusive.

patch: v1.4.6 released: 05.02.99


                                                                                        
  Character string arguments passed to a UDF were not being set to the
  correct data type, and as a result, were being discarded by the memory
  manager along with other temporary memory.


                                                                                        
  The Shader API function raycast() has been added to the LS/PT Shader
  Object Agent's toolbox.  Raycast() is essentially a faster version of
  raytrace(), accepting the same parameters, but only returning the ray
  length.  No shading is evaluated, and no recursive raytracing takes
  place.


                                                                                        
  Internal corrections and updates have been effected in order to
  successfully build LScript v1.4 for the Mac PPC platform.  Changes
  in the PPC compiler between updates broke LScript's Object Agent
  loading code.


                                                                                        
  The ctlimage() requester function has been hooked into LScript's
  internal component search engine.  This means that all defined
  search paths will be used to locate the image file it is not
  immediately visible as it is referenced in the script.  If the
  image cannot be found in any of the existing search directories
  (locations that LScript remembers when it prompts you to locate
  script components), it will now prompt you to locate the image
  referenced, and will remember that location in subsequent searches.


                                                                                        
  The LScript internal component search engine has had it's maximum
  number of maintained search paths reduced from 100 to 20 for disk
  space and run-time memory considerations.  As a consequence, the
  search engine will "age" search paths each time this maximum amount
  is reached.  The oldest path in the list will be discarded each time
  a new path is introduced.

patch: v1.4.7 released: 06.03.99


                                                                                        
  Images referenced by ctlimage() were being ignored by the compiler
  if they were not immediately visible by the name provided.  The
  compiler will now prompt you to locate images that it cannot find
  through its existing search paths.


                                                                                        
  The code in the effectedby() function that dealt with Bones contained
  an endless-loop condition that would cause Layout to hang if one or
  more bones were referenced.


                                                                                        
  The effectedby() function could potentially crash the application if
  no valid object names were provided.


                                                                                        
  The component search engine was performing selected-file comparisons
  in a case-sensitive fashion.  This resulted in failed searches.


                                                                                        
  The Scene Object Agent's 'fps' data member was being returned as
  an integer instead of a floating-point value.


                                                                                        
  The polyinfo() function was running horrendously slow.  This wasn't
  really apparent until the function was called repeatedly in a loop.
  The reason for this was that polygon points were processed each
  time to determine their index values--each call to polyginfo() scanned
  all the points in an object to determine point order.

  A new generate-on-the-fly point indexing scheme has been implemented
  in LScript.  A point's index order in the mesh is not calculated until
  the point is used in a fashion that would render it as an integer (i.e.,
  in a mathematical expression or an array index).  Distributing this
  overhead on an as-needed basis increases the polyinfo() function's
  processing speed by more than two orders of magnitude.


LScript v1.4.7 Archives
(contains all plug-ins)
Intel SGI Sun Macintosh Alpha

LScript v1.4.7 Àla carte
(you may need to Shift-Click to download)
Intel SGI Sun Macintosh Alpha
LS/DM LS/DM LS/DM LS/DM LS/DM
LS/GN LS/GN LS/GN LS/GN LS/GN
LS/IA LS/IA LS/IA LS/IA LS/IA
LS/IF LS/IF LS/IF LS/IF LS/IF
LS/OR LS/OR LS/OR LS/OR LS/OR
LS/PT LS/PT LS/PT LS/PT LS/PT
LSC/LW LSC/LW LSC/LW LSC/LW LSC/LW
LSC/MD LSC/MD LSC/MD LSC/MD LSC/MD
LScript LScript LScript LScript LScript
LS-RT/DM LS-RT/DM LS-RT/DM LS-RT/DM LS-RT/DM
LS-RT/GN LS-RT/GN LS-RT/GN LS-RT/GN LS-RT/GN
LS-RT/IA LS-RT/IA LS-RT/IA LS-RT/IA LS-RT/IA
LS-RT/IF LS-RT/IF LS-RT/IF LS-RT/IF LS-RT/IF
LS-RT/OR LS-RT/OR LS-RT/OR LS-RT/OR LS-RT/OR
LS-RT/PT LS-RT/PT LS-RT/PT LS-RT/PT LS-RT/PT
LS-RT/MD LS-RT/MD LS-RT/MD LS-RT/MD LS-RT/MD