Hi all,

I have found a bug in NetworkPortrayal2D.
I am using the (sim.field.network.)Network field with a Continuous2D field.
If I use a network directed graph, everything happens fine. But if it is an undirected graph, when the NetworkPortrayal2D is going to draw it, it includes an edge from every node to itself. It was happenning because for each node, it gets all edges and for each node.out of the edge, it tries to draw it. Then if the node.out is not the original node (what would happen for the edges entering into the original node), than we have the bug!

To fix the problem I put this (italic) statement:

Bag nodes = field.network.getAllNodes();
for (int x = 0; x < nodes.numObjs; x++) {
    for (int y = 0; y < edges.numObjs; y++) {
    if ( (locStop == locStart) && (edge.from() != nodes.objs[x])) continue;

which means, if the stop location is the same then the start location BUT node.out is different from edge.node.out then it skips drawing it.
If there are "self-edges node" it will work fine, since edge.from will be equal to nodes.objs[x].

Well, now everything is working fine.


Maíra Athanázio de C. Gatti
PhD student, PUC-Rio, Brazil
King's College London