URI:
   DIR Return Create A Forum - Home
       ---------------------------------------------------------
       Haxball Club Divisionals
  HTML https://hcd.createaforum.com
       ---------------------------------------------------------
       *****************************************************
   DIR Return to: Off Topic discussion
       *****************************************************
       #Post#: 4658--------------------------------------------------
       Universal Race Track [FULLY CUSTMIZABLE]
       By: LimitedWard Date: February 17, 2013, 10:25 pm
       ---------------------------------------------------------
       I'm working on creating easily interchangeable parts for race
       tracks. I will post more code as I go on. To use this track,
       simply copy and paste the parts that you need and modify the
       coordinates of the vertexes. It helps if you plan before making
       the track by using paper and a calculator. The goal is to
       streamline race course development.
       Sneak peek at the Mazda Motor Raceway:
       [img width=250 height=181]
  HTML http://i.imgur.com/nEVSAuY.png[/img]
       Track will be made for angles 0, 30, 45, 60, 90, and 180
       depending on the type of track.
       Starting Gate (0 degrees only):
       [spoiler][code]{
       "name" : "Kraft Speedway - Starting Line",
       "width" : 500,
       "height" : 500,
       "spawnDistance" : 170,
       "bg" : { "type" : "hockey", "height" : 500, "width" : 500,
       "cornerRadius" : 0, "kickOffRadius" : 0 },
       "vertexes" : [
       /* 0 */ { "x" : -200, "y" : -450, "trait" : "track" },
       /* 1 */ { "x" : 200, "y" : -450, "trait" : "track" },
       /* 2 */ { "x" : -200, "y" : -300, "trait" : "track" },
       /* 3 */ { "x" : 200, "y" : -300, "trait" : "track" },
       
       /* 4 */ { "x" : -130, "y" : -420, "trait" : "startingGate" },
       /* 5 */ { "x" : -160, "y" : -420, "trait" : "startingGate" },
       /* 6 */ { "x" : -130, "y" : -390, "trait" : "startingGate" },
       /* 7 */ { "x" : -160, "y" : -390, "trait" : "startingGate" },
       /* 8 */ { "x" : -130, "y" : -360, "trait" : "startingGate" },
       /* 9 */ { "x" : -160, "y" : -360, "trait" : "startingGate" },
       /* 10 */ { "x" : -130, "y" : -330, "trait" : "startingGate" },
       /* 11 */ { "x" : -160, "y" : -330, "trait" : "startingGate" },
       /* 12 */ { "x" : -60, "y" : -420, "trait" : "startingGate" },
       /* 13 */ { "x" : -90, "y" : -420, "trait" : "startingGate" },
       /* 14 */ { "x" : -60, "y" : -390, "trait" : "startingGate" },
       /* 15 */ { "x" : -90, "y" : -390, "trait" : "startingGate" },
       /* 16 */ { "x" : -60, "y" : -360, "trait" : "startingGate" },
       /* 17 */ { "x" : -90, "y" : -360, "trait" : "startingGate" },
       /* 18 */ { "x" : -60, "y" : -330, "trait" : "startingGate" },
       /* 19 */ { "x" : -90, "y" : -330, "trait" : "startingGate" },
       /* 20 */ { "x" : 10, "y" : -420, "trait" : "startingGate",
       "_selected" : true },
       /* 21 */ { "x" : -20, "y" : -420, "trait" : "startingGate",
       "_selected" : true },
       /* 22 */ { "x" : 10, "y" : -390, "trait" : "startingGate",
       "_selected" : true },
       /* 23 */ { "x" : -20, "y" : -390, "trait" : "startingGate",
       "_selected" : true },
       /* 24 */ { "x" : 10, "y" : -360, "trait" : "startingGate",
       "_selected" : true },
       /* 25 */ { "x" : -20, "y" : -360, "trait" : "startingGate",
       "_selected" : true },
       /* 26 */ { "x" : 10, "y" : -330, "trait" : "startingGate",
       "_selected" : true },
       /* 27 */ { "x" : -20, "y" : -330, "trait" : "startingGate",
       "_selected" : true },
       /* 28 */ { "x" : 80, "y" : -420, "trait" : "startingGate",
       "_selected" : true },
       /* 29 */ { "x" : 50, "y" : -420, "trait" : "startingGate",
       "_selected" : true },
       /* 30 */ { "x" : 80, "y" : -390, "trait" : "startingGate",
       "_selected" : true },
       /* 31 */ { "x" : 50, "y" : -390, "trait" : "startingGate",
       "_selected" : true },
       /* 32 */ { "x" : 80, "y" : -360, "trait" : "startingGate",
       "_selected" : true },
       /* 33 */ { "x" : 50, "y" : -360, "trait" : "startingGate",
       "_selected" : true },
       /* 34 */ { "x" : 80, "y" : -330, "_selected" : true, "trait" :
       "startingGate" },
       /* 35 */ { "x" : 50, "y" : -330, "_selected" : true, "trait" :
       "startingGate" }
       ],
       "segments" : [
       { "v0" : 0, "v1" : 1, "trait" : "track" },
       { "v0" : 2, "v1" : 3, "trait" : "track" },
       
       { "v0" : 0, "v1" : 2, "trait" : "startingGate" },
       { "v0" : 4, "v1" : 5, "trait" : "startingGate", "y" : -420 },
       { "v0" : 6, "v1" : 7, "trait" : "startingGate", "y" : -390 },
       { "v0" : 5, "v1" : 7, "trait" : "startingGate" },
       { "v0" : 8, "v1" : 9, "trait" : "startingGate", "y" : -420 },
       { "v0" : 10, "v1" : 11, "trait" : "startingGate", "y" : -390
       },
       { "v0" : 9, "v1" : 11, "trait" : "startingGate" },
       { "v0" : 12, "v1" : 13, "trait" : "startingGate", "y" : -420
       },
       { "v0" : 14, "v1" : 15, "trait" : "startingGate", "y" : -390
       },
       { "v0" : 13, "v1" : 15, "trait" : "startingGate" },
       { "v0" : 16, "v1" : 17, "trait" : "startingGate", "y" : -420
       },
       { "v0" : 18, "v1" : 19, "trait" : "startingGate", "y" : -390
       },
       { "v0" : 17, "v1" : 19, "trait" : "startingGate" },
       { "v0" : 20, "v1" : 21, "trait" : "startingGate", "y" : -420,
       "_selected" : true },
       { "v0" : 22, "v1" : 23, "trait" : "startingGate", "y" : -390,
       "_selected" : true },
       { "v0" : 21, "v1" : 23, "trait" : "startingGate", "_selected"
       : true },
       { "v0" : 24, "v1" : 25, "trait" : "startingGate", "y" : -420,
       "_selected" : true },
       { "v0" : 26, "v1" : 27, "trait" : "startingGate", "y" : -390,
       "_selected" : true },
       { "v0" : 25, "v1" : 27, "trait" : "startingGate", "_selected"
       : true },
       { "v0" : 28, "v1" : 29, "trait" : "startingGate", "y" : -420,
       "_selected" : true },
       { "v0" : 30, "v1" : 31, "trait" : "startingGate", "y" : -390,
       "_selected" : true },
       { "v0" : 29, "v1" : 31, "trait" : "startingGate", "_selected"
       : true },
       { "v0" : 32, "v1" : 33, "trait" : "startingGate", "y" : -420,
       "_selected" : true },
       { "v0" : 34, "v1" : 35, "_selected" : true, "trait" :
       "startingGate", "y" : -390 },
       { "v0" : 33, "v1" : 35, "trait" : "startingGate", "_selected"
       : true }
       ],
       "goals" : [
       
       ],
       "discs" : [
       
       ],
       "planes" : [
       
       ],
       "traits" : {
       "ballArea" : { "vis" : false, "bCoef" : 1, "cMask" : ["ball" ]
       },
       "goalPost" : { "radius" : 8, "invMass" : 0, "bCoef" : 0.5 },
       "goalNet" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["ball" ]
       },
       "kickOffBarrier" : { "vis" : false, "bCoef" : 0.1, "cGroup" :
       ["redKO","blueKO" ], "cMask" : ["red","blue" ] },
       "track" : { "vis" : true, "bCoef" : 0.2, "cMask" :
       ["red","blue" ], "color" : "000000" },
       "startingGate" : { "vis" : true, "bCoef" : 0.2, "cMask" :
       ["red","blue" ], "cGroup" : ["redKO","blueKO" ], "color" :
       "FFFFFF" }
       }
       }[/code][/spoiler]
       Straight track:
       [spoiler][code]{
       "name" : "Kraft Speedway - Straight Track",
       "width" : 500,
       "height" : 500,
       "spawnDistance" : 170,
       "bg" : { "type" : "hockey", "height" : 500, "width" : 500,
       "cornerRadius" : 0, "kickOffRadius" : 0 },
       "vertexes" : [
       // Horizontal 0 degrees
       /* 0 */ { "x" : -400, "y" : -450, "trait" : "track" },
       /* 1 */ { "x" : -300, "y" : -450, "trait" : "track" },
       /* 2 */ { "x" : -400, "y" : -300, "trait" : "track" },
       /* 3 */ { "x" : -300, "y" : -300, "trait" : "track" },
       // Vertical 90 degrees
       /* 4 */ { "x" : -200, "y" : -450, "trait" : "track" },
       /* 5 */ { "x" : -200, "y" : -350, "trait" : "track" },
       /* 6 */ { "x" : -50, "y" : -450, "trait" : "track" },
       /* 7 */ { "x" : -50, "y" : -350, "trait" : "track" },
       // Lean right 45
       /* 8 */ { "x" : 82.57573788668776, "y" : -448.45989156637563,
       "trait" : "track" },
       /* 9 */ { "x" : 12.20416660327146, "y" : -377.41172512203275,
       "trait" : "track" },
       /* 10 */ { "x" : 189.14798755320209, "y" :
       -342.90253464125107, "trait" : "track" },
       /* 11 */ { "x" : 118.77641626978573, "y" :
       -271.85436819690824, "trait" : "track" },
       // Lean left 45
       /* 12 */ { "x" : 258.4418135904972, "y" : -343.31625549899144,
       "trait" : "track" },
       /* 13 */ { "x" : 329.5296209243025, "y" : -272.9847287953021,
       "trait" : "track" },
       /* 14 */ { "x" : 363.9391036460312, "y" : -449.9479664996995,
       "trait" : "track" },
       /* 15 */ { "x" : 435.02691097983654, "y" : -379.6164397960101,
       "trait" : "track" },
       // Lean left 30
       /* 16 */ { "x" : -423.95505204177874, "y" :
       -174.29071747318596, "trait" : "track" },
       /* 17 */ { "x" : -373.430668567897, "y" : -87.9930542685305,
       "trait" : "track" },
       /* 18 */ { "x" : -294.5085572347956, "y" :
       -250.07729268400863, "trait" : "track" },
       /* 19 */ { "x" : -243.98417376091385, "y" :
       -163.77962947935316, "trait" : "track" },
       // Lean right 30
       /* 20 */ { "x" : -124.29695609287936, "y" :
       -251.39511336679243, "trait" : "track" },
       /* 21 */ { "x" : -174.8105199821836, "y" : -165.0911165694182,
       "trait" : "track" },
       /* 22 */ { "x" : 5.159039103181954, "y" : -175.62476753283607,
       "trait" : "track" },
       /* 23 */ { "x" : -45.35452478612228, "y" : -89.32077073546185,
       "trait" : "track" },
       // Lean left 60
       /* 24 */ { "x" : 61.00151433647943, "y" : -115.1726208524251,
       "trait" : "track" },
       /* 25 */ { "x" : 147.98966454878644, "y" : -65.84654536854828,
       "trait" : "track" },
       /* 26 */ { "x" : 134.99062756229466, "y" : -245.6548461708856,
       "trait" : "track" },
       /* 27 */ { "x" : 221.97877777460167, "y" :
       -196.32877068700878, "trait" : "track" },
       // Lean right 60
       /* 28 */ { "x" : 344.3883222879193, "y" : -247.66761885599738,
       "trait" : "track" },
       /* 29 */ { "x" : 257.89832539483587, "y" :
       -197.47319249774114, "trait" : "track" },
       /* 30 */ { "x" : 419.6799618253037, "y" : -117.93262351637219,
       "trait" : "track" },
       /* 31 */ { "x" : 333.1899649322202, "y" : -67.73819715811595,
       "trait" : "track" }
       ],
       "segments" : [
       // Horizontal
       { "v0" : 0, "v1" : 1, "trait" : "track" },
       { "v0" : 2, "v1" : 3, "trait" : "track" },
       // Vertical
       { "v0" : 4, "v1" : 5, "trait" : "track" },
       { "v0" : 6, "v1" : 7, "trait" : "track" },
       // right 45
       { "v0" : 8, "v1" : 9, "trait" : "track" },
       { "v0" : 10, "v1" : 11, "trait" : "track" },
       // left 45
       { "v0" : 12, "v1" : 13, "trait" : "track" },
       { "v0" : 14, "v1" : 15, "trait" : "track" },
       // left 30
       { "v0" : 16, "v1" : 17, "trait" : "track" },
       { "v0" : 18, "v1" : 19, "trait" : "track" },
       // right 30
       { "v0" : 20, "v1" : 21, "trait" : "track" },
       { "v0" : 22, "v1" : 23, "trait" : "track" },
       // left 60
       { "v0" : 24, "v1" : 25, "trait" : "track" },
       { "v0" : 26, "v1" : 27, "trait" : "track" },
       //right 60
       { "v0" : 28, "v1" : 29, "trait" : "track" },
       { "v0" : 30, "v1" : 31, "trait" : "track" }
       ],
       "goals" : [
       
       ],
       "discs" : [
       
       ],
       "planes" : [
       
       ],
       "traits" : {
       "ballArea" : { "vis" : false, "bCoef" : 1, "cMask" : ["ball" ]
       },
       "goalPost" : { "radius" : 8, "invMass" : 0, "bCoef" : 0.5 },
       "goalNet" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["ball" ]
       },
       "kickOffBarrier" : { "vis" : false, "bCoef" : 0.1, "cGroup" :
       ["redKO","blueKO" ], "cMask" : ["red","blue" ] },
       "track" : { "vis" : true, "bCoef" : 0.2, "cMask" :
       ["red","blue" ], "color" : "000000" }
       }
       }[/code][/spoiler]
       Right 45 degree turn: (this was a pain in the ass to make) (YAY
       CALCULUS)
       [spoiler][code]{
       "name" : "Kraft Speedway - Right Bend 45",
       "width" : 500,
       "height" : 500,
       "spawnDistance" : 170,
       "bg" : { "type" : "hockey", "height" : 500, "width" : 500,
       "cornerRadius" : 0, "kickOffRadius" : 0 },
       "vertexes" : [
       // 45 degree turn
       /* 0 */ { "x" : 35.3553390593, "y" : -164.644660941, "trait" :
       "track"},
       /* 1 */ { "x" : 0, "y" : -150, "trait" : "track" },
       /* 2 */ { "x" : 141.421356237, "y" : -58.578643763, "trait" :
       "track" },
       /* 3 */ { "x" : 0, "y" : 0, "trait" : "track" }
       // Debugging curve, do not use /* 4 */ { "x" : 50, "y" : -200,
       "trait" : "track"},
       // Debugging curve, do not use /* 5 */ { "x" : 200, "y" :
       -200, "trait" : "track" }
       ],
       "segments" : [
       // Debugging curve, do not use { "v0" : 5, "v1" : 3, "trait" :
       "track", "curve" : 90, "color":"FF0000" },
       // Debugging curve, do not use { "v0" : 4, "v1" : 1, "trait" :
       "track", "curve" : 90, "color":"FF0000" },
       // 45 degree turn
       { "v0" : 0, "v1" : 1, "trait" : "track", "curve" : 45 },
       { "v0" : 2, "v1" : 3, "trait" : "track", "curve" : 45 }
       ],
       "goals" : [
       
       ],
       "discs" : [
       
       ],
       "planes" : [
       
       ],
       "traits" : {
       "ballArea" : { "vis" : false, "bCoef" : 1, "cMask" : ["ball" ]
       },
       "goalPost" : { "radius" : 8, "invMass" : 0, "bCoef" : 0.5 },
       "goalNet" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["ball" ]
       },
       "kickOffBarrier" : { "vis" : false, "bCoef" : 0.1, "cGroup" :
       ["redKO","blueKO" ], "cMask" : ["red","blue" ] },
       "track" : { "vis" : true, "bCoef" : 0.2, "cMask" :
       ["red","blue" ], "color" : "000000" }
       }
       }[/code][/spoiler]
       Left 45 Degree Turn:
       [spoiler][code]{
       "name" : "Kraft Speedway - Right Bend 45",
       "width" : 500,
       "height" : 500,
       "spawnDistance" : 170,
       "bg" : { "type" : "hockey", "height" : 500, "width" : 500,
       "cornerRadius" : 0, "kickOffRadius" : 0 },
       "vertexes" : [
       // 45 degree turn
       /* 0 */ { "x" : 35.3553390593, "y" : 164.644660941, "trait" :
       "track"},
       /* 1 */ { "x" : 0, "y" : 150, "trait" : "track" },
       /* 2 */ { "x" : 141.421356237, "y" : 58.578643763, "trait" :
       "track" },
       /* 3 */ { "x" : 0, "y" : 0, "trait" : "track" }
       // Debugging curve, do not use /* 4 */ { "x" : 50, "y" : -200,
       "trait" : "track"},
       // Debugging curve, do not use /* 5 */ { "x" : 200, "y" :
       -200, "trait" : "track" }
       ],
       "segments" : [
       // Debugging curve, do not use { "v0" : 5, "v1" : 3, "trait" :
       "track", "curve" : 90, "color":"FF0000" },
       // Debugging curve, do not use { "v0" : 4, "v1" : 1, "trait" :
       "track", "curve" : 90, "color":"FF0000" },
       // 45 degree turn
       { "v0" : 0, "v1" : 1, "trait" : "track", "curve" : -45 },
       { "v0" : 2, "v1" : 3, "trait" : "track", "curve" : -45 }
       ],
       "goals" : [
       
       ],
       "discs" : [
       
       ],
       "planes" : [
       
       ],
       "traits" : {
       "ballArea" : { "vis" : false, "bCoef" : 1, "cMask" : ["ball" ]
       },
       "goalPost" : { "radius" : 8, "invMass" : 0, "bCoef" : 0.5 },
       "goalNet" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["ball" ]
       },
       "kickOffBarrier" : { "vis" : false, "bCoef" : 0.1, "cGroup" :
       ["redKO","blueKO" ], "cMask" : ["red","blue" ] },
       "track" : { "vis" : true, "bCoef" : 0.2, "cMask" :
       ["red","blue" ], "color" : "000000" }
       }
       }[/code][/spoiler]
       *****************************************************