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 v1.4.8 v1.4.9 v1.4.10 v1.4.11 v1.4.12


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.


patch: v1.4.8 released: 12.15.99


                                                                                        
  A new Layout LScript function called targetobject() has been added.
  This function, given a source and target object identifier, along
  with a time index, will return the heading, pitch, and bank values
  required to make the source object's Z-axis normal face the target
  object.  (This function was added to support a NewTekniques article
  that provided automated weapons targeting.)

  Because targetobject() returns these three rotational values as
  a vector, its output can be piped directly into the Item Motion's
  set() method:

      ...
      ma.set(ROTATION,targetobject(me,source,time));
      ...


                                                                                        
  Reentrancy has been a problem for Layout LScript in certain
  situations.  Specifically, when objects have dependencies upon
  each other and "Show Motion Paths" has been enabled.  In order to
  properly update the display, Layout will often call a plug-in's
  process() function even while the plug-in is already in its
  process() function handling another instance.

  A new instance stack mechanism has been implemented to handle
  these recursive calls to process() by Layout.  Among other things,
  it enables objects to have dependencies upon each other.


                                                                                        
  A few other minor bug fixes.


patch: v1.4.9 released: 12.18.99


                                                                                        
  The instance stack mechanism introduced in thE last release had
  some hidden issues.  After some quality therapy, those issues have
  been addressed.


patch: v1.4.10 released: 1.19.2000


                                                                                        
  Certain error messages were performing NULL pointer dereferencing
  under particular circumstances.


                                                                                        
  The getfile() function was using character buffer sizes that would 
  hold only up to 99 characters.  This has been greatly increased,
  approximately double the operating-system standard size of 256
  characters.


                                                                                        
  The pointinfo() function, only valid during a MeshDataEdit session,
  was not correctly being trapped when no edit session is active.


                                                                                        
  The readVector() method was incorrectly reading floating-point
  values into variables declared as doubles.  These two numeric
  values have completely different internal sizes and formats.


                                                                                        
  Static memory allocations made for the instance mechanism were
  causing the Alpha run-time plug-ins to more than double in size.


patch: v1.4.11 released: 3.10.2000


                                                                                        
  The Image chunk of a compiled LScript was not being recognized by
  the Layout run-time system.  This was causing images embedded in
  the compiled script to be improperly prompted for when it was run.


                                                                                        
  The pre-processor would not properly ignore/regard pragma
  directives that were enclosed with an @if/@end conditional
  sequence.


                                                                                        
  The run-time name construction system, introduced in release 1.4,
  (over a year ago!) was not working properly to construct function
  names when those functions were called with arguments.


                                                                                        
  The number() function was not handling all valid data types.


patch: v1.4.12 released: 9.1.2000


                                                                                        
  The modulo operator (%) was not functioning properly with integer
  values.


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