MCPcopy Create free account
hub / github.com/microsoft/SandDance / processPickInfo

Function processPickInfo

docs/app/js/sanddance-app.js:92091–92141  ·  view source on GitHub ↗
(opts)

Source from the content-addressed store, hash-verified

92089 };
92090}
92091function processPickInfo(opts) {
92092 var pickInfo = opts.pickInfo, lastPickedInfo = opts.lastPickedInfo, mode = opts.mode, layers = opts.layers;
92093 var pickedColor = pickInfo.pickedColor, pickedLayer = pickInfo.pickedLayer, pickedObjectIndex = pickInfo.pickedObjectIndex;
92094 var affectedLayers = pickedLayer ? [
92095 pickedLayer
92096 ] : [];
92097 if (mode === "hover") {
92098 var lastPickedObjectIndex = lastPickedInfo.index;
92099 var lastPickedLayerId = lastPickedInfo.layerId;
92100 var pickedLayerId = pickedLayer && pickedLayer.props.id;
92101 if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedObjectIndex) {
92102 if (pickedLayerId !== lastPickedLayerId) {
92103 var lastPickedLayer = layers.find(function(layer) {
92104 return layer.props.id === lastPickedLayerId;
92105 });
92106 if (lastPickedLayer) affectedLayers.unshift(lastPickedLayer);
92107 }
92108 lastPickedInfo.layerId = pickedLayerId;
92109 lastPickedInfo.index = pickedObjectIndex;
92110 lastPickedInfo.info = null;
92111 }
92112 }
92113 var baseInfo = getEmptyPickingInfo(opts);
92114 var infos = new Map();
92115 infos.set(null, baseInfo);
92116 affectedLayers.forEach(function(layer) {
92117 var info = Object.assign({}, baseInfo);
92118 if (layer === pickedLayer) {
92119 info.color = pickedColor;
92120 info.index = pickedObjectIndex;
92121 info.picked = true;
92122 }
92123 info = getLayerPickingInfo({
92124 layer: layer,
92125 info: info,
92126 mode: mode
92127 });
92128 if (layer === pickedLayer && mode === "hover") lastPickedInfo.info = info;
92129 if (info) infos.set(info.layer.id, info);
92130 if (mode === "hover" && layer.props.autoHighlight) {
92131 var pickingModuleParameters = {
92132 pickingSelectedColor: pickedLayer === layer ? pickedColor : null
92133 };
92134 var highlightColor = layer.props.highlightColor;
92135 if (pickedLayer === layer && typeof highlightColor === "function") pickingModuleParameters.pickingHighlightColor = highlightColor(info);
92136 layer.setModuleParameters(pickingModuleParameters);
92137 layer.setNeedsRedraw();
92138 }
92139 });
92140 return infos;
92141}
92142function getLayerPickingInfo(_ref2) {
92143 var layer = _ref2.layer, info = _ref2.info, mode = _ref2.mode;
92144 while(layer && info){

Callers

nothing calls this directly

Calls 5

getEmptyPickingInfoFunction · 0.70
getLayerPickingInfoFunction · 0.70
findMethod · 0.45
setMethod · 0.45
forEachMethod · 0.45

Tested by

no test coverage detected