public override bool HitTest(Point p) { double radius = Radius + 2; double dist = VectorTools.Distance(position, p); if (dist < radius) { return(true); } return(false); }
protected virtual void UpdateBounces(TimeSpan duration) { Parallel.ForEach(quadTree.AllQuadrants(), quad => { for (int i = 0; i < quad.Nodes.Count; i++) { NodeBase nodeA = quad.Nodes[i]; // find bounces for (int j = i + 1; j < quad.Nodes.Count; j++) { NodeBase nodeB = quad.Nodes[j]; double dist = VectorTools.Distance(nodeA.Position, nodeB.Position); if (dist <= nodeA.Radius + nodeB.Radius) { CalcNodeCollision(nodeA, nodeB, bounceEfficiency); } } } }); }