MCPcopy Index your code
hub / github.com/microsoft/SandDance / getClosestObject

Function getClosestObject

docs/app/js/sanddance-app.js:91987–92031  ·  view source on GitHub ↗
(_ref)

Source from the content-addressed store, hash-verified

91985 pickedObjectIndex: -1
91986};
91987function getClosestObject(_ref) {
91988 var pickedColors = _ref.pickedColors, layers = _ref.layers, deviceX = _ref.deviceX, deviceY = _ref.deviceY, deviceRadius = _ref.deviceRadius, deviceRect = _ref.deviceRect;
91989 if (pickedColors) {
91990 var x = deviceRect.x, y = deviceRect.y, width = deviceRect.width, height = deviceRect.height;
91991 var minSquareDistanceToCenter = deviceRadius * deviceRadius;
91992 var closestPixelIndex = -1;
91993 var i = 0;
91994 for(var row = 0; row < height; row++){
91995 var dy = row + y - deviceY;
91996 var dy2 = dy * dy;
91997 if (dy2 > minSquareDistanceToCenter) i += 4 * width;
91998 else for(var col = 0; col < width; col++){
91999 var pickedLayerIndex = pickedColors[i + 3] - 1;
92000 if (pickedLayerIndex >= 0) {
92001 var dx = col + x - deviceX;
92002 var d2 = dx * dx + dy2;
92003 if (d2 <= minSquareDistanceToCenter) {
92004 minSquareDistanceToCenter = d2;
92005 closestPixelIndex = i;
92006 }
92007 }
92008 i += 4;
92009 }
92010 }
92011 if (closestPixelIndex >= 0) {
92012 var _pickedLayerIndex = pickedColors[closestPixelIndex + 3] - 1;
92013 var pickedColor = pickedColors.slice(closestPixelIndex, closestPixelIndex + 4);
92014 var pickedLayer = layers[_pickedLayerIndex];
92015 if (pickedLayer) {
92016 var pickedObjectIndex = pickedLayer.decodePickingColor(pickedColor);
92017 var _dy = Math.floor(closestPixelIndex / 4 / width);
92018 var _dx = closestPixelIndex / 4 - _dy * width;
92019 return {
92020 pickedColor: pickedColor,
92021 pickedLayer: pickedLayer,
92022 pickedObjectIndex: pickedObjectIndex,
92023 pickedX: x + _dx,
92024 pickedY: y + _dy
92025 };
92026 }
92027 (0, _logDefault.default).error("Picked non-existent layer. Is picking buffer corrupt?")();
92028 }
92029 }
92030 return NO_PICKED_OBJECT;
92031}
92032function getUniqueObjects(_ref2) {
92033 var pickedColors = _ref2.pickedColors, layers = _ref2.layers;
92034 var uniqueColors = new Map();

Callers

nothing calls this directly

Calls 1

errorMethod · 0.45

Tested by

no test coverage detected