aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-10-30* Fix for a potential race condition in ScenePresence.AbsolutePositionJohn Hurliman2-40/+42
* Unified the way region handles are stored and used in ScenePresence * Fixed camera position for child agents * CheckForSignificantMovement now checks avatar and camera position (both are important for scene prioritization) * Removing debug code from the previous commit
2009-10-29* Fixed a NullReferenceException in GetMovementAnimation() and added more ↵John Hurliman1-29/+35
protection against NREs in AddNewMovement() * Removed the three second limit on ImprovedTerseObjectUpdate. With the latest fixes I don't think this is necessary, and it generates a lot of unnecessary updates in a crowded sim
2009-10-29* Commented out two noisy debug lines in the LLUDP serverJohn Hurliman2-157/+142
* Misc. cleanup in ScenePresence.HandleAgentUpdate()
2009-10-29* Implemented foot collision plane for avatarsJohn Hurliman1-215/+44
* Fixed a NullReferenceException regression
2009-10-29Ported the Simian avatar animation system to OpenSim. Landing is currently ↵John Hurliman1-36/+203
not working
2009-10-29Fixing NullReferenceException regression in the previous commitJohn Hurliman1-1/+1
2009-10-29* Log progress messages when loading OAR files with a lot of assetsJohn Hurliman2-9/+13
* Change the PhysicsCollision callback for objects to send full contact point information. This will be used to calculate the collision plane for avatars * Send the physics engine velocity in terse updates, not the current force being applied to the avatar. This should fix several issues including crouching through the floor and walking through walls
2009-10-28Small performance tweaks to code called by the heartbeat loopJohn Hurliman4-117/+53
2009-10-28Always send a time dilation of 1.0 while we debug rubberbanding issuesJohn Hurliman2-5/+4
2009-10-28Limit physics time dilation to 1.0John Hurliman1-1/+1
2009-10-28* Standalone logins will now go through the sequence of "requested region, ↵John Hurliman2-16/+20
default region, any region" before giving up * Hip offset should have been added not subtracted (it's a negative offset). This puts avatar feet closer to the ground * Improved duplicate checking for terse updates. This should reduce bandwidth and walking through walls
2009-10-28* Reduce the velocity tolerance on sending terse updates to avoid slowly ↵John Hurliman2-2/+2
drifting prims/avatars * Added contacts_per_collision to the ODE config section. This allows you to reduce the maximum number of contact points ODE will generate per collision and reduce the size of the array that stores contact structures
2009-10-28Track timestamps when terse updates were last sent for a prim or avatar to ↵John Hurliman2-2/+10
avoid floating away forever until a key is pressed (deviates from SL behavior in a hopefully good way)
2009-10-27Move the calculation of time dilation from the scene to the physics engine. ↵John Hurliman2-15/+7
The scene is still the one reporting dilation so this does not break the API or remove flexibility, but it gets the calculation happening in the right place for the normal OpenSim usage. The actual calculation of physics time dilation probably needs tweaking
2009-10-27Lowering the position tolerance of terse updates for ScenePresences to ↵John Hurliman1-1/+1
mitigate some of the rubberbanding issues while we are sending incorrect time dilation values
2009-10-27Making the defaults for interest management variables match whether you have ↵John Hurliman1-3/+3
the [InterestManagement] section in your config or not
2009-10-27Forgot a line in the previous commitJohn Hurliman1-0/+2
2009-10-27Finally hunted down the Parallel deadlock. Packets were being handled ↵John Hurliman1-6/+9
asynchronously (filling up the threadpool with handlers), which would turn around and try to do parallel operations on the starved threadpool. The solution for now is to disable Parallel.cs operations until we can gracefully handle parallel operations with a potentially starved threadpool
2009-10-27* Converts ClientManager.ForEach() (and as a result, Scene.ForEachClient()) ↵John Hurliman1-3/+2
to use a non-blocking parallel method when operating in async mode * Minor code readability cleanup
2009-10-26Experimental change of PhysicsVector to Vector3. UntestedJohn Hurliman4-49/+45
2009-10-26* Double the priority on avatar bake texture requests to get avatars rezzing ↵John Hurliman2-58/+55
in faster than the surrounding scene * Adds duplicate tracking for SceneObjectParts and ScenePresences to avoid sending out duplicate ImprovedTerseObjectUpdate packets
2009-10-26Removing the ClientManager reference from IScene and hiding it entirely ↵John Hurliman2-11/+21
inside Scene as an implementation detail. This will reduce programming error and make it easier to refactor the avatar vs client vs presence mess later on
2009-10-26* Switched all operations on the list of clients that could be either sync ↵John Hurliman2-22/+28
or async to use Scene.ForEachClient() instead of referencing ClientManager directly * Added a new [Startup] config option called use_async_when_possible to signal how to run operations that could be either sync or async * Changed Scene.ForEachClient to respect use_async_when_possible * Fixing a potential deadlock in Parallel.ForEach by locking on a temporary object instead of the enumerator (which may be shared across multiple invocations on ForEach). Thank you diva
2009-10-26Added calls to GC.AddMemoryPressure() when unmanaged memory is allocated for ↵John Hurliman1-0/+5
ODE (helps the GC make better scheduling choices), and a call to GC.Collect() right before logins are enabled for a region. Although this doesn't change actual memory usage, it improves the reported usage from OpenSim and the operating system
2009-10-26* Changed the watchdog timer to improve the speed of UpdateThread(), only ↵John Hurliman1-0/+2
track threads once the first call to UpdateThread() has been made, and allow re-tracking of threads that timed out but revived later * Added a commented out call to Watchdog.UpdateThread() in OdeScene. If it turns out that loading a large OAR file or some other operation is timing out the heartbeat thread, we'll need to uncomment it
2009-10-25Minor tweaks to get OpenSim compiling against both the current libomv and ↵John Hurliman2-1/+3
the upcoming 0.8.0
2009-10-25Minor tweaks to get OpenSim compiling against both the current libomv and ↵John Hurliman2-1/+3
the upcoming 0.8.0
2009-10-25Changing Scene.ForEachClient to use the synchronous for loop instead of ↵John Hurliman3-57/+56
Parallel. This is quite possibly the source of some deadlocking, and at the very least the synchronous version gives better stack traces * Lock the LLUDPClient RTO math * Add a helper function for backing off the RTO, and follow the optional advice in RFC 2988 to clear existing SRTT and RTTVAR values during a backoff * Removing the unused PrimitiveBaseShape.SculptImage parameter * Improved performance of SceneObjectPart instantiation * ZeroMesher now drops SculptData bytes like Meshmerizer, to allow the texture data to be GCed * Improved typecasting speed in MySQLLegacyRegionData.BuildShape() * Improved the instantiation of PrimitiveBaseShape
2009-10-23* Changed various modules to not initialize timers unless the module is ↵John Hurliman1-0/+3
initialized. Ideally, the timers would not initialize unless the module was actually enabled, but Melanie's work on configuring module loading from a config file should make that unnecessary * Wrapped the Bitmap class used to generate the world map tile in a using statement to dispose of it after the JPEG2000 data is created
2009-10-23* Unregister Mono.Addins event handlers in PluginLoader.Dispose() and always ↵John Hurliman1-4/+9
handle PluginLoader with the using pattern. This freed up 121,634,796 bytes on my system * Avoid allocating an Action<IClientAPI> object every round of the OutgoingPacketHandler * Removed unnecessary semi-colon endings from OpenSim.ini.example [InterestManagement] section
2009-10-23Implemented a "FrontBack" prioritizer, using distance plus the plane ↵John Hurliman3-3/+78
equation to give double weight to prims/avatars in front of you
2009-10-23Experimental change to use an immutable array for iterating ScenePresences, ↵John Hurliman6-186/+198
avoiding locking and copying the list each time it is accessed
2009-10-22* Send out m_bodyRot everywhere instead of m_rotation. Still have no clue ↵John Hurliman1-8/+7
which is right * Fix WorldMapModule.process() to not trip the watchdog timer
2009-10-22Forgot to hit save in the last commitJohn Hurliman1-1/+1
2009-10-22* Sending (position - hipoffset) instead of positionJohn Hurliman1-5/+2
* Sending m_rotation instead of m_bodyRot in full updates to match terse updates (no idea which one is right!)
2009-10-22Implemented a Watchdog class. Do not manually create Thread objects anymore, ↵John Hurliman1-10/+10
use Watchdog.StartThread(). While your thread is running call Watchdog.UpdateThread(). When it is shutting down call Watchdog.RemoveThread(). Most of the threads in OpenSim have been updated
2009-10-20* Added a sanity check to GetScriptAssemblies() and GetScriptStates() for ↵John Hurliman1-10/+16
the case where no scripting engine is enabled * Added TokenBucket.cs to OpenSim, with some fixes for setting a more accurate MaxBurst value and getting a more accurate Content value (by Drip()ing each get)
2009-10-20* Removed the unused m_agentUpdates collection and some extra work that was ↵John Hurliman1-93/+33
being done for AgentUpdate packets * Start LLUDPClients unpaused (this variable is not being used yet)
2009-10-20Reverting the deletion of files related to texture sending until we figure ↵John Hurliman1-0/+58
out exactly what is and isn't needed
2009-10-20* Removing cruft left over from the conversion to the new texture sending ↵John Hurliman1-58/+0
and UDP code * Changing the cache modules to only initialize the caches if they are actually enabled. Should save a bit of resources from unused cache systems
2009-10-19* Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman5-58/+50
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-18* Rewrote the methods that build ObjectUpdate and ImprovedTerseObjectUpdate ↵John Hurliman3-36/+27
packets to fill in the data more accurately and avoid allocating memory that is immediately thrown away * Changed the Send*Data structs in IClientAPI to use public readonly members instead of private members and getters * Made Parallel.ProcessorCount public * Started switching over packet building methods in LLClientView to use Util.StringToBytes[256/1024]() instead of Utils.StringToBytes() * More cleanup of the ScenePresences vs. ClientManager nightmare * ScenePresence.HandleAgentUpdate() will now time out and drop incoming AgentUpdate packets after three seconds. This fixes a deadlock on m_AgentUpdates that was blocking up the LLUDP server
2009-10-19Formatting cleanup.Jeff Ames1-2/+2
2009-10-17Committing the second part of Jim Greensky @ Intel Lab's patch, ↵John Hurliman3-3/+124
re-prioritizing updates
2009-10-16* One more tweak to inform the user that they may not be able to move until ↵Teravus Ovares (Dan Olivares)1-3/+5
relogging.
2009-10-16* fix previous commitTeravus Ovares (Dan Olivares)1-1/+1
2009-10-16* Ensure that at least 20 frames run before letting avatar in.Teravus Ovares (Dan Olivares)1-0/+11
2009-10-16Updating OpenSim.ini.example with the section required to enable a useful ↵John Hurliman1-0/+2
prioritization scheme
2009-10-16* Make sure to unregister the OutOfBounds Physics event in ↵Teravus Ovares (Dan Olivares)1-0/+1
RemoveFromPhysicalScene or we'll be leaking
2009-10-16* A hacky attempt at resolving mantis #4260. I think ODE was unable to ↵Teravus Ovares (Dan Olivares)1-0/+9
allocate memory, and therefore the unmanaged wrapper call fails or worse.. there's some unmanaged resource accounting in the ODEPlugin for ODECharacter that isn't being done properly now. * The broken avatar may not be able to move, but it won't stop simulate from pressing on now. And, the simulator will try to destroy the avatar's physics proxy and recreate it again... but if this is what I think it is, it may not help.