* Inserts proper animation state names into data/avataranimations.xml file so that llGetAnimation() works as one would expect.
* Thanks StrawberryFride!
* This is a partial implementation of llGetAnimation that returns the name of the animation as stored in data/avataranimations.xml but not its state name (since we don't yet
have these).
* Thanks StrawberryFride
This patch allows an object to directly message another object given its
key using the method osMessageObject(key objectUUID,string message).
to communicate with an object it must implement the dataserver listener
method. The dataserver method is passed the key of the calling object
and a string message.
* The attached patch changes the LSLInteger operator overrides for == and != to return LSLIntegers 1 or 0 instead of a bool and adds similar operator overrides for >, <, >= and
<=
* Thanks idb!
The following should silently fail when attached,
llBreakAllLinks, llBreakLink, llCreateLink.
The following should be restricted to avatars in the same sim,
llGetAgentInfo, llSameGroup, llGetAgentSize, llGetAnimationList.
Comment added to the following unimplemented functions,
llGetAgentLanguage, llGetAnimation.
llGetBoundingBox is completely unimplemented. The attached
patch contains a partial implementation for single prim
objects and standing, flying and ground sitting avatars.
In the case of an avatar sat on an object or multi-prim
objects only the bounding box of the root prim is returned.
llRezObject and llRezAtRoot ignored any velocity parameter.
The attached patch makes use of it if it is not a zero vector.
chat relaying via private channels, and old IRCBridgeModule
behaviour. also cleaning up IRCBridgeModule's OpenSim.ini
configuration variable names (still supporting "old" variable
names). refactored IRCChatModule into IRCConnector and incorporating
watchdog from IRCBridgeModule into IRCConnector.
enabling ChatModule to be used as a super-class and utilizing it in
ConciergeModule.
* Implement the linear impulse portion of llPushObject. We should have a lsl compatible implementation of that portion of the push. Angular.. well. still have yet to implement a torque accumulator.
* llPushObject respects the region and parcel settings for Restrict Push, it also respects GodMode as is defined in the LSL spec.
- Added two missing caps (UpdateScriptAgent, UpdateScriptTask)
- Added one missing EventQueue event (ScriptRunningReply)
- Changed DNE and XEngine to use this new event
As we only use the mono engine anyway, the "Mono" checkbox is set by
default but doesn't have any function.
* Calculate an agents height in LLGetAgentSize() from apperance parameters rather than physics avatar numbers
* Another good looking patch from idb - thanks!
If prim is part of SOG, then ask the SOG to update the
position, rather than asking the part itself.
Ghosted child prims should no longer result from llSetPos.
Not sure if this is the right approach for all cases ,
would appreciate feedback on the patch.
The attached patch fixes mantis bug 2312 (llGetPos() returns incorrect
values for child prims where the root prim is rotated). Regression
tests still pass.
Incidentally AbsolutePosition which was used before looks a little
suspicious to me as its always going to return the wrong value if the
root prim is rotated. GetWorldPosition does take the rotation into
account, but AbsolutePosition is used in a lot of places. Though i
don't understand why there is both GetWorldPosition as well as
AbsolutePosition so I've left the latter alone.
[i also cleaned up some indent problems, --- dr scofield]
Attached is a patch for LLGround which was just plain broken and could
cause a runtime error. It now returns valid data with valid input (ie
the offset does not take the position off the edge of the sim), but a
runtime error will occur if invalid data is given.
On invalid data the LL servers return the ground height based on a
valid point closest to the effective position calculated using the
supplied offset. Is the OpenSim convention to replicate the LL servers
as closely as possible? If so I can submit an additional patch to
replicate the LL behaviour.
llSetLinkApha is not fully implemented and has not been updated
to use the recently added GetLinkParts and associated implementation
pattern as per llSetLinkColor and llSetLinkPrimitiveParams.
Prevent EventAbortException inner exceptions of
TargetInvocationException being re-thrown from
OpenSim.Region.ScriptEngine.Shared.ScriptBase.
Executor.ExecuteEvent
Implementation of llModifyLand() and There is a bug on
permission-check of land-terraforming: x an y-coordinates
are interchanged on function-call ExternalChecksCanTerraformLand.
Correct: x is west, and y is north. 2) Missing check of
"Other allow to terraform-flag" (Parcel.ParcelFlags.AllowTerraform)
Addresses llDie issues. The attached patch catches run time
exceptions that occur during method invocation (of type
TargetInvocationException) and exposes the internal exception.
This makes it possible to pass out the SelfDeleteException.
Also added handlers in a couple places to make sure that
exception was being passed out far enough to be handled
correctly. Tested on DNE.
Fix: objects being duplicated inventory on detach. Fix: Mad jumping around of
attachments while editing. Fix: Attachments being persisted to database on
login. Fix: Attachments being persisted when changed by a script like
invisprim refresh. Fix: Attachpoint set, but not reset correctly. Fix: prevent
spurious full updates while editing attachments. Several other fixes
In Second Life's implementation of llParseString2List(), all spacer
strings which occur within the source string are included in the
resulting list. In OpenSim's implementation, any spacers occurring
at the beginning of the string are discarded; furthermore, if multiple
spacers occur between non-spacer elements, or at the end of the source
string, only the first spacer is added to the resulting list;
the remainder are discarded.
Thank you, fusspawn, for an implementation of osGetSimulatorVersion.
This patch removes the llRequestSimulatorData(..., 128) hack and
implements the functionality as an osFunction.
A number of the deprecated functions had missing parameters
causing compile errors. These included:
llSound, llMakeExplosion, llMakeFountain, llMakeSmoke,
llMakeFire, llPointAt, llXorBase64Strings, llSetPrimURL
OS/SL script conformance, implement llSoundPreload and
llRemoteLoadScript to behave as in SL. In SL
llSoundPreload appears to do nothing. In OS
llRemoteLoadScript shouts an error when invoked
"Deprecated. Please use llRemoteLoadScriptPin instead."
The current llGetLinkName returns an empty string if a prim
with the given link number is not found in the link set. In
SL an empty string is only returned if the prim name is actually
blank, a NULL_KEY is returned instead with a couple of exceptions.
DNE and move all of DNE into the DotNetEngine directory. Remove references
that would cause the script runtime to load the entire engine + scene into
each script appdomain. This might help DNE memory consumption.
The binaries are still different, but that is only a small step away now.
The OSSLPrim has been removed. This commit will breal all scripts
using Prim.Scale(), etc, syntax. It was not secure and will have to
be brought back in another form.
Scene. Make the script engines check that the engine name in the
//Engine:language comment is a valid engine and treat it as a normal
comment if it's not.
//DotNetEngine: needs to be written as //ScriptEngine.DotNetEngine: now, since
that is it's real internal name. //XEngine: still works
Check the client dialog box (from top menu) WORLD / REGION ESTATE
/ REGION tab. The client dialog box seems to have a hard limit of
about 32 characters per line available for displaying the region
version number. Our regions are sending a string which is greater
than the limit, causing the client to wrap the text and look ugly.
The entire LSL API is now in the single, shared file
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api_Base.cs
This is for both engines. The OSSL function are still separate.
and makes it use a common set of types in both engine. Fixes the issues with
running both engines and HTTP requests / listens / timers etc..
Also fixes a couple of minor Scene issues and a CTB by nullref.
all methods needed outside the API ststic. Async command processing
is now wholly internal to the API. This sets the stage for the next
convergence step.
of the types, located in OpenSim/Region/ScriptEngines/Shared/LSL_Tyoes.cs
Also changes the compiler in DotNetEngine to use that. You _will_ need to
let your region recompile all your scripts!
Thank you, tyre, for a patch that refactors LSL to use a unified set of
method signatures and type names, reorders methods and removes unused
and adds new method stubs.
ordinary region modules and are able to coexist in one instance.
See http://opensimulator.org/wiki/ScriptEngines for details. There were
changes to OpenSim.ini.example, please note DefaultScriptEngine.
Also see the User docs and FAQ on the Wiki. Default is DotNetEngine.
- Conformance fix: If the notecard can't be found, shout on DEBUG_CHANNEL as the docs state
- Bug fix: Don't let llGetNotecardLine throw an exception on freshly created notecards
* On script rez, XEngine was taking an m_scripts lock and then later on an m_parts lock when looking for a part by local id
* In the meantime, a scene object being deleted would take an m_parts lock and then later on try to take an m_scripts lock when it tried to trigger script removal
* There may be better ways to resolve this, but I believe that in general, we must always take an m_parts lock before an m_scripts lock
Correct a condition where a prim is linked before it has been persisted
for the first time and is then persisted through it's former SOG with
a bad offset position.
XEngine: Change a number of methods to use the new link part method.
Fix ALL_SIDES for llSetColor, llSetTexture, llSetAlpha, llSetPrimitiveParams,
llGetPrimitiveParams(PRIM_TEXTURE, PRIM_COLOR).
XEngine fixes: prevent queue overruns, prevent spamming when no key
is down. Release controls when conflicting permissions are requested
or permissions are refused later. Release when prim or script are deleted.
Fixes Scene script instance deletion semantics.
after using llTakeControls my sim receives about 200 messages per second,
l of which get queued , this could be because there is no lag as the viewer
and sim are on the same computer. The patch I have included checks to see if
the "Changed" param is 0 then searches the EventQueue for Control messages
being sent to the same localid, if it finds a message already in the Queue
and Changed==0 then the new message is only notifing you the key is being held,
since there is already a message the new one isnt needed so it isnt added
to the queue.
works. Also makes llGetFreeMemory return the constant 16384.
LLGetFreeMemory is useless in SL, as it never goes up, only down.
So, the only thing it is used for, in practice, is to detect an imminent
stack/heap collision, a danger we don't have.
Remove some unused osFunctions that were left in the LSL function
file from the separation way back when. Inline the osSetParcelMediaURL
code to get rid of the osFunction. Really need to add a way for one API
to call another.
functions return CLI strings, which, in the case of lists, don't
get wrapped. Therefore, the list had to be able to deal with
that CLI type here. The correct fix would be to change all LSL
function returns to LSL types.
Thank you, ralphos, for a patch the adapts llSetColor and friends to
a change in the underlying types.
Also, thank you for a much cleaner way of casting types out of
lists, which I will adopt throughout.
Floating text, Rotation, Texture animation, Particle System
This will make "Eye Candy" scripts work without modification in
XEngine. The use of the CHANGED_REGION_RESTART hack is no longer
needed. Implemented in MySQL only, hovertext also in SQLite.
* Please note that this implementation has not been mathematically verified to be correct-as-described, it is probable that this implementation may produce differing results to Linden Lab. Testing (and test data) would be appreciated.
duplicate delivery of state_entry if a region is restarted just after
saving the script. Changes script state saves to no longer abort long-
running event handlers. Queues the save instead. Adds shutdown handler
to save script state on irderly shutdown
* This is a HUGE OMG update and will definitely have unknown side effects.. so this is really only for the strong hearted at this point. Regular people should let the dust settle.
* This has been tested to work with most basic functions. However.. make sure you back up 'everything' before using this. It's that big!
* Essentially we're back at square 1 in the testing phase.. so lets identify things that broke.
Types extracted from a LSL_Types.list have to be down-cast initially
to the exact type of value type object that the Object actually is.
This would make for very cumbersome, ugly code when extracting list
parameter items in ll functions where a few implicit conversions
should be applied such as key -> LSLString and LSLInteger -> LSLFloat
(but not LSLFloat -> LSLInteger). This patch adds a set of GetXXXItem
member functions to the LLS_Type.list class, where XXX is the name
of the LSL_Type to be extracted: LSLFLoat, LSLInteger etc. All take
a single, int parameter that is the item number to be extracted.
1000 chars to avoid the exception thrown by libomv at 1100 chars.
Change string->int conversion so it copes with non-numeric chars
after the number and no longer uses a float to parse the value.
It wraps constants in new LSLType(x), so that lists with
constant values are processed correctly. Contains changes to
the lsl.parser.cs that are not (yet) reflected in opensim-libs,
since this experimental patch affects XEngine only. Also contains
nuts.
which is a thin wrapper around a IWorkItemResult from the SmartThreadPool.
However, it is very easy to reimplement on top of basic threading and therefore
makes the IScriptInstance class independent of the specific threading
implementation.
engines that want to use the XEngine's instance handling and state
persistence can do so. IScriptInstance is optional, but it does
require the SmartThreadPool if it is used.
This patch adds even more LSL compatibility to llSetPos() As stated in the
wiki http://wiki.secondlife.com/wiki/LlSetPos, [^] movement should also be
capped to 10m per call for unattached root prims.
Beside this issue the attached patch adds (hopefully) all known LSL script
delays (as ScriptSleep(), but still commented out) to LSL_BuiltIn_Commands.cs
and LSL_Api.cs and a lot of format cleanup.
at 1.0, it allows delays to function as coded. Smaller values will
reduce, larger values will increase the delays. A value of 0 is
permitted and results in on delay being applied.
Thank you, salahzar, for a patch that corrects the behavior
of PRIM_TYPE in llGetPrimitiveParams() and improves LSL
conformance in llGetNumberOfSides();
The version of llSetLinkPrimitiveParams in LSL_BuiltIn_Commands.cs
has not been kept in sync with the additional functionality made
recently to the llSetLinkPrimitiveParams implementation in
LSL_Api.cs which includes support for setting glow, full bright and
other privative parameters. A patch to LSL_BuiltIn_Commands.cs is
provided the incorperates this functionality (duplicated).
also enable LSLconformance on some texture functions as well.
Applied the part of the patch in Shared/.
The part for Common/ needs to be reworked to remove the reference
into Shared/
It is now possible to use module interfaces without referencing Scene.
Place those interfaces in OpenSim/Region/Interfaces. They may not
use any refs from OpenSim.Region.Environment as parameters.
This resolves a circular library ref introduced in r5949
This patch improves LSL conformance by inserting a 0.2 second delay
into llSetPos/llSetRot, as the function specification states.
Thanks to M. Igarashi for the patch.