Jump to content
Sign in to follow this  
Waffle_SS

ArmA 3 drawLine Command - Finding a Method to the Madness

Recommended Posts

[sOLVED]

Does ANYONE on this planet understand how to use "map drawLine [position1, position2, color]"?

Looks simple right? Well it seems to be one of the biggest unsolved mysteries among the ArmA scripting community. >_<

The closest thing I got to an actual working example was for VBS2: http://resources.bisimulations.com/wiki/drawLine

I've had no success getting this command to work. Everywhere I've looked people are asking the same questions, but no real answers.

Please, can someone explain to us once and for all how to use the drawLine command?

[sOLVED]

(findDisplay 12 displayCtrl 51) ctrlAddEventHandler ["Draw",
"
(_this select 0) drawLine [[0,0,0],getPos player,[0,0,1,1]];
"
];

Edited by Waffle_SS
Solved

Share this post


Link to post
Share on other sites

But how do you remove it once it has been drawn ?

As in:

(findDisplay 12 displayCtrl 51) ctrlAddEventHandler ["Draw","(_this select 0) drawLine [getPos (vehicle player),getMarkerPos fpmrkr,[0,0,1,1]];"];

If you delete the marker, the line draws to the map's extreme lower left corner and remains.

Can anyone help? Thanks

Share this post


Link to post
Share on other sites

don't use drawLine, use createMarkerLocal so that you can modify it the way you like in the future ALSO you won't have the isssue you mentioned.

Share this post


Link to post
Share on other sites
don't use drawLine, use createMarkerLocal so that you can modify it the way you like in the future ALSO you won't have the isssue you mentioned.

How do you create a line using createMarkerLocal?

Share this post


Link to post
Share on other sites
How do you create a line using createMarkerLocal?

scriptName "RUBE3\functions\Map\fn_mapDrawLine.sqf";
/*
  Author:
   rübe

  Description:
   draws a line on the map (with rect. area-markers)

  Parameter(s):
   _this: parameters (array of array [key (string), value (any)])

          - required:
            - "start" (position)
            - "end" (position)

          - optional:
            - "id" (unique marker string, default = RUBE_createMarkerID)
            - "color" (string, default = ColorBlack)
            - "size" (number, default = 5)

  Example:
   _marker = [
      ["start", _pos],
      ["end", _pos2],
      ["color", "ColorRed"],
      ["size", 24]
   ] call RUBE_mapDrawLine; 

  Returns:
   marker
*/

private ["_mrk", "_start", "_end", "_color", "_size", "_id", "_dist", "_ang", "_center"];

_mrk = "";

_start = [0,0,0];
_end = [0,0,0];

_color = "ColorBlack";
_size = 5;
_id = "";

// read parameters
{
  switch (_x select 0) do
  {
     case "start": { _start = _x select 1; };
     case "end":   { _end   = _x select 1; };
     case "color": { _color = _x select 1; };
     case "size":  { _size  = _x select 1; };
     case "id":    
     { 
        if ((typeName (_x select 1)) == "STRING") then
        {
           _id = _x select 1; 
        };
     };
  };
} forEach _this;

// calculate line
_dist = sqrt(((_end select 0)-(_start select 0))^2+((_end select 1)-(_start select 1))^2) * 0.5;
_ang = ((_end select 0)-(_start select 0)) atan2 ((_end select 1)-(_start select 1));
_center = [(_start select 0)+sin(_ang)*_dist,(_start select 1)+cos(_ang)*_dist];

// create marker
if (_id == "") then
{
  _id = [] call RUBE_createMarkerID;
};
_mrk = createMarker [_id, _center];

// define marker
_mrk setMarkerDir _ang;
_mrk setMarkerPos _center;
_mrk setMarkerShape "RECTANGLE";
_mrk setMarkerBrush "SOLID";
_mrk setMarkerColor _color;
_mrk setMarkerSize [_size, _dist];

// return marker
_mrk

;)

Share this post


Link to post
Share on other sites

fnc_line [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b]{[/b][/color]

   fnc_line1 [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b]{[/b][/color]

   [color="#1874CD"]#[/color]define gpa[color="#8B3E2F"][b]([/b][/color]a[color="#8B3E2F"][b],[/b][/color]b[color="#8B3E2F"][b],[/b][/color]c[color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color]a [color="#191970"][b]select[/b][/color] c[color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]+[/b][/color][color="#8B3E2F"][b]([/b][/color]b [color="#191970"][b]select[/b][/color] c[color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]/[/b][/color][color="#FF0000"]2[/color][color="#8B3E2F"][b])[/b][/color]

      [color="#191970"][b]private[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"_ob1"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_ob2"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_m"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

        [color="#1874CD"]_ob1[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color] [color="#191970"][b]typeName[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]=[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#7A7A7A"]"OBJECT"[/color] [color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]getPos[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]else[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]typeName[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]=[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#7A7A7A"]"STRING"[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]markerPos[/b][/color]  [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]}[/b][/color][color="#191970"][b]else[/b][/color][color="#8B3E2F"][b]{[/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_ob2[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color] [color="#191970"][b]typeName[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]=[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#7A7A7A"]"OBJECT"[/color] [color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]getPos[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]else[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]typeName[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]=[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#7A7A7A"]"STRING"[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]markerPos[/b][/color]  [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]}[/b][/color][color="#191970"][b]else[/b][/color][color="#8B3E2F"][b]{[/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_color[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]2[/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]createMarker[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#191970"][b]str[/b][/color] [color="#191970"][b]random[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#FF0000"]10000[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b],[/b][/color][color="#8B3E2F"][b][[/b][/color][color="#FF0000"]0[/color][color="#8B3E2F"][b],[/b][/color][color="#FF0000"]0[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerShape[/b][/color] [color="#7A7A7A"]"RECTANGLE"[/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerBrush[/b][/color] [color="#7A7A7A"]"border"[/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerColor[/b][/color] [color="#1874CD"]_color[/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerDir[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b][[/b][/color][color="#1874CD"]_ob1[/color][color="#8B3E2F"][b],[/b][/color] [color="#1874CD"]_ob2[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]call[/b][/color] BIS_fnc_DirTo[color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerPos[/b][/color] [color="#8B3E2F"][b][[/b][/color]gpa[color="#8B3E2F"][b]([/b][/color][color="#1874CD"]_ob2[/color][color="#8B3E2F"][b],[/b][/color][color="#1874CD"]_ob1[/color][color="#8B3E2F"][b],[/b][/color][color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b],[/b][/color]gpa[color="#8B3E2F"][b]([/b][/color][color="#1874CD"]_ob2[/color][color="#8B3E2F"][b],[/b][/color][color="#1874CD"]_ob1[/color][color="#8B3E2F"][b],[/b][/color][color="#FF0000"]1[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b],[/b][/color][color="#FF0000"]0[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

       [color="#1874CD"]_m[/color] [color="#191970"][b]setMarkerSize[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#FF0000"]0[/color][color="#8B3E2F"][b],[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#1874CD"]_ob1[/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_ob2[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]/[/b][/color][color="#FF0000"]2[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

   [color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

    [color="#1874CD"]_arr1[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

   [color="#8B3E2F"][b]{[/b][/color]

       [color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_forEachIndex[/color] [color="#8B3E2F"][b]![/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]-[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color]

           [color="#1874CD"]_arr1[/color] [color="#191970"][b]set[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#191970"][b]count[/b][/color] [color="#1874CD"]_arr1[/color][color="#8B3E2F"][b],[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b][[/b][/color][color="#000000"]_x[/color][color="#8B3E2F"][b],[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]select[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_forEachIndex[/color] [color="#FF0000"]+1[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b],[/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]call[/b][/color] fnc_line1[color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]          

       [color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

   [color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]forEach[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#006400"][i]//mark = ["m1","m2","m4","m3","m1"];[/i][/color]
[color="#006400"][i]//mark = [s1,s2,s3,s4];[/i][/color]
[color="#006400"][i]//[mark,"ColorRed"] call fnc_line;[/i][/color]

[color="#006400"][i]//[ ["m1","m2","m4","m3","m1"],"ColorRed"] call fnc_line;[/i][/color]
[color="#006400"][i]//[[s1,s2,s3,s4],"ColorRed"] call fnc_line;[/i][/color]

:cool:

Edited by Dimon

Share this post


Link to post
Share on other sites
_m = createMarker [str random(10000),[0,0]];

original.jpg

:D

Also I think your fnc_line will return an array of nil or something, no?

Edited by ruebe

Share this post


Link to post
Share on other sites

okay, fixed - just left the tail with the other variants of the function

Share this post


Link to post
Share on other sites
okay, fixed

Uhm, not sure what you changed, :o.

But from what I can tell, fnc_line1 still needs to return that _m, otherwise you will be _arr1 set'ing one nil after the other, no?

...hm, and then fnc_line isn't returning _arr1 either... I'm not sure I get it (is this function even supposed to return anything?). Why are you building up that array, if you're not going to use/return it?

As for the "unique" id required for markers: I really wouldn't advice to rely on random. Why not use a little helper-function instead, together with a global counter, that keeps incrementing with each use?

INTERN_AUTOMRKID = 0;

createMarkerID = {
private ["_id"];
_id = format ["AUTOMRKID_%1", INTERN_AUTOMRKID];
INTERN_AUTOMRKID = INTERN_AUTOMRKID + 1;
_id
};

The cool thing is that, for one: it's safe! (granted, there is a race-condition, but psssst...)

And for two: then you can do stuff like this:

clearAutoMarkers = {
for "_i" from 0 to (INTERN_AUTOMRKID - 1) do
{
	deleteMarker format["AUTOMRKID_%1", _i];
};
INTERN_AUTOMRKID = 0;
true
};

...which will delete all such markers with automatically generated ids. Of course, markers to which you've assigned an explicit name will survive this. Thus you can use this to your advantage, and doodle around on the map, and clear all that doodle/temporary stuff in one go, and without having to keep track of any of them (respectively their ids) - "fire" and forget. That's pretty handy/convenient if you ask me ;)

Edited by ruebe

Share this post


Link to post
Share on other sites

well I wrote to draw the line... about how to remove them I thought. And Yes, that's right - there is a possibility to manipulate the markers.

if I understood correctly what you want to write...

Share this post


Link to post
Share on other sites

a few screenshots showing 2 separate 'lines' on arma 3 map both created using createMarkerLocal command: http://imgur.com/a/ohSao

green vs blue - there's a clear quality difference. it seems, the more points = the better quality. just like computer image pixelation concept.

Share this post


Link to post
Share on other sites
it seems, the more points = the better quality.

Ehh, are you trying to draw lines/curves with single points/ellipses?

... just like computer image pixelation concept.

Well, if you wanna draw curves, sure: the smaller the single pieces of lines, the better the approximation. But your screenshots, respectively the curves drawn on them, look rather wacky. What's going on? Why do those pieces partially overlap each other, and then there's a gap again at times, and so on?!

I'm pretty sure you can get much better results.

For comparison some curves drawn in A2 using the posted mapDrawLine function:

http://non.sense.ch/shared/rube-wip/rube-plotroute.jpg

http://non.sense.ch/shared/rube-wip/rube-bezier.jpg

http://non.sense.ch/shared/rube-wip/rube-bspline-d4.jpg

http://non.sense.ch/shared/rube-wip/rube-randomWalk2.jpg

Share this post


Link to post
Share on other sites

@mgm, @ruebe, those screens are incredible. How could you plot possible routes??? Care to share some code so I can watch?

Share this post


Link to post
Share on other sites
How could you plot possible routes??? Care to share some code so I can watch?

I've written a findRoute script some time ago; guess that should still work for A3, and then drawing lines along the route is no biggy either (there's a nice demo still available over here: https://dev.withsix.com/issues/8068 which demonstrates everything from route finding to drawing them onto the map).

Otherwise it's all included in the RUBE library (for A2): http://non.sense.ch/shared/rube-wip/. RUBE3 isn't there yet, sorry. :p

Share this post


Link to post
Share on other sites
@mgm, @ruebe, those screens are incredible. How could you plot possible routes??? Care to share some code so I can watch?

I understand ruebe has provided working code in his PBO above, I will be happy to answer if you have any questions to me. I made my routePoints manually though, using onMapSingleClick and manual labour.

Ehh, are you trying to draw lines/curves with single points/ellipses?

Well, if you wanna draw curves, sure: the smaller the single pieces of lines, the better the approximation. But your screenshots, respectively the curves drawn on them, look rather wacky. What's going on? Why do those pieces partially overlap each other, and then there's a gap again at times, and so on?!

I'm pretty sure you can get much better results.

For comparison some curves drawn in A2 using the posted mapDrawLine function:

http://non.sense.ch/shared/rube-wip/rube-plotroute.jpg

http://non.sense.ch/shared/rube-wip/rube-bezier.jpg

http://non.sense.ch/shared/rube-wip/rube-bspline-d4.jpg

http://non.sense.ch/shared/rube-wip/rube-randomWalk2.jpg

Lines is blue is hopeless and rightly so as that was a super quick test of cutting edges by 30% - bad idea - bad result. Idea dropped.

Lines in green is not elegant we agree on that but it 'does the job' for now and I deem green route "usable" quality. My limited project time would be better utilized if I work on non-existant functions/features (as opposed improving beauty of lines on map). There is a chance I might revisit the code and try to improve one day but not today :)

BIS 'drawLine' function won't work for my requirements as the beauty of the final output is only one of the parameters and not the top one. drawLine is draw-once-lose-control-forever from what I read that's a no-go. In my project these lines I draw are bus routes and currently I am able to turn a given route to red color (i.e.: service disruption) at will as they are simply markers.

Should you -or anyone else for that matter- provide working Arma 3 code for drawing update-able Arma 3 lines with better support for curves I will be happy to switchover otherwise I will leave it as is -- I'll just go back and provide more position points resulting in finer map output.

Share this post


Link to post
Share on other sites
it 'does the job' for now and I deem green route "usable" quality.

Hey of course! I didn't mean to insult your lovely bus lines; :butbut:

...I've just been wondering why they do look the way, well, the way they do... a bit bananas, :yay:.

I made my routePoints manually though, using onMapSingleClick and manual labour.

Ohhh, that explains it then. The roads in ArmA are actually represented as a connected network/graph, thus you should be able to automate this process (or at least get some great assistance). The basic idea is to start with some road object (e.g. nearRoads), from where you roadsConnectedTo until you're at your destination. You should end up with an array of road objects, from start to the end of your route, and now it's easy to draw a nice route.

Now, it can be tricky to "find" (in an automated way) the exact route you want, but at least you should be able to retrieve them in smaller segments, e.g. from intersection to intersection, and make your bus lines out of that.

Share this post


Link to post
Share on other sites
I've written a findRoute script some time ago; guess that should still work for A3, and then drawing lines along the route is no biggy either (there's a nice demo still available over here: https://dev.withsix.com/issues/8068 which demonstrates everything from route finding to drawing them onto the map).

Otherwise it's all included in the RUBE library (for A2): http://non.sense.ch/shared/rube-wip/. RUBE3 isn't there yet, sorry. :p

Thanks! I'll take a look.

Share this post


Link to post
Share on other sites

I will share the 'fixed' code if and when I revisit this. seba let us know how you get on...

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×