aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
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-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.
2009-09-02Thank you, dslake, for a set of patches to improve OpenSim startupMelanie1-2/+2
and idle performance.
2009-08-16Removed some debug messagesDiva Canto1-7/+0
2009-08-16Making attachments work again. Tons of debug more. This needs more testing ↵Diva Canto1-1/+12
and a lot of cleaning.
2009-08-16Misc cleanup.Jeff Ames1-10/+7
2009-08-15Changed one word in a commentDiva Canto1-1/+1
2009-08-15Changed FromAssetID to FromItemIDDiva Canto1-7/+7
2009-08-12Redirected all calls to CachedUserProfile methods to the inventory service. ↵Diva Canto1-2/+2
Redirection of the RootFolder property is still todo. This compiles but probably inventory will be inconsistent.
2009-08-04 Slight change to state management for attach scheduling.Alan Webb1-2/+2
Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
2009-08-04 This change adds support for the attach event in scripts.Alan Webb1-0/+2
[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-07-17fixed the bug where changing the rotation of a selection of prims in a ↵MW1-0/+19
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-06-02Explicitly set the changed status of the prim groups affected in a delinkMelanie Thielker1-0/+1
Mantis #2484
2009-06-01Minor: Change OpenSim to OpenSimulator in older copyright headers and ↵Jeff Ames1-1/+1
LICENSE.txt.
2009-05-01Add a tweakable for the prim queue preloadMelanie Thielker1-0/+1
2009-04-29Again, completely revamp the unlink code to finally allow unlinking Melanie Thielker1-79/+81
arbitrary combinations of root and child prims from one or multiple link sets. Please test throughly and consider things UNSTABLE until this is proven out.
2009-04-14Formatting cleanup.Jeff Ames1-5/+5
2009-04-12Thank you, dslake, for a patch that converts many of the linear searchesMelanie Thielker1-241/+197
in SceneGraph to fast dictionary lookups. Includes a regression fix for attachments by myself. Fixes Mantis #3312
2009-04-10Handle ObjectSpin* packets to spin physical prims on Ctrl+Shift+Dragnlin1-0/+41
Addresses Mantis #3381 The current implementation works as expected if the object has no rotation or only rotation around the Z axis; you can spin the object left or right (around the world Z axis). It works a little unexpectedly if the object has a non-Z-axis rotation; in this case the body is spun about its local Z axis, not the world Z-axis. (But SL also behaves oddly with a spin on an arbitrarily rotated object.)
2009-04-09* Implements retrieving child primitives via World.Objects[id] (MRM)Adam Frisby1-0/+3
* Optimizes SceneGraph - fetches on primitives via "GetGroupByPrim" wont search the entire list if the primitive is infact the root. (Core) * Updates Test MRM.
2009-03-30* refactor: Move god related methods in Scene out to a moduleJustin Clarke Casey1-1/+1
2009-03-20Change DropObject to public. Fixes Mantis #3314Melanie Thielker1-1/+1
2009-03-10From: Alan Webb <alan_webb@us.ibm.com>Dr Scofield1-0/+17
This commit fixes the attachment position problem described in OpenSim Mantis 2841 (and a couple of duplicate tickets).
2009-02-15This started as way to correct Mantis #3158, which I believe should be fixed ↵diva1-1/+1
now. The flying status was temporarily being ignored, which caused the avie to drop sometimes -- there was a race condition. In the process it also fixes that annoying bug in basic physics where the avie would drop half-way to the ground upon region crossings (SetAppearance was missing). Additionally, a lot of child-agent-related code has been cleaned up; namely child agents are now consistently not added to physical scenes, and they also don't have appearances. All of that happens in MakeRoot, consistently.
2009-02-09Moved prim crossing out of OGS1 and into RESTComms and ↵diva1-0/+1
LocalInterregionComms. This breaks interregion comms with older versions in what concerns prim crossing. In the process of moving the comms, a few things seem to be working better, namely this may address mantis #3011, mantis #1698. Hopefully, this doesn't break anything else. But I'm still seeing weirdnesses with attchments jumping out of place after a cross/TP. The two most notable changes in the crossing process were: * Object gets passed in only one message, not two as done before. * Local object crossings do not get serialized, as done before.
2009-02-06This changeset is the step 1 of 2 in refactoringDr Scofield1-6/+9
OpenSim.Region.Environment into a "framework" part and a modules only part. This first changeset refactors OpenSim.Region.Environment.Scenes, OpenSim.Region.Environment.Interfaces, and OpenSim.Region.Interfaces into OpenSim.Region.Framework.{Interfaces,Scenes} leaving only region modules in OpenSim.Region.Environment. The next step will be to move region modules up from OpenSim.Region.Environment.Modules to OpenSim.Region.CoreModules and then sort out which modules are really core modules and which should move out to forge. I've been very careful to NOT BREAK anything. i hope i've succeeded. as this is the work of a whole week i hope i managed to keep track with the applied patches of the last week --- could any of you that did check in stuff have a look at whether it survived? thx!
2009-02-03* minor: remove some pointless assignments in SOG.Copy() that had already ↵Justin Clarke Casey1-0/+5
been done by MemberwiseClone()
2009-01-15Eased the locking times of ScenePresences. No locks were removed, just the ↵diva1-3/+12
locking periods changed. * Added an additional lock in GetScenePresences() * Changed ForEachClient to use GetScenePresences() instead of the main ScenePresences dictionary, so that there is no need to lock.
2009-01-07* Slightly increase ScenePresences locking where it's technically required ↵Justin Clarke Casey1-17/+25
in SceneGraph
2009-01-06* Added three new events to SceneGraph:Adam Frisby1-3/+20
- OnObjectCreate - OnObjectDuplicate - OnObjectRemove
2009-01-06* Added a way for the sim stats reporter to say to the scene that the stats ↵Teravus Ovares1-0/+20
are illogical.
2009-01-03* Updates the sim stats module. Cleans out some of the rot.Teravus Ovares1-0/+11
* Adds a prototype web stats module which is disabled by default. It's functional with one report right now, however, the database structure may change, so I don't recommend enabling this to keep actual stats right now. I'll let you know when it's safe. * Adds Prototype for ajaxy web content * removed a warning or two.
2008-12-26* Applying Nlin's NINJA Joint patch. v2. Mantis# 2874Teravus Ovares1-0/+17
* Thanks nlin! * To try it out, set ninja joints active in the ODEPhysicsSettings and use the example at: * http://forge.opensimulator.org/gf/download/frsrelease/142/304/demo-playground.tgz. * Don't forget to change the .tgz to .oar and load it with load-oar.
2008-12-21* Fixes linking multiple linksets together. They no longer explodeTeravus Ovares1-0/+3
* Not out of the weeds yet. Rotating the root part with 'edit linked parts' still borks all child part rotations and rotating a selection of child parts with 'edit linked parts' still borks the position/rotation of the child parts selected
2008-12-20Mantis#2796. Thank you kindly, Gerhard for a patch that addresses:Charles Krinke1-1/+3
On a call of llVolumeDetect(1) (or any other number !=0) volume detection is enabled. Together with VD, the phantom flag is set to the GUI. On a call of llVolumeDetect(0), vd detection is switched of again, also the phantom state is removed. On a call to llSetState(STATE_PHANTOM, false) while VD is active, also VD is switched off. The same is true for unchecking the phantom flag via GUI. This allows to take back VD without the need to script just by removing the phantom flag. Things missing in this patch: persistance of the volume-detection flag. This needs more discussion and will be included in another patch soon.
2008-12-14Mantis#2725. Thank you kindly, Diva, for a patch that:Charles Krinke1-11/+14
Adds missing protocol pieces for EstablishAgentCommunication event which allows the client to activate CAPS and the EQ for child agents.
2008-12-07* Tweaks physics so that linked prim are a single body. This will make ↵Teravus Ovares1-0/+4
linked prim more stable and probably the last obstacle to vehicles physics wise. * Fixed a bug that caused physics proxies to be scattered when you link an object. * Single physical prim work exactly the same as before, just linked physical prim will have changed.
2008-11-30Mantis #2716 Null when linking across objects across two regions.idb1-0/+4
Now silently fails to link prims in different regions.
2008-11-29Start scripts in attachments only after a successful attach. ElimininateMelanie Thielker1-0/+4
a gratuitious asset fetch when region crossing.
2008-11-28* simplify AddNewClient since making this root without using MakeRootAgent() ↵Justin Clarke Casey1-2/+2
no longer sets everything up properly
2008-11-28Correct wrong inverted logic on settings goupMelanie Thielker1-1/+1
2008-11-28Force regioncrossed prims to get a new LocalID. Reset parent local ID to newMelanie Thielker1-1/+6
avatar local ID when corssing.