* This actually probably doesn't make a huge difference. We still end up resending a massive number of packets in quite a few situations, but it's not easy to consistently
reproduce this.
* Might really need some throttling of packet send to the client on the OpenSim end.
* This is a HUGE update.. and should be considered fraut with peril.
* SSL Mode isn't available *yet* but I'll work on that next.
* DrScofld is still working on a radical new thread pump scheme for this which will be implemented soon.
* This could break the Build! This could break your Grid!
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."
* This is an initial basic experimental code for inventory import and export from the region server
* Probably not yet ready for general use
* Thanks Kayne!
Estate/ Manager Owner Uses the Region/Estate Menu Region TAB,
and uses "Teleport Home All Users..." (Action Button), the
action will complete but no one will be teleported and all
users still function in the region ok.
- Added TeleportFinish event to the event-queue. It works better than
before (you can teleport), but it doesn't work quite right yet (you
start TPing after the TP again).
Beware: Still experimental and non-working.
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.
* If EventQueueGet is enabled, use that instead of a few UDP packets, if it's disabled use the UDP packets like normal.
* We *really* suggest users do not turn on EventQueueGet yet.. as it's highly experimental, broken, and resource intensive
* Updated OpenSim.ini.example
* Testers of EventQueueGet.. in OpenSim.ini, it's in the [Startup] Section.. change EventQueue = false, to EventQueue = true.
* returns FAKEEVENT instead of the connection returning a 502. It doesn't like our 502's for some reason.. so, in leau of this.. send it a fake event.
* Once again, this is still 'really early' code, so please don't blame us if you have no more threads left.
* This won't function yet as far as the client can tell.. because it doesn't respond to the first query with a 200 message.
* We have to figure out how to encode those binary values in the example code in the module...
* Committing this so we have a start point. Will continue to work on this more today.
* This means that saving notecards in prim inventories should now work.
* Not the nicest code in the world - the transactions system is pretty fugly right now
* PLEASE NOTE: Currently, the prim will not repersist until up to 15 seconds after it is unselected.
* What we really need is a proper mechanism so that any prim updates still waiting when the simulator is quit are performed before exit.
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.
* It seems kind of silly to be building a 256x256 array just to use two 16 float blocks.. but for now the layerdata routine requires it so we'll go along with that.
* We only fill a 32x16 area of the 256x256 float array with data.
* We use patches 0,0 and 0,1 for the first and second patch to determine the direction and magnitude of the wind.
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.
* A little wind wouldn't hurt anyone, right? This is the 'slightly breezy' setting.. hopefully you won't notice 'much' of a difference.
* It turns out the terrain patch routine is similar enough to the wind version that it can be used to hack together a breeze generator with a few mods.
* Not much configuration.. yet. You only get breeze updates in the general vicinity of your camera now to keep bandwidth usage down.. and we're not talking about 'much' movement at the moment.
* initial version... could use improvement I'm sure.
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.
Active gestures are sent as part of the login-response. Added
fetchActiveGestures to SQLite and MySQL; added an empty one for MSSQL and
NHibernate. Using the empty ones won't cause errors, but doesn't provide
persistence either, of course.
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.
for inventory REST calls for the time being, as firefox, curl, and
also python's urllib2 cannot authenticate using digest auth.
fix permission checking for prim inventory to be the same as for
normal edit ops.
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.
* if a packet was really null it would be caught by the general exception handler at the top of the client thread, which would also provide more information and attempt a clean
shutdown
- 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
* you'd think from all this that I was one of those fanatically tidy people. I can assure you from looking around my bedroom/study that this is not the case :)
* 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
* There was a small window where region logins were allowed before modules were loaded - avatars logins that hit this window could have caused bad things to happen.
* A similar change will follow for grid mode sometime soon
* Monitors / for getting the seed cap for rez_avatar/request on application/llsd+xml && application/xml+llsd && !application/xml
* Experimental, this might break LibOMV temporarily.
- Add necessary dummy Dispose-methods where they are missing
- Implement the SQLite Dispose-methods
(currently only used for unit tests, in the next commit)
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.
New patch (terrainedit2.patch) is attached that passes unit tests (
and in fact supplies the new unit test to pass..:) The previous
failure was due to the change of the brush size to be linear instead
of exponential, and the fact that the test parameters were assuming
the exponentional brush size.
This patch also removes dependency on 'duration' argument for
adjustment step size. This should address the widely differing reports
of instability with terrain editing.
Note: 'doing this right' implies ultimately reading the parameters
from the ini file, which this patch does not do.
* the methods were identical except that the Properties one did a check for the user profile beforehand. However, every caller was doing this already anyway.
fixes the terrain spikes, and is the result of mostly a tuning
operation on the smooth and flatten tools. I dug in and found that the
spikes apparently result from smooth's overly aggressive iteration
steps toward the average curvature, which leads to an instability that
blows up the heights. I introduced a scaling factor to dampen the
'duration' parameter which tames progress and seems to keep things
stable.
* There are still a lot of things that are hard coded to use http. They need to be fixed.
* Also includes directions
* A standard junk PEM file to append to app_settings/CA.pem in the client so SSL will work
Moved intialization of appearance from the SendInitialData
event handler into CompleteMovement handler. That ensures
that m_appearance is initialized before the inventory is
retrieved (so there is a place to check on attachments).
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.
* Patch attached that adds the check for uninitialized appearance when inventory items are received and processed. Also attempts to ensure that appearance is initialized even
when the profile cache has not been built.
* This will not fix the race condition, but should at least remove the unhandled exception that is being reported in Mantis 0002126.
* Thanks cmickeyb
* This patch aims to introduce look at direction persistence between logins. It won't be active until the second part of the patch is committed in about two weeks time. At
this point, region servers that haven't upgraded past this revision may run into problems
* This checkin upgrades the user database. As always, we recommend you have backups in case something goes wrong.
* Many thanks to tyre for this patch.
* From looking at the code there shouldn't be any difference, and this appears to speed up prim loading and make a certain failure case (where prims seem to be going out of
bounds on startup) less of a problem.
* However, if I've been bad please revert this patch
couple of debug statements for null items while we
diagnose our interrmittent inventory issues. I looked
at this and it seems helpful to others. We can back it
later if desired.
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
* Now it should properly inform the user and stop a login if a region server could not be contacted in order to expect a user (the last commit didn't actually quite work correctly)
* These are different types then the OMV types because changing them causes just about all grid comms to break. If these were the libOMV types, then libOMV couldn't change them ever again after that.. or we'd have a breakage whenever they changed them.
* This might introduce a map issue. Still checking it out.
* Testers, please try rezzing your inventory on this revision and sending me feedback in mantis.
* Users, it's not time to update yet. The dust still hasn't settled.
* 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.
Thank you, openlifegrid, for a patch to move new user connections to
thread pool threads.
Reworked by me to fit current trunk.
I believe that that patch may be beneficial in reducing the cases
in which regions become unresponsive and will no longer accept
new logins.
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.
If the parcel pointed to by the landmark has nothing in the
Description field (of the General tab in About Land...), a
NullReferenceException is thrown and the client is logged out.
I added a check to the calls to Helpers.StringToField() in OpenSim.Region.ClientStack.LindenUDP.SendParcelInfo to avoid
this issue.
Eliminate gretuitious KillObject packets. KillObject is sent to the
viewer for the root part only.
Also prevents the full update on deselect that makes a deleted object
reappear and stay visible until the background deleter got around to it.
We still send 2 KillObject packets for the root prim, that could be
avoided only at a cost in reliability. One packet seems an acceptable
price to pay for consistency.
The attached patch fixes connectivety checking of root- and
child-agents. If an agent's client isn't sending any packets
for some time (not even to StartPingCheck packets), we assume
that we lost connection and try to log them out.
Due to the many problems with not cleaned up child-agents, I thought it
might make sense to be able to see them on the console. 'show users' on
the region-server's console now outputs root- and child-agents (with
"root" or "child" column)
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.
* Unpatched code certainly looks bizarre - attempts to add a new client if we encountered a failure in processing a packet. No apparant ill effects on a sniff test.
* Thanks openlifegrid
* a couple more remain that preferably the original coders should look at in more detail (obsolete warnings in the ogp module and not overriding warnings in the script
engine)
* TimeStamp field of the AgentMovementCompletePacket in LLClientView.MoveAgentIntoRegion contained a fixed number. The attached patch changes this to a current
timestamp.
* Thanks HomerHorwitz
* You can replace "grid" as the asset system with "file" to save and load all your assets from a directory on your hard disk. Files are serialised to XML and saved in the format "/<dir>/0x/0x/0x/0000-0000-000000-0000-0000.xml"
* Directory <dir> is sharing the Asset Server URL path, use a normal path here instead (ie C:\xyz or /var/assets/).
* This probably wont work well in grid mode unless every sim has access to the same directory. This is mostly intended for standalone usage where quick and convenient access to assets is required.
Addresses the problem of ghost avatars. The problem was child-agents
sending data. Due to symmetry reasons, I considered that wrong.
Whenever an avatar A1 in region R1 looks at avatar A2 in adjacent
region R2, we have two possibilities to communicate: A2-root sends
to A1-child (both in region R2), or A2-child sends to A1-root
(both in region R1). Currently, the children send data in some cases,
and I guess the viewer gets puzzled about that and switches the child
to root as consequence (at least partly), so it becomes visible.
Found that during my ghost-hunt: Add some logging and you see that the
counting down happens twice (once at the place that is removed by the
patch, and once caused by the actual removal of the root-/child-agent
during LLClientView.Close). With the patch applied, I end up with correct
numbers, i.e. with 0 roots and 0 children after everyone has logged out.
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.
Issue is caused by the terrain height not being queried before
teleporting within the region. Teleporting between regions is
correct. Adding the neccessary checking to intra-region TP code.
* When OGP is active, disable SSL certificate chain validation. I'll add more options here to come, as well as a way to test against a group of known certificate subjects.
* The purpose of the check was to ensure that your home region was sent to your client properly when you connected. However, the desired result is that if the home region is down, but the destination region is online, the user should still get in.
* Changes: if the home region isn't available, set the message to the client so that the home region is the destination region.
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();
* There are a lot of changes and this is quite experimental. It's off by default, but you can turn it on by examining the bottom of the opensim.ini.example for the proper OpenSim.ini settings. Remember, you still need an agent domain..
* Furthermore, it isn't quite right when it comes to teleporting to remote regions (place_avatar)
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).
animation, target omega, looped sound, script access pin, allowed
drop state and sale data. Loads it, too. Not all tested.
Code: No Nuts. Data: Cannot Guarantee Nut Free.
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
* By default, texture rendering is on. This may be affected by using secure assets since your region hasn't registered with the gridserver before it asks for texture assets. It might also be affected by a slow asset server, so consider this release experimental.
* Defined interface IMapTileTerrainRenderer.
* Extracted "old" shaded maptile terrain rendering into ShadedMapTileRenderer;
streamlined it a bit and added "highlight" rendering to its "shadow"
rendering.
* Added "new" terrain-texture based maptile terrain rendering
(TexturedMapTileRenderer); made TerrainUtil.InterpolatedNoise public
* Adapted MapImageModule to allow switching between those two by configuration
* Added configuration option to OpenSim.ini.example