Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Dealing with Jumpgate and paths

November 27 (1 month ago)

Edited November 27 (1 month ago)
Boli
Pro

OK, I am working on a new API and I am struggling with the way the new paths work with jumpGate. Given it is still in production I decided to add a toggle to the config of the API so the user can toggle if they are using JumpGate or not and thus I can render the paths differently depending on what the user is using.

That said... I tried to 'reverse the co-ordinates' for jumpGate but I fear there is something I am missing as the nice rounded rectangles I was able to produce are simply a mess now. code is below... any thoughts on what I am doing wrong?

I am more looking for an up to date version of this which has been my api bible for many, many  months now: https://wiki.roll20.net/Mod:Objects/Path

EDIT: i wrote the jumpgate and old wrong on the image below., clearly I am after the rounded rectangle look and not whatever is happening with jumpgate.


 






drawRoundedRectangle: (pageId, x, y, width, height, radius, statusColor, layer = 'objects', questId, page) => {
    let pathData;
    if (QUEST_TRACKER_jumpGate) {
        pathData = [
            ['M', -width / 2 + radius, height / 2],
            ['L', width / 2 - radius, height / 2],
            ['Q', width / 2, height / 2, width / 2, height / 2 - radius],
            ['L', width / 2, -height / 2 + radius],
            ['Q', width / 2, -height / 2, width / 2 - radius, -height / 2],
            ['L', -width / 2 + radius, -height / 2],
            ['Q', -width / 2, -height / 2, -width / 2, -height / 2 + radius],
            ['L', -width / 2, height / 2 - radius],
            ['Q', -width / 2, height / 2, -width / 2 + radius, height / 2],
            ['Z']
        ];
    } else {
        pathData = [
            ['M', -width / 2 + radius, -height / 2],
            ['L', width / 2 - radius, -height / 2],
            ['Q', width / 2, -height / 2, width / 2, -height / 2 + radius],
            ['L', width / 2, height / 2 - radius],
            ['Q', width / 2, height / 2, width / 2 - radius, height / 2],
            ['L', -width / 2 + radius, height / 2],
            ['Q', -width / 2, height / 2, -width / 2, height / 2 - radius],
            ['L', -width / 2, -height / 2 + radius],
            ['Q', -width / 2, -height / 2, -width / 2 + radius, -height / 2],
            ['Z']
        ];
    }
    const rectObj = createObj('path', {
        _pageid: pageId,
        layer: layer,
        stroke: statusColor,
        fill: "#FAFAD2",
        left: x,
        top: y,
        width: width,
        height: height,
        path: JSON.stringify(pathData),
        stroke_width: 4,
        controlledby: ''
    });
    if (rectObj) {
        H.storeQuestRef(questId, 'rectangle', rectObj.id);
    }
}

November 27 (1 month ago)
The Aaron
Roll20 Production Team
API Scripter

Nothing is different about the legacy path objects on jump gate. You can continue to create them the same way you have created them. Support for the new format of path that Jumpgate uses natively will be coming soon.

November 28 (1 month ago)
Boli
Pro

is there any way we can get an update on how 'Bézier or Quadratic Curves' work now?

Yes, I am fully away the original method was perhaps a bit too complex when most uses of it I could see were for making more rounded corners or rounded paths.

https://wiki.roll20.net/Mod:Objects/Path

November 29 (1 month ago)
The Aaron
Roll20 Production Team
API Scripter

The new path objects are much simpler in many ways than the classic paths.  They have an overarching type (Polyline, Rectangle, Ellipse, and Freehand), and a list of points which are interpreted based on the overarching type.  Points are a JSON encoded array of array of 2 numbers, for example:

"[[0,0],[70,70],[135,70],[70,0],[0,0]]"

Rectangles and Ellipses are defined with two points that form the bounding box, for example a circle with radius 70, would be:

"[[0,0],[140,140]]"

Polylines are just lines between a list of points.  Freehand is cubic Bézier curve using a sliding window of 4 points with the start and end point being doubled up:

"[[0,0],[70,70],[70,35],[35,35],[0,0],[0,0]]"

The way they are drawn by the UI, means the last point gets doubled up, but you could leave that off in your own constructed shapes if you wanted to.

This would make the following curves:

  • [0,0],[0,0],[70,70],[70,35]
  • [0,0],[70,70],[70,35],[35,35]
  • [70,70],[70,35],[35,35],[0,0]
  • [70,35],[35,35],[0,0],[0,0]

Hope that helps.

December 09 (1 month ago)

There are quite a few API Scripts that are using the old Path notation, like PathMath, which itself is a per-requisite for many popular scripts.  I believe the author of that script is no longer maintaining it.  One script I use a lot also by the same author, is "It's a Trap!" which uses PathMath.  It works fine for games that are converted to JG because existing Paths use the old format, but any new Path drawn just breaks the script and errors show up in the chat whenever a token is moved.  I hope that there's some way a new version can be produced so these legacy scripts will eventually work in JG.

December 10 (1 month ago)
The Aaron
Roll20 Production Team
API Scripter

As it happens, we've added support for Jumpgate PathV2 objects: https://app.roll20.net/forum/post/12161242/jumpgate-support-for-path-objects-pathv2

Also, I've updated PathMath, Token Collisions, and It's a Trap so that they support both path objects, and PathV2 objects on Jumpgate.  Please let me know if you come across any scripts that aren't working because of path objects.

December 10 (1 month ago)
Boli
Pro

Oh this is great news, I've been working on another aspect of my script (soon to be released... ) and trying to forget about the pathing after it caused me so much headache before.

I will have to jump back into it and make some adjustments.

December 12 (1 month ago)


The Aaron said:

As it happens, we've added support for Jumpgate PathV2 objects: https://app.roll20.net/forum/post/12161242/jumpgate-support-for-path-objects-pathv2

Also, I've updated PathMath, Token Collisions, and It's a Trap so that they support both path objects, and PathV2 objects on Jumpgate.  Please let me know if you come across any scripts that aren't working because of path objects.

You rock, man!  Thanks so much!