Inner Space:Build 3874 to 4330 Release Notes

From Lavish Software Wiki
Jump to navigation Jump to search
          Inner Space
         Version 1.09
 (c) 2004-2008 Lavish Software

1.08 Build 4330

- Fixed crash with LavishSettings iterator:Last on an empty set
- Fixed some other crash issues
- Fixed input problems in Vanguard: Saga of Heroes
- Fixed Vanguard game detection
- LavishNav
* Added "prism" region type, which makes right triangular prisms -- 3 vertical rectangle
  sides, and 2 triangles for top and bototm. This region type works identically to
  the triangle region type, except that the containment behavior for the Z axis is
  identical to the box region type. Z1 (bottom) and Z2 (top) are defined by the first
  two points of the triangle, and the third point's Z is ignored (and will remain 0).

1.08 Build 4317

- .NET 2.0
 * Persistent objects API added. Persistent objects are valid until something says
   otherwise, instead of at the end of a frame. Frame locking should still be used
   when accessing the objects, but the lifetime should now be less restrictive.
   Persistent objects are implemented as LavishScriptPersistentObject instead of
   LavishScriptObject. Only LavishScript types that support object persistence can
   be referenced as a persistent object. Persistent objects may be retrieved with
   GetPersistentObject, GetPersistentMember, GetPersistentIndex from the appropriate
   parent classes. LavishScript variables (obtained with NewObject) are still a
   special type of persistent LavishScriptObject.
 * GetPermanentObject is now the same as GetPersistentObject and may only be used for
   persistent object types
 * IsValid property is now added for both LavishScriptObject and LavishScriptPersistentObject
 * Fixed DLL search path
- LavishNav
 * Added 2D BestContainer. Pass 2 arguments instead of 3 to ignore the Z axis for the

1.08 Build 4310

- .NET 2.0
 * Fixed LavishScript API crash issues when using Objects.GetMember/GetMethod/GetObject
   resulting in a LavishScriptObject of a type that supports variables
- Added OnSessionRenamed event for sessions

1.08 Build 4302

- .NET 2.0
 * Application domains now unload automatically when an application's main thread terminates
 * Exceptions should be a little bit more friendly

1.08 Build 4300

- Fixed the "exit" command used in sessions not immediately terminating
- LavishNav
 * Fixed bug with importing from LSO and overlapping existing regions

1.08 Build 4299

- The "exit" command when used in the uplink will now remove the system tray icon
- LavishScript
* Fixed crash issue with object methods as event targets

1.08 Build 4294

- .NET 2.0 ( see )
 * Much of the API now has documentation in the assemblies
- LavishNav
 * lnavpathfinder.SelectPath now accepts a -dynamic switch for per-connection cost
   checking. Without -dynamic, the return value of the given atom is assumed to be
   a non-zero/zero "pass/fail" (i.e. use or do not use the connection). With -dynamic, 
   the return value of the given atom is assumed to be INFINITE for do not use,
   otherwise a floating point cost value (e.g. distance). Note that this is only
   for real-time dynamic connections. Permanent cost values can still be set for each
   connection by setting the "distance override".
 * Per connection dynamic cost and pass/fail is now available through the LavishNav
   .NET API by passing a callback to SelectPath.
 * Fixed triangle center point
 * -allpointsvalid switch now works when creating regions
 * All children of the root universe are now implicitly "unique"
 * LavishNav.NET changes:
   - AStar and Dijkstra objects should now be created with new AStar() or new Dijkstra()
     instead of using AStar.GetNew() or Dijkstra.GetNew()
   - new Path() should now work correctly
- LavishScript
 * Fixed issues with function parameter default values

1.08 Build 4292

- .NET 2.0 ( see )
* (nearly) All functions using string[] parameters now use the "params" construct
* LavishScriptAPI.Point3f class added
* LavishScriptAPI.LavishScriptIterator class added
* LavishNav API is now implemented as the LavishNavAPI namespace in Lavish.LavishNav.dll
- LavishNav
* All pathfinders are now automatically reset when a region or connection is removed
* Fixed potential crash issue in lnavregion.Connect
* lnavconnection lnavregion.GetConnection[ID or FQN] is now implemented

1.08 Build 4290

- .NET 2.0 ( see )
 * Assemblies are no longer required to be placed in the Global Assembly Cache to be
   loaded via the DotNet command. The main Inner Space folder and the .NET Programs 
   subfolder are searched by default. Assemblies can be loaded by path relative to 
   the Inner Space folder.
 * LavishScriptObject class now includes a GetLSReference function, which can be
   used to pass a LavishScript object to methods that require an object reference,
   such as lnavpathfinder:SelectPath or objectcontainer:GetIterator.
   ex (C#): ExecuteMethod("GetIterator",new string[] {MyIteratorObject.GetLSReference()})

1.08 Build 4282

- .NET 2.0 "scripting" support is now available
 * ISXDK 29d provides API for managing .Net assemblies and bootstrapping API
 * DotNet command can be used to load assemblies, list active "application domains"
   as well as unload application domains.  Any number of assemblies can be loaded into
   a given application domain.

1.07 Build 4252

- Default console binding is now changed to be friendlier to our international friends.
 is found to exist will be used as your default console key.

1.07 Build 4249

- Extension crash reporting is fixed.

1.07 Build 4247

- Remote sessions are no longer counted by the patcher
- Crashes in, but not handled by an extension, should now pop up an extension error 
 report in notepad
- LavishScript
 * Fixed memory leak in variable cleanup
 * Fixed bug that allowed ended scripts to continue to run (and on bad memory)
- LavishNav
 * Minor optimizations that should go unnoticed
 * GetConnectionIterator is now implemented
 * Fixed possibility of infinite loop in path generation

1.07 Build 4220

- LavishScript 1.95
* "Encountered empty [typecast/member/method]" messages fixed and functionality restored
* variablecase fixed
* unistring object type added
* Added string string.URLEncode
- LavishNav
* lnavpathfinder:SelectPath now accepts an additional parameter for per-connection 
  avoidance checks
* lnavregion:Import, lnavregion:Export, lnavregion:ExportChildren now support LSO output
  by using -lso as first parameter, filename second.  This format is smaller and faster,
  but not easily editable and the format is not necessarily backwards compatible, so it 
  is advisable to keep an XML copy, and use LSO if load time is important.  In the
  forseeable future, asynchronous Import functionality will be added as well.
- Added event OnFrame()
- Emulated mouse clicks and mouse wheel now pass through LavishGUI

1.07 Build 4179

- LavishNav
 * Added object type methods and members
   uint lnavregion.ConnectionCount
   lnavregion:GetConnectionIterator[iterator object]
 * Fixed FullContainer behavior for rect and box
- The Macro command makes its triumphant return (its disappearance was not intended, but
 nobody noticed until now)

1.07 Build 4174

- Fixed bug with loading XML from a buffer (hud -add fixed)
- Keyboard interaction should now be interpreted with UTF-8

1.07 Build 4172

- LavishNav v1.02
 * Fixed bug with using BestContainer from a region that defines a coordinate system.
 * lavishnav object type now inherits lnavuniverse, a shortcut to lavishnav.Tree
- Relay fixed up a bit.  Among other things, it is now moved directly into the kernel,
 rather than provided by the uplink and sessions separately.   The relay command also no 
 longer shows "session not found" error messages. Its new syntax is as follows:
   Relay <uplink name|session name|all|all local> [-echo|-event <name>|-noredirect] <message|command>
 * -echo is essentially a shortcut for -noredirect echo
 * -noredirect is the new name for -rsp, which was ambiguously named.  It should now be more obvious
    that the switch stops the output from going to the sender.  
 * relay is1 -echo ${SomeVariable}
   - Echoes the value of SomeVariable to is1
 * relay is2 echo \${SomeVariable}
   - Echoes the value of SomeVariable on is2, to the current window
 * relay is1 -event "Some Event" Parameter to Some Event
   - Executes LavishScript event called "Some Event" on is1, with a parameter containing 
     "Parameter to Some Event" (sorry, only 1 parameter possible. multiple parameters will
     be available when Lavish Virtual Transport replaces the relay system)
 * relay somecomputer.is1 -echo HELLO FROM THE OTHER COMPUTER!
   - Echoes "HELLO FROM THE OTHER COMPUTER!" in is1 on somecomputer
 * relay somecomputer.is1 press -keylist
   - Retrieves the list of available keys on somecomputer.is1, for display in the current window
 * relay is2 -noredirect press -keylist
   - Retrieves the list of available keys in is2, and displays them in is2

1.07 Build 4148

- Yet another reworking of the character encodings.  All known issues with UTF-8 should
 be fixed
- Remote uplink disconnect detection issue should be fixed
- Added events
 OnSessionConnected(string name)
 OnSessionDisconnected(string name)
 OnSessionRenamed(string oldname,string newname)
 OnUplinkConnected(string IPAddress)
 OnUplinkDisconnected(string IPAddress)

1.07 Build 4126

- Keyboard state should no longer be sticky when switching applications with DirectInput
 games (e.g. EverQuest 1)
- Emulated mouse positioning should now work better in the background
 Neither should anyone else.
- Virtual Input now handles non-client areas of the game window.  This fixes the bug with 
 clicking on World of Warcraft's title bar or borders after patch 1.12.

1.07 Build 4123

- XML files, including Settings files, now correctly use UTF-8.  Any localized files
 previously used will need to be converted.  LavishScript files are expected to be
 UTF-8 encoded as well.  Note: If you have no idea what this means, then you
 probably don't need to worry about it.

1.07 Build 4086

- Stability update

1.07 Build 4084

- Several stability fixes
- Added object type members:
  • The press command should no longer get confused when pressing alternative input device buttons

1.07 Build 4075

- LavishSettings update.  The LavishScript objects for the LavishSettings system, to replace
 the present "dataset" object type, "SettingXML" object, and "XMLSetting" command, are now
 available and documented here:
 The old objects and commands will soon be marked as deprecated and will begin spitting 
 warnings about removal.
- Virtual Input is now permanently active, regardless of input system selection.  Please
 report any remaining input bugs.
- The Uplink now also uses Virtual Input
- Added object type members:
 bool gdiwindow.AlwaysOnTop
 string gdiwindow.Frame
- Cedega users should no longer be shown the DirectX 9 update requirement box, as the
 detection failed.

1.07 Build 4042

- The April 2006 update to DirectX 9 is now required.  If this is not installed on your
 system, a box will pop up upon running Inner Space that will allow you to hit OK to
 be taken to the download, or hit Cancel to find it on your own.
- LavishScript 1.93 -
- UTF-8 encoded localization strings should now stay valid instead of disappearing
- The uplink "Focus" command now accepts a session name as a parameter
- The "-rsp" switch now works in the session relay command

1.07 Build 4009

- Fixed shift emulation issues in Virtual Input
- Logitech G15 macro keys are now supported for binding with the Virtual Input system 
 enabled.  Note that this should not interfere with the G15's keyboard "profiler", but
 would work best through Inner Space with the profiler disabled.  Also note that using 
 the M1, M2 and M3 keys will not change the backlighting at this time -- however, they
 may of course be bound to select a new set of binds for the G1 through G18 keys.

1.07 Build 4008

- LavishScript 1.92 -
- Fixed number pad issues
- Mouse positioning issues with Virtual Input have been cleared up
- EverQuest 1 screen sizing issues have been cleared up
- LavishScript event added
 * On Window Position(bool Stealthed)
   (Stealthed is if -stealth is used with WindowPosition or -rescale is used with
- The default startup script now automatically applies mouse scaling to EverQuest 1
- "Targz" LavishScript module (which adds support for tar/gzip) is now included by default.
 This module is somewhat incomplete, but supports extraction of standard tar (with or
 without gzip compression) files, and is open source if anyone wants to add missing
 features (see

1.07 Build 3990

- Inner Space's stealth system is now disabled by default.  This should only be enabled
 if you feel you have something to hide, and may subject you to stricter rules in games,
 particularly those that detect such stealth systems (World of Warcraft is now doing so).
 Stealth can be enabled by game configuration option, by object method, or by extensions.
- Added object type members:
 bool innerspace.Stealth
- Added object type methods:
- Fixed issue with middle mouse button in EverQuest II

1.07 Build 3983

- Added object type members:
 intptr mouse.TranslateX
 intptr mouse.TranslateY
 floatptr mouse.ScaleX
 floatptr mouse.ScaleY
- Mouse position transformation (with the mouse.Translate* and mouse.Scale* objects
 described above) can now be used to fix cursor positioning issues with games that 
 make incorrect assumptions about window sizing (such as EverQuest 1).  Mouse transform
 is only available with the Virtual Input system.

1.07 Build 3982

- LavishScript 1.91 -
- LavishNav 1.01
- Alternative input devices are now supported.  Any axis, directional-pad or button can 
 be queried through the Input object, and buttons also work directly with the Inner Space
 bind system.  For example, the Nostromo n52 Speedpad2 can be configured with a 
 DirectInput profile to bind its keys independently of the keyboard -- the n52 doesn't 
 have to be a simple keyboard emulator!
 A new InputDevices.xml contains settings for customizing button, d-pad and axis names.  
 Without custom names, names of these inputs will be the names provided by the manufacturer, 
 which are usually generic and do not coincide with the label on the device itself (for 
 example, the Saitek command pad has buttons 1-9, mode A and mode B, but the button names 
 in the software by default are Button 0 through Button 10).  InputDevices.xml will be 
 device is installed and attached.  That session can be closed, the XML modified, and the 
 session restarted to immediately begin using the new device with customized names.  In my 
 testing, I chose to name the Saitek command pad buttons cp-1 through cp-9 and cp-A, cp-B.  
 The Nostromo n52 internally allows for 24 buttons, but I chose to name the first 15 buttons 
 n52-01 through n52-15 as labelled on the device.
 If an input device tries to use a name that is already in use, it will be prefixed with that 
 input device's session-specific device number -- e.g. the number is not necessarily
 going to be the same next time you load the same game, particularly if input devices are
 later attached or detached.  For this reason it is important that the keys are uniquely named,
 but short enough to be practical to use.
 Successfully tested devices include:
 * Nostromo n52 Speedpad2
 * Saitek Command Pad
 * Xbox 360 controller
- Fixed double-clicking issue in Virtual Input system
- Key name resolution (for binds, press, release, etc) now accepts virtual-key codes in place of 
 key names.  Note that code numbers under 256 are standard Win32 virtual-key codes (sans mouse 
 buttons).  256 and up are generated for alternative input device buttons.
- Added object types:
- Added Top-Level Objects:
 input Input
- Added LavishScript events:
 OnButtonUp(string Name)
 OnButtonDown(string Name)
 OnButtonMove(string Name, bool Pressed)
 OnAxisMove(string Name, float Position)
 OnDPadMove(string Name, float Position) -note: 0.00 to 360.00 clockwise, -1 for "at rest"/middle

1.06 Build 3915

- LavishScript 1.90 -
- Fixed flashing/tearing issues in some games, including EverQuest II and Half-Life 2 games
- PixelSearch spam removed (oops)
- Inner Space will now set its current directory to its installed location, rather than 
 allowing itself to be run in the context of another directory
- Improved Virtual Input system for DirectInput keyboard handling.  This solves keyboard
 problems with Auto Assault, and probably other games.  There is still a mouse sensitivity
 issue to work out.

1.06 Build 3893

- Fixed problem with game settings getting reset to defaults
- Fixed Inner Space UI display in some games
- Virtual Input system now available for testing.  This input system can be selected per game
 in the Game Configuration tab of the configuration window.  Selecting Virtual Input will
 cause the other input systems to be ignored.  This system will eventually replace the
 separate Win32 and Direct Input systems built into Inner Space, and solves various problems
 with games that use both Win32 and Direct Input (such as Auto Assault).  This new input
 system has been successfully tested with EverQuest, EverQuest II and World of Warcraft.
 We are still working on testing other games to make sure they will all work properly with
 the new system -- please let us know if you try this new system with a game, and how it goes.
 To head off questions about games that use software mouse cursors (such as World of Warcraft
 if the hardware cursor option is disabled), no input system will automatically allow Inner
 Space to use the software cursor for interaction with its UI, sorry (that must be done per
 game with a custom extension).

1.06 Build 3889

- Various crashes fixed
- Localization updates.  There is now a Language folder which may contain XML setting files
 for localization.  English.XML is created by default when Inner Space first runs.  An
 option for Language now appears in the configuration window.  Change the name of the
 language and restart to switch languages (only English is currently available direct).
 English will always be loaded first as a fallback, followed by the selected language.  The
 complete language file will be saved when Inner Space (e.g. the combination of English, plus
 anything in the given language file).  Thus, if you change the language to "Spanish" (note
 not exist, or if it did, any extra phrases that were in English but not Spanish would be
 added to the Spanish file.  This makes it easy to perform a translation simply by switching
 language names, restarting, and then editing the new Languages\Spanish.XML such that the
 values are replaced with the Spanish terms or phrases (not the "Name", which must remain
 the same).
 The localization currently only affects the tray menu, but will be continually extended.
- Added object types:
 * localization
- Added Top-Level Objects
 * Localization

1.06 Build 3874

- LavishScript 1.89 -
- LavishGUI 0.71 -
- LSModule v16
- ISXDK v29 
- Made some changes to reduce frequency of ISXDK updates
- Fixed crashes in XML parser from very long elements

See Also