less copy protection, more size visualization
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

900 řádky
29 KiB

  1. function makeVehicle(name, sides, mass) {
  2. views = {
  3. }
  4. Object.entries(sides).forEach(([key, val]) => {
  5. views[key] = {
  6. attributes: {
  7. height: {
  8. name: "Height",
  9. power: 1,
  10. type: "length",
  11. base: val.height
  12. }
  13. },
  14. image: val.image,
  15. name: val.name
  16. }
  17. if (mass !== undefined) {
  18. views[key].attributes.mass = {
  19. name: "Mass",
  20. power: 3,
  21. type: "mass",
  22. base: mass
  23. }
  24. }
  25. });
  26. return makeEntity({ name: name }, views);
  27. }
  28. function makeMultiVehicle(name, sides) {
  29. views = {
  30. }
  31. Object.entries(sides).forEach(([key, val]) => {
  32. views[key] = {
  33. attributes: {
  34. height: {
  35. name: "Height",
  36. power: 1,
  37. type: "length",
  38. base: val.height
  39. }
  40. },
  41. image: val.image,
  42. name: val.name,
  43. rename: val.rename
  44. }
  45. if (val.mass) {
  46. views[key].attributes.mass = {
  47. name: "Mass",
  48. power: 3,
  49. type: "mass",
  50. base: val.mass
  51. }
  52. }
  53. });
  54. return makeEntity({ name: name }, views);
  55. }
  56. function makeAircraft() {
  57. const options = [
  58. ["Antonov An-225", 84, 18.1, 285000],
  59. ["Airbus A380-800", 72.7, 24.1, 277000],
  60. ["Stratolaunch", 73, 16.5, 540000],
  61. ["Boeing 747-8", 76.3, 19.4, 220128],
  62. ["Hughes H-4 Hercules", 66.6, 24.2, 136077],
  63. ["Cessena 172", 8.28, 2.72, 757, 2.72]
  64. ],
  65. sides = {}
  66. const sorted = options.sort((a, b) => a[1] - b[1])
  67. sorted.forEach(plane => {
  68. sides[plane[0] + " (Side)"] = {
  69. name: plane[0] + " (Side)",
  70. rename: true,
  71. height: math.unit(plane[2], "meters"),
  72. mass: math.unit(plane[3], "kg"),
  73. image: { source: "./media/vehicles/planes/plane_" + plane[0].replace(/ /g, "-").toLowerCase() + "-side.svg" }
  74. };
  75. sides[plane[0] + " (Top)"] = {
  76. name: plane[0] + " (Top)",
  77. rename: true,
  78. height: math.unit(plane[1], "meters"),
  79. mass: math.unit(plane[3], "kg"),
  80. image: { source: "./media/vehicles/planes/plane_" + plane[0].replace(/ /g, "-").toLowerCase() + "-top.svg" }
  81. };
  82. if (plane.length > 4) {
  83. sides[plane[0] + " (Front)"] = {
  84. name: plane[0] + " (Front)",
  85. rename: true,
  86. height: math.unit(plane[4], "meters"),
  87. mass: math.unit(plane[3], "kg"),
  88. image: { source: "./media/vehicles/planes/plane_" + plane[0].replace(/ /g, "-").toLowerCase() + "-front.svg" }
  89. };
  90. }
  91. });
  92. const entity = makeMultiVehicle("Aircraft", sides);
  93. entity.sizes.push({
  94. name: "1:72",
  95. height: math.unit(sorted[0][2] / 72, "meters")
  96. });
  97. entity.sizes.push({
  98. name: "1:24",
  99. height: math.unit(sorted[0][2] / 24, "meters")
  100. });
  101. entity.sizes.push({
  102. name: "1:16",
  103. height: math.unit(sorted[0][2] / 16, "meters")
  104. });
  105. entity.sizes.push({
  106. name: "1:8",
  107. height: math.unit(sorted[0][2] / 8, "meters")
  108. });
  109. entity.sizes.push({
  110. name: "1:4",
  111. height: math.unit(sorted[0][2] / 4, "meters")
  112. });
  113. entity.sizes.push({
  114. name: "1",
  115. height: math.unit(sorted[0][2], "meters")
  116. });
  117. return entity;
  118. }
  119. function makeCars() {
  120. const options = [
  121. ["Toyota Prius C", 3.99, 1.45, 1134, 1, 1.07, 1],
  122. ["VW New Beetle", 4.13, 1.57, 1230, 1, 1, 1],
  123. ["Honda Civic", 4.55, 1.42, 1303, 1, 1, 1],
  124. ["Lamborghini Aventador", 4.78, 1.136, 1575, 1, 1, 1],
  125. ["Ford F-150", 5.89, 1.92, 1950, 1, 1, 1]
  126. ]
  127. sides = {}
  128. const sorted = options.sort((a, b) => a[1] - b[1])
  129. sorted.forEach(car => {
  130. sides[car[0] + " (Front)"] = {
  131. name: car[0] + " (Front)",
  132. rename: true,
  133. height: math.unit(car[2], "meters"),
  134. mass: math.unit(car[3], "kg"),
  135. image: { source: "./media/vehicles/cars/car_" + car[0].replace(/ /g, "-").toLowerCase() + "-front.svg", extra: car[4] }
  136. };
  137. sides[car[0] + " (Side)"] = {
  138. name: car[0] + " (Side)",
  139. rename: true,
  140. height: math.unit(car[2], "meters"),
  141. mass: math.unit(car[3], "kg"),
  142. image: { source: "./media/vehicles/cars/car_" + car[0].replace(/ /g, "-").toLowerCase() + "-side.svg", extra: car[5] }
  143. };
  144. sides[car[0] + " (Top)"] = {
  145. name: car[0] + " (Top)",
  146. rename: true,
  147. height: math.unit(car[1], "meters"),
  148. mass: math.unit(car[3], "kg"),
  149. image: { source: "./media/vehicles/cars/car_" + car[0].replace(/ /g, "-").toLowerCase() + "-top.svg", extra: car[6] }
  150. };
  151. });
  152. const entity = makeMultiVehicle("Cars", sides);
  153. entity.sizes.push({
  154. name: "1:72",
  155. height: math.unit(sorted[0][2] / 72, "meters")
  156. });
  157. entity.sizes.push({
  158. name: "1:24",
  159. height: math.unit(sorted[0][2] / 24, "meters")
  160. });
  161. entity.sizes.push({
  162. name: "1:16",
  163. height: math.unit(sorted[0][2] / 16, "meters")
  164. });
  165. entity.sizes.push({
  166. name: "1:8",
  167. height: math.unit(sorted[0][2] / 8, "meters")
  168. });
  169. entity.sizes.push({
  170. name: "1:4",
  171. height: math.unit(sorted[0][2] / 4, "meters")
  172. });
  173. entity.sizes.push({
  174. name: "1",
  175. height: math.unit(sorted[0][2], "meters")
  176. });
  177. return entity;
  178. }
  179. function makeBuses() {
  180. const options = [
  181. ["City Bus", 11.95, 2.99, 14000, 1, 1, 1],
  182. ["Articulated Bus", 18, 3.13, 25000, 1, 1, 1],
  183. ["Coach Bus", 12, 3.81, 18000, 1, 1, 1],
  184. ["Shuttle Bus", 7.01, 2.67, 6000, 1, 1, 1],
  185. ]
  186. sides = {}
  187. options.forEach(bus => {
  188. sides[bus[0] + " (Front)"] = {
  189. name: bus[0] + " (Front)",
  190. rename: true,
  191. height: math.unit(bus[2], "meters"),
  192. mass: math.unit(bus[3], "kg"),
  193. image: { source: "./media/vehicles/buses/bus_" + bus[0].replace(/ /g, "-").toLowerCase() + "-front.svg", extra: bus[4] }
  194. };
  195. sides[bus[0] + " (Side)"] = {
  196. name: bus[0] + " (Side)",
  197. rename: true,
  198. height: math.unit(bus[2], "meters"),
  199. mass: math.unit(bus[3], "kg"),
  200. image: { source: "./media/vehicles/buses/bus_" + bus[0].replace(/ /g, "-").toLowerCase() + "-side.svg", extra: bus[5] }
  201. };
  202. sides[bus[0] + " (Top)"] = {
  203. name: bus[0] + " (Top)",
  204. rename: true,
  205. height: math.unit(bus[1], "meters"),
  206. mass: math.unit(bus[3], "kg"),
  207. image: { source: "./media/vehicles/buses/bus_" + bus[0].replace(/ /g, "-").toLowerCase() + "-top.svg", extra: bus[6] }
  208. };
  209. });
  210. const entity = makeMultiVehicle("Buses", sides);
  211. entity.sizes.push({
  212. name: "1:72",
  213. height: math.unit(options[0][2] / 72, "meters")
  214. });
  215. entity.sizes.push({
  216. name: "1:24",
  217. height: math.unit(options[0][2] / 24, "meters")
  218. });
  219. entity.sizes.push({
  220. name: "1:16",
  221. height: math.unit(options[0][2] / 16, "meters")
  222. });
  223. entity.sizes.push({
  224. name: "1:8",
  225. height: math.unit(options[0][2] / 8, "meters")
  226. });
  227. entity.sizes.push({
  228. name: "1:4",
  229. height: math.unit(options[0][2] / 4, "meters")
  230. });
  231. entity.sizes.push({
  232. name: "1",
  233. height: math.unit(options[0][2], "meters")
  234. });
  235. return entity;
  236. }
  237. // TODO this should be named something more generic and put in objects.js
  238. function makeVehicleGroup(info, name, prefix, directory="vehicles") {
  239. sides = {}
  240. let defaultHeight;
  241. info.forEach(vehicle => {
  242. Object.entries(vehicle.sides).forEach(([sideName, data]) => {
  243. if (!defaultHeight) {
  244. defaultHeight = data.height;
  245. }
  246. sides[vehicle.name + " (" + sideName + ")"] = {
  247. name: vehicle.name + " (" + sideName + ")",
  248. rename: true,
  249. height: data.height,
  250. mass: vehicle.mass,
  251. image: { source: "./media/" + directory + "/" + name.replace(/ /g, "-").toLowerCase() + "/" + (prefix == "" ? "" : prefix + "_") + vehicle.name.replace(/ /g, "-").toLowerCase() + "-" + sideName.replace(/ /g, "-").toLowerCase() + ".svg", extra: (data.extra ? data.extra : 1) }
  252. };
  253. });
  254. });
  255. const entity = makeMultiVehicle(name, sides);
  256. entity.sizes.push({
  257. name: "1:72",
  258. height: math.unit(math.divide(defaultHeight, 72))
  259. });
  260. entity.sizes.push({
  261. name: "1:24",
  262. height: math.unit(math.divide(defaultHeight, 24))
  263. });
  264. entity.sizes.push({
  265. name: "1:16",
  266. height: math.unit(math.divide(defaultHeight, 16))
  267. });
  268. entity.sizes.push({
  269. name: "1:8",
  270. height: math.unit(math.divide(defaultHeight, 8))
  271. });
  272. entity.sizes.push({
  273. name: "1:4",
  274. height: math.unit(math.divide(defaultHeight, 4))
  275. });
  276. return entity;
  277. }
  278. function makeAutoVehicleGroup(info, name) {
  279. sides = {}
  280. let defaultHeight;
  281. info.forEach(vehicle => {
  282. Object.entries(vehicle.sides).forEach(([sideName, data]) => {
  283. if (!defaultHeight) {
  284. defaultHeight = data.height;
  285. }
  286. sides[vehicle.name + " (" + sideName + ")"] = {
  287. name: vehicle.name + " (" + sideName + ")",
  288. rename: true,
  289. height: data.height,
  290. image: { source: "./media/vehicles/" + name + "/" + vehicle.name + "-" + sideName + ".svg" }
  291. };
  292. });
  293. });
  294. const entity = makeMultiVehicle(name, sides);
  295. entity.sizes.push({
  296. name: "1:72",
  297. height: math.unit(math.divide(defaultHeight, 72))
  298. });
  299. entity.sizes.push({
  300. name: "1:24",
  301. height: math.unit(math.divide(defaultHeight, 24))
  302. });
  303. entity.sizes.push({
  304. name: "1:16",
  305. height: math.unit(math.divide(defaultHeight, 16))
  306. });
  307. entity.sizes.push({
  308. name: "1:8",
  309. height: math.unit(math.divide(defaultHeight, 8))
  310. });
  311. entity.sizes.push({
  312. name: "1:4",
  313. height: math.unit(math.divide(defaultHeight, 4))
  314. });
  315. return entity;
  316. }
  317. function makeVehicles() {
  318. const results = [];
  319. results.push({
  320. name: "Titanic",
  321. constructor: () => makeVehicle(
  322. "Titanic",
  323. {
  324. side: {
  325. name: "Side",
  326. height: math.unit(883 * 1114 / 4250, "feet"),
  327. image: { source: "./media/vehicles/titanic.svg" },
  328. },
  329. sideVertical: {
  330. name: "Side (Vertical)",
  331. height: math.unit(883, "feet"),
  332. image: { source: "./media/vehicles/vertical-titanic.svg" },
  333. },
  334. },
  335. math.unit(52310, "tons")
  336. )
  337. });
  338. results.push({
  339. name: "18-Wheeler",
  340. constructor: () => makeVehicle(
  341. "18-Wheeler",
  342. {
  343. side: {
  344. name: "Side",
  345. height: math.unit(13.6, "feet"),
  346. image: { source: "./media/vehicles/18-wheeler.svg" },
  347. },
  348. sideVertical: {
  349. name: "Side (Vertical)",
  350. height: math.unit(54, "feet"),
  351. image: { source: "./media/vehicles/18-wheeler-vertical.svg" },
  352. },
  353. },
  354. math.unit(52310, "tons")
  355. )
  356. });
  357. results.push({
  358. name: "Spacecraft",
  359. constructor: () => makeMultiVehicle(
  360. "Spacecraft",
  361. {
  362. "n-1": {
  363. name: "N-1",
  364. rename: true,
  365. height: math.unit(105, "meters"),
  366. mass: math.unit(95, "tons"),
  367. image: { source: "./media/vehicles/spacecraft/n-1.svg" }
  368. },
  369. "saturn-v": {
  370. name: "Saturn V",
  371. rename: true,
  372. height: math.unit(110.6, "meters"),
  373. mass: math.unit(140, "tons"),
  374. image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
  375. },
  376. "starship": {
  377. name: "Starship",
  378. rename: true,
  379. height: math.unit(118, "m"),
  380. mass: math.unit(150, "tons"),
  381. image: { source: "./media/vehicles/spacecraft/saturn-v.svg" }
  382. },
  383. }
  384. )
  385. });
  386. results.push({
  387. name: "Aircraft",
  388. constructor: () => makeAircraft()
  389. });
  390. results.push({
  391. name: "Cars",
  392. constructor: () => makeCars()
  393. });
  394. results.push({
  395. name: "Buses",
  396. constructor: () => makeBuses()
  397. });
  398. results.push({
  399. name: "Trains",
  400. constructor: () => makeVehicleGroup([
  401. {
  402. name: "60' Boxcar",
  403. mass: math.unit(80900, "lbs"),
  404. sides: {
  405. "Side": { height: math.unit(17, "feet") },
  406. "Front": { height: math.unit(17, "feet") }
  407. }
  408. },
  409. {
  410. name: "64' Flatcar",
  411. mass: math.unit(66000, "lbs"),
  412. sides: {
  413. "Side": { height: math.unit(5.03, "feet") },
  414. "Front": { height: math.unit(5.03, "feet") },
  415. }
  416. },
  417. {
  418. name: "3250 Cubic Ft Hopper",
  419. mass: math.unit(52000, "lbs"),
  420. sides: {
  421. "Side": { height: math.unit(15 + 3 / 12, "feet") },
  422. "Front": { height: math.unit(15 + 3 / 12, "feet") },
  423. }
  424. },
  425. {
  426. name: "28600 Gallon Tank Car",
  427. mass: math.unit(93000, "lbs"),
  428. sides: {
  429. "Side": { height: math.unit(15 + 5.7 / 12, "feet") },
  430. "Front": { height: math.unit(15 + 5.7 / 12, "feet") },
  431. }
  432. }
  433. ],
  434. "Trains",
  435. "train")
  436. });
  437. const dataWarships = [
  438. {
  439. name: "Balao",
  440. sides: {
  441. "Side": { height: math.unit(13.346937056812138, "meters") },
  442. "Front": { height: math.unit(13.346937056812138, "meters") },
  443. "Top": { height: math.unit(95.35877787338985, "meters") },
  444. }
  445. },
  446. {
  447. name: "Bismarck",
  448. sides: {
  449. "Side": { height: math.unit(54.69636677864504, "meters") },
  450. "Front": { height: math.unit(54.69636677864504, "meters") },
  451. "Top": { height: math.unit(255.13670261140695, "meters") },
  452. }
  453. },
  454. {
  455. name: "Charleston",
  456. sides: {
  457. "Side": { height: math.unit(43.84541411294146, "meters") },
  458. "Front": { height: math.unit(45.62719791691388, "meters") },
  459. "Top": { height: math.unit(129.98356198199832, "meters") },
  460. }
  461. },
  462. {
  463. name: "Enterprise",
  464. sides: {
  465. "Side": { height: math.unit(48.51854022788899, "meters") },
  466. "Front": { height: math.unit(48.51854022788899, "meters") },
  467. "Top": { height: math.unit(253.1778795587282, "meters") },
  468. }
  469. },
  470. {
  471. name: "Erie",
  472. sides: {
  473. "Side": { height: math.unit(32.059378464959345, "meters") },
  474. "Front": { height: math.unit(32.059378464959345, "meters") },
  475. "Top": { height: math.unit(101.90240111970473, "meters") },
  476. }
  477. },
  478. {
  479. name: "Fusō",
  480. sides: {
  481. "Side": { height: math.unit(57.714804802509974, "meters") },
  482. "Front": { height: math.unit(57.714804802509974, "meters") },
  483. "Top": { height: math.unit(213.5157104361463, "meters") },
  484. }
  485. },
  486. {
  487. name: "Hood",
  488. sides: {
  489. "Side": { height: math.unit(51.230756762367264, "meters") },
  490. "Front": { height: math.unit(51.230756762367264, "meters") },
  491. "Top": { height: math.unit(263.41015261022113, "meters") },
  492. }
  493. },
  494. {
  495. name: "Hōshō",
  496. sides: {
  497. "Side": { height: math.unit(32.758064912151085, "meters") },
  498. "Front": { height: math.unit(32.758064912151085, "meters") },
  499. "Top": { height: math.unit(185.00137927141287, "meters") },
  500. }
  501. },
  502. {
  503. name: "Iowa",
  504. sides: {
  505. "Side": { height: math.unit(49.127098508478305, "meters") },
  506. "Front": { height: math.unit(49.127098508478305, "meters") },
  507. "Top": { height: math.unit(271.8477422138651, "meters") },
  508. }
  509. },
  510. {
  511. name: "König",
  512. sides: {
  513. "Side": { height: math.unit(45.404394789902064, "meters") },
  514. "Front": { height: math.unit(45.72006845008677, "meters") },
  515. "Top": { height: math.unit(178.61867938785338, "meters") },
  516. }
  517. },
  518. {
  519. name: "New Mexico",
  520. sides: {
  521. "Side": { height: math.unit(41.32890317041514, "meters") },
  522. "Front": { height: math.unit(41.32890317041514, "meters") },
  523. "Top": { height: math.unit(190.75114403153, "meters") },
  524. }
  525. },
  526. {
  527. name: "Shōkaku",
  528. sides: {
  529. "Side": { height: math.unit(41.67455523006811, "meters") },
  530. "Front": { height: math.unit(41.67455523006811, "meters") },
  531. "Top": { height: math.unit(260.7137969911492, "meters") },
  532. }
  533. },
  534. {
  535. name: "Texas",
  536. sides: {
  537. "Side": { height: math.unit(48.903111190282694, "meters") },
  538. "Front": { height: math.unit(48.903111190282694, "meters") },
  539. "Top": { height: math.unit(195.24415882424861, "meters") },
  540. }
  541. },
  542. {
  543. name: "U-2501",
  544. sides: {
  545. "Side": { height: math.unit(11.361271301409108, "meters") },
  546. "Front": { height: math.unit(11.361271301409108, "meters") },
  547. "Top": { height: math.unit(77.06816292937421, "meters") },
  548. }
  549. },
  550. {
  551. name: "Yamato",
  552. sides: {
  553. "Side": { height: math.unit(49.20849004806329, "meters") },
  554. "Front": { height: math.unit(49.20849004806329, "meters") },
  555. "Top": { height: math.unit(265.94789907523005, "meters") },
  556. }
  557. }
  558. ];
  559. results.push({
  560. name: "Warships",
  561. constructor: () => makeAutoVehicleGroup(dataWarships,
  562. "Warships",
  563. "")
  564. });
  565. const dataTanks = [
  566. {
  567. name: "Churchill I",
  568. sides: {
  569. "Side": { height: math.unit(3.106923773821576, "meters") },
  570. "Front": { height: math.unit(3.122615308032796, "meters") },
  571. "Top": { height: math.unit(7.2584553965615175, "meters") },
  572. }
  573. },
  574. {
  575. name: "Crusader",
  576. sides: {
  577. "Side": { height: math.unit(2.6101422524871567, "meters") },
  578. "Front": { height: math.unit(2.6101422524871567, "meters") },
  579. "Top": { height: math.unit(6.307843776843961, "meters") },
  580. }
  581. },
  582. {
  583. name: "Emil II",
  584. sides: {
  585. "Side": { height: math.unit(3.8108011655820206, "meters") },
  586. "Front": { height: math.unit(3.824251052048781, "meters") },
  587. "Top": { height: math.unit(10.773359059874819, "meters") },
  588. }
  589. },
  590. {
  591. name: "Fiat 3000",
  592. sides: {
  593. "Side": { height: math.unit(1.9496277856164035, "meters") },
  594. "Front": { height: math.unit(1.9496277856164035, "meters") },
  595. "Top": { height: math.unit(4.27912077145522, "meters") },
  596. }
  597. },
  598. {
  599. name: "Jagdtiger",
  600. sides: {
  601. "Side": { height: math.unit(3.9193441089979792, "meters") },
  602. "Front": { height: math.unit(3.9193441089979792, "meters") },
  603. "Top": { height: math.unit(10.649006600787407, "meters") },
  604. }
  605. },
  606. {
  607. name: "Leopard 1",
  608. sides: {
  609. "Side": { height: math.unit(3.8225993116054964, "meters") },
  610. "Front": { height: math.unit(3.8225993116054964, "meters") },
  611. "Top": { height: math.unit(9.539980874580879, "meters") },
  612. }
  613. },
  614. {
  615. name: "M4A3E8 Sherman",
  616. sides: {
  617. "Side": { height: math.unit(2.8079437256982533, "meters") },
  618. "Front": { height: math.unit(2.8117875911680663, "meters") },
  619. "Top": { height: math.unit(6.238593657506183, "meters") },
  620. }
  621. },
  622. {
  623. name: "Maus",
  624. sides: {
  625. "Side": { height: math.unit(3.2167645133001166, "meters") },
  626. "Front": { height: math.unit(3.2167645133001166, "meters") },
  627. "Top": { height: math.unit(10.116556270748033, "meters") },
  628. }
  629. },
  630. {
  631. name: "MS-1",
  632. sides: {
  633. "Side": { height: math.unit(1.8993136516336966, "meters") },
  634. "Front": { height: math.unit(1.8993136516336966, "meters") },
  635. "Top": { height: math.unit(4.40306449214827, "meters") },
  636. }
  637. },
  638. {
  639. name: "O-I",
  640. sides: {
  641. "Side": { height: math.unit(3.5245408857493157, "meters") },
  642. "Front": { height: math.unit(3.5245408857493157, "meters") },
  643. "Top": { height: math.unit(10.290467152684577, "meters") },
  644. }
  645. },
  646. {
  647. name: "Panther II",
  648. sides: {
  649. "Side": { height: math.unit(2.7322022370149734, "meters") },
  650. "Front": { height: math.unit(2.7322022370149734, "meters") },
  651. "Top": { height: math.unit(8.993913000210199, "meters") },
  652. }
  653. },
  654. {
  655. name: "Pz.Kpfw. II",
  656. sides: {
  657. "Side": { height: math.unit(1.895973799129121, "meters") },
  658. "Front": { height: math.unit(1.895973799129121, "meters") },
  659. "Top": { height: math.unit(4.940551695644215, "meters") },
  660. }
  661. },
  662. {
  663. name: "Pz.Kpfw. III_IV",
  664. sides: {
  665. "Side": { height: math.unit(2.474235510305821, "meters") },
  666. "Front": { height: math.unit(2.474235510305821, "meters") },
  667. "Top": { height: math.unit(6.593240824273646, "meters") },
  668. }
  669. },
  670. {
  671. name: "Somua S35",
  672. sides: {
  673. "Side": { height: math.unit(2.747352267371468, "meters") },
  674. "Front": { height: math.unit(2.747352267371468, "meters") },
  675. "Top": { height: math.unit(5.419850312436055, "meters") },
  676. }
  677. },
  678. {
  679. name: "StuG IV",
  680. sides: {
  681. "Side": { height: math.unit(3.4493634873846486, "meters") },
  682. "Front": { height: math.unit(3.4493634873846486, "meters") },
  683. "Top": { height: math.unit(6.73890309470866, "meters") },
  684. }
  685. },
  686. {
  687. name: "Sturmpanzer II",
  688. sides: {
  689. "Side": { height: math.unit(2.884547159679786, "meters") },
  690. "Front": { height: math.unit(2.884547159679786, "meters") },
  691. "Top": { height: math.unit(5.479425422386316, "meters") },
  692. }
  693. },
  694. {
  695. name: "Super Hellcat",
  696. sides: {
  697. "Side": { height: math.unit(2.584518696915076, "meters") },
  698. "Front": { height: math.unit(2.584518696915076, "meters") },
  699. "Top": { height: math.unit(7.096077076387668, "meters") },
  700. }
  701. },
  702. {
  703. name: "T-26",
  704. sides: {
  705. "Side": { height: math.unit(2.2802546287588683, "meters") },
  706. "Front": { height: math.unit(2.2802546287588683, "meters") },
  707. "Top": { height: math.unit(4.590177998040621, "meters") },
  708. }
  709. },
  710. {
  711. name: "T-34",
  712. sides: {
  713. "Side": { height: math.unit(2.11028214292723, "meters") },
  714. "Front": { height: math.unit(2.11028214292723, "meters") },
  715. "Top": { height: math.unit(6.203998868277867, "meters") },
  716. }
  717. },
  718. {
  719. name: "T28",
  720. sides: {
  721. "Side": { height: math.unit(3.5677593574984616, "meters") },
  722. "Front": { height: math.unit(3.5677593574984616, "meters") },
  723. "Top": { height: math.unit(11.550384956980801, "meters") },
  724. }
  725. },
  726. {
  727. name: "Type 59",
  728. sides: {
  729. "Side": { height: math.unit(2.5160021432659714, "meters") },
  730. "Front": { height: math.unit(2.5160021432659714, "meters") },
  731. "Top": { height: math.unit(8.948422717087464, "meters") },
  732. }
  733. }
  734. ];
  735. results.push({
  736. name: "Tanks",
  737. constructor: () => makeAutoVehicleGroup(
  738. dataTanks,
  739. "Tanks",
  740. "")
  741. });
  742. const dataEveOnline = [
  743. {
  744. name: "Archon",
  745. sides: {
  746. "Side": { height: math.unit(447.54522705078125, "meters") },
  747. "Front": { height: math.unit(447.54522705078125, "meters") },
  748. "Top": { height: math.unit(3154.529052734375, "meters") },
  749. }
  750. },
  751. {
  752. name: "Avatar",
  753. sides: {
  754. "Side": { height: math.unit(6176.2001953125, "meters") },
  755. "Front": { height: math.unit(6176.2001953125, "meters") },
  756. "Top": { height: math.unit(13831.8583984375, "meters") },
  757. }
  758. },
  759. {
  760. name: "Chimera",
  761. sides: {
  762. "Side": { height: math.unit(475.55010986328125, "meters") },
  763. "Front": { height: math.unit(475.55010986328125, "meters") },
  764. "Top": { height: math.unit(2696.60009765625, "meters") },
  765. }
  766. },
  767. {
  768. name: "Erebus",
  769. sides: {
  770. "Side": { height: math.unit(4789.970703125, "meters") },
  771. "Front": { height: math.unit(4789.970703125, "meters") },
  772. "Top": { height: math.unit(14785.546875, "meters") },
  773. }
  774. },
  775. {
  776. name: "Leviathan",
  777. sides: {
  778. "Side": { height: math.unit(3544.030029296875, "meters") },
  779. "Front": { height: math.unit(3544.030029296875, "meters") },
  780. "Top": { height: math.unit(18055.015625, "meters") },
  781. }
  782. },
  783. {
  784. name: "Nidhoggur",
  785. sides: {
  786. "Side": { height: math.unit(263.20928955078125, "meters") },
  787. "Front": { height: math.unit(263.20928955078125, "meters") },
  788. "Top": { height: math.unit(2153.196044921875, "meters") },
  789. }
  790. },
  791. {
  792. name: "Ragnarok",
  793. sides: {
  794. "Side": { height: math.unit(3152.279541015625, "meters") },
  795. "Front": { height: math.unit(3152.279541015625, "meters") },
  796. "Top": { height: math.unit(18139.9765625, "meters") },
  797. }
  798. },
  799. {
  800. name: "Thanatos",
  801. sides: {
  802. "Side": { height: math.unit(296.2213134765625, "meters") },
  803. "Front": { height: math.unit(296.2213134765625, "meters") },
  804. "Top": { height: math.unit(2266.876953125, "meters") },
  805. }
  806. },
  807. {
  808. name: "Vanguard",
  809. sides: {
  810. "Side": { height: math.unit(296.2213134765625, "meters") },
  811. "Front": { height: math.unit(296.2213134765625, "meters") },
  812. "Top": { height: math.unit(2266.876953125, "meters") },
  813. }
  814. }
  815. ];
  816. results.push({
  817. name: "Eve Online",
  818. constructor: () => makeAutoVehicleGroup(
  819. dataEveOnline,
  820. "Eve Online",
  821. "")
  822. });
  823. results.push({
  824. name: "Helicopters",
  825. constructor: () => makeVehicleGroup([
  826. {
  827. name: "Mil Mi-26",
  828. mass: math.unit(109349, "lbs"),
  829. sides: {
  830. "Side": { height: math.unit(12.2, "meters") },
  831. "Front": { height: math.unit(12.2, "meters") },
  832. "Bottom": { height: math.unit(40.025, "meters") },
  833. }
  834. }
  835. ],
  836. "Helicopters",
  837. "")
  838. })
  839. return results;
  840. }