Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003019opensim[REGION] OpenSim Corepublic2009-01-20 03:342012-05-06 14:32
ReporterDiva 
Assigned ToDiva 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0003019: SOG Updates
DescriptionI have this fast moving traffic simulation that I did using region modules. I hadn't updated it since October, but now I had some time to do it. I'm hoping I can open this demo up for the 2nd bthday celebration.

The major change in the API was having to explicitly call SOG update in some form; I chose SendFullUpdate. The thing I noticed was an enormous slow down of the movement of the vehicles, to the point that the demo was useless.
Additional InformationDigging a little deeper, I took a look at the several SOG update methods. They all follow the same pattern: send update of the root part, then all the parts:

        /// <summary>
        /// Immediately send a full update for this scene object.
        /// </summary>
        public void SendGroupFullUpdate()
        {
            if (IsDeleted)
                return;
            
            RootPart.SendFullUpdateToAllClients();

            lock (m_parts)
            {
                foreach (SceneObjectPart part in m_parts.Values)
                {
                    if (part != RootPart)
                        part.SendFullUpdateToAllClients();
                }
            }
        }

I removed the update of the parts:

        /// <summary>
        /// Immediately send a full update for this scene object.
        /// </summary>
        public void SendGroupFullUpdate()
        {
            if (IsDeleted)
                return;
            
            RootPart.SendFullUpdateToAllClients();
        }

As I suspected, everything works fine, and my vehicles are moving again at a decent speed. (Each vehicle is 0000052:0000030 parts...)

I understand sometimes we need to send a *full* update, because many parts may have changed? Maybe? But in my case (which I suspect is very common) only the group properties are changing (position, rotation, etc), the parts are not. The client is happy to receive only the info pertaining to the root part; it knows what to do with the rest.

At the very least there should be another update method that sends only the update of the root part, no?
TagsNo tags attached.
Git Revision or version number
Run Mode Standalone (Multiple Regions) , Grid (Multiple Regions per Sim)
Physics EngineODE
EnvironmentMono / Linux32, .NET / Windows32
Mono Version
Viewer
Attached Files

- Relationships
related to 0006009resolved [Solved] Changing ScheduleGroupForTerseUpdate in SOG (to: not updating childs) Request For Comments 

-  Notes
(0008885)
melanie (administrator)
2009-01-20 04:22

+1. Movement/rotation update is the most common case of root part only changing. The updating via script llSetPos and llSetRot should limit it to sending the root part. The code you showed comes froma time when this may not have been well known.
(0009070)
svn (developer)
2009-01-30 23:23

diva committed related code in r8187

Added a new method SendGroupRootUpdate to start addressing mantis 0003019. ll functions have not been changed.

see more at - http://opensimulator.org/cgi-bin/viewvc.cgi?view=rev&revision=8187 [^]
(0009074)
Diva (administrator)
2009-01-31 00:31

Leaving this here for now, until some ll functions use this new method.
(0018984)
makopoppo (manager)
2011-07-19 14:44

I remember there is a function which updates partly, and is used from several ll function in current codebase... but not sure...
(0021212)
Diva (administrator)
2012-04-09 01:00

This is sooo resolved.

- Issue History
Date Modified Username Field Change
2009-01-20 03:34 Diva New Issue
2009-01-20 03:34 Diva SVN Revision => 8080
2009-01-20 03:34 Diva Run Mode => Standalone (Multiple Regions) , Grid (Multiple Regions per Sim)
2009-01-20 03:34 Diva Physics Engine => ODE
2009-01-20 03:34 Diva Environment => Mono / Linux32, .NET / Windows32
2009-01-20 03:34 Diva Mono Version => 2.0.1
2009-01-20 04:22 melanie Note Added: 0008885
2009-01-30 23:23 svn Checkin
2009-01-30 23:23 svn Note Added: 0009070
2009-01-31 00:31 Diva Note Added: 0009074
2009-01-31 00:31 Diva Status new => acknowledged
2011-07-19 14:44 makopoppo Note Added: 0018984
2012-04-09 01:00 Diva Mono Version 2.0.1 =>
2012-04-09 01:00 Diva Note Added: 0021212
2012-04-09 01:00 Diva Status acknowledged => resolved
2012-04-09 01:00 Diva Resolution open => fixed
2012-04-09 01:00 Diva Assigned To => Diva
2012-05-06 14:32 Stefan_Boom Relationship added related to 0006009


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker