in modules/core/src/lib/layer.js [317:347]
updateState({oldProps, props, context, changeFlags}) {
const attributeManager = this.getAttributeManager();
if (changeFlags.dataChanged && attributeManager) {
const {dataChanged} = changeFlags;
if (Array.isArray(dataChanged)) {
// is partial update
for (const dataRange of dataChanged) {
attributeManager.invalidateAll(dataRange);
}
} else {
attributeManager.invalidateAll();
}
}
const neededPickingBuffer = oldProps.highlightedObjectIndex >= 0 || oldProps.pickable;
const needPickingBuffer = props.highlightedObjectIndex >= 0 || props.pickable;
if (neededPickingBuffer !== needPickingBuffer && attributeManager) {
const {pickingColors, instancePickingColors} = attributeManager.attributes;
const pickingColorsAttribute = pickingColors || instancePickingColors;
if (pickingColorsAttribute) {
if (needPickingBuffer && pickingColorsAttribute.constant) {
pickingColorsAttribute.constant = false;
attributeManager.invalidate(pickingColorsAttribute.id);
}
if (!pickingColorsAttribute.value && !needPickingBuffer) {
pickingColorsAttribute.constant = true;
pickingColorsAttribute.value = [0, 0, 0];
}
}
}
}