Added center grid snapping for tokens
This commit is contained in:
parent
fcb87104cd
commit
55b9be4e2d
@ -188,6 +188,7 @@ export function snapNodeToMap(
|
|||||||
|
|
||||||
// Offsets to tranform the centered position into the four corners
|
// Offsets to tranform the centered position into the four corners
|
||||||
const cornerOffsets = [
|
const cornerOffsets = [
|
||||||
|
{ x: 0, y: 0 },
|
||||||
halfSize,
|
halfSize,
|
||||||
{ x: -halfSize.x, y: -halfSize.y },
|
{ x: -halfSize.x, y: -halfSize.y },
|
||||||
{ x: halfSize.x, y: -halfSize.y },
|
{ x: halfSize.x, y: -halfSize.y },
|
||||||
@ -219,7 +220,24 @@ export function snapNodeToMap(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Snap to center of grid
|
||||||
|
// Subtract offset and half grid size to transform it into offset half space then transform it back
|
||||||
|
const halfGridSize = Vector2.multiply(gridSize, 0.5);
|
||||||
|
const centerSnap = Vector2.add(
|
||||||
|
Vector2.add(
|
||||||
|
Vector2.roundTo(
|
||||||
|
Vector2.subtract(Vector2.subtract(position, offset), halfGridSize),
|
||||||
|
gridSize
|
||||||
|
),
|
||||||
|
halfGridSize
|
||||||
|
),
|
||||||
|
offset
|
||||||
|
);
|
||||||
|
const centerDistance = Vector2.length(Vector2.subtract(centerSnap, position));
|
||||||
|
|
||||||
if (minCornerGridDistance < minCornerMinComponent * snappingThreshold) {
|
if (minCornerGridDistance < minCornerMinComponent * snappingThreshold) {
|
||||||
node.position(minGridSnap);
|
node.position(minGridSnap);
|
||||||
|
} else if (centerDistance < Vector2.min(gridSize) * snappingThreshold) {
|
||||||
|
node.position(centerSnap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user