Es gibt eine Reihe von Events, bei deren Bearbeitung es notwendig ist,
den gesamten Graphen oder Teile dessen auf eine für den Eventtyp
spezifische Art zu traversieren (z.B. weil Informationen an alle Knoten
verteilt oder von allen Knoten eingesammelt werden müssen). Diese
Vorgehensweise von der Wurzel abwärts zu allen anderen Knoten nennt man
down routing.
Um ein down routing durchführen zu können, erben (und überschreiben
evtl.) alle Knotenklassen die von SceneGraphObject implementierte
Methode _routeDown, die vom Vater des Knotens
aufgerufen wird und bei allen Kindern des Knotens wieder _routeDown
aufruft. Falls das down routing bzgl. des gerade zu bearbeitenden Eventtyps
eine Information vom Knoten einsammelt, wird diese Information als Ergebnis
zurückgeliefert. In diesem Fall liefern auch die Kinder des Knotens
Informationen als Ergebnisse ihrer _routeDown-Methoden zurück. Diese
Ergebnisse müssen in der _routeDown-Methode des Knotens so
miteinander verknüpft werden, daß am Ende nur ein Gesamtergebnis an den
Vater des Knoten gegeben wird. Die Verknüpfung der Kindergebnisse kann vom
Eventtyp abhängen und evtl. müssen Informationen an die Laufzeitumgebung
übermittelt werden. Der Knoten ist nicht die geeignete Klasse, um
diese Verknüpfung durchzuführen, denn einerseits müßten alle
Knotenklassen erweitert werden, wenn die API um einen neuen Eventtyp
erweitert würde, und andererseits wissen innere Knoten nichts von der
Laufzeitumgebung.