+ unsigned int i = 0, j = 0;
+ for (auto path: this->_logged_paths) {
+ i = 0;
+ for (auto n: path) {
+ jvo["paths"][j][i][0] = n.x();
+ jvo["paths"][j][i][1] = n.y();
+ jvo["paths"][j][i][2] = n.h();
+ jvo["paths"][j][i][3] = n.sp();
+ jvo["paths"][j][i][4] = n.st();
+ jvo["paths"][j][i][5] = false;
+ if (n.p_is_cusp()) {
+ assert(i > 0);
+ jvo["paths"][j][i - 1][5] = true;
+ }
+ i++;
+ }
+ // Initial point is part of the first segment.
+ jvo["paths"][j][0][3] = jvo["paths"][j][1][3];
+ jvo["paths"][j][0][4] = jvo["paths"][j][1][4];
+ // Goal point is part of the last segment.
+ jvo["paths"][j][i - 1][3] = jvo["paths"][j][i - 2][3];
+ jvo["paths"][j][i - 1][4] = jvo["paths"][j][i - 2][4];
+ // --
+ jvo["costs"][j] = path.back().cc();
+ j++;
+ }
+ i = 0;
+ for (auto n: this->_path) {
+ jvo["paths"][j][i][0] = n->x();
+ jvo["paths"][j][i][1] = n->y();
+ jvo["paths"][j][i][2] = n->h();
+ jvo["paths"][j][i][3] = n->sp();
+ jvo["paths"][j][i][4] = n->st();
+ jvo["paths"][j][i][5] = n->p_is_cusp();