public void DoDraw() { if (current == null) { return; } if (current.nextJoint != null) { if (Mouse.RightMouseDown()) { Membrane nextNext = (Membrane)current.nextJoint.GetConnected(); current.Disconnect(); Membrane next = CreateMembrane((nextNext.transform.position + current.transform.position) / 2); current.ConnectTo(next); next.ConnectTo(nextNext); } } else { var difference = Mouse.WorldPosition() - (Vector2)current.transform.position; float springDist = current.GetNearbyRadius() + .25f; // if mouse is more than immediateSpringDist from current, make a new node if (difference.magnitude > springDist) { Membrane next = CreateMembrane((Vector2)current.transform.position + difference.normalized * springDist); current.ConnectTo(next); current = next; } } }