OSSL vs LSL

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m
m (Removed addressing modes. This is confusing and is covered in a separate page.)
 
(8 intermediate revisions by one user not shown)
Line 1: Line 1:
This page to highlight the difference between OSSL and LSL functions when similar versions exist.
+
LSL and OSSL functions may appear overlapping. Sometimes, they are. This may happen when a OSSL function has been written before it's LL conterpart. Most of the time, they are complementary.
  
Work in progress, not to be linked now.
+
OSSL implements features not available in LSL (NPCs, Texture Drawing) or extend them, like adressing prims by key, which gives unprecedented flexibility to the scripter.  
  
'''H''' : Target is the script's host (the prim containing the script)<br/>
+
This page tries to highlight the differences between OSSL and LSL functions when similar versions exist.  
'''L''' : Target is prim in the linkset, adressed by link number<br/>
+
'''K''' : Target is any prim you own, adressed by key (inside or outside linkset)<br/>
+
'''A''' : Target is an avatar<br/>
+
 
+
When a function is marked as supporting different adressing modes, these are overloads (a.k.a. 'variants') selected at compile time according to the parameter types.
+
+
  
 
{| class="wikitable" style="margin:auto"
 
{| class="wikitable" style="margin:auto"
| llGetLinkPrimitiveParams || [[osGetLinkPrimitiveParams]] || L || Allows for multiple-link constants LINK_SET, LINK_ALL_CHILDREN. Returns a by-side list of properties.
+
| llGetLinkPrimitiveParams || [[osGetLinkPrimitiveParams]] || Allows for multiple-link constants LINK_SET, LINK_ALL_CHILDREN. Returns a by-side list of properties.
 +
|-
 +
| llSetLinkPrimitiveParams ||  || No need for OSSL version since llSetLinkPrimitiveParams accepts all LINK_* flags
 +
|-
 +
| llGetPrimitiveParams<br/>llSetPrimitiveParams || [[osGetPrimitiveParams]]<br/>[[osSetPrimitiveParams]] || Acts on out-of-linkset primitive (uuid instead of linknumber)
 +
|-
 +
|| || [[osSetProjectionParams]] || Same effect can be obtained with llSetLinkPrimitiveParams (linknum, [PRIM_PROJECTOR]) but OSSL version has osSetPrimitiveParams power to work outside linkset.
 
|-
 
|-
| llSetLinkPrimitiveParams || || L || No need for OSSL version since llSetLinkPrimitiveParams accepts all LINK_* flags
+
| llCreateLink<br\>llBreakLink<br\>llBreakAllLinks || [[osForceCreateLink]]<br/>[[osForceBreakLink]]<br\>[[osForceBreakAllLinks]] || Does not require PERMISSION_CHANGE_LINKS
 
|-
 
|-
| llGetPrimitiveParams<br/>llSetPrimitiveParams || [[osGetPrimitiveParams]]<br/>[[osSetPrimitiveParams]] || K || Acts on out-of-linkset primitive (uuid instead of linknumber)
+
| llParticleSystem<br/>llLinkParticleSystem || [[osParticleSystem]]<br/>[[osLinkParticleSystem]] ||  
 
|-
 
|-
|| || [[osSetProjectionParams]] || H L K || Same effect can be obtained with llSetLinkPrimitiveParams (linknum, [PRIM_PROJECTOR]) but OSSL version has osSetPrimitiveParams power to work out-of-linkset by uuid.
+
| llSitTarget<br/>llLinkSitTarget || [[osSetStandTarget]]<br/>[[osSetLinkStandTarget]] || SitTarget is position when sitting.<br/>StandTarget, position when unsitting.
 
|-
 
|-
| llCreateLink<br\>llBreakLink<br\>llBreakAllLinks || [[osForceCreateLink]]<br/>[[osForceBreakLink]]<br\>[[osForceBreakAllLinks]] || || Does not require PERMISSION_CHANGE_LINKS
+
| llAvatarOnSitTarget<br/>llAvatarOnLinkSitTarget || [[osGetSittingAvatarsCount]]()<br/>[[osGetSittingAvatarsCount]](uuid) || OSSL function returns the total number of avatars sitting on a linkset. LSL functions apply only to avatars on sittarget (return NULL_KEY if sittarget is not set) and cannot operate outside the linkset. A similar result can be obtained with llGetObjectDetails(uuid, [OBJECT_SIT_COUNT]).
 
|-
 
|-
| llParticleSystem<br/>llLinkParticleSystem || [[osParticleSystem]]<br/>[[osLinkParticleSystem]] || H<br/>L ||  
+
| llPlaySound<br/>llLoopSound<br/>llTriggerSound<br/>... || [[osPlaySound]]<br\>[[osLoopSound]]<br\>[[osTriggerSound]]<br/>... || All OSSL sound functions takes a linknumber argument.
 
|-
 
|-
| llSitTarget<br/>llLinkSitTarget || [[osSetStandTarget]]<br/>[[osSetLinkStandTarget]] || H<br/>L || Set the position of the feet of the avatar, when ll version set the position of the Agent Target (Developer > Avatar > Display Agent Target)
+
| llLinkPlaySound || || Universal link sound function (SOUND_PLAY, SOUND_LOOP, SOUND_TRIGGER, SOUND_SYNC). Equivalent to resp. osPlaySound, osLoopSound, osTriggerSound, osPlaySoundSlave, osLoopSoundSlave.
 
|-
 
|-
| llPlaySound<br/>llLoopSound<br/>llTriggerSound<br/>... || [[osPlaySound]]<br\>[[osLoopSound]]<br\>[[osTriggerSound]]<br/>... || L || All OSSL sound functions takes a linknumber argument.
+
| llGetNumberOfPrims<br/>llGetObjectPrimCount || [[osGetPrimCount]]()<br/>[[osGetPrimCount]](uuid) || OSSL version does not count sitting avatars and does work on attachments
 
|-
 
|-
| || llLinkPlaySound || L || Universal link sound function (SOUND_PLAY, SOUND_LOOP, SOUND_TRIGGER, SOUND_SYNC). Equivalent to resp. osPlaySound, osLoopSound, osTriggerSound, osPlaySoundSlave, osLoopSoundSlave.
+
| llStartAnimation<br/>llStopAnimation ||[[osAvatarPlayAnimation]]<br/>[[osAvatarStopAnimation]] || Does not require PERMISSION_TRIGGER_ANIMATION<br/>OSSL can animate multiples avatars, when LSL is bound to the avatar having granted the permission.
 
|-
 
|-
| llGetNumberOfPrims<br/>llGetObjectPrimCount || [[osGetPrimCount]]()<br/>[[osGetPrimCount]](uuid) || H K || OSSL version does not count sitting avatars and does work on attachments
+
| llAttachToAvatar<br/> llDetachFromAvatar || [[osForceAttachToAvatar]]<br/>[[osForceDetachFromAvatar]] || Does not require PERMISSION_ATTACH.<br/>Target avatar is implicit. To attach explicitely to a given avatar, use osForceAttachToOtherAvatarFromInventory on the avatar's key.
 
|-
 
|-
|| llAvatarOnSitTarget<br/>llAvatarOnLinkSitTarget || [[osGetSittingAvatarsCount]]()<br/>[[osGetSittingAvatarsCount]](uuid) || H K || OSSL function returns the total number of avatars sitting on a linkset. LSL functions apply only to avatars on sittarget (return NULL_KEY if sittarget is not set) and cannot operate outside the linkset. A similar result can be obtained with llGetObjectDetails(uuid, [OBJECT_SIT_COUNT]).
+
| llGetAgentList || [[osGetAgents]]<br/>[[osGetAvatarList]]<br/>[[OsGetNpcList|osGetNPCList]] || llGetAgentList returns a list of agent keys.<br/> osGetAgents, a list of agent names.<br/>osGetAvatarList, a strided list of agent (key, position, name).<br/>osGetNPCList : same as osGetAvatarList, but only NPCs.
 
|-
 
|-
|| llStartAnimation<br/>llStopAnimation ||[[osAvatarPlayAnimation]]<br/>[[osAvatarStopAnimation]] || A || Does not require PERMISSION_TRIGGER_ANIMATION
+
| llGetInventoryKey<br/>llGetInventoryName || [[osGetInventoryItemKey]]<br/>[[osGetInventoryName]] || llGetInventoryKey returns <u>item</u> id while osGetInventoryItemKey returns <u>asset</u> id.<br/>llGetInventoryName returns name from (index,type) while osGetInventoryName return name fro item id.
 
|}
 
|}

Latest revision as of 08:33, 19 June 2023

LSL and OSSL functions may appear overlapping. Sometimes, they are. This may happen when a OSSL function has been written before it's LL conterpart. Most of the time, they are complementary.

OSSL implements features not available in LSL (NPCs, Texture Drawing) or extend them, like adressing prims by key, which gives unprecedented flexibility to the scripter.

This page tries to highlight the differences between OSSL and LSL functions when similar versions exist.

llGetLinkPrimitiveParams osGetLinkPrimitiveParams Allows for multiple-link constants LINK_SET, LINK_ALL_CHILDREN. Returns a by-side list of properties.
llSetLinkPrimitiveParams No need for OSSL version since llSetLinkPrimitiveParams accepts all LINK_* flags
llGetPrimitiveParams
llSetPrimitiveParams
osGetPrimitiveParams
osSetPrimitiveParams
Acts on out-of-linkset primitive (uuid instead of linknumber)
osSetProjectionParams Same effect can be obtained with llSetLinkPrimitiveParams (linknum, [PRIM_PROJECTOR]) but OSSL version has osSetPrimitiveParams power to work outside linkset.
llCreateLink
llBreakLink
llBreakAllLinks
osForceCreateLink
osForceBreakLink
osForceBreakAllLinks
Does not require PERMISSION_CHANGE_LINKS
llParticleSystem
llLinkParticleSystem
osParticleSystem
osLinkParticleSystem
llSitTarget
llLinkSitTarget
osSetStandTarget
osSetLinkStandTarget
SitTarget is position when sitting.
StandTarget, position when unsitting.
llAvatarOnSitTarget
llAvatarOnLinkSitTarget
osGetSittingAvatarsCount()
osGetSittingAvatarsCount(uuid)
OSSL function returns the total number of avatars sitting on a linkset. LSL functions apply only to avatars on sittarget (return NULL_KEY if sittarget is not set) and cannot operate outside the linkset. A similar result can be obtained with llGetObjectDetails(uuid, [OBJECT_SIT_COUNT]).
llPlaySound
llLoopSound
llTriggerSound
...
osPlaySound
osLoopSound
osTriggerSound
...
All OSSL sound functions takes a linknumber argument.
llLinkPlaySound Universal link sound function (SOUND_PLAY, SOUND_LOOP, SOUND_TRIGGER, SOUND_SYNC). Equivalent to resp. osPlaySound, osLoopSound, osTriggerSound, osPlaySoundSlave, osLoopSoundSlave.
llGetNumberOfPrims
llGetObjectPrimCount
osGetPrimCount()
osGetPrimCount(uuid)
OSSL version does not count sitting avatars and does work on attachments
llStartAnimation
llStopAnimation
osAvatarPlayAnimation
osAvatarStopAnimation
Does not require PERMISSION_TRIGGER_ANIMATION
OSSL can animate multiples avatars, when LSL is bound to the avatar having granted the permission.
llAttachToAvatar
llDetachFromAvatar
osForceAttachToAvatar
osForceDetachFromAvatar
Does not require PERMISSION_ATTACH.
Target avatar is implicit. To attach explicitely to a given avatar, use osForceAttachToOtherAvatarFromInventory on the avatar's key.
llGetAgentList osGetAgents
osGetAvatarList
osGetNPCList
llGetAgentList returns a list of agent keys.
osGetAgents, a list of agent names.
osGetAvatarList, a strided list of agent (key, position, name).
osGetNPCList : same as osGetAvatarList, but only NPCs.
llGetInventoryKey
llGetInventoryName
osGetInventoryItemKey
osGetInventoryName
llGetInventoryKey returns item id while osGetInventoryItemKey returns asset id.
llGetInventoryName returns name from (index,type) while osGetInventoryName return name fro item id.
General
About This Wiki