bool ForceDirectedFlowAlgorithm::reflow(DirectedGraph& g,
                                        const Rectangle<int>& area,
                                        ObjController& objController,
                                        float /*deltaTime*/)
{
    // const Array<Node*>& nodes = g.getNodes();
    // const Array<Array<bool>>& edges = g.edges;

    Point<float> totalEnergy(0.0, 0.0);


    for (tNodesAndEdges& group : g.getConnectedGroups())
    {
        applyForces(totalEnergy, group, area.getWidth(), area.getHeight(), objController);
    }


    float lenTotalEnergy = sqrt(totalEnergy.x * totalEnergy.x + totalEnergy.y * totalEnergy.y);

    // DBG(lenTotalEnergy);

    if (lenTotalEnergy < stopEnergy)
    {
        g.setPositions();
        return false;
    }

    return true;
}