Changes erroneous return value of llGetLinkname() to "" for nonexistent
prims. Corrects an issue where the root prim of a linked set, upon
delink, retains the part number 1.
I found a problem trying to get s value directly from a quaternion q.
Compiling a script which directly access to q.s value, caused the
following error:
CS0103: 'The . symbol cannot be used in LSL except in float values
or vector components'. Detected around: q.s
I did a small change to allow alphabetic letter "s" to be interpretated
as valid identifier. This solves the problem.
llAxes2Rot now implemented. Important note: quaternion <x,y,z,s>
is equal to <-x,-y,-z,-s>. The result may be different from LSL
output, but it is correct. A problem of rounding caused an error
of square rooting of zero as negative number, corrected by squaring
again. Function tested 360° along 3 axes. Vector fwd, left and up
have to be normalized.
Implements additional unlink modes (unlink root prim from link set, some
multi-set operations). Linking (single and mutiple) fully implemented.
Consistent numbering of links while in world. Link/delink with predictable
link numbering. Correct link numbers in LSL.
Not all multi-set ops implemented. Link numbers still change when taken and
re-rezzed.
llRot2Left and llRot2Up functions modified, using fast algebric
calculations instead of vectors and quaternions products.
The accuracy is the same. Normalization is now implemented.
llRot2Fwd function modified, using fast algebric calculations
instead of vectors and quaternions products. The accuracy is
the same. Normalization is now implemented.
The previous implementation of llEuler2Rot was not mathematically
incorrect, but it was an awkward way of posing the problem that
led to a few degenerate cases which were not handled correctly -
for example, PI rotations around X and Z axes were wrong. I put
some comments in the source about how I arrived at the current
implementation, which I think is easier to read, and gives
results that match SL.
When using math operators +,-,*,/ in an LSL script with an LSLFloat
and an integer literal the wrong result is returned. This patch
adds operators to the LSLFloat type to handle this case.
I needed to apply the patch a little better then last night
for: Dot product operator in LSL_Types.cs incorrectly returns
a component-wise vector multiplication; it should return a
scalar dot product. Thanks to M. Igarashi for the patch.
Dot product operator in LSL_Types.cs incorrectly returns a
component-wise vector multiplication; it should return a scalar
dot product. Thanks to M. Igarashi for the patch.
Patch 7 of the region patches. Finish off the region parts of the estate dialog. Full user functionality. Terrain textures, heights, water, avatar counts, prim bonus, debug settings and region toggles can now be set from the dialog on a per-region basis. Estate stuff defaults to sane values where there are no defaults, to estate_settings.xml otherwise. Sun still b0rked :(
Add a config option to OpenSim.ini to select between script compilers
in the XEngine without recompile.
Set UseNewCompiler=true in OpenSim.ini and try it out.
Creates the ICodeConverter interface and adapts the new compiler to it.
This patch limits the maximum size of prims that can be created using libsl bots
or modified clients to 65536mper side. It also limits LSL functions to that size.
If a prim is already physical, the enforced constraint is 10m.
A prim that is larger than 10m cannot be turned physical, either via script or UI.
Linksets are handled correctly, so scaling of physical linksets is constrained by
the size of it's largest component prim. Also, turning linksets physical is based
on the size of it's largest ptim.
LSLInteger + literal integer is not an LSLInteger.
The included patch fixes the issue: LSLInteger + literal
integer is not an LSLInteger (also fixed for -,*,/)
added void osSetParcelMediaTime(double time) command to script engines.
which sets the position of the media that is playing. Time is in seconds.
Doesn't do any security checking (should be checking that the object/script is owned by the parcel owner). So could be abused, if it is then we should remove it, or add the security.
Only tested in dotnet scripting engine, but should work in XEngine too.
In LSL, the state command should have an immediate effect.
The OpenSim script engine seems to wait until the function
ends to process the state transition.
This patch adds the ability to set the prim type using llSetPrimitiveParams().
Seems to work ok, but there are a staggering number of cases to test,
so I have not yet tested them all.
It would appear that calling llResetScript() in state_entry() causes deadlock of region.
Probably due to llResetScript calling state_entry again. llResetScript should see who called it,
and not recall state_entry() after a state/variable reset. Once this script is in a prim,
the region/world/debug/script window shows it consuming the server (from 2,400 to 800,000 milliseconds).
Another new OSSL function for returning the name of the script engine
currently running, osGetScriptEngineName, added to both DotNet and XEngine
OSSL API.