Release Notes for Second Life 1.9.0(15) Mar 14, 2006
=====================================
New features:
-------------
* FollowCam functionality allows scripts to control the camera
** Scripts on attachments and vehicles can now control camera behavior through a call to llSetCameraParams(), once they have acquired the PERMISSIO
N_CONTROL_CAMERA permission
** The script will control the user's camera as long as the resident doesn't override it (use Alt-zoom or enter mouselook, for example) and the obj
ect remains attached or the avatar continues to sit on it:
*** When multiple scripts attempt to control the camera, the last script to set the CAMERA_ACTIVE flag will have control
*** Older scripts will regain control as soon as the newer one is deactivated
*** PERMISSION_CONTROL_CAMERA permissions are revoked automatically when dismounting the vehicle using the script
** The new FollowCam scripts enable a huge variety of vehicle-following behaviors:
*** For instance, a loose camera setting allows sudden changes in vehicle acceleration to happen without causing dizzying jolts in the camera
*** By turning off the "behindness" feature, the camera will be simply dragged along, but it will not try to stay exactly behind the vehicle
*** Other parameters, like pitch (the angle at which it "looks down" at the vehicle), distance, and others, allow you to customize the cinematics o
f vehicular fun
* Improved tools for estate owners (and estate managers)
** Estate tools are a set of tools for people who own private islands.
** On the mainland they can be used by anyone to see the "rules" for a region
*** Choose World -> Region/Estate... to see settings such as whether terraform is allowed, or what the raise/lower land limits are
** They allow private island owners to set more options on a per-region basis
*** We would like estate owners to "consolidate" their estates, that is, to put more than one region per estate (Customer service can help with thi
s)
** New per-region tools include blocking flying, forcing damage on, setting "object bonus" to allow more prims per parcel (although still capped at
15,000 per region), setting PG/mature, teleporting home all users in a region, setting fixed sun position
** Region performance debugging tools include disabling all scripts, disabling physics, and getting lists of objects that are potentially slowing d
own physics ("top colliders"


** Estate owners can download a region's "RAW" terrain file, modify it, and upload it to make changes in the land
** Estate owners can "bake" the current terrain, setting it as the default for the "revert" tool and the middle for terraform raise/lower limits
** Users and groups can be added to allowed/group/ban lists for one estate, or all estates you own
** Estate managers
*** You can delegate responsibility for all the above tools (except RAW files and bake terrain) to other residents
* Improved communication between regions
** A new method simulators running each region to interact with one another has been implemented.
** This new method allows for communication between regions, rather than requiring data go through a central server
** The internal path for almost all data that must go from one sim to another far away sim (where 'far away' is defined as not touching) has been c
hanged for the following functions:
*** Teleports (via map, home, login, offer teleport)
*** IM (resident to resident, object to resident)
*** Inventory Transfers (resident to resident, object to resident)
*** Friends online/offline notifications
*** Finder information (people finder has been touched barely)
*** The exception to this new scheme is group chat
* Script errors and warnings now displayed with an icon
** By default, script errors and warnings will no longer show up as chat
*** Instead, an icon will appear above the particular scripted object
*** You may click on that icon to see the errors for that script, or select Tools>Show Script Warning/Error Window to see the script error win
dow
*** To show script errors as chat, select "Show script errors and warnings as regular chat" in the Preferences>Chat window.
** "Blue box" script errors now appear just like other script errors
** Scripts can chat directly to this output window by using the DEBUG_CHANNEL constant as follows:
*** llSay(DEBUG_CHANNEL, "Hello Avatar"

* All "Abandoned" land now reverts to Governor Linden ownership
** In the past, land smaller than 512 sq. m. would revert to Public Land upon abandonment
* Planar texture mapping
** Provides an alternate texture mapping for primitives
* Improved interaction when attaching objects
** You can now attach objects (via attach-from-inventory and attach-from-world) to attachment points that already have an attached object
** You will see a confirmation dialog with a "don't ask me again" checkbox to confirm replacing the existing item
** If you check "don't ask me again", you can get the dialog box back by going to Preferences/Popups, selecting the "Automatically replace existing
attachments" popup, and clicking on "Enable this Popup"
** The inventory item for the attached object displays the name of the attachment point...for example, (worn on skull)
** This allows you to search your inventory both for attached objects ("worn"


** Attach and detach menus show the name of the object attached to each point (once the corresponding inventory item has been downloaded)
New LSL functions:
------------------
* float llListStatistics(list l, integer operation)
** Performs a statistical operation on a given list of numbers
** Ignores list entries that are not integers or floats
** Available operations are as follows:
*** LIST_STAT_MAX
**** Used with llListStatistics to find the largest number in a list
*** LIST_STAT_MIN
**** Used with llListStatistics to find the smallest number in a list
*** LIST_STAT_MEAN
**** Used with llListStatistics to find the mean of the numbers in a list
*** LIST_STAT_MEDIAN
**** Used with llListStatistics to find the median of the numbers in a list
*** LIST_STAT_STD_DEV
**** Used with llListStatistics to find the standard deviation of the numbers in a list
*** LIST_STAT_SUM
**** Used with llListStatistics to find the sum of the numbers in a list
*** LIST_STAT_SUM_SQUARES
**** Used with llListStatistics to find the sum of the squares of the numbers in a list
*** LIST_STAT_NUM_COUNT
**** Used with llListStatistics to find how many numbers are in a list
*** LIST_STAT_GEOMETRIC_MEAN
**** Used with llListStatistics to find the geometric mean of the numbers in a list (all numbers must be > 0)
*** LIST_STAT_RANGE
**** Used with llListStatistics to find the range of the numbers in a list
*** LIST_STAT_GEOMETRIC_MEAN
**** Used with llListStatistics to find the geometric mean of the numbers in a list (all numbers must be > 0)
*** LIST_STAT_RANGE
**** Used with llListStatistics to find the range of the numbers in a list
* integer llGetUnixTime()
** Get the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC from the system clock
** Returns UTC
* integer llGetRegionFlags()
** Get the region flags (REGION_FLAG_*) for the region the object is in
** Returns an integer that is a bit field of flags
** This bitfield can be ANDed with a flag to see if that flag is set for that parcel
** Example:
**** if (llGetRegionFlags() & REGION_FLAG_SANDBOX) llOwnerSay("This is a sandbox!"

*** REGION_FLAG_ALLOW_DAMAGE
**** Used with llGetRegionFlags to find if a region is entirely damage enabled
*** REGION_FLAG_FIXED_SUN
**** Used with llGetRegionFlags to find if a region has a fixed sun position
*** REGION_FLAG_BLOCK_TERRAFORM
**** Used with llGetRegionFlags to find if a region terraforming disabled
*** REGION_FLAG_SANDBOX
**** Used with llGetRegionFlags to find if a region is a sandbox
*** REGION_FLAG_DISABLE_COLLISIONS
**** Used with llGetRegionFlags to find if a region has disabled collisions
*** REGION_FLAG_DISABLE_PHYSICS
**** Used with llGetRegionFlags to find if a region has disabled physics
*** REGION_FLAG_BLOCK_FLY
**** Used with llGetRegionFlags to find if a region blocks flying
*** REGION_FLAG_ALLOW_DIRECT_TELEPORT
**** Used with llGetRegionFlags to find if a region allows direct teleports
FollowCam family of camera scripts:
-----------------------------------
* llRequestPermissions(agent_key, PERMISSION_CONTROL_CAMERA)
** Requests permissions
*** Note, PERMISSION_CONTROL_CAMERA permissions are only supported for attachments and vehicles at this time
*** Accepting permissions via a dialog is not currently implemented.
* llClearCameraParams()
** Resets all camera values to their default.
* llReleaseCamera()
** Returns camera to the agent.
* llSetCameraParams([])
** sets up the camera movement rules based on the parameter list
*** CAMERA_ACTIVE (TRUE or FALSE) Default = FALSE
**** Turns on or off scripting control of Scripted Camera
*** CAMERA_DISTANCE (0.5 to 10.0 meters) Default = 3.0
**** Sets how far away the Scripted Camera wants to be from its subject
*** CAMERA_PITCH (-45.0 to 80.0 degrees) Default = 0.0
**** Adjusts the angular amount that the Scripted Camera aims straight ahead vs. straight down, maintaining the same distance. Analogous to 'incide
nce'
*** CAMERA_FOCUS_OFFSET (<-10,-10,-10> to <10,10,10> meters) Default = <0.0, 0.0, 0.0>
**** Adjusts the position of the Scripted Camera focus position relative to the subject
*** CAMERA_POSITION_LAG (0.0 to 3.0 seconds) Default = 0.1
**** How much the Scripted Camera lags as it tries to move towards its 'ideal' position
*** CAMERA_FOCUS_LAG (0.0 to 3.0 seconds) Default = 0.1
**** How much the Scripted Camera lags as it tries to aim towards the subject
*** CAMERA_BEHINDNESS_ANGLE (0.0 to 180.0 degrees) Default = 10.0
**** Sets the angle in degrees within which the Scripted Camera is not constrained by changes in subject rotation. 180 effectively turns behindness
off.
*** CAMERA_BEHINDNESS_LAG (0.0 to 3.0 seconds) Default = 0.0
**** How much the Scripted Camera lags as it tries to stay behind the target if outside of behindness angle
*** CAMERA_POSITION_THRESHOLD (0.0 to 4.0 meters) Default = 1.0
**** Sets the radius of a sphere around the Scripted Camera's ideal position within which it is not affected by subject motion
*** CAMERA_FOCUS_THRESHOLD (0.0 to 4.0 meters) Default = 1.0
**** Sets the radius of a sphere around the Scripted Camera's subject position within which its focus is not affected by subject motion
*** CAMERA_POSITION (vector position within the region)
**** Sets the position of the Scripted Camera
*** CAMERA_FOCUS (vector position within the region)
**** Sets the focus position of the Scripted Camera
*** CAMERA_POSITION_LOCKED (TRUE or FALSE) Default = FALSE
**** Locks the camera position so it will not move
*** CAMERA_FOCUS_LOCKED (TRUE or FALSE) Default = FALSE
**** Locks the camera focus so it will not move
Scripting changes:
------------------
* changed() events
** The following flags are independent and do not affect the state of the other
** Both will be simultaneously sent to the changed() event if both have changed
** CHANGED_REGION
*** If CHANGED_REGION is set, the object changed regions
** CHANGED_TELEPORT
*** If CHANGED_TELEPORT is set, the object has completed a teleport
*** The uuid of a task remains constant after teleport
* on_rez() is no longer called on scripts after a teleport.
* llAddToLandBanList() bans on- and off-line agents
** "Blue box" script errors now appear just like other script errors
** Scripts can chat directly to this output window by using the DEBUG_CHANNEL constant as follows:
*** llSay(DEBUG_CHANNEL, "Hello Avatar"

*** (SEE New Features section above for more information!)
Bug Fixes:
----------
* Textures no longer get copied with texture picker when cancel is selected
* Terrain raw upload once again properly updating terrain
* Attachment changes get saved if you crash, log out and back in, or teleport
* Don't teleport to a infohub or telehub if it moves you further from target destination
* Color selector picks wrong color
* When a user transformation at login fails, the user is now notified
* If assets are being uploaded, wait till they are done before exiting Second Life
* Improved busy cursor handling
* Name Bubbles are once again handled correctly
* The camera no longer changes FOV when editing while zoomed in
* Move tool now ignores "Use Grid" option
* Multi-select, Open no longer crashes client
* LSL attach callback now fires when script is in child prim
* Issues where attachments detach and are left at border when crossing a region boundary has been resolved
* Avatar no longer looks at cursor when walking or flying
* Improved usage of Estate Allow list
* Made the LSL "Insert..." combo box wider
* View no longer rotates if sitting on a rotated object
* World map UI cleaned up so that it no longer overlaps some buttons
* Yellow fog appears on 24-bit textures if you turn off fog
* Indicate prices in viewer are in L$ vs. US$
* Alpha HUD attachment causes red beacon to render over everything
* Nametags are no longer randomly empty
* Edit axes are again z-buffering to top, object no longer "eats" edit axes
* Show Avatar In Mouselook now shows attachments as being on the avatar's body
* Closing Edit Window while About Land Window is open no longer closes both windows
* llSetText() no longer has trailing "|"
Other changes:
--------------
* The ability to create joints has been removed from the Tools menu
* Teleport Home no longer overrides estate access rules
* Force sun position has been moved from the Debug menu to the World menu
* Property lines are once again persistent across logins
* on_Rez on attachments now trigger after teleport
* Inventory search highlight now has more contrast
* Now use dashed lines when edit axes are occluded