Melanie wrote:
> Hi,
> 
> Frisby, Adam wrote:
>> -          SceneGraph.Get* methods are generally very wasteful. Lots of them 
>> use the /slow/ GetEntities method to build a list of entities before 
>> searching them. This is particularly noticeable on the GetGroupByPrim(UUID) 
>> method. EntityManager should be having indexes for these frequently accessed 
>> items.
> 
> I thought some one (justin?) worked on that with the goal of adding 
> indexes/making it a dict.

This kind of thing should definitely happen.  However, the last known movement 
on this was, I thought, when Adam created 
the EntityManager class.  I thought this was eventually intended to manage 
things (though it's hard to tell when classes 
aren't documented).

> 
>> -          Why, to send a primitive do we need to: - Mark it for updates. - 
>> Crawl through the Entities list for updates - Send updates to ClientViews, 
>> when we could just Send the update directly to viewers 
>> (EventManager.TriggerOnPrimUpdated[?])?
> 
> Because it would happen in the wrong thread context, maybe?
> 
>> -          Why does Scene.Heartbeat/Update do more than just updating 
>> frame-dependent things? Eg, why not keep Update to just: Update Physics, 
>> Process Scripts[?], etc. Out of it we move: Backup (timer?), Land update 
>> (when something happens+ timer?), Terrain backup (main backup thread?)
> 
> Scripts don't run in update, although movement events are generated 

Some time back I did think about doing backups separately.  However, the code 
in this area is very tangly and one would 
need to be extremely careful to take care of race conditions, deadlock, etc. 
with another thread accessing SOGs and SOPs.

> there.
> 
>> -          Why build X copies of the same packet for fifteen separate 
>> clients? Why not re-use the update packet and change the agent IDs? Maybe 
>> some kind of 'PacketMaster' could be developed for each ClientView type 
>> which allows us to do 'bulk' operations like this.
> 
> Because of the sequence numbers. They are different for each client.

Exactly.  We have been caught out before here where packet objects were reused 
before the previously client had finished 
with it.  This generated very difficult to find bugs.

> 
> Melanie
> _______________________________________________
> Opensim-dev mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/opensim-dev
> 


-- 
justincc
Justin Clark-Casey
http://justincc.wordpress.com
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev

Reply via email to