updateComponents method
Walk the dependency tree and update components in order. Returns true if any component updated.
Implementation
bool updateComponents() {
bool didUpdate = false;
if ((dirt & ComponentDirt.drawOrder) != 0) {
sortDrawOrder();
dirt &= ~ComponentDirt.drawOrder;
didUpdate = true;
}
if ((dirt & ComponentDirt.components) != 0) {
const int maxSteps = 100;
int step = 0;
int count = _dependencyOrder.length;
while ((dirt & ComponentDirt.components) != 0 && step < maxSteps) {
dirt &= ~ComponentDirt.components;
// Track dirt depth here so that if something else marks
// dirty, we restart.
for (int i = 0; i < count; i++) {
Component component = _dependencyOrder[i];
_dirtDepth = i;
int d = component.dirt;
if (d == 0 || (d & ComponentDirt.collapsed) != 0) {
continue;
}
component.dirt &= ComponentDirt.collapsed;
component.update(d);
if (_dirtDepth < i) {
break;
}
}
step++;
}
return true;
}
return didUpdate;
}