@Override
    public void updateGeometricState() {
        if (refreshFlags == 0) {
            // This branch has no geometric state that requires updates.
            return;
        }
        if ((refreshFlags & RF_LIGHTLIST) != 0) {
            updateWorldLightList();
        }
        if ((refreshFlags & RF_TRANSFORM) != 0) {
            // combine with parent transforms- same for all spatial
            // subclasses.
            updateWorldTransforms();
        }
        if ((refreshFlags & RF_MATPARAM_OVERRIDE) != 0) {
            updateMatParamOverrides();
        }

        refreshFlags &= ~RF_CHILD_LIGHTLIST;
        if (!children.isEmpty()) {
            // the important part- make sure child geometric state is refreshed
            // first before updating own world bound. This saves
            // a round-trip later on.
            // NOTE 9/19/09
            // Although it does save a round trip,
            for (Spatial child : children.getArray()) {
                child.updateGeometricState();
            }
        }

        if ((refreshFlags & RF_BOUND) != 0) {
            updateWorldBound();
        }

        assert refreshFlags == 0;
    }
Called to invalidate the root node's update list.  This is
 called whenever a spatial is attached/detached as well as
 when a control is added/removed from a Spatial in a way
 that would change state.
jme3-core/src/main/java/com/jme3/scene/Node.java