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.
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)
* 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)
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.
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.
* 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)
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.
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
the first part of gesture persistence.
----------------------------------------------------------
Attachments no longer vanish on walking crossing. Teleport is still
problematic, but will now be blocked with message "Inconsistent
attachment state" rather than losing the attachment. Detach to be
able to TP in that case.
Change user server to handle attachment assets record properly. Ensure
that attachments are not re-rezzed on region crossing. Persistence
will NOT WORK with earliser UGAI!!
Change region server to match.
* Refactored a few things in Scene to make maptile saving easier to understand.
* Added comments to describe the 'clever code' assetcache update without the gridasset being updated so as to lessen possible confusion in patches in the future.
* If the MapImageModule isn't loaded, default to the code in Scene still.
Type casting the normalized vector 'lookat' to int results to <0,0,0>.
This patch also adds an overload to RequestNeighbourInfo (currently unused)
that will come handy for some features I'm working on.
Places touched:
- Added two events for in-packets to LLCLientView: RegionHandleRequest and
ParcelInfoRequest
- Added sending of two out-packets to LLCLientView: RegionIDAndHandleReply and
ParcelInfoReply.
- Scene handles the RegionHandleRequest, LandManagementModule the
ParcelInfoRequest
- Added inter-region request for LandData by RegionHandle and local position.
This was implemented as XML-RPC request. The returned LandData isn't
complete, it only contains the data necessary for answering the
ParcelInfoRequest
- Added new CAPS (0009) for RemoteParcelRequest and some methods for LandData
handling to LandManagementModule
- Added methods for fake parcelID creation and parsing to Util
- Fixed missing implementation of interface methods.
- Added new file:
OpenSim/Framework/Communications/Capabilities/LLSDRemoteParcelResponse.cs
NOTE: This is part of the patch, too.
Due to the many places touched, I would consider this patch as experimental.
hierarchical rights structure. MasterAvatar: Owner of the region server
(may be null), net gods (users with GodLevel 200), Estate owner
(from database). Look at Opensim.ini.example to enable net gods.
Estate owner will default to master avatar.
The following patch makes some enhancements to loading/saving the Xml2
format.
- Add streamed version of functionality for saving prims to Xml2
format. The streamed version (optionally) allows for saving the
prims whose positions appear within a particular bounding box.
- Expose stream versions of LoadPrimsFromXml2 and SavePrimsToXml2 in
the Scene class
- Extend loading from Xml2 (the streamed version) to optionally start
scripts for the loaded scene objects)
* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed).
* However, it should be possible to do much better cleanup on this code in the future
occasionally, but are fixed on restart (issue 1919).
This patch introduces the following changes:
1. when a user teleports out of Region A, remove that user's profile
from the Region A user profile cache
2. when a user crosses between regions out of Region A, remove that
user's profile from the Region A user profile cache
3. the user profile cache's session ID member can now be set (written),
and is updated each time a connection with a new avatar is established (ie: a
new avatar enters the region)
4. when a region server looks up a user profile and a cache miss
occurs, fetch the user profile from the user server first instead of
immediately returning null
ScenePresence. Pace prim delivery to about 200 updates/s max. Break
a long-held lock that caused the notorious MapBlockQuery XMLRPC timeout
on agent login. Eliminate 60 second timeout at "Waiting for region handshake".
Fix region crossing/teleport response. Fix appearance in primmy regions.
* May resolves inventory problems that occur when the user moves between two regions`
* e.g. if the user moves to a second region, adds an inventory item, moves back to the original region then tries to manipulate that item
* Not yet implemented for teleport
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.
* This should stop the problem where linked prims loaded via an archive did not survive server restart
* It may address mantis 1819 though the symptoms don't look consistent
The LL Server sets the CreateSelected flag for a prim when sending a
property update when objects are linked. The following patch
gets OpenSim to do the same.
The problem I noticed is that when child prims are selected unlike
the Linden server, OpenSim does not return property information - it
only searches the root prims for matches.
What I'm not sure about is whether the parcel prim count taint should
be set or if the root prim should be set as selected (doesn't
seem possible to set the child prim as selected). It does
however fix the problem of the property information
not being sent, so its an improvement (I think!).
resending, timeouts, packet discarding. Add notification event for
packet discarding. Add priority scheduling for packet queues.
Add outgoing duplicate detection facility. Correct packet sequencing.
Make provisions for automatic server side throttle adjustments (comes
in next installment)
* This should allow multiple copies of an archive to be loaded into different regions on the same region server
* This shouldn't affect existing operations.
Add a test event handler (which would fire after a minute if a terrain packet hadn't been acked) to scene to handle the OnUnackedTerrain event, which currently just resends the terrain patch.
The idea of this packet tracking is for the region level application to be able to know if the client stack gave up on sending a packet.
* refactored some member names for readability and ccc (code convention conformance)
* took away two refs from Rest.Inventory since
* System.IO is part of System
* System.Xml.Serialization is part of System.Xml
crossing is also a sim crossing. Prevents the CAPS handler from being set
up for a banned user,making them redmap out.
Dirty hack, temporary until I can work out how to do it right.
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.
Makes the estate dialog fully functional. Implements all client facing functionality. Moves estate data from estate_settings.xml, which is used to provide defaults, to the region data store. Creates one estate for each region, and places the region in it. Converts all region bans to estate bans.
* Potentially useful for diagnostics without needing to log in a client
* Packet queue statistics commented out for now pending a better way to cope with the information overload
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 :(
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.
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.
up the sit target usage until the sit target fix patch goes in, but it should
be cleaned.
Get prims table mappings to the point where nhibernate likes them enough
to start.
Remove field from asset mapping so it will start
The 1st "GetAvatarAppearance" *always* fails and returns default
avatarappearance. Avatarappearance seems to be working well because
the 2nd "GetAvatarAppearance" gets the right appearance.
TODO next is to make the login server read/write a users inventory from the correct server (the inventory url set in a userprofile)
On the region side, although not tested with multiple servers it should work if that inventory url was set, and the inventory servers urls have been added to the CommunicationsManager, using CommunicationsManager.AddInventoryService(string hostUrl)
* This means that we will no longer pointlessly repersist all the prims in the scene when OpenSim first starts up
* This also means that force-update on the console will not trigger repersistence.
* Also, in other places persistence is no longer done where it wasn't actually necessary
* I think I changed the code for all instances correctly, but it's not possible that I missed some and some things which did persist properly have stopped
* Please patch or mantis if this is the case
Fixes:
- Wearable icon and name sreset to default on copy/paste
- Cache is not updated when renaming/moving folders
- Partial refactor to make inventory less dependen on AssetBase having a "Name" field
- Add llGiveInventoryList() function
Add util functions to compress and uncompress strings.
Fixed a couple of modules so they use SceneCommunicationService rather than directly call functions on the CommsManager.