aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2010-07-30remove unused BasicQuadTreeNodeJustin Clark-Casey (justincc)1-5/+0
2010-06-28Remove AgentID and GroupOD from the signature of SOG.Copy(). They were neverMelanie Thielker1-1/+1
used, but made for a very mispleading read of the code in the callers.
2010-06-28Fix Copy on Ray, Drag Copy and other little things. Removed the wrong andMelanie Thielker1-1/+1
nonworking ownership assignment in SOG, which messed things up before. No longer trust the client to send the ID of the person something is copied as, since it allows to run a script with someone else's permissions. Properly adjust inventory ownership and perms.
2010-06-27Make drag copy and copy-on-ray handle friends list perms properlyMelanie Thielker1-0/+22
2010-06-25stop KeyNotFoundException() being thrown in RemoveScenePresence if the agent ↵Justin Clark-Casey (justincc)1-6/+7
isn't present in the presence dictionary the code to do this was there but was being circumvented by newmap[agentID] before the check actually took place
2010-06-08Refactor SendCoarseLocations for better performance. Instead of computing ↵Dan Lake1-0/+37
list of all locations fresh for every scene presence on every frame, we will instead compute the list once every 50 frames and send to all connected presences at that time. Also, we only add 60 items to the list when there are more than 60 presences in the scene. For 1000 users, this change yields a 99.8% reduction in list processing and a 98% reduction in network bandwidth for coarse locations.
2010-06-08Reduce number of full updates sent on region crossing for attachments/huds ↵Justin Clark-Casey (justincc)1-3/+7
to 1 from 3 This is one step towards reducing hud glitches on region crossing, since the viewer fails to display prims if it receives child full updates before the root prim full update This commit also introduces a mechanism in LLClientView to stop child attachment updates ever going out before the root one This is a very temporary mechanism and will be commented out when the next step of the fix (to give root prims higher udpate priority) is committed This code is a foreport from the equivalent changes in 0.6.9-post-fixes
2010-05-31Fix create selection getting overwritten by multiple updates for the same prim.Melanie Thielker1-1/+1
2010-05-21rearrange SceneGraph.AddSceneObject() to return earlier if an object with ↵Justin Clark-Casey (justincc)1-53/+49
that uuid is already in the scene this means that we don't perform pointless work
2010-05-21Fix a problem where SceneGraph.AddSceneObject() would return false on ↵Justin Clark-Casey (justincc)1-7/+14
successfully adding an object rather than true, in defiance of its method documentation This meant that the returns were inconsistent - false would be returned both for various scene object failure conditions (e.g. root part was null) and if the object was successfully added.
2010-05-15Refactor scene presence list for lockless iteration. Lock contention will ↵Dan Lake1-61/+53
now only be for simultaneous add/removes of scene presences from the scene.
2010-04-30Fix link security issueMelanie1-32/+9
2010-04-19All scripts are now created suspended and are only unsuspended when the objectMelanie1-0/+1
is fully rezzed and all scripts in it are instantiated. This ensures that link messages will not be lost on rez/region crossing and makes heavily scripted objects reliable.
2010-04-16refactor: crudely move DetachSingleAttachmentToGround() over to the ↵Justin Clark-Casey (justincc)1-3/+1
AttachmentsModule
2010-03-19Renamed TryGetAvatar to TryGetScenePresence on SceneManager, SceneBase, ↵Dan Lake1-1/+1
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-19Cleaned up access to scenepresences in scenegraph. GetScenePresences and ↵Dan Lake1-107/+79
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-17Inconsistent locking of ScenePresence array in SceneGraph. Fixed by ↵Dan Lake1-63/+130
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-12refactor: move RezSingleAttachmentFromInventory() from SceneGraph to ↵Justin Clark-Casey (justincc)1-53/+0
AttachmentsModule
2010-03-12refactor: move client invoked AttachObject from SceneGraph to AttachmentsModuleJustin Clark-Casey (justincc)1-35/+0
2010-03-06refactor: Move DetachSingleAttachmentToInv to region moduleJustin Clark-Casey (justincc)1-34/+1
need to rationalize method names later
2010-03-05refactor: begin to move attachments code into a region moduleJustin Clark-Casey (justincc)1-82/+4
2010-03-03Fix bug where approximately half the time, attachments would rez only their ↵Justin Clark-Casey (justincc)1-10/+33
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-03Actually make EventManager.OnAttach() fire when an object is attached. ↵Justin Clark-Casey (justincc)1-0/+3
Previously, only detach was firing!
2010-02-15Formatting cleanup.Jeff Ames1-1/+1
2010-02-14Revolution is on the roll again! :)Revolution1-0/+9
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-04Revert "change position of OnAttach event firing so that this also happens ↵Melanie1-1/+2
when a user teleports into a region" The behavior introduced here is not compatible with SL This reverts commit b6bee4999c9d238a052022f105069ea4eb85f8f4.
2010-02-03change position of OnAttach event firing so that this also happens when a ↵Justin Clark-Casey (justincc)1-2/+1
user teleports into a region
2010-02-01Actually make EventManager.OnAttach() fire when an object is attached. ↵Justin Clark-Casey (justincc)1-0/+3
Previously, only detach was firing!
2010-02-01Don't try to start attachment scripts or send updates if the attachment ↵Justin Clark-Casey (justincc)1-25/+52
itself has been unsuccessful
2010-01-30* HGScene is no more.Diva Canto1-17/+23
* Moved a few key inventory access methods from Scene.Inventory to an IInventoryAccessModule module
2009-12-06Experimental: Remove explicit property sendsMelanie1-11/+11
2009-12-06Skip single prims in unlink selectionsMelanie1-8/+11
2009-12-06Change locking to not mix explicit Monitor.* calls with lock()Melanie1-2/+12
2009-12-06Lock updates out while linking and unlinkingMelanie1-121/+134
2009-12-06Eliminate multiple updates on link/unlinkMelanie1-0/+2
2009-11-13undo previous changesdahlia1-1/+1
add a GetGroupByPrim() method to Scene.cs delete a redundant method
2009-11-13expose SceneGraph.GetGroupByPrim(UUID)dahlia1-1/+1
2009-10-28Small performance tweaks to code called by the heartbeat loopJohn Hurliman1-5/+9
2009-10-23Experimental change to use an immutable array for iterating ScenePresences, ↵John Hurliman1-76/+84
avoiding locking and copying the list each time it is accessed
2009-10-19* Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman1-3/+9
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-17Committing the second part of Jim Greensky @ Intel Lab's patch, ↵John Hurliman1-1/+1
re-prioritizing updates
2009-10-15Object update prioritization by Jim Greensky of Intel Labs, part one. This ↵John Hurliman1-1/+0
implements a simple distance prioritizer based on initial agent positions. Re-prioritizing and more advanced priority algorithms will follow soon
2009-10-15* Removed some of the redundant broadcast functions in Scene and SceneGraph ↵John Hurliman1-17/+0
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-13Optimized heartbeat by calling Update() only on updated objects.Dan Lake1-19/+9
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-07Revert "Rewrote parts of the code that were double-locking different ↵Melanie1-23/+13
objects. This is about half of the code base reviewed." This reverts commit e992ca025571a891333a57012c2cd4419b6581e5.
2009-10-07Revert "Merging in diva's locking fixes"Melanie1-23/+13
This reverts commit 832cc685138b2244529f10b54b373c34adb4a633.
2009-10-06Rewrote parts of the code that were double-locking different objects. This ↵Diva Canto1-13/+23
is about half of the code base reviewed.
2009-09-30Commit initial version of KittoFlora's vehicle changesopensim1-3/+3
2009-10-01Formatting cleanup.Jeff Ames1-1/+1
2009-09-29A little hack to see if this fixes the problems with ~20% of SOG's becoming ↵Diva Canto1-0/+17
phantom after an import to megaregions.