Commit Graph

64 Commits (62e0b53ca4697a852ee1e36e86da6a32e93bd55e)

Author SHA1 Message Date
Dan Lake 62e0b53ca4 Renamed TryGetAvatar to TryGetScenePresence on SceneManager, SceneBase, Scene and SceneGraph. This was the only change in this patch to keep it isolated from other recent changes to the same set of files. 2010-03-19 15:16:44 -07:00
Dan Lake 859bc717a4 Cleaned up access to scenepresences in scenegraph. GetScenePresences and GetAvatars have been removed to consolidate locking and iteration within SceneGraph. All callers which used these to then iterate over presences have been refactored to instead pass their delegates to Scene.ForEachScenePresence(Action<ScenePresence>). 2010-03-19 15:16:35 -07:00
Dan Lake 73e9b0be72 Inconsistent locking of ScenePresence array in SceneGraph. Fixed by eliminating option to return the actual list. Callers can now either request a copy of the array as a new List or ask the SceneGraph to call a delegate function on every ScenePresence. Iteration and locking of the ScenePresences now takes place only within the SceneGraph class.
This patch also applies a fix to Combat/CombatModule.cs which had unlocked iteration of the ScenePresences and inconsistent try/catch around the use of those ScenePresences.
2010-03-17 11:21:27 -07:00
Justin Clark-Casey (justincc) 582375509c refactor: move RezSingleAttachmentFromInventory() from SceneGraph to AttachmentsModule 2010-03-12 22:48:49 +00:00
Justin Clark-Casey (justincc) b9f5cd75bc refactor: move client invoked AttachObject from SceneGraph to AttachmentsModule 2010-03-12 22:39:15 +00:00
Justin Clark-Casey (justincc) 395f343498 refactor: Move DetachSingleAttachmentToInv to region module
need to rationalize method names later
2010-03-06 00:07:47 +00:00
Justin Clark-Casey (justincc) 60553e62a3 refactor: begin to move attachments code into a region module 2010-03-05 23:18:47 +00:00
Justin Clark-Casey (justincc) edb176447b Fix bug where approximately half the time, attachments would rez only their root prim until right clicked (or otherwise updated).
The root cause of this problem was that multiple ObjectUpdates were being sent on attachment which differed enough to confuse the client.
Sometimes these would eliminate each other and sometimes not, depending on whether the scheduler looked at the queued updates.
The solution here is to only schedule the ObjectUpdate once the attachment code has done all it needs to do.
2010-03-03 22:14:06 +00:00
Justin Clark-Casey (justincc) 660ebe52cf Actually make EventManager.OnAttach() fire when an object is attached. Previously, only detach was firing! 2010-03-03 18:40:33 +00:00
Melanie 1f45e6c649 Merge branch 'master' into presence-refactor
This brings presence-refactor up to master again
2010-02-22 03:00:59 +00:00
Jeff Ames af265e001d Formatting cleanup. 2010-02-15 19:21:56 +09:00
Melanie c033223c63 Merge branch 'master' into presence-refactor 2010-02-15 00:20:48 +00:00
Revolution 9821c4f566 Revolution is on the roll again! :)
Fixes: Undo, T-pose of others on login, modifiedBulletX works again, feet now stand on the ground instead of in the ground, adds checks to CombatModule. Adds: Redo, Land Undo, checks to agentUpdate (so one can not fall off of a region), more vehicle parts. Finishes almost all of LSL (1 function left, 2 events).

Direct flames and kudos to Revolution, please

Signed-off-by: Melanie <melanie@t-data.com>
2010-02-14 22:18:46 +00:00
Melanie baaf660511 Merge branch 'master' into presence-refactor
This was a large, heavily conflicted merge and things MAY have got broken.
Please check!
2010-02-08 15:53:38 +00:00
Melanie 2953bee1f4 Revert "change position of OnAttach event firing so that this also happens when a user teleports into a region"
The behavior introduced here is not compatible with SL

This reverts commit b6bee4999c.
2010-02-04 17:11:06 +00:00
Justin Clark-Casey (justincc) b6bee4999c change position of OnAttach event firing so that this also happens when a user teleports into a region 2010-02-03 15:35:41 +00:00
Justin Clark-Casey (justincc) 4c1740f7d8 Actually make EventManager.OnAttach() fire when an object is attached. Previously, only detach was firing! 2010-02-01 20:15:36 +00:00
Justin Clark-Casey (justincc) 53a01dc422 Don't try to start attachment scripts or send updates if the attachment itself has been unsuccessful 2010-02-01 20:06:43 +00:00
Diva Canto 42f978a478 * HGScene is no more.
* Moved a few key inventory access methods from Scene.Inventory to an IInventoryAccessModule module
2010-01-30 09:23:07 -08:00
Melanie 9453c42631 Experimental: Remove explicit property sends 2009-12-06 02:54:19 +00:00
Melanie 1a695875a7 Skip single prims in unlink selections 2009-12-06 02:54:09 +00:00
Melanie f71025aeed Change locking to not mix explicit Monitor.* calls with lock() 2009-12-06 02:54:00 +00:00
Melanie 46d5add175 Lock updates out while linking and unlinking 2009-12-06 02:53:42 +00:00
Melanie e3a22ff37d Eliminate multiple updates on link/unlink 2009-12-06 02:53:34 +00:00
John Hurliman 59eb378d16 Small performance tweaks to code called by the heartbeat loop 2009-10-28 23:10:16 -07:00
John Hurliman 588361e2a2 Experimental change to use an immutable array for iterating ScenePresences, avoiding locking and copying the list each time it is accessed 2009-10-23 01:02:36 -07:00
Melanie c4969d47d9 Merge branch 'master' into vehicles 2009-10-22 07:12:10 +01:00
John Hurliman 142008121e * Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). This avoids .NET remoting and a managed->unmanaged->managed jump. Overall, a night and day performance difference
* Initialize the LLClientView prim full update queue to the number of prims in the scene for a big performance boost
* Reordered some comparisons on hot code paths for a minor speed boost
* Removed an unnecessary call to the expensive DateTime.Now function (if you *have* to get the current time as opposed to Environment.TickCount, always use DateTime.UtcNow)
* Don't fire the queue empty callback for the Resend category
* Run the outgoing packet handler thread loop for each client synchronously. It seems like more time was being spent doing the execution asynchronously, and it made deadlocks very difficult to track down
* Rewrote some expensive math in LandObject.cs
* Optimized EntityManager to only lock on operations that need locking, and use TryGetValue() where possible
* Only update the attachment database when an object is attached or detached
* Other small misc. performance improvements
2009-10-19 15:19:09 -07:00
John Hurliman fdb2a75ad3 Committing the second part of Jim Greensky @ Intel Lab's patch, re-prioritizing updates 2009-10-17 18:01:22 -07:00
John Hurliman 4b75353cbf Object update prioritization by Jim Greensky of Intel Labs, part one. This implements a simple distance prioritizer based on initial agent positions. Re-prioritizing and more advanced priority algorithms will follow soon 2009-10-15 16:35:27 -07:00
John Hurliman d44b50ee46 * Removed some of the redundant broadcast functions in Scene and SceneGraph so it is clear who/what the broadcast is going to each time
* Removed two redundant parameters from SceneObjectPart
* Changed some code in terse update sending that was meant to work with references to work with value types (since Vector3 and Quaternion are structs)
* Committing a preview of a new method for sending object updates efficiently (all commented out for now)
2009-10-15 15:25:02 -07:00
Melanie 6deef7d0f3 Merge branch 'master' into vehicles 2009-10-15 21:14:13 +01:00
Dan Lake 5976ac16b0 Optimized heartbeat by calling Update() only on updated objects.
During the heartbeat loop, Update() is called on every SceneObjectGroup which in turn checks if any SceneObjectPart has changed. For large regions (> 100k prims) this work consumes 20-30% of a CPU even though there are only a few objects updating each frame.

There is only one other reason to check every object on every frame, and that is the case where a script has registered the object with an "at target" listener. We can easily track when an object is registered or unregistered with an AtTarget, so this is not a reason to check every object every heartbeat.

In the attached patch, I have added a dictionary to the scene which tracks the objects which have At Targets. Each heartbeat, the AtTarget() function will be called on every object registered with a listener for that event. Also, I added a dictionary to SceneGraph which stores references to objects which have been queued for updates during the heartbeat. At each heartbeat, Update() is called only on the objects which have generated updates during that beat.
2009-10-13 19:32:59 -07:00
Melanie 89d23a1fa2 Revert "Rewrote parts of the code that were double-locking different objects. This is about half of the code base reviewed."
This reverts commit e992ca0255.
2009-10-07 01:45:49 +01:00
Diva Canto e992ca0255 Rewrote parts of the code that were double-locking different objects. This is about half of the code base reviewed. 2009-10-06 15:39:53 -07:00
Melanie 41ff39414b Merge branch 'master' into vehicles 2009-10-01 14:08:15 +01:00
opensim 827b0fb199 Commit initial version of KittoFlora's vehicle changes 2009-09-30 18:51:02 +02:00
Jeff Ames ee205e7e81 Formatting cleanup. 2009-10-01 01:17:47 +09:00
Diva Canto bc892c1d4c A little hack to see if this fixes the problems with ~20% of SOG's becoming phantom after an import to megaregions. 2009-09-29 07:54:56 -07:00
Melanie f32de6fe88 Thank you, dslake, for a set of patches to improve OpenSim startup
and idle performance.
2009-09-02 03:33:31 +01:00
Diva Canto 5d47e08dad Removed some debug messages 2009-08-16 17:11:20 -07:00
Diva Canto e02062051d Making attachments work again. Tons of debug more. This needs more testing and a lot of cleaning. 2009-08-16 16:17:19 -07:00
Diva Canto 6808b9109e Merge branch 'master' of ssh://diva@opensimulator.org/var/git/opensim into inventory-connector 2009-08-16 08:59:58 -07:00
Jeff Ames 9d9fcac038 Misc cleanup. 2009-08-16 17:14:21 +09:00
Diva Canto 19e45466f2 Changed one word in a comment 2009-08-15 14:57:24 -07:00
Diva Canto 1bbf06405c Changed FromAssetID to FromItemID 2009-08-15 09:36:45 -07:00
Diva Canto 7aa54593e0 Redirected all calls to CachedUserProfile methods to the inventory service. Redirection of the RootFolder property is still todo. This compiles but probably inventory will be inconsistent. 2009-08-12 20:39:48 -07:00
Alan Webb 068f54725b Slight change to state management for attach scheduling.
Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
2009-08-04 11:44:22 +02:00
Alan Webb 9ffe4d850e This change adds support for the attach event in scripts.
[1] Added a new OnAttach event to Scene/EventManager
  [2] Hooked up existing attach event handler in XEngine.
  [3] Modified SceneGraph and Scene.Inventory to trigger
      attach events at the appropriate places. I was forced
      to distribut the changes across two files because of
      the way attach processing is distributed across the
      two files.
  [4] In the case of RezSingleAttachmentFromInventory it is
      necessary to handle event scheduling in a special way.
      There is no synchronous path available, so the fact
      that this object is attached, and who it is attached to,
      is cached when the ScriptInstance is created. When
      the script is started, the attached handler is driven
      after on_rez (but before changed, this should be reviewed).

Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
2009-08-04 11:41:06 +02:00
MW acea31518b fixed the bug where changing the rotation of a selection of prims in a linkset, made each of those prims rotate around its own centre rather than around the geometric centre of the selection like they should do (and like the client expects).
This involved adding a new OnUpdatePrimSingleRotationPosition event to IClientAPI so that we can get the changed position from the client. 
Btw adding new events to IClientAPI is really tedious where you have to copy the change across to at least 5 or 6 other files. 
[Note this doesn't fix the bug where any rotation changes to the root prim (but not the whole linkset) cause rotation errors on the child prims.]
2009-07-17 14:58:54 +00:00