let's say we have lots of nodes added to a parent node, and only one of these child nodes moves, now there's complete recalculation of bounds on the parent (line 815 is called for each child).. perhaps it'd be enough to only combine the changed bouds?
This is exactly, that is done. See Node::setParent()
if ( parent != null )
{
if ( !parent.boundsDirty )
parent.expandBounds( this, true );
else
parent.updateBoundsCheap( true, false, true, false );
}
besides - setting bounds auto compute to false on parent doesn't seem to prevent the bounds from recalculating (only ignore bounds does the trick). is this intended behaviour?
boundsAutoCompute = false doesn't behave as you're expacting. It sets the bounds of a Group and all of its children to a fixed value (all the same as the master group).
if it is intended (ie. using setIgnoreBounds(false)) - how should i do any updates (ie. moving, adding) of nodes, not to trigger complete recalculation of bounds on highly populated nodes? as said before: currently, parent of all my moving models has ignore bounds set to true to prevent the updates propagating, however this seems a little strange way to solve that - is this the proper one?
this doesn't prevent things from being done, just a question about how should it be done (from client code side)
There's definitely work to be done. New properties like "don't trigger bounds-update on child added/removed" or "set this and only this Group's bounds fixed" must be introduced.
Fixing bounds behavior is extremely tricky. I tweaked the bounds-update-code a year ago and it was like hell, since it was very difficult to get good and fast behavior for all cases.
I will definitely try to improve the bounds-update-code when I have time. But for now I have other things to do. so this must wait a few weeks. Please remind me, if it isn't done within the next two or three weeks.
Marvin