From 19d0e8e8977c253fc579b9aa6302bf5a4e365ce9 Mon Sep 17 00:00:00 2001 From: Steve Haroz Date: Fri, 7 Oct 2016 09:18:50 -0500 Subject: [PATCH] reinitialize radii after collide.radius() (#63) --- src/collide.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/collide.js b/src/collide.js index b1fe8d3..d4bfcf9 100644 --- a/src/collide.js +++ b/src/collide.js @@ -70,9 +70,17 @@ export default function(radius) { } } + function initializeRadii() { + if (!nodes) return; + var n = nodes.length; + radii = new Array(n); + for (var i = 0; i < n; ++i) + radii[i] = +radius(nodes[i], i, nodes); + } + force.initialize = function(_) { - var i, n = (nodes = _).length; radii = new Array(n); - for (i = 0; i < n; ++i) radii[i] = +radius(nodes[i], i, nodes); + nodes = _; + initializeRadii(); }; force.iterations = function(_) { @@ -84,8 +92,7 @@ export default function(radius) { }; force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), force) : radius; + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initializeRadii(), force) : radius; }; - return force; }