Section 1
//BunkerMesh (bunker.BunkerMesh)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class BunkerMesh extends Mesh {
private var loader:Loader;
private var onLoadMethod:Function;
public var material:TextureMaterial;
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = BunkerMesh_Bmp;
public function BunkerMesh(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Bunker");
mobile = 3;
addVertex(-251.980309082079, -393.700798584032, 157.480445312453, "2042");
addVertex(-39.3700872192858, 314.960669921828, 157.48032324214, "2051");
addVertex(-39.3700795898912, 393.700812744093, 157.480307983351, "2052");
addVertex(-23.6220422516344, 330.708930419874, 157.478766845656, "2053");
addVertex(-196.850365234422, -236.220451904344, 31.4961847533705, "1030");
addVertex(275.590522216749, 78.7401727904798, 62.9921869506361, "7");
addVertex(228.350562499953, 259.842536376906, 181.10646765132, "8");
addVertex(181.102363037062, 236.220481323195, 15.7480472793104, "13");
addVertex(-39.3700872192858, 236.220496581984, 157.480338500929, "2054");
addVertex(-181.102348877001, -236.220451904344, 15.7481388320448, "1040");
addVertex(-118.110237670946, -236.220451904344, 0.0001068115234375, "1041");
addVertex(251.98032324214, 314.960669921828, 157.480338500929, "18");
addVertex(-39.3700872192858, 78.7401727904798, 157.480384277296, "2067");
addVertex(-118.110230041551, -157.480339599657, 9.1552734375E-5, "1044");
addVertex(-196.850365234422, -157.480339599657, 31.4961694945814, "1037");
addVertex(192.913398193312, 314.960639404249, 47.2441019286634, "23");
addVertex(283.464545654249, 236.220511840773, 165.35434667964, "24");
addVertex(299.212592529249, 314.960639404249, 102.362204956007, "26");
addVertex(299.212592529249, 236.220496581984, 102.362220214796, "27");
addVertex(-181.102348877001, -157.480339599657, 15.7481312026503, "1045");
addVertex(-267.716484619188, -157.480339599657, 94.4882883300306, "1054");
addVertex(-267.716484619188, -236.220451904344, 94.4883035888197, "1055");
addVertex(-283.464531494188, -157.480339599657, 165.354422973585, "1048");
addVertex(-251.980309082079, -157.480339599657, 157.480414794874, "1050");
addVertex(-39.3700872192858, 3.0517578125E-5, 157.480384277296, "2066");
addVertex(-181.102348877001, -181.102348877001, 196.850470947218, "1064");
addVertex(-78.7401662598131, -181.102348877001, 196.850501464796, "1065");
addVertex(-49.2126012573717, -181.102348877001, 167.322944091749, "1066");
addVertex(-228.350548339891, -181.102348877001, 181.106543945265, "1068");
addVertex(-23.6220422516344, -377.952751709032, 157.478888915968, "2089");
addVertex(283.464545654249, 3.0517578125E-5, 165.354377197218, "50");
addVertex(299.212592529249, 78.7401727904798, 102.362258361769, "52");
addVertex(299.212592529249, 3.0517578125E-5, 102.362273620558, "53");
addVertex(-39.3700719604967, -157.480339599657, 157.480414794874, "2075");
addVertex(78.7401651610853, 55.1181024779798, 196.85044042964, "55");
addVertex(-39.3700872192858, -708.661522460985, 157.480506347609, "2104");
addVertex(-39.3700872192858, -944.88198144536, 157.480536865187, "2097");
addVertex(78.7401651610853, 23.6220697631361, 196.850455688429, "58");
addVertex(39.370086120558, 3.0517578125E-5, 157.480384277296, "59");
addVertex(-181.102348877001, -417.322868896532, 196.850516723585, "1085");
addVertex(49.2126001586439, 23.622039245558, 167.322913574171, "62");
addVertex(-181.102348877001, -212.598381591844, 196.850486206007, "1087");
addVertex(-228.350548339891, -212.598381591844, 181.106559204054, "1083");
addVertex(-78.7401662598131, 23.6220697631361, 196.850455688429, "1093");
addVertex(78.7401651610853, -181.102348877001, 196.850501464796, "70");
addVertex(228.350562499953, -212.598381591844, 181.106559204054, "71");
addVertex(-39.3700872192858, -866.14174707036, 157.480521606398, "2103");
addVertex(-275.590538574266, -157.480339599657, 62.9922250976088, "1098");
addVertex(-228.350548339891, 354.330756591749, 181.106452392531, "2124");
addVertex(-251.980309082079, 3.0517578125E-5, 157.480384277296, "1101");
addVertex(-275.590569091844, 3.0517578125E-5, 62.9921983947279, "1095");
addVertex(-23.6220422516344, -614.173241210985, 157.478934692335, "2111");
addVertex(267.716498779249, -157.480339599657, 94.4882883300306, "81");
addVertex(-39.3700719604967, -472.440910888719, 157.480475830031, "2122");
addVertex(-39.3700872192858, 3.0517578125E-5, 6.866455078125E-5, "1108");
addVertex(299.212592529249, -157.480339599657, 102.362304138136, "85");
addVertex(299.212592529249, -236.220451904344, 102.362319396925, "86");
addVertex(-251.980309082079, 402.88022558589, 157.48032324214, "2127");
addVertex(23.6220468749525, 299.212500976515, -31.4960485229967, "1113");
addVertex(39.3700708617689, -157.480339599657, 0.0001068115234375, "1118");
addVertex(23.6220411529066, -141.732292724657, 157.47885839839, "95");
addVertex(-251.980309082079, 314.960669921828, 157.480338500929, "2129");
addVertex(-39.3700872192858, -393.700798584032, 157.480475830031, "2120");
addVertex(39.370086120558, 314.960639404249, 1.52587890625E-5, "1125");
addVertex(62.9921259154798, 393.826667236281, 23.1102213134291, "102");
addVertex(-228.350548339891, 55.1181024779798, 181.106513427687, "2143");
addVertex(15.7480320205214, -244.094475341844, 165.354468749953, "106");
addVertex(251.98032324214, 402.88022558589, 157.48032324214, "108");
addVertex(228.350562499953, 354.330756591749, 181.106452392531, "109");
addVertex(181.102363037062, 315.449256347609, 196.850379394484, "110");
addVertex(-251.980309082079, 78.7401727904798, 157.480384277296, "2142");
addVertex(39.3700784911634, 393.700812744093, 157.480307983351, "112");
addVertex(31.496062683058, 393.700782226515, 125.984237121535, "114");
addVertex(-116.209625793505, 419.97202246089, 23.1102174987318, "115");
addVertex(-228.350548339891, -417.322868896532, 181.106589721632, "2164");
addVertex(-56.446075988817, 409.448829101515, 149.606284545851, "1142");
addVertex(-251.980309082079, -1032.80141503911, 157.480552123976, "2167");
addVertex(-263.763451171922, 409.444251464796, 110.236205505324, "121");
addVertex(-275.590538574266, 314.960639404249, 62.9921488036634, "122");
addVertex(-181.102348877001, 315.449256347609, 196.850379394484, "1139");
addVertex(-228.350548339891, -984.25209863286, 181.106666015578, "2166");
addVertex(-139.150337768602, 420.227576660109, 135.702552246046, "1155");
addVertex(-228.350548339891, -685.039330078172, 181.106635497999, "2180");
addVertex(-31.4960637817858, 393.700782226515, 125.984237121535, "1160");
addVertex(-181.102348877001, 78.7401727904798, 15.7480777968885, "137");
addVertex(-196.850365234422, 236.220481323195, 31.4960855712416, "139");
addVertex(-62.9921270142077, 393.826667236281, 23.1102213134291, "1164");
addVertex(-251.980309082079, -472.440910888719, 157.480460571242, "2191");
addVertex(-23.6220479736803, 299.212500976515, -31.4960485229967, "1169");
addVertex(-228.350548339891, -448.818901611376, 181.106604980421, "2196");
addVertex(-49.2126012573717, 259.842536376906, 167.322867797804, "151");
addVertex(-228.350548339891, -653.543358398485, 181.10662023921, "2193");
addVertex(-78.7401662598131, 259.842536376906, 196.850409912062, "154");
addVertex(-181.102348877001, 259.842536376906, 196.850394653273, "155");
addVertex(-15.7480350265978, 322.834693359328, 165.35434667964, "156");
addVertex(-78.7401662598131, 55.1181024779798, 196.85044042964, "162");
addVertex(-118.110237670946, 3.0517578125E-5, 6.103515625E-5, "163");
addVertex(-251.980309082079, -629.921288085985, 157.48049108882, "2185");
addVertex(-118.110237670946, -629.921288085985, 0.0001678466796875, "2216");
addVertex(-192.913384033251, -629.921288085985, 47.2442621459486, "2211");
addVertex(-192.913384033251, 3.0517578125E-5, 47.2441591491224, "1196");
addVertex(-267.716484619188, 78.7401727904798, 94.4882349242689, "173");
addVertex(-192.913384033251, 78.7401727904798, 47.2441477050306, "174");
addVertex(-192.913384033251, -944.88198144536, 47.2443079223158, "2224");
addVertex(-192.913384033251, -866.14174707036, 47.244296478224, "2226");
addVertex(-299.212578369188, 78.7401727904798, 102.362258361769, "179");
addVertex(-299.212578369188, 3.0517578125E-5, 102.362273620558, "180");
addVertex(-228.350548339891, 23.6220697631361, 181.106513427687, "181");
addVertex(-181.102348877001, 23.6220697631361, 196.85044042964, "182");
addVertex(-192.913384033251, 314.960639404249, 47.2441019286634, "1207");
addVertex(-192.913384033251, -472.440910888719, 47.2442468871595, "2234");
addVertex(-49.2126012573717, 23.622039245558, 167.322913574171, "187");
addVertex(-192.913384033251, 236.220496581984, 47.2441171874525, "1205");
addVertex(-192.913384033251, -236.220451904344, 47.2442087401869, "1214");
addVertex(-15.7480312119005, 86.6141657104017, 165.354407714796, "191");
addVertex(-15.7480312119005, -7.87402351002675, 165.354407714796, "192");
addVertex(-23.6220422516344, -251.968498779344, 157.478888915968, "2203");
addVertex(-192.913384033251, -157.480339599657, 47.2441972960951, "1219");
addVertex(-267.716484619188, 236.220496581984, 94.4882044066908, "1213");
addVertex(-275.590538574266, -236.220451904344, 62.9922365417005, "198");
addVertex(-267.716484619188, -472.440910888719, 94.4883417357923, "2231");
addVertex(-192.913384033251, -708.661522460985, 47.2442774047377, "2212");
addVertex(-283.464531494188, -236.220451904344, 165.354438232374, "204");
addVertex(-299.212578369188, -157.480339599657, 102.362304138136, "207");
addVertex(-299.212578369188, -236.220451904344, 102.362319396925, "208");
addVertex(-49.2126012573717, -212.598381591844, 167.322959350538, "209");
addVertex(-39.3700872192858, -236.220451904344, 157.480445312453, "212");
addVertex(171.110236572218, -1055.46010644536, 81.8655618896009, "1231");
addVertex(-15.7480312119005, -149.606316162157, 165.354438232374, "216");
addVertex(-192.913384033251, -393.700798584032, 47.2442354430677, "2238");
addVertex(-23.6220422516344, -141.732292724657, 157.47885839839, "219");
addVertex(-23.6220479736803, 15.7479862441542, -31.4959874878405, "222");
addVertex(-23.6220479736803, -173.228386474657, -31.4959493408678, "225");
addVertex(39.3700784911634, -1023.62209375005, 157.480536865187, "1250");
addVertex(181.102363037062, -944.88198144536, 15.7482380141737, "231");
addVertex(196.850379394484, -708.661522460985, 31.4962457885267, "1256");
addVertex(47.2440942992689, -1023.62197167974, 0.000213623046875, "233");
addVertex(196.850379394484, -944.88198144536, 31.4962724914076, "235");
addVertex(275.590552734328, -944.88198144536, 62.9923509826185, "237");
addVertex(251.98032324214, -1032.80141503911, 157.480552123976, "238");
addVertex(181.102363037062, -708.661522460985, 15.7482074965956, "1255");
addVertex(78.7401651610853, -959.763695312547, 196.850593017531, "1249");
addVertex(228.350562499953, -921.260155273485, 181.106666015578, "243");
addVertex(228.350562499953, -984.25209863286, 181.106666015578, "244");
addVertex(181.102363037062, -866.14174707036, 15.7482303847792, "251");
addVertex(251.98032324214, -866.14174707036, 157.480536865187, "1276");
addVertex(251.98032324214, -944.88198144536, 157.480536865187, "1279");
addVertex(275.590552734328, -866.14174707036, 62.9923395385267, "256");
addVertex(267.716498779249, -944.88198144536, 94.4883951415541, "1283");
addVertex(196.850379394484, -866.14174707036, 31.496264862013, "1267");
addVertex(283.464545654249, -944.88198144536, 165.354529785109, "263");
addVertex(299.212592529249, -866.14174707036, 102.362403320265, "265");
addVertex(283.464545654249, -866.14174707036, 165.354529785109, "1290");
addVertex(299.212592529249, -944.88198144536, 102.36241094966, "1284");
addVertex(39.370086120558, -944.88198144536, 157.480536865187, "1294");
addVertex(15.7480358352186, -952.75600488286, 165.354560302687, "271");
addVertex(15.7480320205214, -858.26772363286, 165.354545043898, "272");
addVertex(23.6220411529066, -850.39370019536, 157.478965209913, "273");
addVertex(181.102363037062, -921.260155273485, 196.850593017531, "1299");
addVertex(78.7401651610853, -921.260155273485, 196.850593017531, "1300");
addVertex(49.2126001586439, -921.260155273485, 167.323066162062, "1301");
addVertex(181.102363037062, -629.921288085985, 15.748199867201, "279");
addVertex(181.102363037062, -472.440910888719, 15.7481769790174, "280");
addVertex(49.2126001586439, -889.76381738286, 167.323050903273, "1308");
addVertex(275.590552734328, -472.440910888719, 62.9922746886732, "285");
addVertex(267.716498779249, -708.661522460985, 94.4883646239759, "288");
addVertex(192.913398193312, -708.661522460985, 47.2442774047377, "289");
addVertex(283.464545654249, -629.921288085985, 165.354499267531, "291");
addVertex(283.464545654249, -708.661522460985, 165.354499267531, "292");
addVertex(181.102363037062, -889.76381738286, 196.850577758742, "1317");
addVertex(299.212592529249, -708.661522460985, 102.362380432081, "294");
addVertex(299.212592529249, -629.921288085985, 102.362372802687, "295");
addVertex(23.6220411529066, -960.630272460985, 157.478980468703, "1313");
addVertex(181.102363037062, -448.818901611376, 196.850531982374, "298");
addVertex(78.7401651610853, -653.543358398485, 196.850562499953, "300");
addVertex(49.2126001586439, -653.543358398485, 167.323020385695, "302");
addVertex(49.2126001586439, -685.039330078172, 167.323035644484, "303");
addVertex(196.850379394484, -629.921288085985, 31.4962381591322, "1330");
addVertex(275.590522216749, -708.661522460985, 62.9923128356459, "1332");
addVertex(23.6220411529066, -724.409447265672, 157.478949951124, "309");
addVertex(181.102363037062, -393.700798584032, 15.7481693496229, "311");
addVertex(78.7401651610853, -889.76381738286, 196.850593017531, "1319");
addVertex(192.913398193312, -472.440910888719, 47.2442468871595, "317");
addVertex(228.350562499953, -889.76381738286, 181.106650756788, "1316");
addVertex(283.464545654249, -472.440910888719, 165.354468749953, "320");
addVertex(39.370086120558, -866.14174707036, 157.480521606398, "1295");
addVertex(49.2126001586439, -417.322868896532, 167.322989868117, "324");
addVertex(49.2126001586439, -448.818901611376, 167.323005126906, "325");
addVertex(39.3700708617689, -472.440910888719, 157.480475830031, "326");
addVertex(251.98032324214, -708.661522460985, 157.480506347609, "1349");
addVertex(267.716498779249, -629.921288085985, 94.4883569945814, "1359");
addVertex(23.6220468749525, -929.133812500047, -31.4958501587389, "338");
addVertex(181.102363037062, -653.543358398485, 196.850547241163, "1364");
addVertex(62.9921259154798, -1023.74794824224, 23.1104540099623, "343");
addVertex(31.496062683058, -1023.62209375005, 125.98446600337, "344");
addVertex(181.102363037062, -685.039330078172, 196.850562499953, "1372");
addVertex(78.7401651610853, -685.039330078172, 196.850562499953, "1373");
addVertex(228.350562499953, -653.543358398485, 181.10662023921, "1376");
addVertex(228.350562499953, -685.039330078172, 181.106635497999, "1378");
addVertex(-49.2126012573717, -921.260155273485, 167.323066162062, "363");
addVertex(-181.102348877001, -708.661522460985, 15.7482074965956, "367");
addVertex(-275.590538574266, -866.14174707036, 62.9923395385267, "372");
addVertex(267.716498779249, -866.14174707036, 94.4883875121595, "1400");
addVertex(-283.464531494188, -944.88198144536, 165.354529785109, "377");
addVertex(-283.464531494188, -866.14174707036, 165.354529785109, "378");
addVertex(-299.212578369188, -944.88198144536, 102.36241094966, "379");
addVertex(-181.102348877001, -889.76381738286, 196.850577758742, "384");
addVertex(-23.6220422516344, -960.630272460985, 157.478980468703, "387");
addVertex(118.110236572218, -236.220451904344, 0.0001068115234375, "1416");
addVertex(196.850379394484, -393.700798584032, 31.4962114562513, "1417");
addVertex(-181.102348877001, -472.440910888719, 15.7481769790174, "395");
addVertex(-181.102348877001, -629.921288085985, 15.748199867201, "396");
addVertex(-196.850365234422, -472.440910888719, 31.4962190856459, "397");
addVertex(-275.590538574266, -472.440910888719, 62.9922746886732, "399");
addVertex(267.716498779249, -393.700798584032, 94.4883264770033, "1419");
addVertex(39.370086120558, -708.661522460985, 157.480506347609, "1411");
addVertex(196.850379394484, -472.440910888719, 31.4962190856459, "1429");
addVertex(-251.980309082079, -708.661522460985, 157.480506347609, "406");
addVertex(-283.464531494188, -629.921288085985, 165.354499267531, "408");
addVertex(118.110236572218, -393.700798584032, 0.0001373291015625, "1428");
addVertex(275.590552734328, -393.700798584032, 62.9922632445814, "1420");
addVertex(267.716498779249, -472.440910888719, 94.4883417357923, "1439");
addVertex(-78.7401662598131, -653.543358398485, 196.850562499953, "416");
addVertex(-39.3700872192858, -629.921288085985, 157.48049108882, "418");
addVertex(-15.7480312119005, -716.535423828172, 165.354529785109, "421");
addVertex(299.212592529249, -393.700798584032, 102.362342285109, "1446");
addVertex(283.464545654249, -393.700798584032, 165.354468749953, "1447");
addVertex(251.98032324214, -472.440910888719, 157.480460571242, "1440");
addVertex(-118.110237670946, -393.700798584032, 0.0001373291015625, "425");
addVertex(299.212592529249, -472.440910888719, 102.362349914503, "1442");
addVertex(-267.716484619188, -393.700798584032, 94.4883264770033, "429");
addVertex(228.350562499953, -448.818901611376, 181.106604980421, "1455");
addVertex(78.7401651610853, -448.818901611376, 196.850531982374, "1458");
addVertex(-299.212578369188, -472.440910888719, 102.362349914503, "437");
addVertex(78.7401651610853, -417.322868896532, 196.850531982374, "1467");
addVertex(39.370086120558, -393.700798584032, 157.480475830031, "1453");
addVertex(-23.6220422516344, -488.188957763719, 157.478919433546, "447");
addVertex(23.6220411529066, -377.952751709032, 157.478888915968, "1472");
addVertex(-39.3700872192858, -944.88198144536, 0.00022125244140625, "450");
addVertex(181.102363037062, -417.322868896532, 196.850516723585, "1476");
addVertex(-39.3700719604967, -472.440910888719, 0.000152587890625, "454");
addVertex(-139.150337768602, -1050.14882714849, 135.702796386671, "456");
addVertex(181.102363037062, 314.960639404249, 15.7480320205214, "462");
addVertex(39.370086120558, -629.921288085985, 157.48049108882, "1487");
addVertex(228.350562499953, -417.322868896532, 181.106589721632, "1480");
addVertex(275.590552734328, 314.960639404249, 62.9921488036634, "467");
addVertex(275.590583251906, -629.921288085985, 62.9923013915541, "1492");
addVertex(251.98032324214, -629.921288085985, 157.48049108882, "1498");
addVertex(78.7401651610853, 329.842414306593, 196.850379394484, "476");
addVertex(181.102363037062, 78.7401727904798, 15.7480777968885, "479");
addVertex(275.590552734328, 236.220496581984, 62.992156433058, "484");
addVertex(23.6220468749525, -456.692864013719, -31.4959035645006, "1509");
addVertex(23.6220468749525, -173.228386474657, -31.4959493408678, "1508");
addVertex(196.850379394484, 236.220481323195, 31.4960855712416, "494");
addVertex(118.110236572218, 314.960639404249, 0, "497");
addVertex(196.850379394484, 314.960639404249, 31.4960664977552, "499");
addVertex(23.6220411529066, -614.173241210985, 157.478934692335, "1524");
addVertex(15.7480320205214, -622.047264648485, 165.35451452632, "1525");
addVertex(267.716498779249, 314.960639404249, 94.4881891479017, "502");
addVertex(283.464545654249, 314.960669921828, 165.354331420851, "503");
addVertex(15.7480320205214, -480.314934326219, 165.354499267531, "1530");
addVertex(15.7480320205214, -385.826775146532, 165.354499267531, "1532");
addVertex(251.98032324214, 236.220511840773, 157.480353759718, "510");
addVertex(263.763465331984, -1039.36562402349, 110.23643438716, "1537");
addVertex(78.7401651610853, 291.338843749953, 196.850409912062, "516");
addVertex(181.102363037062, 291.338843749953, 196.850379394484, "517");
addVertex(139.150351928663, -1050.14882714849, 135.702796386671, "1542");
addVertex(49.2126001586439, 259.842536376906, 167.322867797804, "521");
addVertex(49.2126001586439, 291.338843749953, 167.322852539015, "522");
addVertex(181.102363037062, -945.370506835985, 196.850593017531, "1547");
addVertex(181.102363037062, 259.842536376906, 196.850394653273, "529");
addVertex(181.102363037062, 55.1181024779798, 196.85044042964, "533");
addVertex(56.4460748900892, -1039.37014062505, 149.606513427687, "1559");
addVertex(181.102363037062, 3.0517578125E-5, 15.7480930556776, "537");
addVertex(181.102363037062, -157.480339599657, 15.7481312026503, "538");
addVertex(116.209624694777, -1049.89333398442, 23.1104578246595, "1563");
addVertex(196.850379394484, -157.480339599657, 31.4961694945814, "541");
addVertex(275.590583251906, 3.0517578125E-5, 62.9921983947279, "543");
addVertex(196.850379394484, 3.0517578125E-5, 31.496135162306, "544");
addVertex(118.110244201613, 236.220466064406, 1.52587890625E-5, "1570");
addVertex(39.370086120558, 3.0517578125E-5, 6.866455078125E-5, "1575");
addVertex(47.2440942992689, 393.700751708937, -1.52587890625E-5, "1568");
addVertex(196.850379394484, 78.7401727904798, 31.4961160888197, "556");
addVertex(251.98032324214, 78.7401727904798, 157.480384277296, "557");
addVertex(283.464545654249, 78.7401727904798, 165.354377197218, "559");
addVertex(118.110236572218, 3.0517578125E-5, 6.103515625E-5, "1585");
addVertex(267.716498779249, 3.0517578125E-5, 94.4882578124525, "565");
addVertex(251.98032324214, 3.0517578125E-5, 157.480384277296, "566");
addVertex(181.102363037062, -181.102348877001, 196.850470947218, "571");
addVertex(181.102363037062, 23.6220697631361, 196.85044042964, "572");
addVertex(118.110236572218, -708.661522460985, 0.00017547607421875, "1601");
addVertex(228.350562499953, 55.1181024779798, 181.106513427687, "578");
addVertex(49.2126001586439, 55.1180719604017, 167.322913574171, "579");
addVertex(118.110244201613, -866.14174707036, 0.0001983642578125, "1604");
addVertex(15.7480320205214, -716.535423828172, 165.354529785109, "1618");
addVertex(-23.6220422516344, -724.409447265672, 157.478949951124, "1621");
addVertex(-23.6220422516344, -850.39370019536, 157.478965209913, "1622");
addVertex(267.716498779249, 78.7401727904798, 94.4882349242689, "601");
addVertex(78.7401651610853, 259.842536376906, 196.850409912062, "606");
addVertex(196.850379394484, -236.220451904344, 31.4961847533705, "609");
addVertex(118.110236572218, -629.921288085985, 0.0001678466796875, "1636");
addVertex(275.590552734328, -236.220451904344, 62.9922365417005, "613");
addVertex(192.913398193312, -629.921288085985, 47.2442621459486, "1638");
addVertex(275.590552734328, -157.480339599657, 62.9922250976088, "616");
addVertex(23.6220411529066, -488.188957763719, 157.478919433546, "1625");
addVertex(181.102363037062, -236.220451904344, 15.7481388320448, "619");
addVertex(192.913398193312, -866.14174707036, 47.244296478224, "1647");
addVertex(118.110228942824, -157.480339599657, 9.1552734375E-5, "624");
addVertex(118.110236572218, -944.88198144536, 0.00020599365234375, "1649");
addVertex(251.98032324214, -157.480339599657, 157.480414794874, "626");
addVertex(283.464545654249, -157.480339599657, 165.354422973585, "628");
addVertex(192.913398193312, -944.88198144536, 47.2443079223158, "1654");
addVertex(267.716498779249, -236.220451904344, 94.4883035888197, "634");
addVertex(283.464545654249, -236.220451904344, 165.354438232374, "636");
addVertex(118.110228942824, -472.440910888719, 0.0001373291015625, "1663");
addVertex(49.2126001586439, -181.102348877001, 167.322944091749, "640");
addVertex(192.913398193312, -393.700798584032, 47.2442354430677, "1668");
addVertex(49.2126001586439, -212.598381591844, 167.322959350538, "646");
addVertex(-181.102348877001, -944.88198144536, 15.7482380141737, "1673");
addVertex(-171.110222412157, -1055.46010644536, 81.8655618896009, "1674");
addVertex(78.7401651610853, -212.598381591844, 196.850501464796, "654");
addVertex(181.102363037062, -212.598381591844, 196.850486206007, "655");
addVertex(-181.102348877001, -945.370506835985, 196.850593017531, "1682");
addVertex(-275.590538574266, -944.88198144536, 62.9923509826185, "1678");
addVertex(-78.7401662598131, -959.763695312547, 196.850593017531, "1687");
addVertex(-181.102348877001, -866.14174707036, 15.7482303847792, "1689");
addVertex(-196.850365234422, -866.14174707036, 31.496264862013, "1696");
addVertex(23.6220468749525, 15.7479862441542, -31.4959874878405, "676");
addVertex(15.7480358352186, 322.834693359328, 165.35434667964, "677");
addVertex(15.7480320205214, 228.346473144484, 165.354377197218, "680");
addVertex(-15.7480312119005, 228.346473144484, 165.354377197218, "682");
addVertex(15.7480320205214, 86.6141657104017, 165.354407714796, "686");
addVertex(15.7480320205214, -7.87402351002675, 165.354407714796, "687");
addVertex(23.6220411529066, -15.7480464706896, 157.478827880812, "688");
addVertex(15.7480320205214, -149.606316162157, 165.354438232374, "691");
addVertex(-267.716484619188, -944.88198144536, 94.4883951415541, "1716");
addVertex(-196.850365234422, -944.88198144536, 31.4962724914076, "1710");
addVertex(-251.980309082079, -944.88198144536, 157.480536865187, "1711");
addVertex(-15.7480312119005, -244.094475341844, 165.354468749953, "696");
addVertex(-251.980309082079, -866.14174707036, 157.480536865187, "1721");
addVertex(263.763465331984, 409.444251464796, 110.236205505324, "700");
addVertex(-78.7401662598131, -921.260155273485, 196.850593017531, "1727");
addVertex(-267.716484619188, -866.14174707036, 94.4883875121595, "1720");
addVertex(-181.102348877001, -921.260155273485, 196.850593017531, "1729");
addVertex(-299.212578369188, -866.14174707036, 102.362403320265, "1724");
addVertex(-228.350548339891, -921.260155273485, 181.106666015578, "1735");
addVertex(-49.2126012573717, -889.76381738286, 167.323050903273, "1739");
addVertex(139.150351928663, 420.227576660109, 135.702552246046, "708");
addVertex(171.110236572218, 425.53891699214, 81.8653177489759, "720");
addVertex(-228.350548339891, -889.76381738286, 181.106650756788, "1745");
addVertex(56.4460748900892, 409.448829101515, 149.606284545851, "723");
addVertex(-15.7480312119005, -858.26772363286, 165.354545043898, "1740");
addVertex(-78.7401662598131, -889.76381738286, 196.850593017531, "1749");
addVertex(116.209624694777, 419.97202246089, 23.1102174987318, "726");
addVertex(23.6220411529066, 94.4881891479017, 157.478797363234, "732");
addVertex(-275.590569091844, -629.921288085985, 62.9923013915541, "1758");
addVertex(-23.6220422516344, 94.4881891479017, 157.478797363234, "735");
addVertex(-23.6220422516344, 220.472449706984, 157.478797363234, "736");
addVertex(-275.590508056688, -708.661522460985, 62.9923128356459, "1761");
addVertex(-196.850365234422, -629.921288085985, 31.4962381591322, "1759");
addVertex(-118.110237670946, -708.661522460985, 0.00017547607421875, "1769");
addVertex(-196.850365234422, -708.661522460985, 31.4962457885267, "1771");
addVertex(-283.464531494188, -708.661522460985, 165.354499267531, "1774");
addVertex(251.98032324214, -236.220451904344, 157.480414794874, "751");
addVertex(-299.212578369188, -708.661522460985, 102.362380432081, "1778");
addVertex(23.6220411529066, -251.968498779344, 157.478888915968, "757");
addVertex(-299.212578369188, -629.921288085985, 102.362372802687, "1784");
addVertex(23.6220411529066, 330.708930419874, 157.478766845656, "762");
addVertex(39.370086120558, 314.960669921828, 157.48032324214, "763");
addVertex(39.370086120558, 236.220496581984, 157.480338500929, "764");
addVertex(23.6220411529066, 220.472449706984, 157.478797363234, "765");
addVertex(-181.102348877001, -685.039330078172, 196.850562499953, "1792");
addVertex(39.370086120558, 78.7401727904798, 157.480384277296, "770");
addVertex(-49.2126012573717, -685.039330078172, 167.323035644484, "1789");
addVertex(-49.2126012573717, -653.543358398485, 167.323020385695, "1801");
addVertex(-181.102348877001, -448.818901611376, 196.850531982374, "1786");
addVertex(-15.7480312119005, -622.047264648485, 165.35451452632, "1807");
addVertex(39.370086120558, -236.220451904344, 157.480445312453, "786");
addVertex(-181.102348877001, -653.543358398485, 196.850547241163, "1803");
addVertex(39.3700708617689, -157.480339599657, 157.480414794874, "788");
addVertex(251.98032324214, -393.700798584032, 157.480445312453, "789");
addVertex(-267.716484619188, -708.661522460985, 94.4883646239759, "1816");
addVertex(228.350562499953, 291.338843749953, 181.106452392531, "798");
addVertex(-78.7401662598131, -685.039330078172, 196.850562499953, "1829");
addVertex(-196.850365234422, -393.700798584032, 31.4962114562513, "1830");
addVertex(-181.102348877001, -393.700798584032, 15.7481693496229, "1837");
addVertex(228.350562499953, 23.6220697631361, 181.106513427687, "823");
addVertex(228.350562499953, -181.102348877001, 181.106543945265, "826");
addVertex(192.913398193312, 3.0517578125E-5, 47.2441591491224, "831");
addVertex(-283.464531494188, -393.700798584032, 165.354468749953, "1856");
addVertex(-299.212578369188, -393.700798584032, 102.362342285109, "1857");
addVertex(-49.2126012573717, -448.818901611376, 167.323005126906, "1859");
addVertex(192.913398193312, 78.7401727904798, 47.2441477050306, "836");
addVertex(118.110236572218, 78.7401727904798, 4.57763671875E-5, "839");
addVertex(-283.464531494188, -472.440910888719, 165.354468749953, "1847");
addVertex(-49.2126012573717, -417.322868896532, 167.322989868117, "1865");
addVertex(267.716498779249, 236.220496581984, 94.4882044066908, "844");
addVertex(192.913398193312, 236.220496581984, 47.2441171874525, "849");
addVertex(-15.7480312119005, -480.314934326219, 165.354499267531, "1878");
addVertex(-15.7480312119005, -385.826775146532, 165.354499267531, "1882");
addVertex(192.913398193312, -157.480339599657, 47.2441972960951, "860");
addVertex(192.913398193312, -236.220451904344, 47.2442087401869, "861");
addVertex(-78.7401662598131, -448.818901611376, 196.850531982374, "1886");
addVertex(-267.716484619188, -629.921288085985, 94.4883569945814, "1894");
addVertex(-171.110222412157, 425.53891699214, 81.8653177489759, "871");
addVertex(-23.6220479736803, -645.669334960985, -31.495880676317, "1901");
addVertex(-78.7401662598131, 291.338843749953, 196.850409912062, "881");
addVertex(23.6220468749525, -645.669334960985, -31.495880676317, "1906");
addVertex(-78.7401662598131, 329.842414306593, 196.850379394484, "883");
addVertex(39.370086120558, -629.921288085985, 0.00017547607421875, "1910");
addVertex(39.3700708617689, -472.440910888719, 0.000152587890625, "1917");
addVertex(-23.6220479736803, -456.692864013719, -31.4959035645006, "1919");
addVertex(-196.850365234422, 314.960639404249, 31.4960664977552, "897");
addVertex(-181.102348877001, 236.220481323195, 15.7480472793104, "900");
addVertex(-39.3700719604967, -157.480339599657, 0.0001068115234375, "1925");
addVertex(-47.2440953979967, -1023.62197167974, 0.000213623046875, "1926");
addVertex(-181.102348877001, 314.960639404249, 15.7480320205214, "905");
addVertex(-283.464531494188, 314.960669921828, 165.354331420851, "909");
addVertex(-267.716484619188, 314.960639404249, 94.4881891479017, "910");
addVertex(-299.212578369188, 314.960639404249, 102.362204956007, "913");
addVertex(-299.212578369188, 236.220496581984, 102.362220214796, "917");
addVertex(-283.464531494188, 236.220511840773, 165.35434667964, "918");
addVertex(-251.980309082079, 236.220511840773, 157.480353759718, "920");
addVertex(-228.350548339891, 291.338843749953, 181.106452392531, "923");
addVertex(-181.102348877001, 291.338843749953, 196.850379394484, "924");
addVertex(-263.763451171922, -1039.36562402349, 110.23643438716, "1933");
addVertex(-39.3700795898912, -1023.62209375005, 157.480536865187, "1954");
addVertex(-49.2126012573717, 291.338843749953, 167.322852539015, "931");
addVertex(-116.209625793505, -1049.89333398442, 23.1104578246595, "1960");
addVertex(-228.350548339891, 259.842536376906, 181.10646765132, "940");
addVertex(-31.4960637817858, -1023.62209375005, 125.98446600337, "1965");
addVertex(-62.9921270142077, -1023.74794824224, 23.1104540099623, "1966");
addVertex(-56.446075988817, -1039.37014062505, 149.606513427687, "1969");
addVertex(-181.102348877001, 3.0517578125E-5, 15.7480930556776, "948");
addVertex(-196.850365234422, 3.0517578125E-5, 31.496135162306, "951");
addVertex(-118.110237670946, 314.960639404249, 0, "1978");
addVertex(-118.11024530034, 236.220466064406, 1.52587890625E-5, "1979");
addVertex(-196.850365234422, 78.7401727904798, 31.4961160888197, "956");
addVertex(-39.3700872192858, 314.960639404249, 1.52587890625E-5, "1981");
addVertex(-47.2440953979967, 393.700751708937, -1.52587890625E-5, "1975");
addVertex(-118.110237670946, 78.7401727904798, 4.57763671875E-5, "965");
addVertex(-283.464531494188, 78.7401727904798, 165.354377197218, "969");
addVertex(-118.110230041551, -472.440910888719, 0.0001373291015625, "2000");
addVertex(-39.3700872192858, -629.921288085985, 0.00017547607421875, "2002");
addVertex(-283.464531494188, 3.0517578125E-5, 165.354377197218, "979");
addVertex(-267.716484619188, 3.0517578125E-5, 94.4882578124525, "981");
addVertex(-49.2126012573717, 55.1180719604017, 167.322913574171, "985");
addVertex(-181.102348877001, 55.1181024779798, 196.85044042964, "987");
addVertex(-118.110237670946, -944.88198144536, 0.00020599365234375, "2013");
addVertex(-118.11024530034, -866.14174707036, 0.0001983642578125, "2009");
addVertex(39.370086120558, -944.88198144536, 0.00022125244140625, "2019");
addVertex(-23.6220479736803, -929.133812500047, -31.4958501587389, "2021");
addVertex(-15.7480350265978, -952.75600488286, 165.354560302687, "2022");
addVertex(-23.6220422516344, -15.7480464706896, 157.478827880812, "1004");
addVertex(-275.590508056688, 78.7401727904798, 62.9921869506361, "1010");
addVertex(-275.590538574266, 236.220496581984, 62.992156433058, "1013");
addVertex(-251.980309082079, -236.220451904344, 157.480414794874, "2041");
addVertex(-275.590538574266, -393.700798584032, 62.9922632445814, "2034");
addVertex(-78.7401662598131, -212.598381591844, 196.850501464796, "2046");
addVertex(-78.7401662598131, -417.322868896532, 196.850531982374, "2047");
addFace(["1349", "1498", "291", "292"], "0");
setUVsToFace(new Point(0.327172577381134, 0.85982084274292), new Point(0.283411085605621, 0.85982084274292), new Point(0.283411085605621, 0.841784000396729), "0");
addFace(["624", "1118", "1917", "1663", "1428", "1416"], "1");
setUVsToFace(new Point(0.482375987661958, 0.00100000827712014), new Point(0.482375987661958, 0.044761471181633), new Point(0.307330191135406, 0.0447614714503288), "1");
addFace(["1004", "735", "191", "192"], "2");
setUVsToFace(new Point(0.473787426948547, 0.530651211738586), new Point(0.412521362304688, 0.530651211738586), new Point(0.416897491313937, 0.524461785263002), "2");
addFace(["1801", "416", "1886", "1859", "2122", "418"], "3");
setUVsToFace(new Point(0.206678840784189, 0.206472806003681), new Point(0.206678852438927, 0.183264791965485), new Point(0.320458650588989, 0.183264836668968), "3");
addFace(["1055", "198", "1030", "1214"], "4");
setUVsToFace(new Point(0.740647435188293, 0.649797856807709), new Point(0.745176315307617, 0.63233208656311), new Point(0.791980028152466, 0.637889385223389), "4");
addFace(["1508", "1118", "1925", "225"], "5");
setUVsToFace(new Point(0.0754395789126364, 0.150258526206017), new Point(0.0841918811202049, 0.16982926428318), new Point(0.0404304340481758, 0.16982926428318), "5");
addFace(["450", "2002", "1769", "2009", "2013", "1926"], "6");
setUVsToFace(new Point(0.0447613671422005, 0.0885229408740997), new Point(0.219807287965016, 0.0885229239133397), new Point(0.176045773837761, 0.132284390126723), "6");
addFace(["1856", "1857", "429", "2042"], "7");
setUVsToFace(new Point(0.0835447907447815, 0.983741879463196), new Point(0.0474685318768024, 0.982876837253571), new Point(0.0479010455310345, 0.964838743209839), "7");
addFace(["251", "1255", "1601", "1604"], "8");
setUVsToFace(new Point(0.00100001704413444, 0.802795469760895), new Point(0.088522898266094, 0.802795584599501), new Point(0.088522881269455, 0.838882148265839), "8");
addFace(["1621", "418", "2122", "447", "2111"], "9");
setUVsToFace(new Point(0.62241277001724, 0.170902997255325), new Point(0.569899020398594, 0.17965529216988), new Point(0.48237606883049, 0.179655283689499), "9");
addFace(["1965", "1969", "1559", "344"], "10");
setUVsToFace(new Point(0.94523012638092, 0.490400493144989), new Point(0.931363642215729, 0.47462210059166), new Point(0.994105840540322, 0.47462210059166), "10");
addFace(["1618", "309", "1621", "421"], "11");
setUVsToFace(new Point(0.0806185156106949, 0.841589212417603), new Point(0.0849946588277817, 0.847778677940369), new Point(0.0587377846240997, 0.847778677940369), "11");
addFace(["786", "788", "640", "646"], "12");
setUVsToFace(new Point(0.351091653108597, 0.247860297560692), new Point(0.307330203976972, 0.247860291564141), new Point(0.320458650588989, 0.2401242852211), "12");
addFace(["646", "654", "1467", "324", "1453", "786"], "13");
setUVsToFace(new Point(0.337963223457336, 0.2401242852211), new Point(0.337963223457336, 0.216916292905807), new Point(0.451742879258619, 0.216916474019023), "13");
addFace(["1301", "1308", "1316", "243"], "14");
setUVsToFace(new Point(0.901176273822784, 0.271845817565918), new Point(0.901176273822784, 0.289350569248199), new Point(0.801616668701172, 0.289350569248199), "14");
addFace(["1376", "302", "300", "1364"], "15");
setUVsToFace(new Point(0.900746097964365, 0.867333976507163), new Point(0.800962626934052, 0.871085464954376), new Point(0.818003952503204, 0.85533082485199), "15");
addFace(["225", "1925", "454", "1919"], "16");
setUVsToFace(new Point(0.303884416309922, 0.576970097286779), new Point(0.295132100582123, 0.557399332523346), new Point(0.470177918672562, 0.557399272918701), "16");
addFace(["416", "1801", "2193", "1803"], "17");
setUVsToFace(new Point(0.719622594261869, 0.933119081319328), new Point(0.702004671096802, 0.918012142181396), new Point(0.801858603954315, 0.918033421039581), "17");
addFace(["940", "920", "2129", "923"], "18");
setUVsToFace(new Point(0.0804961621761322, 0.27184596657753), new Point(0.0936246251405307, 0.290417015552521), new Point(0.0498631037771702, 0.290417015552521), "18");
addFace(["1716", "1678", "1710", "2224"], "19");
setUVsToFace(new Point(0.757980644702911, 0.702461421489716), new Point(0.76250946521759, 0.684995710849762), new Point(0.809313297271729, 0.690552949905396), "19");
addFace(["1065", "1066", "1068", "1064"], "20");
setUVsToFace(new Point(0.821889375682945, 0.808075876407387), new Point(0.804271399974823, 0.792968928813934), new Point(0.904125273227692, 0.792990207672119), "20");
addFace(["1279", "238", "244", "243", "1316", "1276"], "22");
setUVsToFace(new Point(0.0498630329966545, 0.26913857460022), new Point(0.00100000004749745, 0.269138544797897), new Point(0.0279822831770206, 0.250567504272655), "22");
addFace(["831", "1585", "537", "544"], "23");
setUVsToFace(new Point(0.9093998670578, 0.655950248241425), new Point(0.958552479743958, 0.657290637493134), new Point(0.923983752727509, 0.667646884918213), "23");
addFace(["95", "688", "788", "786", "757"], "24");
setUVsToFace(new Point(0.298577964305878, 0.144646123051643), new Point(0.228559628129005, 0.144646123051643), new Point(0.307330280542374, 0.13589383661747), "24");
addFace(["871", "1155", "2127", "121"], "25");
setUVsToFace(new Point(0.412646225807481, 0.749294451160126), new Point(0.42380952835083, 0.782379567623138), new Point(0.3592209815979, 0.782300770282745), "25");
addFace(["1919", "1509", "1508", "225"], "26");
setUVsToFace(new Point(0.791413486003876, 0.243172988295555), new Point(0.791413486003876, 0.216916128993034), new Point(0.948954641819, 0.216916128993034), "26");
addFace(["1601", "289", "1638", "1636"], "27");
setUVsToFace(new Point(0.0912300050258636, 0.535121440887451), new Point(0.140400841832161, 0.535121440887451), new Point(0.140400826931, 0.578882932662964), "27");
addFace(["696", "2203", "219", "216"], "28");
setUVsToFace(new Point(0.692468702793121, 0.340494990348816), new Point(0.696844837449171, 0.346684395297168), new Point(0.635578751564026, 0.34668442606926), "28");
addFace(["2000", "454", "1925", "1044", "1041", "425"], "29");
setUVsToFace(new Point(0.307330191135406, 0.132284387946129), new Point(0.307330191135406, 0.0885229259729385), new Point(0.482375987661958, 0.0885229686168283), "29");
addFace(["109", "108", "18", "798"], "30");
setUVsToFace(new Point(0.771927177906036, 0.250567704439163), new Point(0.798909544944763, 0.269138753414154), new Point(0.75004647796264, 0.269138753414154), "30");
addFace(["110", "708", "108", "109"], "31");
setUVsToFace(new Point(0.127934562719144, 0.790737052675486), new Point(0.0912299975752831, 0.72954273223877), new Point(0.155809864401817, 0.730602860450745), "31");
addFace(["609", "619", "311", "1417"], "32");
setUVsToFace(new Point(0.756729066371918, 0.565507292747498), new Point(0.756729066371918, 0.577884793281555), new Point(0.669206261634827, 0.577884793281555), "32");
addFace(["786", "1453", "1625", "1472", "757"], "33");
setUVsToFace(new Point(0.351091682910919, 0.135893821716309), new Point(0.438614638719235, 0.135893821716309), new Point(0.491128369136018, 0.144646123051643), "33");
addFace(["948", "163", "1196", "951"], "34");
setUVsToFace(new Point(0.719439804553986, 0.687052607536316), new Point(0.75437152300838, 0.696110492218904), new Point(0.705303013324738, 0.699285864830017), "34");
addFace(["379", "1716", "1720", "1724"], "35");
setUVsToFace(new Point(0.402122735977173, 0.810095250606537), new Point(0.402122735977173, 0.828138589859009), new Point(0.358361214399338, 0.828138649463654), "35");
addFace(["1419", "1420", "1417", "1668"], "36");
setUVsToFace(new Point(0.710578143596649, 0.732847094535828), new Point(0.715107023715973, 0.715381443500519), new Point(0.761910736560822, 0.720938682556152), "36");
addFace(["1476", "1467", "654", "655"], "37");
setUVsToFace(new Point(0.906095743179321, 0.0614993274211884), new Point(0.906095743179321, 0.118389219045639), new Point(0.792315781116486, 0.118389219045639), "37");
addFace(["1299", "243", "244", "1547"], "38");
setUVsToFace(new Point(0.987573146820068, 0.18326473236084), new Point(0.987573146820068, 0.210943356156349), new Point(0.952564060688019, 0.210943356156349), "38");
addFace(["23", "849", "844", "502"], "39");
setUVsToFace(new Point(0.582798480987549, 0.336885571479797), new Point(0.582798480987549, 0.293124109506607), new Point(0.631969332695007, 0.293124109506607), "39");
addFace(["2075", "1004", "219", "2203", "212"], "40");
setUVsToFace(new Point(0.30733027012377, 0.179655290110273), new Point(0.228559666850792, 0.170902997255325), new Point(0.298577964305878, 0.170902997255325), "40");
addFace(["502", "18", "108", "700", "467"], "41");
setUVsToFace(new Point(0.455528121989806, 0.792969525874559), new Point(0.491609752178192, 0.792970716953278), new Point(0.491608172655106, 0.841833770275116), "41");
addFace(["1400", "1276", "1349", "288"], "42");
setUVsToFace(new Point(0.00100000004749745, 0.628041923046112), new Point(0.00100000004749745, 0.591956913471222), new Point(0.088522881269455, 0.591956913471222), "42");
addFace(["1816", "1761", "1771", "2212"], "43");
setUVsToFace(new Point(0.81330543756485, 0.77164089679718), new Point(0.817834046433181, 0.754175175519103), new Point(0.864637970924377, 0.75973242521286), "43");
addFace(["900", "137", "965", "1979"], "44");
setUVsToFace(new Point(0.875923275947571, 0.535121500492096), new Point(0.963446089165031, 0.535121436516753), new Point(0.963446140289307, 0.57120805978775), "44");
addFace(["2167", "456", "1674", "1933"], "45");
setUVsToFace(new Point(0.140186093216145, 0.0563425938506041), new Point(0.204732730984688, 0.0538562797009945), new Point(0.194819614291191, 0.0873409062623978), "45");
addFace(["494", "484", "844", "849"], "46");
setUVsToFace(new Point(0.648875296115875, 0.865313351154327), new Point(0.602311730384827, 0.872615158557892), new Point(0.597133636474609, 0.85533082485199), "46");
addFace(["521", "764", "763", "522"], "47");
setUVsToFace(new Point(0.0753944937601016, 0.240124391274059), new Point(0.0885229110717773, 0.247860416769981), new Point(0.0447614714503288, 0.247860431671143), "47");
addFace(["1524", "326", "1487", "1411", "309"], "48");
setUVsToFace(new Point(0.561146637095173, 0.144646123051643), new Point(0.482375970701175, 0.135893830196696), new Point(0.569899022579193, 0.135893821716309), "48");
addFace(["628", "636", "751", "626"], "49");
setUVsToFace(new Point(0.953851103782654, 0.897118330001831), new Point(0.997612535953522, 0.897118330001831), new Point(0.997612595558167, 0.915155291557312), "49");
addFace(["764", "770", "765", "762"], "50");
setUVsToFace(new Point(0.0885229110717773, 0.135893821716309), new Point(0.17604582382815, 0.135893821716309), new Point(0.0972752124071121, 0.144646123051643), "50");
addFace(["789", "1480", "71", "826", "626", "751"], "51");
setUVsToFace(new Point(0.356193244457245, 0.269138634204865), new Point(0.343064814805984, 0.250567585229874), new Point(0.456844657659531, 0.250567615032196), "51");
addFace(["1682", "456", "2167", "2166"], "52");
setUVsToFace(new Point(0.229885609998651, 0.743366052342978), new Point(0.193181052803993, 0.682171761989594), new Point(0.257760941982269, 0.683231949806213), "52");
addFace(["565", "543", "616", "81"], "53");
setUVsToFace(new Point(0.997228145599365, 0.0370850339531898), new Point(0.997228145599365, 0.055128352393864), new Point(0.909705102443695, 0.0551283396780491), "53");
addFace(["1575", "1125", "1113", "676"], "54");
setUVsToFace(new Point(0.295132100582123, 0.535121440887451), new Point(0.470177918672562, 0.535121500492096), new Point(0.461425602436066, 0.554692208766937), "54");
addFace(["292", "294", "288", "1349"], "55");
setUVsToFace(new Point(0.897738039493561, 0.995746076107025), new Point(0.861661732196808, 0.9948810338974), new Point(0.86209423585712, 0.976842953643431), "55");
addFace(["2196", "1859", "1886", "1786"], "56");
setUVsToFace(new Point(0.800309896469116, 0.909121453762054), new Point(0.700526475906372, 0.912872970104218), new Point(0.717567849622276, 0.89711836294034), "56");
addFace(["708", "110", "476", "723"], "57");
setUVsToFace(new Point(0.898690044879913, 0.340095460414886), new Point(0.827759802341461, 0.347744166851044), new Point(0.847183611829417, 0.293677914137161), "57");
addFace(["1933", "1674", "1710", "1678"], "58");
setUVsToFace(new Point(0.757819890975952, 0.414122819900513), new Point(0.766026198863983, 0.468094170093536), new Point(0.697157319858665, 0.462932640943056), "58");
addFace(["883", "1139", "1155", "1142"], "59");
setUVsToFace(new Point(0.673054337608828, 0.414117091244546), new Point(0.694484293460846, 0.467420041561127), new Point(0.623317897319794, 0.462426424026489), "59");
addFace(["1004", "2075", "2066", "2067", "2054", "736", "735"], "60");
setUVsToFace(new Point(0.228559624918618, 0.170902997255325), new Point(0.307330271441235, 0.179655290110273), new Point(0.219807307907262, 0.17965529859066), "60");
addFace(["1673", "2013", "2224", "1710"], "61");
setUVsToFace(new Point(0.82118558883667, 0.687052607536316), new Point(0.856117069721222, 0.696110248565674), new Point(0.807048980794308, 0.699285774169156), "61");
addFace(["1376", "1455", "1440", "1498"], "62");
setUVsToFace(new Point(0.211780458688736, 0.250567585229874), new Point(0.325560241937637, 0.250567585229874), new Point(0.312431842088699, 0.269138634204865), "62");
addFace(["823", "62", "579", "578"], "63");
setUVsToFace(new Point(0.829096972942352, 0.474622130393982), new Point(0.928656578063965, 0.47462210059166), new Point(0.928656578063965, 0.492126673460007), "63");
addFace(["1359", "1498", "1440", "1439"], "64");
setUVsToFace(new Point(0.909705102443695, 0.0975843667984009), new Point(0.909705102443695, 0.0614993274211884), new Point(0.997228145599365, 0.0614993497729301), "64");
addFace(["1313", "1250", "1954", "387"], "65");
setUVsToFace(new Point(0.753697335720062, 0.144646117491006), new Point(0.788706302642822, 0.135893821716309), new Point(0.788706302642822, 0.17965529859066), "65");
addFace(["338", "2019", "1910", "1906"], "66");
setUVsToFace(new Point(0.660096406936646, 0.494192838668823), new Point(0.651344023422278, 0.474622089905885), new Point(0.826389908790588, 0.474622130393982), "66");
addFace(["139", "1013", "1010", "956"], "67");
setUVsToFace(new Point(0.0912300422787666, 0.726835787296295), new Point(0.0912300050258636, 0.679703176021576), new Point(0.178752915100898, 0.679703134684261), "67");
addFace(["1729", "1727", "1687", "1682"], "68");
setUVsToFace(new Point(0.415251106023788, 0.807388040366788), new Point(0.358361214399338, 0.807388067245483), new Point(0.358361214399338, 0.785989046096802), "68");
addFace(["216", "219", "95", "691"], "69");
setUVsToFace(new Point(0.780382335186005, 0.675685048103333), new Point(0.784758508205414, 0.681874513626099), new Point(0.758501589298248, 0.681874513626099), "69");
addFace(["688", "1004", "192", "687"], "70");
setUVsToFace(new Point(0.784237587052093, 0.7122603058815), new Point(0.757980644702911, 0.7122603058815), new Point(0.762356817722321, 0.706070840358734), "70");
addFace(["497", "1568", "1975", "1978", "1981", "1125"], "71");
setUVsToFace(new Point(0.744944870471954, 0.00100001020399924), new Point(0.788706243038177, 0.0403853207826614), new Point(0.788706243038177, 0.0928990766406059), "71");
addFace(["517", "516", "476", "110"], "72");
setUVsToFace(new Point(0.00100000004749745, 0.897710680961609), new Point(0.0578898936510086, 0.897710680961609), new Point(0.0578898936510086, 0.919109898197539), "72");
addFace(["1040", "1041", "1214", "1030"], "73");
setUVsToFace(new Point(0.803852379322052, 0.634389042854309), new Point(0.838783860206604, 0.643446624279022), new Point(0.789715647697449, 0.646622180938721), "73");
addFace(["1284", "265", "1400", "1283"], "74");
setUVsToFace(new Point(0.905904233455658, 0.876224637031555), new Point(0.949665784835815, 0.8762246966362), new Point(0.949665784835815, 0.894267976284027), "74");
addFace(["1429", "285", "1439", "317"], "75");
setUVsToFace(new Point(0.546960771083832, 0.886207103729248), new Point(0.500397264957428, 0.893508911132813), new Point(0.495219171047211, 0.876224637031555), "75");
addFace(["2211", "2212", "1769", "2216"], "76");
setUVsToFace(new Point(0.465409338474274, 0.353623449802399), new Point(0.465409368276596, 0.397384941577911), new Point(0.416238516569138, 0.397384941577911), "76");
addFace(["2142", "940", "2143", "181", "1101"], "77");
setUVsToFace(new Point(0.181147497058702, 0.290416985750198), new Point(0.0804960988151477, 0.271845936775208), new Point(0.194275945425034, 0.271845936775208), "77");
addFace(["826", "640", "70", "571"], "78");
setUVsToFace(new Point(0.846784486635183, 0.624881253928786), new Point(0.747001111507416, 0.628632724285126), new Point(0.764042437076569, 0.612878143787384), "78");
addFace(["1359", "1638", "289", "288"], "79");
setUVsToFace(new Point(0.189571619033813, 0.578882932662964), new Point(0.140400826931, 0.578882932662964), new Point(0.140400841832161, 0.535121440887451), "79");
addFace(["1373", "303", "1378", "1372"], "80");
setUVsToFace(new Point(0.719693244811337, 0.971199499414363), new Point(0.702075242996216, 0.956092536449432), new Point(0.801929175853729, 0.956113874912262), "80");
addFace(["2196", "2191", "2042", "2164"], "81");
setUVsToFace(new Point(0.474349290132523, 0.271845877170563), new Point(0.487477689981461, 0.290416896343231), new Point(0.443716240849816, 0.290416896343231), "81");
addFace(["1113", "1125", "1981", "1169"], "82");
setUVsToFace(new Point(0.335680485643959, 0.150258511304855), new Point(0.344432771205902, 0.16982926428318), new Point(0.300671279430389, 0.16982926428318), "82");
addFace(["378", "1724", "1720", "1721"], "83");
setUVsToFace(new Point(0.604874491691589, 0.16982926428318), new Point(0.568798243999481, 0.168964251875877), new Point(0.569230735301971, 0.150926098227501), "83");
addFace(["50", "566", "557", "559"], "84");
setUVsToFace(new Point(0.951891779899597, 0.956092536449432), new Point(0.951891779899597, 0.974129438400269), new Point(0.90813022851944, 0.974129438400269), "84");
addFace(["1524", "2111", "447", "1625"], "85");
setUVsToFace(new Point(0.56114673614502, 0.144646123051643), new Point(0.56114673614502, 0.170902997255325), new Point(0.491128385066986, 0.170902997255325), "85");
addFace(["497", "1125", "1575", "839", "1570"], "86");
setUVsToFace(new Point(0.744944766103323, 0.00100000431231076), new Point(0.74494470407326, 0.0447614603729402), new Point(0.569898962974548, 0.0447614602744579), "86");
addFace(["1196", "965", "174", "173", "981"], "87");
setUVsToFace(new Point(0.242351889610291, 0.578882932662964), new Point(0.193181037614678, 0.535121560096777), new Point(0.242351874709129, 0.535121500492096), "87");
addFace(["235", "237", "1283", "1654"], "88");
setUVsToFace(new Point(0.852366864681244, 0.823163032531738), new Point(0.805803298950195, 0.830464839935303), new Point(0.800625264644623, 0.813180506229401), "88");
addFace(["1601", "1910", "2019", "233", "1649", "1604"], "89");
setUVsToFace(new Point(0.176045773837761, 0.0010000043861723), new Point(0.219807287965016, 0.0447614604714223), new Point(0.0447613671422005, 0.0447614602744579), "89");
addFace(["1044", "1219", "1214", "1041"], "90");
setUVsToFace(new Point(0.79231584072113, 0.135893851518631), new Point(0.841486692428589, 0.13589383661747), new Point(0.841486692428589, 0.179655283689499), "90");
addFace(["1837", "1040", "1030", "1830"], "91");
setUVsToFace(new Point(0.991406202316284, 0.262945115566254), new Point(0.903883337974548, 0.262945145368576), new Point(0.903883337974548, 0.250567525625229), "91");
addFace(["174", "965", "137", "956"], "92");
setUVsToFace(new Point(0.748200523328284, 0.856671116211086), new Point(0.797353267669678, 0.858011484146118), new Point(0.762784600257874, 0.868367791175842), "92");
addFace(["2226", "2009", "1689", "1696"], "93");
setUVsToFace(new Point(0.748031973838806, 0.835596024990082), new Point(0.797184526920319, 0.836936414241791), new Point(0.762615859508514, 0.84729266166687), "93");
addFace(["1400", "256", "1267", "1647"], "94");
setUVsToFace(new Point(0.596964955329895, 0.830646216869354), new Point(0.601493775844574, 0.813180506229401), new Point(0.648297488689423, 0.818737864494324), "94");
addFace(["897", "871", "121", "122"], "95");
setUVsToFace(new Point(0.854449812671229, 0.404773939225204), new Point(0.785431504249573, 0.407231658697128), new Point(0.795747458934784, 0.353623449802399), "95");
addFace(["1276", "1316", "1378", "1376", "1498", "1349"], "96");
setUVsToFace(new Point(0.093624547123909, 0.26913857460022), new Point(0.0804960876703262, 0.250567525625229), new Point(0.194275900491982, 0.250567564368285), "96");
addFace(["1250", "1313", "1295", "1294"], "97");
setUVsToFace(new Point(0.788706302642822, 0.135893821716309), new Point(0.753697335720062, 0.144646123051643), new Point(0.70118348966738, 0.135893825956509), "97");
addFace(["1428", "311", "619", "1416"], "98");
setUVsToFace(new Point(0.193181052803993, 0.828620672225952), new Point(0.193181082606316, 0.792534112930298), new Point(0.280703991651535, 0.792534232139587), "98");
addFace(["1559", "1563", "343", "344"], "99");
setUVsToFace(new Point(0.52771133184433, 0.754667103290558), new Point(0.605683565139771, 0.754175126552582), new Point(0.592185825809284, 0.784226488251272), "99");
addFace(["1524", "309", "1618", "1525"], "100");
setUVsToFace(new Point(0.924754114331989, 0.627475676922081), new Point(0.863487958908081, 0.627475678920746), new Point(0.867864072322845, 0.62128621339798), "100");
addFace(["71", "1480", "1476", "655"], "101");
setUVsToFace(new Point(0.666499137878418, 0.562800168991089), new Point(0.552719295024872, 0.562800109386444), new Point(0.552719295024872, 0.535121440887451), "101");
addFace(["985", "187", "181", "2143"], "102");
setUVsToFace(new Point(0.55396831035614, 0.672114491462708), new Point(0.55396831035614, 0.65460991859436), new Point(0.653527915477753, 0.65460991859436), "102");
addFace(["2120", "212", "2089", "447", "2122"], "103");
setUVsToFace(new Point(0.438614636659622, 0.17965529859066), new Point(0.351091704474838, 0.179655311432233), new Point(0.429862352890561, 0.170903006244423), "103");
addFace(["1256", "1332", "288", "289"], "104");
setUVsToFace(new Point(0.64887523651123, 0.886207103729248), new Point(0.602311730384827, 0.893508911132813), new Point(0.597133636474609, 0.876224637031555), "104");
addFace(["13", "479", "556", "494"], "105");
setUVsToFace(new Point(0.695834398269653, 0.747970581054688), new Point(0.608311474323273, 0.747970581054688), new Point(0.608311474323273, 0.735593020915985), "105");
addFace(["1054", "981", "1101", "1050"], "106");
setUVsToFace(new Point(0.323301434516907, 0.389708459377289), new Point(0.235778510570526, 0.389708459377289), new Point(0.235778510570526, 0.353623449802399), "106");
addFace(["1301", "1294", "1295", "1308"], "107");
setUVsToFace(new Point(0.731816530227661, 0.240124136209488), new Point(0.7449447100711, 0.247860159088196), new Point(0.701183319091797, 0.247860178351402), "107");
addFace(["789", "1440", "1455", "1480"], "108");
setUVsToFace(new Point(0.356193291220344, 0.269138634204865), new Point(0.312431842088699, 0.269138634204865), new Point(0.325560241937637, 0.250567585229874), "108");
addFace(["861", "860", "624", "1416"], "109");
setUVsToFace(new Point(0.47713041305542, 0.41412279009819), new Point(0.477130383253098, 0.457884222269058), new Point(0.427959531545639, 0.457884222269058), "109");
addFace(["849", "1570", "13", "494"], "110");
setUVsToFace(new Point(0.646286189556122, 0.856671154499054), new Point(0.695438802242279, 0.858011484146118), new Point(0.66087007522583, 0.868367791175842), "110");
addFace(["235", "1231", "1537", "237"], "111");
setUVsToFace(new Point(0.971805930137634, 0.344245195388794), new Point(0.902820765972137, 0.346732288599014), new Point(0.913169085357581, 0.293153120152904), "111");
addFace(["156", "677", "680", "682"], "112");
setUVsToFace(new Point(0.914069712162018, 0.732886020609056), new Point(0.914069712162018, 0.715381443500519), new Point(0.966583549976349, 0.715381443500519), "112");
addFace(["1213", "920", "2142", "173"], "113");
setUVsToFace(new Point(0.00100000854581594, 0.571206510066986), new Point(0.0010000000654312, 0.53512144088745), new Point(0.0885229259729385, 0.535121440887451), "113");
addFace(["272", "273", "1313", "271"], "114");
setUVsToFace(new Point(0.367460399866104, 0.521993100643158), new Point(0.371836543083191, 0.528182446956635), new Point(0.310570299625397, 0.528182446956635), "114");
addFace(["1213", "910", "913", "917"], "115");
setUVsToFace(new Point(0.951144099235535, 0.915161669254303), new Point(0.907382607460022, 0.915161788463593), new Point(0.907382547855377, 0.897118449211121), "115");
addFace(["2193", "1801", "1789", "2180"], "116");
setUVsToFace(new Point(0.73794037103653, 0.649836599826813), new Point(0.638380765914917, 0.649836599826813), new Point(0.638380765914917, 0.632332026958466), "116");
addFace(["765", "732", "735", "736"], "117");
setUVsToFace(new Point(0.0972752124071121, 0.144646123051643), new Point(0.167293563485146, 0.144646123051643), new Point(0.167293563485146, 0.170902997255325), "117");
addFace(["1364", "300", "1458", "298"], "118");
setUVsToFace(new Point(0.114779815077782, 0.47462210059166), new Point(0.114779815077782, 0.531512022018433), new Point(0.00100000004749745, 0.531512022018433), "118");
addFace(["1882", "2089", "1472", "1532"], "119");
setUVsToFace(new Point(0.988033994305457, 0.535121440887451), new Point(0.992410182952881, 0.541310906410217), new Point(0.966153264045715, 0.541310906410217), "119");
addFace(["1098", "1095", "981", "1054"], "120");
setUVsToFace(new Point(0.323301434516907, 0.407751768827438), new Point(0.235778510570526, 0.407751766642093), new Point(0.235778510570526, 0.389708459377289), "120");
addFace(["1213", "917", "918", "920"], "121");
setUVsToFace(new Point(0.319768488407135, 0.929388582706451), new Point(0.319493532180786, 0.947429895401001), new Point(0.283411085605621, 0.946879863739014), "121");
addFace(["566", "626", "823", "578", "557"], "122");
setUVsToFace(new Point(0.575000524520874, 0.269138693809509), new Point(0.48747737420237, 0.269138693809509), new Point(0.58812894973726, 0.250567644834518), "122");
addFace(["1411", "273", "1622", "309"], "123");
setUVsToFace(new Point(0.613660506662191, 0.135893822109981), new Point(0.692431092262268, 0.144646123051643), new Point(0.692431092262268, 0.170902997255325), "123");
addFace(["1300", "1301", "243", "1299"], "124");
setUVsToFace(new Point(0.616229896530053, 0.989915894315639), new Point(0.598612010478973, 0.974808931350708), new Point(0.698465883731842, 0.974830269813538), "124");
addFace(["395", "2000", "2234", "397"], "125");
setUVsToFace(new Point(0.774764537811279, 0.756232082843781), new Point(0.809696018695831, 0.765289723873138), new Point(0.760627788228771, 0.768465241184097), "125");
addFace(["1066", "209", "1083", "1068"], "126");
setUVsToFace(new Point(0.55396831035614, 0.702500343322754), new Point(0.55396831035614, 0.684995710849762), new Point(0.653527915477753, 0.684995710849762), "126");
addFace(["2120", "2122", "1859", "1865"], "127");
setUVsToFace(new Point(0.351091653108597, 0.214208871126175), new Point(0.307330220937729, 0.214208856225014), new Point(0.320458650588989, 0.206472858786583), "127");
addFace(["216", "691", "106", "696"], "128");
setUVsToFace(new Point(0.805538535118103, 0.973597168922424), new Point(0.805538535118103, 0.956092536449432), new Point(0.858052372932434, 0.956092536449432), "128");
addFace(["1830", "2034", "429", "2238"], "129");
setUVsToFace(new Point(0.648706495761871, 0.844238221645355), new Point(0.602142989635468, 0.85154002904892), new Point(0.596964955329895, 0.834255695343018), "129");
addFace(["102", "726", "723", "114"], "130");
setUVsToFace(new Point(0.540021896362305, 0.745949029922485), new Point(0.527711391448975, 0.715381443500519), new Point(0.60560348588367, 0.718921250685368), "130");
addFace(["447", "2089", "1882", "1878"], "131");
setUVsToFace(new Point(0.681406736373901, 0.409652531147003), new Point(0.620140650488819, 0.409652589900228), new Point(0.624516785144806, 0.403463125228882), "131");
addFace(["1048", "207", "1054", "1050"], "132");
setUVsToFace(new Point(0.944206476211548, 0.995739638805389), new Point(0.90813022851944, 0.994874656200409), new Point(0.908562799981346, 0.976836578198018), "132");
addFace(["723", "726", "720", "708"], "133");
setUVsToFace(new Point(0.193181052803993, 0.747953653335571), new Point(0.27114927689921, 0.746960922748824), new Point(0.255469650030136, 0.788924753665924), "133");
addFace(["2053", "2052", "112", "762"], "134");
setUVsToFace(new Point(0.036009032279253, 0.170902997255325), new Point(0.00100000004749745, 0.17965529859066), new Point(0.00100000004749745, 0.135893821716309), "134");
addFace(["700", "720", "499", "467"], "135");
setUVsToFace(new Point(0.640430688858032, 0.47462210059166), new Point(0.648636996746063, 0.52859354019165), new Point(0.579768015080538, 0.523432014462949), "135");
addFace(["1745", "1739", "363", "1735"], "136");
setUVsToFace(new Point(0.901176273822784, 0.268072217702866), new Point(0.801616668701172, 0.268072217702866), new Point(0.801616668701172, 0.250567525625229), "136");
addFace(["1917", "1118", "1508", "1509"], "137");
setUVsToFace(new Point(0.768733203411102, 0.41412279009819), new Point(0.943778991699219, 0.414122819900513), new Point(0.935026738556309, 0.433693557841855), "137");
addFace(["1472", "2089", "212", "2203"], "138");
setUVsToFace(new Point(0.429862320423126, 0.144646123051643), new Point(0.429862320423126, 0.170902997255325), new Point(0.351091666979951, 0.179655298196988), "138");
addFace(["317", "1439", "1419", "1668"], "139");
setUVsToFace(new Point(0.567360401153564, 0.353623449802399), new Point(0.616531252861023, 0.353623449802399), new Point(0.616531252861023, 0.397384852170944), "139");
addFace(["2142", "1101", "979", "969"], "140");
setUVsToFace(new Point(0.0447614528238773, 0.982875645160675), new Point(0.00100000004749745, 0.982875645160675), new Point(0.00100000004749745, 0.964838743209839), "140");
addFace(["114", "723", "1142", "1160"], "141");
setUVsToFace(new Point(0.489774167537689, 0.620548725128174), new Point(0.47590771317482, 0.604770243167877), new Point(0.53864985704422, 0.604770243167877), "141");
addFace(["372", "1696", "1771", "1761"], "142");
setUVsToFace(new Point(0.088522881269455, 0.648792266845703), new Point(0.0885228897677767, 0.695924836783097), new Point(0.00100000854581594, 0.695924937725067), "142");
addFace(["687", "192", "191", "686"], "143");
setUVsToFace(new Point(0.96756500005722, 0.754175126552582), new Point(0.96756500005722, 0.771679759025574), new Point(0.915051162242889, 0.771679759025574), "143");
addFace(["1055", "208", "204", "2041"], "144");
setUVsToFace(new Point(0.083825945854187, 0.922360479831696), new Point(0.0835509598255157, 0.9404017329216), new Point(0.0474685318768024, 0.939851760864258), "144");
addFace(["279", "1636", "1638", "1330"], "145");
setUVsToFace(new Point(0.558424115180969, 0.815237462520599), new Point(0.593355498822821, 0.824294856169375), new Point(0.544287323951721, 0.827470660209656), "145");
addFace(["1045", "948", "951", "1037"], "146");
setUVsToFace(new Point(0.997228145599365, 0.130712389945984), new Point(0.909705102443695, 0.130712419748306), new Point(0.909705102443695, 0.118334800004959), "146");
addFace(["2211", "2216", "396", "1759"], "147");
setUVsToFace(new Point(0.908878982067108, 0.686335980892181), new Point(0.958031535148621, 0.68767637014389), new Point(0.923462867736816, 0.69803261756897), "147");
addFace(["544", "537", "538", "541"], "148");
setUVsToFace(new Point(0.640242278575897, 0.565507292747498), new Point(0.640242278575897, 0.577884855884456), new Point(0.552719295024872, 0.577884793281555), "148");
addFace(["1231", "1563", "1559", "1542"], "149");
setUVsToFace(new Point(0.105251602828503, 0.836878061294556), new Point(0.0912291096116459, 0.794332011593697), new Point(0.169098556041718, 0.798380494117737), "149");
addFace(["2041", "2042", "2034", "198", "1055"], "150");
setUVsToFace(new Point(0.118389241397381, 0.47462210059166), new Point(0.205912172794342, 0.47462210059166), new Point(0.205912172794342, 0.528750419616699), "150");
addFace(["1856", "2042", "2191", "1847"], "151");
setUVsToFace(new Point(0.481242805719376, 0.900226533412933), new Point(0.481242805719376, 0.91826343536377), new Point(0.43748140335083, 0.91826343536377), "151");
addFace(["280", "1663", "1636", "279"], "152");
setUVsToFace(new Point(0.525004327297211, 0.715381498734481), new Point(0.525004327297211, 0.751468062400818), new Point(0.43748140335083, 0.751468002796173), "152");
addFace(["2041", "204", "1048", "1050"], "153");
setUVsToFace(new Point(0.358361214399338, 0.848882555961609), new Point(0.358361214399338, 0.830845654010773), new Point(0.402122676372528, 0.830845654010773), "153");
addFace(["987", "155", "154", "162"], "154");
setUVsToFace(new Point(0.349558293819427, 0.350013971328735), new Point(0.235778525471687, 0.350013971328735), new Point(0.235778525471687, 0.293124079704285), "154");
addFace(["981", "180", "979", "1101"], "155");
setUVsToFace(new Point(0.319768458604813, 0.971972405910492), new Point(0.319493502378464, 0.990013599395752), new Point(0.283411085605621, 0.989463627338409), "155");
addFace(["881", "931", "923", "924"], "156");
setUVsToFace(new Point(0.820058941841125, 0.891331553459167), new Point(0.802441000938416, 0.876224637031555), new Point(0.902294817883601, 0.876245951686149), "156");
addFace(["1710", "1674", "1960", "1673"], "157");
setUVsToFace(new Point(0.193181052803993, 0.884347677230835), new Point(0.260724540034112, 0.870112537871517), new Point(0.260277897119522, 0.914917469024658), "157");
addFace(["476", "112", "723"], "158");
setUVsToFace(new Point(0.139289826154709, 0.0857560709118843), new Point(0.0979738235473633, 0.0631706044077873), new Point(0.100487887859344, 0.0497728772461414), "158");
addFace(["1568", "726", "102"], "159");
setUVsToFace(new Point(0.251596629619598, 0.532384872436523), new Point(0.208619251847267, 0.531930088996887), new Point(0.240038707852364, 0.521993100643158), "159");
addFace(["883", "881", "924", "1139"], "160");
setUVsToFace(new Point(0.283411085605621, 0.816799240696318), new Point(0.283411085605621, 0.795400023460388), new Point(0.340300977230072, 0.795400023460388), "160");
addFace(["1279", "1276", "1290", "263"], "161");
setUVsToFace(new Point(0.994585454463959, 0.873367726802826), new Point(0.950824022293091, 0.873367726802826), new Point(0.950824022293091, 0.85533082485199), "161");
addFace(["1530", "1625", "447", "1878"], "162");
setUVsToFace(new Point(0.882128059864044, 0.675503671169281), new Point(0.886504232883453, 0.681693136692047), new Point(0.860247379941218, 0.681693136692047), "162");
addFace(["1083", "2164", "2042", "2041", "1050", "1068"], "163");
setUVsToFace(new Point(0.343064874410629, 0.271845906972885), new Point(0.456844750701874, 0.271845906972885), new Point(0.443716316931383, 0.290416955947876), "163");
addFace(["251", "1604", "1647", "1267"], "164");
setUVsToFace(new Point(0.660169839859009, 0.815237462520599), new Point(0.695101228091837, 0.824294838873956), new Point(0.646033048629761, 0.827470660209656), "164");
addFace(["1696", "372", "1720", "2226"], "165");
setUVsToFace(new Point(0.75062108039856, 0.844238221645355), new Point(0.704057585800433, 0.851540107350841), new Point(0.698879420757294, 0.834255695343018), "165");
addFace(["271", "1313", "387", "2022"], "166");
setUVsToFace(new Point(0.481076538562775, 0.0750335639085739), new Point(0.474887043237686, 0.0794097036123276), new Point(0.474887043237686, 0.0531528294086456), "166");
addFace(["1759", "1758", "1894", "2211"], "167");
setUVsToFace(new Point(0.911468088626862, 0.6949782371521), new Point(0.864904463291168, 0.702279984951019), new Point(0.85972648859024, 0.684995710849762), "167");
addFace(["1919", "454", "1917", "1509"], "168");
setUVsToFace(new Point(0.00975228846073151, 0.941387593746185), new Point(0.00100000004749745, 0.921816945075989), new Point(0.0447614528238773, 0.921816945075989), "168");
addFace(["52", "601", "565", "53"], "169");
setUVsToFace(new Point(0.947948217391968, 0.834255814552307), new Point(0.947948217391968, 0.852299094200134), new Point(0.9041867852211, 0.852298974990845), "169");
addFace(["181", "187", "1093", "182"], "170");
setUVsToFace(new Point(0.900577422034343, 0.846258815421929), new Point(0.800793945789337, 0.850010275840759), new Point(0.81783527135849, 0.834255695343018), "170");
addFace(["2180", "1745", "1721", "406", "2185", "2193"], "171");
setUVsToFace(new Point(0.605633556842804, 0.27184584736824), new Point(0.719413459300995, 0.271845817565918), new Point(0.706285053897366, 0.290416843616067), "171");
addFace(["521", "606", "55", "579", "770", "764"], "172");
setUVsToFace(new Point(0.0753945460474893, 0.240124482890967), new Point(0.0753945481070874, 0.216916475674493), new Point(0.18917427957058, 0.216916337609291), "172");
addFace(["1169", "1981", "1108", "222"], "173");
setUVsToFace(new Point(0.367113560438156, 0.651902794837952), new Point(0.358361183922923, 0.632332077608491), new Point(0.533407032489777, 0.63233208656311), "173");
addFace(["2166", "2167", "1711", "1721", "1745", "1735"], "174");
setUVsToFace(new Point(0.77192730728899, 0.271845817565918), new Point(0.798909564480786, 0.290416836738586), new Point(0.750046491622925, 0.290416836738586), "174");
addFace(["613", "751", "634"], "175");
setUVsToFace(new Point(0.323301404714584, 0.46825110912323), new Point(0.323301404714584, 0.41412279009819), new Point(0.323301404714584, 0.45020779967308), "175");
addFace(["931", "151", "940", "923"], "176");
setUVsToFace(new Point(0.53611421585083, 0.649836838245392), new Point(0.53611421585083, 0.63233208656311), new Point(0.635673761367798, 0.63233208656311), "176");
addFace(["871", "115", "1142", "1155"], "177");
setUVsToFace(new Point(0.908288538455963, 0.178441017866135), new Point(0.894266055267118, 0.135894867048592), new Point(0.972135424613953, 0.139943435788155), "177");
addFace(["1739", "1749", "1829", "1789", "2104", "2103"], "178");
setUVsToFace(new Point(0.0753944815859203, 0.20647276505653), new Point(0.0753944815859203, 0.183264742938916), new Point(0.189174324274063, 0.183264777064323), "178");
addFace(["1279", "1283", "1537", "238"], "179");
setUVsToFace(new Point(0.992261290550232, 0.40613380074501), new Point(0.956176280975342, 0.406134933233261), new Point(0.965198338031769, 0.353623449802399), "179");
addFace(["1400", "265", "1290", "1276"], "180");
setUVsToFace(new Point(0.319768488407135, 0.950680494308472), new Point(0.319493502325385, 0.96872167776223), new Point(0.283411085605621, 0.968171715736389), "180");
addFace(["763", "112", "476", "516", "522"], "181");
setUVsToFace(new Point(0.0447614714503288, 0.247860431671143), new Point(0.00100002282124253, 0.247860507327332), new Point(0.0364906369171083, 0.216916401474864), "181");
addFace(["2097", "1954", "1687", "1727", "363"], "182");
setUVsToFace(new Point(0.0447614379227161, 0.214208751916885), new Point(0.00100000004749745, 0.214208751916885), new Point(0.0364906154572964, 0.18326473236084), "182");
addFace(["2224", "2013", "2009", "2226"], "183");
setUVsToFace(new Point(0.375179265984234, 0.457884281873703), new Point(0.326008498668671, 0.457884281873703), new Point(0.326008498668671, 0.41412279009819), "183");
addFace(["325", "324", "1480", "1455"], "184");
setUVsToFace(new Point(0.594778776168823, 0.792968928813934), new Point(0.594778776168823, 0.810473501682281), new Point(0.495219171047211, 0.810473501682281), "184");
addFace(["367", "1769", "2212", "1771"], "185");
setUVsToFace(new Point(0.876510322093964, 0.756232082843781), new Point(0.911441802978516, 0.765289723873138), new Point(0.862373572457556, 0.768465244977068), "185");
addFace(["1066", "1065", "1093", "187", "2066", "2075"], "186");
setUVsToFace(new Point(0.469247627937056, 0.206472908735738), new Point(0.46924763917923, 0.183264881372452), new Point(0.583027422428131, 0.183264940977097), "186");
addFace(["948", "1045", "1044", "163"], "187");
setUVsToFace(new Point(0.785693168640137, 0.535121500492096), new Point(0.87321609258651, 0.535121376912108), new Point(0.873216152191162, 0.57120805978775), "187");
addFace(["2216", "2000", "395", "396"], "188");
setUVsToFace(new Point(0.178752958774563, 0.914465482632636), new Point(0.0912300199270248, 0.914465546607971), new Point(0.0912299901247025, 0.878378927707672), "188");
addFace(["2191", "2196", "2193", "2185"], "189");
setUVsToFace(new Point(0.487477689981461, 0.290416896343231), new Point(0.474349299848661, 0.27184584736824), new Point(0.588129043579102, 0.27184584736824), "189");
addFace(["1711", "377", "378", "1721"], "190");
setUVsToFace(new Point(0.952372848987579, 0.894261479377747), new Point(0.952372848987579, 0.876224637031555), new Point(0.996134340763092, 0.876224637031555), "190");
addFace(["396", "395", "397", "1759"], "191");
setUVsToFace(new Point(0.798101007938385, 0.748834070545294), new Point(0.710578143596649, 0.748834073543549), new Point(0.710578143596649, 0.736456513404846), "191");
addFace(["2053", "762", "677", "156"], "192");
setUVsToFace(new Point(0.185676204358574, 0.735732197761536), new Point(0.159419313073158, 0.735732197761536), new Point(0.163795441389084, 0.72954273223877), "192");
addFace(["1878", "1882", "1532", "1530"], "193");
setUVsToFace(new Point(0.547732889652252, 0.974244713783264), new Point(0.495219171047211, 0.974244713783264), new Point(0.495219171047211, 0.956740140914917), "193");
addFace(["918", "909", "2129", "920"], "194");
setUVsToFace(new Point(0.949008285999298, 0.813180565834045), new Point(0.992769777774811, 0.813180565834045), new Point(0.992769777774811, 0.831217467784882), "194");
addFace(["18", "510", "8", "798"], "195");
setUVsToFace(new Point(0.75004643201828, 0.269138723611832), new Point(0.706284880638123, 0.269138723611832), new Point(0.71941339969635, 0.250567704439163), "195");
addFace(["1716", "379", "377", "1711"], "196");
setUVsToFace(new Point(0.433783143758774, 0.89715838432312), new Point(0.433508157730103, 0.915199637413025), new Point(0.397425741010139, 0.914649675362511), "196");
addFace(["2164", "1083", "1087", "1085"], "197");
setUVsToFace(new Point(0.744294166564941, 0.61017107963562), new Point(0.63051426410675, 0.61017107963562), new Point(0.630514144897461, 0.582492470741272), "197");
addFace(["1636", "1663", "1917", "1910", "1601"], "198");
setUVsToFace(new Point(0.219807282090187, 0.00100000423844904), new Point(0.307330244561217, 0.00100000847864177), new Point(0.307330244561217, 0.0447614687548434), "198");
addFace(["462", "497", "23", "499"], "199");
setUVsToFace(new Point(0.875528872013092, 0.717438280582428), new Point(0.910460352897644, 0.726495921611786), new Point(0.861392116823073, 0.72967158956979), "199");
addFace(["1673", "1960", "1926", "2013"], "200");
setUVsToFace(new Point(0.433871954679489, 0.697322070598602), new Point(0.365143954753876, 0.697051227092743), new Point(0.358361214399338, 0.65460991859436), "200");
addFace(["387", "1622", "1740", "2022"], "201");
setUVsToFace(new Point(0.489225775003433, 0.467683076858521), new Point(0.427959529969918, 0.467683109629299), new Point(0.432335704565048, 0.461493700742722), "201");
addFace(["263", "1284", "1283", "1279"], "202");
setUVsToFace(new Point(0.319487363100052, 0.88143116235733), new Point(0.283411115407944, 0.88056617975235), new Point(0.283843619065632, 0.86252803986995), "202");
addFace(["1207", "910", "1213", "1205"], "203");
setUVsToFace(new Point(0.140400826931, 0.582492530345917), new Point(0.189571633934975, 0.582492470741272), new Point(0.189571648836136, 0.62625390291214), "203");
addFace(["844", "484", "7", "601"], "204");
setUVsToFace(new Point(0.440690636634827, 0.329209089279175), new Point(0.440690636634827, 0.347252428531647), new Point(0.353167712688446, 0.347252428531647), "204");
addFace(["1207", "1978", "905", "897"], "205");
setUVsToFace(new Point(0.544371664524078, 0.898458659648895), new Point(0.59352433681488, 0.899799048900604), new Point(0.558955628675309, 0.91015536515493), "205");
addFace(["59", "788", "688", "732", "765", "770"], "206");
setUVsToFace(new Point(0.219807311892509, 0.135893821716309), new Point(0.307330283396982, 0.135893830196696), new Point(0.228559630497966, 0.144646123051643), "206");
addFace(["387", "2103", "2104", "418", "1621", "1622"], "207");
setUVsToFace(new Point(0.753697344504454, 0.170902997255325), new Point(0.701183461924569, 0.17965529859066), new Point(0.613660573959351, 0.17965529859066), "207");
addFace(["1064", "1068", "181", "182"], "208");
setUVsToFace(new Point(0.551261216402054, 0.65460991859436), new Point(0.551261246204376, 0.682288527488708), new Point(0.437481433153152, 0.682288527488708), "208");
addFace(["2164", "1865", "1859", "2196"], "209");
setUVsToFace(new Point(0.707871079444885, 0.732886016368866), new Point(0.608311474323273, 0.732886016368866), new Point(0.608311474323273, 0.715381443500519), "209");
addFace(["1663", "317", "1668", "1428"], "210");
setUVsToFace(new Point(0.518189549446106, 0.353623449802399), new Point(0.567360401153564, 0.353623449802399), new Point(0.567360401153564, 0.397384852170944), "210");
addFace(["897", "122", "910", "1207"], "211");
setUVsToFace(new Point(0.546960771083832, 0.907100915908813), new Point(0.500397264957428, 0.914402663707733), new Point(0.495219171047211, 0.897118330001831), "211");
addFace(["1966", "1960", "1969", "1965"], "212");
setUVsToFace(new Point(0.896628379821777, 0.527467548847198), new Point(0.884317815303802, 0.496899902820587), new Point(0.962209784823117, 0.50043973447515), "212");
addFace(["940", "151", "154", "155"], "213");
setUVsToFace(new Point(0.696917112719615, 0.9091214818616), new Point(0.597133636474609, 0.912872970104218), new Point(0.614174962043762, 0.897118330001831), "213");
addFace(["162", "154", "151", "2054", "2067", "985"], "214");
setUVsToFace(new Point(0.600532029811402, 0.183264927566048), new Point(0.714311838150024, 0.18326498568058), new Point(0.714311818846635, 0.206473021050031), "214");
addFace(["616", "543", "544", "541"], "215");
setUVsToFace(new Point(0.0912300199270248, 0.629863440990448), new Point(0.178752988576889, 0.629863500595093), new Point(0.178752973675722, 0.676996070532479), "215");
addFace(["325", "326", "1453", "324"], "216");
setUVsToFace(new Point(0.46924763917923, 0.240124240517616), new Point(0.482376039028168, 0.247860237956047), new Point(0.4386146068573, 0.247860252857208), "216");
addFace(["2021", "450", "2019", "338"], "217");
setUVsToFace(new Point(0.729984819889069, 0.150258496403694), new Point(0.738737106323242, 0.16982926428318), new Point(0.694975614547729, 0.16982926428318), "217");
addFace(["162", "985", "2143", "987"], "218");
setUVsToFace(new Point(0.823156457634395, 0.952483072230566), new Point(0.805538535118103, 0.937376141548157), new Point(0.905392467975616, 0.937397420406342), "218");
addFace(["1969", "1960", "1674", "456"], "219");
setUVsToFace(new Point(0.00100000004749745, 0.758215010166168), new Point(0.078967459499836, 0.757221281528473), new Point(0.0632886067032814, 0.799186050891876), "219");
addFace(["163", "1044", "1925", "1118", "1108", "965"], "220");
setUVsToFace(new Point(0.569898962974548, 0.13228440284729), new Point(0.482375931865398, 0.132284398607097), new Point(0.482375931865398, 0.0885229323937131), "220");
addFace(["1758", "1759", "397", "399"], "221");
setUVsToFace(new Point(0.280703991651535, 0.632332146167755), new Point(0.280703991651535, 0.67946469783783), new Point(0.193181052803993, 0.679464757442474), "221");
addFace(["789", "751", "613", "1420", "1419"], "222");
setUVsToFace(new Point(0.235778480768204, 0.41412279009819), new Point(0.323301404714584, 0.414123594760895), new Point(0.323301404714584, 0.46825110912323), "222");
addFace(["826", "823", "626"], "223");
setUVsToFace(new Point(0.474349230527878, 0.250567615032196), new Point(0.588128983974457, 0.250567644834518), new Point(0.487477630376816, 0.269138664007187), "223");
addFace(["155", "987", "2143", "940"], "224");
setUVsToFace(new Point(0.651344060897827, 0.496899962425232), new Point(0.765123784542084, 0.496899902820587), new Point(0.765123784542084, 0.52457857131958), "224");
addFace(["606", "529", "533", "55"], "225");
setUVsToFace(new Point(0.118389271199703, 0.410513311624527), new Point(0.118389271199703, 0.353623449802399), new Point(0.232169076800346, 0.353623449802399), "225");
addFace(["981", "1095", "951", "1196"], "226");
setUVsToFace(new Point(0.656234920024872, 0.702461421489716), new Point(0.660763621330261, 0.684995710849762), new Point(0.707567393779755, 0.690552949905396), "226");
addFace(["2127", "1155", "1139", "2124"], "227");
setUVsToFace(new Point(0.0384453311562538, 0.698631942272186), new Point(0.072340726852417, 0.75361180305481), new Point(0.000983375569858301, 0.753310517621809), "227");
addFace(["1786", "1803", "2193", "2196"], "228");
setUVsToFace(new Point(0.747001171112061, 0.582492470741272), new Point(0.860780954360962, 0.582492470741272), new Point(0.860780954360962, 0.61017107963562), "228");
addFace(["272", "271", "2022", "1740"], "229");
setUVsToFace(new Point(0.946486115455627, 0.41412279009819), new Point(0.998999893665314, 0.41412279009819), new Point(0.998999893665314, 0.431627397009057), "229");
addFace(["1066", "2075", "212", "209"], "230");
setUVsToFace(new Point(0.46924763917923, 0.206472903490067), new Point(0.482376039028168, 0.21420893073082), new Point(0.4386146068573, 0.214208900928497), "230");
addFace(["798", "522", "516", "517"], "231");
setUVsToFace(new Point(0.730297565460205, 0.624881267547607), new Point(0.630514144897461, 0.628632783889771), new Point(0.647555514738255, 0.6128782434292), "231");
addFace(["58", "62", "823", "572"], "232");
setUVsToFace(new Point(0.616229897178814, 0.952483081033696), new Point(0.598612010478973, 0.937376141548157), new Point(0.698465883731842, 0.937397420406342), "232");
addFace(["2129", "2127", "2124", "923"], "233");
setUVsToFace(new Point(0.0498630774286024, 0.290417015552521), new Point(0.00100000004749745, 0.290417015552521), new Point(0.0279823839664459, 0.27184596657753), "233");
addFace(["1458", "300", "302", "1487", "326", "325"], "234");
setUVsToFace(new Point(0.46924763917923, 0.216916233301163), new Point(0.583027313719262, 0.216916138283229), new Point(0.583027313719262, 0.240124145499682), "234");
addFace(["2127", "2129", "910", "122", "121"], "235");
setUVsToFace(new Point(0.337541458421647, 0.742925602464983), new Point(0.337540993687763, 0.791788680280544), new Point(0.301454395055771, 0.791790008544922), "235");
addFace(["2103", "2097", "363", "1739"], "236");
setUVsToFace(new Point(0.0885229483246803, 0.214208781719208), new Point(0.0447614269609809, 0.214208762455967), new Point(0.0578897520899773, 0.206472754478455), "236");
addFace(["956", "1010", "173", "174"], "237");
setUVsToFace(new Point(0.750789701938629, 0.865313351154327), new Point(0.70422625541687, 0.872615158557892), new Point(0.699048161506653, 0.85533082485199), "237");
addFace(["883", "2052", "2051", "931", "881"], "238");
setUVsToFace(new Point(0.753215661829054, 0.183265018452393), new Point(0.788706346420634, 0.214209077581126), new Point(0.74494481086731, 0.214209035038948), "238");
addFace(["233", "1563", "231", "1649"], "239");
setUVsToFace(new Point(0.935425817966461, 0.353623449802399), new Point(0.926985479261777, 0.395773618095911), new Point(0.858298659324646, 0.393342435359955), "239");
addFace(["1359", "288", "294", "295"], "240");
setUVsToFace(new Point(0.236942559480667, 0.997376918792725), new Point(0.193181052803993, 0.99737685918808), new Point(0.193181052803993, 0.979333460330963), "240");
addFace(["1778", "1816", "1894", "1784"], "241");
setUVsToFace(new Point(0.481242895126343, 0.879476130008698), new Point(0.481242895126343, 0.897519469261169), new Point(0.43748140335083, 0.897519528865814), "241");
addFace(["1575", "1118", "624", "1585", "839"], "242");
setUVsToFace(new Point(0.569898962974548, 0.0447614629027689), new Point(0.482376009225845, 0.0447614714503288), new Point(0.482376009225845, 0.00100000854581594), "242");
addFace(["1933", "1716", "1711", "2167"], "243");
setUVsToFace(new Point(0.028065474703908, 0.894101321697235), new Point(0.0190467272966697, 0.841589783340516), new Point(0.0551283434033394, 0.841590940952301), "243");
addFace(["1249", "1250", "1294", "1301", "1300"], "244");
setUVsToFace(new Point(0.753215670585632, 0.216916128993034), new Point(0.788706243038177, 0.247860133647919), new Point(0.744944870471954, 0.24786014854908), "244");
addFace(["836", "839", "1585", "831"], "245");
setUVsToFace(new Point(0.359741121530533, 0.518383622169495), new Point(0.310570299625397, 0.518383622169495), new Point(0.310570359230042, 0.474622130393982), "245");
addFace(["1458", "325", "1455", "298"], "246");
setUVsToFace(new Point(0.719693244811337, 0.989915894315639), new Point(0.702075242996216, 0.974808931350708), new Point(0.801929175853729, 0.974830269813538), "246");
addFace(["1250", "1559", "1969", "1954"], "247");
setUVsToFace(new Point(0.627101004123688, 0.0740464478731155), new Point(0.630113780498505, 0.0873409062623978), new Point(0.576684296131134, 0.0546603798866272), "247");
addFace(["2052", "1142", "723", "112"], "249");
setUVsToFace(new Point(0.0615852326154709, 0.0873409062623978), new Point(0.048316515982151, 0.084426574409008), new Point(0.10048794156559, 0.0497728801536505), "249");
addFace(["861", "1416", "619", "609"], "250");
setUVsToFace(new Point(0.544371664524078, 0.856671154499054), new Point(0.59352433681488, 0.858011484146118), new Point(0.558955609798431, 0.868367791175842), "250");
addFace(["2103", "387", "1954", "2097"], "251");
setUVsToFace(new Point(0.701183378696442, 0.17965529859066), new Point(0.753697335720062, 0.170902997255325), new Point(0.788706413613578, 0.179655294350466), "251");
addFace(["900", "1979", "1205", "139"], "252");
setUVsToFace(new Point(0.558424115180969, 0.836312651634216), new Point(0.593355492518667, 0.845370232918158), new Point(0.544287323951721, 0.848545789718628), "252");
addFace(["454", "2000", "2216", "1769", "2002"], "253");
setUVsToFace(new Point(0.307330191135406, 0.0885229259729385), new Point(0.307330191135406, 0.132284387946129), new Point(0.219807282090187, 0.13228440284729), "253");
addFace(["969", "179", "173", "2142"], "254");
setUVsToFace(new Point(0.473557621240616, 0.939873695373535), new Point(0.43748140335083, 0.939008712768555), new Point(0.437913902919453, 0.920970631385261), "254");
addFace(["81", "626", "566", "565"], "255");
setUVsToFace(new Point(0.909705102443695, 0.0370850148610771), new Point(0.909705102443695, 0.00100000004749745), new Point(0.997228145599365, 0.00100001913961023), "255");
addFace(["2051", "2054", "151", "931"], "256");
setUVsToFace(new Point(0.74494481086731, 0.214209035038948), new Point(0.701183378696442, 0.214209020137787), new Point(0.714311765460733, 0.206473009543039), "256");
addFace(["2053", "736", "2054", "2051", "2052"], "257");
setUVsToFace(new Point(0.036009032279253, 0.170902997255325), new Point(0.097275180043206, 0.170902997255325), new Point(0.0885229110717773, 0.17965529859066), "257");
addFace(["115", "871", "897", "905"], "258");
setUVsToFace(new Point(0.349319130182266, 0.690921366214752), new Point(0.351439327958763, 0.735678318229107), new Point(0.283411085605621, 0.72397643327713), "258");
addFace(["640", "826", "71", "646"], "259");
setUVsToFace(new Point(0.708852589130402, 0.771679759025574), new Point(0.609292984008789, 0.771679759025574), new Point(0.609292984008789, 0.754175126552582), "259");
addFace(["1429", "280", "279", "1330"], "260");
setUVsToFace(new Point(0.696815848350525, 0.774386760574423), new Point(0.696815848350525, 0.78676438331604), new Point(0.609292984008789, 0.78676438331604), "260");
addFace(["762", "765", "680", "677"], "261");
setUVsToFace(new Point(0.594893932342529, 0.346684455871582), new Point(0.533627663846672, 0.346684425099478), new Point(0.5380038022995, 0.340495020151138), "261");
addFace(["479", "839", "836", "556"], "262");
setUVsToFace(new Point(0.905598163604736, 0.634388983249664), new Point(0.940529644489288, 0.643446564674377), new Point(0.891461410865178, 0.646622118857782), "262");
addFace(["7", "484", "494", "556"], "263");
setUVsToFace(new Point(0.529910624027252, 0.41412279009819), new Point(0.617433607578278, 0.414122819900513), new Point(0.617433599097886, 0.461255330233234), "263");
addFace(["1865", "2047", "2046", "209", "212", "2120"], "264");
setUVsToFace(new Point(0.337963217292818, 0.206472859701979), new Point(0.337963223457336, 0.183264836668968), new Point(0.451743066310883, 0.183264881372452), "264");
addFace(["1373", "1319", "1308", "1295", "1411", "303"], "265");
setUVsToFace(new Point(0.600531407488822, 0.216916411102991), new Point(0.714311838150024, 0.216916143894196), new Point(0.714311838150024, 0.240124151110649), "265");
addFace(["1378", "1316", "1317", "1372"], "266");
setUVsToFace(new Point(0.782986104488373, 0.562800109386444), new Point(0.669206261634827, 0.562800109386444), new Point(0.669206321239471, 0.535121440887451), "266");
addFace(["421", "1621", "2111", "1807"], "267");
setUVsToFace(new Point(0.610858201980591, 0.674821615219116), new Point(0.615234375, 0.681011080741882), new Point(0.553968289114837, 0.681011078743218), "267");
addFace(["1101", "181", "1068", "1050"], "268");
setUVsToFace(new Point(0.224908964776903, 0.290416978872746), new Point(0.211780518293381, 0.271845936775208), new Point(0.325560301542282, 0.271845906972885), "268");
addFace(["1332", "256", "1400", "288"], "269");
setUVsToFace(new Point(0.088522881269455, 0.646085202693939), new Point(0.00100000004749745, 0.646085202693939), new Point(0.00100000004749745, 0.628041984836092), "269");
addFace(["557", "578", "8", "510"], "270");
setUVsToFace(new Point(0.618762075901031, 0.269138693809509), new Point(0.6056337573543, 0.250567665696145), new Point(0.71941339969635, 0.250567704439163), "270");
addFace(["1807", "2111", "1524", "1525"], "271");
setUVsToFace(new Point(0.986798628437843, 0.496899902820587), new Point(0.991174757480621, 0.503089308738708), new Point(0.964917838573456, 0.503089308738708), "271");
addFace(["1654", "1649", "231", "235"], "272");
setUVsToFace(new Point(0.849777824460652, 0.814520819823514), new Point(0.898930251598358, 0.815861225128174), new Point(0.864361643791199, 0.826217472553253), "272");
addFace(["1142", "115", "1164", "1160"], "273");
setUVsToFace(new Point(0.0912300050258636, 0.966069877147675), new Point(0.169202223420143, 0.965577960014343), new Point(0.15570442008441, 0.995629391973664), "273");
addFace(["1901", "2021", "338", "1906"], "274");
setUVsToFace(new Point(0.948954641819, 0.209521606564522), new Point(0.791413486003876, 0.209521606564522), new Point(0.791413486003876, 0.18326473236084), "274");
addFace(["384", "1745", "2180", "1792"], "275");
setUVsToFace(new Point(0.998999953269958, 0.436400592327118), new Point(0.999000012874603, 0.464079201221466), new Point(0.885220170021057, 0.464079201221466), "275");
addFace(["1256", "1267", "256", "1332"], "276");
setUVsToFace(new Point(0.37093397974968, 0.629625082015991), new Point(0.283411085605621, 0.629625100283334), new Point(0.283411085605621, 0.582492470741272), "276");
addFace(["682", "736", "2053", "156"], "279");
setUVsToFace(new Point(0.473128527402878, 0.400994390249252), new Point(0.477504670619965, 0.407183796167374), new Point(0.416238486766815, 0.407183855772018), "279");
addFace(["1440", "789", "1447", "320"], "280");
setUVsToFace(new Point(0.58544909954071, 0.995891034603119), new Point(0.541687667369843, 0.995891034603119), new Point(0.541687667369843, 0.977854073047638), "280");
addFace(["222", "676", "1113", "1169"], "281");
setUVsToFace(new Point(0.31644344329834, 0.0794097036123276), new Point(0.31644344329834, 0.053152821958065), new Point(0.473984688520432, 0.053152821958065), "281");
addFace(["636", "86", "634", "751"], "282");
setUVsToFace(new Point(0.473557651042938, 0.962386250495911), new Point(0.437481434255392, 0.961521249594575), new Point(0.437913924455643, 0.943483173847198), "282");
addFace(["1108", "1981", "1978", "1979", "965"], "284");
setUVsToFace(new Point(0.569898962974548, 0.0885229408740997), new Point(0.74494470407326, 0.0885229323937121), new Point(0.744944766103323, 0.132284396486999), "284");
addFace(["831", "565", "601", "836"], "285");
setUVsToFace(new Point(0.359741181135178, 0.474622130393982), new Point(0.408912003040314, 0.474622130393982), new Point(0.408911943435669, 0.518383622169495), "285");
addFace(["1419", "1446", "1447", "789"], "287");
setUVsToFace(new Point(0.984604060649872, 0.977380096912384), new Point(0.984329104423523, 0.995421290397644), new Point(0.948246657848358, 0.994871318340302), "287");
addFace(["408", "1784", "1894", "2185"], "288");
setUVsToFace(new Point(0.394437491893768, 0.870492815971375), new Point(0.358361223667317, 0.869627757717111), new Point(0.35879373550415, 0.851589679718018), "288");
addFace(["222", "1108", "1575", "676"], "291");
setUVsToFace(new Point(0.292163418851277, 0.839076936244965), new Point(0.283411115407944, 0.819506227970123), new Point(0.327172577381134, 0.819506227970123), "291");
addFace(["1231", "1542", "238", "1537"], "293");
setUVsToFace(new Point(0.247472316026688, 0.918526887893677), new Point(0.258629351854324, 0.951617836952209), new Point(0.194034882401693, 0.951544500492042), "293");
addFace(["1749", "1739", "1745", "384"], "294");
setUVsToFace(new Point(0.719693249990456, 0.952483080686088), new Point(0.702075242996216, 0.937376141548157), new Point(0.801929175853729, 0.937397420406342), "294");
addFace(["1055", "1054", "207", "208"], "295");
setUVsToFace(new Point(0.595103800296783, 0.974783420562744), new Point(0.55134242773056, 0.974783480167389), new Point(0.55134242773056, 0.956740200519562), "295");
addFace(["609", "613", "634", "861"], "296");
setUVsToFace(new Point(0.546960771083832, 0.865313351154327), new Point(0.500397264957428, 0.872615158557892), new Point(0.495219171047211, 0.85533082485199), "296");
addFace(["1083", "209", "2046", "1087"], "297");
setUVsToFace(new Point(0.798831637751659, 0.888227725329609), new Point(0.699048161506653, 0.891979157924652), new Point(0.716089487075806, 0.876224637031555), "297");
addFace(["1682", "2166", "1735", "1729"], "298");
setUVsToFace(new Point(0.965963959693909, 0.216916128993034), new Point(0.987573146820068, 0.244594752788544), new Point(0.952563882147495, 0.244594752788544), "298");
addFace(["624", "538", "537", "1585"], "300");
setUVsToFace(new Point(0.0912299975752831, 0.875671744346619), new Point(0.0912300273776054, 0.83958512544632), new Point(0.17875300347805, 0.839585244655609), "300");
addFace(["1317", "1319", "1373", "1372"], "301");
setUVsToFace(new Point(0.114779852330685, 0.293124079704285), new Point(0.114779852330685, 0.350013971328735), new Point(0.00100000004749745, 0.350013971328735), "301");
addFace(["502", "26", "503", "18"], "302");
setUVsToFace(new Point(0.394718617200851, 0.939742147922516), new Point(0.39444363117218, 0.957783401012421), new Point(0.358361214452398, 0.957233438961864), "302");
addFace(["1010", "1013", "1213", "173"], "303");
setUVsToFace(new Point(0.0885229259729385, 0.589249789714813), new Point(0.00100000854581594, 0.589249789714813), new Point(0.00100000854581594, 0.571206510066986), "303");
addFace(["924", "923", "2124", "1139"], "304");
setUVsToFace(new Point(0.472490459680557, 0.849090397357941), new Point(0.472490459680557, 0.876769065856934), new Point(0.43748140335083, 0.876769065856934), "304");
addFace(["1735", "363", "1727", "1729"], "305");
setUVsToFace(new Point(0.698395458518355, 0.930015271993235), new Point(0.598612010478973, 0.933766722679138), new Point(0.615653276443481, 0.918012142181396), "305");
addFace(["289", "1601", "1255", "1256"], "306");
setUVsToFace(new Point(0.646286189556122, 0.877564907073975), new Point(0.69543868303299, 0.878905296325684), new Point(0.66087003426842, 0.889261537397277), "306");
addFace(["18", "503", "24", "510"], "308");
setUVsToFace(new Point(0.950655281543732, 0.852292776107788), new Point(0.950655281543732, 0.834255814552307), new Point(0.994416832923889, 0.834255695343018), "308");
addFace(["81", "85", "628", "626"], "309");
setUVsToFace(new Point(0.394718608993246, 0.897158396264921), new Point(0.39444363117218, 0.915199637413025), new Point(0.358361214399338, 0.914649665355682), "309");
addFace(["1532", "1472", "1625", "1530"], "311");
setUVsToFace(new Point(0.794419705867767, 0.342963814735413), new Point(0.798795878887177, 0.349153190851212), new Point(0.737529814243317, 0.349153161048889), "311");
addFace(["2067", "2066", "187", "985"], "312");
setUVsToFace(new Point(0.613660279749922, 0.214208960533142), new Point(0.569898962974548, 0.214208960533142), new Point(0.583027422428131, 0.20647294819355), "312");
addFace(["421", "1807", "1525", "1618"], "313");
setUVsToFace(new Point(0.996652781963348, 0.649836659431458), new Point(0.944138944149017, 0.649836659431458), new Point(0.944138944149017, 0.63233208656311), "313");
addFace(["951", "1095", "1098", "1037"], "314");
setUVsToFace(new Point(0.193181082606327, 0.629625040678659), new Point(0.193181052803993, 0.582492470741272), new Point(0.280703991651535, 0.582492470741272), "314");
addFace(["191", "735", "732", "686"], "315");
setUVsToFace(new Point(0.18426850438118, 0.91717267036438), new Point(0.188644662499428, 0.923362135887146), new Point(0.162387809557192, 0.923362135887146), "315");
addFace(["1563", "1231", "235", "231"], "316");
setUVsToFace(new Point(0.424269199371338, 0.700931549072266), new Point(0.426389206533505, 0.745688536172054), new Point(0.358361214399338, 0.733986556529999), "316");
addFace(["956", "137", "900", "139"], "317");
setUVsToFace(new Point(0.991406202316284, 0.271845817565918), new Point(0.991406202316284, 0.284223407506943), new Point(0.903883337974548, 0.284223407506943), "317");
addFace(["317", "1663", "280", "1429"], "318");
setUVsToFace(new Point(0.544371664524078, 0.877564907073975), new Point(0.59352433681488, 0.878905296325684), new Point(0.558955628552365, 0.889261539463646), "318");
addFace(["425", "1041", "1040", "1837"], "319");
setUVsToFace(new Point(0.951010942459106, 0.618579149246216), new Point(0.863488018512726, 0.618579149246216), new Point(0.863487958908081, 0.582492470741272), "319");
addFace(["1758", "399", "2231", "1894"], "322");
setUVsToFace(new Point(0.413531452417374, 0.407751768827438), new Point(0.326008528470993, 0.407751768827438), new Point(0.326008528470993, 0.389708452821252), "322");
addFace(["823", "826", "571", "572"], "324");
setUVsToFace(new Point(0.881610751152039, 0.524578630924225), new Point(0.767830967903137, 0.52457857131958), new Point(0.767830967903137, 0.496899902820587), "324");
addFace(["1249", "1547", "1542", "1559"], "325");
setUVsToFace(new Point(0.555651009082794, 0.474622070789337), new Point(0.577095150947571, 0.527919352054596), new Point(0.505945152084438, 0.52291912490261), "325");
addFace(["557", "510", "844", "601"], "326");
setUVsToFace(new Point(0.353167712688446, 0.293124079704285), new Point(0.440690666437149, 0.293124079704285), new Point(0.440690636634827, 0.329209089279175), "326");
addFace(["1769", "367", "1689", "2009"], "327");
setUVsToFace(new Point(0.43748140335083, 0.79026186466217), new Point(0.43748140335083, 0.754175186157227), new Point(0.525004267692566, 0.754175126552582), "327");
addFace(["2238", "2234", "2000", "425"], "329");
setUVsToFace(new Point(0.68474954366684, 0.293124079704285), new Point(0.68474954366684, 0.336885511875153), new Point(0.635578751564026, 0.336885511875153), "329");
addFace(["571", "70", "58", "572"], "330");
setUVsToFace(new Point(0.232169076800346, 0.293124079704285), new Point(0.232169076800346, 0.350013971328735), new Point(0.118389271199703, 0.350013971328735), "330");
addFace(["408", "2185", "406", "1774"], "331");
setUVsToFace(new Point(0.0447615087032318, 0.944094717502594), new Point(0.0447615012526512, 0.96213161945343), new Point(0.00100000109523535, 0.96213161945343), "331");
addFace(["1093", "1065", "1064", "182"], "332");
setUVsToFace(new Point(0.118389241397381, 0.41412279009819), new Point(0.232169046998024, 0.41412279009819), new Point(0.232169046998024, 0.471012651920319), "332");
addFace(["429", "2231", "2234", "2238"], "333");
setUVsToFace(new Point(0.733920395374298, 0.293124079704285), new Point(0.733920395374298, 0.336885511875153), new Point(0.68474954366684, 0.336885511875153), "333");
addFace(["1376", "1364", "298", "1455"], "336");
setUVsToFace(new Point(0.43748140335083, 0.71267431974411), new Point(0.43748140335083, 0.684995710849762), new Point(0.551261246204376, 0.684995710849762), "336");
addFace(["50", "53", "565", "566"], "337");
setUVsToFace(new Point(0.319487333297729, 0.903943717479706), new Point(0.283411103053153, 0.903078661479612), new Point(0.283843606710434, 0.885040581226349), "337");
addFace(["110", "109", "798", "517"], "338");
setUVsToFace(new Point(0.967117846012115, 0.582492470741272), new Point(0.988727033138275, 0.61017107963562), new Point(0.953717874051966, 0.61017107963562), "338");
addFace(["601", "52", "559", "557"], "339");
setUVsToFace(new Point(0.473838840135038, 0.966539332392827), new Point(0.473563849925995, 0.984580516815186), new Point(0.43748140335083, 0.984030485153198), "339");
addFace(["462", "726", "1568", "497"], "340");
setUVsToFace(new Point(0.626904726028442, 0.625204622745514), new Point(0.558176755905151, 0.62493371963501), new Point(0.551393985748291, 0.582492470741272), "340");
addFace(["1906", "1910", "2002", "1901"], "341");
setUVsToFace(new Point(0.46974390745163, 0.150258526206017), new Point(0.478496223688126, 0.16982926428318), new Point(0.434734761714935, 0.16982926428318), "341");
addFace(["1087", "2046", "2047", "1085"], "342");
setUVsToFace(new Point(0.792315781116486, 0.0578898936510086), new Point(0.792315781116486, 0.00100000004749745), new Point(0.906095743179321, 0.00100000004749745), "342");
addFace(["106", "757", "2203", "696"], "343");
setUVsToFace(new Point(0.678115665912628, 0.674821496009827), new Point(0.682491779327393, 0.681011021137238), new Point(0.656234920024872, 0.681011021137238), "343");
addFace(["418", "2104", "1789", "1801"], "344");
setUVsToFace(new Point(0.219807311892509, 0.214208826422691), new Point(0.176045805215836, 0.214208796620369), new Point(0.189174324274063, 0.206472799181938), "344");
addFace(["1376", "1378", "303", "302"], "345");
setUVsToFace(new Point(0.656234920024872, 0.672114491462708), new Point(0.656234920024872, 0.65460991859436), new Point(0.755794525146484, 0.65460991859436), "345");
addFace(["24", "27", "844", "510"], "346");
setUVsToFace(new Point(0.21057017147541, 0.16982926428318), new Point(0.174493926329557, 0.168964267922248), new Point(0.174926429986954, 0.150926098227501), "346");
addFace(["1420", "613", "609", "1417"], "347");
setUVsToFace(new Point(0.412521362304688, 0.474622130393982), new Point(0.500044345855713, 0.474622130393982), new Point(0.500044345855713, 0.521754682064056), "347");
addFace(["499", "720", "726", "462"], "348");
setUVsToFace(new Point(0.0912299901247025, 0.931398630142212), new Point(0.158778354525566, 0.91717267036438), new Point(0.158326834440231, 0.96196848154068), "348");
addFace(["1316", "1308", "1319", "1317"], "349");
setUVsToFace(new Point(0.595002545793094, 0.930015262055712), new Point(0.495219171047211, 0.933766722679138), new Point(0.512260496616364, 0.918012142181396), "349");
addFace(["686", "732", "688", "687"], "350");
setUVsToFace(new Point(0.586800515651703, 0.463962465524673), new Point(0.591176688671112, 0.470151901245117), new Point(0.529910605833519, 0.470151842492006), "350");
addFace(["58", "70", "640", "788", "59", "62"], "351");
setUVsToFace(new Point(0.206678852438927, 0.21691632270813), new Point(0.320458650588989, 0.216916292905807), new Point(0.320458640768947, 0.240124311672267), "351");
addFace(["1816", "1778", "1774", "406"], "353");
setUVsToFace(new Point(0.433783143758774, 0.91845029592514), new Point(0.433508157730103, 0.936491549015045), new Point(0.397425741010139, 0.935941527357264), "353");
addFace(["1249", "1300", "1299", "1547"], "354");
setUVsToFace(new Point(0.250070929527283, 0.955227272501367), new Point(0.250070929527283, 0.976626336574554), new Point(0.193181052803993, 0.976626336574554), "354");
addFace(["1979", "1978", "1207", "1205"], "355");
setUVsToFace(new Point(0.0912300050258636, 0.626253962516785), new Point(0.0912299975752831, 0.582492470741272), new Point(0.140400839396661, 0.582492487702054), "355");
addFace(["1689", "367", "1771", "1696"], "356");
setUVsToFace(new Point(0.899846851825714, 0.748834070545293), new Point(0.812323927879333, 0.748834073543549), new Point(0.812323927879333, 0.736456513404846), "356");
addFace(["85", "81", "634", "86"], "358");
setUVsToFace(new Point(0.538980603218079, 0.977854132652283), new Point(0.538980603218079, 0.995897471904755), new Point(0.495219171047211, 0.99589741230011), "358");
addFace(["238", "1542", "1547", "244"], "360");
setUVsToFace(new Point(0.320856392383575, 0.63233208656311), new Point(0.354751825332642, 0.687311887741089), new Point(0.283394431508186, 0.687010697304785), "360");
addFace(["1480", "324", "1467", "1476"], "361");
setUVsToFace(new Point(0.697269283527114, 0.80497204868825), new Point(0.597485840320587, 0.808723509311676), new Point(0.614527106285095, 0.792968928813934), "361");
addFace(["311", "1428", "1668", "1417"], "362");
setUVsToFace(new Point(0.773783087730408, 0.717438280582428), new Point(0.80871456861496, 0.726495921611786), new Point(0.759646356105804, 0.729671537876129), "362");
addFace(["601", "7", "556", "836"], "367");
setUVsToFace(new Point(0.842393219470978, 0.649797797203064), new Point(0.846921946534708, 0.63233219699629), new Point(0.89372581243515, 0.637889325618744), "367");
addFace(["456", "1682", "1687", "1969"], "368");
setUVsToFace(new Point(0.781300783157349, 0.400594830513), new Point(0.710370540618896, 0.408243536949158), new Point(0.729794326561779, 0.354177211683164), "368");
addFace(["1256", "1255", "251", "1267"], "369");
setUVsToFace(new Point(0.799082517623901, 0.775250315666199), new Point(0.799082517623901, 0.787627875804901), new Point(0.711559653282166, 0.787627872806645), "369");
addFace(["1439", "285", "1492", "1359"], "370");
setUVsToFace(new Point(0.997228145599365, 0.0975843751435229), new Point(0.997228145599365, 0.115627698600292), new Point(0.909705102443695, 0.115627683699131), "370");
addFace(["764", "762", "112", "763"], "371");
setUVsToFace(new Point(0.088522959813931, 0.135893825956504), new Point(0.036009032279253, 0.144646123051643), new Point(0.00100000004749745, 0.135893821716309), "371");
addFace(["23", "497", "1570", "849"], "372");
setUVsToFace(new Point(0.582798480987549, 0.336885541677475), new Point(0.53362762928009, 0.336885541677475), new Point(0.53362763429517, 0.293124092545844), "372");
addFace(["654", "646", "71", "655"], "373");
setUVsToFace(new Point(0.821537174368257, 0.912225333357223), new Point(0.80391925573349, 0.897118330001831), new Point(0.903773188591003, 0.897139728069305), "373");
addFace(["2231", "399", "397", "2234"], "374");
setUVsToFace(new Point(0.711559593677521, 0.77164089679718), new Point(0.7160884141922, 0.754175126552582), new Point(0.762892186641693, 0.75973242521286), "374");
addFace(["538", "624", "860", "541"], "375");
setUVsToFace(new Point(0.821706533432007, 0.656666874885559), new Point(0.856637954711914, 0.665724515914917), new Point(0.807569754474682, 0.668900034173568), "375");
addFace(["1829", "1749", "384", "1792"], "376");
setUVsToFace(new Point(0.00100000004749745, 0.353623449802399), new Point(0.114779852330685, 0.353623449802399), new Point(0.114779852330685, 0.410513311624527), "376");
addFace(["2238", "425", "1837", "1830"], "377");
setUVsToFace(new Point(0.646117448806763, 0.835596024990082), new Point(0.69527006149292, 0.836936414241791), new Point(0.660701334476471, 0.84729266166687), "377");
addFace(["544", "543", "565", "831"], "379");
setUVsToFace(new Point(0.911988973617554, 0.664592444896698), new Point(0.865425407886505, 0.671894252300262), new Point(0.860247373580933, 0.65460991859436), "379");
addFace(["578", "533", "529", "8"], "380");
setUVsToFace(new Point(0.768733203411102, 0.464079201221466), new Point(0.768733203411102, 0.436400592327118), new Point(0.882512927055359, 0.436400651931763), "380");
addFace(["909", "913", "910", "2129"], "381");
setUVsToFace(new Point(0.275725871324539, 0.99823659658432), new Point(0.239649623632431, 0.99737161397934), new Point(0.24008212728994, 0.979333533722697), "381");
addFace(["1118", "1575", "1108"], "383");
setUVsToFace(new Point(0.482376009225845, 0.0447614714503288), new Point(0.569898962974548, 0.0447614602744579), new Point(0.569898962974548, 0.0885229408740997), "383");
addFace(["1219", "1044", "1045", "1037"], "384");
setUVsToFace(new Point(0.747863292694092, 0.814520835876465), new Point(0.797015845775604, 0.815861225128174), new Point(0.762446994740174, 0.826217465873273), "384");
addFace(["2034", "1830", "1030", "198"], "385");
setUVsToFace(new Point(0.825052738189697, 0.293124079704285), new Point(0.825052797794342, 0.340256631374359), new Point(0.737529873847961, 0.340256661176682), "385");
addFace(["1037", "1098", "1054", "1219"], "386");
setUVsToFace(new Point(0.750452220439911, 0.823163032531738), new Point(0.703888773918152, 0.830464839935303), new Point(0.698710739612579, 0.813180506229401), "386");
addFace(["2231", "437", "1847", "2191"], "387");
setUVsToFace(new Point(0.394718587398529, 0.91845029592514), new Point(0.39444363117218, 0.936491549015045), new Point(0.358361231859848, 0.935941530253797), "387");
addFace(["1359", "1492", "1330", "1638"], "388");
setUVsToFace(new Point(0.495219171047211, 0.830646216869354), new Point(0.499747993614097, 0.813180589267472), new Point(0.546551764011383, 0.818737864494324), "388");
addFace(["273", "1411", "1295", "1313"], "389");
setUVsToFace(new Point(0.692431092262268, 0.144646123051643), new Point(0.613660503280307, 0.135893821716309), new Point(0.701183378696442, 0.135893821716309), "389");
addFace(["1446", "1419", "1439", "1442"], "390");
setUVsToFace(new Point(0.849300026893616, 0.977206587791443), new Point(0.849299967288971, 0.995249927043915), new Point(0.805538535118103, 0.99524986743927), "390");
addFace(["861", "634", "81", "860"], "391");
setUVsToFace(new Point(0.47713041305542, 0.41412279009819), new Point(0.526301234960556, 0.41412279009819), new Point(0.526301205158234, 0.457884222269058), "391");
addFace(["1429", "1330", "1492", "285"], "393");
setUVsToFace(new Point(0.707663536071777, 0.400755971670151), new Point(0.620140612125397, 0.400755971670151), new Point(0.620140731334686, 0.353623449802399), "393");
addFace(["883", "1142", "2052"], "394");
setUVsToFace(new Point(0.81330543756485, 0.776271402835846), new Point(0.866214156150818, 0.775250315666199), new Point(0.859171390533447, 0.786921560764313), "394");
addFace(["1975", "1164", "115"], "395");
setUVsToFace(new Point(0.792315781116486, 0.132814958691597), new Point(0.80347752571106, 0.121998660266399), new Point(0.83524626493454, 0.130755066871643), "395");
addFace(["8", "521", "522", "798"], "398");
setUVsToFace(new Point(0.373641043901443, 0.604770243167877), new Point(0.473200649023056, 0.604770243167877), new Point(0.473200649023056, 0.622275054454803), "398");
addFace(["2224", "2226", "1720", "1716"], "399");
setUVsToFace(new Point(0.375179260969162, 0.457884281873703), new Point(0.375179260969162, 0.41412279009819), new Point(0.424350082874298, 0.41412279009819), "399");
addFace(["2231", "429", "1857", "437"], "400");
setUVsToFace(new Point(0.905423223972321, 0.974135875701904), new Point(0.861661791801453, 0.974135935306549), new Point(0.861661732196808, 0.956092655658722), "400");
addFace(["578", "579", "55", "533"], "401");
setUVsToFace(new Point(0.595002545411209, 0.949379271155398), new Point(0.495219171047211, 0.953130722045898), new Point(0.512260496616364, 0.937376141548157), "401");
addFace(["2047", "1865", "2164", "1085"], "402");
setUVsToFace(new Point(0.616229901709113, 0.971199507522292), new Point(0.598612010478973, 0.956092536449432), new Point(0.698465883731842, 0.956113874912262), "402");
addFace(["1740", "1622", "273", "272"], "403");
setUVsToFace(new Point(0.575849000879443, 0.705207347869873), new Point(0.580225169658661, 0.711396813392639), new Point(0.55396831035614, 0.711396813392639), "403");
addFace(["1359", "295", "291", "1498"], "404");
setUVsToFace(new Point(0.319768488407135, 0.908096730709076), new Point(0.319493532180786, 0.926137983798981), new Point(0.283411085605621, 0.925587952136993), "404");
addFace(["454", "2002", "1910", "1917"], "405");
setUVsToFace(new Point(0.307330191135406, 0.0885229350891951), new Point(0.219807282090187, 0.0885229408740997), new Point(0.219807282090187, 0.0447614602744579), "405");
addFace(["1604", "1649", "1654", "1647"], "406");
setUVsToFace(new Point(0.208619251847267, 0.518383622169495), new Point(0.208619266748428, 0.47462210059166), new Point(0.257790108569804, 0.47462210059166), "406");
addFace(["62", "59", "770", "579"], "407");
setUVsToFace(new Point(0.206678865814525, 0.240124338865285), new Point(0.219807296991348, 0.247860342264175), new Point(0.176045835018158, 0.247860357165337), "407");
addFace(["108", "708", "720", "700"], "408");
setUVsToFace(new Point(0.668440653190232, 0.0563425690417943), new Point(0.732987284660339, 0.0538562685251236), new Point(0.723074197769165, 0.0873409062623978), "408");
addFace(["1720", "372", "1761", "1816"], "409");
setUVsToFace(new Point(0.530920565128326, 0.329209089279175), new Point(0.530920565128326, 0.347252428531647), new Point(0.443397700786591, 0.347252430716996), "409");
addFace(["1196", "163", "965"], "410");
setUVsToFace(new Point(0.242351889610291, 0.578882932662964), new Point(0.193181082606316, 0.578882932662964), new Point(0.193181052803993, 0.535121500492096), "410");
addFace(["1886", "416", "1803", "1786"], "411");
setUVsToFace(new Point(0.00100000004749745, 0.41412279009819), new Point(0.114779815077782, 0.41412279009819), new Point(0.114779815077782, 0.471012651920319), "411");
addFace(["81", "616", "541", "860"], "412");
setUVsToFace(new Point(0.758501589298248, 0.672075688838959), new Point(0.763030426760235, 0.654610069349073), new Point(0.809834182262421, 0.660167217254639), "412");
addFace(["320", "1442", "1439", "1440"], "414");
setUVsToFace(new Point(0.394437491893768, 0.893005430698395), new Point(0.358361214399338, 0.89214038848877), new Point(0.358793700511625, 0.874102251989927), "414");
addFace(["26", "502", "844", "27"], "417");
setUVsToFace(new Point(0.948116898536682, 0.855330884456635), new Point(0.948116898536682, 0.873374283313751), new Point(0.904355466365814, 0.873374223709106), "417");
addFace(["1524", "1625", "1453", "326"], "418");
setUVsToFace(new Point(0.56114673614502, 0.144646123051643), new Point(0.491128385066986, 0.144646123051643), new Point(0.438614635448341, 0.135893828137089), "418");
addFace(["1054", "1055", "1214", "1219"], "419");
setUVsToFace(new Point(0.890657544136047, 0.13589383661747), new Point(0.890657544136047, 0.179655283689499), new Point(0.841486692428589, 0.179655283689499), "419");
addFace(["839", "479", "13", "1570"], "420");
setUVsToFace(new Point(0.193181052803993, 0.867414474487305), new Point(0.193181097507477, 0.831327855587006), new Point(0.280703991651535, 0.83132791519165), "420");
addFace(["406", "1721", "1720", "1816"], "421");
setUVsToFace(new Point(0.443397700786591, 0.293124079704285), new Point(0.530920565128326, 0.293124079704285), new Point(0.530920565128326, 0.329209089279175), "421");
addFace(["2212", "2211", "1894", "1816"], "422");
setUVsToFace(new Point(0.465409398078918, 0.397384941577911), new Point(0.465409338474274, 0.353623449802399), new Point(0.514580130577087, 0.353623449802399), "422");
addFace(["95", "757", "106", "691"], "424");
setUVsToFace(new Point(0.579455614089966, 0.407183766365051), new Point(0.518189528204821, 0.407183735592979), new Point(0.52256566286087, 0.400994300842285), "424");
addFace(["2191", "2185", "1894", "2231"], "425");
setUVsToFace(new Point(0.326008528470993, 0.353623449802399), new Point(0.413531452417374, 0.353623441061408), new Point(0.413531452417374, 0.389708459377289), "425");
addFace(["1213", "1013", "139", "1205"], "426");
setUVsToFace(new Point(0.495219171047211, 0.851721465587616), new Point(0.49974799156189, 0.834255695343018), new Point(0.546551764011383, 0.839812994003296), "426");
addFace(["1283", "237", "1537"], "428");
setUVsToFace(new Point(0.956176280975342, 0.406134933233261), new Point(0.938132882118225, 0.406135499477386), new Point(0.965198338031769, 0.353623449802399), "428");
addFace(["1975", "115", "905", "1978"], "429");
setUVsToFace(new Point(0.550012230873108, 0.535121440887451), new Point(0.541572004644102, 0.577271644942215), new Point(0.472885012626648, 0.574840545654297), "429");
addFace(["606", "521", "8", "529"], "430");
setUVsToFace(new Point(0.823085909523174, 0.933119081666935), new Point(0.805468022823334, 0.918012142181396), new Point(0.905321896076202, 0.918033421039581), "430");
addFace(["2002", "450", "2021", "1901"], "432");
setUVsToFace(new Point(0.373641043901443, 0.582492470741272), new Point(0.548686921596527, 0.582492470741272), new Point(0.539934515953064, 0.602063179016113), "432");
addFace(["1400", "1647", "1654", "1283"], "433");
setUVsToFace(new Point(0.306960880756378, 0.518383622169495), new Point(0.257790088653564, 0.518383622169495), new Point(0.257790088653564, 0.47462210059166), "433");
addFace(["502", "467", "499", "23"], "434");
setUVsToFace(new Point(0.812323927879333, 0.732847094535828), new Point(0.81685263599195, 0.715381374455249), new Point(0.863656520843506, 0.720938682556152), "434");
addFace(["2180", "1789", "1829", "1792"], "435");
setUVsToFace(new Point(0.800662096010838, 0.804972058625773), new Point(0.700878620147705, 0.808723509311676), new Point(0.717919945716858, 0.792968928813934), "435");
addFace(["688", "95", "219", "1004"], "436");
setUVsToFace(new Point(0.228559628129005, 0.144646123051643), new Point(0.298577964305878, 0.144646123051643), new Point(0.298577964305878, 0.170902997255325), "436");
addFace(["303", "1411", "1487", "302"], "438");
setUVsToFace(new Point(0.600531935691833, 0.240124195814133), new Point(0.613660415741265, 0.247860226143473), new Point(0.569898962974548, 0.247860208153725), "438");
addFace(["450", "1926", "233", "2019"], "439");
setUVsToFace(new Point(0.0447613671422005, 0.0885229319697977), new Point(0.00100000004749745, 0.0928990766406059), new Point(0.00100000004749745, 0.0403853207826614), "439");
addFace(["680", "765", "736", "682"], "440");
setUVsToFace(new Point(0.678115665912628, 0.706070899963379), new Point(0.682491779327393, 0.712260365486145), new Point(0.656234920024872, 0.712260365486145), "440");
addFace(["1249", "1559", "1250"], "582");
setUVsToFace(new Point(0.667544424533844, 0.0499332919716835), new Point(0.630113780498505, 0.0873409062623978), new Point(0.627101004123688, 0.0740464478731155), "582");
addFace(["233", "343", "1563"], "583");
setUVsToFace(new Point(0.90773469209671, 0.803785145282745), new Point(0.918896377086639, 0.792968928813934), new Point(0.950665175914764, 0.801725327968597), "583");
addFace(["1622", "1621", "309"], "610");
setUVsToFace(new Point(0.692431092262268, 0.170902997255325), new Point(0.622412741184235, 0.170902997255325), new Point(0.622412741184235, 0.144646123051643), "610");
addFace(["1933", "1678", "1716"], "636");
setUVsToFace(new Point(0.028065474703908, 0.894101321697235), new Point(0.00100000004749745, 0.841589212417603), new Point(0.0190433114767075, 0.84158980846405), "636");
addFace(["1687", "1954", "1969"], "778");
setUVsToFace(new Point(0.911126732826233, 0.401567906141281), new Point(0.864878416061401, 0.410411685705185), new Point(0.858298718929291, 0.398473232984543), "778");
addFace(["1926", "1960", "1966"], "779");
setUVsToFace(new Point(0.368985891342163, 0.471885472536087), new Point(0.326008498668671, 0.471430778503418), new Point(0.357427924871445, 0.461493730545044), "779");
addFace(["2034", "2042", "429"], "815");
setUVsToFace(new Point(0.205912172794342, 0.528750419616699), new Point(0.205912172794342, 0.47462210059166), new Point(0.205912172794342, 0.510707139968872), "815");
addFace(["2142", "920", "940"], "848");
setUVsToFace(new Point(0.181147500872612, 0.290416985750198), new Point(0.0936245769262314, 0.290417015552521), new Point(0.0804961621761322, 0.27184596657753), "848");
addFace(["2203", "757", "1472"], "871");
setUVsToFace(new Point(0.359843969345093, 0.170902997255325), new Point(0.359843969345093, 0.144646123051643), new Point(0.429862320423126, 0.144646123051643), "871");
addFace(["981", "173", "179", "180"], "884");
setUVsToFace(new Point(0.946301221847534, 0.831223905086517), new Point(0.902539789676666, 0.831223964691162), new Point(0.902539730072021, 0.813180565834045), "884");
addSurface(["217", "405", "109", "216", "55", "582", "156", "195", "125", "236", "157", "197", "237", "25", "262", "269", "136", "388", "279", "149", "268", "64", "204", "130", "313", "425", "137", "65", "189", "263", "199", "34", "389", "285", "435", "266", "131", "35", "432", "20", "28", "267", "164", "90", "91", "152", "134", "276", "227", "52", "205", "153", "165", "337", "179", "436", "226", "200", "288", "72", "429", "408", "135", "336", "348", "100", "2", "316", "298", "112", "301", "0", "239", "201", "5", "101", "367", "297", "113", "256", "296", "74", "324", "75", "61", "358", "314", "116", "140", "384", "309", "4", "422", "117", "341", "167", "213", "12", "295", "168", "162", "27", "282", "332", "141", "325", "26", "247", "304", "212", "110", "398", "169", "126", "409", "393", "349", "42", "115", "273", "399", "73", "387", "146", "272", "440", "439", "114", "111", "347", "311", "98", "362", "43", "438", "127", "300", "7", "53", "346", "417", "143", "329", "102", "412", "305", "403", "144", "884", "145", "8", "37", "411", "81", "80", "356", "183", "400", "401", "430", "30", "202", "166", "330", "308", "44", "36", "271", "338", "76", "402", "203", "355", "318", "414", "142", "354", "293", "45", "215", "254", "99", "154", "191", "188", "345", "433", "139", "138", "390", "255", "196", "434", "353", "381", "193", "132", "70", "57", "31", "270", "333", "133", "187", "779", "370", "385", "361", "265", "360", "287", "225", "68", "312", "331", "69", "160", "147", "94", "50", "410", "155", "219", "379", "218", "161", "291", "95", "319", "170", "190", "371", "372", "224", "206", "232", "192", "848", "251", "238", "10", "394", "58", "243", "391", "322", "56", "249", "344", "84", "6", "426", "158", "339", "250", "317", "66", "14", "778", "260", "386", "41", "59", "67", "252", "18", "261", "11", "342", "104", "105", "85", "93", "46", "294", "302", "182", "92", "233", "306", "258", "32", "214", "19", "15", "428", "815", "368", "315", "350", "234", "343", "23", "151", "610", "240", "253", "51", "340", "97", "871", "176", "369", "257", "96", "583", "351", "38", "103", "177", "259", "62", "407", "86", "47", "395", "39", "79", "78", "241", "406", "63", "245", "9", "274", "71", "120", "82", "228", "222", "275", "1", "121", "246", "242", "418", "83", "48", "181", "175", "373", "184", "40", "229", "77", "208", "185", "209", "118", "13", "174", "223", "419", "303", "159", "280", "383", "221", "420", "326", "163", "123", "89", "374", "24", "87", "281", "180", "16", "230", "198", "231", "122", "171", "17", "284", "421", "172", "22", "119", "60", "107", "33", "376", "375", "106", "178", "235", "3", "88", "327", "128", "377", "129", "49", "636", "380", "244", "404", "424", "29", "220", "108", "124", "148", "186", "54", "207", "264", "150", "173", "194", "211", "210"], "Bunker");
setMaterialToSurface(material, "Bunker");
}
private function onLoadComplete(_arg1:Event):void{
material.texture = new TextureData(Bitmap(loader.content).bitmapData);
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("bunker.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading bunker texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
}
}//package bunker
Section 2
//BunkerMesh_Bmp (bunker.BunkerMesh_Bmp)
package bunker {
import mx.core.*;
public class BunkerMesh_Bmp extends BitmapAsset {
}
}//package bunker
Section 3
//BunkerWindows (bunker.BunkerWindows)
package bunker {
import com.alternativagame.engine3d.*;
public class BunkerWindows extends Mesh {
public function BunkerWindows(){
super("BunkerWindows");
mobile = 1;
addVertex(283.464545654249, 236.220511840773, 165.35434667964, "0");
addVertex(283.464545654249, 314.960669921828, 165.35434667964, "1");
addVertex(299.212592529249, 314.960639404249, 102.362220214796, "2");
addVertex(299.212592529249, 236.220496581984, 102.362235473585, "3");
addVertex(283.464545654249, 3.0517578125E-5, 165.354407714796, "4");
addVertex(283.464545654249, 78.7401727904798, 165.354392456007, "5");
addVertex(299.212592529249, 78.7401727904798, 102.362273620558, "6");
addVertex(299.212592529249, 3.0517578125E-5, 102.362288879347, "7");
addVertex(283.464545654249, -236.220451904344, 165.354438232374, "8");
addVertex(283.464545654249, -157.480339599657, 165.354438232374, "9");
addVertex(299.212592529249, -157.480339599657, 102.362319396925, "10");
addVertex(299.212592529249, -236.220451904344, 102.362334655714, "11");
addVertex(-283.464531494188, 236.220511840773, 165.35434667964, "12");
addVertex(-283.464531494188, 314.960669921828, 165.35434667964, "13");
addVertex(-299.212578369188, 314.960639404249, 102.362220214796, "14");
addVertex(-299.212578369188, 236.220496581984, 102.362235473585, "15");
addVertex(-283.464531494188, 3.0517578125E-5, 165.354407714796, "16");
addVertex(-283.464531494188, 78.7401727904798, 165.354392456007, "17");
addVertex(-299.212578369188, 78.7401727904798, 102.362273620558, "18");
addVertex(-299.212578369188, 3.0517578125E-5, 102.362288879347, "19");
addVertex(-283.464531494188, -236.220451904344, 165.354438232374, "20");
addVertex(-283.464531494188, -157.480339599657, 165.354438232374, "21");
addVertex(-299.212578369188, -157.480339599657, 102.362319396925, "22");
addVertex(-299.212578369188, -236.220451904344, 102.362334655714, "23");
addVertex(283.464545654249, -866.14174707036, 165.354529785109, "24");
addVertex(283.464545654249, -944.88198144536, 165.354560302687, "25");
addVertex(299.212592529249, -944.88198144536, 102.362426208449, "26");
addVertex(299.212592529249, -866.14174707036, 102.362418579054, "27");
addVertex(283.464545654249, -629.921288085985, 165.354499267531, "28");
addVertex(283.464545654249, -708.661522460985, 165.354529785109, "29");
addVertex(299.212592529249, -708.661522460985, 102.36239569087, "30");
addVertex(299.212592529249, -629.921288085985, 102.362388061476, "31");
addVertex(283.464545654249, -393.700798584032, 165.354468749953, "32");
addVertex(283.464545654249, -472.440910888719, 165.354484008742, "33");
addVertex(299.212592529249, -472.440910888719, 102.362365173292, "34");
addVertex(299.212592529249, -393.700798584032, 102.362357543898, "35");
addVertex(-283.464531494188, -944.88198144536, 165.354560302687, "36");
addVertex(-283.464531494188, -866.14174707036, 165.354529785109, "37");
addVertex(-299.212578369188, -944.88198144536, 102.362426208449, "38");
addVertex(-299.212578369188, -866.14174707036, 102.362418579054, "39");
addVertex(-283.464531494188, -708.661522460985, 165.354529785109, "40");
addVertex(-283.464531494188, -629.921288085985, 165.354499267531, "41");
addVertex(-299.212578369188, -708.661522460985, 102.36239569087, "42");
addVertex(-299.212578369188, -629.921288085985, 102.362388061476, "43");
addVertex(-283.464531494188, -472.440910888719, 165.354484008742, "44");
addVertex(-283.464531494188, -393.700798584032, 165.354468749953, "45");
addVertex(-299.212578369188, -472.440910888719, 102.362365173292, "46");
addVertex(-299.212578369188, -393.700798584032, 102.362357543898, "47");
addFace(["9", "10", "11", "8"], "16");
addFace(["37", "36", "38", "39"], "1");
addFace(["30", "29", "28", "31"], "2");
addFace(["45", "44", "46", "47"], "3");
addFace(["6", "7", "4", "5"], "4");
addFace(["26", "25", "24", "27"], "5");
addFace(["0", "1", "2", "3"], "6");
addFace(["23", "22", "21", "20"], "0");
addFace(["34", "33", "32", "35"], "24");
addFace(["41", "40", "42", "43"], "12");
addFace(["17", "16", "19", "18"], "13");
addFace(["14", "13", "12", "15"], "8");
addSurface(["24", "16", "2", "3", "5", "12", "13", "8", "6", "0", "1", "4"], "BunkerWindows");
setMaterialToSurface(new FillMaterial(0xFFFFFF), "BunkerWindows");
}
}
}//package bunker
Section 4
//Core (bunker.Core)
package bunker {
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.display.*;
public class Core extends Mesh {
public function Core(){
super("Core");
coords = new Point3D(4.13731169549708E-13, 2322.83471679688, -433.070861816406);
addVertex(78.7401580810543, 0, 0, "0");
addVertex(68.1909790039058, 39.3701171875, 0, "1");
addVertex(39.3700752258297, 68.19091796875, 0, "2");
addVertex(-3.44184168616469E-6, 78.740234375, 0, "3");
addVertex(-39.370082855225, 68.19091796875, 0, "4");
addVertex(-68.1909790039067, 39.3701171875, 0, "5");
addVertex(-78.7401580810551, 0, 0, "6");
addVertex(-68.1909866333012, -39.3701171875, 0, "7");
addVertex(-39.3701019287113, -68.19091796875, 0, "8");
addVertex(-3.66072676614769E-5, -78.740234375, 0, "9");
addVertex(39.3700408935543, -68.19091796875, 0, "10");
addVertex(68.1909484863277, -39.3701171875, 0, "11");
addVertex(78.7401580810543, 0, 409.448822021484, "12");
addVertex(68.1909790039058, 39.3701171875, 409.448822021484, "13");
addVertex(39.3700752258297, 68.19091796875, 409.448822021484, "14");
addVertex(-39.370082855225, 68.19091796875, 409.448822021484, "16");
addVertex(-68.1909790039067, 39.3701171875, 409.448822021484, "17");
addVertex(-78.7401580810551, 0, 409.448822021484, "18");
addVertex(-68.1909866333012, -39.3701171875, 409.448822021484, "19");
addVertex(-39.3701019287113, -68.19091796875, 409.448822021484, "20");
addVertex(-3.66072676614769E-5, -78.740234375, 409.448822021484, "21");
addVertex(39.3700408935543, -68.19091796875, 409.448822021484, "22");
addVertex(68.1909484863277, -39.3701171875, 409.448822021484, "23");
addVertex(-3.44184259565939E-6, 78.740234375, 409.448822021484, "25");
addFace(["7", "19", "18", "6"], "0");
addFace(["23", "11", "0", "12"], "1");
addFace(["12", "0", "1", "13"], "2");
addFace(["17", "5", "6", "18"], "3");
addFace(["2", "14", "13", "1"], "4");
addFace(["11", "23", "22", "10"], "5");
addFace(["3", "25", "14", "2"], "24");
addFace(["20", "8", "9", "21"], "8");
addFace(["10", "22", "21", "9"], "10");
addFace(["19", "7", "8", "20"], "11");
addFace(["16", "4", "5", "17"], "12");
addFace(["25", "3", "4", "16"], "9");
addSurface(["24", "9", "4", "2", "0", "1", "3", "5", "10", "11", "12", "8"], "Core");
setMaterialToSurface(new FillMaterial(1965853, 0.25, BlendMode.ADD), "Core");
}
}
}//package bunker
Section 5
//Energy (bunker.Energy)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import com.alternativagame.utility.*;
import com.alternativagame.engine3d.primitive.*;
import flash.filters.*;
public class Energy extends Plane {
private var shape:Shape;
public var material:TextureMaterial;
private var gfx:Graphics;
private static const bitmapHeight:uint = 307;
private static const bitmapWidth:uint = 90;
private static const texture:TextureData = new TextureData(new BitmapData(bitmapWidth, bitmapHeight, false, 0));
private static const xd:Number = 25;
private static const glowSize:Number = 20;
public function Energy(){
material = new TextureMaterial(texture, 1, false, false, 15, BlendMode.ADD);
shape = new Shape();
gfx = shape.graphics;
super(120, 409, 1, 1, false);
mobile = 100;
rotX = MathUtility.degree90;
y = 2322.835;
z = -228.346;
setMaterialToSurface(material, "front");
shape.filters = [new GlowFilter(15658547, 1, glowSize, glowSize, 2, 1)];
}
public function startAnimation():void{
shape.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(_arg1:Event):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
gfx.clear();
var _local2:uint = MathUtility.random(3, 6);
var _local3:uint;
while (_local3 < _local2) {
_local4 = Math.random();
_local5 = MathUtility.random((-(xd) * (1 - _local4)), (xd * (1 - _local4)));
_local6 = glowSize;
gfx.moveTo(_local5, _local6);
gfx.lineStyle((_local4 * 8), 0xFFFFFF, _local4);
while (_local6 < ((bitmapHeight - glowSize) - (bitmapHeight / 10))) {
_local6 = (_local6 + MathUtility.random(5, (bitmapHeight / 10)));
_local5 = (_local5 + MathUtility.random((-((1 - _local4)) * 15), ((1 - _local4) * 15)));
_local5 = ((_local5)<-(xd)) ? -(xd) : ((_local5)>xd) ? xd : _local5;
gfx.lineTo(_local5, _local6);
};
_local5 = (_local5 + MathUtility.random(-10, 10));
gfx.lineTo(_local5, (bitmapHeight - 10));
_local3++;
};
texture.bitmapData.fillRect(texture.bitmapData.rect, 0);
texture.bitmapData.draw(shape, new Matrix(1, 0, 0, 1, (bitmapWidth * 0.5)));
}
public function stopAnimation():void{
shape.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}//package bunker
Section 6
//Entrance (bunker.Entrance)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class Entrance extends Mesh {
private var loader:Loader;
private var onLoadMethod:Function;
public var material:TextureMaterial;
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = Entrance_Bmp;
public function Entrance(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Entrance");
mobile = 2;
coords = new Point3D(362.204772949219, -1921.26000976563, 78.7401580810547);
addVertex(354.330688476563, -141.732055664063, 62.9921264648438, "256");
addVertex(-47.2441253662109, -307.086547851563, -78.7399368286133, "762");
addVertex(338.582641601563, 62.9923095703125, -78.7401580810547, "3");
addVertex(338.582641601563, 78.7403564453125, -62.9921264648438, "260");
addVertex(343.195190429688, -168.615600585938, -62.9921264648438, "5");
addVertex(354.330688476563, 62.9923095703125, 62.9921264648438, "262");
addVertex(174.156097412109, 272.643310546875, -11.8110198974609, "8");
addVertex(217.85205078125, 144.413696289063, -11.81103515625, "9");
addVertex(217.85205078125, 144.413696289063, 11.81103515625, "10");
addVertex(354.330688476563, -141.732055664063, -62.9921264648438, "267");
addVertex(195.405151367188, 137.0673828125, 11.8110198974609, "12");
addVertex(195.405151367188, 137.0673828125, -11.81103515625, "13");
addVertex(-338.582702636719, 62.9923095703125, -78.7401580810547, "518");
addVertex(102.362182617188, 314.960815429688, 62.9921264648438, "783");
addVertex(-354.330749511719, 62.9923095703125, 62.9921264648438, "528");
addVertex(338.582702636719, -150.957153320313, -78.7401580810547, "265");
addVertex(-207.986022949219, -303.825073242188, -62.9921264648438, "515");
addVertex(43.1441650390625, 314.960815429688, 62.9923553466797, "781");
addVertex(212.598388671875, 78.7403564453125, -62.9921264648438, "22");
addVertex(-62.9921569824219, -307.086547851563, -55.6296920776367, "774");
addVertex(-338.582702636719, -150.957153320313, -78.7401580810547, "536");
addVertex(123.228302001953, 299.6064453125, -62.9921264648438, "281");
addVertex(-343.195251464844, -168.615600585938, 62.9921264648438, "541");
addVertex(354.330688476563, 62.9923095703125, -62.9921264648438, "261");
addVertex(-43.1442260742188, 314.960815429688, 62.9923553466797, "801");
addVertex(106.759643554688, 299.212768554688, 78.7401580810547, "290");
addVertex(343.195190429688, -168.615600585938, 62.9921264648438, "35");
addVertex(212.598388671875, 78.7403564453125, 62.9921264648438, "293");
addVertex(191.732269287109, 94.0946044921875, 63.4461669921875, "294");
addVertex(-190.327423095703, -299.212524414063, 78.7401580810547, "544");
addVertex(-338.582702636719, 78.7403564453125, -62.9921264648438, "517");
addVertex(-106.759704589844, 299.212768554688, -78.7401580810547, "556");
addVertex(-102.362243652344, 314.960815429688, 62.9921264648438, "797");
addVertex(-62.9921569824219, -299.212524414063, -55.6296844482422, "765");
addVertex(191.732269287109, 94.0946044921875, -62.9921264648438, "306");
addVertex(186.307098388672, 109.936157226563, -50.2340850830078, "308");
addVertex(128.379150390625, 283.673706054688, -50.2345886230469, "309");
addVertex(-191.732299804688, 94.0946044921875, -62.9921264648438, "566");
addVertex(7.87396240234375, 7.8741455078125, 35.4330749511719, "55");
addVertex(76.1498107910156, -137.750854492188, 35.4330902099609, "57");
addVertex(-102.362243652344, 314.960815429688, -62.9921264648438, "570");
addVertex(84.0238037109375, -124.112670898438, 35.4330902099609, "60");
addVertex(-47.2441253662109, 299.213012695313, -78.7399291992188, "812");
addVertex(-181.102447509766, -314.960571289063, 62.9921264648438, "822");
addVertex(190.327362060547, -299.212524414063, 78.7401580810547, "823");
addVertex(-123.228363037109, 299.6064453125, -62.9921264648438, "576");
addVertex(88.7898864746094, -108.353881835938, -43.3070831298828, "65");
addVertex(64.90576171875, -149.606323242188, -51.1811065673828, "67");
addVertex(-31.49609375, -307.086547851563, 47.2443237304688, "773");
addVertex(-11.81103515625, -74.8031005859375, 43.3071136474609, "829");
addVertex(28.4540710449219, 11.8111572265625, 43.3070831298828, "70");
addVertex(14.3917388916016, -79.364501953125, 43.3071136474609, "831");
addVertex(69.4454040527344, -157.480346679688, 43.3070831298828, "72");
addVertex(-185.499877929688, 62.9923095703125, -78.7401580810547, "841");
addVertex(186.581420898438, 110.02734375, 50.6900634765625, "313");
addVertex(-2.58078002929688, -99.82177734375, 43.3071136474609, "835");
addVertex(116.092102050781, -108.360229492188, -78.7401580810547, "332");
addVertex(80.2637023925781, -314.960571289063, -58.2493515014648, "77");
addVertex(-128.653564453125, 283.764770507813, 50.7051239013672, "591");
addVertex(123.228302001953, 299.6064453125, 63.4645690917969, "328");
addVertex(47.2440643310547, -299.212524414063, -78.7399291992188, "849");
addVertex(-191.732330322266, 94.0946044921875, 63.4461669921875, "586");
addVertex(15.8327789306641, -84.7425537109375, 39.3701019287109, "339");
addVertex(31.4960327148438, 299.212890625, 47.2443237304688, "84");
addVertex(77.0317993164063, 314.960693359375, -62.9921569824219, "85");
addVertex(7.95877075195313, -98.3807373046875, 39.3701019287109, "336");
addVertex(-123.228363037109, 299.6064453125, 63.4645690917969, "594");
addVertex(-207.986022949219, -303.825073242188, 62.9921264648438, "91");
addVertex(78.548583984375, -173.228149414063, 78.7401580810547, "604");
addVertex(102.434173583984, -108.359985351563, -47.2440948486328, "333");
addVertex(-212.598449707031, 78.7403564453125, -62.9921264648438, "96");
addVertex(69.4454040527344, -157.480346679688, -43.3070831298828, "354");
addVertex(71.7152404785156, -161.417358398438, 47.2440948486328, "603");
addVertex(-354.330749511719, 62.9923095703125, -62.9921264648438, "100");
addVertex(-354.330749511719, -141.732055664063, -62.9921264648438, "101");
addVertex(71.7152404785156, -161.417358398438, -47.2440948486328, "606");
addVertex(-102.434204101563, -108.35986328125, 47.2440948486328, "615");
addVertex(97.8860473632813, -108.35791015625, -43.3070831298828, "352");
addVertex(-195.405212402344, 137.0673828125, 11.8110198974609, "105");
addVertex(-354.330749511719, -141.732055664063, 62.9921264648438, "98");
addVertex(-186.307159423828, 109.936157226563, -50.2340850830078, "107");
addVertex(-128.379211425781, 283.673706054688, -50.2345886230469, "109");
addVertex(-217.852111816406, 144.413696289063, 11.81103515625, "111");
addVertex(-116.092163085938, -108.360229492188, -78.7401580810547, "624");
addVertex(23.9097137451172, 3.9371337890625, -43.3070831298828, "369");
addVertex(-195.405212402344, 137.0673828125, -11.81103515625, "106");
addVertex(23.9097137451172, 3.9371337890625, -51.1811065673828, "371");
addVertex(-37.5840454101563, 27.5592041015625, -78.7401580810547, "630");
addVertex(88.7898864746094, -108.353881835938, -51.1811065673828, "367");
addVertex(-174.156127929688, 272.643310546875, -11.8110198974609, "113");
addVertex(30.7262420654297, 15.7481689453125, 47.2440948486328, "378");
addVertex(102.434143066406, -108.35986328125, 47.2440948486328, "379");
addVertex(7.87396240234375, -70.8660888671875, 39.3701019287109, "636");
addVertex(37.583984375, 27.5592041015625, -78.7401580810547, "893");
addVertex(-30.7263031005859, 15.7481689453125, 47.2440948486328, "600");
addVertex(77.5908508300781, -143.129028320313, 43.3071136474609, "383");
addVertex(11.8109741210938, 11.8111572265625, 43.3071136474609, "640");
addVertex(-78.5486450195313, -173.228393554688, -78.7401580810547, "625");
addVertex(-23.9097747802734, 3.9371337890625, -43.3070831298828, "370");
addVertex(30.7262420654297, 15.7481689453125, -47.2440948486328, "627");
addVertex(89.40185546875, -122.671630859375, 43.3071136474609, "389");
addVertex(185.499816894531, 62.9923095703125, -78.7401580810547, "896");
addVertex(-7.8740234375, 7.8741455078125, 35.4330749511719, "643");
addVertex(78.548583984375, -173.228393554688, -78.7401580810547, "900");
addVertex(-30.7263031005859, 15.7481689453125, -47.2440948486328, "142");
addVertex(-76.1498718261719, -137.750854492188, 35.4330902099609, "655");
addVertex(-64.9058227539063, -149.606323242188, -51.1811065673828, "144");
addVertex(-88.7899475097656, -108.353881835938, -51.1811065673828, "145");
addVertex(-11.81103515625, 11.8111572265625, 43.3071136474609, "147");
addVertex(11.8109741210938, -74.8031005859375, 43.3071136474609, "404");
addVertex(-7.8740234375, -70.8660888671875, 39.3701019287109, "149");
addVertex(-71.7153015136719, -161.417358398438, -47.2440948486328, "662");
addVertex(-78.5486297607422, -173.228149414063, 78.7401580810547, "911");
addVertex(-102.434234619141, -108.359985351563, -47.2440948486328, "664");
addVertex(-7.95883178710938, -98.3807373046875, 39.3701019287109, "153");
addVertex(-14.3917999267578, -79.364501953125, 43.3071136474609, "155");
addVertex(-15.8328399658203, -84.7425537109375, 39.3701019287109, "156");
addVertex(-28.4541320800781, 11.8111572265625, -43.3070831298828, "669");
addVertex(-84.0238647460938, -124.112670898438, 35.4330902099609, "158");
addVertex(43.1441650390625, -314.960571289063, 62.9923553466797, "415");
addVertex(106.759643554688, 299.212768554688, -78.7401580810547, "890");
addVertex(28.4540710449219, 11.8111572265625, -43.3070831298828, "673");
addVertex(-64.9058074951172, -149.606323242188, -43.3070831298828, "162");
addVertex(-88.7899475097656, -108.353881835938, -43.3070831298828, "163");
addVertex(97.8860473632813, -108.35791015625, 43.3070831298828, "403");
addVertex(-338.582702636719, 62.9923095703125, 78.7401580810547, "917");
addVertex(-69.4454650878906, -157.480346679688, 43.3070831298828, "167");
addVertex(77.0317993164063, -314.960571289063, -62.9921646118164, "424");
addVertex(-69.4454650878906, -157.480346679688, -43.3070831298828, "681");
addVertex(-97.8861083984375, -108.35791015625, -43.3070831298828, "682");
addVertex(-31.49609375, -299.212524414063, 47.2443237304688, "171");
addVertex(181.102386474609, -314.960571289063, -62.9921264648438, "411");
addVertex(-80.2637634277344, -314.960571289063, -58.2493515014648, "174");
addVertex(-31.49609375, 299.212890625, 47.2443237304688, "176");
addVertex(-77.0318603515625, 314.960693359375, -62.9921569824219, "177");
addVertex(-80.2637634277344, 314.960693359375, -58.2493591308594, "178");
addVertex(-62.9921569824219, 299.212768554688, -55.6296844482422, "179");
addVertex(62.9920959472656, -307.086547851563, -55.6296920776367, "436");
addVertex(47.2440643310547, -307.086547851563, -78.7399368286133, "430");
addVertex(31.4960327148438, -299.212524414063, 47.2443237304688, "439");
addVertex(-23.9097747802734, 3.9371337890625, -51.1811065673828, "696");
addVertex(64.9057464599609, -149.606323242188, -43.3070831298828, "689");
addVertex(116.092102050781, -108.360229492188, 78.7401580810547, "946");
addVertex(62.9920959472656, -299.212524414063, -55.6296844482422, "435");
addVertex(-37.5840454101563, 27.5592041015625, 78.7401580810547, "929");
addVertex(-106.759704589844, 299.212768554688, 78.7401580810547, "930");
addVertex(102.362182617188, 314.960815429688, -62.9921264648438, "446");
addVertex(-185.499877929688, 62.9923095703125, 78.7401580810547, "921");
addVertex(80.2637023925781, 314.960693359375, -58.2493591308594, "448");
addVertex(37.583984375, 27.5592041015625, 78.7401580810547, "934");
addVertex(128.653503417969, 283.764770507813, 50.7051239013672, "194");
addVertex(62.9920959472656, 299.212768554688, -55.6296844482422, "451");
addVertex(47.2440643310547, 299.213012695313, -78.7399291992188, "452");
addVertex(-338.582702636719, -150.957153320313, 78.7401580810547, "915");
addVertex(-77.5909118652344, -143.129028320313, 43.3071136474609, "710");
addVertex(-71.7153015136719, -161.417358398438, 47.2440948486328, "712");
addVertex(-186.581481933594, 110.02734375, 50.6900634765625, "457");
addVertex(338.582641601563, -150.957153320313, 78.7401580810547, "945");
addVertex(-116.092163085938, -108.360229492188, 78.7401580810547, "910");
addVertex(-151.709228515625, 265.296997070313, -11.8110198974609, "463");
addVertex(-89.4019165039063, -122.671630859375, 43.3071136474609, "657");
addVertex(-28.4541320800781, 11.8111572265625, 43.3070831298828, "721");
addVertex(151.709167480469, 265.296997070313, 11.81103515625, "210");
addVertex(151.709167480469, 265.296997070313, -11.8110198974609, "211");
addVertex(-151.709228515625, 265.296997070313, 11.81103515625, "469");
addVertex(174.156097412109, 272.643310546875, 11.81103515625, "214");
addVertex(-97.8861083984375, -108.35791015625, 43.3070831298828, "720");
addVertex(-217.852111816406, 144.413696289063, -11.81103515625, "476");
addVertex(-174.156127929688, 272.643310546875, 11.81103515625, "480");
addVertex(2.58071899414063, -99.82177734375, 43.3071136474609, "738");
addVertex(-190.327423095703, -299.212524414063, -78.7401580810547, "740");
addVertex(190.327362060547, -299.212524414063, -78.7401580810547, "229");
addVertex(-77.0318603515625, -314.960571289063, -62.9921646118164, "743");
addVertex(338.582702636719, 78.7403564453125, 62.9921264648438, "233");
addVertex(185.499816894531, 62.9923095703125, 78.7401580810547, "235");
addVertex(-338.582702636719, 78.7403564453125, 62.9921264648438, "492");
addVertex(-43.1442260742188, -314.960571289063, 62.9923553466797, "752");
addVertex(181.102386474609, -314.960571289063, 62.9921264648438, "241");
addVertex(-343.195251464844, -168.615600585938, -62.9921264648438, "498");
addVertex(207.985961914063, -303.825073242188, 62.9921264648438, "243");
addVertex(207.985961914063, -303.825073242188, -62.9921264648438, "244");
addVertex(-212.598449707031, 78.7403564453125, 62.9921264648438, "505");
addVertex(-181.102447509766, -314.960571289063, -62.9921264648438, "745");
addVertex(-47.2441253662109, -299.212524414063, -78.7399291992188, "755");
addVertex(338.582702636719, 62.9923095703125, 78.7401580810547, "253");
addVertex(31.4960327148438, -307.086547851563, 47.2443237304688, "767");
addFace(["439", "415", "77", "435"], "0");
setUVsToFace(new Point(0.347750902175903, 0.717860758304596), new Point(0.363310426473618, 0.704885303974152), new Point(0.384936958551407, 0.804781794548035), "0");
addFace(["745", "515", "91", "822"], "1");
setUVsToFace(new Point(0.174701154232025, 0.671431720256805), new Point(0.151244834065437, 0.671431720256805), new Point(0.151244834065437, 0.56987601518631), "1");
addFace(["505", "921", "917", "492"], "2");
setUVsToFace(new Point(0.946728646755219, 0.878229845317248), new Point(0.928776025772095, 0.900073945522308), new Point(0.928776025772095, 0.776674211025238), "2");
addFace(["371", "369", "370", "696"], "3");
setUVsToFace(new Point(0.0150818433612585, 0.638357162475586), new Point(0.0150818433612585, 0.632009983062744), new Point(0.0536290518939495, 0.632009983062744), "3");
addFace(["256", "945", "253", "262"], "4");
setUVsToFace(new Point(0.887042343616486, 0.990766704082489), new Point(0.869089782238007, 0.998203042903527), new Point(0.869089782238007, 0.825738668441772), "4");
addFace(["603", "604", "911", "712"], "5");
setUVsToFace(new Point(0.622293472290039, 0.829686403274536), new Point(0.595178067684174, 0.835194706916809), new Point(0.595178067684174, 0.708558976650238), "5");
addFace(["383", "72", "167", "710", "835", "738"], "6");
setUVsToFace(new Point(0.503248274326324, 0.690256297588348), new Point(0.491679638624191, 0.683690249919891), new Point(0.491679296659986, 0.571730437302508), "6");
addFace(["801", "797", "570", "178"], "7");
setUVsToFace(new Point(0.666229844093323, 0.819273889064789), new Point(0.71396541595459, 0.819274067878723), new Point(0.71396541595459, 0.920829713344574), "7");
addFace(["294", "235", "290", "328"], "8");
setUVsToFace(new Point(0.807324707508087, 0.93432205915451), new Point(0.789641418859338, 0.956518770430646), new Point(0.78962367773056, 0.755801677703857), "8");
addFace(["896", "890", "893", "332"], "9");
setUVsToFace(new Point(0.191417098045349, 0.42346203327179), new Point(0.00100027374222797, 0.359989714782418), new Point(0.219979703426361, 0.304227322340012), "9");
addFace(["712", "911", "910", "615"], "10");
setUVsToFace(new Point(0.484120428562164, 0.969141960144043), new Point(0.45699942111969, 0.974622189998627), new Point(0.457000881433487, 0.91420578956604), "10");
addFace(["142", "630", "624", "664"], "11");
setUVsToFace(new Point(0.840021669864655, 0.656810462474823), new Point(0.867141093723551, 0.651321833373506), new Point(0.867144227027893, 0.777859807014465), "11");
addFace(["591", "457", "105", "469"], "12");
setUVsToFace(new Point(0.733735680580139, 0.798960208892822), new Point(0.733968598445509, 0.651002270519287), new Point(0.767785549163818, 0.669721722602844), "12");
addFace(["457", "107", "106", "105"], "13");
setUVsToFace(new Point(0.410779029130936, 0.704885303974152), new Point(0.410856476108602, 0.786239912971017), new Point(0.38785108923912, 0.755267381668091), "13");
addFace(["624", "625", "662", "664"], "14");
setUVsToFace(new Point(0.375469148159027, 0.937825977802277), new Point(0.375470638275146, 0.998242378234863), new Point(0.34835228014921, 0.992757473585298), "14");
addFace(["451", "448", "781", "84"], "15");
setUVsToFace(new Point(0.298017263412476, 0.907093167304993), new Point(0.27918142080307, 0.909251570701599), new Point(0.300807867877079, 0.809355079267211), "15");
addFace(["934", "930", "290", "235", "946"], "16");
setUVsToFace(new Point(0.75508975982666, 0.304227322340012), new Point(0.974069119710461, 0.187872118409697), new Point(0.974069189510793, 0.359989714782418), "16");
addFace(["174", "765", "755", "743"], "17");
setUVsToFace(new Point(0.0182863753288984, 0.860762000083923), new Point(0.0159843061119318, 0.841943144798279), new Point(0.0362928044994646, 0.832157547536106), "17");
addFace(["294", "328", "194", "313"], "18");
setUVsToFace(new Point(0.00101476011332124, 0.883182883262634), new Point(0.000999841816020227, 0.70855427653404), new Point(0.0112859541550279, 0.72205650806427), "18");
addFace(["332", "265", "3", "896"], "19");
setUVsToFace(new Point(0.329544067382813, 0.367512583732605), new Point(0.363881319761276, 0.546861827373505), new Point(0.191417065953806, 0.546861806662824), "19");
addFace(["643", "147", "640", "55"], "20");
setUVsToFace(new Point(0.0989832580089569, 0.626598060131073), new Point(0.0918868258595467, 0.629771649837494), new Point(0.0918868258595467, 0.610729992389679), "20");
addFace(["243", "823", "945", "35"], "21");
setUVsToFace(new Point(0.435161232948303, 0.970929324626923), new Point(0.417208410370264, 0.978365453303557), new Point(0.417208552360535, 0.809355139732361), "21");
addFace(["244", "229", "411"], "22");
setUVsToFace(new Point(0.595178067684174, 0.837137460708618), new Point(0.610671520233154, 0.848865687847137), new Point(0.595178067684174, 0.860593795776367), "22");
addFace(["306", "896", "22"], "23");
setUVsToFace(new Point(0.459794878959656, 0.65161520242691), new Point(0.448982059955597, 0.678035795688629), new Point(0.43891167640686, 0.65161520242691), "23");
addFace(["241", "823", "243"], "24");
setUVsToFace(new Point(0.12036619335413, 0.860593914985657), new Point(0.10487274825573, 0.848865747451782), new Point(0.12036619335413, 0.837137579917908), "24");
addFace(["293", "235", "294"], "25");
setUVsToFace(new Point(0.630088031291962, 0.995541870594025), new Point(0.639401733875275, 0.968845129013062), new Point(0.650960266590118, 0.99477219581604), "25");
addFace(["890", "281", "446"], "26");
setUVsToFace(new Point(0.943847298622131, 0.983895361423492), new Point(0.928776025772095, 0.994399785995483), new Point(0.928776025772095, 0.973516464233398), "26");
addFace(["783", "328", "290"], "27");
setUVsToFace(new Point(0.452241539955139, 0.934697687625885), new Point(0.451787441968918, 0.955579519271851), new Point(0.437103986740112, 0.944979548454285), "27");
addFace(["3", "261", "260"], "28");
setUVsToFace(new Point(0.6107257604599, 0.988975822925568), new Point(0.595178306102753, 0.997952103614807), new Point(0.595178306102753, 0.979999482631683), "28");
addFace(["233", "262", "253"], "29");
setUVsToFace(new Point(0.964218974113464, 0.978300094604492), new Point(0.964218974113464, 0.996252715587616), new Point(0.948671460151672, 0.987276434898376), "29");
addFace(["5", "267", "265"], "30");
setUVsToFace(new Point(0.908880591392517, 0.971083760261536), new Point(0.908880591392517, 0.947627365589142), new Point(0.924374103546143, 0.959355533123016), "30");
addFace(["945", "256", "35"], "31");
setUVsToFace(new Point(0.840021669864655, 0.965937674045563), new Point(0.85551518201828, 0.954209446907043), new Point(0.85551518201828, 0.977665781974792), "31");
addFace(["822", "544", "823", "752"], "32");
setUVsToFace(new Point(0.993964612483978, 0.300408899784088), new Point(0.976011991500854, 0.307845145463943), new Point(0.976011991500854, 0.00100000004749745), "32");
addFace(["163", "162", "144", "145"], "33");
setUVsToFace(new Point(0.820377945899963, 0.998999953269958), new Point(0.820377945899963, 0.960575103759766), new Point(0.82672518491745, 0.960575103759766), "33");
addFace(["98", "541", "498", "101"], "34");
setUVsToFace(new Point(0.595178306102753, 0.875529646873474), new Point(0.618634581565857, 0.875529646873474), new Point(0.618634581565857, 0.977085471153259), "34");
addFace(["781", "783", "290"], "291");
setUVsToFace(new Point(0.906937658786774, 0.772168815135956), new Point(0.906937777996063, 0.819904386997223), new Point(0.888985157012939, 0.82344925403595), "291");
addFace(["12", "313", "194", "210"], "36");
setUVsToFace(new Point(0.664287090301514, 0.948512256145477), new Point(0.630088031291962, 0.966902375221252), new Point(0.630237102508545, 0.819273829460144), "36");
addFace(["70", "403", "389", "831", "404", "640"], "37");
setUVsToFace(new Point(0.628145277500153, 0.650647222995758), new Point(0.531277179718018, 0.706616222858429), new Point(0.51973889402974, 0.699777140003946), "37");
addFace(["100", "528", "98", "101"], "38");
setUVsToFace(new Point(0.731643736362457, 0.713832557201385), new Point(0.630088031291962, 0.713832557201385), new Point(0.630088031291962, 0.548804581165314), "38");
addFace(["492", "528", "100", "517"], "39");
setUVsToFace(new Point(0.972468793392181, 0.756182193756104), new Point(0.99042135477066, 0.756182312965393), new Point(0.99042135477066, 0.857738018035889), "39");
addFace(["171", "439", "767", "773"], "40");
setUVsToFace(new Point(0.628145277500153, 0.626604199409485), new Point(0.577367424964905, 0.626604199409485), new Point(0.577367424964905, 0.620256960391998), "40");
addFace(["849", "435", "77", "424"], "41");
setUVsToFace(new Point(0.174701154232025, 0.701007544994354), new Point(0.154392674565315, 0.69122189283371), new Point(0.156694745761629, 0.672403085886149), "41");
addFace(["606", "900", "332", "333"], "42");
setUVsToFace(new Point(0.319281488656998, 0.94330632686615), new Point(0.346402525901794, 0.937826037406921), new Point(0.346404347723934, 0.998248153263217), "42");
addFace(["774", "762", "755", "765"], "43");
setUVsToFace(new Point(0.49565252661705, 0.691709280014038), new Point(0.518195688724518, 0.691709458827972), new Point(0.518195688724518, 0.698056697845459), "43");
addFace(["627", "893", "630", "142"], "44");
setUVsToFace(new Point(0.666229844093323, 0.9292718904875), new Point(0.693345248699188, 0.923743844032288), new Point(0.693345248699188, 0.984336614608765), "44");
addFace(["415", "241", "411", "77"], "45");
setUVsToFace(new Point(0.491679638624191, 0.986737549304962), new Point(0.491679847240448, 0.875529646873474), new Point(0.593235552128445, 0.875529699860658), "45");
addFace(["586", "566", "107", "457"], "46");
setUVsToFace(new Point(0.139423131942749, 0.548804581165314), new Point(0.241338282823563, 0.548804581165314), new Point(0.231056081957721, 0.562224566961153), "46");
addFace(["369", "673", "669", "370"], "47");
setUVsToFace(new Point(0.0073472373187542, 0.646984061694004), new Point(0.00100000004749745, 0.650647222995758), new Point(0.00100000004749745, 0.604773581027985), "47");
addFace(["8", "211", "13", "9"], "48");
setUVsToFace(new Point(0.382002770900726, 0.548804581165314), new Point(0.400097221136093, 0.554726421833038), new Point(0.364873945713043, 0.658092141151428), "48");
addFace(["823", "415", "752"], "305");
setUVsToFace(new Point(0.976011991500854, 0.00100000004749745), new Point(0.993964493274689, 0.119644112884998), new Point(0.993964493274689, 0.189201042056084), "305");
addFace(["265", "229", "244", "5"], "50");
setUVsToFace(new Point(0.906937897205353, 0.825391948223114), new Point(0.906937897205353, 0.994402408599854), new Point(0.888984982645294, 0.986966294881365), "50");
addFace(["253", "235", "293", "233"], "51");
setUVsToFace(new Point(0.908880591392517, 0.945684508403238), new Point(0.908880591392517, 0.822284698486328), new Point(0.926833212375641, 0.844128847122192), "51");
addFace(["194", "309", "211", "210"], "52");
setUVsToFace(new Point(0.859925806522369, 0.548804581165314), new Point(0.860209162429109, 0.63017173450941), new Point(0.836113572120667, 0.599198818206787), "52");
addFace(["370", "163", "145", "696"], "53");
setUVsToFace(new Point(0.859917104244232, 0.884343028068542), new Point(0.859917104244232, 0.779802560806274), new Point(0.866264402866364, 0.779802560806274), "53");
addFace(["171", "752", "415", "439"], "54");
setUVsToFace(new Point(0.452651858329773, 0.765052676200867), new Point(0.43469911813736, 0.774442195892334), new Point(0.43469911813736, 0.704885303974152), "54");
addFace(["411", "229", "849", "424"], "55");
setUVsToFace(new Point(0.968567073345184, 0.868454337120056), new Point(0.986519873142242, 0.861018121242523), new Point(0.986519791193736, 0.976357365474296), "55");
addFace(["261", "267", "256", "262"], "56");
setUVsToFace(new Point(0.593235313892365, 0.708558976650238), new Point(0.593235313892365, 0.87358695268631), new Point(0.491679638624191, 0.87358695268631), "56");
addFace(["921", "930", "934", "929"], "57");
setUVsToFace(new Point(0.783652333864281, 0.124399818598533), new Point(0.97406929731369, 0.187872141599655), new Point(0.75508975982666, 0.304227322340012), "57");
addFace(["174", "743", "745"], "276");
setUVsToFace(new Point(0.0987327396869659, 0.915047585964203), new Point(0.10255590826273, 0.912442326545715), new Point(0.102555885910988, 0.996333539485931), "276");
addFace(["194", "328", "281", "309"], "59");
setUVsToFace(new Point(0.0112859541550279, 0.72205650806427), new Point(0.00100000004749745, 0.708558976650238), new Point(0.102926674335107, 0.708461403560685), "59");
addFace(["841", "556", "576", "566"], "60");
setUVsToFace(new Point(0.993964612483978, 0.30978786945343), new Point(0.993964612483978, 0.510504961013794), new Point(0.976011991500854, 0.506607949733734), "60");
addFace(["332", "893", "627", "333"], "61");
setUVsToFace(new Point(0.760709047317505, 0.800902903079987), new Point(0.760711848735809, 0.927430987358093), new Point(0.733586549758911, 0.921952247619629), "61");
addFace(["624", "536", "740", "755", "625"], "62");
setUVsToFace(new Point(0.329544067382813, 0.180349245667458), new Point(0.363881319761276, 0.00100000004749745), new Point(0.483389794826508, 0.120508335530758), "62");
addFace(["379", "603", "72", "383", "389", "403"], "63");
setUVsToFace(new Point(0.0411608477621878, 0.858516344014257), new Point(0.0905818343162537, 0.858813345432281), new Point(0.0887521132826805, 0.86330109834671), "63");
addFace(["657", "720", "721", "147", "829", "155"], "64");
setUVsToFace(new Point(0.519739112876335, 0.555643601924018), new Point(0.531277413022898, 0.54880449900284), new Point(0.628145277500153, 0.604773581027985), "64");
addFace(["446", "783", "781", "448"], "65");
setUVsToFace(new Point(0.769728302955627, 0.752887547016144), new Point(0.769728302955627, 0.651331841945648), new Point(0.817463874816895, 0.651331663131714), "65");
addFace(["452", "890", "446", "85"], "66");
setUVsToFace(new Point(0.228990126334935, 0.698087107813272), new Point(0.18101479113102, 0.698087573051453), new Point(0.18455958366394, 0.680134892463684), "66");
addFace(["155", "829", "404", "831", "738", "835"], "67");
setUVsToFace(new Point(0.554648697376251, 0.616109182277606), new Point(0.558325588703156, 0.618189573287964), new Point(0.558325588703156, 0.637231290340424), "67");
addFace(["367", "65", "369", "371"], "68");
setUVsToFace(new Point(0.815614700317383, 0.860342144966125), new Point(0.809267461299896, 0.860342144966125), new Point(0.809267461299896, 0.755801677703857), "68");
addFace(["541", "91", "515", "498"], "69");
setUVsToFace(new Point(0.243281111121178, 0.702942550182343), new Point(0.243281111121178, 0.548804581165314), new Point(0.344836801290512, 0.548804581165314), "69");
addFace(["8", "214", "210", "211"], "70");
setUVsToFace(new Point(0.901602029800415, 0.567846298217773), new Point(0.901602029800415, 0.548804581165314), new Point(0.920640766620636, 0.548804581165314), "70");
addFace(["10", "9", "13", "12"], "71");
setUVsToFace(new Point(0.476038187742233, 0.976564871885695), new Point(0.476038187742233, 0.995606601238251), new Point(0.45699942111969, 0.995606601238251), "71");
addFace(["162", "681", "354", "689"], "72");
setUVsToFace(new Point(0.131118357181549, 0.575389981269836), new Point(0.137465611100197, 0.571730554103851), new Point(0.137465611100197, 0.683690249919891), "72");
addFace(["774", "773", "767", "436", "430", "762"], "35");
setUVsToFace(new Point(0.243281111121178, 0.787811815738678), new Point(0.268670240950137, 0.704885225582147), new Point(0.319448086034805, 0.704885225582147), "35");
addFace(["640", "404", "636"], "74");
setUVsToFace(new Point(0.305777311325073, 0.981976449489594), new Point(0.305162698030472, 0.912165701389313), new Point(0.30959141254425, 0.915288507938385), "74");
addFace(["636", "55", "640"], "75");
setUVsToFace(new Point(0.30959141254425, 0.915288507938385), new Point(0.312790840864182, 0.978752851486206), new Point(0.305777311325073, 0.981976449489594), "75");
addFace(["383", "738", "336"], "76");
setUVsToFace(new Point(0.695902585983276, 0.993554592132568), new Point(0.695287942886353, 0.923743844032288), new Point(0.699716627597809, 0.92686665058136), "76");
addFace(["336", "57", "383"], "77");
setUVsToFace(new Point(0.699716627597809, 0.92686665058136), new Point(0.702916085720062, 0.990331053733826), new Point(0.695902585983276, 0.993554592132568), "77");
addFace(["448", "451", "452", "85"], "78");
setUVsToFace(new Point(0.0250248126685619, 0.613032102584839), new Point(0.0438435859978199, 0.610729992389679), new Point(0.0536290800759408, 0.631038710408825), "78");
addFace(["518", "536", "624", "630", "841"], "79");
setUVsToFace(new Point(0.191417048001959, 0.000999996408269643), new Point(0.363881291646696, 0.000999996472185238), new Point(0.329544067382813, 0.180349245667458), "79");
addFace(["831", "389", "60"], "80");
setUVsToFace(new Point(0.892031133174896, 0.618615388870239), new Point(0.89264577627182, 0.548804581165314), new Point(0.899659276008606, 0.552028238773346), "80");
addFace(["60", "339", "831"], "81");
setUVsToFace(new Point(0.899659276008606, 0.552028238773346), new Point(0.896459817886353, 0.615492582321167), new Point(0.892031133174896, 0.618615388870239), "81");
addFace(["106", "107", "109", "463"], "82");
setUVsToFace(new Point(0.243281111121178, 0.827743947505951), new Point(0.276848968563746, 0.809027109441413), new Point(0.2770736515522, 0.956983625888824), "82");
addFace(["682", "664", "662", "681"], "83");
setUVsToFace(new Point(0.762644648551941, 0.93120938539505), new Point(0.767132759094238, 0.929373860359192), new Point(0.767132759094238, 0.978794574737549), "83");
addFace(["378", "934", "946", "379"], "84");
setUVsToFace(new Point(0.346401430830413, 0.930395400254866), new Point(0.319281488656998, 0.935883224010468), new Point(0.319284319877625, 0.809355139732361), "84");
addFace(["12", "210", "214", "10"], "85");
setUVsToFace(new Point(0.157502775626039, 0.881451904773697), new Point(0.192726045846939, 0.984817624092102), new Point(0.174631610512733, 0.990739464759827), "85");
addFace(["517", "518", "841", "96"], "86");
setUVsToFace(new Point(0.437103986740112, 0.809355210510846), new Point(0.455056697130203, 0.809355139732361), new Point(0.455056697130203, 0.932754874229431), "86");
addFace(["106", "476", "111", "105"], "87");
setUVsToFace(new Point(0.882006049156189, 0.630205512046814), new Point(0.862967371940613, 0.630205512046814), new Point(0.862967371940613, 0.611163842298942), "87");
addFace(["463", "109", "591", "469"], "88");
setUVsToFace(new Point(0.129219397902489, 0.62777978181839), new Point(0.105279818177223, 0.658753156661987), new Point(0.105407297611237, 0.577385544776917), "88");
addFace(["167", "712", "615", "720", "657", "710"], "89");
setUVsToFace(new Point(0.181399045015035, 0.703217777954529), new Point(0.179569280109408, 0.698703577013693), new Point(0.228990212082863, 0.699058890342712), "89");
addFace(["256", "267", "5", "35"], "90");
setUVsToFace(new Point(0.0362927885726094, 0.729630410671234), new Point(0.0362927913665771, 0.83118611574173), new Point(0.0128364851698279, 0.83118611574173), "90");
addFace(["900", "625", "755", "849", "229"], "91");
setUVsToFace(new Point(0.381834149360657, 0.337248831987381), new Point(0.381834149360657, 0.21061300659564), new Point(0.48338970541954, 0.235847532749176), "91");
addFace(["662", "606", "354", "681"], "92");
setUVsToFace(new Point(0.767142713069916, 0.800902788392774), new Point(0.767142713069916, 0.916521906852722), new Point(0.762654602527618, 0.914692282676697), "92");
addFace(["662", "625", "900", "606"], "93");
setUVsToFace(new Point(0.10487274825573, 0.714067339897156), new Point(0.131988108158112, 0.708558976650238), new Point(0.131988108158112, 0.835194706916809), "93");
addFace(["281", "306", "308", "309"], "350");
setUVsToFace(new Point(0.102930001914501, 0.708558976650238), new Point(0.102930094306049, 0.88318746070885), new Point(0.092645101249218, 0.869685351848602), "350");
addFace(["281", "328", "783", "446"], "95");
setUVsToFace(new Point(0.948671460151672, 0.753268203449233), new Point(0.948671460151672, 0.651331663131714), new Point(0.969554841518402, 0.651712477207184), "95");
addFace(["96", "566", "586", "505"], "96");
setUVsToFace(new Point(0.969554693137352, 0.858103962047321), new Point(0.948671460151672, 0.85810399055481), new Point(0.948671460151672, 0.756182372570038), "96");
addFace(["636", "404", "829", "149"], "97");
setUVsToFace(new Point(0.502327680587769, 0.560611605644226), new Point(0.499154031276703, 0.556123435497284), new Point(0.518195688724518, 0.556123435497284), "97");
addFace(["13", "308", "313", "12"], "98");
setUVsToFace(new Point(0.302248597145081, 0.962547898292542), new Point(0.279243210275599, 0.993520820364064), new Point(0.279320657253265, 0.912165701389313), "98");
addFace(["436", "435", "849", "430"], "99");
setUVsToFace(new Point(0.49565252661705, 0.555152118206024), new Point(0.49565252661705, 0.548804819583893), new Point(0.518195688724518, 0.548804581165314), "99");
addFace(["378", "70", "640"], "100");
setUVsToFace(new Point(0.628145277500153, 0.627575576305389), new Point(0.62631368637085, 0.632063746452332), new Point(0.61289769411087, 0.632063806056976), "100");
addFace(["147", "721", "600"], "101");
setUVsToFace(new Point(0.593855977058411, 0.632063806056976), new Point(0.580440104007721, 0.632063746452332), new Point(0.578608512878418, 0.627575576305389), "101");
addFace(["930", "921", "586", "594"], "102");
setUVsToFace(new Point(0.820377945899963, 0.852048754692078), new Point(0.820383787155151, 0.651331663131714), new Point(0.838078916072845, 0.673528373241425), "102");
addFace(["370", "669", "682", "163"], "103");
setUVsToFace(new Point(0.0073472373187542, 0.608436822891235), new Point(0.00100000004749745, 0.604773581027985), new Point(0.0978681296110153, 0.548804581165314), "103");
addFace(["762", "430", "849", "755"], "104");
setUVsToFace(new Point(0.489736944437027, 0.235847532749176), new Point(0.489736944437027, 0.312014311552048), new Point(0.48338970541954, 0.312014311552048), "104");
addFace(["570", "177", "178"], "298");
setUVsToFace(new Point(0.71396541595459, 0.920829713344574), new Point(0.693546652793884, 0.920829772949219), new Point(0.696151852607727, 0.91700667142868), "298");
addFace(["336", "738", "831", "339"], "108");
setUVsToFace(new Point(0.502327680587769, 0.70351630449295), new Point(0.499154031276703, 0.699028074741364), new Point(0.518195661997285, 0.699028082273693), "108");
addFace(["570", "556", "812", "177"], "110");
setUVsToFace(new Point(0.0870370660716296, 0.839889268948274), new Point(0.0905818343162537, 0.857841968536377), new Point(0.0426064245402813, 0.857841670513153), "110");
addFace(["773", "774", "765", "171"], "111");
setUVsToFace(new Point(0.72322684526443, 0.819273763423676), new Point(0.72322690486908, 0.905999839305878), new Point(0.716879606246948, 0.905999839305878), "111");
addFace(["378", "379", "403", "70"], "112");
setUVsToFace(new Point(0.809267461299896, 0.977826833724976), new Point(0.809267415032257, 0.862285089090807), new Point(0.813755571842194, 0.864120543003082), "112");
addFace(["544", "915", "910", "911"], "113");
setUVsToFace(new Point(0.491679638624191, 0.120508335530758), new Point(0.611188556843431, 0.00100004753238073), new Point(0.645525395870209, 0.180349245667458), "113");
addFace(["294", "306", "22", "293"], "114");
setUVsToFace(new Point(0.993352055549622, 0.651331694126172), new Point(0.993352055549622, 0.75325334072113), new Point(0.972468912601471, 0.75325334072113), "114");
addFace(["309", "308", "13", "211"], "115");
setUVsToFace(new Point(0.436803847551346, 0.548804581165314), new Point(0.436579164563095, 0.696761178369778), new Point(0.403011322021484, 0.678044259548187), "115");
addFace(["682", "681", "162", "163"], "116");
setUVsToFace(new Point(0.0978681365882172, 0.548804610298734), new Point(0.137465611100197, 0.571730554103851), new Point(0.131118357181549, 0.575389981269836), "116");
addFace(["528", "917", "915", "98"], "117");
setUVsToFace(new Point(0.857974290847778, 0.952266697252151), new Point(0.840021669864655, 0.952266812324524), new Point(0.840021669864655, 0.779802620410919), "117");
addFace(["755", "740", "745", "743"], "118");
setUVsToFace(new Point(0.966624140739441, 0.861018121242523), new Point(0.966624319553375, 0.976357281208038), new Point(0.948671590210676, 0.968921063644705), "118");
addFace(["229", "265", "332", "900"], "119");
setUVsToFace(new Point(0.483389794826508, 0.427353471517563), new Point(0.363881319761276, 0.546861827373505), new Point(0.329544002009879, 0.367512595542639), "119");
addFace(["604", "946", "823"], "349");
setUVsToFace(new Point(0.593235313892365, 0.337248831987381), new Point(0.645525395870209, 0.367512583732605), new Point(0.491679638624191, 0.427353471517563), "349");
addFace(["556", "841", "630", "893", "890", "452", "812"], "58");
setUVsToFace(new Point(0.00100019684886718, 0.187872119392478), new Point(0.191417133420422, 0.124399779085879), new Point(0.219979703426361, 0.24363449358504), "58");
addFace(["910", "915", "917", "921", "929"], "105");
setUVsToFace(new Point(0.645525459991434, 0.180349243966242), new Point(0.611188173294067, 0.00100000004749745), new Point(0.783652365207672, 0.00100000004749745), "105");
addFace(["945", "823", "946", "235", "253"], "73");
setUVsToFace(new Point(0.611188173294067, 0.546861827373505), new Point(0.491679638624191, 0.427353471517563), new Point(0.645525395870209, 0.367512583732605), "73");
addFace(["411", "424", "77"], "124");
setUVsToFace(new Point(0.593235552310944, 0.875529646873474), new Point(0.593235552310944, 0.959420800209045), new Point(0.58941239118576, 0.956815600395203), "124");
addFace(["96", "505", "492", "517"], "125");
setUVsToFace(new Point(0.835142195224762, 0.548804581165314), new Point(0.835142195224762, 0.650360286235809), new Point(0.733586549758911, 0.650360286235809), "125");
addFace(["604", "823", "544", "911"], "126");
setUVsToFace(new Point(0.593235313892365, 0.337248831987381), new Point(0.491679638624191, 0.427353471517563), new Point(0.491679638624191, 0.120508335530758), "126");
addFace(["469", "480", "113", "463"], "127");
setUVsToFace(new Point(0.464165478944778, 0.704885303974152), new Point(0.483204215764999, 0.704885303974152), new Point(0.483204215764999, 0.723926961421967), "127");
addFace(["910", "929", "600", "615"], "128");
setUVsToFace(new Point(0.348346503197841, 0.935893172556439), new Point(0.348349571228027, 0.809355139732361), new Point(0.37547492980957, 0.814833879470825), "128");
addFace(["946", "604", "603", "379"], "129");
setUVsToFace(new Point(0.862968862056732, 0.609221041202545), new Point(0.862967371940613, 0.548804581165314), new Point(0.890088438987732, 0.554284870624542), "129");
addFace(["745", "822", "752", "174"], "131");
setUVsToFace(new Point(0.102555882763723, 0.996333486498748), new Point(0.00100018456578255, 0.996333539485931), new Point(0.00100000004749745, 0.885125637054443), "131");
addFace(["22", "896", "3", "260"], "132");
setUVsToFace(new Point(0.928776025772095, 0.673175811767578), new Point(0.946728646755219, 0.651331722736359), new Point(0.946728646755219, 0.774731516838074), "132");
addFace(["174", "752", "171", "765"], "133");
setUVsToFace(new Point(0.195640161633492, 0.98134833574295), new Point(0.217266649007797, 0.881451904773712), new Point(0.232826203107834, 0.894427418708801), "133");
addFace(["352", "333", "627", "673"], "134");
setUVsToFace(new Point(0.988462501167366, 0.862853792927443), new Point(0.992950677871704, 0.861018121242523), new Point(0.992950677871704, 0.976559996604919), "134");
addFace(["469", "105", "111", "480"], "135");
setUVsToFace(new Point(0.0372641645371914, 0.832996070384979), new Point(0.0724874287843704, 0.729630410671234), new Point(0.0905818343162537, 0.735552251338959), "135");
addFace(["720", "615", "600", "721"], "136");
setUVsToFace(new Point(0.833156108856201, 0.967697739601135), new Point(0.828667892441005, 0.969533133908151), new Point(0.828667938709259, 0.853991389274597), "136");
addFace(["448", "85", "446"], "137");
setUVsToFace(new Point(0.787541806697845, 0.749064385890961), new Point(0.790147125720978, 0.752887547016144), new Point(0.769728302955627, 0.752887547016144), "137");
addFace(["233", "260", "261", "262"], "138");
setUVsToFace(new Point(0.431785047054291, 0.704885303974152), new Point(0.431785047054291, 0.806440949440002), new Point(0.4138323366642, 0.806440949440002), "138");
addFace(["260", "233", "293", "22"], "139");
setUVsToFace(new Point(0.731643736362457, 0.81733101606369), new Point(0.630088031291962, 0.81733101606369), new Point(0.630088031291962, 0.715775310993195), "139");
addFace(["673", "627", "142", "669"], "140");
setUVsToFace(new Point(0.993335604667664, 0.758013844490051), new Point(0.997823894023895, 0.756182312965393), new Point(0.997823894023895, 0.805719144215575), "140");
addFace(["389", "383", "57", "60"], "141");
setUVsToFace(new Point(0.0169570166617632, 0.629771709442139), new Point(0.0169570166617632, 0.610729878766124), new Point(0.0240534413605928, 0.6139035820961), "141");
addFace(["801", "178", "179", "176"], "142");
setUVsToFace(new Point(0.454471051692963, 0.548804581165314), new Point(0.47609755396843, 0.648701071739197), new Point(0.457261847604539, 0.646542608007837), "142");
addFace(["435", "436", "767", "439"], "143");
setUVsToFace(new Point(0.485358953475952, 0.635530650615692), new Point(0.479011714458466, 0.635530710220337), new Point(0.479011803865439, 0.548804634338136), "143");
addFace(["67", "144", "162", "689"], "144");
setUVsToFace(new Point(0.82672518491745, 0.853991364674423), new Point(0.82672518491745, 0.958632290363312), new Point(0.820377945899963, 0.958632290363312), "144");
addFace(["812", "179", "178", "177"], "146");
setUVsToFace(new Point(0.0824908455685575, 0.6409221719659), new Point(0.0621822364628315, 0.63113659620285), new Point(0.0644843280315399, 0.612317800521851), "146");
addFace(["576", "594", "591", "109"], "147");
setUVsToFace(new Point(0.241335021632834, 0.723526000833059), new Point(0.139408364892006, 0.723428428173065), new Point(0.149694323539734, 0.709930956363678), "147");
addFace(["107", "566", "576", "109"], "148");
setUVsToFace(new Point(0.231053471565247, 0.562302052974701), new Point(0.241338467347366, 0.548799873605872), new Point(0.241338357329369, 0.723428428173065), "148");
addFace(["689", "354", "352", "65"], "149");
setUVsToFace(new Point(0.131118363040939, 0.68003085789273), new Point(0.137465611100197, 0.683690249919891), new Point(0.0978681296110153, 0.706616222858429), "149");
addFace(["67", "689", "65", "367"], "150");
setUVsToFace(new Point(0.137216314673424, 0.923550486564636), new Point(0.130869075655937, 0.923550486564636), new Point(0.130869075655937, 0.885125637054443), "150");
addFace(["101", "536", "518", "100"], "152");
setUVsToFace(new Point(0.869089782238007, 0.65876799408162), new Point(0.887042343616486, 0.651331663131714), new Point(0.887042343616486, 0.823795855045319), "152");
addFace(["915", "544", "91", "541"], "153");
setUVsToFace(new Point(0.397313147783279, 0.978365480899811), new Point(0.397313117980957, 0.809355139732361), new Point(0.415265828371048, 0.816791355609894), "153");
addFace(["290", "930", "801", "781"], "154");
setUVsToFace(new Point(0.888985157012939, 0.823449016381322), new Point(0.888985157012939, 0.651331663131714), new Point(0.906937658786774, 0.702611982822418), "154");
addFace(["463", "113", "476", "106"], "155");
setUVsToFace(new Point(0.17567253112793, 0.57579779624939), new Point(0.193766951560974, 0.56987601518631), new Point(0.228990212082863, 0.673241674900055), "155");
addFace(["591", "594", "586", "457"], "156");
setUVsToFace(new Point(0.149694323539734, 0.709930956363678), new Point(0.139408222459134, 0.723433258402496), new Point(0.139423131942749, 0.548804581165314), "156");
addFace(["155", "835", "153", "156"], "157");
setUVsToFace(new Point(0.0567226894199848, 0.63135951757431), new Point(0.0567226894199848, 0.612317800521851), new Point(0.0612108683137141, 0.615491332673549), "157");
addFace(["142", "664", "682", "669"], "158");
setUVsToFace(new Point(0.626036875628178, 0.875529739697383), new Point(0.626036882400513, 0.991071581840515), new Point(0.621548712253571, 0.989235937595367), "158");
addFace(["35", "5", "244", "243"], "159");
setUVsToFace(new Point(0.139408364892006, 0.725371241569519), new Point(0.24096405506134, 0.725371241569519), new Point(0.24096405506134, 0.879509150981903), "159");
addFace(["72", "603", "712", "167"], "160");
setUVsToFace(new Point(0.240228459239006, 0.995241231031255), new Point(0.235740318894386, 0.997070968151093), new Point(0.235740318894386, 0.881451904773712), "160");
addFace(["261", "3", "265", "267"], "161");
setUVsToFace(new Point(0.377417683601379, 0.809355139732361), new Point(0.395370364189148, 0.809355076393501), new Point(0.395370364189148, 0.981819450855255), "161");
addFace(["797", "594", "576", "570"], "162");
setUVsToFace(new Point(0.45699942111969, 0.809735953807831), new Point(0.477882713079453, 0.809355139732361), new Point(0.477882713079453, 0.911291739878043), "162");
addFace(["781", "801", "176", "84"], "163");
setUVsToFace(new Point(0.928776025772095, 0.97157377482754), new Point(0.928776025772095, 0.902016758918762), new Point(0.946728646755219, 0.911406278610229), "163");
addFace(["147", "600", "378", "640"], "164");
setUVsToFace(new Point(0.593855977058411, 0.632063806056976), new Point(0.578608512878418, 0.627575576305389), new Point(0.628145449532113, 0.627575576305389), "164");
addFace(["243", "244", "411", "241"], "165");
setUVsToFace(new Point(0.127954959869385, 0.885125517845154), new Point(0.127954959869385, 0.986681282520294), new Point(0.104498654603958, 0.986681282520294), "165");
addFace(["515", "745", "740"], "166");
setUVsToFace(new Point(0.769728302955627, 0.981917798519135), new Point(0.769728302955627, 0.958461463451385), new Point(0.785221755504608, 0.97018963098526), "166");
addFace(["566", "96", "841"], "167");
setUVsToFace(new Point(0.243281111121178, 0.958926379680634), new Point(0.264164328575134, 0.958926379680634), new Point(0.254093945026398, 0.985347092151642), "167");
addFace(["822", "91", "544"], "168");
setUVsToFace(new Point(0.129219397902489, 0.675217926502228), new Point(0.105763092637062, 0.675217926502228), new Point(0.117491245269775, 0.659724533557892), "168");
addFace(["505", "586", "921"], "169");
setUVsToFace(new Point(0.367651760578156, 0.687703013420105), new Point(0.346779525279999, 0.686933279037476), new Point(0.35833802819252, 0.661006212234497), "169");
addFace(["556", "570", "576"], "170");
setUVsToFace(new Point(0.729501008987427, 0.934248208999634), new Point(0.714429795742035, 0.944627106189728), new Point(0.714429795742035, 0.923743844032288), "170");
addFace(["797", "930", "594"], "171");
setUVsToFace(new Point(0.449836701154709, 0.797266781330109), new Point(0.43469911813736, 0.786984801292419), new Point(0.449382603168488, 0.776384949684143), "171");
addFace(["518", "517", "100"], "172");
setUVsToFace(new Point(0.412860602140427, 0.989284634590149), new Point(0.397313117980957, 0.998260915279388), new Point(0.397313117980957, 0.98030823469162), "172");
addFace(["492", "917", "528"], "173");
setUVsToFace(new Point(0.432756036520004, 0.998260915279388), new Point(0.417208552360535, 0.989284634590149), new Point(0.432756036520004, 0.98030823469162), "173");
addFace(["498", "536", "101"], "174");
setUVsToFace(new Point(0.976011991500854, 0.512447655200958), new Point(0.99150550365448, 0.524175763130188), new Point(0.976011991500854, 0.535903930664063), "174");
addFace(["915", "541", "98"], "175");
setUVsToFace(new Point(0.78962367773056, 0.97018963098526), new Point(0.805117189884186, 0.958461463451385), new Point(0.805117189884186, 0.981917798519135), "175");
addFace(["930", "797", "801"], "289");
setUVsToFace(new Point(0.888985157012939, 0.651331663131714), new Point(0.906937777996063, 0.654876470565796), new Point(0.906937658786774, 0.702611982822418), "289");
addFace(["655", "710", "657", "158"], "178");
setUVsToFace(new Point(0.975663423538208, 0.994168162345886), new Point(0.96856701374054, 0.997341835873006), new Point(0.96856701374054, 0.978300094604492), "178");
addFace(["890", "896", "306", "281"], "179");
setUVsToFace(new Point(0.787680983543396, 0.755801677703857), new Point(0.787680983543396, 0.956518709659576), new Point(0.769728300095234, 0.934322542725557), "179");
addFace(["929", "934", "378", "600"], "181");
setUVsToFace(new Point(0.733586549758911, 0.989966793478803), new Point(0.733586549758911, 0.929373860359192), new Point(0.760701894760132, 0.934901773929596), "181");
addFace(["606", "333", "352", "354"], "184");
setUVsToFace(new Point(0.864405274391174, 0.886285781860352), new Point(0.864405335038936, 0.935706477504397), new Point(0.859917104244232, 0.93387097120285), "184");
addFace(["308", "306", "294", "313"], "185");
setUVsToFace(new Point(0.092645101249218, 0.869685351848602), new Point(0.102929927408695, 0.883182883262634), new Point(0.00101807867662898, 0.883280588443235), "185");
addFace(["823", "241", "415"], "304");
setUVsToFace(new Point(0.976011991500854, 0.00100000004749745), new Point(0.993964612483978, 0.00843623746186495), new Point(0.993964493274689, 0.119644112884998), "304");
addFace(["515", "740", "536", "498"], "49");
setUVsToFace(new Point(0.908880461896962, 0.658767799481765), new Point(0.926833271980286, 0.651331663131714), new Point(0.926833271980286, 0.820342063903809), "49");
addFace(["352", "673", "369", "65"], "121");
setUVsToFace(new Point(0.0978681296110153, 0.706616222858429), new Point(0.00100000004749745, 0.650647222995758), new Point(0.0073472373187542, 0.646983981132507), "121");
addFace(["147", "643", "149"], "226");
setUVsToFace(new Point(0.481411457061768, 0.809355139732361), new Point(0.488424956798553, 0.812578678131104), new Point(0.4852254986763, 0.876043021678925), "226");
addFace(["149", "829", "147"], "227");
setUVsToFace(new Point(0.4852254986763, 0.876043021678925), new Point(0.480796843767166, 0.879165887832642), new Point(0.481411457061768, 0.809355139732361), "227");
addFace(["710", "655", "153"], "232");
setUVsToFace(new Point(0.455209195613861, 0.704885303974152), new Point(0.462222665548325, 0.708108901977539), new Point(0.459023237228394, 0.77157324552536), "232");
addFace(["153", "835", "710"], "233");
setUVsToFace(new Point(0.459023237228394, 0.77157324552536), new Point(0.454594552516937, 0.774696111679077), new Point(0.455209195613861, 0.704885303974152), "233");
addFace(["155", "156", "158"], "236");
setUVsToFace(new Point(0.704858839511871, 0.923743844032288), new Point(0.709287524223328, 0.92686665058136), new Point(0.712486982345581, 0.990331053733826), "236");
addFace(["158", "657", "155"], "237");
setUVsToFace(new Point(0.712486982345581, 0.990331053733826), new Point(0.705473482608795, 0.993554592132568), new Point(0.704858839511871, 0.923743844032288), "237");
addSurface(["3", "127", "71", "121", "87", "172", "174", "140", "58", "2", "27", "150", "233", "164", "73", "48", "185", "17", "67", "169", "82", "112", "23", "167", "144", "103", "37", "8", "100", "291", "141", "128", "91", "74", "95", "28", "63", "68", "165", "61", "9", "350", "49", "92", "160", "52", "173", "83", "104", "148", "98", "51", "142", "184", "175", "305", "143", "4", "124", "111", "96", "62", "34", "179", "12", "59", "226", "56", "117", "26", "36", "161", "32", "7", "110", "276", "5", "16", "289", "84", "134", "65", "13", "44", "85", "79", "88", "53", "45", "133", "66", "86", "31", "93", "40", "19", "113", "24", "77", "298", "35", "81", "232", "138", "181", "114", "153", "57", "171", "41", "154", "22", "75", "168", "30", "60", "15", "131", "126", "64", "72", "132", "129", "54", "99", "125", "155", "101", "156", "146", "80", "20", "38", "166", "55", "29", "137", "6", "304", "157", "11", "25", "118", "178", "162", "14", "116", "43", "159", "227", "158", "108", "50", "46", "69", "78", "10", "237", "70", "89", "170", "236", "21", "349", "102", "0", "42", "147", "39", "90", "1", "139", "149", "119", "76", "18", "97", "135", "115", "152", "163", "33", "136", "105", "47"], "Entrance");
setMaterialToSurface(material, "Entrance");
}
private function onLoadComplete(_arg1:Event):void{
material.texture = new TextureData(Bitmap(loader.content).bitmapData);
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("entrance.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading entrance texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
}
}//package bunker
Section 7
//Entrance_Bmp (bunker.Entrance_Bmp)
package bunker {
import mx.core.*;
public class Entrance_Bmp extends BitmapAsset {
}
}//package bunker
Section 8
//EntranceWindows (bunker.EntranceWindows)
package bunker {
import com.alternativagame.engine3d.*;
public class EntranceWindows extends Mesh {
public function EntranceWindows(){
super("EntranceWindows");
mobile = 1;
x = 539.3701171875;
y = -1921.25988769531;
addVertex(-3.00927734375, 272.643188476563, 90.5511932373047, "0");
addVertex(-3.00927734375, 272.643188476563, 66.9291381835938, "1");
addVertex(40.6867065429688, 144.41357421875, 66.9291152954102, "2");
addVertex(40.6867065429688, 144.41357421875, 90.5511932373047, "3");
addVertex(-351.321472167969, 272.643188476563, 90.5511932373047, "4");
addVertex(-395.017456054688, 144.41357421875, 90.5511932373047, "5");
addVertex(-395.017456054688, 144.41357421875, 66.9291152954102, "6");
addVertex(-351.321472167969, 272.643188476563, 66.9291381835938, "7");
addFace(["5", "6", "7", "4"], "0");
addFace(["1", "2", "3", "0"], "4");
addSurface(["4", "0"], "EntranceWindows");
setMaterialToSurface(new FillMaterial(0xFFFFFF), "EntranceWindows");
}
}
}//package bunker
Section 9
//Grid (bunker.Grid)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import com.alternativagame.utility.*;
import flash.net.*;
import flash.system.*;
public class Grid extends Mesh {
private var alpha:BitmapData;
public var material:TextureMaterial;
private var onLoadMethod:Function;
private var loader:Loader;
private var counter:uint;// = 0
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = Grid_Bmp;
public function Grid(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Grid");
mobile = 2;
addVertex(39.370086120558, 314.960639404249, 1.52587890625E-5, "0");
addVertex(39.370086120558, 3.0517578125E-5, 6.866455078125E-5, "1");
addVertex(-39.3700872192858, 3.0517578125E-5, 6.866455078125E-5, "2");
addVertex(-39.3700872192858, 314.960639404249, 1.52587890625E-5, "3");
addVertex(-39.3700719604967, -157.480339599657, 0.0001068115234375, "4");
addVertex(39.3700708617689, -157.480339599657, 0.0001068115234375, "5");
addVertex(39.370086120558, -944.88198144536, 0.00022125244140625, "6");
addVertex(39.370086120558, -629.921288085985, 0.00017547607421875, "7");
addVertex(-39.3700872192858, -629.921288085985, 0.00017547607421875, "8");
addVertex(39.3700708617689, -472.440910888719, 0.000152587890625, "9");
addVertex(-39.3700872192858, -944.88198144536, 0.00022125244140625, "10");
addVertex(-39.3700719604967, -472.440910888719, 0.000152587890625, "11");
addFace(["7", "8", "10", "6"], "0");
setUVsToFace(new Point(0.252499997615814, 0.995000004768372), new Point(0.00499999988824129, 0.995000004768372), new Point(0.00499999988824129, 0.00499999988824129), "0");
addFace(["4", "11", "9", "5"], "1");
setUVsToFace(new Point(0.262261658906937, 0.994999706745148), new Point(0.262261658906937, 0.00499999988824129), new Point(0.509761571884155, 0.00499999988824129), "1");
addFace(["0", "3", "2", "1"], "6");
setUVsToFace(new Point(0.520228862762451, 0.00499999988824129), new Point(0.767728924751282, 0.00499999988824129), new Point(0.767728924751282, 0.994999825954437), "6");
addSurface(["0", "6", "1"], "Grid");
setMaterialToSurface(material, "Grid");
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("gridalpha.gif"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading grid texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadComplete(_arg1:Event):void{
counter++;
if (counter < 2){
switch (counter){
case 1:
alpha = Bitmap(loader.content).bitmapData;
loader.load(new URLRequest("grid.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
};
} else {
material.texture = new TextureData(BitmapUtility.mergeBitmapAlpha(Bitmap(loader.content).bitmapData, alpha, true));
complete();
};
}
}
}//package bunker
Section 10
//Grid_Bmp (bunker.Grid_Bmp)
package bunker {
import mx.core.*;
public class Grid_Bmp extends BitmapAsset {
}
}//package bunker
Section 11
//MoveSound (bunker.MoveSound)
package bunker {
import flash.events.*;
import flash.utils.*;
import com.alternativagame.utility.*;
import flash.media.*;
import flash.net.*;
public class MoveSound {
private var intervalId:int;
private var sequence:Array;
private var channel:SoundChannel;
private var sounds:Array;
private var loaded:Boolean;// = false
private var sound:Sound;
private var onLoadMethod:Function;
private var transform:SoundTransform;
private var current:int;// = -1
private var counter:int;// = -1
public static const FLY:uint = 3;
public static const NONE:uint = 0;
public static const WALK:uint = 1;
public static const RUN:uint = 2;
public function MoveSound(){
sequence = ["step1.mp3", "step2.mp3", "step3.mp3", "step4.mp3", "fly.mp3"];
sounds = new Array();
transform = new SoundTransform();
super();
}
private function loadNext():void{
counter++;
if (sound != null){
sound.removeEventListener(Event.COMPLETE, onLoadComplete);
sound.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
};
if (counter < sequence.length){
sound = new Sound();
sound.addEventListener(Event.COMPLETE, onLoadComplete);
sound.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
sound.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
sound.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
sound.load(new URLRequest(sequence[counter]), new SoundLoaderContext());
} else {
loaded = true;
onLoadMethod.call();
onLoadMethod = null;
sound = null;
};
}
private function onLoadError(_arg1:IOErrorEvent):void{
loadNext();
}
public function setMode(_arg1:uint, _arg2:Number=1):void{
var _local3:Sound;
if (loaded){
if (current != _arg1){
clearInterval(intervalId);
current = -1;
current = _arg1;
if ((((_arg1 == WALK)) || ((_arg1 == RUN)))){
nextSample();
intervalId = setInterval(nextSample, ((_arg1)==WALK) ? 500 : 300);
};
if (_arg1 == FLY){
_local3 = sounds[(sounds.length - 1)];
if (_local3 != null){
channel = _local3.play(0, 1000000, transform);
};
};
};
if (_arg1 == FLY){
transform.volume = (0.5 + (_arg2 / 2));
if (transform.volume > 2){
transform.volume = 2;
};
channel.soundTransform = transform;
};
};
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loadNext();
return ("Loading sound");
}
private function nextSample():void{
var _local1:Sound = sounds[Math.round(MathUtility.random(0, (sounds.length - 2)))];
if (_local1 != null){
_local1.play();
};
}
private function onLoadComplete(_arg1:Event):void{
sounds.push(sound);
loadNext();
}
}
}//package bunker
Section 12
//Passage (bunker.Passage)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class Passage extends Mesh {
private var loader:Loader;
private var onLoadMethod:Function;
public var material:TextureMaterial;
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = Passage_Bmp;
public function Passage(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Passage");
mobile = 1;
y = -1023.6220703125;
addVertex(62.9925537109375, -362.204223632813, 23.1080436706543, "101");
addVertex(47.2440299987793, 0.0003662109375, -0.00194549560546875, "1");
addVertex(314.960571289063, -598.4248046875, -0.00255584716796875, "177");
addVertex(31.4959907531738, -236.22021484375, 125.982040405273, "4");
addVertex(47.2440223693848, -236.220092773438, -0.0022125244140625, "69");
addVertex(-31.496129989624, 0.000244140625, 125.982315063477, "6");
addVertex(-47.2441673278809, -236.220092773438, -0.0022125244140625, "7");
addVertex(299.213134765625, -267.7158203125, 125.982299804688, "136");
addVertex(-31.4961357116699, -236.22021484375, 125.982040405273, "75");
addVertex(51.8591575622559, -247.353271484375, -0.00223541259765625, "12");
addVertex(377.159545898438, -284.2578125, -0.00196075439453125, "133");
addVertex(310.346313476563, -351.071044921875, -0.00203704833984375, "142");
addVertex(-26.0896949768066, -325.302124023438, 23.1079368591309, "16");
addVertex(62.9930038452148, -236.219360351563, 23.1081619262695, "81");
addVertex(299.213134765625, -330.7080078125, 125.982238769531, "21");
addVertex(62.9925537109375, -330.708129882813, 125.982109069824, "22");
addVertex(299.213134765625, -251.967651367188, -0.00194549560546875, "24");
addVertex(62.9925537109375, -251.968017578125, -0.00208282470703125, "25");
addVertex(299.213134765625, -236.219848632813, 23.1083106994629, "26");
addVertex(366.024047851563, -295.393432617188, 125.982276916504, "155");
addVertex(321.481811523438, -339.935424804688, 125.982238769531, "29");
addVertex(388.295043945313, -273.122314453125, 23.1082878112793, "31");
addVertex(330.708984375, -362.204467773438, 125.98210144043, "33");
addVertex(393.701019287109, -362.204467773438, 125.98210144043, "34");
addVertex(62.9925537109375, -346.4560546875, -0.00217437744140625, "100");
addVertex(425.19775390625, -598.424072265625, 23.1078186035156, "37");
addVertex(40.7234153747559, -258.488891601563, 125.982025146484, "85");
addVertex(330.708618164063, -598.424926757813, 125.98169708252, "39");
addVertex(393.700744628906, -598.424926757813, 125.98169708252, "40");
addVertex(-3.81857681274414, -303.031127929688, 125.981979370117, "97");
addVertex(409.449035644531, -362.204345703125, -0.00215911865234375, "153");
addVertex(299.212219238281, -362.204956054688, 23.1080665588379, "43");
addVertex(31.4959964752197, 0.000244140625, 125.982315063477, "45");
addVertex(425.197082519531, -362.204467773438, 23.1080780029297, "166");
addVertex(62.9920616149902, 0.000244140625, 23.1082801818848, "47");
addVertex(314.9609375, -362.204345703125, -0.002166748046875, "149");
addVertex(409.448760986328, -598.4248046875, -0.00255584716796875, "169");
addVertex(299.212554931641, -598.424926757813, 23.1076812744141, "178");
addVertex(-14.9540748596191, -314.16650390625, -0.00229644775390625, "90");
addVertex(-47.2441596984863, 0.0003662109375, -0.00194549560546875, "54");
addVertex(62.9925537109375, -267.716186523438, 125.982162475586, "119");
addVertex(-62.9921913146973, 0.000244140625, 23.1082801818848, "57");
addVertex(299.213134765625, -346.455810546875, -0.00203704833984375, "123");
addVertex(-62.9921989440918, -236.22021484375, 23.1080207824707, "61");
addFace(["85", "97", "75", "4"], "0");
setUVsToFace(new Point(0.269689649343491, 0.564177930355072), new Point(0.268254697322845, 0.637364268302917), new Point(0.1912590432554, 0.603692690542139), "0");
addFace(["61", "7", "54", "57"], "1");
setUVsToFace(new Point(0.830142617225647, 0.96650230884552), new Point(0.830142438411713, 0.999000012874603), new Point(0.555640876293195, 0.998999644518249), "1");
addFace(["43", "123", "100", "101"], "2");
setUVsToFace(new Point(0.830141544342041, 0.931184649467468), new Point(0.830142608236583, 0.963682311776368), new Point(0.555640935897827, 0.963682889938354), "2");
addFace(["81", "25", "24", "26"], "3");
setUVsToFace(new Point(0.552821576595306, 0.931184530258179), new Point(0.552822053432465, 0.96368271112442), new Point(0.278320401906967, 0.963682174682617), "3");
addFace(["57", "6", "75", "61"], "4");
setUVsToFace(new Point(0.555640935897827, 0.893047947354113), new Point(0.555640935897827, 0.76802521944046), new Point(0.830142438411713, 0.768025577068329), "4");
addFace(["136", "119", "81", "26"], "5");
setUVsToFace(new Point(0.278320401906967, 0.76802521944046), new Point(0.552822053432465, 0.76802533864975), new Point(0.552821530351021, 0.893048061927499), "5");
addFace(["101", "16", "97", "22"], "6");
setUVsToFace(new Point(0.862769245721628, 0.113049494184218), new Point(0.862769246101379, 0.00100000004749745), new Point(0.987005054950714, 0.015005256049335), "6");
addFace(["22", "97", "85", "119"], "7");
setUVsToFace(new Point(0.346510990555384, 0.606736193436473), new Point(0.268254697322845, 0.637364268302917), new Point(0.269689649343491, 0.564177930355072), "7");
addFace(["61", "16", "90", "7"], "8");
setUVsToFace(new Point(0.0685883313417435, 0.00795052852481604), new Point(0.18063722550869, 0.0079504931345582), new Point(0.173634648323059, 0.0396849401295185), "8");
addFace(["7", "69", "1", "54"], "9");
setUVsToFace(new Point(0.183734504389577, 0.0436126515269279), new Point(0.265670269727707, 0.116706468164921), new Point(0.0829357653856277, 0.321545869112015), "9");
addFace(["133", "31", "26", "24"], "10");
setUVsToFace(new Point(0.75490391254425, 0.330265164375305), new Point(0.74790116730532, 0.298531241748188), new Point(0.859950304031372, 0.298530995845795), "10");
addFace(["153", "133", "142", "149"], "11");
setUVsToFace(new Point(0.677215993404388, 0.287651985883713), new Point(0.588918447494507, 0.330265164375305), new Point(0.582666277885437, 0.220642745494843), "11");
addFace(["69", "12", "81"], "12");
setUVsToFace(new Point(0.807421803474426, 0.637364268302917), new Point(0.807421803474426, 0.623359262943268), new Point(0.839155852794647, 0.630356669425964), "12");
addFace(["6", "45", "4", "75"], "13");
setUVsToFace(new Point(0.000999998301267624, 0.405822247266769), new Point(0.0537653677165508, 0.355086535215378), new Point(0.24402442574501, 0.552956700325012), "13");
addFace(["119", "136", "21", "22"], "14");
setUVsToFace(new Point(0.295775353908539, 0.55397093296051), new Point(0.493645191192627, 0.363711476325989), new Point(0.544380950870443, 0.416476871431691), "14");
addFace(["81", "85", "4"], "15");
setUVsToFace(new Point(0.84197473526001, 0.462892413139343), new Point(0.966210067272186, 0.448891550302505), new Point(0.966210126876831, 0.476902663707733), "15");
addFace(["1", "69", "81", "47"], "16");
setUVsToFace(new Point(0.552821934223175, 0.928364992141724), new Point(0.278320422218377, 0.928365141742568), new Point(0.278321176767349, 0.895867109298706), "16");
addFace(["136", "155", "29", "21"], "18");
setUVsToFace(new Point(0.493645191192627, 0.363711476325989), new Point(0.571901738643646, 0.33308407664299), new Point(0.570466420283868, 0.40627034843234), "18");
addFace(["142", "133", "24", "123"], "19");
setUVsToFace(new Point(0.582666277885437, 0.220642745494843), new Point(0.588918604256969, 0.330265136200692), new Point(0.496348112821579, 0.297968208789825), "19");
addFace(["22", "21", "43", "101"], "76");
setUVsToFace(new Point(0.278320381093992, 0.640183161366616), new Point(0.55282199382782, 0.64018315076828), new Point(0.552820980548859, 0.765206277370453), "76");
addFace(["25", "81", "12"], "22");
setUVsToFace(new Point(0.455002009868622, 0.339504837989807), new Point(0.486735761165619, 0.346511989831924), new Point(0.455001801252365, 0.353509813547134), "22");
addFace(["100", "123", "24", "25"], "23");
setUVsToFace(new Point(0.364602501137078, 0.0332977042156236), new Point(0.569441854953766, 0.2160325050354), new Point(0.496348112821579, 0.297968208789825), "23");
addFace(["81", "4", "45", "47"], "24");
setUVsToFace(new Point(0.555641809656766, 0.7652057892721), new Point(0.555640876293182, 0.64018326997757), new Point(0.830142378807068, 0.64018315076828), "24");
addFace(["81", "119", "85"], "25");
setUVsToFace(new Point(0.0604258812963963, 0.62336277961731), new Point(0.184661373496056, 0.609352648258209), new Point(0.184661209583282, 0.637364268302917), "25");
addFace(["100", "25", "12"], "26");
setUVsToFace(new Point(0.364602595567703, 0.033297672867775), new Point(0.291508853435516, 0.115233302116394), new Point(0.278284668922424, 0.110622465610504), "26");
addFace(["166", "31", "133", "153"], "27");
setUVsToFace(new Point(0.587426841259003, 0.503949880599976), new Point(0.587427258491516, 0.615998804569244), new Point(0.555692911148071, 0.608996212482452), "27");
addFace(["153", "169", "37", "166"], "28");
setUVsToFace(new Point(0.275501519441605, 0.928365290164948), new Point(0.00100000149920215, 0.928365542881906), new Point(0.00100081565324217, 0.895867526531219), "28");
addFace(["177", "169", "153", "149"], "29");
setUVsToFace(new Point(0.778014580491357, 0.00971857826632175), new Point(0.859950304031372, 0.0828123912215233), new Point(0.677215993404388, 0.287651985883713), "29");
addFace(["90", "16", "101", "100"], "30");
setUVsToFace(new Point(0.26200932264328, 0.446856290102005), new Point(0.29374372959137, 0.439853578805923), new Point(0.293743789196014, 0.551902651786804), "30");
addFace(["155", "31", "166", "34"], "31");
setUVsToFace(new Point(0.966210603713989, 0.431127786636353), new Point(0.841974854469299, 0.445133060216904), new Point(0.841974486280527, 0.333083663806535), "31");
addFace(["37", "40", "34", "166"], "32");
setUVsToFace(new Point(0.0010009752586484, 0.893048584461212), new Point(0.00100000004749745, 0.768025696277618), new Point(0.275501477593882, 0.768024983666583), "32");
addFace(["177", "149", "43", "178"], "33");
setUVsToFace(new Point(0.830142438411713, 0.928365767002106), new Point(0.555640904929208, 0.92836498677698), new Point(0.555641651153564, 0.895867168903351), "33");
addFace(["26", "31", "155", "136"], "34");
setUVsToFace(new Point(0.832961559295654, 0.880074083805084), new Point(0.832961320877075, 0.76802521944046), new Point(0.957196884398844, 0.782030460901457), "34");
addFace(["29", "155", "34", "33"], "35");
setUVsToFace(new Point(0.57046639919281, 0.406270384788513), new Point(0.571901738643646, 0.33308407664299), new Point(0.648897104383392, 0.366756489334293), "35");
addFace(["90", "100", "12", "69", "7"], "20");
setUVsToFace(new Point(0.272032521855467, 0.00100008299584045), new Point(0.364602649519175, 0.0332977885519475), new Point(0.278284668922424, 0.110622465610504), "20");
addFace(["43", "33", "39", "178"], "38");
setUVsToFace(new Point(0.00100054976064712, 0.765206098556519), new Point(0.00100000004749745, 0.64018315076828), new Point(0.275501507336504, 0.640183531575953), "38");
addFace(["97", "16", "61", "75"], "39");
setUVsToFace(new Point(0.957197189331055, 0.738227188587189), new Point(0.832961320877075, 0.752232015132904), new Point(0.83296124447405, 0.640182598928691), "39");
addFace(["123", "43", "142"], "44");
setUVsToFace(new Point(0.422328233718872, 0.33950486779213), new Point(0.454062163829803, 0.346512347459793), new Point(0.422328233718872, 0.353509813547134), "44");
addFace(["40", "39", "33", "34"], "37");
setUVsToFace(new Point(0.83915575066982, 0.564626739195502), new Point(0.786390423774719, 0.615362524986267), new Point(0.59613174200058, 0.417492210865021), "37");
addFace(["43", "21", "29"], "47");
setUVsToFace(new Point(0.862769186496735, 0.130817756056786), new Point(0.98700487613678, 0.116807609796524), new Point(0.98700487613678, 0.144818708300591), "47");
addFace(["149", "142", "43"], "54");
setUVsToFace(new Point(0.774748206138611, 0.637364268302917), new Point(0.7747483253479, 0.623359441757202), new Point(0.806482195854187, 0.630357563495636), "54");
addFace(["43", "29", "33"], "57");
setUVsToFace(new Point(0.714920163154602, 0.3517085313797), new Point(0.839155852794647, 0.337707251310349), new Point(0.839155614376068, 0.365718603134155), "57");
addSurface(["13", "76", "30", "15", "22", "27", "5", "12", "26", "57", "35", "2", "32", "47", "19", "37", "8", "10", "16", "23", "25", "3", "33", "29", "6", "28", "9", "11", "0", "24", "39", "38", "14", "34", "31", "7", "54", "1", "4", "20", "18", "44"], "Passage");
setMaterialToSurface(material, "Passage");
}
private function onLoadComplete(_arg1:Event):void{
material.texture = new TextureData(Bitmap(loader.content).bitmapData);
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("passage.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading passage texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
}
}//package bunker
Section 13
//Passage_Bmp (bunker.Passage_Bmp)
package bunker {
import mx.core.*;
public class Passage_Bmp extends BitmapAsset {
}
}//package bunker
Section 14
//Reactor (bunker.Reactor)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class Reactor extends Mesh {
public var material1:TextureMaterial;
public var material2:TextureMaterial;
public var material3:TextureMaterial;
public var material4:TextureMaterial;
private var loader:Loader;
private var onLoadMethod:Function;
private var counter:uint;// = 0
private static const Bmp1:Class = Reactor_Bmp1;
private static const Bmp2:Class = Reactor_Bmp2;
private static const Bmp3:Class = Reactor_Bmp3;
private static const Bmp4:Class = Reactor_Bmp4;
private static const texture1:TextureData = new TextureData(new Bmp1().bitmapData);
private static const texture2:TextureData = new TextureData(new Bmp2().bitmapData);
private static const texture4:TextureData = new TextureData(new Bmp4().bitmapData);
private static const texture3:TextureData = new TextureData(new Bmp3().bitmapData);
public function Reactor(){
material1 = new TextureMaterial(texture1, 1, false, true, 1);
material2 = new TextureMaterial(texture2, 1, false, true, 1);
material3 = new TextureMaterial(texture3, 1, false, true, 1);
material4 = new TextureMaterial(texture4, 1, false, true, 1);
super("Reactor");
coords = new Point3D(6.01790806856878E-13, 2322.83471679688, -629.921264648438);
addVertex(-236.220474243165, -551.18115234375, 141.732299804688, "0");
addVertex(55.1180648803705, -141.73193359375, 173.228332519531, "1");
addVertex(551.181091308593, -236.220458984375, 141.732299804688, "2");
addVertex(-118.110244750977, -551.18115234375, 141.732299804688, "4");
addVertex(62.9921913146967, -511.810913085938, 23.1101684570313, "5");
addVertex(-141.732254028321, -55.117919921875, 173.228363037109, "6");
addVertex(551.181091308593, -236.220458984375, 236.220581054688, "7");
addVertex(551.181030273437, -118.1103515625, 236.220581054688, "8");
addVertex(-551.181091308594, -236.220458984375, 236.220581054688, "9");
addVertex(-551.181091308594, -236.220458984375, 141.732299804688, "10");
addVertex(393.700866699218, -118.1103515625, 78.740234375, "11");
addVertex(-236.220489501954, -85.494873046875, 0, "12");
addVertex(-85.4949951171881, -236.220458984375, 0, "13");
addVertex(-118.110244750977, -551.18115234375, 236.220611572266, "14");
addVertex(118.110237121581, -551.18115234375, 141.732299804688, "16");
addVertex(62.9921874999994, -359.157958984375, 23.1101684570313, "17");
addVertex(-62.9920616149908, -511.810913085938, 23.1101684570313, "18");
addVertex(31.4961223602289, -511.81103515625, 125.984313964844, "19");
addVertex(62.073265075683, -393.700927734375, 78.740234375, "20");
addVertex(-118.110229492188, -393.700927734375, 78.7401733398438, "21");
addVertex(-62.073146820069, -393.700927734375, 78.740234375, "22");
addVertex(-118.110244750977, -314.960693359375, 0, "23");
addVertex(64.7250213623041, -314.960571289063, -6.103515625E-5, "24");
addVertex(-23.6220436096197, -520.247436523438, 149.6064453125, "25");
addVertex(-23.6220436096197, -525.871826171875, 165.3544921875, "26");
addVertex(-417.778442382813, 78.740234375, 102.826171875, "27");
addVertex(-529.133850097657, 78.740234375, 214.181671142578, "28");
addVertex(-529.133850097657, -78.739990234375, 214.181640625, "29");
addVertex(-417.778350830079, -78.739990234375, 102.826171875, "30");
addVertex(-31.4960041046149, -511.81103515625, 125.984313964844, "31");
addVertex(39.3700408935541, -102.362060546875, 196.850402832031, "32");
addVertex(102.362121582031, -39.369873046875, 196.850402832031, "33");
addVertex(-102.362335205079, 39.369873046875, 196.850341796875, "34");
addVertex(-102.36215209961, -39.369873046875, 196.850402832031, "35");
addVertex(47.2441596984857, -335.389892578125, -6.103515625E-5, "40");
addVertex(-64.7248916625983, -314.960571289063, -6.103515625E-5, "42");
addVertex(-79.5289916992193, -336.685546875, 21.7249755859375, "43");
addVertex(-55.1181259155279, -141.73193359375, 173.228393554688, "44");
addVertex(-41.5130691528326, -430.015380859375, 93.2660522460938, "46");
addVertex(41.5131874084467, -430.015380859375, 93.2660522460938, "47");
addVertex(-47.2440338134772, -335.389892578125, -6.103515625E-5, "48");
addVertex(236.220474243163, -551.18115234375, 141.732299804688, "49");
addVertex(-551.181030273438, 118.1103515625, 236.220581054688, "50");
addVertex(118.110244750976, -314.960693359375, 0, "51");
addVertex(-23.6220436096197, -513.0888671875, 164.718994140625, "52");
addVertex(118.110260009765, -393.700927734375, 78.7401733398438, "53");
addVertex(-62.9920654296881, -359.157958984375, 23.1101684570313, "54");
addVertex(23.6220474243158, -513.0888671875, 164.718994140625, "55");
addVertex(-393.700866699219, -118.110107421875, 78.740234375, "56");
addVertex(23.6220474243158, -525.871826171875, 165.3544921875, "57");
addVertex(23.6220474243158, -520.247436523438, 149.6064453125, "58");
addVertex(79.5291213989252, -336.685546875, 21.7249755859375, "59");
addVertex(-314.960601806641, -118.110107421875, 0, "60");
addVertex(-47.2440299987799, -511.810913085938, -6.103515625E-5, "62");
addVertex(85.4949951171869, -236.220458984375, 0, "63");
addVertex(-141.732360839844, 55.1181640625, 173.228302001953, "64");
addVertex(47.2441596984857, -511.810913085938, -6.103515625E-5, "67");
addVertex(551.181091308593, 236.220458984375, 141.732299804688, "68");
addVertex(-551.181091308594, 236.220458984375, 141.732299804688, "69");
addVertex(-236.220474243165, 551.180908203125, 141.732299804688, "70");
addVertex(236.220474243163, 551.180908203125, 141.732299804688, "71");
addVertex(551.181091308593, 118.110107421875, 236.220581054688, "72");
addVertex(-39.3700866699225, -102.362060546875, 196.850402832031, "74");
addVertex(102.362274169921, 39.369873046875, 196.850341796875, "76");
addVertex(39.3700485229486, 102.36181640625, 196.850402832031, "77");
addVertex(55.1180877685541, 141.732177734375, 173.228332519531, "80");
addVertex(-55.1181030273444, 141.732177734375, 173.228393554688, "81");
addVertex(141.732208251953, -55.117919921875, 173.228363037109, "83");
addVertex(-314.960601806641, 118.110107421875, 0, "84");
addVertex(118.110229492187, 314.96044921875, 0, "85");
addVertex(314.960632324218, -118.1103515625, 0, "86");
addVertex(314.960632324218, 118.109619140625, 0, "87");
addVertex(-118.109985351563, 314.96044921875, 0, "88");
addVertex(-118.110137939454, 393.70068359375, 78.740234375, "89");
addVertex(-236.220474243165, 85.49462890625, 0, "90");
addVertex(236.220489501953, -85.4951171875, 0, "91");
addVertex(236.220474243163, 85.49462890625, 0, "92");
addVertex(-118.110168457032, 551.180908203125, 236.220520019531, "95");
addVertex(-85.49496459961, 236.22021484375, 0, "96");
addVertex(529.133911132812, 78.739990234375, 214.181640625, "97");
addVertex(529.133911132812, -78.740234375, 214.181671142578, "98");
addVertex(141.732299804687, 55.1181640625, 173.228302001953, "99");
addVertex(417.778503417968, -78.740234375, 102.826171875, "100");
addVertex(78.7402877807611, 417.7783203125, 102.826171875, "101");
addVertex(85.4949645996088, 236.22021484375, 0, "102");
addVertex(-78.7399978637701, 529.1337890625, 214.181640625, "103");
addVertex(-78.7399368286139, 417.7783203125, 102.826171875, "104");
addVertex(-39.3700790405279, 102.36181640625, 196.850402832031, "105");
addVertex(393.700866699218, 118.110107421875, 78.740234375, "106");
addVertex(-236.220474243165, 551.180908203125, 236.220489501953, "108");
addVertex(78.740257263183, 529.1337890625, 214.181671142578, "109");
addVertex(118.110260009765, 393.70068359375, 78.740234375, "111");
addVertex(417.77847290039, 78.739990234375, 102.826171875, "113");
addVertex(-393.700805664063, 118.110107421875, 78.740234375, "116");
addVertex(228.346389770507, 86.6142578125, 984.252014160156, "117");
addVertex(228.346450805663, -86.6142578125, 984.252075195313, "118");
addVertex(102.362274169921, -39.369873046875, 606.299255371094, "119");
addVertex(39.3700408935541, -102.36181640625, 606.299194335938, "120");
addVertex(-55.1181106567389, 141.73193359375, 629.921203613281, "121");
addVertex(-39.3700790405279, 102.362060546875, 606.299194335938, "123");
addVertex(314.960754394531, -118.1103515625, 984.251342773438, "125");
addVertex(-86.6141738891608, 228.34619140625, 984.252014160156, "126");
addVertex(141.732208251953, 55.117919921875, 629.921203613281, "127");
addVertex(-114.531021118165, 95.4423828125, 669.291442871094, "130");
addVertex(55.1180801391596, 141.73193359375, 629.921203613281, "131");
addVertex(-102.36215209961, 39.369873046875, 606.299194335938, "132");
addVertex(118.110290527343, 551.180908203125, 236.220520019531, "134");
addVertex(-228.346450805665, 86.6142578125, 984.252014160156, "137");
addVertex(101.407653808593, 121.689208984375, 708.661499023438, "138");
addVertex(102.362121582031, 39.369873046875, 606.299194335938, "139");
addVertex(39.3700485229486, 102.362060546875, 606.299194335938, "140");
addVertex(121.689208984374, 101.40771484375, 708.661499023438, "141");
addVertex(348.114288330078, 290.09521484375, 551.181213378906, "142");
addVertex(114.531005859374, 95.4423828125, 669.291442871094, "144");
addVertex(141.732299804687, -55.1181640625, 629.921264648438, "146");
addVertex(290.095245361328, 348.1142578125, 551.181213378906, "147");
addVertex(86.6141433715814, 228.34619140625, 984.252014160156, "148");
addVertex(95.4424819946283, 114.531005859375, 669.291442871094, "149");
addVertex(-101.407714843751, 121.689208984375, 708.661499023438, "150");
addVertex(-290.095275878907, 348.1142578125, 551.181213378906, "152");
addVertex(-324.002502441407, 388.802978515625, 393.700897216797, "153");
addVertex(236.220474243163, 551.180908203125, 236.220489501953, "154");
addVertex(-118.110229492188, 314.96044921875, 984.251953125, "155");
addVertex(118.110198974609, 314.96044921875, 984.251953125, "156");
addVertex(-95.4425430297858, 114.531005859375, 669.291442871094, "157");
addVertex(-348.114349365235, 290.09521484375, 551.181213378906, "158");
addVertex(551.181091308593, 236.220458984375, 236.220581054688, "159");
addVertex(314.960571289062, 118.110107421875, 984.251953125, "160");
addVertex(324.002471923828, 388.802978515625, 393.700897216797, "161");
addVertex(-121.689224243165, 101.40771484375, 708.661499023438, "162");
addVertex(388.802978515624, 324.00244140625, 393.700897216797, "163");
addVertex(-388.80307006836, 324.00244140625, 393.700927734375, "164");
addVertex(-118.110229492188, -314.96044921875, 984.251953125, "166");
addVertex(55.118072509765, -141.732177734375, 629.921203613281, "167");
addVertex(118.110237121581, -551.18115234375, 236.220611572266, "168");
addVertex(-101.407768249512, -121.689453125, 708.661499023438, "170");
addVertex(-551.181030273438, -118.110107421875, 236.220581054688, "171");
addVertex(-324.002532958985, -388.802978515625, 393.700927734375, "173");
addVertex(-86.6141738891608, -228.34619140625, 984.252014160156, "174");
addVertex(-141.732254028321, 55.117919921875, 629.921203613281, "175");
addVertex(-141.732360839844, -55.1181640625, 629.921264648438, "176");
addVertex(-114.531127929688, -95.442626953125, 669.291442871094, "177");
addVertex(-121.689315795899, -101.407958984375, 708.661499023438, "178");
addVertex(-388.803009033204, -324.002685546875, 393.700866699219, "179");
addVertex(-348.114288330079, -290.095336914063, 551.181213378906, "181");
addVertex(-55.1181182861334, -141.732177734375, 629.921203613281, "183");
addVertex(290.095245361328, -348.1142578125, 551.181274414063, "184");
addVertex(-228.346511840821, -86.6142578125, 984.252075195313, "185");
addVertex(-95.4426193237311, -114.53125, 669.291442871094, "186");
addVertex(-290.095245361329, -348.114379882813, 551.181213378906, "188");
addVertex(-39.3700866699225, -102.36181640625, 606.299194335938, "189");
addVertex(-102.362335205079, -39.369873046875, 606.299255371094, "190");
addVertex(388.803039550781, -324.002563476563, 393.700927734375, "193");
addVertex(-551.181091308594, 236.220458984375, 236.220581054688, "194");
addVertex(95.4425888061517, -114.531005859375, 669.291442871094, "195");
addVertex(101.407730102538, -121.689208984375, 708.661437988281, "196");
addVertex(118.110198974609, -314.96044921875, 984.251953125, "197");
addVertex(348.114318847656, -290.095336914063, 551.181213378906, "198");
addVertex(114.531097412109, -95.442626953125, 669.291442871094, "199");
addVertex(86.6141433715814, -228.34619140625, 984.252014160156, "200");
addVertex(236.220474243163, -551.18115234375, 236.220611572266, "201");
addVertex(324.002532958984, -388.802978515625, 393.700866699219, "203");
addVertex(-314.960632324219, 118.110107421875, 984.251953125, "204");
addVertex(-236.220474243165, -551.18115234375, 236.220611572266, "205");
addVertex(121.689270019531, -101.40771484375, 708.661437988281, "207");
addVertex(-314.960815429688, -118.1103515625, 984.251342773438, "208");
addFace(["21", "0", "4", "31", "46", "22"], "0");
setUVsToFace(new Point(0.105798617005348, 0.999000012874603), new Point(0.00100000004749745, 0.848505079746246), new Point(0.10579838603735, 0.848504960536957), "0");
addFace(["58", "19", "31", "25"], "1");
setUVsToFace(new Point(0.801227271556854, 0.848293662071228), new Point(0.808213889598846, 0.870550036430359), new Point(0.752321422100067, 0.870550036430359), "1");
addFace(["57", "168", "19", "58"], "2");
setUVsToFace(new Point(0.801227267910419, 0.833456118386742), new Point(0.885065972805023, 0.766687273979187), new Point(0.808213889598846, 0.870550036430359), "2");
addFace(["20", "53", "51", "59"], "3");
setUVsToFace(new Point(0.338947981595993, 0.310168236494064), new Point(0.338947921991348, 0.359889447689056), new Point(0.240142986178398, 0.359889328479767), "3");
addFace(["49", "201", "7", "2"], "4");
setUVsToFace(new Point(0.6017906665802, 0.269489807146431), new Point(0.6017906665802, 0.185650989413261), new Point(0.997010231018066, 0.185651034116745), "4");
addFace(["16", "49", "53", "20", "47", "19"], "5");
setUVsToFace(new Point(0.645109236240387, 0.676238119602203), new Point(0.70537070305827, 0.761977609976006), new Point(0.521983623504639, 0.762776136398315), "5");
addFace(["22", "46", "54", "43"], "6");
setUVsToFace(new Point(0.829220414161682, 0.446416020393372), new Point(0.793857634067535, 0.429486811161041), new Point(0.884349942207336, 0.42805203795433), "6");
addFace(["31", "14", "26", "25"], "7");
setUVsToFace(new Point(0.752321422100067, 0.870550036430359), new Point(0.675469219684601, 0.766687273979187), new Point(0.759307915990031, 0.833456118386732), "7");
addFace(["1", "83", "33", "32"], "8");
setUVsToFace(new Point(0.29395005106926, 0.00599717069417238), new Point(0.402635335922241, 0.00599713018164039), new Point(0.387814611196518, 0.0464348047971725), "8");
addFace(["14", "168", "57", "26"], "9");
setUVsToFace(new Point(0.675469195991322, 0.766687273979187), new Point(0.885065972805023, 0.766687273979187), new Point(0.801227271556854, 0.833456099033356), "9");
addFace(["50", "171", "29", "28"], "10");
setUVsToFace(new Point(0.297414660453796, 0.634997069835663), new Point(0.297414571046783, 0.844593841861258), new Point(0.269754528999329, 0.809660911560059), "10");
addFace(["53", "49", "2", "11"], "11");
setUVsToFace(new Point(0.626491904258728, 0.182717680931091), new Point(0.6017906665802, 0.00100002030376345), new Point(0.99701010285341, 0.00100002548775535), "11");
addFace(["67", "40", "48", "62"], "12");
setUVsToFace(new Point(0.106187373399734, 0.418039113283157), new Point(0.159205824136734, 0.270753979682922), new Point(0.238089326228525, 0.299149812414255), "12");
addFace(["51", "86", "91", "63", "24"], "13");
setUVsToFace(new Point(0.106182686984539, 0.23240177333355), new Point(0.000999944165384029, 0.0089033797552396), new Point(0.0765377796040592, 0.00533773164598639), "13");
addFace(["14", "4", "0", "205"], "14");
setUVsToFace(new Point(0.902103960514069, 0.45034596323967), new Point(0.902103960514069, 0.534184813499451), new Point(0.797305524349213, 0.534184813499451), "14");
addFace(["63", "91", "83", "1"], "15");
setUVsToFace(new Point(0.790924370288849, 0.444941192865372), new Point(0.6017906665802, 0.444941192865372), new Point(0.642014741897583, 0.272423148155212), "15");
addFace(["90", "84", "60", "12"], "16");
setUVsToFace(new Point(0.522341668605804, 0.00456583919003606), new Point(0.597879528999329, 0.00100000004749745), new Point(0.526889960348693, 0.198208606340448), "16");
addFace(["60", "56", "21", "23"], "17");
setUVsToFace(new Point(0.536557691758511, 0.360867337976672), new Point(0.585960149765015, 0.446434944868088), new Point(0.240142926573753, 0.446434855461121), "17");
addFace(["44", "13", "63", "1"], "18");
setUVsToFace(new Point(0.476408571004868, 0.935213506221771), new Point(0.301325708627701, 0.962166726589203), new Point(0.301325711860109, 0.810448477755634), "18");
addFace(["56", "10", "0", "21"], "19");
setUVsToFace(new Point(0.0257010335994761, 0.632063659256689), new Point(0.00100000004749745, 0.450345933437347), new Point(0.396219491958618, 0.450346052646637), "19");
addFace(["64", "6", "35", "34"], "20");
setUVsToFace(new Point(0.00100000004749745, 0.340658754110336), new Point(0.0010000541806221, 0.242847040295601), new Point(0.0417383760213852, 0.256820172071457), "20");
addFace(["56", "60", "84", "116", "27", "30"], "21");
setUVsToFace(new Point(0.0998009186323617, 0.844593632224415), new Point(0.00100000004749745, 0.844593584537506), new Point(0.00100000004749745, 0.634997248649597), "21");
addFace(["12", "13", "44", "6"], "22");
setUVsToFace(new Point(0.490459442138672, 0.807515144348145), new Point(0.301325905323858, 0.807515197236946), new Point(0.341550141572952, 0.634997069835663), "22");
addFace(["17", "5", "19", "47"], "23");
setUVsToFace(new Point(0.29395005106926, 0.0474125668406487), new Point(0.429397970438004, 0.0474125780165195), new Point(0.429398082568736, 0.142874286744658), "23");
addFace(["90", "12", "6", "64"], "24");
setUVsToFace(new Point(0.793857634067535, 0.424140930175781), new Point(0.793857723289236, 0.272423152494233), new Point(0.968940377235413, 0.299376487731934), "24");
addFace(["23", "21", "22", "43"], "25");
setUVsToFace(new Point(0.131852716207504, 0.756969153881073), new Point(0.230657321195273, 0.756969033391498), new Point(0.230657666921616, 0.806690454483032), "25");
addFace(["40", "17", "59", "24"], "26");
setUVsToFace(new Point(0.16440449655056, 0.75102287530899), new Point(0.131852656602859, 0.751941025257111), new Point(0.138764457430778, 0.728119896991639), "26");
addFace(["43", "54", "48", "42"], "27");
setUVsToFace(new Point(0.20076759159565, 0.728052020072937), new Point(0.208374589681625, 0.751642525196075), new Point(0.175811186432838, 0.751941025257111), "27");
addFace(["171", "56", "30", "29"], "28");
setUVsToFace(new Point(0.297414630651474, 0.844593822956085), new Point(0.0998051167207016, 0.844593738662545), new Point(0.130023241043091, 0.809660851955414), "28");
addFace(["168", "201", "49", "16"], "29");
setUVsToFace(new Point(0.084838829934597, 0.341636538505554), new Point(0.084838829934597, 0.446434944868088), new Point(0.00100000004749745, 0.446434944868088), "29");
addFace(["40", "67", "5", "17"], "30");
setUVsToFace(new Point(0.258860975503922, 0.174123212695122), new Point(0.258860975503922, 0.0175860822200775), new Point(0.283674776554108, 0.0175861390435364), "30");
addFace(["17", "47", "20", "59"], "31");
setUVsToFace(new Point(0.529289311827507, 0.357653237397781), new Point(0.438715308904648, 0.359889447689056), new Point(0.473420947790146, 0.341651052236557), "31");
addFace(["31", "18", "54", "46"], "32");
setUVsToFace(new Point(0.257883220911026, 0.174123212695122), new Point(0.162421479821205, 0.174123167991638), new Point(0.16242140660073, 0.0386752788196659), "32");
addFace(["24", "63", "42", "48", "40"], "33");
setUVsToFace(new Point(0.150751397013664, 0.248445123434067), new Point(0.157074773082977, 0.176466924030841), new Point(0.258822698761325, 0.28734773964795), "33");
addFace(["116", "50", "28", "27"], "34");
setUVsToFace(new Point(0.0998049527406693, 0.634997069835663), new Point(0.297414660453796, 0.634997069835663), new Point(0.269754588603973, 0.669929802417755), "34");
addFace(["44", "1", "32", "74"], "35");
setUVsToFace(new Point(0.339925736188889, 0.319151341915131), new Point(0.437737565142969, 0.319151341915131), new Point(0.423764437437057, 0.359889447689056), "35");
addFace(["63", "13", "23", "42"], "36");
setUVsToFace(new Point(0.157074719667435, 0.17646712064743), new Point(0.299825757741928, 0.227853462100029), new Point(0.303391418825114, 0.303391336317833), "36");
addFace(["60", "23", "13", "12"], "37");
setUVsToFace(new Point(0.526890099048615, 0.19820836186409), new Point(0.303391463576031, 0.303391195453539), new Point(0.299825757741928, 0.227853462100029), "37");
addFace(["8", "11", "2"], "38");
setUVsToFace(new Point(0.499177843332291, 0.766687273979187), new Point(0.67253589630127, 0.861537635326385), new Point(0.493392735719681, 0.900769889354706), "38");
addFace(["2", "7", "8"], "39");
setUVsToFace(new Point(0.185583978891373, 0.932343721389771), new Point(0.185583978891373, 0.848504960536957), new Point(0.290382236242294, 0.848504960536957), "39");
addFace(["171", "9", "10"], "40");
setUVsToFace(new Point(0.747903168201447, 0.537118136882782), new Point(0.852701604366302, 0.537118136882782), new Point(0.852701604366302, 0.620956897735596), "40");
addFace(["10", "56", "171"], "41");
setUVsToFace(new Point(0.768329381942749, 0.634997069835663), new Point(0.906891047954559, 0.755130887031555), new Point(0.70928168296814, 0.755516827106476), "41");
addFace(["35", "6", "44", "74"], "42");
setUVsToFace(new Point(0.146673383514029, 0.724566388112603), new Point(0.131852656602859, 0.684128642082214), new Point(0.240537941455841, 0.684128701686859), "42");
addFace(["26", "57", "55", "52"], "43");
setUVsToFace(new Point(0.242991641163826, 0.764771103858948), new Point(0.242991641163826, 0.806690454483032), new Point(0.231635466217995, 0.806690454483032), "43");
addFace(["23", "43", "42"], "44");
setUVsToFace(new Point(0.131852716207504, 0.756969153881073), new Point(0.159113675355911, 0.791202068328857), new Point(0.131852656602859, 0.804337680339813), "44");
addFace(["51", "24", "59"], "45");
setUVsToFace(new Point(0.240142986178398, 0.359889328479767), new Point(0.240142926573753, 0.312521010637283), new Point(0.267403930425644, 0.325656592845917), "45");
addFace(["31", "4", "14"], "46");
setUVsToFace(new Point(0.804656088352203, 0.875600874423981), new Point(0.738031685352325, 0.929294526576996), new Point(0.675469219684601, 0.87348335981369), "46");
addFace(["19", "168", "16"], "47");
setUVsToFace(new Point(0.493392735719681, 0.903703212738037), new Point(0.622563302516937, 0.906651854515076), new Point(0.557860910892487, 0.959967434406281), "47");
addFace(["205", "0", "10", "9"], "48");
setUVsToFace(new Point(0.794372320175171, 0.450345965963949), new Point(0.794372320175171, 0.534184813499451), new Point(0.399152755737305, 0.534184813499451), "48");
addFace(["53", "11", "86", "51"], "49");
setUVsToFace(new Point(0.399152755737305, 0.537118196487427), new Point(0.744969976099908, 0.537118232967456), new Point(0.695567488670349, 0.622685730457306), "49");
addFace(["25", "26", "52"], "50");
setUVsToFace(new Point(0.798730373382568, 0.846436679363251), new Point(0.783892869949341, 0.846399545669556), new Point(0.788264989852905, 0.835918664932251), "50");
addFace(["57", "58", "55"], "51");
setUVsToFace(new Point(0.223119094967842, 0.751941025257111), new Point(0.209352359175682, 0.746406674385071), new Point(0.223000302910805, 0.740585446357727), "51");
addFace(["62", "48", "54", "18"], "52");
setUVsToFace(new Point(0.457862824201584, 0.990891695022583), new Point(0.301325628055668, 0.990891695022583), new Point(0.322414875030518, 0.966077744960785), "52");
addFace(["87", "106", "111", "85"], "53");
setUVsToFace(new Point(0.444884884665736, 0.475552234099992), new Point(0.395873367786407, 0.39066070318222), new Point(0.738955914974213, 0.390660792589188), "53");
addFace(["106", "68", "71", "111"], "54");
setUVsToFace(new Point(0.0255057606846094, 0.484986513853073), new Point(0.00100000004749745, 0.304705679416656), new Point(0.393094151301948, 0.304705732340424), "54");
addFace(["88", "89", "116", "84"], "55");
setUVsToFace(new Point(0.538205504417419, 0.753381550312042), new Point(0.489193856716156, 0.668490529060364), new Point(0.83227649808956, 0.668490844913437), "55");
addFace(["70", "69", "116", "89"], "56");
setUVsToFace(new Point(0.596865355968475, 0.0010000403271988), new Point(0.988959610462189, 0.00100000004749745), new Point(0.964453637599945, 0.181280761957169), "56");
addFace(["88", "85", "111", "101", "104", "89"], "57");
setUVsToFace(new Point(0.000999937532515843, 0.907350015472932), new Point(0.00100002693943679, 0.699410796165466), new Point(0.0990197810934124, 0.69941073233682), "57");
addFace(["72", "106", "113", "97"], "58");
setUVsToFace(new Point(0.295070767402649, 0.695705056190491), new Point(0.0990236897306937, 0.69570497189683), new Point(0.129003077745438, 0.661048412322998), "58");
addFace(["105", "81", "64", "34"], "59");
setUVsToFace(new Point(0.145502462983131, 0.869754254817963), new Point(0.130798757076263, 0.829636216163635), new Point(0.238624490879358, 0.829636105650566), "59");
addFace(["11", "8", "98", "100", "86"], "60");
setUVsToFace(new Point(0.0990236923098564, 0.48776575922966), new Point(0.295070767402649, 0.48776575922966), new Point(0.267629444599152, 0.522422254085541), "60");
addFace(["102", "96", "81", "80"], "61");
setUVsToFace(new Point(0.298776388168335, 0.986150145530701), new Point(0.298776388168335, 0.835631668567657), new Point(0.472474604845047, 0.862371742725372), "61");
addFace(["86", "87", "92", "91"], "62");
setUVsToFace(new Point(0.00100000004749745, 0.30100005865097), new Point(0.0714280530810356, 0.1053511723876), new Point(0.126920402050018, 0.155840754508972), "62");
addFace(["8", "72", "97", "98"], "63");
setUVsToFace(new Point(0.295070767402649, 0.48776575922966), new Point(0.295070709260515, 0.695705193448814), new Point(0.267629355192184, 0.661048471927643), "63");
addFace(["134", "95", "103", "109"], "64");
setUVsToFace(new Point(0.295070737600327, 0.699410736560822), new Point(0.295070737600327, 0.907350122928619), new Point(0.267629384994507, 0.872693479061127), "64");
addFace(["99", "80", "77", "76"], "65");
setUVsToFace(new Point(0.130798757076263, 0.748178541660309), new Point(0.238624572753906, 0.748178601264954), new Point(0.223920866847038, 0.788296580314636), "65");
addFace(["83", "91", "92", "99"], "66");
setUVsToFace(new Point(0.843616865997506, 0.611543454109101), new Point(0.669918656349182, 0.638283848762512), new Point(0.669918715953827, 0.48776575922966), "66");
addFace(["68", "159", "154", "71"], "67");
setUVsToFace(new Point(0.395873367786407, 0.387881508595047), new Point(0.395873367786407, 0.304705679416656), new Point(0.787967503070831, 0.304705768823624), "67");
addFace(["87", "85", "102", "92"], "68");
setUVsToFace(new Point(0.0714280530810356, 0.1053511723876), new Point(0.293159510974458, 0.000999819372836781), new Point(0.296696901321411, 0.0759406387805939), "68");
addFace(["102", "85", "88", "96"], "69");
setUVsToFace(new Point(0.296696847944008, 0.0759406605226564), new Point(0.293159395456314, 0.00100000004749745), new Point(0.488808512687683, 0.0714281350374222), "69");
addFace(["81", "96", "90", "64"], "70");
setUVsToFace(new Point(0.446508533856029, 0.487765886288376), new Point(0.486414611339569, 0.658919513225555), new Point(0.298776388168335, 0.658919394016266), "70");
addFace(["111", "134", "109", "101"], "71");
setUVsToFace(new Point(0.0990236401557922, 0.699410736560822), new Point(0.295070737600327, 0.699410736560822), new Point(0.267629444599152, 0.734067261219025), "71");
addFace(["33", "83", "99", "76"], "72");
setUVsToFace(new Point(0.144661411643028, 0.576651632785797), new Point(0.130798757076263, 0.536235451698303), new Point(0.227836974865353, 0.536235326672503), "72");
addFace(["35", "74", "32", "33", "76", "77", "105", "34"], "73");
setUVsToFace(new Point(0.489193856716156, 0.614210963249206), new Point(0.490731238007376, 0.535807186800025), new Point(0.540694478843457, 0.48776574926742), "73");
addFace(["87", "86", "100", "113", "106"], "74");
setUVsToFace(new Point(0.000999973272077376, 0.695704674218923), new Point(0.0010000403271988, 0.48776575922966), new Point(0.129003122448921, 0.522422254085541), "74");
addFace(["88", "84", "90", "96"], "75");
setUVsToFace(new Point(0.488808512687683, 0.0714281350374222), new Point(0.5931596159935, 0.293159514665604), new Point(0.518218994140625, 0.296697169542313), "75");
addFace(["95", "89", "104", "103"], "76");
setUVsToFace(new Point(0.295070737600327, 0.907350122928619), new Point(0.0990236774086952, 0.907350122928619), new Point(0.129003077745438, 0.872693419456482), "76");
addFace(["194", "69", "70", "108"], "77");
setUVsToFace(new Point(0.988959491252899, 0.184060001247811), new Point(0.988959491252899, 0.267235845327377), new Point(0.596865355968475, 0.267235845327377), "77");
addFace(["77", "80", "81", "105"], "78");
setUVsToFace(new Point(0.144661381840706, 0.658109247684479), new Point(0.130798757076263, 0.617692828178406), new Point(0.227837120311301, 0.617692828178406), "78");
addFace(["72", "159", "68"], "79");
setUVsToFace(new Point(0.414101779460907, 0.30100005865097), new Point(0.310131967067719, 0.30100005865097), new Point(0.310131967067719, 0.21782423555851), "79");
addFace(["68", "106", "72"], "80");
setUVsToFace(new Point(0.728280365467072, 0.756160795688629), new Point(0.865746378898621, 0.875344693660736), new Point(0.669699609279633, 0.875727653503418), "80");
addFace(["95", "108", "70"], "81");
setUVsToFace(new Point(0.00100000004749745, 0.911055743694305), new Point(0.104969754815102, 0.911055743694305), new Point(0.104969754815102, 0.994231522083282), "81");
addFace(["95", "70", "89"], "82");
setUVsToFace(new Point(0.669699609279633, 0.999000012874603), new Point(0.728280365467072, 0.879433274269104), new Point(0.865746319293976, 0.998617172241211), "82");
addFace(["134", "111", "71"], "83");
setUVsToFace(new Point(0.494933217763901, 0.756160795688629), new Point(0.66692042350769, 0.850261092185974), new Point(0.489193797111511, 0.889183104038239), "83");
addFace(["71", "154", "134"], "84");
setUVsToFace(new Point(0.790746748447418, 0.387881487607956), new Point(0.790746748447418, 0.304705739021301), new Point(0.894716441631317, 0.304705679416656), "84");
addFace(["50", "116", "69"], "85");
setUVsToFace(new Point(0.303466111421585, 0.30100005865097), new Point(0.131478935480118, 0.206899777054787), new Point(0.309205561876297, 0.16797761619091), "85");
addFace(["69", "194", "50"], "86");
setUVsToFace(new Point(0.7417351603508, 0.473836570978165), new Point(0.7417351603508, 0.390660732984543), new Point(0.845704853534698, 0.39066070318222), "86");
addFace(["92", "102", "80", "99"], "87");
setUVsToFace(new Point(0.486414611339569, 0.832852363586426), new Point(0.298776388168335, 0.832852363586426), new Point(0.338682383298874, 0.661698639392853), "87");
addFace(["125", "160", "159", "72", "8"], "88");
setUVsToFace(new Point(0.0745811089873314, 0.492548495531082), new Point(0.221743315458298, 0.492548137903214), new Point(0.295324435137294, 0.981245836314945), "88");
addFace(["160", "125", "118", "117"], "89");
setUVsToFace(new Point(0.64645391702652, 0.0559810921549797), new Point(0.782959640026093, 0.00100000004749745), new Point(0.784918606281281, 0.0583829395473003), "89");
addFace(["138", "148", "117", "141"], "90");
setUVsToFace(new Point(0.63201779127121, 0.599240601062775), new Point(0.578516662120819, 0.422846645116806), new Point(0.703388129375455, 0.422846645116806), "90");
addFace(["204", "194", "164", "158"], "91");
setUVsToFace(new Point(0.523636688571103, 0.495309825074398), new Point(0.575666427612305, 0.986769497394562), new Point(0.465466350317001, 0.883304357528687), "91");
addFace(["131", "148", "138", "149"], "92");
setUVsToFace(new Point(0.602797210216522, 0.649639010429382), new Point(0.578516157484884, 0.422846817406122), new Point(0.63201779127121, 0.599240601062775), "92");
addFace(["153", "108", "155", "152"], "93");
setUVsToFace(new Point(0.408374708579453, 0.883304346867599), new Point(0.29817470908165, 0.986769556999207), new Point(0.350204408168793, 0.495309948921204), "93");
addFace(["160", "156", "154", "147"], "94");
setUVsToFace(new Point(0.350204508316621, 0.00100001079714551), new Point(0.523636758327484, 0.00100000004749745), new Point(0.575666427612305, 0.492459684610367), "94");
addFace(["132", "123", "140", "139", "119", "120", "189", "190"], "95");
setUVsToFace(new Point(0.885407567024231, 0.356577754020691), new Point(0.829919815063477, 0.355489730834961), new Point(0.795920133590698, 0.320129930973053), "95");
addFace(["7", "125", "8"], "96");
setUVsToFace(new Point(0.00100000004749745, 0.981245815753937), new Point(0.0745811089873314, 0.492548495531082), new Point(0.0745810568332672, 0.981245815753937), "96");
addFace(["127", "117", "118", "146"], "97");
setUVsToFace(new Point(0.598138451576233, 0.879732131958008), new Point(0.578516662120819, 0.652489364147186), new Point(0.686435759657604, 0.652489292850468), "97");
addFace(["147", "161", "149", "138"], "98");
setUVsToFace(new Point(0.706238090991974, 0.736349761486053), new Point(0.767530262470245, 0.652939677238464), new Point(0.754961729049683, 0.933635115623474), "98");
addFace(["156", "95", "134"], "99");
setUVsToFace(new Point(0.0745811462402344, 0.00100000004749745), new Point(0.221743300557137, 0.48969778418541), new Point(0.0745810866355896, 0.48969778418541), "99");
addFace(["154", "156", "134"], "100");
setUVsToFace(new Point(0.00100000004749745, 0.48969778418541), new Point(0.0745811462402344, 0.00100000004749745), new Point(0.0745810866355896, 0.48969778418541), "100");
addFace(["139", "127", "146", "119"], "101");
setUVsToFace(new Point(0.728659272193909, 0.174685209989548), new Point(0.757262587547302, 0.164874389767647), new Point(0.757262749200128, 0.233550029585223), "101");
addFace(["161", "154", "159", "163"], "102");
setUVsToFace(new Point(0.465466460548394, 0.388994419291314), new Point(0.575666427612305, 0.492459684610367), new Point(0.298174738883972, 0.492459654808044), "102");
addFace(["123", "121", "131", "140"], "103");
setUVsToFace(new Point(0.699317336082458, 0.251945328609762), new Point(0.727920413017273, 0.242134556174278), new Point(0.727920413017273, 0.310810267925262), "103");
addFace(["141", "117", "127", "144"], "104");
setUVsToFace(new Point(0.649886608123779, 0.599240601062775), new Point(0.703388197737921, 0.422846817405433), new Point(0.679107367992401, 0.649639010429382), "104");
addFace(["127", "131", "149", "144"], "105");
setUVsToFace(new Point(0.679107367992401, 0.649639010429382), new Point(0.602797915300431, 0.649639010429382), new Point(0.632543385028839, 0.624439716339111), "105");
addFace(["155", "204", "158", "152"], "106");
setUVsToFace(new Point(0.350204408168793, 0.495309948921204), new Point(0.523636670250811, 0.495309948921204), new Point(0.462478965520859, 0.779839158058167), "106");
addFace(["132", "175", "121", "123"], "107");
setUVsToFace(new Point(0.758212578045419, 0.244905997961492), new Point(0.786604762077332, 0.234500095248222), new Point(0.786604762077332, 0.310810267925262), "107");
addFace(["150", "126", "121", "157"], "108");
setUVsToFace(new Point(0.867290019989014, 0.177393943071365), new Point(0.920791208744049, 0.00100000004749745), new Point(0.896510720252991, 0.227792292833328), "108");
addFace(["162", "137", "126", "150"], "109");
setUVsToFace(new Point(0.849421322345734, 0.177393943071365), new Point(0.795920265825579, 0.00100000004749745), new Point(0.920791208744049, 0.00100000004749745), "109");
addFace(["157", "153", "152", "150"], "110");
setUVsToFace(new Point(0.936620116233826, 0.433111369609833), new Point(0.938174724578857, 0.714083731174469), new Point(0.880199731314302, 0.628334876037669), "110");
addFace(["126", "155", "156", "148"], "111");
setUVsToFace(new Point(0.67621905874711, 0.313698487257192), new Point(0.633497714996338, 0.352058976888657), new Point(0.578516721725464, 0.215553313493729), "111");
addFace(["131", "127", "139", "140"], "112");
setUVsToFace(new Point(0.757262587547302, 0.234500095248222), new Point(0.757262647151947, 0.310810267925262), new Point(0.728870451450348, 0.30040431022644), "112");
addFace(["144", "163", "142", "141"], "113");
setUVsToFace(new Point(0.997445450423537, 0.433111376524192), new Point(0.999000012874603, 0.714083731174469), new Point(0.941024899482727, 0.628334879875183), "113");
addFace(["164", "194", "108", "153"], "114");
setUVsToFace(new Point(0.465466350317001, 0.883304357528687), new Point(0.575666427612305, 0.986769497394562), new Point(0.29817484271285, 0.986769460092051), "114");
addFace(["150", "152", "158", "162"], "115");
setUVsToFace(new Point(0.958134412765503, 0.00100000004749745), new Point(0.974758446216583, 0.208520352840424), new Point(0.923641839440307, 0.208520346275029), "115");
addFace(["163", "159", "160", "142"], "116");
setUVsToFace(new Point(0.40837487578392, 0.388994425535202), new Point(0.298174738883972, 0.492459654808044), new Point(0.350204537202103, 0.00100003201781892), "116");
addFace(["156", "155", "108", "95"], "117");
setUVsToFace(new Point(0.0745811113009314, 0.00100003992245612), new Point(0.22174334526062, 0.00100000004749745), new Point(0.295324474573135, 0.48969778418541), "117");
addFace(["142", "147", "138", "141"], "118");
setUVsToFace(new Point(0.992141842842102, 0.924454391002655), new Point(0.941024625155217, 0.924454478288719), new Point(0.957648873329163, 0.716934025287628), "118");
addFace(["147", "142", "160"], "119");
setUVsToFace(new Point(0.462479084730148, 0.285529226064682), new Point(0.41136223077774, 0.285529226064682), new Point(0.350204527378082, 0.00100000004749745), "119");
addFace(["130", "164", "153", "157"], "120");
setUVsToFace(new Point(0.853961765766144, 0.714796662330627), new Point(0.87409895658493, 0.99505090713501), new Point(0.817007375475159, 0.995050615855888), "120");
addFace(["175", "137", "162", "130"], "121");
setUVsToFace(new Point(0.820200502872467, 0.227792307734489), new Point(0.79592025198465, 0.000999779124182504), new Point(0.849421322345734, 0.177393943071365), "121");
addFace(["204", "155", "126", "137"], "122");
setUVsToFace(new Point(0.793069899082184, 0.419996351003647), new Point(0.633497714996338, 0.352058976888657), new Point(0.676219046115875, 0.313698500394821), "122");
addFace(["154", "161", "147"], "123");
setUVsToFace(new Point(0.575666427612305, 0.492459684610367), new Point(0.465466439723969, 0.388994425535202), new Point(0.462479084730148, 0.285529226064682), "123");
addFace(["148", "156", "160", "117"], "124");
setUVsToFace(new Point(0.635899662971497, 0.213594332337379), new Point(0.578516721725464, 0.215553313493729), new Point(0.646454091296906, 0.0559810888133918), "124");
addFace(["158", "164", "130", "162"], "125");
setUVsToFace(new Point(0.817007303237915, 0.506256759166718), new Point(0.878299474716187, 0.422846704721451), new Point(0.865730941295624, 0.703542113304138), "125");
addFace(["157", "121", "175", "130"], "126");
setUVsToFace(new Point(0.86676450146622, 0.202593084866029), new Point(0.896510720252991, 0.227792292833328), new Point(0.820200502872467, 0.227792307734489), "126");
addFace(["126", "148", "131", "121"], "127");
setUVsToFace(new Point(0.7062381397326, 0.422846645116806), new Point(0.814157009124756, 0.422846645116806), new Point(0.794535338878632, 0.65008944272995), "127");
addFace(["161", "163", "144", "149"], "128");
setUVsToFace(new Point(0.937291204929352, 0.997188210487366), new Point(0.880199611186981, 0.997188210487366), new Point(0.900336623191833, 0.716934025287628), "128");
addFace(["188", "173", "186", "170"], "129");
setUVsToFace(new Point(0.706263303756714, 0.736404299736023), new Point(0.767564237117767, 0.652982413768768), new Point(0.754993915557861, 0.933717727661133), "129");
addFace(["181", "179", "9"], "130");
setUVsToFace(new Point(0.411395609378815, 0.285569846630096), new Point(0.408407807350159, 0.389049857854843), new Point(0.29819193482399, 0.4925297498703), "130");
addFace(["166", "188", "181"], "131");
setUVsToFace(new Point(0.523686110973358, 0.00100000004749745), new Point(0.462519735097885, 0.285569846630096), new Point(0.411395609378815, 0.285569846630096), "131");
addFace(["173", "205", "9", "179"], "132");
setUVsToFace(new Point(0.465507507324219, 0.389049828052521), new Point(0.575723350048065, 0.4925297498703), new Point(0.29819193482399, 0.4925297498703), "132");
addFace(["208", "9", "171"], "133");
setUVsToFace(new Point(0.221774831414223, 0.492593377828598), new Point(0.295366436243057, 0.98136043548584), new Point(0.221774816513062, 0.98136043548584), "133");
addFace(["176", "183", "186", "177"], "134");
setUVsToFace(new Point(0.679153740406036, 0.649706304073334), new Point(0.602832919675809, 0.649706343144975), new Point(0.632583141326904, 0.624503493309021), "134");
addFace(["194", "204", "50"], "135");
setUVsToFace(new Point(0.00100000004749745, 0.98136043548584), new Point(0.0745916292071342, 0.492592990398407), new Point(0.0745916068553925, 0.98136043548584), "135");
addFace(["184", "203", "201"], "136");
setUVsToFace(new Point(0.411395579576492, 0.779925107955933), new Point(0.408407777547836, 0.883405089378357), new Point(0.298191964626312, 0.986885011196136), "136");
addFace(["193", "7", "201", "203"], "137");
setUVsToFace(new Point(0.465507507324219, 0.883405029773712), new Point(0.575723154518062, 0.986884936476937), new Point(0.298191964626312, 0.986885011196136), "137");
addFace(["167", "200", "174", "183"], "138");
setUVsToFace(new Point(0.725887793172806, 0.650156855583191), new Point(0.706263303756714, 0.422881633043289), new Point(0.814197599887848, 0.422881633043289), "138");
addFace(["125", "198", "184"], "139");
setUVsToFace(new Point(0.523686289787292, 0.495355695486069), new Point(0.462519705295563, 0.779925167560577), new Point(0.411395579576492, 0.779925107955933), "139");
addFace(["197", "166", "174", "200"], "140");
setUVsToFace(new Point(0.738143883936945, 0.0689471476125212), new Point(0.793132662773132, 0.205472305417061), new Point(0.735741496086121, 0.20743153989315), "140");
addFace(["125", "7", "193", "198"], "141");
setUVsToFace(new Point(0.523686190304088, 0.495356028798832), new Point(0.575723350048065, 0.986885011196136), new Point(0.465507507324219, 0.883405029773712), "141");
addFace(["189", "183", "176", "190"], "142");
setUVsToFace(new Point(0.656973540782928, 0.25334307551384), new Point(0.685369849205017, 0.242935553193092), new Point(0.685369832897251, 0.319256533301168), "142");
addFace(["196", "200", "167", "195"], "143");
setUVsToFace(new Point(0.867338418960571, 0.177419170737267), new Point(0.920847117900848, 0.00100003811530769), new Point(0.896563291549683, 0.227824673056602), "143");
addFace(["146", "167", "120", "119"], "144");
setUVsToFace(new Point(0.683214604854584, 0.133736088871956), new Point(0.683214545249939, 0.210057139396667), new Point(0.654818296432495, 0.199649602174759), "144");
addFace(["184", "198", "207", "196"], "145");
setUVsToFace(new Point(0.974796772003174, 0.208549872040749), new Point(0.923672616481781, 0.208549916744232), new Point(0.940299093723297, 0.00100003811530769), "145");
addFace(["183", "174", "170", "186"], "146");
setUVsToFace(new Point(0.602832734584808, 0.649706363677979), new Point(0.578548848628998, 0.422881722450256), new Point(0.632057547569275, 0.599300742149353), "146");
addFace(["174", "185", "176", "178"], "147");
setUVsToFace(new Point(0.578549147051602, 0.422881510716609), new Point(0.703437805175781, 0.422881633043289), new Point(0.679153740406036, 0.649706304073334), "147");
addFace(["176", "177", "178"], "148");
setUVsToFace(new Point(0.679153740406036, 0.649706304073334), new Point(0.649403274059296, 0.624503493309021), new Point(0.64992880821228, 0.599300742149353), "148");
addFace(["9", "208", "166", "181"], "149");
setUVsToFace(new Point(0.29819193482399, 0.4925297498703), new Point(0.350228995084763, 0.00100041832774878), new Point(0.523686219834279, 0.00100005537355929), "149");
addFace(["50", "204", "208", "171"], "150");
setUVsToFace(new Point(0.0745916068553925, 0.98136043548584), new Point(0.0745916217564417, 0.492592979021821), new Point(0.221774831414223, 0.492593377828598), "150");
addFace(["146", "118", "207", "199"], "151");
setUVsToFace(new Point(0.82024222612381, 0.22782464325428), new Point(0.795958013508352, 0.000999854296839658), new Point(0.849467039108276, 0.177419170737267), "151");
addFace(["176", "175", "132", "190"], "152");
setUVsToFace(new Point(0.653876423835754, 0.141371726989746), new Point(0.653876304626465, 0.210057139396667), new Point(0.625269114971161, 0.200244918465614), "152");
addFace(["173", "179", "177", "186"], "153");
setUVsToFace(new Point(0.937307417392731, 0.997279822826385), new Point(0.880207777023315, 0.99727988243103), new Point(0.900347590446472, 0.716985821723938), "153");
addFace(["205", "166", "197", "201", "168", "14"], "154");
setUVsToFace(new Point(0.0010000039468282, 0.489767491817474), new Point(0.0745916217565536, 0.00100000004749745), new Point(0.221774831414223, 0.00100000004749745), "154");
addFace(["201", "197", "125", "184"], "155");
setUVsToFace(new Point(0.298191964626312, 0.986885011196136), new Point(0.350229203701019, 0.495355278253555), new Point(0.523686059845832, 0.495355771835301), "155");
addFace(["198", "193", "199", "207"], "156");
setUVsToFace(new Point(0.817023158073425, 0.506303608417511), new Point(0.878324190414077, 0.422881483193878), new Point(0.865753710269928, 0.703617036342621), "156");
addFace(["207", "118", "200", "196"], "157");
setUVsToFace(new Point(0.849467039108276, 0.177419170737267), new Point(0.795958161354065, 0.00100000004749745), new Point(0.9208476782283, 0.00100003911911381), "157");
addFace(["120", "167", "183", "189"], "158");
setUVsToFace(new Point(0.627424240112305, 0.260383307933807), new Point(0.656031727790833, 0.250571101903915), new Point(0.656031727790833, 0.319256593442315), "158");
addFace(["195", "203", "184", "196"], "159");
setUVsToFace(new Point(0.936636388301849, 0.433147847652435), new Point(0.938191115856171, 0.714160323143005), new Point(0.880207621074313, 0.628399148820583), "159");
addFace(["167", "146", "199", "195"], "160");
setUVsToFace(new Point(0.896563291549683, 0.227824673056602), new Point(0.82024222612381, 0.22782464325428), new Point(0.849992692470551, 0.20262186229229), "160");
addFace(["181", "188", "170", "178"], "161");
setUVsToFace(new Point(0.992140829563141, 0.924535632133484), new Point(0.941016614437103, 0.924535691738129), new Point(0.957642912864685, 0.716985762119293), "161");
addFace(["185", "208", "204", "137"], "162");
setUVsToFace(new Point(0.686819910008572, 0.322339887852222), new Point(0.725185811519623, 0.365067392587662), new Point(0.588660597801208, 0.420056104660034), "162");
addFace(["185", "137", "175", "176"], "163");
setUVsToFace(new Point(0.578548848628998, 0.652531802654266), new Point(0.686483307168256, 0.652531780283143), new Point(0.666858732700348, 0.879806995391846), "163");
addFace(["125", "197", "200", "118"], "164");
setUVsToFace(new Point(0.578548848628998, 0.00100000004749745), new Point(0.738143736027032, 0.0689471830723982), new Point(0.695416390895844, 0.107313089072704), "164");
addFace(["177", "179", "181", "178"], "165");
setUVsToFace(new Point(0.997445220336577, 0.433147868782876), new Point(0.999000012874603, 0.714160323143005), new Point(0.941016614437103, 0.628399193286896), "165");
addFace(["174", "166", "208", "185"], "166");
setUVsToFace(new Point(0.735741496086121, 0.20743153989315), new Point(0.793132662773132, 0.205472305417061), new Point(0.725186016995834, 0.365067351006646), "166");
addFace(["166", "205", "173", "188"], "167");
setUVsToFace(new Point(0.523685698443519, 0.000999876255177168), new Point(0.575723350048065, 0.4925297498703), new Point(0.465507507324219, 0.389049828052521), "167");
addFace(["193", "203", "195", "199"], "168");
setUVsToFace(new Point(0.87412291765213, 0.995150506496429), new Point(0.817023158073425, 0.995150625705719), new Point(0.837162673473358, 0.714856445789337), "168");
addFace(["178", "170", "174"], "169");
setUVsToFace(new Point(0.64992880821228, 0.599300742149353), new Point(0.632057547569275, 0.599300742149353), new Point(0.578548848628998, 0.422881722450256), "169");
addSurface(["43", "15", "11", "27", "26", "44", "19", "29", "3", "21", "24", "20", "36", "52", "48", "37", "10", "4", "47", "34", "42", "12", "30", "46", "6", "13", "5", "31", "22", "45", "7", "23", "39", "32", "16", "28", "2", "14", "35", "8", "38", "50", "33", "40", "9", "41", "0", "18", "1", "17", "51", "49", "25"], "ReactorBottom1");
setMaterialToSurface(material1, "ReactorBottom1");
addSurface(["54", "68", "59", "63", "85", "81", "56", "69", "64", "65", "72", "78", "61", "74", "57", "84", "53", "66", "73", "62", "86", "75", "58", "77", "82", "60", "71", "67", "80", "70", "87", "76", "79", "83", "55"], "ReactorBottom2");
setMaterialToSurface(material2, "ReactorBottom2");
addSurface(["134", "166", "147", "137", "143", "159", "142", "130", "151", "135", "164", "167", "148", "131", "160", "140", "156", "169", "168", "144", "165", "132", "145", "161", "162", "158", "149", "155", "153", "136", "152", "154", "133", "146", "129", "139", "150", "141", "157", "138", "163"], "ReactorTop1");
setMaterialToSurface(material3, "ReactorTop1");
addSurface(["101", "125", "97", "117", "126", "122", "99", "89", "95", "110", "118", "106", "115", "98", "111", "88", "90", "103", "119", "102", "116", "123", "112", "91", "127", "108", "124", "104", "120", "114", "100", "94", "113", "96", "107", "128", "109", "92", "121", "105", "93"], "ReactorTop2");
setMaterialToSurface(material4, "ReactorTop2");
}
private function onLoadError(_arg1:IOErrorEvent):void{
counter++;
if (counter < 4){
switch (counter){
case 1:
loader.load(new URLRequest("material3.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
case 2:
loader.load(new URLRequest("reactortop1.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
case 3:
loader.load(new URLRequest("reactortop2.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
};
} else {
complete();
};
}
private function onLoadComplete(_arg1:Event):void{
counter++;
if (counter < 4){
switch (counter){
case 1:
material1.texture = new TextureData(Bitmap(loader.content).bitmapData);
loader.load(new URLRequest("reactorbottom2.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
case 2:
material2.texture = new TextureData(Bitmap(loader.content).bitmapData);
loader.load(new URLRequest("reactortop1.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
case 3:
material3.texture = new TextureData(Bitmap(loader.content).bitmapData);
loader.load(new URLRequest("reactortop2.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
};
} else {
material4.texture = new TextureData(Bitmap(loader.content).bitmapData);
complete();
};
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("reactorbottom1.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading reactor texture");
}
}
}//package bunker
Section 15
//Reactor_Bmp1 (bunker.Reactor_Bmp1)
package bunker {
import mx.core.*;
public class Reactor_Bmp1 extends BitmapAsset {
}
}//package bunker
Section 16
//Reactor_Bmp2 (bunker.Reactor_Bmp2)
package bunker {
import mx.core.*;
public class Reactor_Bmp2 extends BitmapAsset {
}
}//package bunker
Section 17
//Reactor_Bmp3 (bunker.Reactor_Bmp3)
package bunker {
import mx.core.*;
public class Reactor_Bmp3 extends BitmapAsset {
}
}//package bunker
Section 18
//Reactor_Bmp4 (bunker.Reactor_Bmp4)
package bunker {
import mx.core.*;
public class Reactor_Bmp4 extends BitmapAsset {
}
}//package bunker
Section 19
//ReactorLight (bunker.ReactorLight)
package bunker {
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
public class ReactorLight extends Mesh {
public function ReactorLight(){
super("ReactorLight");
coords = new Point3D(6.01790806856878E-13, 2322.83471679688, -629.921264648438);
addVertex(-23.6220436096197, -520.247436523438, 149.6064453125, "0");
addVertex(23.6220474243158, -520.247436523438, 149.6064453125, "1");
addVertex(-23.6220436096197, -513.0888671875, 164.718994140625, "2");
addVertex(23.6220474243158, -513.0888671875, 164.718994140625, "3");
addFace(["0", "2", "3", "1"], "2");
addSurface(["2"], "ReactorLight");
setMaterialToSurface(new FillMaterial(0xFFFFFF), "ReactorLight");
}
}
}//package bunker
Section 20
//Screen (bunker.Screen)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.media.*;
public class Screen extends Mesh {
public var material:TextureMaterial;
private static const animation:MovieClip = new screenAnimation();
private static const screenAnimation:Class = Screen_screenAnimation;
private static const screen:TextureData = new TextureData(new BitmapData(0x0100, 0x0100, false, 0x440000));
public function Screen(){
material = new TextureMaterial(screen, 1, false, false, 15);
super("Screen");
mobile = 2;
coords = new Point3D(362.204772949219, -1921.26000976563, 78.7401580810547);
addVertex(64.90576171875, -149.606323242188, -51.1811065673828, "0");
addVertex(88.7898864746094, -108.353881835938, -51.1811065673828, "1");
addVertex(23.9097137451172, 3.9371337890625, -51.1811065673828, "2");
addVertex(-64.9058227539063, -149.606323242188, -51.1811065673828, "3");
addVertex(-88.7899475097656, -108.353881835938, -51.1811065673828, "4");
addVertex(-23.9097747802734, 3.9371337890625, -51.1811065673828, "5");
addFace(["1", "2", "5", "4", "3", "0"], "2");
setUVsToFace(new Point((1 - 0.00999999977648258), 0.368336379528046), new Point((1 - 0.36805060505867), 0.988030850887299), new Point((1 - 0.631949415764282), 0.98803119360935), "2");
addSurface(["2"], "Screen");
setMaterialToSurface(material, "Screen");
animation.stop();
}
public function checkVolume(_arg1:Point, _arg2:Point):void{
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local3:Number = 250;
var _local4:Number = 125;
var _local5:Point = new Point((362 - _arg1.x), (-2007 - _arg1.y));
var _local6:Number = ((_local5.x * _local5.x) + (_local5.y * _local5.y));
var _local7:Number = (_local4 * _local4);
var _local8:Number = (_local3 * _local3);
if (_local6 <= _local7){
_local9 = 1;
_local10 = 0;
} else {
if (_local6 <= _local8){
_local11 = ((_local6 - _local7) / (_local8 - _local7));
_local9 = (1 - _local11);
_local12 = Math.sqrt(_local6);
_local5.x = (_local5.x / _local12);
_local5.y = (_local5.y / _local12);
_local10 = (((_local5.x * _arg2.x) + (_local5.y * _arg2.y)) * Math.sqrt(_local11));
} else {
_local9 = 0;
_local10 = 0;
};
};
animation.soundTransform = new SoundTransform((_local9 * 0.3), _local10);
}
public function stopAnimation():void{
animation.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(_arg1:Event):void{
screen.bitmapData.draw(animation);
}
public function startAnimation():void{
animation.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}//package bunker
Section 21
//Screen_screenAnimation (bunker.Screen_screenAnimation)
package bunker {
import mx.core.*;
import flash.utils.*;
public class Screen_screenAnimation extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Screen_screenAnimation(){
dataClass = Screen_screenAnimation_dataClass;
super();
initialWidth = (0x1400 / 20);
initialHeight = (0x1400 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package bunker
Section 22
//Screen_screenAnimation_dataClass (bunker.Screen_screenAnimation_dataClass)
package bunker {
import mx.core.*;
public class Screen_screenAnimation_dataClass extends ByteArrayAsset {
}
}//package bunker
Section 23
//ScreenLight (bunker.ScreenLight)
package bunker {
import com.alternativagame.engine3d.*;
public class ScreenLight extends Mesh {
public function ScreenLight(){
super("ScreenLight");
mobile = 3;
x = 539.3701171875;
y = -1921.25988769531;
addVertex(-169.291381835938, -70.8662109375, 118.110260009766, "0");
addVertex(-185.039367675781, -70.8662109375, 118.110260009766, "1");
addVertex(-185.039367675781, 7.8740234375, 114.173233032227, "2");
addVertex(-169.291381835938, 7.8740234375, 114.173233032227, "3");
addVertex(-169.206573486328, -98.380859375, 118.110260009766, "4");
addVertex(-161.332580566406, -84.74267578125, 118.110260009766, "5");
addVertex(-93.1415405273438, -124.11279296875, 114.173248291016, "6");
addVertex(-101.015533447266, -137.750854492188, 114.173248291016, "7");
addVertex(-253.315216064453, -137.750854492188, 114.173248291016, "8");
addVertex(-261.189208984375, -124.11279296875, 114.173248291016, "9");
addVertex(-192.998168945313, -84.74267578125, 118.110260009766, "10");
addVertex(-185.124176025391, -98.380859375, 118.110260009766, "11");
addFace(["0", "1", "2", "3"], "2");
addFace(["4", "5", "6", "7"], "4");
addFace(["9", "10", "11", "8"], "6");
addSurface(["2", "6", "4"], "ScreenLight");
setMaterialToSurface(new FillMaterial(16770991), "ScreenLight");
}
}
}//package bunker
Section 24
//Slope (bunker.Slope)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class Slope extends Mesh {
private var loader:Loader;
private var onLoadMethod:Function;
public var material:TextureMaterial;
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = Slope_Bmp;
public function Slope(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Slope");
mobile = 1;
y = 393.700805664063;
addVertex(47.2441024780273, 236.220520019531, -3.0517578125E-5, "1");
addVertex(31.4960689544678, 236.220520019531, 125.984230041504, "2");
addVertex(-31.496057510376, 236.220581054688, 125.984230041504, "5");
addVertex(62.9921875, 1417.32299804688, -606.811096191406, "72");
addVertex(-47.2440948486328, 0, -3.0517578125E-5, "9");
addVertex(47.2441558837891, 1417.32299804688, -629.921325683594, "76");
addVertex(62.9921798706055, 1181.1025390625, -606.810974121094, "73");
addVertex(-62.9920654296875, 1417.32299804688, -606.811096191406, "82");
addVertex(-31.4960060119629, 1417.32299804688, -503.936950683594, "84");
addVertex(31.4961204528809, 1417.32299804688, -503.936950683594, "22");
addVertex(47.2441482543945, 1181.1025390625, -629.921264648438, "87");
addVertex(-47.2440338134766, 1417.32299804688, -629.921325683594, "25");
addVertex(47.2441520690918, 1118.11840820313, -612.989074707031, "94");
addVertex(62.9921340942383, 236.220520019531, 23.1101989746094, "34");
addVertex(62.9921264648438, 3.0517578125E-5, 23.1102066040039, "36");
addVertex(-47.2440414428711, 1181.1025390625, -629.921264648438, "101");
addVertex(-62.992073059082, 1181.1025390625, -606.810974121094, "102");
addVertex(47.2440948486328, 0, -3.0517578125E-5, "40");
addVertex(-62.992073059082, 1129.78271484375, -593.037963867188, "107");
addVertex(-62.9921264648438, 3.0517578125E-5, 23.1102066040039, "44");
addVertex(31.4960632324219, 3.0517578125E-5, 125.984222412109, "37");
addVertex(-47.2440376281738, 1118.11840820313, -612.989074707031, "30");
addVertex(-31.4960632324219, 3.0517578125E-5, 125.984222412109, "48");
addVertex(31.4961166381836, 1181.1025390625, -503.937072753906, "114");
addVertex(-31.4960098266602, 1181.1025390625, -503.937072753906, "108");
addVertex(-31.4960556030273, 298.648864746094, 109.061813354492, "117");
addVertex(-62.9921188354492, 247.320861816406, 19.9073677062988, "111");
addVertex(62.9921798706055, 1129.78271484375, -593.037963867188, "121");
addVertex(31.4960708618164, 298.648864746094, 109.061813354492, "123");
addVertex(62.9921340942383, 247.320861816406, 19.9073677062988, "124");
addVertex(-47.2440872192383, 236.220520019531, -3.0517578125E-5, "61");
addVertex(-62.9921188354492, 236.220520019531, 23.1101989746094, "62");
addFace(["123", "117", "108", "114"], "0");
setUVsToFace(new Point(0.330243736505508, 0.00100000004749745), new Point(0.38816511631012, 0.00100000004749745), new Point(0.388165056705475, 0.988979995250702), "0");
addFace(["73", "87", "94", "121"], "1");
setUVsToFace(new Point(0.61574151923796, 0.711591593226423), new Point(0.640927731990814, 0.706364870071411), new Point(0.640236377716064, 0.766331136226654), "1");
addFace(["30", "101", "102", "107"], "2");
setUVsToFace(new Point(0.831726789474487, 0.00100000004749745), new Point(0.830066680908203, 0.0609473027288914), new Point(0.805113136768341, 0.0547373481094837), "2");
addFace(["124", "121", "94", "1"], "3");
setUVsToFace(new Point(0.482005715370178, 0.00100000004749745), new Point(0.47064870595932, 0.988892912864685), new Point(0.444969981908798, 0.990254163742065), "3");
addFace(["76", "25", "101", "87"], "4");
setUVsToFace(new Point(0.688416063785553, 0.00100000004749745), new Point(0.775298118591309, 0.00100000004749745), new Point(0.775298118591309, 0.218205183744431), "4");
addFace(["44", "9", "61", "62"], "5");
setUVsToFace(new Point(0.648230493068695, 0.486699402332306), new Point(0.673945069313049, 0.486699402332306), new Point(0.673945060823882, 0.703904597209976), "5");
addFace(["111", "117", "5", "62"], "6");
setUVsToFace(new Point(0.586208820343018, 0.228412017226219), new Point(0.499344378709793, 0.27560818195343), new Point(0.484554605890198, 0.218205154747222), "6");
addFace(["82", "102", "101", "25"], "7");
setUVsToFace(new Point(0.777758479118347, 0.218205183744431), new Point(0.777758291995547, 0.00100000004749745), new Point(0.803472995758057, 0.00100000004749745), "7");
addFace(["114", "22", "72", "73"], "8");
setUVsToFace(new Point(0.587849020957947, 0.218205153942108), new Point(0.587848901748657, 0.00100000004749745), new Point(0.686775922775269, 0.00100000004749745), "8");
addFace(["94", "30", "61", "1"], "10");
setUVsToFace(new Point(0.327783465385437, 0.988555252552032), new Point(0.240901410579681, 0.988555252552032), new Point(0.240901380777359, 0.00100000004749745), "10");
addFace(["123", "2", "5", "117"], "11");
setUVsToFace(new Point(0.748797714710236, 0.280139923095703), new Point(0.748797655105591, 0.220665395259857), new Point(0.806719064712524, 0.220665395259857), "11");
addFace(["34", "124", "1"], "12");
setUVsToFace(new Point(0.587848901748657, 0.925210177898407), new Point(0.598201751708984, 0.92759120464325), new Point(0.587979853153229, 0.950924456119537), "12");
addFace(["2", "123", "124", "34"], "13");
setUVsToFace(new Point(0.484465897083282, 0.334651231765747), new Point(0.499344378709793, 0.27724826335907), new Point(0.586208820343018, 0.324444472789764), "13");
addFace(["30", "107", "111", "61"], "14");
setUVsToFace(new Point(0.417594844609848, 0.000996466770407212), new Point(0.443329900503159, 0.00336705567315221), new Point(0.415948987007141, 0.99094569683075), "14");
addFace(["124", "123", "114", "121"], "15");
setUVsToFace(new Point(0.223694890737534, 0.988835394382477), new Point(0.124978341162205, 0.995284020900726), new Point(0.140591828384617, 0.00742745106436493), "15");
addFace(["87", "73", "72", "76"], "16");
setUVsToFace(new Point(0.613563537597656, 0.923570036888123), new Point(0.587848901748657, 0.923570036888123), new Point(0.587849088871278, 0.706364870071411), "16");
addFace(["61", "111", "62"], "17");
setUVsToFace(new Point(0.681614577770233, 0.486699342727661), new Point(0.686208188533783, 0.51175582408905), new Point(0.675585210323334, 0.511697053909302), "17");
addFace(["62", "5", "48", "44"], "18");
setUVsToFace(new Point(0.583392798900604, 0.218205213546753), new Point(0.484465897083282, 0.218205213546753), new Point(0.484465911756616, 0.000999943925557301), "18");
addFace(["87", "101", "30", "94"], "19");
setUVsToFace(new Point(0.544436156749725, 0.819530546665192), new Point(0.544436156749725, 0.906412601470947), new Point(0.484465897083282, 0.906412601470947), "19");
addFace(["108", "117", "111", "107"], "20");
setUVsToFace(new Point(0.00100000004749745, 0.988709270954132), new Point(0.0241302829235792, 0.00100000004749745), new Point(0.122518137097359, 0.0113136433064938), "20");
addFace(["102", "82", "84", "108"], "21");
setUVsToFace(new Point(0.583392798900604, 0.600685238838196), new Point(0.583392914464627, 0.817890405654907), new Point(0.484465897083282, 0.817890405654907), "21");
addFace(["1", "40", "36", "34"], "22");
setUVsToFace(new Point(0.714130640029907, 0.440330773591995), new Point(0.714130648519077, 0.657535998272001), new Point(0.688416063785553, 0.657535970211029), "22");
addFace(["1", "61", "9", "40"], "23");
setUVsToFace(new Point(0.587848901748657, 0.267033934593201), new Point(0.674730956554413, 0.267033934593201), new Point(0.674730956554413, 0.484239161014557), "23");
addFace(["37", "2", "34", "36"], "28");
setUVsToFace(new Point(0.484465897083282, 0.551856458187103), new Point(0.484465897083282, 0.334651231765747), new Point(0.583392798900604, 0.334651231765747), "28");
addFace(["73", "121", "114"], "34");
setUVsToFace(new Point(0.686775863170624, 0.218205153942108), new Point(0.674666345119476, 0.265393853187561), new Point(0.587849020957947, 0.218205153942108), "34");
addFace(["114", "108", "84", "22"], "37");
setUVsToFace(new Point(0.688416123390198, 0.220665395259857), new Point(0.746337532997131, 0.220665395259857), new Point(0.746337473392487, 0.437870591878891), "37");
addFace(["108", "107", "102"], "39");
setUVsToFace(new Point(0.484466016292572, 0.600685238838196), new Point(0.571283340454102, 0.553496539592743), new Point(0.583392798900604, 0.600685238838196), "39");
addFace(["48", "5", "2", "37"], "52");
setUVsToFace(new Point(0.645770370960236, 0.486699402332306), new Point(0.645770311355591, 0.703904569149017), new Point(0.587848901748657, 0.703904569149017), "52");
addSurface(["5", "13", "3", "20", "14", "18", "8", "1", "37", "21", "15", "12", "23", "22", "28", "10", "52", "16", "11", "34", "6", "17", "39", "2", "19", "0", "4", "7"], "Slope");
setMaterialToSurface(material, "Slope");
}
private function onLoadComplete(_arg1:Event):void{
material.texture = new TextureData(Bitmap(loader.content).bitmapData);
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("slope.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading slope texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
}
}//package bunker
Section 25
//Slope_Bmp (bunker.Slope_Bmp)
package bunker {
import mx.core.*;
public class Slope_Bmp extends BitmapAsset {
}
}//package bunker
Section 26
//Sound3D (bunker.Sound3D)
package bunker {
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.media.*;
import flash.net.*;
public class Sound3D {
private var intervalId:int;
private var multiplier:Number;
private var channel:SoundChannel;
private var loaded:Boolean;// = false
private var sound:Sound;
private var far:Number;
private var volume:Number;// = 1
private var pan:Number;// = 0
private var onLoadMethod:Function;
private var near:Number;
private var fadeInned:Boolean;// = false
private var url:String;
private var transform:SoundTransform;
private var info:String;
private var x:Number;
private var y:Number;
public function Sound3D(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:String, _arg7:Number=1){
sound = new Sound();
transform = new SoundTransform(0);
super();
this.x = _arg1;
this.y = _arg2;
this.far = _arg3;
this.near = _arg4;
this.url = _arg5;
this.info = _arg6;
this.multiplier = _arg7;
}
public function checkVolume(_arg1:Point, _arg2:Point):void{
var _local3:Point;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
if (loaded){
_local3 = new Point((x - _arg1.x), (y - _arg1.y));
_local4 = ((_local3.x * _local3.x) + (_local3.y * _local3.y));
_local5 = (near * near);
_local6 = (far * far);
if (_local4 <= _local5){
volume = multiplier;
pan = 0;
} else {
if (_local4 <= _local6){
_local7 = ((_local4 - _local5) / (_local6 - _local5));
volume = ((1 - _local7) * multiplier);
_local8 = Math.sqrt(_local4);
_local3.x = (_local3.x / _local8);
_local3.y = (_local3.y / _local8);
pan = (((_local3.x * _arg2.x) + (_local3.y * _arg2.y)) * Math.sqrt(_local7));
} else {
volume = 0;
pan = 0;
};
};
if (fadeInned){
transform.volume = volume;
transform.pan = pan;
channel.soundTransform = transform;
};
};
}
private function addVolume():void{
transform.volume = (transform.volume + 0.05);
if (transform.volume >= volume){
transform.volume = volume;
clearInterval(intervalId);
fadeInned = true;
};
transform.pan = pan;
channel.soundTransform = transform;
}
private function onLoadError(_arg1:IOErrorEvent):void{
sound.removeEventListener(Event.COMPLETE, onLoadComplete);
sound.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod.call();
onLoadMethod = null;
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
sound.addEventListener(Event.COMPLETE, onLoadComplete);
sound.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
sound.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
sound.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
sound.load(new URLRequest(url), new SoundLoaderContext());
return (info);
}
public function getStrength(_arg1:Point, _arg2:Number):Number{
var _local5:Number;
var _local3:Point = new Point((x - _arg1.x), (y - _arg1.y));
var _local4:Number = ((_local3.x * _local3.x) + (_local3.y * _local3.y));
if (_local4 > 0){
_local5 = (_arg2 * _arg2);
if (_local4 <= _local5){
return ((1 - (_local4 / _local5)));
};
return (0);
//unresolved jump
};
return (1);
}
private function onLoadComplete(_arg1:Event):void{
channel = sound.play(0, 1000000, transform);
intervalId = setInterval(addVolume, 100);
loaded = true;
sound.removeEventListener(Event.COMPLETE, onLoadComplete);
sound.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
sound.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod.call();
onLoadMethod = null;
}
}
}//package bunker
Section 27
//Splits (bunker.Splits)
package bunker {
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
public class Splits extends Mesh {
public function Splits(){
super("Splits");
mobile = 0;
coords = new Point3D(1548.55651855469, -1582.67712402344, 26.2467193603516);
rotX = 1.57079637050629;
addVertex(26.2467041015627, -26.2467193603515, 1.14728049993573E-6, "0");
addVertex(26.2467041015627, -18.3727035522461, 8.03096327217645E-7, "1");
addVertex(18.3726806640627, -26.2467193603515, 1.14728049993573E-6, "2");
addVertex(26.2467041015627, -26.2467420765016, -519.684935376156, "3");
addVertex(26.2467041015627, -18.3727262683961, -519.68493572034, "4");
addVertex(18.3726806640627, -26.2467420765016, -519.684935376156, "5");
addVertex(26.2467041015627, -26.2468074714971, -2015.74804572772, "6");
addVertex(26.2467041015627, -18.3727916633916, -2015.7480460719, "7");
addVertex(18.3726806640627, -26.2468074714971, -2015.74804572772, "8");
addVertex(26.2467041015627, -26.2468659827973, -3354.33056525896, "9");
addVertex(26.2467041015627, -18.3728501746919, -3354.33056560315, "10");
addVertex(18.3726806640627, -26.2468659827973, -3354.33056525896, "11");
addFace(["1", "2", "0"], "0");
addFace(["4", "5", "3"], "1");
addFace(["7", "8", "6"], "2");
addFace(["10", "11", "9"], "3");
}
}
}//package bunker
Section 28
//Ventilation (bunker.Ventilation)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import com.alternativagame.utility.*;
import flash.net.*;
import flash.system.*;
public class Ventilation extends Mesh {
private var alpha:BitmapData;
public var material:TextureMaterial;
private var onLoadMethod:Function;
private var loader:Loader;
private var counter:uint;// = 0
private static const texture:TextureData = new TextureData(new Bmp().bitmapData);
private static const Bmp:Class = Ventilation_Bmp;
public function Ventilation(){
material = new TextureMaterial(texture, 1, false, true, 1);
super("Ventilation");
coords = new Point3D(6.01790806856878E-13, 2322.83471679688, -629.921264648438);
addVertex(529.133911132812, 78.739990234375, 214.181640625, "0");
addVertex(529.133911132812, -78.740234375, 214.181671142578, "1");
addVertex(417.77847290039, 78.739990234375, 102.826171875, "2");
addVertex(417.778503417968, -78.740234375, 102.826171875, "3");
addVertex(-417.778442382813, 78.740234375, 102.826171875, "4");
addVertex(-529.133850097657, 78.740234375, 214.181671142578, "5");
addVertex(-529.133850097657, -78.739990234375, 214.181640625, "6");
addVertex(-417.778350830079, -78.739990234375, 102.826171875, "7");
addVertex(78.7402877807611, 417.7783203125, 102.826171875, "8");
addVertex(78.740257263183, 529.1337890625, 214.181671142578, "9");
addVertex(-78.7399978637701, 529.1337890625, 214.181640625, "10");
addVertex(-78.7399368286139, 417.7783203125, 102.826171875, "11");
addFace(["8", "9", "10", "11"], "0");
setUVsToFace(new Point(0.499001704509106, 0.501001579179785), new Point(0.49899822473526, 0.999001741409302), new Point(0.000998258590698242, 0.998998165130615), "0");
addFace(["3", "1", "0", "2"], "2");
setUVsToFace(new Point(0.500999850645753, 0.00100000004749745), new Point(0.999000012874603, 0.00100000004749745), new Point(0.999000012874603, 0.499000012874603), "2");
addFace(["6", "7", "4", "5"], "6");
setUVsToFace(new Point(0.000999089679680765, 0.00100088119506836), new Point(0.498999118804932, 0.000999003648757935), new Point(0.499000541976106, 0.498998969794863), "6");
addSurface(["0", "2", "6"], "Ventilation");
setMaterialToSurface(material, "Ventilation");
}
private function onLoadError(_arg1:IOErrorEvent):void{
complete();
}
public function load(_arg1:Function):String{
this.onLoadMethod = _arg1;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
loader.load(new URLRequest("ventilationalpha.gif"), new LoaderContext(false, ApplicationDomain.currentDomain));
return ("Loading ventilation texture");
}
private function complete():void{
onLoadMethod.call();
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onLoadError);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.VERIFY_ERROR, onLoadError);
onLoadMethod = null;
loader = null;
}
private function onLoadComplete(_arg1:Event):void{
counter++;
if (counter < 2){
switch (counter){
case 1:
alpha = Bitmap(loader.content).bitmapData;
loader.load(new URLRequest("ventilation.jpg"), new LoaderContext(false, ApplicationDomain.currentDomain));
break;
};
} else {
material.texture = new TextureData(BitmapUtility.mergeBitmapAlpha(Bitmap(loader.content).bitmapData, alpha, true));
complete();
};
}
}
}//package bunker
Section 29
//Ventilation_Bmp (bunker.Ventilation_Bmp)
package bunker {
import mx.core.*;
public class Ventilation_Bmp extends BitmapAsset {
}
}//package bunker
Section 30
//Ventilators (bunker.Ventilators)
package bunker {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
public class Ventilators extends Mesh {
public var material:TextureMaterial;
private var angle:Number;// = 0
private static const Bmp:Class = Ventilators_Bmp;
private static const texture:TextureData = new TextureData(new BitmapData(276, 276, false, 0xFF0000));
private static const ventilator:BitmapData = new Bmp().bitmapData;
private static var sprite:Sprite = new Sprite();
public function Ventilators(){
material = new TextureMaterial(texture, 1, false, false, 15);
super("Ventilators");
coords = new Point3D(6.01790806856878E-13, 2322.83471679688, -629.921264648438);
addVertex(548.614685058593, -78.740234375, 194.700866699219, "v0");
addVertex(548.614685058593, 78.739990234375, 194.700836181641, "v1");
addVertex(437.259277343749, 78.739990234375, 83.3453979492188, "v2");
addVertex(437.259307861328, -78.740234375, 83.3453979492188, "v3");
addVertex(-437.259246826173, 78.740234375, 83.3453979492188, "v4");
addVertex(-548.614624023438, 78.740234375, 194.700866699219, "v5");
addVertex(-548.614624023438, -78.739990234375, 194.700866699219, "v6");
addVertex(-437.259155273438, -78.739990234375, 83.3453979492188, "v7");
addVertex(78.7402877807611, 437.25927734375, 83.3453979492188, "v8");
addVertex(78.740257263183, 548.614501953125, 194.700866699219, "v9");
addVertex(-78.7399978637701, 548.614501953125, 194.700866699219, "v10");
addVertex(-78.7399368286139, 437.259033203125, 83.3453979492188, "v11");
addFace(["v9", "v10", "v11", "v8"], "v0");
setUVsToFace(new Point(0, 0.999999821186066), new Point(1.93786661384365E-7, 0), new Point(1, 3.87573322768731E-7), "v0");
addFace(["v6", "v7", "v4", "v5"], "v1");
setUVsToFace(new Point(0, -4.46318892954878E-8), new Point(1, 1.93786689806075E-7), new Point(1, 1), "v1");
addFace(["v3", "v0", "v1", "v2"], "v6");
setUVsToFace(new Point(0.999999983375498, 0.99999951581969), new Point(0, 0.999999225139618), new Point(2.90679992076548E-7, 0), "v6");
addSurface(["v0", "v6", "v1"], "Ventilators");
setMaterialToSurface(material, "Ventilators");
addVertex(529.133911132812, 78.739990234375, 214.181640625, "0");
addVertex(529.133911132812, -78.740234375, 214.181671142578, "1");
addVertex(417.77847290039, 78.739990234375, 102.826171875, "2");
addVertex(417.778503417968, -78.740234375, 102.826171875, "3");
addVertex(-417.778442382813, 78.740234375, 102.826171875, "4");
addVertex(-529.133850097657, 78.740234375, 214.181671142578, "5");
addVertex(-529.133850097657, -78.739990234375, 214.181640625, "6");
addVertex(-417.778350830079, -78.739990234375, 102.826171875, "7");
addVertex(78.7402877807611, 417.7783203125, 102.826171875, "8");
addVertex(78.740257263183, 529.1337890625, 214.181671142578, "9");
addVertex(-78.7399978637701, 529.1337890625, 214.181640625, "10");
addVertex(-78.7399368286139, 417.7783203125, 102.826171875, "11");
addVertex(548.621093749999, -78.740234375, 194.694458007813, "12");
addVertex(548.621093749999, 78.739990234375, 194.694427490234, "13");
addVertex(437.265686035156, 78.739990234375, 83.3389892578125, "14");
addVertex(437.265686035156, -78.740234375, 83.3389892578125, "15");
addVertex(-437.265625000001, 78.740234375, 83.3389892578125, "16");
addVertex(-548.621032714844, 78.740234375, 194.694458007813, "17");
addVertex(-548.621032714844, -78.739990234375, 194.694458007813, "18");
addVertex(-437.265563964844, -78.739990234375, 83.3389892578125, "19");
addVertex(78.7402877807611, 437.265625, 83.3389892578125, "20");
addVertex(78.740257263183, 548.620849609375, 194.694458007813, "21");
addVertex(-78.7399978637701, 548.620849609375, 194.694458007813, "22");
addVertex(-78.7399368286139, 437.265380859375, 83.3389892578125, "23");
addFace(["17", "5", "6", "18"], "0");
addFace(["20", "8", "9", "21"], "1");
addFace(["19", "7", "4", "16"], "2");
addFace(["4", "5", "17", "16"], "24");
addFace(["8", "20", "23", "11"], "4");
addFace(["0", "2", "14", "13"], "5");
addFace(["12", "1", "0", "13"], "6");
addFace(["21", "9", "10", "22"], "7");
addFace(["3", "1", "12", "15"], "8");
addFace(["6", "7", "19", "18"], "9");
addFace(["11", "23", "22", "10"], "10");
addFace(["14", "2", "3", "15"], "11");
addSurface(["2", "5", "11", "10", "9", "7", "1", "0", "6", "4", "24", "8"], "BlackBox");
setMaterialToSurface(new FillMaterial(0), "BlackBox");
}
public function startAnimation():void{
sprite.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(_arg1:Event):void{
angle = (angle - 0.05);
var _local2:Matrix = new Matrix(1, 0, 0, 1, -138, -138);
_local2.rotate(angle);
_local2.translate(138, 138);
texture.bitmapData.draw(ventilator, _local2);
}
public function stopAnimation():void{
sprite.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}//package bunker
Section 31
//Ventilators_Bmp (bunker.Ventilators_Bmp)
package bunker {
import mx.core.*;
public class Ventilators_Bmp extends BitmapAsset {
}
}//package bunker
Section 32
//FPS (com.alternativagame.admin.FPS)
package com.alternativagame.admin {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.utils.*;
import flash.text.*;
import flash.system.*;
public final class FPS extends Sprite {
private var currentY:int;
private var diagramTimer:int;
private var tfTimer:int;
private var downloadedBytes:uint;// = 0
private var socketOutBytes:uint;// = 0
private var socketOutLast:uint;// = 0
private var socketInBytes:uint;// = 0
private var mem:TextField;
private var skn:TextField;
private var diagram:BitmapData;
private var socketOut:TextField;
private var skins:int;// = -1
private var fps:TextField;
private var socketInLast:uint;// = 0
private var tfDelay:int;// = 0
private var socketIn:TextField;
private var dwl:TextField;
private var skinsChanged:int;// = 0
private static const maxMemory:uint = 41943040;
private static const diagramWidth:uint = 60;
private static const tfDelayMax:int = 10;
private static const maxSocket:uint = 4200;
private static const diagramHeight:uint = 40;
private static var instance:FPS;
public function FPS(_arg1:DisplayObjectContainer){
var _local2:Bitmap;
fps = new TextField();
mem = new TextField();
skn = new TextField();
dwl = new TextField();
socketIn = new TextField();
socketOut = new TextField();
super();
if (instance == null){
mouseEnabled = false;
mouseChildren = false;
_arg1.addChild(this);
fps.defaultTextFormat = new TextFormat("Tahoma", 10, 0xCCCCCC);
fps.autoSize = TextFieldAutoSize.LEFT;
fps.text = ("FPS: " + Number(stage.frameRate).toFixed(2));
fps.selectable = false;
fps.x = (-(diagramWidth) - 2);
addChild(fps);
mem.defaultTextFormat = new TextFormat("Tahoma", 10, 0xCCCC00);
mem.autoSize = TextFieldAutoSize.LEFT;
mem.text = ("MEM: " + bytesToString(System.totalMemory));
mem.selectable = false;
mem.x = (-(diagramWidth) - 2);
mem.y = 10;
addChild(mem);
currentY = 20;
skn.defaultTextFormat = new TextFormat("Tahoma", 10, 0xFF6600);
skn.autoSize = TextFieldAutoSize.LEFT;
skn.text = ("MEM: " + bytesToString(System.totalMemory));
skn.selectable = false;
skn.x = (-(diagramWidth) - 2);
dwl.defaultTextFormat = new TextFormat("Tahoma", 10, 0xCC00CC);
dwl.autoSize = TextFieldAutoSize.LEFT;
dwl.selectable = false;
dwl.x = (-(diagramWidth) - 2);
socketIn.defaultTextFormat = new TextFormat("Tahoma", 10, 0xFF00);
socketIn.autoSize = TextFieldAutoSize.LEFT;
socketIn.selectable = false;
socketIn.x = (-(diagramWidth) - 2);
socketOut.defaultTextFormat = new TextFormat("Tahoma", 10, 26367);
socketOut.autoSize = TextFieldAutoSize.LEFT;
socketOut.selectable = false;
socketOut.x = (-(diagramWidth) - 2);
diagram = new BitmapData(diagramWidth, diagramHeight, true, 553648127);
_local2 = new Bitmap(diagram);
_local2.y = (currentY + 4);
_local2.x = -(diagramWidth);
addChildAt(_local2, 0);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(Event.RESIZE, onResize);
onResize();
diagramTimer = getTimer();
tfTimer = getTimer();
} else {
throw (new Error("FPS is a Singleton. Use FPS.init to create FPS instance"));
};
}
private function bytesToString(_arg1:uint):String{
var _local2:String;
if (_arg1 < 0x0400){
_local2 = (String(_arg1) + "b");
} else {
if (_arg1 < 0x2800){
_local2 = (Number((_arg1 / 0x0400)).toFixed(2) + "kb");
} else {
if (_arg1 < 102400){
_local2 = (Number((_arg1 / 0x0400)).toFixed(1) + "kb");
} else {
if (_arg1 < 0x100000){
_local2 = ((_arg1 >> 10) + "kb");
} else {
if (_arg1 < 0xA00000){
_local2 = (Number((_arg1 / 0x100000)).toFixed(2) + "mb");
} else {
if (_arg1 < 104857600){
_local2 = (Number((_arg1 / 0x100000)).toFixed(1) + "mb");
} else {
_local2 = ((_arg1 >> 20) + "mb");
};
};
};
};
};
};
return (_local2);
}
private function onEnterFrame(_arg1:Event):void{
tfDelay++;
if (tfDelay >= tfDelayMax){
tfDelay = 0;
fps.text = ("FPS: " + Number(((1000 * tfDelayMax) / (getTimer() - tfTimer))).toFixed(2));
tfTimer = getTimer();
};
var _local2:Number = (1000 / (getTimer() - diagramTimer));
var _local3:Number = ((_local2)>stage.frameRate) ? 1 : (_local2 / stage.frameRate);
diagramTimer = getTimer();
diagram.scroll(1, 0);
diagram.fillRect(new Rectangle(0, 0, 1, diagram.height), 553648127);
diagram.setPixel32(0, (diagramHeight * (1 - _local3)), 4291611852);
mem.text = ("MEM: " + bytesToString(System.totalMemory));
var _local4:Number = ((skins)==0) ? 0 : (skinsChanged / skins);
diagram.setPixel32(0, (diagramHeight * (1 - _local4)), 4294927872);
var _local5:Number = (System.totalMemory / maxMemory);
diagram.setPixel32(0, (diagramHeight * (1 - _local5)), 4291611648);
var _local6:Number = ((socketInBytes - socketInLast) / maxSocket);
socketInLast = socketInBytes;
diagram.setPixel32(0, (diagramHeight * (1 - _local6)), 4278255360);
var _local7:Number = ((socketOutBytes - socketOutLast) / maxSocket);
socketOutLast = socketOutBytes;
diagram.setPixel32(0, (diagramHeight * (1 - _local7)), 4278216447);
}
private function onResize(_arg1:Event=null):void{
var _local2:Point = parent.globalToLocal(new Point((stage.stageWidth - 2), -3));
x = _local2.x;
y = _local2.y;
}
public static function addDownloadBytes(_arg1:uint):void{
if (instance.downloadedBytes == 0){
instance.dwl.y = instance.currentY;
instance.currentY = (instance.currentY + 10);
instance.addChild(instance.dwl);
instance.getChildAt(0).y = (instance.currentY + 4);
};
instance.downloadedBytes = (instance.downloadedBytes + _arg1);
instance.dwl.text = ("DWL: " + instance.bytesToString(instance.downloadedBytes));
}
public static function init(_arg1:DisplayObjectContainer):void{
instance = new FPS(_arg1);
}
public static function addSocketInBytes(_arg1:uint):void{
if (instance.socketInBytes == 0){
instance.socketIn.y = instance.currentY;
instance.currentY = (instance.currentY + 10);
instance.addChild(instance.socketIn);
instance.getChildAt(0).y = (instance.currentY + 4);
};
instance.socketInBytes = (instance.socketInBytes + _arg1);
instance.socketIn.text = ("IN: " + instance.bytesToString(instance.socketInBytes));
}
public static function addSocketOutBytes(_arg1:uint):void{
if (instance.socketOutBytes == 0){
instance.socketOut.y = instance.currentY;
instance.currentY = (instance.currentY + 10);
instance.addChild(instance.socketOut);
instance.getChildAt(0).y = (instance.currentY + 4);
};
instance.socketOutBytes = (instance.socketOutBytes + _arg1);
instance.socketOut.text = ("OUT: " + instance.bytesToString(instance.socketOutBytes));
}
public static function addSkins(_arg1:uint, _arg2:uint):void{
if (instance.skins < 0){
instance.skn.y = instance.currentY;
instance.currentY = (instance.currentY + 10);
instance.addChild(instance.skn);
instance.getChildAt(0).y = (instance.currentY + 4);
};
instance.skins = _arg1;
instance.skinsChanged = _arg2;
instance.skn.text = ("SKN: " + ((_arg2)>0) ? ((_arg1.toString() + "-") + _arg2.toString()) : _arg1.toString());
}
}
}//package com.alternativagame.admin
Section 33
//Collision (com.alternativagame.engine3d.collision.Collision)
package com.alternativagame.engine3d.collision {
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
public class Collision {
public var point:Point3D;
public var offset:Number;
public var normal:Point3D;
public var face:Face;
}
}//package com.alternativagame.engine3d.collision
Section 34
//CollisionPlane (com.alternativagame.engine3d.collision.CollisionPlane)
package com.alternativagame.engine3d.collision {
import com.alternativagame.engine3d.*;
public class CollisionPlane {
public var destinationOffset:Number;
public var infront:Boolean;
public var node:BSPNode;
public var sourceOffset:Number;
}
}//package com.alternativagame.engine3d.collision
Section 35
//Plane (com.alternativagame.engine3d.primitive.Plane)
package com.alternativagame.engine3d.primitive {
import com.alternativagame.engine3d.*;
import flash.geom.*;
public class Plane extends Mesh {
public function Plane(_arg1:Number=100, _arg2:Number=100, _arg3:uint=1, _arg4:uint=1, _arg5:Boolean=true, _arg6:Boolean=false){
var _local13:int;
var _local14:int;
var _local16:Surface;
var _local17:Surface;
super();
var _local7:Number = (_arg1 / 2);
var _local8:Number = (_arg2 / 2);
var _local9:Number = (_arg1 / _arg3);
var _local10:Number = (_arg2 / _arg4);
var _local11:Number = (1 / _arg3);
var _local12:Number = (1 / _arg4);
var _local15:Array = new Array();
_local14 = 0;
while (_local14 <= _arg4) {
_local15[_local14] = new Array();
_local13 = 0;
while (_local13 <= _arg3) {
_local15[_local14][_local13] = new Point((_local13 * _local11), (_local14 * _local12));
addVertex(((_local13 * _local9) - _local7), ((_local14 * _local10) - _local8), 0, ((_local13 + "_") + _local14));
_local13++;
};
_local14++;
};
if (((_arg5) || (!(_arg6)))){
_local16 = addSurface(null, "front");
};
if (((_arg5) || (_arg6))){
_local17 = addSurface(null, "back");
};
_local14 = 0;
while (_local14 < _arg4) {
_local13 = 0;
while (_local13 < _arg3) {
if (((_arg5) || (!(_arg6)))){
addFace([((_local13 + "_") + _local14), (((_local13 + 1) + "_") + _local14), (((_local13 + 1) + "_") + (_local14 + 1)), ((_local13 + "_") + (_local14 + 1))], ((("front" + _local13) + "_") + _local14));
setUVsToFace(_local15[_local14][_local13], _local15[_local14][(_local13 + 1)], _local15[(_local14 + 1)][(_local13 + 1)], ((("front" + _local13) + "_") + _local14));
_local16.addFace(((("front" + _local13) + "_") + _local14));
};
if (((_arg5) || (_arg6))){
addFace([((_local13 + "_") + _local14), ((_local13 + "_") + (_local14 + 1)), (((_local13 + 1) + "_") + (_local14 + 1)), (((_local13 + 1) + "_") + _local14)], ((("back" + _local13) + "_") + _local14));
setUVsToFace(_local15[(_arg4 - _local14)][_local13], _local15[((_arg4 - _local14) - 1)][_local13], _local15[((_arg4 - _local14) - 1)][(_local13 + 1)], ((("back" + _local13) + "_") + _local14));
_local17.addFace(((("back" + _local13) + "_") + _local14));
};
_local13++;
};
_local14++;
};
}
}
}//package com.alternativagame.engine3d.primitive
Section 36
//BSPNode (com.alternativagame.engine3d.BSPNode)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
public final class BSPNode {
var mobile:uint;// = 4294967295
var normal:Point3D;
var front:BSPNode;
var parent:BSPNode;
var offset:Number;
var back:BSPNode;
var backPrimitives:Set;
var frontPrimitives:Set;
var primitive:PolyPrimitive;
private static var collector:Array = new Array();
public function BSPNode(){
normal = new Point3D();
super();
}
static function createBSPNode(_arg1:PolyPrimitive):BSPNode{
var _local2:BSPNode = collector.pop();
if (_local2 == null){
_local2 = new (BSPNode);
};
_local2.primitive = _arg1;
_arg1.node = _local2;
_local2.normal.copy(_arg1.face.globalNormal);
_local2.offset = _arg1.face.globalOffset;
_local2.mobile = _arg1.mobile;
return (_local2);
}
static function destroyBSPNode(_arg1:BSPNode):void{
collector.push(_arg1);
}
}
}//package com.alternativagame.engine3d
Section 37
//Camera3D (com.alternativagame.engine3d.Camera3D)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.geom.*;
import flash.utils.*;
public class Camera3D extends Object3D {
var _view:View;
var _fov:Number;// = 1.5707963267949
var focusDistortion:Number;
private var currentSkin:Skin;
var textureMatrices:Dictionary;
var cameraCoords:Dictionary;
var viewAngle:Number;
var redrawOperation:Operation;
private var textureMatricesCalculated:Set;
var clearCalculatedOperation:Operation;
private var cameraCoordsCalculated:Set;
var cameraMatrix:Matrix3D;
private var prevSkin:Skin;
var _focusHalfSize:Number;// = 500
private var firstSkin:Skin;
var calculateMatrixOperation:Operation;
var focusDistance:Number;
var calculateSkinsOperation:Operation;
var direction:Point3D;
private static var counter:uint = 0;
public function Camera3D(_arg1:String=null){
redrawOperation = new Operation("redraw", this);
calculateMatrixOperation = new Operation("calculateMatrix", this, calculateMatrix, Operation.CAMERA_MATRIX);
clearCalculatedOperation = new Operation("clearCalculated", this, clearCalculated, Operation.CAMERA_CLEAR_CALCULATED);
calculateSkinsOperation = new Operation("calculateSkins", this, calculateSkins, Operation.CAMERA_CALCULATE_SKINS);
focusDistance = (_focusHalfSize / Math.tan((0.5 * _fov)));
focusDistortion = (1 / (focusDistance * focusDistance));
viewAngle = Math.sin((Math.PI / 4));
direction = new Point3D(0, 0, 1);
cameraMatrix = new Matrix3D();
cameraCoords = new Dictionary(true);
cameraCoordsCalculated = new Set(true);
textureMatrices = new Dictionary(true);
textureMatricesCalculated = new Set(true);
_view = new View();
super(_arg1);
addOperation.addSequel(calculateMatrixOperation);
locationOperation.addSequel(calculateMatrixOperation);
transformOperation.addSequel(calculateMatrixOperation);
moveOperation.addSequel(calculateMatrixOperation);
calculateMatrixOperation.addSequel(clearCalculatedOperation);
redrawOperation.addSequel(clearCalculatedOperation);
clearCalculatedOperation.addSequel(calculateSkinsOperation);
}
function calculateCameraCoord(_arg1:Point3D):Point3D{
var _local2:Point3D = cameraCoords[_arg1];
if (_local2 == null){
_local2 = new Point3D();
cameraCoords[_arg1] = _local2;
};
if (!cameraCoordsCalculated[_arg1]){
_local2.copy(_arg1);
_local2.transform(cameraMatrix);
cameraCoordsCalculated[_arg1] = true;
};
return (_local2);
}
function removeTextureMatrix(_arg1:Face):void{
delete textureMatrices[_arg1];
delete textureMatricesCalculated[_arg1];
}
private function insertCurrentSkin():void{
var _local1:Skin = Skin.createSkin(this);
_view.canvas.addChildAt(_local1, _view.canvas.getChildIndex(currentSkin));
_local1.nextSkin = currentSkin;
if (prevSkin == null){
firstSkin = _local1;
} else {
prevSkin.nextSkin = _local1;
};
currentSkin = _local1;
}
public function get view():View{
return (_view);
}
public function set zoom(_arg1:Number):void{
_arg1 = (1 / _arg1);
if (((((!((_scaleX == _arg1))) || (!((_scaleY == _arg1))))) || (!((_scaleZ == _arg1))))){
_scaleX = _arg1;
_scaleY = _arg1;
_scaleZ = _arg1;
addOperationToScene(transformOperation);
};
}
public function set fov(_arg1:Number):void{
_arg1 = ((_arg1)<0) ? 0 : ((_arg1)>Math.PI) ? Math.PI : _arg1;
if (_fov != _arg1){
focusDistance = (_focusHalfSize / Math.tan((0.5 * _arg1)));
focusDistortion = (1 / (focusDistance * focusDistance));
viewAngle = Math.sin((0.5 * _arg1));
addOperationToScene(redrawOperation);
_fov = _arg1;
};
}
private function addCurrentSkin():void{
if (currentSkin == null){
currentSkin = Skin.createSkin(this);
_view.canvas.addChild(currentSkin);
if (prevSkin == null){
firstSkin = currentSkin;
} else {
prevSkin.nextSkin = currentSkin;
};
};
}
private function drawAddedSkin(_arg1:PolyPrimitive):void{
if (_scene.addPrimitives[_arg1]){
if ((((currentSkin == null)) || (((!(_scene.removePrimitives[currentSkin._primitive])) && (!(_scene.addPrimitives[currentSkin._primitive])))))){
if (currentSkin == null){
addCurrentSkin();
} else {
insertCurrentSkin();
};
};
currentSkin.draw(_arg1);
prevSkin = currentSkin;
currentSkin = currentSkin.nextSkin;
} else {
while (((!((currentSkin == null))) && (((_scene.removePrimitives[currentSkin._primitive]) || (_scene.addPrimitives[currentSkin._primitive]))))) {
removeCurrentSkin();
};
if (currentSkin != null){
prevSkin = currentSkin;
currentSkin = currentSkin.nextSkin;
};
};
}
public function set viewRadius(_arg1:Number):void{
focusDistance = (_arg1 / Math.tan((0.5 * _fov)));
focusDistortion = (1 / (focusDistance * focusDistance));
viewAngle = Math.sin((0.5 * _fov));
addOperationToScene(redrawOperation);
_focusHalfSize = _arg1;
}
private function calculateMatrix():void{
direction.x = transformMatrix.c;
direction.y = transformMatrix.g;
direction.z = transformMatrix.k;
direction.normalize();
cameraMatrix.copy(transformMatrix);
cameraMatrix.invert();
}
private function isometricRenderChanged(_arg1:BSPNode):void{
var _local2:*;
var _local3:Point3D;
var _local4:Number;
if (_arg1 != null){
_local3 = _arg1.normal;
_local4 = (((direction.x * _local3.x) + (direction.y * _local3.y)) + (direction.z * _local3.z));
if (_arg1.primitive != null){
if (_local4 <= 0){
isometricRenderChanged(_arg1.back);
drawAddedSkin(_arg1.primitive);
isometricRenderChanged(_arg1.front);
} else {
isometricRenderChanged(_arg1.front);
isometricRenderChanged(_arg1.back);
};
} else {
if (_local4 <= 0){
isometricRenderChanged(_arg1.back);
for (_local2 in _arg1.frontPrimitives) {
drawAddedSkin(_local2);
};
isometricRenderChanged(_arg1.front);
} else {
isometricRenderChanged(_arg1.front);
for (_local2 in _arg1.backPrimitives) {
drawAddedSkin(_local2);
};
isometricRenderChanged(_arg1.back);
};
};
};
}
public function get zoom():Number{
return ((3 / ((_scaleX + _scaleY) + _scaleZ)));
}
private function calculateSkins():void{
prevSkin = null;
currentSkin = firstSkin;
if (((((((((moveOperation.queued) || (transformOperation.queued))) || (redrawOperation.queued))) || (locationOperation.queued))) || (addOperation.queued))){
if (_fov == 0){
isometricRender(_scene.bsp);
} else {
perspectiveRender(_scene.bsp);
};
} else {
if (_fov == 0){
isometricRenderChanged(_scene.bsp);
} else {
perspectiveRenderChanged(_scene.bsp);
};
};
while (currentSkin != null) {
removeCurrentSkin();
};
}
override protected function removeFromScene(_arg1:Scene3D):void{
super.removeFromScene(_arg1);
_arg1.calculatePrimitivesOperation.removeSequel(clearCalculatedOperation);
}
private function drawSkin(_arg1:PolyPrimitive):void{
addCurrentSkin();
currentSkin.draw(_arg1);
prevSkin = currentSkin;
currentSkin = currentSkin.nextSkin;
}
private function perspectiveRenderChanged(_arg1:BSPNode):void{
var _local2:*;
var _local3:Point3D;
var _local4:Number;
var _local5:Number;
if (_arg1 != null){
_local3 = _arg1.normal;
_local4 = (((direction.x * _local3.x) + (direction.y * _local3.y)) + (direction.z * _local3.z));
_local5 = ((((globalCoords.x * _local3.x) + (globalCoords.y * _local3.y)) + (globalCoords.z * _local3.z)) - _arg1.offset);
if (_arg1.primitive != null){
if (_local5 > 0){
if (_local4 < viewAngle){
perspectiveRenderChanged(_arg1.back);
drawAddedSkin(_arg1.primitive);
};
perspectiveRenderChanged(_arg1.front);
} else {
if (_local4 > -(viewAngle)){
perspectiveRenderChanged(_arg1.front);
};
perspectiveRenderChanged(_arg1.back);
};
} else {
if (_local5 > 0){
if (_local4 < viewAngle){
perspectiveRenderChanged(_arg1.back);
for (_local2 in _arg1.frontPrimitives) {
drawAddedSkin(_local2);
};
};
perspectiveRenderChanged(_arg1.front);
} else {
if (_local4 > -(viewAngle)){
perspectiveRenderChanged(_arg1.front);
for (_local2 in _arg1.backPrimitives) {
drawAddedSkin(_local2);
};
};
perspectiveRenderChanged(_arg1.back);
};
};
};
}
private function isometricRender(_arg1:BSPNode):void{
var _local2:*;
var _local3:Point3D;
var _local4:Number;
if (_arg1 != null){
_local3 = _arg1.normal;
_local4 = (((direction.x * _local3.x) + (direction.y * _local3.y)) + (direction.z * _local3.z));
if (_arg1.primitive != null){
if (_local4 <= 0){
isometricRender(_arg1.back);
drawSkin(_arg1.primitive);
isometricRender(_arg1.front);
} else {
isometricRender(_arg1.front);
isometricRender(_arg1.back);
};
} else {
if (_local4 <= 0){
isometricRender(_arg1.back);
for (_local2 in _arg1.frontPrimitives) {
drawSkin(_local2);
};
isometricRender(_arg1.front);
} else {
isometricRender(_arg1.front);
for (_local2 in _arg1.backPrimitives) {
drawSkin(_local2);
};
isometricRender(_arg1.back);
};
};
};
}
override protected function defaultName():String{
return (("camera" + ++counter));
}
public function get fov():Number{
return (_fov);
}
override protected function addToScene(_arg1:Scene3D):void{
super.addToScene(_arg1);
_arg1.calculatePrimitivesOperation.addSequel(clearCalculatedOperation);
}
private function perspectiveRender(_arg1:BSPNode):void{
var _local2:*;
var _local3:Point3D;
var _local4:Number;
var _local5:Number;
if (_arg1 != null){
_local3 = _arg1.normal;
_local4 = (((direction.x * _local3.x) + (direction.y * _local3.y)) + (direction.z * _local3.z));
_local5 = ((((globalCoords.x * _local3.x) + (globalCoords.y * _local3.y)) + (globalCoords.z * _local3.z)) - _arg1.offset);
if (_arg1.primitive != null){
if (_local5 > 0){
if (_local4 < viewAngle){
perspectiveRender(_arg1.back);
drawSkin(_arg1.primitive);
};
perspectiveRender(_arg1.front);
} else {
if (_local4 > -(viewAngle)){
perspectiveRender(_arg1.front);
};
perspectiveRender(_arg1.back);
};
} else {
if (_local5 > 0){
if (_local4 < viewAngle){
perspectiveRender(_arg1.back);
for (_local2 in _arg1.frontPrimitives) {
drawSkin(_local2);
};
};
perspectiveRender(_arg1.front);
} else {
if (_local4 > -(viewAngle)){
perspectiveRender(_arg1.front);
for (_local2 in _arg1.backPrimitives) {
drawSkin(_local2);
};
};
perspectiveRender(_arg1.back);
};
};
};
}
function calculateTextureMatrix(_arg1:Face, _arg2:uint, _arg3:uint):Matrix{
var _local6:Point3D;
var _local7:Point3D;
var _local8:Point3D;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local4:Matrix = textureMatrices[_arg1];
var _local5:Matrix = _arg1.uvMatrix;
if (_local4 == null){
_local4 = new Matrix();
textureMatrices[_arg1] = _local4;
};
if (!textureMatricesCalculated[_arg1]){
_local6 = calculateCameraCoord(_arg1.primitive.points[0]);
_local7 = calculateCameraCoord(_arg1.primitive.points[1]);
_local8 = calculateCameraCoord(_arg1.primitive.points[2]);
_local9 = (_local7.x - _local6.x);
_local10 = (_local7.y - _local6.y);
_local11 = (_local8.x - _local6.x);
_local12 = (_local8.y - _local6.y);
_local4.a = (((_local5.a * _local9) + (_local5.b * _local11)) / _arg2);
_local4.b = (((_local5.a * _local10) + (_local5.b * _local12)) / _arg2);
_local4.c = (-(((_local5.c * _local9) + (_local5.d * _local11))) / _arg3);
_local4.d = (-(((_local5.c * _local10) + (_local5.d * _local12))) / _arg3);
_local4.tx = ((((_local5.tx + _local5.c) * _local9) + ((_local5.ty + _local5.d) * _local11)) + _local6.x);
_local4.ty = ((((_local5.tx + _local5.c) * _local10) + ((_local5.ty + _local5.d) * _local12)) + _local6.y);
textureMatricesCalculated[_arg1] = true;
};
return (_local4);
}
private function removeCurrentSkin():void{
var _local1:Skin = currentSkin.nextSkin;
_view.canvas.removeChild(currentSkin);
currentSkin.draw(null);
currentSkin.nextSkin = null;
currentSkin.camera = null;
Skin.destroySkin(currentSkin);
currentSkin = _local1;
if (prevSkin == null){
firstSkin = currentSkin;
} else {
prevSkin.nextSkin = currentSkin;
};
}
private function clearCalculated():void{
var _local1:*;
var _local2:PolyPrimitive;
var _local3:Array;
var _local4:uint;
if (((((((((transformOperation.queued) || (moveOperation.queued))) || (redrawOperation.queued))) || (locationOperation.queued))) || (addOperation.queued))){
cameraCoordsCalculated.clear();
textureMatricesCalculated.clear();
} else {
for (_local1 in _scene.addPrimitives) {
_local2 = _local1;
_local3 = _local2.points;
_local4 = 0;
while (_local4 < _local2.num) {
delete cameraCoordsCalculated[_local3[_local4]];
_local4++;
};
delete textureMatricesCalculated[_local2.face];
};
};
}
}
}//package com.alternativagame.engine3d
Section 38
//Face (com.alternativagame.engine3d.Face)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.geom.*;
public final class Face {
private const crossNormalTreshold:Number = 0.01;
var materialOperation:Operation;
private var _cUV:Point;
private var _aUV:Point;
var moveOperation:Operation;
var globalOffset:Number;
var calculateUVOperation:Operation;
var uvMatrix:Matrix;
var removeOperation:Operation;
private var _bUV:Point;
var addOperation:Operation;
var _num:uint;
var transformPrimitiveOperation:Operation;
var uvOperation:Operation;
var _mesh:Mesh;
var _vertices:Array;
var transformOperation:Operation;
var primitive:PolyPrimitive;
var globalNormal:Point3D;
var _surface:Surface;
var calculatePlaneOperation:Operation;
public function Face(_arg1:Array){
var _local3:Vertex;
addOperation = new Operation("add", this);
removeOperation = new Operation("remove", this);
transformOperation = new Operation("transform", this);
moveOperation = new Operation("move", this);
materialOperation = new Operation("material", this);
uvOperation = new Operation("uv", this, setUV, Operation.FACE_UV);
calculateUVOperation = new Operation("calculateUV", this, calculateUV, Operation.FACE_CALCULATE_UV);
calculatePlaneOperation = new Operation("calculatePlane", this, calculatePlane, Operation.FACE_PLANE);
transformPrimitiveOperation = new Operation("transformPrimitive", this, transformPrimitive, Operation.FACE_TRANSFORM);
globalNormal = new Point3D();
super();
_vertices = _arg1;
_num = _arg1.length;
primitive = PolyPrimitive.createPolyPrimitive();
primitive.face = this;
primitive.num = _num;
var _local2:uint;
while (_local2 < _num) {
_local3 = _arg1[_local2];
primitive.points.push(_local3.globalCoords);
primitive.uvs.push(null);
_local3.addToFace(this);
_local2++;
};
addOperation.addSequel(calculatePlaneOperation);
transformOperation.addSequel(calculatePlaneOperation);
transformOperation.addSequel(transformPrimitiveOperation);
moveOperation.addSequel(transformPrimitiveOperation);
addOperation.addSequel(uvOperation);
uvOperation.addSequel(calculateUVOperation);
}
private function setUV():void{
var _local1:uint;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Point3D;
var _local8:Point3D;
var _local9:Point3D;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Point;
var _local19:Point3D;
if (((((!((_aUV == null))) && (!((_bUV == null))))) && (!((_cUV == null))))){
_local2 = (_bUV.x - _aUV.x);
_local3 = (_bUV.y - _aUV.y);
_local4 = (_cUV.x - _aUV.x);
_local5 = (_cUV.y - _aUV.y);
_local6 = ((_local2 * _local5) - (_local3 * _local4));
if (uvMatrix == null){
uvMatrix = new Matrix();
};
uvMatrix.a = (_local5 / _local6);
uvMatrix.b = (-(_local3) / _local6);
uvMatrix.c = (-(_local4) / _local6);
uvMatrix.d = (_local2 / _local6);
uvMatrix.tx = -(((uvMatrix.a * _aUV.x) + (uvMatrix.c * _aUV.y)));
uvMatrix.ty = -(((uvMatrix.b * _aUV.x) + (uvMatrix.d * _aUV.y)));
primitive.uvs[0] = _aUV;
primitive.uvs[1] = _bUV;
primitive.uvs[2] = _cUV;
if (_num > 3){
_local7 = primitive.points[0];
_local8 = primitive.points[1];
_local9 = primitive.points[2];
if (((globalNormal.x)<0) ? -(globalNormal.x) : globalNormal.x > ((globalNormal.y)<0) ? -(globalNormal.y) : globalNormal.y){
if (((globalNormal.x)<0) ? -(globalNormal.x) : globalNormal.x > ((globalNormal.z)<0) ? -(globalNormal.z) : globalNormal.z){
_local10 = (_local8.y - _local7.y);
_local11 = (_local8.z - _local7.z);
_local12 = (_local9.y - _local7.y);
_local13 = (_local9.z - _local7.z);
_local6 = ((_local10 * _local13) - (_local12 * _local11));
_local1 = 3;
while (_local1 < _num) {
_local19 = primitive.points[_local1];
_local14 = (_local19.y - _local7.y);
_local15 = (_local19.z - _local7.z);
_local16 = (((_local14 * _local13) - (_local12 * _local15)) / _local6);
_local17 = (((_local10 * _local15) - (_local14 * _local11)) / _local6);
_local18 = primitive.uvs[_local1];
if (_local18 == null){
_local18 = new Point();
primitive.uvs[_local1] = _local18;
};
_local18.x = ((_aUV.x + (_local2 * _local16)) + (_local4 * _local17));
_local18.y = ((_aUV.y + (_local3 * _local16)) + (_local5 * _local17));
_local1++;
};
} else {
_local10 = (_local8.x - _local7.x);
_local11 = (_local8.y - _local7.y);
_local12 = (_local9.x - _local7.x);
_local13 = (_local9.y - _local7.y);
_local6 = ((_local10 * _local13) - (_local12 * _local11));
_local1 = 3;
while (_local1 < _num) {
_local19 = primitive.points[_local1];
_local14 = (_local19.x - _local7.x);
_local15 = (_local19.y - _local7.y);
_local16 = (((_local14 * _local13) - (_local12 * _local15)) / _local6);
_local17 = (((_local10 * _local15) - (_local14 * _local11)) / _local6);
_local18 = primitive.uvs[_local1];
if (_local18 == null){
_local18 = new Point();
primitive.uvs[_local1] = _local18;
};
_local18.x = ((_aUV.x + (_local2 * _local16)) + (_local4 * _local17));
_local18.y = ((_aUV.y + (_local3 * _local16)) + (_local5 * _local17));
_local1++;
};
};
} else {
if (((globalNormal.y)<0) ? -(globalNormal.y) : globalNormal.y > ((globalNormal.z)<0) ? -(globalNormal.z) : globalNormal.z){
_local10 = (_local8.x - _local7.x);
_local11 = (_local8.z - _local7.z);
_local12 = (_local9.x - _local7.x);
_local13 = (_local9.z - _local7.z);
_local6 = ((_local10 * _local13) - (_local12 * _local11));
_local1 = 3;
while (_local1 < _num) {
_local19 = primitive.points[_local1];
_local14 = (_local19.x - _local7.x);
_local15 = (_local19.z - _local7.z);
_local16 = (((_local14 * _local13) - (_local12 * _local15)) / _local6);
_local17 = (((_local10 * _local15) - (_local14 * _local11)) / _local6);
_local18 = primitive.uvs[_local1];
if (_local18 == null){
_local18 = new Point();
primitive.uvs[_local1] = _local18;
};
_local18.x = ((_aUV.x + (_local2 * _local16)) + (_local4 * _local17));
_local18.y = ((_aUV.y + (_local3 * _local16)) + (_local5 * _local17));
_local1++;
};
} else {
_local10 = (_local8.x - _local7.x);
_local11 = (_local8.y - _local7.y);
_local12 = (_local9.x - _local7.x);
_local13 = (_local9.y - _local7.y);
_local6 = ((_local10 * _local13) - (_local12 * _local11));
_local1 = 3;
while (_local1 < _num) {
_local19 = primitive.points[_local1];
_local14 = (_local19.x - _local7.x);
_local15 = (_local19.y - _local7.y);
_local16 = (((_local14 * _local13) - (_local12 * _local15)) / _local6);
_local17 = (((_local10 * _local15) - (_local14 * _local11)) / _local6);
_local18 = primitive.uvs[_local1];
if (_local18 == null){
_local18 = new Point();
primitive.uvs[_local1] = _local18;
};
_local18.x = ((_aUV.x + (_local2 * _local16)) + (_local4 * _local17));
_local18.y = ((_aUV.y + (_local3 * _local16)) + (_local5 * _local17));
_local1++;
};
};
};
};
} else {
uvMatrix = null;
_local1 = 0;
while (_local1 < _num) {
primitive.uvs[_local1] = null;
_local1++;
};
};
}
function addToMesh(_arg1:Mesh):void{
_arg1.moveOperation.addSequel(moveOperation);
_arg1.transformOperation.addSequel(transformOperation);
_arg1.mobileOperation.addSequel(transformPrimitiveOperation);
_mesh = _arg1;
primitive.mobile = _arg1._mobile;
}
public function set aUV(_arg1:Point):void{
if (_aUV != null){
if (_arg1 != null){
if (!_aUV.equals(_arg1)){
_aUV.x = _arg1.x;
_aUV.y = _arg1.y;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
_aUV = null;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
if (_arg1 != null){
_aUV = _arg1.clone();
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
};
}
public function set cUV(_arg1:Point):void{
if (_cUV != null){
if (_arg1 != null){
if (!_cUV.equals(_arg1)){
_cUV.x = _arg1.x;
_cUV.y = _arg1.y;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
_cUV = null;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
if (_arg1 != null){
_cUV = _arg1.clone();
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
};
}
public function get bUV():Point{
return (((_bUV)!=null) ? _bUV.clone() : null);
}
public function get num():uint{
return (_num);
}
function removeFromSurface(_arg1:Surface):void{
_arg1.materialOperation.removeSequel(materialOperation);
if (_arg1._material != null){
_mesh.addOperationToScene(materialOperation);
};
_surface = null;
}
public function get id():Object{
return (((_mesh)!=null) ? _mesh.getFaceId(this) : null);
}
public function set bUV(_arg1:Point):void{
if (_bUV != null){
if (_arg1 != null){
if (!_bUV.equals(_arg1)){
_bUV.x = _arg1.x;
_bUV.y = _arg1.y;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
_bUV = null;
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
} else {
if (_arg1 != null){
_bUV = _arg1.clone();
if (_mesh != null){
_mesh.addOperationToScene(uvOperation);
};
};
};
}
private function calculatePlane():void{
var _local1:Vertex = _vertices[0];
var _local2:Point3D = _local1.globalCoords;
_local1 = _vertices[1];
var _local3:Point3D = _local1.globalCoords;
var _local4:Number = (_local3.x - _local2.x);
var _local5:Number = (_local3.y - _local2.y);
var _local6:Number = (_local3.z - _local2.z);
_local1 = _vertices[2];
var _local7:Point3D = _local1.globalCoords;
var _local8:Number = (_local7.x - _local2.x);
var _local9:Number = (_local7.y - _local2.y);
var _local10:Number = (_local7.z - _local2.z);
globalNormal.x = ((_local10 * _local5) - (_local9 * _local6));
globalNormal.y = ((_local8 * _local6) - (_local10 * _local4));
globalNormal.z = ((_local9 * _local4) - (_local8 * _local5));
globalNormal.normalize();
globalOffset = (((_local2.x * globalNormal.x) + (_local2.y * globalNormal.y)) + (_local2.z * globalNormal.z));
}
private function calculateUV():void{
if (((((!(transformOperation.queued)) && (!(addOperation.queued)))) && (!(removeOperation.queued)))){
if (uvMatrix != null){
calculatePrimitiveUVs(primitive);
} else {
removePrimitiveUVs(primitive);
};
};
}
public function get surface():Surface{
return (_surface);
}
private function calculatePrimitiveUVs(_arg1:PolyPrimitive):void{
var _local2:Array;
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:Array;
var _local7:Array;
var _local8:uint;
var _local9:uint;
var _local10:Point3D;
var _local11:Point;
var _local12:Point;
var _local13:Point;
var _local14:Number;
var _local15:Boolean;
var _local16:uint;
var _local17:Boolean;
if (_arg1.front != null){
_local2 = _arg1.points;
_local3 = _arg1.front.points;
_local4 = _arg1.back.points;
_local5 = _arg1.uvs;
_local6 = _arg1.front.uvs;
_local7 = _arg1.back.uvs;
_local8 = 0;
_local9 = 0;
_local15 = true;
_local16 = 0;
while (_local16 < _arg1.num) {
_local17 = true;
_local10 = _local2[_local16];
if (_local10 == _local3[_local8]){
if (_local6[_local8] == null){
_local6[_local8] = _local5[_local16];
};
_local17 = false;
_local8++;
};
if (_local10 == _local4[_local9]){
if (_local7[_local9] == null){
_local7[_local9] = _local5[_local16];
};
_local17 = false;
_local9++;
};
if (_local17){
_local12 = _local5[((_local16)==0) ? (_arg1.num - 1) : (_local16 - 1)];
_local13 = _local5[_local16];
_local14 = (_local15) ? _arg1.splitTime1 : _arg1.splitTime2;
_local11 = _local6[_local8];
if (_local11 == null){
_local11 = new Point((_local12.x + ((_local13.x - _local12.x) * _local14)), (_local12.y + ((_local13.y - _local12.y) * _local14)));
_local6[_local8] = _local11;
_local7[_local9] = _local11;
} else {
_local11.x = (_local12.x + ((_local13.x - _local12.x) * _local14));
_local11.y = (_local12.y + ((_local13.y - _local12.y) * _local14));
};
_local15 = false;
_local8++;
_local9++;
if (_local10 == _local3[_local8]){
if (_local6[_local8] == null){
_local6[_local8] = _local5[_local16];
};
_local8++;
};
if (_local10 == _local4[_local9]){
if (_local7[_local9] == null){
_local7[_local9] = _local5[_local16];
};
_local9++;
};
};
_local16++;
};
if (_local8 < _arg1.front.num){
_local12 = _local5[(_arg1.num - 1)];
_local13 = _local5[0];
_local14 = (_local15) ? _arg1.splitTime1 : _arg1.splitTime2;
_local11 = _local6[_local8];
if (_local11 == null){
_local11 = new Point((_local12.x + ((_local13.x - _local12.x) * _local14)), (_local12.y + ((_local13.y - _local12.y) * _local14)));
_local6[_local8] = _local11;
_local7[_local9] = _local11;
} else {
_local11.x = (_local12.x + ((_local13.x - _local12.x) * _local14));
_local11.y = (_local12.y + ((_local13.y - _local12.y) * _local14));
};
};
calculatePrimitiveUVs(_arg1.front);
calculatePrimitiveUVs(_arg1.back);
};
}
function removeVertices():void{
var _local2:Vertex;
var _local1:uint;
while (_local1 < _num) {
_local2 = _vertices.pop();
primitive.points.pop();
_local2.removeFromFace(this);
_local1++;
};
_num = 0;
}
function addToSurface(_arg1:Surface):void{
_arg1.materialOperation.addSequel(materialOperation);
if (((!((_mesh == null))) && (((((!((_surface == null))) && (!((_surface._material == _arg1._material))))) || ((((_surface == null)) && (!((_arg1._material == null))))))))){
_mesh.addOperationToScene(materialOperation);
};
_surface = _arg1;
}
public function get aUV():Point{
return (((_aUV)!=null) ? _aUV.clone() : null);
}
private function removePrimitive(_arg1:PolyPrimitive):void{
if (_arg1.back != null){
removePrimitive(_arg1.back);
removePrimitive(_arg1.front);
} else {
_mesh._scene.removePrimitives[_arg1] = true;
};
}
public function get cUV():Point{
return (((_cUV)!=null) ? _cUV.clone() : null);
}
private function removePrimitiveUVs(_arg1:PolyPrimitive):void{
var _local2:uint;
while (_local2 < _arg1.num) {
_arg1.uvs[_local2] = null;
_local2++;
};
if (_arg1.front != null){
removePrimitiveUVs(_arg1.front);
removePrimitiveUVs(_arg1.back);
};
}
function removeFromScene(_arg1:Scene3D):void{
_arg1.removeOperation(addOperation);
_arg1.removeOperation(transformOperation);
_arg1.removeOperation(moveOperation);
_arg1.removeOperation(materialOperation);
_arg1.addOperation(removeOperation);
_arg1.addOperation(_arg1.calculatePrimitivesOperation);
removePrimitive(primitive);
primitive.back = null;
primitive.front = null;
transformPrimitiveOperation.removeSequel(_arg1.calculatePrimitivesOperation);
}
public function toString():String{
var _local3:Vertex;
var _local1:String = (("[Face ID:" + id) + ((_num)>0) ? " vertices:" : "");
var _local2:uint;
while (_local2 < _num) {
_local3 = _vertices[_local2];
_local1 = (_local1 + (_local3.id + ((_local2)<(_num - 1)) ? ", " : ""));
_local2++;
};
_local1 = (_local1 + "]");
return (_local1);
}
public function get mesh():Mesh{
return (_mesh);
}
public function get edgeJoinedFaces():Set{
var _local3:Vertex;
var _local4:Vertex;
var _local5:*;
var _local6:Face;
var _local1:Set = new Set(true);
var _local2:uint;
while (_local2 < _num) {
_local3 = _vertices[_local2];
_local4 = _vertices[((_local2)<(_num - 1)) ? (_local2 + 1) : 0];
for (_local5 in _local3._faces) {
_local6 = _local5;
if (((!((_local6 == this))) && ((_local6._vertices.indexOf(_local4) >= 0)))){
_local1[_local6] = true;
};
};
_local2++;
};
return (_local1);
}
private function transformPrimitive():void{
removePrimitive(primitive);
primitive.back = null;
primitive.front = null;
primitive.mobile = _mesh._mobile;
_mesh._scene.addPrimitives[primitive] = true;
}
public function get normal():Point3D{
var _local12:Number;
var _local1:Point3D = new Point3D();
var _local2:Vertex = _vertices[0];
var _local3:Point3D = _local2.coords;
_local2 = _vertices[1];
var _local4:Point3D = _local2.coords;
var _local5:Number = (_local4.x - _local3.x);
var _local6:Number = (_local4.y - _local3.y);
var _local7:Number = (_local4.z - _local3.z);
_local2 = _vertices[2];
var _local8:Point3D = _local2.coords;
var _local9:Number = (_local8.x - _local3.x);
var _local10:Number = (_local8.y - _local3.y);
var _local11:Number = (_local8.z - _local3.z);
_local1.x = ((_local11 * _local6) - (_local10 * _local7));
_local1.y = ((_local9 * _local7) - (_local11 * _local5));
_local1.z = ((_local10 * _local5) - (_local9 * _local6));
if (((((!((_local1.x == 0))) || (!((_local1.y == 0))))) || (!((_local1.z == 0))))){
_local12 = Math.sqrt((((_local1.x * _local1.x) + (_local1.y * _local1.y)) + (_local1.z * _local1.z)));
_local1.x = (_local1.x / _local12);
_local1.y = (_local1.y / _local12);
_local1.z = (_local1.z / _local12);
};
return (_local1);
}
public function getUV(_arg1:Point3D):Point{
return (getUVFast(_arg1, normal));
}
public function get vertices():Array{
return (new Array().concat(_vertices));
}
public function getUVFast(_arg1:Point3D, _arg2:Point3D):Point{
var _local3:uint;
if ((((((_aUV == null)) || ((_bUV == null)))) || ((_cUV == null)))){
return (null);
};
if (((_arg2.x)<0) ? -(_arg2.x) : _arg2.x > ((_arg2.y)<0) ? -(_arg2.y) : _arg2.y){
if (((_arg2.x)<0) ? -(_arg2.x) : _arg2.x > ((_arg2.z)<0) ? -(_arg2.z) : _arg2.z){
_local3 = 0;
} else {
_local3 = 2;
};
} else {
if (((_arg2.y)<0) ? -(_arg2.y) : _arg2.y > ((_arg2.z)<0) ? -(_arg2.z) : _arg2.z){
_local3 = 1;
} else {
_local3 = 2;
};
};
var _local4:Vertex = _vertices[0];
var _local5:Point3D = _local4._coords;
_local4 = _vertices[1];
var _local6:Point3D = _local4._coords;
_local4 = _vertices[2];
var _local7:Point3D = _local4._coords;
var _local8:Number = ((_local3)==0) ? (_local6.y - _local5.y) : (_local6.x - _local5.x);
var _local9:Number = ((_local3)==2) ? (_local6.y - _local5.y) : (_local6.z - _local5.z);
var _local10:Number = ((_local3)==0) ? (_local7.y - _local5.y) : (_local7.x - _local5.x);
var _local11:Number = ((_local3)==2) ? (_local7.y - _local5.y) : (_local7.z - _local5.z);
var _local12:Number = ((_local8 * _local11) - (_local10 * _local9));
var _local13:Number = ((_local3)==0) ? (_arg1.y - _local5.y) : (_arg1.x - _local5.x);
var _local14:Number = ((_local3)==2) ? (_arg1.y - _local5.y) : (_arg1.z - _local5.z);
var _local15:Number = (((_local13 * _local11) - (_local10 * _local14)) / _local12);
var _local16:Number = (((_local8 * _local14) - (_local13 * _local9)) / _local12);
var _local17:Number = (_bUV.x - _aUV.x);
var _local18:Number = (_bUV.y - _aUV.y);
var _local19:Number = (_cUV.x - _aUV.x);
var _local20:Number = (_cUV.y - _aUV.y);
return (new Point(((_aUV.x + (_local17 * _local15)) + (_local19 * _local16)), ((_aUV.y + (_local18 * _local15)) + (_local20 * _local16))));
}
function removeFromMesh(_arg1:Mesh):void{
_arg1.moveOperation.removeSequel(moveOperation);
_arg1.transformOperation.removeSequel(transformOperation);
_arg1.mobileOperation.removeSequel(transformPrimitiveOperation);
_mesh = null;
}
function addToScene(_arg1:Scene3D):void{
_arg1.removeOperation(removeOperation);
_arg1.addOperation(addOperation);
_arg1.addOperation(_arg1.calculatePrimitivesOperation);
_arg1.addPrimitives.add(primitive);
if (_mesh != null){
primitive.mobile = _mesh._mobile;
};
transformPrimitiveOperation.addSequel(_arg1.calculatePrimitivesOperation);
}
}
}//package com.alternativagame.engine3d
Section 39
//FillMaterial (com.alternativagame.engine3d.FillMaterial)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.display.*;
public class FillMaterial extends SurfaceMaterial {
var _color:uint;
private static var gfx:Graphics;
private static var focusDistance:Number;
private static var points1:Array = new Array();
private static var points2:Array = new Array();
public function FillMaterial(_arg1:uint=0x7F7F7F, _arg2:Number=1, _arg3:String="normal"):void{
super(_arg2, _arg3);
_color = _arg1;
}
private function clip(_arg1:uint, _arg2:Array, _arg3:Array, _arg4:Number, _arg5:Number, _arg6:Number):uint{
var _local7:Number;
var _local9:Point3D;
var _local13:Point3D;
var _local14:Number;
var _local8:uint;
var _local10:Point3D = _arg2[(_arg1 - 1)];
var _local11:Number = (((_arg4 * _local10.x) + (_arg5 * _local10.y)) + (_arg6 * _local10.z));
var _local12:uint;
while (_local12 < _arg1) {
_local13 = _arg2[_local12];
_local14 = (((_arg4 * _local13.x) + (_arg5 * _local13.y)) + (_arg6 * _local13.z));
if (_local14 > 0){
if (_local11 <= 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new Point3D((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
};
_local8++;
};
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = _local13.clone();
_arg3[_local8] = _local9;
} else {
_local9.copy(_local13);
};
_local8++;
} else {
if (_local11 > 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new Point3D((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
};
_local8++;
};
};
_local11 = _local14;
_local10 = _local13;
_local12++;
};
return (_local8);
}
public function set color(_arg1:uint):void{
if (_color != _arg1){
_color = _arg1;
addDrawParamsOperationToScene();
};
}
public function get color():uint{
return (_color);
}
override function draw(_arg1:Skin):void{
var _local6:Point3D;
var _local7:uint;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Point3D;
gfx = _arg1.gfx;
var _local2:Face = _arg1.face;
var _local3:Camera3D = _arg1.camera;
var _local4:uint = _arg1._primitive.num;
var _local5:Array = _arg1._primitive.points;
if (_local3._fov == 0){
gfx.beginFill(_color);
_local6 = _local3.calculateCameraCoord(_local5[0]);
gfx.moveTo(_local6.x, _local6.y);
_local7 = 1;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
gfx.lineTo(_local6.x, _local6.y);
_local7++;
};
} else {
focusDistance = _local3.focusDistance;
_local7 = 0;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
_local13 = points1[_local7];
if (_local13 == null){
_local13 = _local6.clone();
points1[_local7] = _local13;
} else {
_local13.copy(_local6);
};
_local7++;
};
_local8 = -(focusDistance);
_local9 = _local3._view.halfWidth;
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local8 = (_local8 / _local10);
_local9 = (_local9 / _local10);
_local4 = clip(_local4, points1, points2, _local8, 0, _local9);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, -(_local8), 0, _local9);
if (_local4 < 3){
return;
};
_local11 = -(focusDistance);
_local9 = _local3._view.halfHeight;
_local10 = Math.sqrt(((_local11 * _local11) + (_local9 * _local9)));
_local11 = (_local11 / _local10);
_local9 = (_local9 / _local10);
_local4 = clip(_local4, points1, points2, 0, _local11, _local9);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, 0, -(_local11), _local9);
if (_local4 < 3){
return;
};
gfx.beginFill(_color);
_local6 = points1[0];
_local12 = (focusDistance / _local6.z);
gfx.moveTo((_local6.x * _local12), (_local6.y * _local12));
_local7 = 1;
while (_local7 < _local4) {
_local6 = points1[_local7];
_local12 = (focusDistance / _local6.z);
gfx.lineTo((_local6.x * _local12), (_local6.y * _local12));
_local7++;
};
};
}
override public function clone():Material{
return (new FillMaterial(_color, _alpha, _blendMode));
}
}
}//package com.alternativagame.engine3d
Section 40
//Material (com.alternativagame.engine3d.Material)
package com.alternativagame.engine3d {
public class Material {
public function clone():Material{
return (new Material());
}
}
}//package com.alternativagame.engine3d
Section 41
//Mesh (com.alternativagame.engine3d.Mesh)
package com.alternativagame.engine3d {
import flash.geom.*;
import com.alternativagame.utility.*;
public class Mesh extends Object3D {
var _surfaces:Object;
var _vertices:Object;
var _faces:Object;
private static var counter:uint = 0;
public function Mesh(_arg1:String=null){
_vertices = new Object();
_faces = new Object();
_surfaces = new Object();
super(_arg1);
}
public function removeFace(_arg1:Object):Face{
var _local2 = (_arg1 is Face);
if (_arg1 == null){
throw (new Error(("Невозможно удалить из меша " + (_local2) ? "null-грань" : "грань с null-идентификатором")));
};
if (_local2){
if (Face(_arg1)._mesh != this){
throw (new Error("Невозможно удалить грань из меша, т.к. она в нём не находится"));
};
} else {
if (_faces[_arg1] == undefined){
throw (new Error("Невозможно удалить грань из меша, т.к. грани с таким идентификатором в меше нет"));
};
};
var _local3:Face = (_local2) ? Face(_arg1) : _faces[_arg1];
var _local4:Object = (_local2) ? getFaceId(Face(_arg1)) : _arg1;
if (_scene != null){
_local3.removeFromScene(_scene);
};
_local3.removeVertices();
if (_local3._surface != null){
_local3._surface._faces.remove(_local3);
_local3.removeFromSurface(_local3._surface);
};
_local3.removeFromMesh(this);
delete _faces[_local4];
return (_local3);
}
public function setMaterialToAllSurfaces(_arg1:SurfaceMaterial):void{
var _local2:Surface;
for each (_local2 in _surfaces) {
_local2.material = ((_arg1)!=null) ? SurfaceMaterial(_arg1.clone()) : null;
};
}
public function removeVertex(_arg1:Object):Vertex{
var _local2 = (_arg1 is Vertex);
if (_arg1 == null){
throw (new Error(("Невозможно удалить из меша " + (_local2) ? "null-вершину" : "вершину с null-идентификатором")));
};
if (_local2){
if (Vertex(_arg1)._mesh != this){
throw (new Error("Невозможно удалить вершину из меша, т.к. она в нём не находится"));
};
} else {
if (_vertices[_arg1] == undefined){
throw (new Error("Невозможно удалить вершину из меша, т.к. вершины с таким идентификатором в меше нет"));
};
};
var _local3:Vertex = (_local2) ? Vertex(_arg1) : _vertices[_arg1];
var _local4:Object = (_local2) ? getVertexId(Vertex(_arg1)) : _arg1;
if (_scene != null){
_local3.removeFromScene(_scene);
};
_local3.removeFromMesh(this);
delete _vertices[_local4];
return (_local3);
}
public function removeSurface(_arg1:Object):Surface{
var _local2 = (_arg1 is Surface);
if (_arg1 == null){
throw (new Error(("Невозможно удалить из меша " + (_local2) ? "null-поверхность" : "поверхность с null-идентификатором")));
};
if (_local2){
if (Surface(_arg1)._mesh != this){
throw (new Error("Невозможно удалить поверхность из меша, т.к. она в нём не находится"));
};
} else {
if (_surfaces[_arg1] == undefined){
throw (new Error("Невозможно удалить поверхность из меша, т.к. поверхности с таким идентификатором в меше нет"));
};
};
var _local3:Surface = (_local2) ? Surface(_arg1) : _surfaces[_arg1];
var _local4:Object = (_local2) ? getSurfaceId(Surface(_arg1)) : _arg1;
if (_scene != null){
_local3.removeFromScene(_scene);
};
_local3.removeFaces();
_local3.removeFromMesh(this);
delete _surfaces[_local4];
return (_local3);
}
public function addSurface(_arg1:Array=null, _arg2:Object=null):Surface{
var _local4:uint;
var _local5:uint;
var _local6:uint;
if (_arg2 != null){
if (_surfaces[_arg2] != undefined){
throw (new Error("Невозможно создать поверхность, т.к. уже есть поверхность с таким идентификатором"));
};
} else {
_local4 = 0;
while (_surfaces[_local4] != undefined) {
_local4++;
};
_arg2 = _local4;
};
var _local3:Surface = new Surface();
if (_scene != null){
_local3.addToScene(_scene);
};
_local3.addToMesh(this);
_surfaces[_arg2] = _local3;
if (_arg1 != null){
_local5 = _arg1.length;
_local6 = 0;
while (_local6 < _local5) {
_local3.addFace(_arg1[_local6]);
_local6++;
};
};
return (_local3);
}
public function getFaceId(_arg1:Face):Object{
var _local2:Object;
if (_arg1._mesh != this){
throw (new Error("Невозможно получить ID грани, т.к. грань не находится в меше"));
};
for (_local2 in _faces) {
if (_faces[_local2] == _arg1){
return (_local2);
};
};
return (null);
}
public function setMaterialToSurface(_arg1:SurfaceMaterial, _arg2:Object):void{
var _local3 = (_arg2 is Surface);
if (_arg2 == null){
throw (new Error(("Невозможно назначить материал " + (_local3) ? "null-поверхности" : "поверхности с null-идентификатором")));
};
if (_local3){
if (Surface(_arg2)._mesh != this){
throw (new Error("Невозможно назначить материал поверхности, т.к. она не находится в меше"));
};
} else {
if (_surfaces[_arg2] == undefined){
throw (new Error("Невозможно назначить материал поверхности, т.к. поверхности с таким идентификатором в меше нет"));
};
};
var _local4:Surface = (_local3) ? Surface(_arg2) : _surfaces[_arg2];
_local4.material = _arg1;
}
override function setScene(_arg1:Scene3D):void{
var _local2:Vertex;
var _local3:Face;
var _local4:Surface;
if (_scene != _arg1){
if (_arg1 != null){
for each (_local2 in _vertices) {
_local2.addToScene(_arg1);
};
for each (_local3 in _faces) {
_local3.addToScene(_arg1);
};
for each (_local4 in _surfaces) {
_local4.addToScene(_arg1);
};
} else {
for each (_local2 in _vertices) {
_local2.removeFromScene(_scene);
};
for each (_local3 in _faces) {
_local3.removeFromScene(_scene);
};
for each (_local4 in _surfaces) {
_local4.removeFromScene(_scene);
};
};
};
super.setScene(_arg1);
}
public function getVertexById(_arg1:Object):Vertex{
if (_vertices[_arg1] == undefined){
throw (new Error("Невозможно получить вершину, т.к. вершины с таким идентификатором в меше нет"));
};
return (_vertices[_arg1]);
}
public function getFaceById(_arg1:Object):Face{
if (_faces[_arg1] == undefined){
throw (new Error("Невозможно получить грань, т.к. грани с таким идентификатором в меше нет"));
};
return (_faces[_arg1]);
}
public function getVertexId(_arg1:Vertex):Object{
var _local2:Object;
if (_arg1._mesh != this){
throw (new Error("Невозможно получить ID вершины, т.к. вершина не находится в меше"));
};
for (_local2 in _vertices) {
if (_vertices[_local2] == _arg1){
return (_local2);
};
};
return (null);
}
public function hasFace(_arg1:Object):Boolean{
if ((_arg1 is Face)){
return ((_arg1._mesh == this));
};
return (!((_faces[_arg1] == undefined)));
}
public function hasVertex(_arg1:Object):Boolean{
if ((_arg1 is Vertex)){
return ((_arg1._mesh == this));
};
return (!((_vertices[_arg1] == undefined)));
}
public function addVertex(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Object=null):Vertex{
var _local6:uint;
if (_arg4 != null){
if (_vertices[_arg4] != undefined){
throw (new Error("Невозможно создать вершину, т.к. уже есть вершина с таким идентификатором"));
};
} else {
_local6 = 0;
while (_vertices[_local6] != undefined) {
_local6++;
};
_arg4 = _local6;
};
var _local5:Vertex = new Vertex(_arg1, _arg2, _arg3);
if (_scene != null){
_local5.addToScene(_scene);
};
_local5.addToMesh(this);
_vertices[_arg4] = _local5;
return (_local5);
}
public function get surfaces():Object{
return (ObjectUtility.clone(_surfaces));
}
public function setUVsToFace(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Object):void{
var _local5 = (_arg4 is Face);
if (_arg4 == null){
throw (new Error(("Невозможно назначить UV-координаты " + (_local5) ? "null-грани" : "грани с null-идентификатором")));
};
if (_local5){
if (Face(_arg4)._mesh != this){
throw (new Error("Невозможно назначить UV-координаты грани, т.к. она не находится в меше"));
};
} else {
if (_faces[_arg4] == undefined){
throw (new Error("Невозможно назначить UV-координаты грани, т.к. грани с таким идентификатором в меше нет"));
};
};
var _local6:Face = (_local5) ? Face(_arg4) : _faces[_arg4];
_local6.aUV = _arg1;
_local6.bUV = _arg2;
_local6.cUV = _arg3;
}
public function getSurfaceById(_arg1:Object):Surface{
if (_surfaces[_arg1] == undefined){
throw (new Error("Невозможно получить поверхность, т.к. поверхности с таким идентификатором в меше нет"));
};
return (_surfaces[_arg1]);
}
override protected function defaultName():String{
return (("mesh" + ++counter));
}
public function addFace(_arg1:Array, _arg2:Object=null):Face{
var _local5:Vertex;
var _local8:uint;
if (_arg1 == null){
throw (new Error("Невозможно создать грань без точек"));
};
if (_arg2 != null){
if (_faces[_arg2] != undefined){
throw (new Error("Невозможно создать грань, т.к. уже есть грань с таким идентификатором"));
};
} else {
_local8 = 0;
while (_faces[_local8] != undefined) {
_local8++;
};
_arg2 = _local8;
};
var _local3:uint = _arg1.length;
if (_local3 < 3){
throw (new Error("Невозможно создать грань, т.к. необходимо не менее трёх вершин"));
};
var _local4:Array = new Array();
var _local6:uint;
while (_local6 < _local3) {
if ((_arg1[_local6] is Vertex)){
_local5 = _arg1[_local6];
if (_local5._mesh != this){
throw (new Error("Невозможно создать грань, т.к. необходимо, чтобы все вершины находились в этом меше"));
};
} else {
_local5 = _vertices[_arg1[_local6]];
if (_local5 == null){
throw (new Error("Невозможно создать грань, т.к. одна из вершин по указанному идентификатору не найдена"));
};
};
_local4.push(_local5);
_local6++;
};
var _local7:Face = new Face(_local4);
if (_scene != null){
_local7.addToScene(_scene);
};
_local7.addToMesh(this);
_faces[_arg2] = _local7;
return (_local7);
}
public function getSurfaceId(_arg1:Surface):Object{
var _local2:Object;
if (_arg1._mesh != this){
throw (new Error("Невозможно получить ID поверхности, т.к. поверхность не находится в меше"));
};
for (_local2 in _surfaces) {
if (_surfaces[_local2] == _arg1){
return (_local2);
};
};
return (null);
}
public function get faces():Object{
return (ObjectUtility.clone(_faces));
}
public function get vertices():Object{
return (ObjectUtility.clone(_vertices));
}
public function hasSurface(_arg1:Object):Boolean{
if ((_arg1 is Surface)){
return ((_arg1._mesh == this));
};
return (!((_surfaces[_arg1] == undefined)));
}
override public function toString():String{
return ((((((((("[" + ObjectUtility.getClassName(this)) + " ") + _name) + " vertices: ") + ObjectUtility.length(_vertices)) + " faces: ") + ObjectUtility.length(_faces)) + "]"));
}
}
}//package com.alternativagame.engine3d
Section 42
//Object3D (com.alternativagame.engine3d.Object3D)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.utils.*;
import com.alternativagame.utility.*;
public class Object3D {
var _scene:Scene3D;
var moveOperation:Operation;
var globalCoords:Point3D;
var locationOperation:Operation;
var _solid:Boolean;// = false
var _coords:Point3D;
var _rotX:Number;// = 0
var _mobile:uint;// = 0
var removeOperation:Operation;
var addOperation:Operation;
private var _solidObjects:Dictionary;
var _parent:Object3D;
var transformMatrix:Matrix3D;
var _rotY:Number;// = 0
var _objects:Set;
var transformOperation:Operation;
var calculateTransformOperation:Operation;
var mobileOperation:Operation;
var _name:String;
var _scaleX:Number;// = 1
var _scaleY:Number;// = 1
var _rotZ:Number;// = 0
var _solidParent:Object3D;
var _scaleZ:Number;// = 1
private static var counter:uint = 0;
public function Object3D(_arg1:String=null){
addOperation = new Operation("add", this);
removeOperation = new Operation("remove", this);
locationOperation = new Operation("location", this);
transformOperation = new Operation("transform", this);
moveOperation = new Operation("move", this);
mobileOperation = new Operation("mobile", this);
calculateTransformOperation = new Operation("calculateTransform", this, calculateTransform, Operation.OBJECT_TRANSFORMATION);
_objects = new Set();
_solidObjects = new Dictionary(true);
_coords = new Point3D();
transformMatrix = new Matrix3D();
globalCoords = new Point3D();
super();
_solidParent = this;
addSolidObject(this);
_name = ((_arg1)!=null) ? _arg1 : defaultName();
addOperation.addSequel(calculateTransformOperation);
locationOperation.addSequel(calculateTransformOperation);
transformOperation.addSequel(calculateTransformOperation);
moveOperation.addSequel(calculateTransformOperation);
}
public function get z():Number{
return (_coords.z);
}
public function get rotX():Number{
return (_rotX);
}
public function get rotZ():Number{
return (_rotZ);
}
public function set rotX(_arg1:Number):void{
if (_rotX != _arg1){
_rotX = _arg1;
addOperationToScene(transformOperation);
};
}
protected function removeFromScene(_arg1:Scene3D):void{
_arg1.removeOperation(addOperation);
_arg1.removeOperation(locationOperation);
_arg1.removeOperation(transformOperation);
_arg1.removeOperation(moveOperation);
_arg1.removeOperation(mobileOperation);
_arg1.addOperation(removeOperation);
mobileOperation.removeSequel(_arg1.calculatePrimitivesOperation);
}
protected function defaultName():String{
return (("object" + ++counter));
}
public function get scene():Scene3D{
return (_scene);
}
public function get objects():Set{
return (_objects.clone());
}
function setSolidParent(_arg1:Object3D):void{
var _local2:*;
var _local3:Object3D;
_solidParent.removeSolidObject(this);
_arg1.addSolidObject(this);
if (!_solid){
for (_local2 in _objects) {
_local3 = _local2;
_local3.setSolidParent(_arg1);
};
};
_solidParent = _arg1;
}
public function set scaleX(_arg1:Number):void{
if (_scaleX != _arg1){
_scaleX = _arg1;
addOperationToScene(transformOperation);
};
}
public function set name(_arg1:String):void{
_name = _arg1;
}
public function get coords():Point3D{
return (_coords.clone());
}
public function set scaleZ(_arg1:Number):void{
if (_scaleZ != _arg1){
_scaleZ = _arg1;
addOperationToScene(transformOperation);
};
}
public function get mobile():uint{
return (_mobile);
}
public function get name():String{
return (_name);
}
public function set scaleY(_arg1:Number):void{
if (_scaleY != _arg1){
_scaleY = _arg1;
addOperationToScene(transformOperation);
};
}
private function calculateTransform():void{
if (((((transformOperation.queued) || (locationOperation.queued))) || (addOperation.queued))){
transformMatrix.toTransform(_coords.x, _coords.y, _coords.z, _rotX, _rotY, _rotZ, _scaleX, _scaleY, _scaleZ);
if (_parent != null){
transformMatrix.combine(_parent.transformMatrix);
};
globalCoords.x = transformMatrix.d;
globalCoords.y = transformMatrix.h;
globalCoords.z = transformMatrix.l;
} else {
globalCoords.copy(coords);
if (_parent != null){
globalCoords.transform(_parent.transformMatrix);
};
transformMatrix.offset(globalCoords.x, globalCoords.y, globalCoords.z);
};
}
public function get solid():Boolean{
return (_solid);
}
function removeSolidObject(_arg1:Object3D):void{
var _local3:Class;
var _local2:Array = ObjectUtility.getClassTree(_arg1, Object3D);
var _local4:uint;
while (_local4 < _local2.length) {
_local3 = _local2[_local4];
Set(_solidObjects[_local3]).remove(_arg1);
if (Set(_solidObjects[_local3]).isEmpty()){
delete _solidObjects[_local3];
};
_local4++;
};
}
function addSolidObject(_arg1:Object3D):void{
var _local3:Class;
var _local2:Array = ObjectUtility.getClassTree(_arg1, Object3D);
var _local4:uint;
while (_local4 < _local2.length) {
_local3 = _local2[_local4];
if (_solidObjects[_local3] == undefined){
_solidObjects[_local3] = new Set();
};
_solidObjects[_local3].add(_arg1);
_local4++;
};
}
public function get parent():Object3D{
return (_parent);
}
public function get solidParent():Object3D{
return (_solidParent);
}
function addOperationToScene(_arg1:Operation):void{
if (_scene != null){
_scene.addOperation(_arg1);
};
}
public function set coords(_arg1:Point3D):void{
if (!_coords.equals(_arg1)){
_coords.copy(_arg1);
addOperationToScene(moveOperation);
};
}
function setParent(_arg1:Object3D):void{
if (_parent != null){
removeParentSequels();
};
_parent = _arg1;
if (_arg1 != null){
addParentSequels();
setSolidParent((_arg1._solid) ? _arg1 : _arg1._solidParent);
} else {
setSolidParent(this);
};
}
public function addObject(_arg1:Object3D):void{
var _local2:Object3D;
if (_arg1 != null){
if (_arg1._parent != this){
if (_arg1 != this){
if (_arg1._parent != null){
_arg1._parent._objects.remove(_arg1);
} else {
if (((!((_arg1._scene == null))) && ((_arg1._scene._root == _arg1)))){
_arg1._scene.root = null;
};
};
if (_arg1._scene == _scene){
_local2 = _parent;
while (_local2 != null) {
if (_arg1 == _local2){
throw (new Error(("Невозможно присоединить родительский объект " + _arg1)));
};
_local2 = _local2._parent;
};
};
_objects.add(_arg1);
_arg1.setParent(this);
_arg1.setLevel((calculateTransformOperation.level + 1));
_arg1.setScene(_scene);
} else {
throw (new Error("Невозможно присоединить себя к себе"));
};
} else {
throw (new Error("Невозможно присоединить уже присоединённый объект"));
};
} else {
throw (new Error("Невозможно присоединить null-объект"));
};
}
private function addParentSequels():void{
_parent.moveOperation.addSequel(moveOperation);
_parent.transformOperation.addSequel(transformOperation);
}
public function get scaleX():Number{
return (_scaleX);
}
private function removeParentSequels():void{
_parent.moveOperation.removeSequel(moveOperation);
_parent.transformOperation.removeSequel(transformOperation);
}
public function set mobile(_arg1:uint):void{
if (_mobile != _arg1){
_mobile = _arg1;
addOperationToScene(mobileOperation);
};
}
public function set solid(_arg1:Boolean):void{
var _local2:Object3D;
var _local3:*;
var _local4:Object3D;
if (_solid != _arg1){
_solid = _arg1;
if (_arg1){
_local2 = this;
} else {
_local2 = _solidParent;
};
for (_local3 in _objects) {
_local4 = _local3;
_local4.setSolidParent(_local2);
};
};
}
public function get scaleZ():Number{
return (_scaleZ);
}
function setScene(_arg1:Scene3D):void{
var _local2:*;
var _local3:Object3D;
if (_scene != _arg1){
if (_scene != null){
removeFromScene(_scene);
};
if (_arg1 != null){
addToScene(_arg1);
};
_scene = _arg1;
} else {
addOperationToScene(locationOperation);
};
for (_local2 in _objects) {
_local3 = _local2;
_local3.setScene(_scene);
};
}
function getSolidObjects(_arg1:Class=null):Set{
if (((_solid) || ((_parent == null)))){
_arg1 = ((_arg1)==null) ? Object3D : _arg1;
if (_solidObjects[_arg1] != undefined){
return (Set(_solidObjects[_arg1]));
};
return (new Set());
//unresolved jump
};
return (solidParent.getSolidObjects(_arg1));
}
public function get rotY():Number{
return (_rotY);
}
public function removeObject(_arg1:Object3D):void{
if (_arg1 != null){
if (_arg1._parent == this){
_objects.remove(_arg1);
_arg1.setParent(null);
_arg1.setScene(null);
} else {
throw (new Error("Невозможно удалить связь с объектом, т.к. он не является дочерним"));
};
} else {
throw (new Error("Невозможно удалить дочернюю связь с null-объектом"));
};
}
public function set rotY(_arg1:Number):void{
if (_rotY != _arg1){
_rotY = _arg1;
addOperationToScene(transformOperation);
};
}
public function get scaleY():Number{
return (_scaleY);
}
public function set rotZ(_arg1:Number):void{
if (_rotZ != _arg1){
_rotZ = _arg1;
addOperationToScene(transformOperation);
};
}
public function get solidObjects():Set{
return (getSolidObjects().clone());
}
protected function addToScene(_arg1:Scene3D):void{
_arg1.removeOperation(removeOperation);
_arg1.addOperation(addOperation);
mobileOperation.addSequel(_arg1.calculatePrimitivesOperation);
}
public function set y(_arg1:Number):void{
if (_coords.y != _arg1){
_coords.y = _arg1;
addOperationToScene(moveOperation);
};
}
public function toString():String{
return ((((("[" + ObjectUtility.getClassName(this)) + " ") + _name) + "]"));
}
public function set z(_arg1:Number):void{
if (_coords.z != _arg1){
_coords.z = _arg1;
addOperationToScene(moveOperation);
};
}
public function set x(_arg1:Number):void{
if (_coords.x != _arg1){
_coords.x = _arg1;
addOperationToScene(moveOperation);
};
}
public function get x():Number{
return (_coords.x);
}
public function get y():Number{
return (_coords.y);
}
function setLevel(_arg1:uint):void{
var _local2:*;
var _local3:Object3D;
calculateTransformOperation.level = _arg1;
for (_local2 in _objects) {
_local3 = _local2;
_local3.setLevel((_arg1 + 1));
};
}
function removeOperationFromScene(_arg1:Operation):void{
if (_scene != null){
_scene.removeOperation(_arg1);
};
}
}
}//package com.alternativagame.engine3d
Section 43
//Operation (com.alternativagame.engine3d.Operation)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
public class Operation {
public var queued:Boolean;// = false
var method:Function;
public var priority:uint;
var name:String;
public var level:uint;// = 0
private var sequel:Operation;
private var sequels:Set;
var object:Object;
public static const SCENE_CLEAR_PRIMITIVES:uint = 11;
public static const FACE_UV:uint = 3;
public static const VERTEX_TRANSFORMATION:uint = 1;
public static const CAMERA_CALCULATE_SKINS:uint = 10;
public static const OBJECT_TRANSFORMATION:uint = 0;
public static const FACE_TRANSFORM:uint = 4;
public static const SKIN_DRAW:uint = 9;
public static const CAMERA_CLEAR_CALCULATED:uint = 8;
public static const CAMERA_MATRIX:uint = 7;
public static const SCENE_CALCULATE_PRIMITIVES:uint = 5;
public static const FACE_PLANE:uint = 2;
public static const FACE_CALCULATE_UV:uint = 6;
public function Operation(_arg1:String, _arg2:Object=null, _arg3:Function=null, _arg4:uint=0, _arg5:uint=0){
this.object = _arg2;
this.method = _arg3;
this.name = _arg1;
this.priority = _arg4;
this.level = _arg5;
}
function addSequel(_arg1:Operation):void{
if (sequel == null){
if (sequels == null){
sequel = _arg1;
} else {
sequels[_arg1] = true;
};
} else {
if (sequel != _arg1){
sequels = new Set(true);
sequels[sequel] = true;
sequels[_arg1] = true;
sequel = null;
};
};
}
public function toString():String{
return ((((((((("[Operation " + priority) + "/") + level) + " ") + object) + ".") + name) + "]"));
}
function removeSequel(_arg1:Operation):void{
var _local2:*;
var _local3:Boolean;
if (sequel == null){
if (sequels != null){
delete sequels[_arg1];
_local3 = false;
for (_local2 in sequels) {
if (_local3){
_local3 = false;
break;
};
_local3 = true;
};
if (_local3){
sequel = _local2;
sequels = null;
};
};
} else {
if (sequel == _arg1){
sequel = null;
};
};
}
function collectSequels(_arg1:Array):void{
var _local2:*;
var _local3:Operation;
if (sequel == null){
for (_local2 in sequels) {
_local3 = _local2;
if (!_local3.queued){
_arg1.push(_local3);
_local3.queued = true;
_local3.collectSequels(_arg1);
};
};
} else {
if (!sequel.queued){
_arg1.push(sequel);
sequel.queued = true;
sequel.collectSequels(_arg1);
};
};
}
}
}//package com.alternativagame.engine3d
Section 44
//PolyPrimitive (com.alternativagame.engine3d.PolyPrimitive)
package com.alternativagame.engine3d {
public class PolyPrimitive {
var sibling:PolyPrimitive;
var node:BSPNode;
var splitTime1:Number;
var num:uint;
var splitTime2:Number;
public var splits:uint;
var face:Face;
public var mobile:uint;
var points:Array;
var back:PolyPrimitive;
var front:PolyPrimitive;
var parent:PolyPrimitive;
var uvs:Array;
private static var collector:Array = new Array();
public function PolyPrimitive(){
points = new Array();
uvs = new Array();
super();
}
public function toString():String{
return ((("[Primitive " + face._mesh._name) + "]"));
}
static function destroyPolyPrimitive(_arg1:PolyPrimitive):void{
_arg1.face = null;
var _local2:uint;
while (_local2 < _arg1.num) {
_arg1.points.pop();
_arg1.uvs.pop();
_local2++;
};
collector.push(_arg1);
}
static function createPolyPrimitive():PolyPrimitive{
var _local1:PolyPrimitive = collector.pop();
if (_local1 == null){
_local1 = new (PolyPrimitive);
};
return (_local1);
}
}
}//package com.alternativagame.engine3d
Section 45
//Scene3D (com.alternativagame.engine3d.Scene3D)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import com.alternativagame.engine3d.collision.*;
public class Scene3D {
const planeOffsetTreshold:Number = 0.1;
private var collisionPlanePoint:Point3D;
private var removeNodes:Set;
var removePrimitives:Set;
var calculatePrimitivesOperation:Operation;
private var collisionPoint:Point3D;
private var collisionVector:Point3D;
private var operationSort:Array;
var childPrimitives:Set;
private var operationSortOptions:Array;
private var collisionPrimitivePoint:Point3D;
var bsp:BSPNode;
private var collisionNormal:Point3D;
var _root:Object3D;
private var collisionPrimitiveNearestPoint:Point3D;
private var collisionPrimitiveNearest:PolyPrimitive;
var lowerPrimitives:Set;
var clearPrimitivesOperation:Operation;
private var dummyNode:BSPNode;
private var collisionPrimitiveNearestLengthSqr:Number;
private var collisionPrimitive:PolyPrimitive;
private var addSortOptions:Array;
private var addSort:Array;
private var collisionRadius:Number;
private var collisionOffset:Number;
private var addList:Array;
private var collisionPlanes:Array;
private var operations:Array;
private var collisionSource:Point3D;
var addPrimitives:Set;
private var collisionDestination:Point3D;
private static var pointOffsets:Array = new Array();
public function Scene3D(){
calculatePrimitivesOperation = new Operation("calculatePrimitives", this, calculatePrimitives, Operation.SCENE_CALCULATE_PRIMITIVES);
clearPrimitivesOperation = new Operation("clearPrimitives", this, clearPrimitives, Operation.SCENE_CLEAR_PRIMITIVES);
operations = new Array();
operationSort = ["priority", "level"];
operationSortOptions = [Array.NUMERIC, Array.NUMERIC];
addPrimitives = new Set();
removePrimitives = new Set();
childPrimitives = new Set();
lowerPrimitives = new Set();
addList = new Array();
addSort = ["mobile", "splits"];
addSortOptions = [(Array.NUMERIC | Array.DESCENDING), (Array.NUMERIC | Array.DESCENDING)];
removeNodes = new Set();
dummyNode = new BSPNode();
collisionDestination = new Point3D();
collisionPlanes = new Array();
collisionPlanePoint = new Point3D();
collisionPrimitivePoint = new Point3D();
collisionPrimitiveNearestPoint = new Point3D();
collisionPoint = new Point3D();
collisionNormal = new Point3D();
super();
calculatePrimitivesOperation.addSequel(clearPrimitivesOperation);
}
private function childBSP(_arg1:BSPNode):void{
var _local2:PolyPrimitive;
var _local3:*;
if (((!((_arg1 == null))) && (!((_arg1 == dummyNode))))){
_local2 = _arg1.primitive;
if (_local2 != null){
childPrimitives[_local2] = true;
removePrimitives[_local2] = true;
_arg1.primitive = null;
_local2.node = null;
} else {
for (_local3 in _arg1.backPrimitives) {
_local2 = _local3;
_local2.node = null;
childPrimitives[_local2] = true;
removePrimitives[_local2] = true;
};
for (_local3 in _arg1.frontPrimitives) {
_local2 = _local3;
_local2.node = null;
childPrimitives[_local2] = true;
removePrimitives[_local2] = true;
};
_arg1.backPrimitives = null;
_arg1.frontPrimitives = null;
};
childBSP(_arg1.back);
childBSP(_arg1.front);
_arg1.parent = null;
_arg1.back = null;
_arg1.front = null;
BSPNode.destroyBSPNode(_arg1);
};
}
public function drawBSPNode(_arg1:BSPNode, _arg2:Sprite, _arg3:Number, _arg4:Number, _arg5:Number):void{
var _local8:PolyPrimitive;
var _local6:Shape = new Shape();
_arg2.addChild(_local6);
_local6.x = _arg3;
_local6.y = _arg4;
var _local7:uint = 0xFF0000;
if (_arg1.primitive != null){
_local8 = _arg1.primitive;
} else {
if (_arg1.frontPrimitives != null){
_local8 = _arg1.frontPrimitives.first();
};
};
if (_local8 != null){
if (((!((_local8.face._surface == null))) && (!((_local8.face._surface._material == null))))){
if ((_local8.face._surface._material is FillMaterial)){
_local7 = FillMaterial(_local8.face._surface._material)._color;
};
if ((_local8.face._surface._material is WireMaterial)){
_local7 = WireMaterial(_local8.face._surface._material)._color;
};
if ((_local8.face._surface._material is TextureMaterial)){
_local7 = TextureMaterial(_local8.face._surface._material).texture.bitmapData.getPixel(0, 0);
};
};
};
if (_arg1 == dummyNode){
_local7 = 0xFF00FF;
};
_local6.graphics.beginFill(_local7);
_local6.graphics.drawCircle(0, 0, 3);
_local6.graphics.endFill();
var _local9:Number = 100;
var _local10:Number = 20;
if (_arg1.back != null){
_arg2.graphics.lineStyle(0, 0x660000);
_arg2.graphics.moveTo(_arg3, _arg4);
_arg2.graphics.lineTo((_arg3 - (_local9 * _arg5)), (_arg4 + _local10));
drawBSPNode(_arg1.back, _arg2, (_arg3 - (_local9 * _arg5)), (_arg4 + _local10), (_arg5 * 0.8));
};
if (_arg1.front != null){
_arg2.graphics.lineStyle(0, 0x6600);
_arg2.graphics.moveTo(_arg3, _arg4);
_arg2.graphics.lineTo((_arg3 + (_local9 * _arg5)), (_arg4 + _local10));
drawBSPNode(_arg1.front, _arg2, (_arg3 + (_local9 * _arg5)), (_arg4 + _local10), (_arg5 * 0.8));
};
}
private function removeBSPPrimitive(_arg1:PolyPrimitive):void{
var _local4:*;
var _local5:BSPNode;
var _local2:BSPNode = _arg1.node;
_arg1.node = null;
var _local3:Boolean;
if (_local2.primitive == _arg1){
removeNodes[_local2] = true;
_local2.primitive = null;
} else {
if (_local2.frontPrimitives[_arg1]){
delete _local2.frontPrimitives[_arg1];
for (_local4 in _local2.frontPrimitives) {
if (_local3){
_local3 = false;
break;
};
_local3 = true;
};
if (_local4 == null){
_local5 = _local2.back;
_local2.back = _local2.front;
_local2.front = _local5;
_local2.normal.invert();
_local2.offset = -(_local2.offset);
for (_local4 in _local2.backPrimitives) {
if (_local3){
_local3 = false;
break;
};
_local3 = true;
};
if (_local3){
_local2.primitive = _local4;
_local2.mobile = _local2.primitive.mobile;
_local2.frontPrimitives = null;
} else {
_local2.frontPrimitives = _local2.backPrimitives;
if (_arg1.mobile == _local2.mobile){
_local2.mobile = uint.MAX_VALUE;
for (_local4 in _local2.frontPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
};
};
_local2.backPrimitives = null;
} else {
if (((_local3) && ((_local2.backPrimitives == null)))){
_local2.primitive = _local4;
_local2.mobile = _local2.primitive.mobile;
_local2.frontPrimitives = null;
} else {
if (_arg1.mobile == _local2.mobile){
_local2.mobile = uint.MAX_VALUE;
for (_local4 in _local2.backPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
for (_local4 in _local2.frontPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
};
};
};
} else {
delete _local2.backPrimitives[_arg1];
for (_local4 in _local2.backPrimitives) {
break;
};
if (_local4 == null){
for (_local4 in _local2.frontPrimitives) {
if (_local3){
_local3 = false;
break;
};
_local3 = true;
};
if (_local3){
_local2.primitive = _local4;
_local2.mobile = _local2.primitive.mobile;
_local2.frontPrimitives = null;
} else {
if (_arg1.mobile == _local2.mobile){
_local2.mobile = uint.MAX_VALUE;
for (_local4 in _local2.frontPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
};
};
_local2.backPrimitives = null;
} else {
if (_arg1.mobile == _local2.mobile){
_local2.mobile = uint.MAX_VALUE;
for (_local4 in _local2.backPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
for (_local4 in _local2.frontPrimitives) {
_arg1 = _local4;
_local2.mobile = ((_local2.mobile)>_arg1.mobile) ? _arg1.mobile : _local2.mobile;
};
};
};
};
};
}
private function clearPrimitives():void{
addPrimitives.clear();
removePrimitives.clear();
}
private function calculateSplits():void{
var _local3:PolyPrimitive;
var _local4:Point3D;
var _local5:Number;
var _local6:uint;
var _local7:PolyPrimitive;
var _local8:Boolean;
var _local9:Boolean;
var _local10:uint;
var _local11:Point3D;
var _local12:Number;
var _local1:uint = addList.length;
var _local2:uint;
while (_local2 < _local1) {
_local3 = addList[_local2];
_local4 = _local3.face.globalNormal;
_local5 = _local3.face.globalOffset;
_local3.splits = 0;
_local6 = 0;
while (_local6 < _local1) {
if (_local2 != _local6){
_local7 = addList[_local6];
if (_local3.mobile <= _local7.mobile){
_local8 = false;
_local9 = false;
_local10 = 0;
while (_local10 < _local7.num) {
_local11 = _local7.points[_local10];
_local12 = ((((_local11.x * _local4.x) + (_local11.y * _local4.y)) + (_local11.z * _local4.z)) - _local5);
if (_local12 > planeOffsetTreshold){
if (_local9){
_local3.splits++;
break;
} else {
_local8 = true;
};
} else {
if (_local12 < -(planeOffsetTreshold)){
if (_local8){
_local3.splits++;
break;
} else {
_local9 = true;
};
};
};
_local10++;
};
};
};
_local6++;
};
_local2++;
};
}
private function assemblePrimitive(_arg1:PolyPrimitive, _arg2:Set):void{
if (((!((_arg1.sibling == null))) && (canAssemble(_arg1.sibling, _arg2)))){
assemblePrimitive(_arg1.parent, _arg2);
_arg1.sibling.sibling = null;
_arg1.sibling.parent = null;
PolyPrimitive.destroyPolyPrimitive(_arg1.sibling);
_arg1.sibling = null;
_arg1.parent.back = null;
_arg1.parent.front = null;
_arg1.parent = null;
PolyPrimitive.destroyPolyPrimitive(_arg1);
} else {
_arg2[_arg1] = true;
};
}
private function calculateCollisionWithPrimitive(_arg1:PolyPrimitive):void{
var _local7:Point3D;
var _local8:Point3D;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local2:uint = _arg1.num;
var _local3:Array = _arg1.points;
var _local4:Point3D = _arg1.face.globalNormal;
var _local5:Boolean;
var _local6:uint;
while (_local6 < _local2) {
_local7 = _local3[_local6];
_local8 = _local3[((_local6)<(_local2 - 1)) ? (_local6 + 1) : 0];
_local9 = (_local8.x - _local7.x);
_local10 = (_local8.y - _local7.y);
_local11 = (_local8.z - _local7.z);
_local12 = (collisionPlanePoint.x - _local7.x);
_local13 = (collisionPlanePoint.y - _local7.y);
_local14 = (collisionPlanePoint.z - _local7.z);
_local15 = ((_local13 * _local11) - (_local14 * _local10));
_local16 = ((_local14 * _local9) - (_local12 * _local11));
_local17 = ((_local12 * _local10) - (_local13 * _local9));
if ((((_local15 * _local4.x) + (_local16 * _local4.y)) + (_local17 * _local4.z)) > 0){
_local5 = false;
_local18 = (((_local9 * _local9) + (_local10 * _local10)) + (_local11 * _local11));
_local19 = ((((_local15 * _local15) + (_local16 * _local16)) + (_local17 * _local17)) / _local18);
if (_local19 < collisionPrimitiveNearestLengthSqr){
_local20 = Math.sqrt(_local18);
_local21 = (_local9 / _local20);
_local22 = (_local10 / _local20);
_local23 = (_local11 / _local20);
_local24 = (((_local21 * _local12) + (_local22 * _local13)) + (_local23 * _local14));
if (_local24 < 0){
_local25 = (((_local12 * _local12) + (_local13 * _local13)) + (_local14 * _local14));
if (_local25 < collisionPrimitiveNearestLengthSqr){
collisionPrimitiveNearestLengthSqr = _local25;
collisionPrimitiveNearestPoint.x = _local7.x;
collisionPrimitiveNearestPoint.y = _local7.y;
collisionPrimitiveNearestPoint.z = _local7.z;
collisionPrimitiveNearest = _arg1;
};
} else {
if (_local24 > _local20){
_local12 = (collisionPlanePoint.x - _local8.x);
_local13 = (collisionPlanePoint.y - _local8.y);
_local14 = (collisionPlanePoint.z - _local8.z);
_local25 = (((_local12 * _local12) + (_local13 * _local13)) + (_local14 * _local14));
if (_local25 < collisionPrimitiveNearestLengthSqr){
collisionPrimitiveNearestLengthSqr = _local25;
collisionPrimitiveNearestPoint.x = _local8.x;
collisionPrimitiveNearestPoint.y = _local8.y;
collisionPrimitiveNearestPoint.z = _local8.z;
collisionPrimitiveNearest = _arg1;
};
} else {
collisionPrimitiveNearestLengthSqr = _local19;
collisionPrimitiveNearestPoint.x = (_local7.x + (_local21 * _local24));
collisionPrimitiveNearestPoint.y = (_local7.y + (_local22 * _local24));
collisionPrimitiveNearestPoint.z = (_local7.z + (_local23 * _local24));
collisionPrimitiveNearest = _arg1;
};
};
};
};
_local6++;
};
if (_local5){
collisionPrimitive = _arg1;
};
}
private function removeBSPNode(_arg1:BSPNode):BSPNode{
var _local2:BSPNode;
if (_arg1 != null){
_arg1.back = removeBSPNode(_arg1.back);
_arg1.front = removeBSPNode(_arg1.front);
if (!removeNodes[_arg1]){
_local2 = _arg1;
if (_arg1.back != null){
if (_arg1.back != dummyNode){
_arg1.back.parent = _arg1;
} else {
_arg1.back = null;
};
};
if (_arg1.front != null){
if (_arg1.front != dummyNode){
_arg1.front.parent = _arg1;
} else {
_arg1.front = null;
};
};
} else {
if (_arg1.back == null){
if (_arg1.front != null){
_local2 = _arg1.front;
_arg1.front = null;
};
} else {
if (_arg1.front == null){
_local2 = _arg1.back;
_arg1.back = null;
} else {
childBSP(_arg1.back);
childBSP(_arg1.front);
_local2 = dummyNode;
_arg1.back = null;
_arg1.front = null;
};
};
delete removeNodes[_arg1];
_arg1.parent = null;
BSPNode.destroyBSPNode(_arg1);
};
};
return (_local2);
}
private function canAssemble(_arg1:PolyPrimitive, _arg2:Set):Boolean{
var _local3:PolyPrimitive;
var _local4:PolyPrimitive;
var _local5:Boolean;
var _local6:Boolean;
if (childPrimitives[_arg1]){
delete childPrimitives[_arg1];
return (true);
};
_local3 = _arg1.back;
_local4 = _arg1.front;
if (_local3 != null){
_local5 = canAssemble(_local3, _arg2);
_local6 = canAssemble(_local4, _arg2);
if (((_local5) && (_local6))){
_local3.parent = null;
_local4.parent = null;
_local3.sibling = null;
_local4.sibling = null;
_arg1.back = null;
_arg1.front = null;
PolyPrimitive.destroyPolyPrimitive(_local3);
PolyPrimitive.destroyPolyPrimitive(_local4);
return (true);
};
if (_local5){
_arg2[_local3] = true;
};
if (_local6){
_arg2[_local4] = true;
};
};
return (false);
}
function removeOperation(_arg1:Operation):void{
if (_arg1.queued){
operations.splice(operations.indexOf(_arg1), 1);
};
}
public function set root(_arg1:Object3D):void{
if (_root != _arg1){
if (_arg1 != null){
if (_arg1._parent != null){
_arg1._parent._objects.remove(_arg1);
} else {
if (((!((_arg1._scene == null))) && ((_arg1._scene._root == _arg1)))){
_arg1._scene.root = null;
};
};
_arg1.setParent(null);
_arg1.setScene(this);
_arg1.setLevel(0);
};
if (_root != null){
_root.setParent(null);
_root.setScene(null);
};
_root = _arg1;
} else {
if (_root != null){
throw (new Error("Невозможно указать корневым уже корневой объект"));
};
};
}
function addOperation(_arg1:Operation):void{
if (!_arg1.queued){
operations.push(_arg1);
_arg1.queued = true;
};
}
public function drawBSP(_arg1:Sprite):void{
_arg1.graphics.clear();
while (_arg1.numChildren > 0) {
_arg1.removeChildAt(0);
};
if (bsp != null){
drawBSPNode(bsp, _arg1, 0, 0, 1);
};
}
private function addBSP(_arg1:BSPNode, _arg2:PolyPrimitive):void{
var _local3:Point3D;
var _local4:Point3D;
var _local5:PolyPrimitive;
var _local6:*;
var _local7:Array;
var _local8:Array;
var _local9:Boolean;
var _local10:Boolean;
var _local11:uint;
var _local12:Number;
var _local13:PolyPrimitive;
var _local14:PolyPrimitive;
var _local15:Boolean;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Point;
if (_arg2.mobile < _arg1.mobile){
if (_arg1.primitive != null){
childPrimitives[_arg1.primitive] = true;
removePrimitives[_arg1.primitive] = true;
} else {
for (_local6 in _arg1.backPrimitives) {
childPrimitives[_local6] = true;
removePrimitives[_local6] = true;
};
for (_local6 in _arg1.frontPrimitives) {
childPrimitives[_local6] = true;
removePrimitives[_local6] = true;
};
};
childBSP(_arg1.back);
childBSP(_arg1.front);
assembleChildPrimitives(lowerPrimitives);
if (!lowerPrimitives.isEmpty()){
for (_local6 in lowerPrimitives) {
addPrimitives[_local6] = true;
addList.push(_local6);
delete lowerPrimitives[_local6];
};
calculateSplits();
addList.sortOn(addSort, addSortOptions);
};
_arg1.primitive = _arg2;
_arg2.node = _arg1;
_arg1.normal.copy(_arg2.face.globalNormal);
_arg1.offset = _arg2.face.globalOffset;
_arg1.mobile = _arg2.mobile;
_arg1.backPrimitives = null;
_arg1.frontPrimitives = null;
_arg1.back = null;
_arg1.front = null;
} else {
_local4 = _arg1.normal;
_local7 = _arg2.points;
_local8 = _arg2.uvs;
_local9 = false;
_local10 = false;
_local11 = 0;
while (_local11 < _arg2.num) {
_local3 = _local7[_local11];
_local12 = ((((_local3.x * _local4.x) + (_local3.y * _local4.y)) + (_local3.z * _local4.z)) - _arg1.offset);
if (_local12 > planeOffsetTreshold){
_local9 = true;
} else {
if (_local12 < -(planeOffsetTreshold)){
_local10 = true;
};
};
pointOffsets[_local11] = _local12;
_local11++;
};
if (((!(_local9)) && (!(_local10)))){
_arg2.node = _arg1;
if (_arg1.primitive != null){
_arg1.frontPrimitives = new Set(true);
_arg1.frontPrimitives[_arg1.primitive] = true;
_arg1.primitive = null;
};
if (Point3D.dot(_arg2.face.globalNormal, _local4) > 0){
_arg1.frontPrimitives[_arg2] = true;
} else {
if (_arg1.backPrimitives == null){
_arg1.backPrimitives = new Set(true);
};
_arg1.backPrimitives[_arg2] = true;
};
} else {
if (!_local10){
if (_arg1.front == null){
_arg1.front = BSPNode.createBSPNode(_arg2);
_arg1.front.parent = _arg1;
} else {
addBSP(_arg1.front, _arg2);
};
} else {
if (!_local9){
if (_arg1.back == null){
_arg1.back = BSPNode.createBSPNode(_arg2);
_arg1.back.parent = _arg1;
} else {
addBSP(_arg1.back, _arg2);
};
} else {
_local13 = PolyPrimitive.createPolyPrimitive();
_local14 = PolyPrimitive.createPolyPrimitive();
_local15 = true;
_local16 = pointOffsets[0];
_local11 = 0;
while (_local11 < _arg2.num) {
_local17 = ((_local11)==(_arg2.num - 1)) ? 0 : (_local11 + 1);
_local18 = pointOffsets[_local17];
if (_local16 > planeOffsetTreshold){
_local13.points.push(_local7[_local11]);
_local13.uvs.push(_arg2.uvs[_local11]);
} else {
if (_local16 < -(planeOffsetTreshold)){
_local14.points.push(_local7[_local11]);
_local14.uvs.push(_arg2.uvs[_local11]);
} else {
_local13.points.push(_local7[_local11]);
_local14.points.push(_local7[_local11]);
_local13.uvs.push(_arg2.uvs[_local11]);
_local14.uvs.push(_arg2.uvs[_local11]);
};
};
if ((((((_local16 > planeOffsetTreshold)) && ((_local18 < -(planeOffsetTreshold))))) || ((((_local16 < -(planeOffsetTreshold))) && ((_local18 > planeOffsetTreshold)))))){
_local19 = (_local16 / (_local16 - _local18));
_local3 = Point3D.interpolate(_local7[_local11], _local7[_local17], _local19);
_local13.points.push(_local3);
_local14.points.push(_local3);
if (_arg2.face.uvMatrix != null){
_local20 = Point.interpolate(_local8[_local17], _local8[_local11], _local19);
} else {
_local20 = null;
};
_local13.uvs.push(_local20);
_local14.uvs.push(_local20);
if (_local15){
_arg2.splitTime1 = _local19;
_local15 = false;
} else {
_arg2.splitTime2 = _local19;
};
};
_local16 = _local18;
_local11++;
};
_local13.num = _local13.points.length;
_local14.num = _local14.points.length;
_local13.mobile = _arg2.mobile;
_local14.mobile = _arg2.mobile;
_local14.face = _arg2.face;
_local13.face = _arg2.face;
_local14.parent = _arg2;
_local13.parent = _arg2;
_local14.sibling = _local13;
_local13.sibling = _local14;
_arg2.back = _local14;
_arg2.front = _local13;
addPrimitives[_local13] = true;
addPrimitives[_local14] = true;
delete addPrimitives[_arg2];
if (_arg1.back == null){
_arg1.back = BSPNode.createBSPNode(_local14);
_arg1.back.parent = _arg1;
} else {
addBSP(_arg1.back, _local14);
};
if (_arg1.front == null){
_arg1.front = BSPNode.createBSPNode(_local13);
_arg1.front.parent = _arg1;
} else {
addBSP(_arg1.front, _local13);
};
};
};
};
};
}
public function get root():Object3D{
return (_root);
}
private function collectCollisionPlanes(_arg1:BSPNode):void{
var _local2:Number;
var _local3:Number;
var _local4:Point3D;
var _local5:Number;
var _local6:Face;
var _local7:*;
var _local8:CollisionPlane;
if (_arg1 != null){
_local2 = ((((collisionSource.x * _arg1.normal.x) + (collisionSource.y * _arg1.normal.y)) + (collisionSource.z * _arg1.normal.z)) - _arg1.offset);
_local3 = ((((collisionDestination.x * _arg1.normal.x) + (collisionDestination.y * _arg1.normal.y)) + (collisionDestination.z * _arg1.normal.z)) - _arg1.offset);
if (_local2 >= 0){
collectCollisionPlanes(_arg1.front);
if (_local3 < collisionRadius){
_local8 = new CollisionPlane();
_local8.node = _arg1;
_local8.infront = true;
_local8.sourceOffset = _local2;
_local8.destinationOffset = _local3;
collisionPlanes.push(_local8);
collectCollisionPlanes(_arg1.back);
};
} else {
collectCollisionPlanes(_arg1.back);
if (-(_local3) < collisionRadius){
if (_arg1.backPrimitives != null){
_local8 = new CollisionPlane();
_local8.node = _arg1;
_local8.infront = false;
_local8.sourceOffset = -(_local2);
_local8.destinationOffset = -(_local3);
collisionPlanes.push(_local8);
};
collectCollisionPlanes(_arg1.front);
};
};
};
}
private function calculateCollisionWithPlane(_arg1:CollisionPlane):void{
var _local2:*;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
collisionPlanePoint.copy(collisionSource);
if (_arg1.sourceOffset <= collisionRadius){
if (_arg1.infront){
collisionPlanePoint.x = (collisionPlanePoint.x - (_arg1.node.normal.x * _arg1.sourceOffset));
collisionPlanePoint.y = (collisionPlanePoint.y - (_arg1.node.normal.y * _arg1.sourceOffset));
collisionPlanePoint.z = (collisionPlanePoint.z - (_arg1.node.normal.z * _arg1.sourceOffset));
} else {
collisionPlanePoint.x = (collisionPlanePoint.x + (_arg1.node.normal.x * _arg1.sourceOffset));
collisionPlanePoint.y = (collisionPlanePoint.y + (_arg1.node.normal.y * _arg1.sourceOffset));
collisionPlanePoint.z = (collisionPlanePoint.z + (_arg1.node.normal.z * _arg1.sourceOffset));
};
} else {
_local3 = ((_arg1.sourceOffset - collisionRadius) / (_arg1.sourceOffset - _arg1.destinationOffset));
collisionPlanePoint.x = (collisionSource.x + (collisionVector.x * _local3));
collisionPlanePoint.y = (collisionSource.y + (collisionVector.y * _local3));
collisionPlanePoint.z = (collisionSource.z + (collisionVector.z * _local3));
if (_arg1.infront){
collisionPlanePoint.x = (collisionPlanePoint.x - (_arg1.node.normal.x * collisionRadius));
collisionPlanePoint.y = (collisionPlanePoint.y - (_arg1.node.normal.y * collisionRadius));
collisionPlanePoint.z = (collisionPlanePoint.z - (_arg1.node.normal.z * collisionRadius));
} else {
collisionPlanePoint.x = (collisionPlanePoint.x + (_arg1.node.normal.x * collisionRadius));
collisionPlanePoint.y = (collisionPlanePoint.y + (_arg1.node.normal.y * collisionRadius));
collisionPlanePoint.z = (collisionPlanePoint.z + (_arg1.node.normal.z * collisionRadius));
};
};
collisionPrimitiveNearestLengthSqr = Number.MAX_VALUE;
collisionPrimitiveNearest = null;
if (_arg1.infront){
if (_arg1.node.primitive != null){
calculateCollisionWithPrimitive(_arg1.node.primitive);
} else {
for (_local2 in _arg1.node.frontPrimitives) {
calculateCollisionWithPrimitive(_local2);
if (collisionPrimitive != null){
break;
};
};
};
} else {
for (_local2 in _arg1.node.backPrimitives) {
calculateCollisionWithPrimitive(_local2);
if (collisionPrimitive != null){
break;
};
};
};
if (collisionPrimitive != null){
if (_arg1.infront){
collisionNormal.x = _arg1.node.normal.x;
collisionNormal.y = _arg1.node.normal.y;
collisionNormal.z = _arg1.node.normal.z;
collisionOffset = _arg1.node.offset;
} else {
collisionNormal.x = -(_arg1.node.normal.x);
collisionNormal.y = -(_arg1.node.normal.y);
collisionNormal.z = -(_arg1.node.normal.z);
collisionOffset = -(_arg1.node.offset);
};
collisionPoint.x = collisionPlanePoint.x;
collisionPoint.y = collisionPlanePoint.y;
collisionPoint.z = collisionPlanePoint.z;
} else {
_local4 = (collisionSource.x - collisionPrimitiveNearestPoint.x);
_local5 = (collisionSource.y - collisionPrimitiveNearestPoint.y);
_local6 = (collisionSource.z - collisionPrimitiveNearestPoint.z);
if ((((_local4 * collisionVector.x) + (_local5 * collisionVector.y)) + (_local6 * collisionVector.z)) <= 0){
_local7 = Math.sqrt((((collisionVector.x * collisionVector.x) + (collisionVector.y * collisionVector.y)) + (collisionVector.z * collisionVector.z)));
_local8 = (-(collisionVector.x) / _local7);
_local9 = (-(collisionVector.y) / _local7);
_local10 = (-(collisionVector.z) / _local7);
_local11 = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6));
_local12 = (((_local4 * _local8) + (_local5 * _local9)) + (_local6 * _local10));
_local13 = (((collisionRadius * collisionRadius) - _local11) + (_local12 * _local12));
if (_local13 > 0){
_local14 = (_local12 - Math.sqrt(_local13));
if (_local14 < _local7){
collisionPoint.x = collisionPrimitiveNearestPoint.x;
collisionPoint.y = collisionPrimitiveNearestPoint.y;
collisionPoint.z = collisionPrimitiveNearestPoint.z;
_local15 = Math.sqrt(_local11);
collisionNormal.x = (_local4 / _local15);
collisionNormal.y = (_local5 / _local15);
collisionNormal.z = (_local6 / _local15);
collisionOffset = (((collisionPoint.x * collisionNormal.x) + (collisionPoint.y * collisionNormal.y)) + (collisionPoint.z * collisionNormal.z));
collisionPrimitive = collisionPrimitiveNearest;
};
};
};
};
}
public function calculateCollision(_arg1:Point3D, _arg2:Point3D, _arg3:Number=0):Collision{
var _local4:CollisionPlane;
var _local5:Collision;
collisionSource = _arg1;
collisionVector = _arg2;
collisionDestination.x = (collisionSource.x + collisionVector.x);
collisionDestination.y = (collisionSource.y + collisionVector.y);
collisionDestination.z = (collisionSource.z + collisionVector.z);
collisionRadius = _arg3;
collectCollisionPlanes(bsp);
collisionPlanes.sortOn("sourceOffset", (Array.NUMERIC | Array.DESCENDING));
while (((!(((_local4 = collisionPlanes.pop()) == null))) && ((collisionPrimitive == null)))) {
calculateCollisionWithPlane(_local4);
};
if (collisionPrimitive != null){
_local5 = new Collision();
_local5.face = collisionPrimitive.face;
_local5.normal = collisionNormal.clone();
_local5.point = collisionPoint.clone();
_local5.offset = collisionOffset;
};
collisionSource = null;
collisionVector = null;
collisionPrimitive = null;
var _local6:uint = collisionPlanes.length;
var _local7:uint;
while (_local7 < _local6) {
collisionPlanes.pop();
_local7++;
};
return (_local5);
}
public function calculate():void{
var _local1:Operation;
var _local2:uint;
var _local3:uint;
if (operations[0] != undefined){
_local2 = operations.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = operations[_local3];
_local1.collectSequels(operations);
_local3++;
};
operations.sortOn(operationSort, operationSortOptions);
_local2 = operations.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = operations[_local3];
if (_local1.method != null){
_local1.method.call(_local1.object);
};
_local3++;
};
_local3 = 0;
while (_local3 < _local2) {
_local1 = operations.pop();
_local1.queued = false;
_local3++;
};
};
}
private function assembleChildPrimitives(_arg1:Set):void{
var _local2:PolyPrimitive;
while ((_local2 = childPrimitives.take()) != null) {
assemblePrimitive(_local2, _arg1);
};
}
private function calculatePrimitives():void{
var _local1:*;
var _local2:PolyPrimitive;
var _local3:BSPNode;
var _local4:BSPNode;
var _local5:BSPNode;
var _local6:BSPNode;
if (!removePrimitives.isEmpty()){
for (_local1 in removePrimitives) {
removeBSPPrimitive(_local1);
};
if (!removeNodes.isEmpty()){
while ((_local3 = removeNodes.first()) != null) {
_local4 = _local3;
while ((_local3 = _local3.parent) != null) {
if (removeNodes[_local3]){
_local4 = _local3;
};
};
_local5 = _local4.parent;
_local6 = removeBSPNode(_local4);
if (_local6 == dummyNode){
_local6 = null;
};
if (_local5 != null){
if (_local5.front == _local4){
_local5.front = _local6;
} else {
_local5.back = _local6;
};
} else {
bsp = _local6;
};
if (_local6 != null){
_local6.parent = _local5;
};
};
assembleChildPrimitives(addPrimitives);
};
};
if (!addPrimitives.isEmpty()){
addPrimitives.addToArray(addList);
calculateSplits();
addList.sortOn(addSort, addSortOptions);
if (bsp == null){
bsp = BSPNode.createBSPNode(addList.pop());
};
while ((_local2 = addList.pop()) != null) {
addBSP(bsp, _local2);
};
};
for (_local1 in addPrimitives) {
delete removePrimitives[_local1];
};
}
}
}//package com.alternativagame.engine3d
Section 46
//Skin (com.alternativagame.engine3d.Skin)
package com.alternativagame.engine3d {
import flash.display.*;
public class Skin extends Sprite {
var materialOperation:Operation;
var nextSkin:Skin;
var face:Face;
var camera:Camera3D;
private var material:SurfaceMaterial;
var _primitive:PolyPrimitive;
var alphaOperation:Operation;
var redrawOperation:Operation;
var blendModeOperation:Operation;
var gfx:Graphics;
private static var collector:Array = new Array();
public function Skin(){
materialOperation = new Operation("material", this, changeMaterial, Operation.SKIN_DRAW);
redrawOperation = new Operation("redraw", this, redraw, Operation.SKIN_DRAW);
alphaOperation = new Operation("alpha", this, changeAlpha, Operation.SKIN_DRAW);
blendModeOperation = new Operation("blendMode", this, changeBlendMode, Operation.SKIN_DRAW);
gfx = graphics;
super();
}
function draw(_arg1:PolyPrimitive):void{
if (((!((_primitive == _arg1))) || (!((face == _arg1.face))))){
if (_primitive != null){
face.materialOperation.removeSequel(materialOperation);
face.calculateUVOperation.removeSequel(redrawOperation);
if (material != null){
material.alphaOperation.removeSequel(alphaOperation);
material.drawParamsOperation.removeSequel(redrawOperation);
material.clear(this);
};
material = null;
face = null;
};
_primitive = _arg1;
if (_arg1 != null){
face = _arg1.face;
face.materialOperation.addSequel(materialOperation);
face.calculateUVOperation.addSequel(redrawOperation);
material = ((face._surface)!=null) ? face._surface._material : null;
if (material != null){
material.alphaOperation.addSequel(alphaOperation);
material.drawParamsOperation.addSequel(redrawOperation);
material.draw(this);
alpha = material._alpha;
blendMode = material._blendMode;
};
};
} else {
if (((((!((material == null))) && (!(redrawOperation.queued)))) && (!(materialOperation.queued)))){
material.clear(this);
material.draw(this);
};
};
}
private function changeBlendMode():void{
if (material != null){
blendMode = material._blendMode;
};
}
private function changeAlpha():void{
if (material != null){
alpha = material._alpha;
};
}
private function redraw():void{
if (material != null){
material.clear(this);
material.draw(this);
};
}
private function changeMaterial():void{
if (material != null){
material.alphaOperation.removeSequel(alphaOperation);
material.drawParamsOperation.removeSequel(redrawOperation);
material.clear(this);
};
material = (((!((face == null))) && (!((face._surface == null))))) ? face._surface._material : null;
if (material != null){
material.alphaOperation.addSequel(alphaOperation);
material.drawParamsOperation.addSequel(redrawOperation);
material.draw(this);
alpha = material._alpha;
blendMode = material._blendMode;
};
}
static function createSkin(_arg1:Camera3D):Skin{
var _local2:Skin = collector.pop();
if (_local2 == null){
_local2 = new (Skin);
};
_local2.camera = _arg1;
return (_local2);
}
static function destroySkin(_arg1:Skin):void{
collector.push(_arg1);
}
}
}//package com.alternativagame.engine3d
Section 47
//Surface (com.alternativagame.engine3d.Surface)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
public class Surface {
var materialOperation:Operation;
var removeOperation:Operation;
var _material:SurfaceMaterial;
var facesOperation:Operation;
var _mesh:Mesh;
var addOperation:Operation;
var _faces:Set;
public function Surface(){
addOperation = new Operation("add", this);
removeOperation = new Operation("remove", this);
facesOperation = new Operation("faces", this);
materialOperation = new Operation("material", this);
_faces = new Set();
super();
}
public function removeFace(_arg1:Object):void{
var _local2 = (_arg1 is Face);
if (_mesh == null){
throw (new Error("Невозможно удалить грань из поверхности, т.к. поверхность не находится в меше"));
};
if (_arg1 == null){
throw (new Error(("Невозможно удалить из поверхности " + (_local2) ? "null-грань" : "грань с null-идентификатором")));
};
if (_local2){
if (Face(_arg1)._mesh != _mesh){
throw (new Error("Невозможно удалить грань из поверхности, т.к. она не находится в меше"));
};
} else {
if (_mesh._faces[_arg1] == undefined){
throw (new Error("Невозможно удалить грань из поверхности, т.к. грани с таким идентификатором в меше нет"));
};
};
var _local3:Face = (_local2) ? Face(_arg1) : _mesh._faces[_arg1];
if (!_faces.has(_local3)){
throw (new Error("Невозможно удалить грань из поверхности, т.к. она не находится в поверхности"));
};
_faces.remove(_local3);
_local3.removeFromSurface(this);
_mesh.addOperationToScene(facesOperation);
}
function addToMesh(_arg1:Mesh):void{
if (_material != null){
_material.addToMesh(_arg1);
};
_mesh = _arg1;
}
public function set material(_arg1:SurfaceMaterial):void{
if (_material != _arg1){
if (_material != null){
_material.removeFromSurface(this);
if (_mesh != null){
_material.removeFromMesh(_mesh);
if (_mesh._scene != null){
_material.removeFromScene(_mesh._scene);
};
};
};
if (_arg1 != null){
if (_arg1._surface != null){
_arg1._surface.material = null;
};
_arg1.addToSurface(this);
if (_mesh != null){
_arg1.addToMesh(_mesh);
if (_mesh._scene != null){
_arg1.addToScene(_mesh._scene);
};
};
};
_material = _arg1;
if (_mesh != null){
_mesh.addOperationToScene(materialOperation);
};
};
}
function removeFaces():void{
var _local1:*;
var _local2:Face;
for (_local1 in _faces) {
_local2 = _local1;
_faces.remove(_local2);
_local2.removeFromSurface(this);
};
}
public function get id():Object{
return (((_mesh)!=null) ? _mesh.getSurfaceId(this) : null);
}
function removeFromScene(_arg1:Scene3D):void{
_arg1.removeOperation(addOperation);
_arg1.removeOperation(facesOperation);
_arg1.removeOperation(materialOperation);
_arg1.addOperation(removeOperation);
if (_material != null){
_material.removeFromScene(_arg1);
};
}
public function addFace(_arg1:Object):void{
var _local2 = (_arg1 is Face);
if (_mesh == null){
throw (new Error("Невозможно добавить грань в поверхность, т.к. поверхность не находится в меше"));
};
if (_arg1 == null){
throw (new Error(("Невозможно добавить в поверхность " + (_local2) ? "null-грань" : "грань с null-идентификатором")));
};
if (_local2){
if (Face(_arg1)._mesh != _mesh){
throw (new Error("Невозможно добавить грань в поверхность, т.к. она не находится в меше"));
};
} else {
if (_mesh._faces[_arg1] == undefined){
throw (new Error("Невозможно добавить грань в поверхность, т.к. грани с таким идентификатором в меше нет"));
};
};
var _local3:Face = (_local2) ? Face(_arg1) : _mesh._faces[_arg1];
if (_faces.has(_local3)){
throw (new Error("Невозможно добавить грань в поверхность, т.к. она уже в ней"));
};
if (_local3._surface != null){
_local3._surface._faces.remove(_local3);
_local3.removeFromSurface(_local3._surface);
};
_faces.add(_local3);
_local3.addToSurface(this);
_mesh.addOperationToScene(facesOperation);
}
public function get material():SurfaceMaterial{
return (_material);
}
function removeFromMesh(_arg1:Mesh):void{
if (_material != null){
_material.removeFromMesh(_arg1);
};
_mesh = null;
}
public function toString():String{
var _local4:*;
var _local5:Face;
var _local1:uint = _faces.length;
var _local2:String = (("[Surface ID:" + id) + ((_local1)>0) ? " faces:" : "");
var _local3:uint;
for (_local4 in _faces) {
_local5 = _local4;
_local2 = (_local2 + (_local5.id + ((_local3)<(_local1 - 1)) ? ", " : ""));
_local3++;
};
_local2 = (_local2 + "]");
return (_local2);
}
public function get mesh():Mesh{
return (_mesh);
}
function addToScene(_arg1:Scene3D):void{
_arg1.removeOperation(removeOperation);
_arg1.addOperation(addOperation);
if (_material != null){
_material.addToScene(_arg1);
};
}
public function get faces():Set{
return (_faces.clone());
}
}
}//package com.alternativagame.engine3d
Section 48
//SurfaceMaterial (com.alternativagame.engine3d.SurfaceMaterial)
package com.alternativagame.engine3d {
public class SurfaceMaterial extends Material {
var _blendMode:String;// = "normal"
var drawParamsOperation:Operation;
var _alpha:Number;
var alphaOperation:Operation;
var _surface:Surface;
var blendModeOperation:Operation;
public function SurfaceMaterial(_arg1:Number=1, _arg2:String="normal"){
drawParamsOperation = new Operation("drawParams", this);
alphaOperation = new Operation("alpha", this);
blendModeOperation = new Operation("blendMode", this);
super();
_alpha = _arg1;
_blendMode = _arg2;
}
function draw(_arg1:Skin):void{
}
function addToMesh(_arg1:Mesh):void{
}
function clear(_arg1:Skin):void{
_arg1.gfx.clear();
}
function addToSurface(_arg1:Surface):void{
_surface = _arg1;
}
public function get blendMode():String{
return (_blendMode);
}
function removeFromMesh(_arg1:Mesh):void{
}
function removeFromScene(_arg1:Scene3D):void{
_arg1.removeOperation(drawParamsOperation);
}
override public function clone():Material{
return (new SurfaceMaterial(_alpha, _blendMode));
}
public function get alpha():Number{
return (_alpha);
}
public function set blendMode(_arg1:String):void{
if (_blendMode != _arg1){
_blendMode = _arg1;
if (((!((_surface == null))) && (!((_surface._mesh == null))))){
_surface._mesh.addOperationToScene(blendModeOperation);
};
};
}
public function get surface():Surface{
return (_surface);
}
function addToScene(_arg1:Scene3D):void{
}
protected function addDrawParamsOperationToScene():void{
if (((!((_surface == null))) && (!((_surface._mesh == null))))){
_surface._mesh.addOperationToScene(drawParamsOperation);
};
}
public function set alpha(_arg1:Number):void{
if (_alpha != _arg1){
_alpha = _arg1;
if (((!((_surface == null))) && (!((_surface._mesh == null))))){
_surface._mesh.addOperationToScene(alphaOperation);
};
};
}
function removeFromSurface(_arg1:Surface):void{
_surface = null;
}
}
}//package com.alternativagame.engine3d
Section 49
//TextureMaterial (com.alternativagame.engine3d.TextureMaterial)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
public class TextureMaterial extends SurfaceMaterial {
var _smooth:Boolean;
var _debug:Boolean;// = false
var _texture:TextureData;
var _repeat:Boolean;
var _precision:Number;
private static var textureMatrix:Matrix = new Matrix();
private static var focusDistance:Number;
private static var points1:Array = new Array();
private static var points2:Array = new Array();
private static var gfx:Graphics;
private static var distortion:Number;
public function TextureMaterial(_arg1:TextureData=null, _arg2:Number=1, _arg3:Boolean=true, _arg4:Boolean=false, _arg5:Number=10, _arg6:String="normal"):void{
super(_arg2, _arg6);
_texture = _arg1;
_repeat = _arg3;
_smooth = _arg4;
_precision = _arg5;
}
override function draw(_arg1:Skin):void{
var _local4:uint;
var _local5:Array;
var _local6:Point3D;
var _local7:uint;
var _local8:Matrix;
var _local9:Array;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:uint;
var _local15:uint;
var _local16:uint;
var _local17:uint;
var _local18:Boolean;
var _local19:TexturePoint;
var _local20:TexturePoint;
var _local21:TexturePoint;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Point;
var _local34:TexturePoint;
var _local2:Face = _arg1.face;
var _local3:Camera3D = _arg1.camera;
if (((!((_local2.uvMatrix == null))) && (!((_texture == null))))){
gfx = _arg1.gfx;
_local4 = _arg1._primitive.num;
_local5 = _arg1._primitive.points;
if (_local3._fov == 0){
_local8 = _local3.calculateTextureMatrix(_local2, texture.width, texture.height);
gfx.beginBitmapFill(_texture.bitmapData, _local8, true, true);
if (_debug){
gfx.lineStyle(1, 0xFFFFFF);
};
_local6 = _local3.calculateCameraCoord(_local5[0]);
gfx.moveTo(_local6.x, _local6.y);
_local7 = 1;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
gfx.lineTo(_local6.x, _local6.y);
_local7++;
};
if (_debug){
_local6 = _local3.calculateCameraCoord(_local5[0]);
gfx.lineTo(_local6.x, _local6.y);
};
} else {
focusDistance = _local3.focusDistance;
distortion = (_local3.focusDistortion * _precision);
_local9 = _arg1._primitive.uvs;
_local7 = 0;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
_local33 = _local9[_local7];
_local34 = points1[_local7];
if (_local34 == null){
_local34 = new TexturePoint(_local6.x, _local6.y, _local6.z, _local33.x, _local33.y);
points1[_local7] = _local34;
} else {
_local34.x = _local6.x;
_local34.y = _local6.y;
_local34.z = _local6.z;
_local34.u = _local33.x;
_local34.v = _local33.y;
};
_local7++;
};
_local10 = -(focusDistance);
_local11 = _local3._view.halfWidth;
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local12);
_local11 = (_local11 / _local12);
_local4 = clip(_local4, points1, points2, _local10, 0, _local11);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, -(_local10), 0, _local11);
if (_local4 < 3){
return;
};
_local13 = -(focusDistance);
_local11 = _local3._view.halfHeight;
_local12 = Math.sqrt(((_local13 * _local13) + (_local11 * _local11)));
_local13 = (_local13 / _local12);
_local11 = (_local11 / _local12);
_local4 = clip(_local4, points1, points2, 0, _local13, _local11);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, 0, -(_local13), _local11);
if (_local4 < 3){
return;
};
_local14 = 0;
_local15 = (_local4 - 1);
_local16 = 1;
_local17 = ((_local15)>0) ? (_local15 - 1) : (_local4 - 1);
_local18 = true;
_local19 = points1[_local15];
_local21 = points1[_local14];
_local22 = (_local19.x / _local19.z);
_local23 = (_local19.y / _local19.z);
_local26 = (_local21.x / _local21.z);
_local27 = (_local21.y / _local21.z);
_local28 = (((_local21.x + _local19.x) / (_local21.z + _local19.z)) - (0.5 * (_local26 + _local22)));
_local29 = (((_local21.y + _local19.y) / (_local21.z + _local19.z)) - (0.5 * (_local27 + _local23)));
_local32 = ((_local28 * _local28) + (_local29 * _local29));
while (_local14 != _local15) {
if (_local18){
_local19 = points1[_local14];
_local20 = points1[_local16];
_local21 = points1[_local15];
_local24 = _local22;
_local25 = _local23;
_local22 = _local26;
_local23 = _local27;
_local26 = _local24;
_local27 = _local25;
_local24 = (_local20.x / _local20.z);
_local25 = (_local20.y / _local20.z);
_local28 = (((_local20.x + _local21.x) / (_local20.z + _local21.z)) - (0.5 * (_local24 + _local26)));
_local29 = (((_local20.y + _local21.y) / (_local20.z + _local21.z)) - (0.5 * (_local25 + _local27)));
_local31 = ((_local28 * _local28) + (_local29 * _local29));
if ((((_local24 - _local22) * (_local27 - _local23)) - ((_local25 - _local23) * (_local26 - _local22))) < -(_local3.focusDistortion)){
_local28 = (((_local19.x + _local20.x) / (_local19.z + _local20.z)) - (0.5 * (_local22 + _local24)));
_local29 = (((_local19.y + _local20.y) / (_local19.z + _local20.z)) - (0.5 * (_local23 + _local25)));
_local30 = ((_local28 * _local28) + (_local29 * _local29));
bisection(_local19.x, _local19.y, _local19.z, _local19.u, _local19.v, _local20.x, _local20.y, _local20.z, _local20.u, _local20.v, _local21.x, _local21.y, _local21.z, _local21.u, _local21.v, _local30, _local31, _local32);
};
_local14 = _local16;
_local16 = ((_local14)<(_local4 - 1)) ? (_local14 + 1) : 0;
} else {
_local19 = points1[_local17];
_local20 = points1[_local15];
_local21 = points1[_local14];
_local22 = _local24;
_local23 = _local25;
_local24 = _local26;
_local25 = _local27;
_local26 = _local22;
_local27 = _local23;
_local22 = (_local19.x / _local19.z);
_local23 = (_local19.y / _local19.z);
_local28 = (((_local21.x + _local19.x) / (_local21.z + _local19.z)) - (0.5 * (_local26 + _local22)));
_local29 = (((_local21.y + _local19.y) / (_local21.z + _local19.z)) - (0.5 * (_local27 + _local23)));
_local32 = ((_local28 * _local28) + (_local29 * _local29));
if ((((_local24 - _local22) * (_local27 - _local23)) - ((_local25 - _local23) * (_local26 - _local22))) < -(_local3.focusDistortion)){
_local28 = (((_local19.x + _local20.x) / (_local19.z + _local20.z)) - (0.5 * (_local22 + _local24)));
_local29 = (((_local19.y + _local20.y) / (_local19.z + _local20.z)) - (0.5 * (_local23 + _local25)));
_local30 = ((_local28 * _local28) + (_local29 * _local29));
bisection(_local19.x, _local19.y, _local19.z, _local19.u, _local19.v, _local20.x, _local20.y, _local20.z, _local20.u, _local20.v, _local21.x, _local21.y, _local21.z, _local21.u, _local21.v, _local30, _local31, _local32);
};
_local15 = _local17;
_local17 = ((_local15)>0) ? (_local15 - 1) : (_local4 - 1);
};
_local18 = !(_local18);
};
};
} else {
_local3.removeTextureMatrix(_local2);
};
}
private function bisection(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Number, _arg15:Number, _arg16:Number, _arg17:Number, _arg18:Number):void{
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
if (_arg16 > _arg17){
if (_arg16 > _arg18){
if (_arg16 > distortion){
_local19 = (0.5 * (_arg1 + _arg6));
_local20 = (0.5 * (_arg2 + _arg7));
_local21 = (0.5 * (_arg3 + _arg8));
_local22 = (0.5 * (_arg4 + _arg9));
_local23 = (0.5 * (_arg5 + _arg10));
_local24 = (((_arg1 + _local19) / (_arg3 + _local21)) - (0.5 * ((_arg1 / _arg3) + (_local19 / _local21))));
_local25 = (((_arg2 + _local20) / (_arg3 + _local21)) - (0.5 * ((_arg2 / _arg3) + (_local20 / _local21))));
_local26 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg6 + _local19) / (_arg8 + _local21)) - (0.5 * ((_arg6 / _arg8) + (_local19 / _local21))));
_local25 = (((_arg7 + _local20) / (_arg8 + _local21)) - (0.5 * ((_arg7 / _arg8) + (_local20 / _local21))));
_local27 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg11 + _local19) / (_arg13 + _local21)) - (0.5 * ((_arg11 / _arg13) + (_local19 / _local21))));
_local25 = (((_arg12 + _local20) / (_arg13 + _local21)) - (0.5 * ((_arg12 / _arg13) + (_local20 / _local21))));
_local28 = ((_local24 * _local24) + (_local25 * _local25));
bisection(_local19, _local20, _local21, _local22, _local23, _arg11, _arg12, _arg13, _arg14, _arg15, _arg1, _arg2, _arg3, _arg4, _arg5, _local28, _arg18, _local26);
bisection(_local19, _local20, _local21, _local22, _local23, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _local27, _arg17, _local28);
return;
};
} else {
if (_arg18 > distortion){
_local19 = (0.5 * (_arg11 + _arg1));
_local20 = (0.5 * (_arg12 + _arg2));
_local21 = (0.5 * (_arg13 + _arg3));
_local22 = (0.5 * (_arg14 + _arg4));
_local23 = (0.5 * (_arg15 + _arg5));
_local24 = (((_arg1 + _local19) / (_arg3 + _local21)) - (0.5 * ((_arg1 / _arg3) + (_local19 / _local21))));
_local25 = (((_arg2 + _local20) / (_arg3 + _local21)) - (0.5 * ((_arg2 / _arg3) + (_local20 / _local21))));
_local26 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg6 + _local19) / (_arg8 + _local21)) - (0.5 * ((_arg6 / _arg8) + (_local19 / _local21))));
_local25 = (((_arg7 + _local20) / (_arg8 + _local21)) - (0.5 * ((_arg7 / _arg8) + (_local20 / _local21))));
_local27 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg11 + _local19) / (_arg13 + _local21)) - (0.5 * ((_arg11 / _arg13) + (_local19 / _local21))));
_local25 = (((_arg12 + _local20) / (_arg13 + _local21)) - (0.5 * ((_arg12 / _arg13) + (_local20 / _local21))));
_local28 = ((_local24 * _local24) + (_local25 * _local25));
bisection(_local19, _local20, _local21, _local22, _local23, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _local27, _arg17, _local28);
bisection(_local19, _local20, _local21, _local22, _local23, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _local26, _arg16, _local27);
return;
};
};
} else {
if (_arg17 > _arg18){
if (_arg17 > distortion){
_local19 = (0.5 * (_arg6 + _arg11));
_local20 = (0.5 * (_arg7 + _arg12));
_local21 = (0.5 * (_arg8 + _arg13));
_local22 = (0.5 * (_arg9 + _arg14));
_local23 = (0.5 * (_arg10 + _arg15));
_local24 = (((_arg1 + _local19) / (_arg3 + _local21)) - (0.5 * ((_arg1 / _arg3) + (_local19 / _local21))));
_local25 = (((_arg2 + _local20) / (_arg3 + _local21)) - (0.5 * ((_arg2 / _arg3) + (_local20 / _local21))));
_local26 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg6 + _local19) / (_arg8 + _local21)) - (0.5 * ((_arg6 / _arg8) + (_local19 / _local21))));
_local25 = (((_arg7 + _local20) / (_arg8 + _local21)) - (0.5 * ((_arg7 / _arg8) + (_local20 / _local21))));
_local27 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg11 + _local19) / (_arg13 + _local21)) - (0.5 * ((_arg11 / _arg13) + (_local19 / _local21))));
_local25 = (((_arg12 + _local20) / (_arg13 + _local21)) - (0.5 * ((_arg12 / _arg13) + (_local20 / _local21))));
_local28 = ((_local24 * _local24) + (_local25 * _local25));
bisection(_local19, _local20, _local21, _local22, _local23, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _local26, _arg16, _local27);
bisection(_local19, _local20, _local21, _local22, _local23, _arg11, _arg12, _arg13, _arg14, _arg15, _arg1, _arg2, _arg3, _arg4, _arg5, _local28, _arg18, _local26);
return;
};
} else {
if (_arg18 > distortion){
_local19 = (0.5 * (_arg11 + _arg1));
_local20 = (0.5 * (_arg12 + _arg2));
_local21 = (0.5 * (_arg13 + _arg3));
_local22 = (0.5 * (_arg14 + _arg4));
_local23 = (0.5 * (_arg15 + _arg5));
_local24 = (((_arg1 + _local19) / (_arg3 + _local21)) - (0.5 * ((_arg1 / _arg3) + (_local19 / _local21))));
_local25 = (((_arg2 + _local20) / (_arg3 + _local21)) - (0.5 * ((_arg2 / _arg3) + (_local20 / _local21))));
_local26 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg6 + _local19) / (_arg8 + _local21)) - (0.5 * ((_arg6 / _arg8) + (_local19 / _local21))));
_local25 = (((_arg7 + _local20) / (_arg8 + _local21)) - (0.5 * ((_arg7 / _arg8) + (_local20 / _local21))));
_local27 = ((_local24 * _local24) + (_local25 * _local25));
_local24 = (((_arg11 + _local19) / (_arg13 + _local21)) - (0.5 * ((_arg11 / _arg13) + (_local19 / _local21))));
_local25 = (((_arg12 + _local20) / (_arg13 + _local21)) - (0.5 * ((_arg12 / _arg13) + (_local20 / _local21))));
_local28 = ((_local24 * _local24) + (_local25 * _local25));
bisection(_local19, _local20, _local21, _local22, _local23, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _local27, _arg17, _local28);
bisection(_local19, _local20, _local21, _local22, _local23, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _local26, _arg16, _local27);
return;
};
};
};
var _local29:Number = (focusDistance / _arg3);
var _local30:Number = (focusDistance / _arg8);
var _local31:Number = (focusDistance / _arg13);
drawTriangle((_arg1 * _local29), (_arg2 * _local29), _arg4, _arg5, (_arg6 * _local30), (_arg7 * _local30), _arg9, _arg10, (_arg11 * _local31), (_arg12 * _local31), _arg14, _arg15);
}
private function clip(_arg1:uint, _arg2:Array, _arg3:Array, _arg4:Number, _arg5:Number, _arg6:Number):uint{
var _local7:Number;
var _local9:TexturePoint;
var _local13:TexturePoint;
var _local14:Number;
var _local8:uint;
var _local10:TexturePoint = _arg2[(_arg1 - 1)];
var _local11:Number = (((_arg4 * _local10.x) + (_arg5 * _local10.y)) + (_arg6 * _local10.z));
var _local12:uint;
while (_local12 < _arg1) {
_local13 = _arg2[_local12];
_local14 = (((_arg4 * _local13.x) + (_arg5 * _local13.y)) + (_arg6 * _local13.z));
if (_local14 > 0){
if (_local11 <= 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new TexturePoint((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)), (_local13.u - ((_local13.u - _local10.u) * _local7)), (_local13.v - ((_local13.v - _local10.v) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
_local9.u = (_local13.u - ((_local13.u - _local10.u) * _local7));
_local9.v = (_local13.v - ((_local13.v - _local10.v) * _local7));
};
_local8++;
};
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new TexturePoint(_local13.x, _local13.y, _local13.z, _local13.u, _local13.v);
_arg3[_local8] = _local9;
} else {
_local9.x = _local13.x;
_local9.y = _local13.y;
_local9.z = _local13.z;
_local9.u = _local13.u;
_local9.v = _local13.v;
};
_local8++;
} else {
if (_local11 > 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new TexturePoint((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)), (_local13.u - ((_local13.u - _local10.u) * _local7)), (_local13.v - ((_local13.v - _local10.v) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
_local9.u = (_local13.u - ((_local13.u - _local10.u) * _local7));
_local9.v = (_local13.v - ((_local13.v - _local10.v) * _local7));
};
_local8++;
};
};
_local11 = _local14;
_local10 = _local13;
_local12++;
};
return (_local8);
}
public function get debug():Boolean{
return (_debug);
}
public function get texture():TextureData{
return (_texture);
}
public function set smooth(_arg1:Boolean):void{
if (_smooth != _arg1){
_smooth = _arg1;
addDrawParamsOperationToScene();
};
}
override public function clone():Material{
return (new TextureMaterial(_texture, _alpha, _repeat, _smooth, _precision, _blendMode));
}
public function get repeat():Boolean{
return (_repeat);
}
public function set debug(_arg1:Boolean):void{
if (_debug != _arg1){
_debug = _arg1;
addDrawParamsOperationToScene();
};
}
private function drawTriangle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Number = (_arg5 - _arg1);
var _local14:Number = (_arg6 - _arg2);
var _local15:Number = (_arg9 - _arg1);
var _local16:Number = (_arg10 - _arg2);
var _local17:Number = (_arg7 - _arg3);
var _local18:Number = (_arg8 - _arg4);
var _local19:Number = (_arg11 - _arg3);
var _local20:Number = (_arg12 - _arg4);
var _local21:Number = ((_local17 * _local20) - (_local18 * _local19));
var _local22:Number = _texture.width;
var _local23:Number = _texture.height;
textureMatrix.a = (((_local20 * _local13) - (_local18 * _local15)) / _local21);
textureMatrix.b = (((_local20 * _local14) - (_local18 * _local16)) / _local21);
textureMatrix.c = (((_local19 * _local13) - (_local17 * _local15)) / _local21);
textureMatrix.d = (((_local19 * _local14) - (_local17 * _local16)) / _local21);
textureMatrix.tx = ((((_arg4 - 1) * textureMatrix.c) - (_arg3 * textureMatrix.a)) + _arg1);
textureMatrix.ty = ((((_arg4 - 1) * textureMatrix.d) - (_arg3 * textureMatrix.b)) + _arg2);
textureMatrix.a = (textureMatrix.a / _local22);
textureMatrix.b = (textureMatrix.b / _local22);
textureMatrix.c = (textureMatrix.c / _local23);
textureMatrix.d = (textureMatrix.d / _local23);
gfx.beginBitmapFill(_texture.bitmapData, textureMatrix, _repeat, _smooth);
if (_debug){
gfx.lineStyle(1, 0xFFFFFF);
};
gfx.moveTo(_arg1, _arg2);
gfx.lineTo(_arg5, _arg6);
gfx.lineTo(_arg9, _arg10);
if (_debug){
gfx.lineTo(_arg1, _arg2);
};
}
public function get smooth():Boolean{
return (_smooth);
}
public function set texture(_arg1:TextureData):void{
if (_texture != _arg1){
_texture = _arg1;
addDrawParamsOperationToScene();
};
}
public function set precision(_arg1:Number):void{
_arg1 = ((_arg1)<1) ? 1 : _arg1;
if (_precision != _arg1){
_precision = _arg1;
addDrawParamsOperationToScene();
};
}
public function set repeat(_arg1:Boolean):void{
if (_repeat != _arg1){
_repeat = _arg1;
addDrawParamsOperationToScene();
};
}
public function get precision():Number{
return (_precision);
}
}
}//package com.alternativagame.engine3d
class TexturePoint {
public var u:Number;
public var v:Number;
public var x:Number;
public var y:Number;
public var z:Number;
private function TexturePoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0, _arg5:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.u = _arg4;
this.v = _arg5;
}
}
Section 50
//Vertex (com.alternativagame.engine3d.Vertex)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
public final class Vertex {
var calculateGlobalCoordsOperation:Operation;
var removeOperation:Operation;
var _mesh:Mesh;
var addOperation:Operation;
var globalCoords:Point3D;
var coordsOperation:Operation;
var _faces:Set;
var _coords:Point3D;
public function Vertex(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
addOperation = new Operation("add", this);
removeOperation = new Operation("remove", this);
coordsOperation = new Operation("coords", this);
calculateGlobalCoordsOperation = new Operation("calculateGlobalCoords", this, calculateGlobalCoords, Operation.VERTEX_TRANSFORMATION);
_faces = new Set();
globalCoords = new Point3D();
super();
_coords = new Point3D(_arg1, _arg2, _arg3);
addOperation.addSequel(calculateGlobalCoordsOperation);
coordsOperation.addSequel(calculateGlobalCoordsOperation);
}
public function get z():Number{
return (_coords.z);
}
function addToFace(_arg1:Face):void{
coordsOperation.addSequel(_arg1.transformOperation);
coordsOperation.addSequel(_arg1.uvOperation);
_faces.add(_arg1);
}
function addToMesh(_arg1:Mesh):void{
_arg1.moveOperation.addSequel(calculateGlobalCoordsOperation);
_arg1.transformOperation.addSequel(calculateGlobalCoordsOperation);
_mesh = _arg1;
}
function removeFromFace(_arg1:Face):void{
coordsOperation.removeSequel(_arg1.transformOperation);
coordsOperation.removeSequel(_arg1.uvOperation);
_faces.remove(_arg1);
}
public function get id():Object{
return (((_mesh)!=null) ? _mesh.getVertexId(this) : null);
}
public function get coords():Point3D{
return (_coords.clone());
}
function removeFromMesh(_arg1:Mesh):void{
var _local2:*;
var _local3:Face;
_arg1.moveOperation.removeSequel(calculateGlobalCoordsOperation);
_arg1.transformOperation.removeSequel(calculateGlobalCoordsOperation);
for (_local2 in _faces) {
_local3 = _local2;
_arg1.removeFace(_local3);
};
_mesh = null;
}
function removeFromScene(_arg1:Scene3D):void{
_arg1.removeOperation(addOperation);
_arg1.removeOperation(coordsOperation);
_arg1.addOperation(removeOperation);
}
private function calculateGlobalCoords():void{
globalCoords.copy(_coords);
globalCoords.transform(_mesh.transformMatrix);
}
public function transform(_arg1:Matrix3D):void{
_coords.transform(_arg1);
if (_mesh != null){
_mesh.addOperationToScene(coordsOperation);
};
}
public function get mesh():Mesh{
return (_mesh);
}
public function set x(_arg1:Number):void{
if (_coords.x != _arg1){
_coords.x = _arg1;
if (_mesh != null){
_mesh.addOperationToScene(coordsOperation);
};
};
}
public function set y(_arg1:Number):void{
if (_coords.y != _arg1){
_coords.y = _arg1;
if (_mesh != null){
_mesh.addOperationToScene(coordsOperation);
};
};
}
public function set z(_arg1:Number):void{
if (_coords.z != _arg1){
_coords.z = _arg1;
if (_mesh != null){
_mesh.addOperationToScene(coordsOperation);
};
};
}
public function get faces():Set{
return (_faces.clone());
}
public function get x():Number{
return (_coords.x);
}
public function get y():Number{
return (_coords.y);
}
public function toString():String{
return ((((((((("[Vertex ID:" + id) + " ") + _coords.x.toFixed(2)) + ", ") + _coords.y.toFixed(2)) + ", ") + _coords.z.toFixed(2)) + "]"));
}
public function set coords(_arg1:Point3D):void{
if (!_coords.equals(_arg1)){
_coords.copy(_arg1);
if (_mesh != null){
_mesh.addOperationToScene(coordsOperation);
};
};
}
function addToScene(_arg1:Scene3D):void{
_arg1.removeOperation(removeOperation);
_arg1.addOperation(addOperation);
}
}
}//package com.alternativagame.engine3d
Section 51
//View (com.alternativagame.engine3d.View)
package com.alternativagame.engine3d {
import flash.geom.*;
import flash.display.*;
public class View extends Sprite {
var halfHeight:Number;
var _height:Number;
var _width:Number;
private var _background:uint;// = 0
private var _crop:Boolean;// = false
var halfWidth:Number;
var canvas:Sprite;
public function View(_arg1:Number=0, _arg2:Number=0){
canvas = new Sprite();
canvas.mouseEnabled = false;
canvas.mouseChildren = false;
canvas.tabEnabled = false;
canvas.tabChildren = false;
addChild(canvas);
this.width = _arg1;
this.height = _arg2;
}
public function set crop(_arg1:Boolean):void{
_crop = _arg1;
if (_arg1){
scrollRect = new Rectangle(0, 0, width, height);
} else {
scrollRect = null;
};
}
override public function get width():Number{
return (_width);
}
override public function get height():Number{
return (_height);
}
public function get crop():Boolean{
return (_crop);
}
override public function set width(_arg1:Number):void{
if (_width != _arg1){
_width = _arg1;
halfWidth = (_arg1 * 0.5);
canvas.x = halfWidth;
if (crop){
scrollRect = new Rectangle(0, 0, _width, height);
};
};
}
override public function set height(_arg1:Number):void{
if (_height != _arg1){
_height = _arg1;
halfHeight = (_arg1 * 0.5);
canvas.y = halfHeight;
if (crop){
scrollRect = new Rectangle(0, 0, width, _height);
};
};
}
}
}//package com.alternativagame.engine3d
Section 52
//WireMaterial (com.alternativagame.engine3d.WireMaterial)
package com.alternativagame.engine3d {
import com.alternativagame.type.*;
import flash.display.*;
public class WireMaterial extends SurfaceMaterial {
var _color:uint;
var _thickness:Number;
private var currentSkin:Skin;
private static var gfx:Graphics;
private static var focusDistance:Number;
private static var points1:Array = new Array();
private static var points2:Array = new Array();
public function WireMaterial(_arg1:Number=0, _arg2:uint=0x7F7F7F, _arg3:Number=1, _arg4:String="normal"):void{
super(_arg3, _arg4);
_color = _arg2;
_thickness = _arg1;
}
public function get color():uint{
return (_color);
}
public function set color(_arg1:uint):void{
if (_color != _arg1){
_color = _arg1;
addDrawParamsOperationToScene();
};
}
override function draw(_arg1:Skin):void{
var _local6:Point3D;
var _local7:uint;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Point3D;
gfx = _arg1.gfx;
var _local2:Face = _arg1.face;
var _local3:Camera3D = _arg1.camera;
var _local4:uint = _arg1._primitive.num;
var _local5:Array = _arg1._primitive.points;
if (_local3._fov == 0){
gfx.lineStyle(_thickness, _color);
_local6 = _local3.calculateCameraCoord(_local5[(_local4 - 1)]);
gfx.moveTo(_local6.x, _local6.y);
_local7 = 0;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
gfx.lineTo(_local6.x, _local6.y);
_local7++;
};
} else {
focusDistance = _local3.focusDistance;
_local7 = 0;
while (_local7 < _local4) {
_local6 = _local3.calculateCameraCoord(_local5[_local7]);
_local13 = points1[_local7];
if (_local13 == null){
_local13 = _local6.clone();
points1[_local7] = _local13;
} else {
_local13.copy(_local6);
};
_local7++;
};
_local8 = -(focusDistance);
_local9 = _local3._view.halfWidth;
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local8 = (_local8 / _local10);
_local9 = (_local9 / _local10);
_local4 = clip(_local4, points1, points2, _local8, 0, _local9);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, -(_local8), 0, _local9);
if (_local4 < 3){
return;
};
_local11 = -(focusDistance);
_local9 = _local3._view.halfHeight;
_local10 = Math.sqrt(((_local11 * _local11) + (_local9 * _local9)));
_local11 = (_local11 / _local10);
_local9 = (_local9 / _local10);
_local4 = clip(_local4, points1, points2, 0, _local11, _local9);
if (_local4 < 3){
return;
};
_local4 = clip(_local4, points2, points1, 0, -(_local11), _local9);
if (_local4 < 3){
return;
};
gfx.lineStyle(_thickness, _color);
_local6 = points1[(_local4 - 1)];
_local12 = (focusDistance / _local6.z);
gfx.moveTo((_local6.x * _local12), (_local6.y * _local12));
_local7 = 0;
while (_local7 < _local4) {
_local6 = points1[_local7];
_local12 = (focusDistance / _local6.z);
gfx.lineTo((_local6.x * _local12), (_local6.y * _local12));
_local7++;
};
};
}
public function set thickness(_arg1:Number):void{
if (_thickness != _arg1){
_thickness = _arg1;
addDrawParamsOperationToScene();
};
}
private function clip(_arg1:uint, _arg2:Array, _arg3:Array, _arg4:Number, _arg5:Number, _arg6:Number):uint{
var _local7:Number;
var _local9:Point3D;
var _local13:Point3D;
var _local14:Number;
var _local8:uint;
var _local10:Point3D = _arg2[(_arg1 - 1)];
var _local11:Number = (((_arg4 * _local10.x) + (_arg5 * _local10.y)) + (_arg6 * _local10.z));
var _local12:uint;
while (_local12 < _arg1) {
_local13 = _arg2[_local12];
_local14 = (((_arg4 * _local13.x) + (_arg5 * _local13.y)) + (_arg6 * _local13.z));
if (_local14 > 0){
if (_local11 <= 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new Point3D((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
};
_local8++;
};
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = _local13.clone();
_arg3[_local8] = _local9;
} else {
_local9.copy(_local13);
};
_local8++;
} else {
if (_local11 > 0){
_local7 = (_local14 / (_local14 - _local11));
_local9 = _arg3[_local8];
if (_local9 == null){
_local9 = new Point3D((_local13.x - ((_local13.x - _local10.x) * _local7)), (_local13.y - ((_local13.y - _local10.y) * _local7)), (_local13.z - ((_local13.z - _local10.z) * _local7)));
_arg3[_local8] = _local9;
} else {
_local9.x = (_local13.x - ((_local13.x - _local10.x) * _local7));
_local9.y = (_local13.y - ((_local13.y - _local10.y) * _local7));
_local9.z = (_local13.z - ((_local13.z - _local10.z) * _local7));
};
_local8++;
};
};
_local11 = _local14;
_local10 = _local13;
_local12++;
};
return (_local8);
}
public function get thickness():Number{
return (_thickness);
}
override public function clone():Material{
return (new WireMaterial(_thickness, _color, _alpha, _blendMode));
}
}
}//package com.alternativagame.engine3d
Section 53
//Matrix3D (com.alternativagame.type.Matrix3D)
package com.alternativagame.type {
public final class Matrix3D {
public var a:Number;
public var b:Number;
public var c:Number;
public var d:Number;
public var e:Number;
public var f:Number;
public var g:Number;
public var h:Number;
public var i:Number;
public var j:Number;
public var k:Number;
public var l:Number;
public function Matrix3D(_arg1:Number=1, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=1, _arg7:Number=0, _arg8:Number=0, _arg9:Number=0, _arg10:Number=0, _arg11:Number=1, _arg12:Number=0){
this.a = _arg1;
this.b = _arg2;
this.c = _arg3;
this.d = _arg4;
this.e = _arg5;
this.f = _arg6;
this.g = _arg7;
this.h = _arg8;
this.i = _arg9;
this.j = _arg10;
this.k = _arg11;
this.l = _arg12;
}
public function clone():Matrix3D{
return (new Matrix3D(a, b, c, d, e, f, g, h, i, j, k, l));
}
public function toString():String{
return (((((((((((((((((((((((("Matrix:\r" + a.toFixed(3)) + "\t") + b.toFixed(3)) + "\t") + c.toFixed(3)) + "\t") + d.toFixed(3)) + "\r") + e.toFixed(3)) + "\t") + f.toFixed(3)) + "\t") + g.toFixed(3)) + "\t") + h.toFixed(3)) + "\r") + i.toFixed(3)) + "\t") + j.toFixed(3)) + "\t") + k.toFixed(3)) + "\t") + l.toFixed(3)));
}
public function scale(_arg1:Number, _arg2:Number, _arg3:Number):void{
a = (a * _arg1);
b = (b * _arg1);
c = (c * _arg1);
d = (d * _arg1);
e = (e * _arg2);
f = (f * _arg2);
g = (g * _arg2);
h = (h * _arg2);
i = (i * _arg3);
j = (j * _arg3);
k = (k * _arg3);
l = (l * _arg3);
}
public function offset(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):void{
d = _arg1;
h = _arg2;
l = _arg3;
}
public function translate(_arg1:Number, _arg2:Number, _arg3:Number):void{
d = (d + _arg1);
h = (h + _arg2);
l = (l + _arg3);
}
public function equals(_arg1:Matrix3D, _arg2:Number=0):Boolean{
var _local3:Number = (a - _arg1.a);
var _local4:Number = (b - _arg1.b);
var _local5:Number = (c - _arg1.c);
var _local6:Number = (d - _arg1.d);
var _local7:Number = (e - _arg1.e);
var _local8:Number = (f - _arg1.f);
var _local9:Number = (g - _arg1.g);
var _local10:Number = (h - _arg1.h);
var _local11:Number = (i - _arg1.i);
var _local12:Number = (j - _arg1.j);
var _local13:Number = (k - _arg1.k);
var _local14:Number = (l - _arg1.l);
_local3 = ((_local3)<0) ? -(_local3) : _local3;
_local4 = ((_local4)<0) ? -(_local4) : _local4;
_local5 = ((_local5)<0) ? -(_local5) : _local5;
_local6 = ((_local6)<0) ? -(_local6) : _local6;
_local7 = ((_local7)<0) ? -(_local7) : _local7;
_local8 = ((_local8)<0) ? -(_local8) : _local8;
_local9 = ((_local9)<0) ? -(_local9) : _local9;
_local10 = ((_local10)<0) ? -(_local10) : _local10;
_local11 = ((_local11)<0) ? -(_local11) : _local11;
_local12 = ((_local12)<0) ? -(_local12) : _local12;
_local13 = ((_local13)<0) ? -(_local13) : _local13;
_local14 = ((_local14)<0) ? -(_local14) : _local14;
return ((((((((((((((((((((((((_local3 <= _arg2)) && ((_local4 <= _arg2)))) && ((_local5 <= _arg2)))) && ((_local6 <= _arg2)))) && ((_local7 <= _arg2)))) && ((_local8 <= _arg2)))) && ((_local9 <= _arg2)))) && ((_local10 <= _arg2)))) && ((_local11 <= _arg2)))) && ((_local12 <= _arg2)))) && ((_local13 <= _arg2)))) && ((_local14 <= _arg2))));
}
public function toIdentity():void{
a = 1;
b = 0;
c = 0;
d = 0;
e = 0;
f = 1;
g = 0;
h = 0;
i = 0;
j = 0;
k = 1;
l = 0;
}
public function convertToScreen():void{
var _local1:Number = e;
var _local2:Number = f;
var _local3:Number = g;
var _local4:Number = h;
e = -(i);
f = -(j);
g = -(k);
h = -(l);
i = -(_local1);
j = -(_local2);
k = -(_local3);
l = -(_local4);
}
public function rotate(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Number = Math.cos(_arg1);
var _local5:Number = Math.sin(_arg1);
var _local6:Number = Math.cos(_arg2);
var _local7:Number = Math.sin(_arg2);
var _local8:Number = Math.cos(_arg3);
var _local9:Number = Math.sin(_arg3);
var _local10:Number = (_local8 * _local7);
var _local11:Number = (_local9 * _local7);
var _local12:Number = (_local8 * _local6);
var _local13:Number = ((_local10 * _local5) - (_local9 * _local4));
var _local14:Number = ((_local10 * _local4) + (_local9 * _local5));
var _local15:Number = (_local9 * _local6);
var _local16:Number = ((_local11 * _local5) + (_local8 * _local4));
var _local17:Number = ((_local11 * _local4) - (_local8 * _local5));
var _local18:Number = -(_local7);
var _local19:Number = (_local6 * _local5);
var _local20:Number = (_local6 * _local4);
var _local21:Number = a;
var _local22:Number = b;
var _local23:Number = c;
var _local24:Number = d;
var _local25:Number = e;
var _local26:Number = f;
var _local27:Number = g;
var _local28:Number = h;
var _local29:Number = i;
var _local30:Number = j;
var _local31:Number = k;
var _local32:Number = l;
a = (((_local12 * _local21) + (_local13 * _local25)) + (_local14 * _local29));
b = (((_local12 * _local22) + (_local13 * _local26)) + (_local14 * _local30));
c = (((_local12 * _local23) + (_local13 * _local27)) + (_local14 * _local31));
d = (((_local12 * _local24) + (_local13 * _local28)) + (_local14 * _local32));
e = (((_local15 * _local21) + (_local16 * _local25)) + (_local17 * _local29));
f = (((_local15 * _local22) + (_local16 * _local26)) + (_local17 * _local30));
g = (((_local15 * _local23) + (_local16 * _local27)) + (_local17 * _local31));
h = (((_local15 * _local24) + (_local16 * _local28)) + (_local17 * _local32));
i = (((_local18 * _local21) + (_local19 * _local25)) + (_local20 * _local29));
j = (((_local18 * _local22) + (_local19 * _local26)) + (_local20 * _local30));
k = (((_local18 * _local23) + (_local19 * _local27)) + (_local20 * _local31));
l = (((_local18 * _local24) + (_local19 * _local28)) + (_local20 * _local32));
}
public function inverseTransform(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1, _arg8:Number=1, _arg9:Number=1):void{
var _local10:Number = Math.cos(-(_arg4));
var _local11:Number = Math.sin(-(_arg4));
var _local12:Number = Math.cos(-(_arg5));
var _local13:Number = Math.sin(-(_arg5));
var _local14:Number = Math.cos(-(_arg6));
var _local15:Number = Math.sin(-(_arg6));
var _local16:Number = (_local11 * _local13);
var _local17:Number = (1 / _arg7);
var _local18:Number = (1 / _arg8);
var _local19:Number = (1 / _arg9);
var _local20:Number = (_local12 * _local17);
var _local21:Number = (_local10 * _local18);
var _local22:Number = (_local11 * _local19);
var _local23:Number = (_local10 * _local19);
var _local24:Number = (_local14 * _local20);
var _local25:Number = (-(_local15) * _local20);
var _local26:Number = (_local13 * _local17);
var _local27:Number = -((((_local24 * _arg1) + (_local25 * _arg2)) + (_local26 * _arg3)));
var _local28:Number = ((_local15 * _local21) + ((_local16 * _local14) * _local18));
var _local29:Number = ((_local14 * _local21) - ((_local16 * _local15) * _local18));
var _local30:Number = ((-(_local11) * _local12) * _local18);
var _local31:Number = -((((_local28 * _arg1) + (_local29 * _arg2)) + (_local30 * _arg3)));
var _local32:Number = ((_local15 * _local22) - ((_local14 * _local13) * _local23));
var _local33:Number = ((_local14 * _local22) + ((_local13 * _local15) * _local23));
var _local34:Number = (_local12 * _local23);
var _local35:Number = -((((_local32 * _arg1) + (_local33 * _arg2)) + (_local34 * _arg3)));
var _local36:Number = a;
var _local37:Number = b;
var _local38:Number = c;
var _local39:Number = d;
var _local40:Number = e;
var _local41:Number = f;
var _local42:Number = g;
var _local43:Number = h;
var _local44:Number = i;
var _local45:Number = j;
var _local46:Number = k;
var _local47:Number = l;
a = (((_local24 * _local36) + (_local25 * _local40)) + (_local26 * _local44));
b = (((_local24 * _local37) + (_local25 * _local41)) + (_local26 * _local45));
c = (((_local24 * _local38) + (_local25 * _local42)) + (_local26 * _local46));
d = ((((_local24 * _local39) + (_local25 * _local43)) + (_local26 * _local47)) + _local27);
e = (((_local28 * _local36) + (_local29 * _local40)) + (_local30 * _local44));
f = (((_local28 * _local37) + (_local29 * _local41)) + (_local30 * _local45));
g = (((_local28 * _local38) + (_local29 * _local42)) + (_local30 * _local46));
h = ((((_local28 * _local39) + (_local29 * _local43)) + (_local30 * _local47)) + _local31);
i = (((_local32 * _local36) + (_local33 * _local40)) + (_local34 * _local44));
j = (((_local32 * _local37) + (_local33 * _local41)) + (_local34 * _local45));
k = (((_local32 * _local38) + (_local33 * _local42)) + (_local34 * _local46));
l = ((((_local32 * _local39) + (_local33 * _local43)) + (_local34 * _local47)) + _local35);
}
public function invert():void{
var _local1:Number = a;
var _local2:Number = b;
var _local3:Number = c;
var _local4:Number = d;
var _local5:Number = e;
var _local6:Number = f;
var _local7:Number = g;
var _local8:Number = h;
var _local9:Number = i;
var _local10:Number = j;
var _local11:Number = k;
var _local12:Number = l;
var _local13:Number = (((((((-(_local3) * _local6) * _local9) + ((_local2 * _local7) * _local9)) + ((_local3 * _local5) * _local10)) - ((_local1 * _local7) * _local10)) - ((_local2 * _local5) * _local11)) + ((_local1 * _local6) * _local11));
a = (((-(_local7) * _local10) + (_local6 * _local11)) / _local13);
b = (((_local3 * _local10) - (_local2 * _local11)) / _local13);
c = (((-(_local3) * _local6) + (_local2 * _local7)) / _local13);
d = ((((((((_local4 * _local7) * _local10) - ((_local3 * _local8) * _local10)) - ((_local4 * _local6) * _local11)) + ((_local2 * _local8) * _local11)) + ((_local3 * _local6) * _local12)) - ((_local2 * _local7) * _local12)) / _local13);
e = (((_local7 * _local9) - (_local5 * _local11)) / _local13);
f = (((-(_local3) * _local9) + (_local1 * _local11)) / _local13);
g = (((_local3 * _local5) - (_local1 * _local7)) / _local13);
h = ((((((((_local3 * _local8) * _local9) - ((_local4 * _local7) * _local9)) + ((_local4 * _local5) * _local11)) - ((_local1 * _local8) * _local11)) - ((_local3 * _local5) * _local12)) + ((_local1 * _local7) * _local12)) / _local13);
i = (((-(_local6) * _local9) + (_local5 * _local10)) / _local13);
j = (((_local2 * _local9) - (_local1 * _local10)) / _local13);
k = (((-(_local2) * _local5) + (_local1 * _local6)) / _local13);
l = ((((((((_local4 * _local6) * _local9) - ((_local2 * _local8) * _local9)) - ((_local4 * _local5) * _local10)) + ((_local1 * _local8) * _local10)) + ((_local2 * _local5) * _local12)) - ((_local1 * _local6) * _local12)) / _local13);
}
public function inverseCombine(_arg1:Matrix3D):void{
var _local2:Number = a;
var _local3:Number = b;
var _local4:Number = c;
var _local5:Number = d;
var _local6:Number = e;
var _local7:Number = f;
var _local8:Number = g;
var _local9:Number = h;
var _local10:Number = i;
var _local11:Number = j;
var _local12:Number = k;
var _local13:Number = l;
a = (((_local2 * _arg1.a) + (_local3 * _arg1.e)) + (_local4 * _arg1.i));
b = (((_local2 * _arg1.b) + (_local3 * _arg1.f)) + (_local4 * _arg1.j));
c = (((_local2 * _arg1.c) + (_local3 * _arg1.g)) + (_local4 * _arg1.k));
d = ((((_local2 * _arg1.d) + (_local3 * _arg1.h)) + (_local4 * _arg1.l)) + _local5);
e = (((_local6 * _arg1.a) + (_local7 * _arg1.e)) + (_local8 * _arg1.i));
f = (((_local6 * _arg1.b) + (_local7 * _arg1.f)) + (_local8 * _arg1.j));
g = (((_local6 * _arg1.c) + (_local7 * _arg1.g)) + (_local8 * _arg1.k));
h = ((((_local6 * _arg1.d) + (_local7 * _arg1.h)) + (_local8 * _arg1.l)) + _local9);
i = (((_local10 * _arg1.a) + (_local11 * _arg1.e)) + (_local12 * _arg1.i));
j = (((_local10 * _arg1.b) + (_local11 * _arg1.f)) + (_local12 * _arg1.j));
k = (((_local10 * _arg1.c) + (_local11 * _arg1.g)) + (_local12 * _arg1.k));
l = ((((_local10 * _arg1.d) + (_local11 * _arg1.h)) + (_local12 * _arg1.l)) + _local13);
}
public function toTransform(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1, _arg8:Number=1, _arg9:Number=1):void{
var _local10:Number = Math.cos(_arg4);
var _local11:Number = Math.sin(_arg4);
var _local12:Number = Math.cos(_arg5);
var _local13:Number = Math.sin(_arg5);
var _local14:Number = Math.cos(_arg6);
var _local15:Number = Math.sin(_arg6);
var _local16:Number = (_local14 * _local13);
var _local17:Number = (_local15 * _local13);
var _local18:Number = (_local12 * _arg7);
var _local19:Number = (_local11 * _arg8);
var _local20:Number = (_local10 * _arg8);
var _local21:Number = (_local10 * _arg9);
var _local22:Number = (_local11 * _arg9);
a = (_local14 * _local18);
b = ((_local16 * _local19) - (_local15 * _local20));
c = ((_local16 * _local21) + (_local15 * _local22));
d = _arg1;
e = (_local15 * _local18);
f = ((_local17 * _local19) + (_local14 * _local20));
g = ((_local17 * _local21) - (_local14 * _local22));
h = _arg2;
i = (-(_local13) * _arg7);
j = (_local12 * _local19);
k = (_local12 * _local21);
l = _arg3;
}
public function inverseRotate(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Number = Math.cos(-(_arg1));
var _local5:Number = Math.sin(-(_arg1));
var _local6:Number = Math.cos(-(_arg2));
var _local7:Number = Math.sin(-(_arg2));
var _local8:Number = Math.cos(-(_arg3));
var _local9:Number = Math.sin(-(_arg3));
var _local10:Number = (_local5 * _local7);
var _local11:Number = (_local6 * _local8);
var _local12:Number = (-(_local6) * _local9);
var _local13:Number = _local7;
var _local14:Number = ((_local4 * _local9) + (_local10 * _local8));
var _local15:Number = ((_local4 * _local8) - (_local10 * _local9));
var _local16:Number = (-(_local5) * _local6);
var _local17:Number = ((_local5 * _local9) - ((_local4 * _local8) * _local7));
var _local18:Number = ((_local5 * _local8) + ((_local4 * _local7) * _local9));
var _local19:Number = (_local4 * _local6);
var _local20:Number = a;
var _local21:Number = b;
var _local22:Number = c;
var _local23:Number = d;
var _local24:Number = e;
var _local25:Number = f;
var _local26:Number = g;
var _local27:Number = h;
var _local28:Number = i;
var _local29:Number = j;
var _local30:Number = k;
var _local31:Number = l;
a = (((_local11 * _local20) + (_local12 * _local24)) + (_local13 * _local28));
b = (((_local11 * _local21) + (_local12 * _local25)) + (_local13 * _local29));
c = (((_local11 * _local22) + (_local12 * _local26)) + (_local13 * _local30));
d = (((_local11 * _local23) + (_local12 * _local27)) + (_local13 * _local31));
e = (((_local14 * _local20) + (_local15 * _local24)) + (_local16 * _local28));
f = (((_local14 * _local21) + (_local15 * _local25)) + (_local16 * _local29));
g = (((_local14 * _local22) + (_local15 * _local26)) + (_local16 * _local30));
h = (((_local14 * _local23) + (_local15 * _local27)) + (_local16 * _local31));
i = (((_local17 * _local20) + (_local18 * _local24)) + (_local19 * _local28));
j = (((_local17 * _local21) + (_local18 * _local25)) + (_local19 * _local29));
k = (((_local17 * _local22) + (_local18 * _local26)) + (_local19 * _local30));
l = (((_local17 * _local23) + (_local18 * _local27)) + (_local19 * _local31));
}
public function copy(_arg1:Matrix3D):void{
a = _arg1.a;
b = _arg1.b;
c = _arg1.c;
d = _arg1.d;
e = _arg1.e;
f = _arg1.f;
g = _arg1.g;
h = _arg1.h;
i = _arg1.i;
j = _arg1.j;
k = _arg1.k;
l = _arg1.l;
}
public function inverseConvertToScreen():void{
var _local1:Number = b;
var _local2:Number = f;
var _local3:Number = j;
b = -(c);
f = -(g);
j = -(k);
c = -(_local1);
g = -(_local2);
k = -(_local3);
}
public function inverseScale(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Number = (1 / _arg1);
var _local5:Number = (1 / _arg2);
var _local6:Number = (1 / _arg3);
a = (a * _local4);
b = (b * _local4);
c = (c * _local4);
d = (d * _local4);
e = (e * _local5);
f = (f * _local5);
g = (g * _local5);
h = (h * _local5);
i = (i * _local6);
j = (j * _local6);
k = (k * _local6);
l = (l * _local6);
}
public function transform(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1, _arg8:Number=1, _arg9:Number=1):void{
var _local10:Number = Math.cos(_arg4);
var _local11:Number = Math.sin(_arg4);
var _local12:Number = Math.cos(_arg5);
var _local13:Number = Math.sin(_arg5);
var _local14:Number = Math.cos(_arg6);
var _local15:Number = Math.sin(_arg6);
var _local16:Number = (_local14 * _local13);
var _local17:Number = (_local15 * _local13);
var _local18:Number = (_local12 * _arg7);
var _local19:Number = (_local11 * _arg8);
var _local20:Number = (_local10 * _arg8);
var _local21:Number = (_local10 * _arg9);
var _local22:Number = (_local11 * _arg9);
var _local23:Number = (_local14 * _local18);
var _local24:Number = ((_local16 * _local19) - (_local15 * _local20));
var _local25:Number = ((_local16 * _local21) + (_local15 * _local22));
var _local26:Number = _arg1;
var _local27:Number = (_local15 * _local18);
var _local28:Number = ((_local17 * _local19) + (_local14 * _local20));
var _local29:Number = ((_local17 * _local21) - (_local14 * _local22));
var _local30:Number = _arg2;
var _local31:Number = (-(_local13) * _arg7);
var _local32:Number = (_local12 * _local19);
var _local33:Number = (_local12 * _local21);
var _local34:Number = _arg3;
var _local35:Number = a;
var _local36:Number = b;
var _local37:Number = c;
var _local38:Number = d;
var _local39:Number = e;
var _local40:Number = f;
var _local41:Number = g;
var _local42:Number = h;
var _local43:Number = i;
var _local44:Number = j;
var _local45:Number = k;
var _local46:Number = l;
a = (((_local23 * _local35) + (_local24 * _local39)) + (_local25 * _local43));
b = (((_local23 * _local36) + (_local24 * _local40)) + (_local25 * _local44));
c = (((_local23 * _local37) + (_local24 * _local41)) + (_local25 * _local45));
d = ((((_local23 * _local38) + (_local24 * _local42)) + (_local25 * _local46)) + _local26);
e = (((_local27 * _local35) + (_local28 * _local39)) + (_local29 * _local43));
f = (((_local27 * _local36) + (_local28 * _local40)) + (_local29 * _local44));
g = (((_local27 * _local37) + (_local28 * _local41)) + (_local29 * _local45));
h = ((((_local27 * _local38) + (_local28 * _local42)) + (_local29 * _local46)) + _local30);
i = (((_local31 * _local35) + (_local32 * _local39)) + (_local33 * _local43));
j = (((_local31 * _local36) + (_local32 * _local40)) + (_local33 * _local44));
k = (((_local31 * _local37) + (_local32 * _local41)) + (_local33 * _local45));
l = ((((_local31 * _local38) + (_local32 * _local42)) + (_local33 * _local46)) + _local34);
}
public function translateLocal(_arg1:Number, _arg2:Number, _arg3:Number):void{
d = (d + (((a * _arg1) + (b * _arg2)) + (c * _arg3)));
h = (h + (((e * _arg1) + (f * _arg2)) + (g * _arg3)));
l = (l + (((i * _arg1) + (j * _arg2)) + (k * _arg3)));
}
public function inverseTranslate(_arg1:Number, _arg2:Number, _arg3:Number):void{
d = (d - _arg1);
h = (h - _arg2);
l = (l - _arg3);
}
public function combine(_arg1:Matrix3D):void{
var _local2:Number = a;
var _local3:Number = b;
var _local4:Number = c;
var _local5:Number = d;
var _local6:Number = e;
var _local7:Number = f;
var _local8:Number = g;
var _local9:Number = h;
var _local10:Number = i;
var _local11:Number = j;
var _local12:Number = k;
var _local13:Number = l;
a = (((_arg1.a * _local2) + (_arg1.b * _local6)) + (_arg1.c * _local10));
b = (((_arg1.a * _local3) + (_arg1.b * _local7)) + (_arg1.c * _local11));
c = (((_arg1.a * _local4) + (_arg1.b * _local8)) + (_arg1.c * _local12));
d = ((((_arg1.a * _local5) + (_arg1.b * _local9)) + (_arg1.c * _local13)) + _arg1.d);
e = (((_arg1.e * _local2) + (_arg1.f * _local6)) + (_arg1.g * _local10));
f = (((_arg1.e * _local3) + (_arg1.f * _local7)) + (_arg1.g * _local11));
g = (((_arg1.e * _local4) + (_arg1.f * _local8)) + (_arg1.g * _local12));
h = ((((_arg1.e * _local5) + (_arg1.f * _local9)) + (_arg1.g * _local13)) + _arg1.h);
i = (((_arg1.i * _local2) + (_arg1.j * _local6)) + (_arg1.k * _local10));
j = (((_arg1.i * _local3) + (_arg1.j * _local7)) + (_arg1.k * _local11));
k = (((_arg1.i * _local4) + (_arg1.j * _local8)) + (_arg1.k * _local12));
l = ((((_arg1.i * _local5) + (_arg1.j * _local9)) + (_arg1.k * _local13)) + _arg1.l);
}
public static function inverseTranslationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
return (new Matrix3D(1, 0, 0, -(_arg1), 0, 1, 0, -(_arg2), 0, 0, 1, -(_arg3)));
}
public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
return (new Matrix3D(1, 0, 0, _arg1, 0, 1, 0, _arg2, 0, 0, 1, _arg3));
}
public static function inverseRotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Number = Math.cos(-(_arg1));
var _local5:Number = Math.sin(-(_arg1));
var _local6:Number = Math.cos(-(_arg2));
var _local7:Number = Math.sin(-(_arg2));
var _local8:Number = Math.cos(-(_arg3));
var _local9:Number = Math.sin(-(_arg3));
var _local10:Number = (_local5 * _local7);
return (new Matrix3D((_local6 * _local8), (-(_local6) * _local9), _local7, 0, ((_local4 * _local9) + (_local10 * _local8)), ((_local4 * _local8) - (_local10 * _local9)), (-(_local5) * _local6), 0, ((_local5 * _local9) - ((_local4 * _local8) * _local7)), ((_local5 * _local8) + ((_local4 * _local7) * _local9)), (_local4 * _local6), 0));
}
public static function inverseTransformationMatrix(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1, _arg8:Number=1, _arg9:Number=1):Matrix3D{
var _local10:Number = Math.cos(-(_arg4));
var _local11:Number = Math.sin(-(_arg4));
var _local12:Number = Math.cos(-(_arg5));
var _local13:Number = Math.sin(-(_arg5));
var _local14:Number = Math.cos(-(_arg6));
var _local15:Number = Math.sin(-(_arg6));
var _local16:Number = (_local11 * _local13);
var _local17:Number = (1 / _arg7);
var _local18:Number = (1 / _arg8);
var _local19:Number = (1 / _arg9);
var _local20:Number = (_local12 * _local17);
var _local21:Number = (_local10 * _local18);
var _local22:Number = (_local11 * _local19);
var _local23:Number = (_local10 * _local19);
var _local24:Number = (_local14 * _local20);
var _local25:Number = (-(_local15) * _local20);
var _local26:Number = (_local13 * _local17);
var _local27:Number = ((_local15 * _local21) + ((_local16 * _local14) * _local18));
var _local28:Number = ((_local14 * _local21) - ((_local16 * _local15) * _local18));
var _local29:Number = ((-(_local11) * _local12) * _local18);
var _local30:Number = ((_local15 * _local22) - ((_local14 * _local13) * _local23));
var _local31:Number = ((_local14 * _local22) + ((_local13 * _local15) * _local23));
var _local32:Number = (_local12 * _local23);
return (new Matrix3D(_local24, _local25, _local26, -((((_local24 * _arg1) + (_local25 * _arg2)) + (_local26 * _arg3))), _local27, _local28, _local29, -((((_local27 * _arg1) + (_local28 * _arg2)) + (_local29 * _arg3))), _local30, _local31, _local32, -((((_local30 * _arg1) + (_local31 * _arg2)) + (_local32 * _arg3)))));
}
public static function inverseMatrix(_arg1:Matrix3D):Matrix3D{
var _local2:Number = (((((((-(_arg1.c) * _arg1.f) * _arg1.i) + ((_arg1.b * _arg1.g) * _arg1.i)) + ((_arg1.c * _arg1.e) * _arg1.j)) - ((_arg1.a * _arg1.g) * _arg1.j)) - ((_arg1.b * _arg1.e) * _arg1.k)) + ((_arg1.a * _arg1.f) * _arg1.k));
var _local3:Number = (((-(_arg1.g) * _arg1.j) + (_arg1.f * _arg1.k)) / _local2);
var _local4:Number = (((_arg1.c * _arg1.j) - (_arg1.b * _arg1.k)) / _local2);
var _local5:Number = (((-(_arg1.c) * _arg1.f) + (_arg1.b * _arg1.g)) / _local2);
var _local6:Number = ((((((((_arg1.d * _arg1.g) * _arg1.j) - ((_arg1.c * _arg1.h) * _arg1.j)) - ((_arg1.d * _arg1.f) * _arg1.k)) + ((_arg1.b * _arg1.h) * _arg1.k)) + ((_arg1.c * _arg1.f) * _arg1.l)) - ((_arg1.b * _arg1.g) * _arg1.l)) / _local2);
var _local7:Number = (((_arg1.g * _arg1.i) - (_arg1.e * _arg1.k)) / _local2);
var _local8:Number = (((-(_arg1.c) * _arg1.i) + (_arg1.a * _arg1.k)) / _local2);
var _local9:Number = (((_arg1.c * _arg1.e) - (_arg1.a * _arg1.g)) / _local2);
var _local10:Number = ((((((((_arg1.c * _arg1.h) * _arg1.i) - ((_arg1.d * _arg1.g) * _arg1.i)) + ((_arg1.d * _arg1.e) * _arg1.k)) - ((_arg1.a * _arg1.h) * _arg1.k)) - ((_arg1.c * _arg1.e) * _arg1.l)) + ((_arg1.a * _arg1.g) * _arg1.l)) / _local2);
var _local11:Number = (((-(_arg1.f) * _arg1.i) + (_arg1.e * _arg1.j)) / _local2);
var _local12:Number = (((_arg1.b * _arg1.i) - (_arg1.a * _arg1.j)) / _local2);
var _local13:Number = (((-(_arg1.b) * _arg1.e) + (_arg1.a * _arg1.f)) / _local2);
var _local14:Number = ((((((((_arg1.d * _arg1.f) * _arg1.i) - ((_arg1.b * _arg1.h) * _arg1.i)) - ((_arg1.d * _arg1.e) * _arg1.j)) + ((_arg1.a * _arg1.h) * _arg1.j)) + ((_arg1.b * _arg1.e) * _arg1.l)) - ((_arg1.a * _arg1.f) * _arg1.l)) / _local2);
return (new Matrix3D(_local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13, _local14));
}
public static function inverseScaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
return (new Matrix3D((1 / _arg1), 0, 0, 0, 0, (1 / _arg2), 0, 0, 0, 0, (1 / _arg3), 0));
}
public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
return (new Matrix3D(_arg1, 0, 0, 0, 0, _arg2, 0, 0, 0, 0, _arg3, 0));
}
public static function transformationMatrix(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1, _arg8:Number=1, _arg9:Number=1):Matrix3D{
var _local10:Number = Math.cos(_arg4);
var _local11:Number = Math.sin(_arg4);
var _local12:Number = Math.cos(_arg5);
var _local13:Number = Math.sin(_arg5);
var _local14:Number = Math.cos(_arg6);
var _local15:Number = Math.sin(_arg6);
var _local16:Number = (_local14 * _local13);
var _local17:Number = (_local15 * _local13);
var _local18:Number = (_local12 * _arg7);
var _local19:Number = (_local11 * _arg8);
var _local20:Number = (_local10 * _arg8);
var _local21:Number = (_local10 * _arg9);
var _local22:Number = (_local11 * _arg9);
return (new Matrix3D((_local14 * _local18), ((_local16 * _local19) - (_local15 * _local20)), ((_local16 * _local21) + (_local15 * _local22)), _arg1, (_local15 * _local18), ((_local17 * _local19) + (_local14 * _local20)), ((_local17 * _local21) - (_local14 * _local22)), _arg2, (-(_local13) * _arg7), (_local12 * _local19), (_local12 * _local21), _arg3));
}
public static function product(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
return (new Matrix3D((((_arg1.a * _arg2.a) + (_arg1.b * _arg2.e)) + (_arg1.c * _arg2.i)), (((_arg1.a * _arg2.b) + (_arg1.b * _arg2.f)) + (_arg1.c * _arg2.j)), (((_arg1.a * _arg2.c) + (_arg1.b * _arg2.g)) + (_arg1.c * _arg2.k)), ((((_arg1.a * _arg2.d) + (_arg1.b * _arg2.h)) + (_arg1.c * _arg2.l)) + _arg1.d), (((_arg1.e * _arg2.a) + (_arg1.f * _arg2.e)) + (_arg1.g * _arg2.i)), (((_arg1.e * _arg2.b) + (_arg1.f * _arg2.f)) + (_arg1.g * _arg2.j)), (((_arg1.e * _arg2.c) + (_arg1.f * _arg2.g)) + (_arg1.g * _arg2.k)), ((((_arg1.e * _arg2.d) + (_arg1.f * _arg2.h)) + (_arg1.g * _arg2.l)) + _arg1.h), (((_arg1.i * _arg2.a) + (_arg1.j * _arg2.e)) + (_arg1.k * _arg2.i)), (((_arg1.i * _arg2.b) + (_arg1.j * _arg2.f)) + (_arg1.k * _arg2.j)), (((_arg1.i * _arg2.c) + (_arg1.j * _arg2.g)) + (_arg1.k * _arg2.k)), ((((_arg1.i * _arg2.d) + (_arg1.j * _arg2.h)) + (_arg1.k * _arg2.l)) + _arg1.l)));
}
public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Number = Math.cos(_arg1);
var _local5:Number = Math.sin(_arg1);
var _local6:Number = Math.cos(_arg2);
var _local7:Number = Math.sin(_arg2);
var _local8:Number = Math.cos(_arg3);
var _local9:Number = Math.sin(_arg3);
var _local10:Number = (_local8 * _local7);
var _local11:Number = (_local9 * _local7);
return (new Matrix3D((_local8 * _local6), ((_local10 * _local5) - (_local9 * _local4)), ((_local10 * _local4) + (_local9 * _local5)), 0, (_local9 * _local6), ((_local11 * _local5) + (_local8 * _local4)), ((_local11 * _local4) - (_local8 * _local5)), 0, -(_local7), (_local6 * _local5), (_local6 * _local4), 0));
}
}
}//package com.alternativagame.type
Section 54
//Point3D (com.alternativagame.type.Point3D)
package com.alternativagame.type {
import flash.geom.*;
import com.alternativagame.utility.*;
public final class Point3D {
public var x:Number;
public var y:Number;
public var z:Number;
public function Point3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
public function floor():void{
x = Math.floor(x);
y = Math.floor(y);
z = Math.floor(z);
}
public function add(_arg1:Point3D):void{
x = (x + _arg1.x);
y = (y + _arg1.y);
z = (z + _arg1.z);
}
public function toString():String{
return (((((("X: " + x.toFixed(3)) + " Y:") + y.toFixed(3)) + " Z:") + z.toFixed(3)));
}
public function multiply(_arg1:Number):void{
x = (x * _arg1);
y = (y * _arg1);
z = (z * _arg1);
}
public function transform(_arg1:Matrix3D):void{
var _local2:Number = x;
var _local3:Number = y;
var _local4:Number = z;
x = ((((_arg1.a * _local2) + (_arg1.b * _local3)) + (_arg1.c * _local4)) + _arg1.d);
y = ((((_arg1.e * _local2) + (_arg1.f * _local3)) + (_arg1.g * _local4)) + _arg1.h);
z = ((((_arg1.i * _local2) + (_arg1.j * _local3)) + (_arg1.k * _local4)) + _arg1.l);
}
public function get length():Number{
return (Math.sqrt((((x * x) + (y * y)) + (z * z))));
}
public function clone():Point3D{
return (new Point3D(x, y, z));
}
public function set length(_arg1:Number):void{
var _local2:Number;
if (((((!((x == 0))) || (!((y == 0))))) || (!((z == 0))))){
_local2 = (_arg1 / length);
x = (x * _local2);
y = (y * _local2);
z = (z * _local2);
} else {
z = _arg1;
};
}
public function normalize():void{
var _local1:Number;
if (((((!((x == 0))) || (!((y == 0))))) || (!((z == 0))))){
_local1 = Math.sqrt((((x * x) + (y * y)) + (z * z)));
x = (x / _local1);
y = (y / _local1);
z = (z / _local1);
} else {
z = 1;
};
}
public function get lengthSqr():Number{
return ((((x * x) + (y * y)) + (z * z)));
}
public function reset():void{
x = 0;
y = 0;
z = 0;
}
public function copy(_arg1:Point3D):void{
x = _arg1.x;
y = _arg1.y;
z = _arg1.z;
}
public function invert():void{
x = -(x);
y = -(y);
z = -(z);
}
public function subtract(_arg1:Point3D):void{
x = (x - _arg1.x);
y = (y - _arg1.y);
z = (z - _arg1.z);
}
public function toPoint():Point{
return (new Point(x, y));
}
public function round():void{
x = Math.round(x);
y = Math.round(y);
z = Math.round(z);
}
public function equals(_arg1:Point3D, _arg2:Number=0):Boolean{
return (((((((((((((x - _arg1.x) <= _arg2)) && (((x - _arg1.x) >= -(_arg2))))) && (((y - _arg1.y) <= _arg2)))) && (((y - _arg1.y) >= -(_arg2))))) && (((z - _arg1.z) <= _arg2)))) && (((z - _arg1.z) >= -(_arg2)))));
}
public static function cross(_arg1:Point3D, _arg2:Point3D):Point3D{
return (new Point3D(((_arg1.y * _arg2.z) - (_arg1.z * _arg2.y)), ((_arg1.z * _arg2.x) - (_arg1.x * _arg2.z)), ((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))));
}
public static function cross2D(_arg1:Point3D, _arg2:Point3D):Number{
return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
}
public static function angle(_arg1:Point3D, _arg2:Point3D):Number{
var _local3:Number = (_arg1.length * _arg2.length);
var _local4:Number = ((_local3)!=0) ? (dot(_arg1, _arg2) / _local3) : 1;
return (Math.acos(_local4));
}
public static function average(_arg1:Point3D, _arg2:Point3D=null, _arg3:Point3D=null, _arg4:Point3D=null):Point3D{
if (_arg2 == null){
return (_arg1.clone());
};
if (_arg3 == null){
return (new Point3D(((_arg1.x + _arg2.x) * 0.5), ((_arg1.y + _arg2.y) * 0.5), ((_arg1.z + _arg2.z) * 0.5)));
};
if (_arg4 == null){
return (new Point3D((((_arg1.x + _arg2.x) + _arg3.x) / 3), (((_arg1.y + _arg2.y) + _arg3.y) / 3), (((_arg1.z + _arg2.z) + _arg3.z) / 3)));
};
return (new Point3D(((((_arg1.x + _arg2.x) + _arg3.x) + _arg4.x) * 0.25), ((((_arg1.y + _arg2.y) + _arg3.y) + _arg4.y) * 0.25), ((((_arg1.z + _arg2.z) + _arg3.z) + _arg4.z) / 0.25)));
}
public static function random(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Point3D{
return (new Point3D(MathUtility.random(_arg1, _arg2), MathUtility.random(_arg3, _arg4), MathUtility.random(_arg5, _arg6)));
}
public static function interpolate(_arg1:Point3D, _arg2:Point3D, _arg3:Number=0.5):Point3D{
return (new Point3D((_arg1.x + ((_arg2.x - _arg1.x) * _arg3)), (_arg1.y + ((_arg2.y - _arg1.y) * _arg3)), (_arg1.z + ((_arg2.z - _arg1.z) * _arg3))));
}
public static function dot(_arg1:Point3D, _arg2:Point3D):Number{
return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)));
}
public static function sum(_arg1:Point3D, _arg2:Point3D):Point3D{
return (new Point3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z)));
}
public static function dot2D(_arg1:Point3D, _arg2:Point3D):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function difference(_arg1:Point3D, _arg2:Point3D):Point3D{
return (new Point3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z)));
}
public static function angleFast(_arg1:Point3D, _arg2:Point3D):Number{
var _local3:Number = dot(_arg1, _arg2);
if (Math.abs(_local3) > 1){
_local3 = ((_local3)>0) ? 1 : -1;
};
return (Math.acos(_local3));
}
}
}//package com.alternativagame.type
Section 55
//Set (com.alternativagame.type.Set)
package com.alternativagame.type {
import flash.utils.*;
import com.alternativagame.utility.*;
public final class Set extends Dictionary {
private var weakKeys:Boolean;
public function Set(_arg1:Boolean=false){
this.weakKeys = _arg1;
super(_arg1);
}
public function add(_arg1):void{
this[_arg1] = true;
}
public function transferToArray(_arg1:Array):void{
var _local2:*;
for (_local2 in this) {
_arg1.push(_local2);
delete this[_local2];
};
}
public function concatExcluding(_arg1:Set, _arg2:Set):void{
var _local3:*;
for (_local3 in _arg1) {
if (!_arg2.has(_local3)){
this[_local3] = _local3;
};
};
}
public function remove(_arg1):void{
delete this[_arg1];
}
public function get length():uint{
var _local2:*;
var _local1:uint;
for (_local2 in this) {
_local1++;
};
return (_local1);
}
public function take(){
var _local1:*;
for (_local1 in this) {
delete this[_local1];
return (_local1);
};
return (null);
}
public function isEmpty():Boolean{
var _local1:*;
for (_local1 in this) {
return (false);
};
return (true);
}
public function transfer(_arg1:Set):void{
var _local2:*;
for (_local2 in _arg1) {
this[_local2] = true;
delete _arg1[_local2];
};
}
public function clear():void{
var _local1:*;
for (_local1 in this) {
delete this[_local1];
};
}
public function any(){
var _local3:*;
var _local1:uint;
var _local2:uint = MathUtility.random(0, length);
for (_local3 in this) {
if (_local1 == _local2){
return (_local3);
};
_local1++;
};
return (null);
}
public function first(){
var _local1:*;
for (_local1 in this) {
return (_local1);
};
return (null);
}
public function isSingle():Boolean{
var _local2:*;
var _local1:Boolean;
for (_local2 in this) {
if (_local1){
return (false);
};
_local1 = true;
};
return (_local1);
}
public function concat(_arg1:Set):void{
var _local2:*;
for (_local2 in _arg1) {
this[_local2] = true;
};
}
public function addToArray(_arg1:Array):void{
var _local2:*;
for (_local2 in this) {
_arg1.push(_local2);
};
}
public function toString():String{
var _local2:*;
var _local1 = "";
for (_local2 in this) {
_local1 = (_local1 + ("," + _local2.toString()));
};
return (_local1.substring(1));
}
public function has(_arg1):Boolean{
return (this[_arg1]);
}
public function subtract(_arg1:Set):void{
var _local2:*;
for (_local2 in _arg1) {
delete this[_local2];
};
}
public function clone():Set{
var _local2:*;
var _local1:Set = new Set(weakKeys);
for (_local2 in this) {
_local1[_local2] = true;
};
return (_local1);
}
public function toArray():Array{
var _local2:*;
var _local1:Array = new Array();
for (_local2 in this) {
_local1.push(_local2);
};
return (_local1);
}
}
}//package com.alternativagame.type
Section 56
//TextureData (com.alternativagame.type.TextureData)
package com.alternativagame.type {
import flash.display.*;
public class TextureData {
public var width:uint;
public var height:uint;
public var bitmapData:BitmapData;
public var name:String;
public function TextureData(_arg1:BitmapData, _arg2:String=null){
if (_arg1 == null){
throw (new Error("Невозможно создать данные текстуры, т.к. указана null-текстура"));
};
this.bitmapData = _arg1;
width = _arg1.width;
height = _arg1.height;
this.name = _arg2;
}
public function toString():String{
return (((((("[TextureData " + ((name)!=null) ? name : "") + width) + "x") + height) + "]"));
}
}
}//package com.alternativagame.type
Section 57
//BitmapUtility (com.alternativagame.utility.BitmapUtility)
package com.alternativagame.utility {
import flash.geom.*;
import flash.display.*;
public class BitmapUtility {
public static function getNonTransparentRect(_arg1:BitmapData):Rectangle{
return ((_arg1.transparent) ? _arg1.getColorBoundsRect(4278190080, 0, false) : _arg1.rect);
}
public static function getFragment(_arg1:BitmapData, _arg2:Rectangle):BitmapData{
var _local3:BitmapData = new BitmapData(_arg2.width, _arg2.height, _arg1.transparent, 0);
_local3.copyPixels(_arg1, _arg2, new Point());
return (_local3);
}
public static function mergeBitmapAlpha(_arg1:BitmapData, _arg2:BitmapData, _arg3:Boolean=false):BitmapData{
var _local4:BitmapData = new BitmapData(_arg1.width, _arg1.height);
_local4.copyPixels(_arg1, _arg1.rect, new Point());
_local4.copyChannel(_arg2, _arg2.rect, new Point(), BitmapDataChannel.RED, BitmapDataChannel.ALPHA);
if (_arg3){
_arg1.dispose();
_arg2.dispose();
};
return (_local4);
}
}
}//package com.alternativagame.utility
Section 58
//ColorUtility (com.alternativagame.utility.ColorUtility)
package com.alternativagame.utility {
public class ColorUtility {
public static const LIGHT_MAGENTA:uint = 0xFF00FF;
public static const LIGHT_BLUE:uint = 0xFF;
public static const MAGENTA:uint = 0x7F007F;
public static const YELLOW:uint = 0xFFFF00;
public static const LIGHT_CYAN:uint = 0xFFFF;
public static const BROWN:uint = 0x7F7F00;
public static const LIGHT_GREEN:uint = 0xFF00;
public static const BLACK:uint = 0;
public static const BLUE:uint = 127;
public static const GREEN:uint = 0x7F00;
public static const LIGHT_RED:uint = 0xFF0000;
public static const CYAN:uint = 0x7F7F;
public static const WHITE:uint = 0xFFFFFF;
public static const RED:uint = 0x7F0000;
public static const GRAY:uint = 0x7F7F7F;
public static function interpolate(_arg1:uint, _arg2:uint, _arg3:Number=0.5):uint{
var _local4:int = ((_arg1 & 0xFF0000) >>> 16);
_local4 = (_local4 + ((((_arg2 & 0xFF0000) >>> 16) - _local4) * _arg3));
var _local5:int = ((_arg1 & 0xFF00) >>> 8);
_local5 = (_local5 + ((((_arg2 & 0xFF00) >>> 8) - _local5) * _arg3));
var _local6 = (_arg1 & 0xFF);
_local6 = (_local6 + (((_arg2 & 0xFF) - _local6) * _arg3));
return (rgb(_local4, _local5, _local6));
}
public static function random(_arg1:uint=0, _arg2:uint=0xFF, _arg3:uint=0, _arg4:uint=0xFF, _arg5:uint=0, _arg6:uint=0xFF):uint{
return (rgb(MathUtility.random(_arg1, _arg2), MathUtility.random(_arg3, _arg4), MathUtility.random(_arg5, _arg6)));
}
public static function sum(_arg1:uint, _arg2:uint):uint{
var _local3:int = ((_arg1 & 0xFF0000) + (_arg2 & 0xFF0000));
var _local4:int = ((_arg1 & 0xFF00) + (_arg2 & 0xFF00));
var _local5:int = ((_arg1 & 0xFF) + (_arg2 & 0xFF));
return (((((_local3 >>> 24)) ? 0xFF0000 : _local3 + ((_local4 >>> 16)) ? 0xFF00 : _local4) + ((_local5 >>> 8)) ? 0xFF : _local5));
}
public static function red(_arg1:uint):uint{
return (((_arg1 & 0xFF0000) >>> 16));
}
public static function rgb(_arg1:int, _arg2:int, _arg3:int):uint{
return (((((_arg1)<0) ? 0 : ((_arg1 >>> 8)) ? 0xFF0000 : (_arg1 << 16) + ((_arg2)<0) ? 0 : ((_arg2 >>> 8)) ? 0xFF00 : (_arg2 << 8)) + ((_arg3)<0) ? 0 : ((_arg3 >>> 8)) ? 0xFF : _arg3));
}
public static function green(_arg1:uint):uint{
return (((_arg1 & 0xFF00) >>> 8));
}
public static function multiply(_arg1:uint, _arg2:Number):uint{
var _local3:int = (((_arg1 & 0xFF0000) >>> 16) * _arg2);
var _local4:int = (((_arg1 & 0xFF00) >>> 8) * _arg2);
var _local5:int = ((_arg1 & 0xFF) * _arg2);
return (rgb(_local3, _local4, _local5));
}
public static function blue(_arg1:uint):uint{
return ((_arg1 & 0xFF));
}
public static function difference(_arg1:uint, _arg2:uint):uint{
var _local3:int = ((_arg1 & 0xFF0000) - (_arg2 & 0xFF0000));
var _local4:int = ((_arg1 & 0xFF00) - (_arg2 & 0xFF00));
var _local5:int = ((_arg1 & 0xFF) - (_arg2 & 0xFF));
return (((((_local3)<0) ? 0 : _local3 + ((_local4)<0) ? 0 : _local4) + ((_local5)<0) ? 0 : _local5));
}
}
}//package com.alternativagame.utility
Section 59
//Loader3DS (com.alternativagame.utility.Loader3DS)
package com.alternativagame.utility {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public class Loader3DS extends EventDispatcher {
private var objectDatas:Array;
private var loader:Loader;
private var materialDatas:Array;
private var bitmaps:Array;
private var data:ByteArray;
private var path:String;
private var _content:Object3D;
private var sequence:Array;
private var version:uint;
private var animationDatas:Array;
private var counter:uint;
public function getString(_arg1:uint):String{
data.position = _arg1;
var _local2:uint = data.readByte();
var _local3 = "";
while (_local2 != 0) {
_local3 = (_local3 + String.fromCharCode(_local2));
_local2 = data.readByte();
};
return (_local3);
}
private function loadNextBitmap(_arg1:Event=null):void{
bitmaps[sequence[counter]] = Bitmap(loader.content).bitmapData;
counter++;
if (counter < sequence.length){
loader.load(new URLRequest((path + sequence[counter])));
} else {
buildContent();
};
}
private function parseMeshChunk(_arg1:ObjectData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
var _local8:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 16656:
parseVertices(_arg1, _local6);
break;
case 16704:
parseUVs(_arg1, _local6);
break;
case 16736:
parseMatrix(_arg1, _local6);
break;
case 16672:
_local8 = parseFaces(_arg1, _local6);
parseFacesChunk(_arg1, (_local6 + _local8), (_local7 - _local8));
break;
};
parseMeshChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parseObjectAnimationPivot(_arg1:AnimationData, _arg2:uint):void{
data.position = _arg2;
_arg1.pivot = new Point3D(data.readFloat(), data.readFloat(), data.readFloat());
}
private function parseObjectAnimationScale(_arg1:AnimationData, _arg2:uint):void{
data.position = (_arg2 + 20);
_arg1.scale = new Point3D(data.readFloat(), data.readFloat(), data.readFloat());
}
private function parseMaterialChunk(_arg1:MaterialData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 0xA000:
parseMaterialName(_arg1, _local6);
break;
case 40976:
break;
case 40992:
data.position = (_local6 + 6);
_arg1.color = ColorUtility.rgb(data.readUnsignedByte(), data.readUnsignedByte(), data.readUnsignedByte());
break;
case 41008:
break;
case 41024:
data.position = (_local6 + 6);
_arg1.glossiness = data.readUnsignedShort();
break;
case 41025:
data.position = (_local6 + 6);
_arg1.specular = data.readUnsignedShort();
break;
case 41040:
data.position = (_local6 + 6);
_arg1.transparency = data.readUnsignedShort();
break;
case 0xA200:
_arg1.diffuseMap = new MapData();
parseMapChunk(_arg1.diffuseMap, _local6, _local7);
break;
case 41786:
break;
case 41488:
break;
case 41520:
_arg1.normalMap = new MapData();
parseMapChunk(_arg1.normalMap, _local6, _local7);
break;
case 41788:
break;
case 41476:
break;
case 41789:
break;
case 41504:
break;
};
parseMaterialChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parseObjectAnimationPosition(_arg1:AnimationData, _arg2:uint):void{
data.position = (_arg2 + 20);
_arg1.position = new Point3D(data.readFloat(), data.readFloat(), data.readFloat());
}
private function parseObjectAnimationInfo(_arg1:AnimationData, _arg2:uint):void{
var _local3:String = getString(_arg2);
data.position = (((_arg2 + _local3.length) + 1) + 4);
_arg1.objectName = _local3;
_arg1.parentIndex = data.readUnsignedShort();
}
private function parseMaterialName(_arg1:MaterialData, _arg2:uint):void{
if (materialDatas == null){
materialDatas = new Array();
};
_arg1.name = getString(_arg2);
materialDatas[_arg1.name] = _arg1;
}
private function buildContent():void{
var _local1:uint;
var _local2:uint;
var _local3:MaterialData;
var _local4:String;
var _local5:String;
var _local6:ObjectData;
var _local7:Mesh;
var _local8:MapData;
var _local9:Matrix;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:AnimationData;
var _local14:Object3D;
_content = new Object3D();
for (_local4 in materialDatas) {
_local3 = materialDatas[_local4];
_local8 = _local3.diffuseMap;
_local9 = new Matrix();
if (_local8 != null){
_local10 = MathUtility.toRadian(_local8.rotation);
_local11 = Math.sin(_local10);
_local12 = Math.cos(_local10);
_local9.translate(-(_local8.offsetU), _local8.offsetV);
_local9.translate(-0.5, -0.5);
_local9.rotate(-(_local10));
_local9.scale(_local8.scaleU, _local8.scaleV);
_local9.translate(0.5, 0.5);
};
_local3.matrix = _local9;
};
if (animationDatas != null){
if (objectDatas != null){
_local2 = animationDatas.length;
_local1 = 0;
while (_local1 < _local2) {
_local13 = animationDatas[_local1];
_local5 = _local13.objectName;
_local6 = objectDatas[_local5];
if (((!((_local6 == null))) && (!((_local6.vertices == null))))){
_local7 = new Mesh(_local5);
_local13.object = _local7;
buildObject(_local13);
buildMesh(_local7, _local6, _local13);
} else {
_local14 = new Object3D(_local5);
_local13.object = _local14;
buildObject(_local13);
};
_local1++;
};
buildHierarchy(_content, 0, (_local2 - 1));
};
} else {
for (_local5 in objectDatas) {
_local6 = objectDatas[_local5];
if (_local6.vertices != null){
_local7 = new Mesh(_local5);
buildMesh(_local7, _local6, null);
_content.addObject(_local7);
};
};
};
dispatchEvent(new Event(Event.COMPLETE));
}
private function parseVersion(_arg1:uint):void{
data.position = _arg1;
version = data.readUnsignedInt();
}
private function parseObjectChunk(_arg1:ObjectData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 0x4100:
parseMeshChunk(_arg1, _local6, _local7);
break;
case 0x4600:
break;
case 0x4700:
break;
};
parseObjectChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parse3DSChunk(_arg1:uint, _arg2:uint):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
if (_arg2 > 6){
data.position = _arg1;
_local3 = data.readUnsignedShort();
_local4 = data.readUnsignedInt();
_local5 = (_arg1 + 6);
_local6 = (_local4 - 6);
switch (_local3){
case 0x4D4D:
parseMainChunk(_local5, _local6);
break;
};
parse3DSChunk((_arg1 + _local4), (_arg2 - _local4));
} else {
loadBitmaps();
};
}
private function parseObjectAnimationChunk(_arg1:AnimationData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 45072:
parseObjectAnimationInfo(_arg1, _local6);
break;
case 45075:
parseObjectAnimationPivot(_arg1, _local6);
break;
case 45088:
parseObjectAnimationPosition(_arg1, _local6);
break;
case 45089:
parseObjectAnimationRotation(_arg1, _local6);
break;
case 45090:
parseObjectAnimationScale(_arg1, _local6);
break;
};
parseObjectAnimationChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parseFaces(_arg1:ObjectData, _arg2:uint):uint{
var _local5:FaceData;
data.position = _arg2;
var _local3:uint = data.readUnsignedShort();
_arg1.faces = new Array();
var _local4:uint;
while (_local4 < _local3) {
_local5 = new FaceData();
_local5.a = data.readUnsignedShort();
_local5.b = data.readUnsignedShort();
_local5.c = data.readUnsignedShort();
_arg1.faces.push(_local5);
data.position = (data.position + 2);
_local4++;
};
return ((2 + (_local3 * 8)));
}
private function on3DSLoad(_arg1:Event):void{
data = URLLoader(_arg1.target).data;
data.endian = Endian.LITTLE_ENDIAN;
parse3DSChunk(0, data.bytesAvailable);
}
private function parseMapChunk(_arg1:MapData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 0xA300:
_arg1.filename = getString(_local6).toLowerCase();
if (bitmaps == null){
bitmaps = new Array();
};
bitmaps[_arg1.filename] = null;
break;
case 41812:
data.position = _local6;
_arg1.scaleU = data.readFloat();
break;
case 41814:
data.position = _local6;
_arg1.scaleV = data.readFloat();
break;
case 41816:
data.position = _local6;
_arg1.offsetU = data.readFloat();
break;
case 41818:
data.position = _local6;
_arg1.offsetV = data.readFloat();
break;
case 41820:
data.position = _local6;
_arg1.rotation = data.readFloat();
break;
};
parseMapChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parseVertices(_arg1:ObjectData, _arg2:uint):void{
data.position = _arg2;
var _local3:uint = data.readUnsignedShort();
_arg1.vertices = new Array();
var _local4:uint;
while (_local4 < _local3) {
_arg1.vertices.push(new Point3D(data.readFloat(), data.readFloat(), data.readFloat()));
_local4++;
};
}
private function buildObject(_arg1:AnimationData):void{
var _local2:Object3D = _arg1.object;
if (_arg1.position != null){
_local2.x = _arg1.position.x;
_local2.y = _arg1.position.y;
_local2.z = _arg1.position.z;
};
if (_arg1.rotation != null){
_local2.rotX = _arg1.rotation.x;
_local2.rotY = _arg1.rotation.y;
_local2.rotZ = _arg1.rotation.z;
};
if (_arg1.scale != null){
_local2.scaleX = _arg1.scale.x;
_local2.scaleY = _arg1.scale.y;
_local2.scaleZ = _arg1.scale.z;
};
}
private function parseMainChunk(_arg1:uint, _arg2:uint):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
if (_arg2 > 6){
data.position = _arg1;
_local3 = data.readUnsignedShort();
_local4 = data.readUnsignedInt();
_local5 = (_arg1 + 6);
_local6 = (_local4 - 6);
switch (_local3){
case 2:
parseVersion(_local5);
break;
case 0x3D3D:
parse3DChunk(_local5, _local6);
break;
case 0xB000:
parseAnimationChunk(_local5, _local6);
break;
};
parseMainChunk((_arg1 + _local4), (_arg2 - _local4));
};
}
private function parseObject(_arg1:ObjectData, _arg2:uint):uint{
if (objectDatas == null){
objectDatas = new Array();
};
_arg1.name = getString(_arg2);
objectDatas[_arg1.name] = _arg1;
return ((_arg1.name.length + 1));
}
private function parseMatrix(_arg1:ObjectData, _arg2:uint):void{
data.position = _arg2;
_arg1.matrix = new Matrix3D();
_arg1.matrix.a = data.readFloat();
_arg1.matrix.e = data.readFloat();
_arg1.matrix.i = data.readFloat();
_arg1.matrix.b = data.readFloat();
_arg1.matrix.f = data.readFloat();
_arg1.matrix.j = data.readFloat();
_arg1.matrix.c = data.readFloat();
_arg1.matrix.g = data.readFloat();
_arg1.matrix.k = data.readFloat();
_arg1.matrix.d = data.readFloat();
_arg1.matrix.h = data.readFloat();
_arg1.matrix.l = data.readFloat();
}
private function parseAnimationChunk(_arg1:uint, _arg2:uint):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:AnimationData;
if (_arg2 > 6){
data.position = _arg1;
_local3 = data.readUnsignedShort();
_local4 = data.readUnsignedInt();
_local5 = (_arg1 + 6);
_local6 = (_local4 - 6);
switch (_local3){
case 45057:
case 45058:
case 45059:
case 45060:
case 45061:
case 45062:
case 45063:
_local7 = new AnimationData();
if (animationDatas == null){
animationDatas = new Array();
};
animationDatas.push(_local7);
parseObjectAnimationChunk(_local7, _local5, _local6);
break;
case 45064:
break;
};
parseAnimationChunk((_arg1 + _local4), (_arg2 - _local4));
};
}
private function loadBitmaps():void{
var _local1:String;
if (bitmaps != null){
counter = 0;
sequence = new Array();
for (_local1 in bitmaps) {
sequence.push(_local1);
};
loader = new Loader();
loader.load(new URLRequest((path + sequence[counter])));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadNextBitmap);
} else {
buildContent();
};
}
private function parseUVs(_arg1:ObjectData, _arg2:uint):void{
data.position = _arg2;
var _local3:uint = data.readUnsignedShort();
_arg1.uvs = new Array();
var _local4:uint;
while (_local4 < _local3) {
_arg1.uvs.push(new Point(data.readFloat(), data.readFloat()));
_local4++;
};
}
public function load(_arg1:String):void{
path = _arg1.substring(0, (_arg1.lastIndexOf("/") + 1));
var _local2:URLLoader = new URLLoader();
_local2.dataFormat = URLLoaderDataFormat.BINARY;
_local2.load(new URLRequest(_arg1));
_local2.addEventListener(Event.COMPLETE, on3DSLoad);
_content = null;
version = 0;
objectDatas = null;
animationDatas = null;
materialDatas = null;
bitmaps = null;
sequence = null;
if (loader != null){
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadNextBitmap);
loader.close();
loader = null;
};
}
private function buildHierarchy(_arg1:Object3D, _arg2:uint, _arg3:uint):void{
var _local4:AnimationData;
var _local5:Object3D;
var _local6:uint;
var _local7:uint;
if (_arg2 <= _arg3){
_local4 = animationDatas[_arg2];
_local5 = _local4.object;
_arg1.addObject(_local5);
_local6 = _local4.parentIndex;
_local7 = (_arg2 + 1);
while (_local7 <= _arg3) {
_local4 = animationDatas[_local7];
if (_local6 == _local4.parentIndex){
buildHierarchy(_local5, (_arg2 + 1), (_local7 - 1));
buildHierarchy(_arg1, _local7, _arg3);
return;
};
_local7++;
};
buildHierarchy(_local5, (_arg2 + 1), _arg3);
};
}
private function parse3DChunk(_arg1:uint, _arg2:uint):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:MaterialData;
var _local8:ObjectData;
var _local9:uint;
if (_arg2 > 6){
data.position = _arg1;
_local3 = data.readUnsignedShort();
_local4 = data.readUnsignedInt();
_local5 = (_arg1 + 6);
_local6 = (_local4 - 6);
switch (_local3){
case 45055:
_local7 = new MaterialData();
parseMaterialChunk(_local7, _local5, _local6);
break;
case 0x4000:
_local8 = new ObjectData();
_local9 = parseObject(_local8, _local5);
parseObjectChunk(_local8, (_local5 + _local9), (_local6 - _local9));
break;
};
parse3DChunk((_arg1 + _local4), (_arg2 - _local4));
};
}
private function parseFacesChunk(_arg1:ObjectData, _arg2:uint, _arg3:uint):void{
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:uint;
if (_arg3 > 6){
data.position = _arg2;
_local4 = data.readUnsignedShort();
_local5 = data.readUnsignedInt();
_local6 = (_arg2 + 6);
_local7 = (_local5 - 6);
switch (_local4){
case 16688:
parseSurface(_arg1, _local6);
break;
case 16720:
break;
};
parseFacesChunk(_arg1, (_arg2 + _local5), (_arg3 - _local5));
};
}
private function parseObjectAnimationRotation(_arg1:AnimationData, _arg2:uint):void{
data.position = (_arg2 + 20);
_arg1.rotation = getRotationFrom3DSAngleAxis(data.readFloat(), data.readFloat(), data.readFloat(), data.readFloat());
}
private function getRotationFrom3DSAngleAxis(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Point3D{
var _local10:Number;
var _local5:Point3D = new Point3D();
var _local6:Number = Math.sin(_arg1);
var _local7:Number = Math.cos(_arg1);
var _local8:Number = (1 - _local7);
var _local9:Number = (((_arg2 * _arg4) * _local8) + (_arg3 * _local6));
if (_local9 > 0.998){
_local10 = (_arg1 / 2);
_local5.z = (-2 * Math.atan2((_arg2 * Math.sin(_local10)), Math.cos(_local10)));
_local5.y = (-(Math.PI) / 2);
_local5.x = 0;
return (_local5);
};
if (_local9 < -0.998){
_local10 = (_arg1 / 2);
_local5.z = (2 * Math.atan2((_arg2 * Math.sin(_local10)), Math.cos(_local10)));
_local5.y = (Math.PI / 2);
_local5.x = 0;
return (_local5);
};
_local5.z = -(Math.atan2(((_arg4 * _local6) - ((_arg2 * _arg3) * _local8)), (1 - (((_arg4 * _arg4) + (_arg3 * _arg3)) * _local8))));
_local5.y = -(Math.asin((((_arg2 * _arg4) * _local8) + (_arg3 * _local6))));
_local5.x = -(Math.atan2(((_arg2 * _local6) - ((_arg4 * _arg3) * _local8)), (1 - (((_arg2 * _arg2) + (_arg3 * _arg3)) * _local8))));
return (_local5);
}
public function get content():Object3D{
return (_content);
}
private function parseSurface(_arg1:ObjectData, _arg2:uint):void{
var _local3:SurfaceData = new SurfaceData();
if (_arg1.surfaces == null){
_arg1.surfaces = new Array();
};
_local3.materialName = getString(_arg2);
_arg1.surfaces[_local3.materialName] = _local3;
data.position = ((_arg2 + _local3.materialName.length) + 1);
var _local4:uint = data.readUnsignedShort();
_local3.faces = new Array();
var _local5:uint;
while (_local5 < _local4) {
_local3.faces.push(data.readUnsignedShort());
_local5++;
};
}
private function buildMesh(_arg1:Mesh, _arg2:ObjectData, _arg3:AnimationData):void{
var _local4:uint;
var _local6:Point3D;
var _local7:Object;
var _local8:String;
var _local9:Vertex;
var _local10:FaceData;
var _local11:String;
var _local12:MaterialData;
var _local13:SurfaceData;
var _local14:Surface;
var _local15:uint;
var _local16:FaceData;
var _local17:Face;
var _local18:Surface;
var _local19:String;
var _local5:uint = _arg2.vertices.length;
_local4 = 0;
while (_local4 < _local5) {
_local6 = _arg2.vertices[_local4];
_arg2.vertices[_local4] = _arg1.addVertex(_local6.x, _local6.y, _local6.z, _local4);
_local4++;
};
if (_arg3 != null){
_arg2.matrix.invert();
_arg2.matrix.d = (_arg2.matrix.d - _arg3.pivot.x);
_arg2.matrix.h = (_arg2.matrix.h - _arg3.pivot.y);
_arg2.matrix.l = (_arg2.matrix.l - _arg3.pivot.z);
_local7 = _arg1.vertices;
for (_local8 in _local7) {
_local9 = _local7[_local8];
_local9.transform(_arg2.matrix);
};
};
_local5 = _arg2.faces.length;
_local4 = 0;
while (_local4 < _local5) {
_local10 = _arg2.faces[_local4];
_arg1.addFace([_arg2.vertices[_local10.a], _arg2.vertices[_local10.b], _arg2.vertices[_local10.c]], _local4);
_local4++;
};
if (_arg2.surfaces != null){
for (_local11 in _arg2.surfaces) {
_local12 = materialDatas[_local11];
_local13 = _arg2.surfaces[_local11];
_local14 = _arg1.addSurface(_local13.faces, _local11);
if (((!((_local12.diffuseMap == null))) || (!((_local12.normalMap == null))))){
_local14.material = new TextureMaterial(new TextureData(bitmaps[_local12.diffuseMap.filename], _local12.diffuseMap.filename), (1 - (_local12.transparency / 100)), false, true);
_local5 = _local13.faces.length;
_local4 = 0;
while (_local4 < _local5) {
_local15 = _local13.faces[_local4];
_local16 = _arg2.faces[_local15];
_local17 = _arg1.getFaceById(_local15);
_local17.aUV = _local12.matrix.transformPoint(_arg2.uvs[_local16.a]);
_local17.bUV = _local12.matrix.transformPoint(_arg2.uvs[_local16.b]);
_local17.cUV = _local12.matrix.transformPoint(_arg2.uvs[_local16.c]);
_local4++;
};
} else {
_local14.material = new FillMaterial(materialDatas[_local11].color, (1 - (_local12.transparency / 100)));
};
};
} else {
_local18 = _arg1.addSurface();
for (_local19 in _arg1.faces) {
_local18.addFace(_arg1.faces[_local19]);
};
_local18.material = new WireMaterial();
};
}
}
}//package com.alternativagame.utility
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
class MapData {
public var offsetU:Number;// = 0
public var offsetV:Number;// = 0
public var filename:String;
public var scaleU:Number;// = 1
public var scaleV:Number;// = 1
public var rotation:Number;// = 0
private function MapData(){
}
}
class AnimationData {
public var pivot:Point3D;
public var parentIndex:uint;
public var position:Point3D;
public var objectName:String;
public var scale:Point3D;
public var rotation:Point3D;
public var object:Object3D;
private function AnimationData(){
}
}
class MaterialData {
public var matrix:Matrix;
public var specular:uint;
public var color:uint;
public var name:String;
public var normalMap:MapData;
public var transparency:uint;
public var diffuseMap:MapData;
public var glossiness:uint;
private function MaterialData(){
}
}
class ObjectData {
public var vertices:Array;
public var matrix:Matrix3D;
public var surfaces:Array;
public var name:String;
public var uvs:Array;
public var faces:Array;
private function ObjectData(){
}
}
class FaceData {
public var a:uint;
public var c:uint;
public var b:uint;
private function FaceData(){
}
}
class SurfaceData {
public var materialName:String;
public var faces:Array;
private function SurfaceData(){
}
}
Section 60
//MathUtility (com.alternativagame.utility.MathUtility)
package com.alternativagame.utility {
import flash.geom.*;
public final class MathUtility {
public static const degree60:Number = (Math.PI / 3);
private static const toDeg:Number = (180 / Math.PI);
public static const degree45:Number = (Math.PI / 4);
private static const toRad:Number = (Math.PI / 180);
public static const degree180:Number = Math.PI;
public static const degree360:Number = (Math.PI + Math.PI);
public static const degree90:Number = (Math.PI / 2);
public static const degree1:Number = toRad;
public static const degree30:Number = (Math.PI / 6);
public static const degree10:Number = (Math.PI / 18);
public static const degree5:Number = (Math.PI / 36);
public static function random(_arg1:Number=0, _arg2:Number=0):Number{
if (arguments.length == 0){
return (Math.random());
};
if (arguments.length == 1){
return ((Math.random() * _arg1));
};
return (((Math.random() * (_arg2 - _arg1)) + _arg1));
}
public static function segmentDistance(_arg1:Point, _arg2:Point, _arg3:Point):Number{
var _local4:Number = (_arg2.x - _arg1.x);
var _local5:Number = (_arg2.y - _arg1.y);
var _local6:Number = (_arg3.x - _arg1.x);
var _local7:Number = (_arg3.y - _arg1.y);
return ((((_local4 * _local7) - (_local5 * _local6)) / Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))));
}
public static function randomAngle():Number{
return ((Math.random() * degree360));
}
public static function vectorAngleFast(_arg1:Point, _arg2:Point):Number{
var _local3:Number = vectorDot(_arg1, _arg2);
if (Math.abs(_local3) > 1){
_local3 = ((_local3)>0) ? 1 : -1;
};
return (Math.acos(_local3));
}
public static function vectorAngle(_arg1:Point, _arg2:Point):Number{
var _local3:Number = (_arg1.length * _arg2.length);
var _local4:Number = ((_local3)!=0) ? (vectorDot(_arg1, _arg2) / _local3) : 1;
return (Math.acos(_local4));
}
public static function limitAngle(_arg1:Number):Number{
var _local2:Number = (_arg1 % degree360);
_local2 = ((_local2)>0) ? ((_local2)>degree180) ? (_local2 - degree360) : _local2 : ((_local2)<-(degree180)) ? (_local2 + degree360) : _local2;
return (_local2);
}
public static function vectorDot(_arg1:Point, _arg2:Point):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function toDegree(_arg1:Number):Number{
return ((_arg1 * toDeg));
}
public static function deltaAngle(_arg1:Number, _arg2:Number):Number{
var _local3:Number = (_arg2 - _arg1);
if (_local3 > degree180){
return ((_local3 - degree360));
};
if (_local3 < -(degree180)){
return ((_local3 + degree360));
};
return (_local3);
}
public static function toRadian(_arg1:Number):Number{
return ((_arg1 * toRad));
}
public static function vectorCross(_arg1:Point, _arg2:Point):Number{
return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
}
public static function triangleHasPoint(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Boolean{
if (vectorCross(_arg3.subtract(_arg1), _arg4.subtract(_arg1)) <= 0){
if (vectorCross(_arg2.subtract(_arg3), _arg4.subtract(_arg3)) <= 0){
if (vectorCross(_arg1.subtract(_arg2), _arg4.subtract(_arg2)) <= 0){
return (true);
};
return (false);
} else {
return (false);
};
//unresolved jump
};
return (false);
}
public static function equals(_arg1:Number, _arg2:Number, _arg3:Number=0):Boolean{
return (((((_arg2 - _arg1) <= _arg3)) && (((_arg2 - _arg1) >= -(_arg3)))));
}
}
}//package com.alternativagame.utility
Section 61
//MeshUtility (com.alternativagame.utility.MeshUtility)
package com.alternativagame.utility {
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.utils.*;
public class MeshUtility {
private static var verticesSort:Array = ["x", "y", "z"];
private static var verticesSortOptions:Array = [Array.NUMERIC, Array.NUMERIC, Array.NUMERIC];
public static function autoWeldFaces(_arg1:Mesh, _arg2:Number=0, _arg3:Number=0):void{
var _local4:Face;
var _local5:Face;
var _local6:*;
var _local7:uint;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
var _local19:*;
var _local20:*;
var _local21:*;
var _local22:*;
var _local23:*;
var _local24:*;
var _local25:*;
var _local26:*;
var _local27:*;
var _local28:*;
var _local29:*;
var _local30:*;
var _local31:*;
var _local32:*;
var _local33:*;
var _local34:*;
var _local35:*;
var _local36:*;
var _local37:*;
var _local38:*;
var _local39:*;
var _local40:*;
var _local41:*;
var _local42:*;
var _local43:*;
var _local44:*;
var _local45:*;
var _local46:*;
var _local47:*;
var _local48:*;
var _local49:*;
var _local50:*;
var _local51:*;
var _local52:*;
var _local53:*;
_arg2 = Math.cos(_arg2);
var _local8:Set = ObjectUtility.toSet(_arg1.faces, true);
var _local9:Set = new Set(true);
var _local10:Dictionary = new Dictionary(true);
for (_local6 in _local8) {
_local4 = _local6;
_local10[_local4] = _local4.normal;
};
do {
_local11 = false;
while ((_local4 = _local8.take()) != null) {
_local13 = _local4.num;
_local14 = _local4.vertices;
_local15 = false;
_local7 = 0;
while ((((_local7 < _local13)) && (!(_local15)))) {
_local16 = _local7;
_local20 = _local14[_local16];
_local21 = _local20.faces;
for (_local6 in _local21) {
_local5 = _local6;
if (((_local8[_local5]) && ((_local4.surface == _local5.surface)))){
_local22 = _local5.vertices;
_local17 = ((_local16)<(_local13 - 1)) ? (_local16 + 1) : 0;
_local18 = _local22.indexOf(_local14[_local17]);
if (_local18 >= 0){
_local23 = _local10[_local4];
if (Point3D.dot(_local23, _local10[_local5]) >= _arg2){
_local24 = _local5.num;
_local19 = ((_local18)<(_local24 - 1)) ? (_local18 + 1) : 0;
while (true) {
_local25 = ((_local16)>0) ? (_local16 - 1) : (_local13 - 1);
_local26 = ((_local19)<(_local24 - 1)) ? (_local19 + 1) : 0;
if (_local14[_local25] == _local22[_local26]){
_local16 = _local25;
_local19 = _local26;
} else {
break;
};
};
while (true) {
_local25 = ((_local17)<(_local13 - 1)) ? (_local17 + 1) : 0;
_local26 = ((_local18)>0) ? (_local18 - 1) : (_local24 - 1);
if (_local14[_local25] == _local22[_local26]){
_local17 = _local25;
_local18 = _local26;
} else {
break;
};
};
_local20 = _local14[_local16];
_local27 = _local20.coords;
_local20 = _local14[_local17];
_local28 = _local20.coords;
_local20 = _local22[((_local19)<(_local24 - 1)) ? (_local19 + 1) : 0];
_local29 = _local20.coords;
_local20 = _local14[((_local16)>0) ? (_local16 - 1) : (_local13 - 1)];
_local30 = _local20.coords;
_local31 = (_local29.x - _local27.x);
_local32 = (_local29.y - _local27.y);
_local33 = (_local29.z - _local27.z);
_local34 = (_local30.x - _local27.x);
_local35 = (_local30.y - _local27.y);
_local36 = (_local30.z - _local27.z);
_local37 = ((_local32 * _local36) - (_local33 * _local35));
_local38 = ((_local33 * _local34) - (_local31 * _local36));
_local39 = ((_local31 * _local35) - (_local32 * _local34));
if ((((((_local37 == 0)) && ((_local38 == 0)))) && ((_local39 == 0)))){
if ((((_local31 * _local34) + (_local32 * _local35)) + (_local33 * _local36)) > 0){
break;
};
};
_local40 = (((_local37 * _local23.x) + (_local38 * _local23.y)) + (_local39 * _local23.z));
if (_local40 >= 0){
_local20 = _local14[((_local17)<(_local13 - 1)) ? (_local17 + 1) : 0];
_local29 = _local20.coords;
_local20 = _local22[((_local18)>0) ? (_local18 - 1) : (_local24 - 1)];
_local30 = _local20.coords;
_local31 = (_local29.x - _local28.x);
_local32 = (_local29.y - _local28.y);
_local33 = (_local29.z - _local28.z);
_local34 = (_local30.x - _local28.x);
_local35 = (_local30.y - _local28.y);
_local36 = (_local30.z - _local28.z);
_local37 = ((_local32 * _local36) - (_local33 * _local35));
_local38 = ((_local33 * _local34) - (_local31 * _local36));
_local39 = ((_local31 * _local35) - (_local32 * _local34));
if ((((((_local37 == 0)) && ((_local38 == 0)))) && ((_local39 == 0)))){
if ((((_local31 * _local34) + (_local32 * _local35)) + (_local33 * _local36)) > 0){
break;
};
};
_local40 = (((_local37 * _local23.x) + (_local38 * _local23.y)) + (_local39 * _local23.z));
if (_local40 >= 0){
_local41 = _local4.aUV;
_local42 = _local4.bUV;
_local43 = _local4.cUV;
_local44 = _local5.aUV;
_local45 = _local5.bUV;
_local46 = _local5.cUV;
_local47 = ((((((((((!((_local41 == null))) && (!((_local42 == null))))) && (!((_local43 == null))))) && (!((_local44 == null))))) && (!((_local45 == null))))) && (!((_local46 == null))));
if (((_local47) || ((((((((((((_local41 == null)) && ((_local42 == null)))) && ((_local43 == null)))) && ((_local44 == null)))) && ((_local45 == null)))) && ((_local46 == null)))))){
if (_local47){
_local20 = _local22[0];
_local53 = _local4.getUVFast(_local20.coords, _local23);
if (((((((((_local53.x - _local44.x) > _arg3)) || (((_local53.x - _local44.x) < -(_arg3))))) || (((_local53.y - _local44.y) > _arg3)))) || (((_local53.y - _local44.y) < -(_arg3))))){
break;
};
_local20 = _local22[1];
_local53 = _local4.getUVFast(_local20.coords, _local23);
if (((((((((_local53.x - _local45.x) > _arg3)) || (((_local53.x - _local45.x) < -(_arg3))))) || (((_local53.y - _local45.y) > _arg3)))) || (((_local53.y - _local45.y) < -(_arg3))))){
break;
};
_local20 = _local22[2];
_local53 = _local4.getUVFast(_local20.coords, _local23);
if (((((((((_local53.x - _local46.x) > _arg3)) || (((_local53.x - _local46.x) < -(_arg3))))) || (((_local53.y - _local46.y) > _arg3)))) || (((_local53.y - _local46.y) < -(_arg3))))){
break;
};
};
_local48 = new Array();
_local49 = _local17;
do {
_local48.push(_local14[_local49]);
_local49 = ((_local49)<(_local13 - 1)) ? (_local49 + 1) : 0;
} while (_local49 != _local16);
_local49 = _local19;
do {
_local48.push(_local22[_local49]);
_local49 = ((_local49)<(_local24 - 1)) ? (_local49 + 1) : 0;
} while (_local49 != _local18);
_local49 = getBestBeginVertexIndex(_local48);
_local50 = 0;
while (_local50 < _local49) {
_local48.push(_local48.shift());
_local50++;
};
_local51 = _local4.surface;
_local52 = _arg1.addFace(_local48);
if (_local47){
_local52.aUV = _local4.getUVFast(_local48[0].coords, _local23);
_local52.bUV = _local4.getUVFast(_local48[1].coords, _local23);
_local52.cUV = _local4.getUVFast(_local48[2].coords, _local23);
};
_local51.addFace(_local52);
_arg1.removeFace(_local4);
_arg1.removeFace(_local5);
delete _local10[_local5];
delete _local10[_local4];
_local10[_local52] = _local52.normal;
delete _local8[_local5];
_local9[_local52] = true;
_local11 = true;
_local15 = true;
break;
};
};
};
};
};
};
};
_local7++;
};
_local9[_local4] = true;
};
_local12 = _local8;
_local8 = _local9;
_local9 = _local12;
} while (_local11);
removeIsolatedVertices(_arg1);
}
public static function generateClass(_arg1:Mesh):String{
var _local10:String;
var _local16:uint;
var _local17:uint;
var _local18:*;
var _local19:String;
var _local20:Face;
var _local21:Surface;
var _local22:String;
var _local24:Vertex;
var _local25:Point3D;
var _local26:Array;
var _local27:Point;
var _local28:Point;
var _local29:Point;
var _local30:String;
var _local31:Set;
var _local32:String;
var _local33:Boolean;
var _local34:Boolean;
var _local35:Boolean;
var _local36:Boolean;
var _local37:Boolean;
var _local38:Boolean;
var _local39:Boolean;
var _local40:String;
var _local41:String;
var _local2:String = _arg1.name;
var _local3:Object = _arg1.vertices;
var _local4:Object = _arg1.faces;
var _local5:Object = _arg1.surfaces;
var _local6:String = (_local2.charAt(0).toUpperCase() + _local2.substr(1));
var _local7 = "package {\r\r";
var _local8:Object = new Object();
_local8["com.alternativagame.engine3d.Mesh"] = true;
var _local9:Dictionary = new Dictionary(true);
var _local11:uint = 1;
var _local12 = "\t\t}\r\t}\r}";
var _local13 = (("\tpublic class " + _local6) + " extends Mesh {\r\r");
var _local14 = (("\t\tpublic function " + _local6) + "() {\r");
_local14 = (_local14 + (("\t\t\tsuper(\"" + _local2) + "\");\r\r"));
var _local15:Boolean;
if (_arg1.mobile != 0){
_local14 = (_local14 + (("\t\t\tmobile = " + _arg1.mobile) + ";\r"));
_local15 = true;
};
if (((((!((_arg1.x == 0))) && (!((_arg1.y == 0))))) && (!((_arg1.z == 0))))){
_local8["com.alternativagame.type.Point3D"] = true;
_local14 = (_local14 + (((((("\t\t\tcoords = new Point3D(" + _arg1.x) + ", ") + _arg1.y) + ", ") + _arg1.z) + ");\r"));
_local15 = true;
} else {
if (_arg1.x != 0){
_local14 = (_local14 + (("\t\t\tx = " + _arg1.x) + ";\r"));
_local15 = true;
};
if (_arg1.y != 0){
_local14 = (_local14 + (("\t\t\ty = " + _arg1.y) + ";\r"));
_local15 = true;
};
if (_arg1.z != 0){
_local14 = (_local14 + (("\t\t\tz = " + _arg1.z) + ";\r"));
_local15 = true;
};
};
if (_arg1.rotX != 0){
_local14 = (_local14 + (("\t\t\trotX = " + _arg1.rotX) + ";\r"));
_local15 = true;
};
if (_arg1.rotY != 0){
_local14 = (_local14 + (("\t\t\trotY = " + _arg1.rotY) + ";\r"));
_local15 = true;
};
if (_arg1.rotZ != 0){
_local14 = (_local14 + (("\t\t\trotZ = " + _arg1.rotZ) + ";\r"));
_local15 = true;
};
if (_arg1.scaleX != 1){
_local14 = (_local14 + (("\t\t\tscaleX = " + _arg1.scaleX) + ";\r"));
_local15 = true;
};
if (_arg1.scaleY != 1){
_local14 = (_local14 + (("\t\t\tscaleY = " + _arg1.scaleY) + ";\r"));
_local15 = true;
};
if (_arg1.scaleZ != 1){
_local14 = (_local14 + (("\t\t\tscaleZ = " + _arg1.scaleZ) + ";\r"));
_local15 = true;
};
_local14 = (_local14 + (_local15) ? "\r" : "");
_local15 = false;
for (_local19 in _local3) {
_local24 = _local3[_local19];
_local25 = _local24.coords;
_local14 = (_local14 + (((((((("\t\t\taddVertex(" + _local25.x) + ", ") + _local25.y) + ", ") + _local25.z) + ", \"") + _local19) + "\");\r"));
_local15 = true;
};
_local14 = (_local14 + (_local15) ? "\r" : "");
_local15 = false;
for (_local19 in _local4) {
_local20 = _local4[_local19];
_local26 = _local20.vertices;
_local17 = _local20.num;
_local14 = (_local14 + "\t\t\taddFace([");
_local16 = 0;
while (_local16 < (_local17 - 1)) {
_local14 = (_local14 + (("\"" + _arg1.getVertexId(_local26[_local16])) + "\", "));
_local16++;
};
_local14 = (_local14 + (((("\"" + _arg1.getVertexId(_local26[_local16])) + "\"], \"") + _local19) + "\");\r"));
_local27 = _local20.aUV;
_local28 = _local20.bUV;
_local29 = _local20.cUV;
if (((((!((_local27 == null))) || (!((_local28 == null))))) || (!((_local29 == null))))){
_local8["flash.geom.Point"] = true;
_local14 = (_local14 + (((((((((((((("\t\t\tsetUVsToFace(new Point(" + _local27.x) + ", ") + _local27.y) + "), new Point(") + _local28.x) + ", ") + _local28.y) + "), new Point(") + _local29.x) + ", ") + _local29.y) + "), \"") + _local19) + "\");\r"));
};
_local15 = true;
};
_local14 = (_local14 + (_local15) ? "\r" : "");
for (_local19 in _local5) {
_local21 = _local5[_local19];
_local30 = "";
_local31 = _local21.faces;
for (_local18 in _local31) {
_local30 = (_local30 + (("\"" + _arg1.getFaceId(_local18)) + "\", "));
};
_local14 = (_local14 + (((("\t\t\taddSurface([" + _local30.substr(0, (_local30.length - 2))) + "], \"") + _local19) + "\");\r"));
if (_local21.material != null){
_local33 = (_local21.material.alpha == 1);
if ((_local21.material is WireMaterial)){
_local8["com.alternativagame.engine3d.WireMaterial"] = true;
_local35 = (WireMaterial(_local21.material).thickness == 0);
_local34 = (WireMaterial(_local21.material).color == 0x7F7F7F);
_local32 = "new WireMaterial(";
if (((((!(_local35)) || (!(_local34)))) || (!(_local33)))){
_local32 = (_local32 + (WireMaterial(_local21.material).thickness + ", "));
if (((!(_local34)) || (!(_local33)))){
_local32 = (_local32 + (("0x" + WireMaterial(_local21.material).color.toString(16).toUpperCase()) + ", "));
if (!_local33){
_local32 = (_local32 + (WireMaterial(_local21.material).alpha + ", "));
};
};
} else {
_local32 = (_local32 + ", ");
};
};
if ((_local21.material is FillMaterial)){
_local8["com.alternativagame.engine3d.FillMaterial"] = true;
_local34 = (FillMaterial(_local21.material).color == 0x7F7F7F);
_local32 = "new FillMaterial(";
if (((!(_local34)) || (!(_local33)))){
_local32 = (_local32 + (("0x" + FillMaterial(_local21.material).color.toString(16).toUpperCase()) + ", "));
if (!_local33){
_local32 = (_local32 + (FillMaterial(_local21.material).alpha + ", "));
};
} else {
_local32 = (_local32 + ", ");
};
};
if ((_local21.material is TextureMaterial)){
_local8["com.alternativagame.engine3d.TextureMaterial"] = true;
_local36 = (TextureMaterial(_local21.material).texture == null);
_local37 = TextureMaterial(_local21.material).repeat;
_local38 = !(TextureMaterial(_local21.material).smooth);
_local39 = (TextureMaterial(_local21.material).precision == 10);
_local32 = "new TextureMaterial(";
if (((((((((!(_local36)) || (!(_local33)))) || (!(_local37)))) || (!(_local38)))) || (!(_local39)))){
if (TextureMaterial(_local21.material).texture == null){
_local32 = (_local32 + "null, ");
} else {
_local8["com.alternativagame.type.TextureData"] = true;
if (_local9[TextureMaterial(_local21.material).texture] == undefined){
_local10 = ((TextureMaterial(_local21.material).texture.name)!=null) ? TextureMaterial(_local21.material).texture.name : var _temp1 = _local11;
_local11 = (_local11 + 1);
("texture" + _temp1);
_local9[TextureMaterial(_local21.material).texture] = _local10;
} else {
_local10 = _local9[TextureMaterial(_local21.material).texture];
};
_local32 = (_local32 + (_local10.split(".")[0] + ", "));
};
if (((((((!(_local33)) || (!(_local37)))) || (!(_local38)))) || (!(_local39)))){
_local32 = (_local32 + (TextureMaterial(_local21.material).alpha + ", "));
if (((((!(_local37)) || (!(_local38)))) || (!(_local39)))){
_local32 = (_local32 + (TextureMaterial(_local21.material).repeat + ", "));
if (((!(_local38)) || (!(_local39)))){
_local32 = (_local32 + (TextureMaterial(_local21.material).smooth + ", "));
if (!_local39){
_local32 = (_local32 + (TextureMaterial(_local21.material).precision + ", "));
};
};
};
};
} else {
_local32 = (_local32 + ", ");
};
};
_local14 = (_local14 + (((("\t\t\tsetMaterialToSurface(" + _local32.substr(0, (_local32.length - 2))) + "), \"") + _local19) + "\");\r"));
};
};
_local22 = "";
_local15 = false;
for (_local18 in _local8) {
_local22 = (_local22 + (("\timport " + _local18) + ";\r"));
_local15 = true;
};
_local22 = (_local22 + (_local15) ? "\r" : "");
var _local23 = "";
_local15 = false;
for each (_local10 in _local9) {
_local40 = _local10.split(".")[0];
_local41 = (_local40.charAt(0).toUpperCase() + _local40.substr(1));
_local23 = (_local23 + (((("\t\t[Embed(source=\"" + _local10) + "\")] private static const bmp") + _local41) + ":Class;\r"));
_local23 = (_local23 + (((((("\t\tprivate static const " + _local40) + ":TextureData = new TextureData(new bmp") + _local41) + "().bitmapData, \"") + _local10) + "\");\r"));
_local15 = true;
};
_local23 = (_local23 + (_local15) ? "\r" : "");
return ((((((_local7 + _local22) + _local13) + _local23) + _local14) + _local12));
}
public static function removeIsolatedVertices(_arg1:Mesh):void{
var _local2:Vertex;
for each (_local2 in _arg1.vertices) {
if (_local2.faces.isEmpty()){
_arg1.removeVertex(_local2);
};
};
}
public static function uniteMeshes(... _args):Mesh{
var _local4:*;
var _local5:Vertex;
var _local6:Face;
var _local7:uint;
var _local9:Mesh;
var _local10:Object;
var _local11:Object;
var _local12:Object;
var _local13:Array;
var _local14:Surface;
var _local15:Array;
var _local16:uint;
var _local17:Surface;
var _local2:Mesh = new Mesh();
var _local3:uint = _args.length;
var _local8:uint;
while (_local8 < _local3) {
_local9 = _args[_local8];
trace(_local9);
_local10 = _local9.vertices;
for (_local4 in _local10) {
_local5 = _local10[_local4];
_local10[_local4] = _local2.addVertex(_local5.x, _local5.y, _local5.z);
};
_local11 = _local9.faces;
for (_local4 in _local11) {
_local6 = _local11[_local4];
_local13 = _local6.vertices;
_local7 = 0;
while (_local7 < _local6.num) {
_local5 = _local13[_local7];
_local13[_local7] = _local10[_local5.id];
_local7++;
};
_local11[_local4] = _local2.addFace(_local13);
_local2.setUVsToFace(_local6.aUV, _local6.bUV, _local6.cUV, _local11[_local4]);
};
_local12 = _local9.surfaces;
for (_local4 in _local12) {
_local14 = _local12[_local4];
_local15 = _local14.faces.toArray();
_local16 = _local15.length;
_local7 = 0;
while (_local7 < _local16) {
_local6 = _local15[_local7];
_local15[_local7] = _local11[_local6.id];
_local7++;
};
_local17 = _local2.addSurface(_local15);
_local17.material = SurfaceMaterial(_local14.material.clone());
};
_local8++;
};
trace(_local2);
return (_local2);
}
public static function autoWeldVertices(_arg1:Mesh, _arg2:Number=0):void{
var _local5:Vertex;
var _local8:uint;
var _local10:*;
var _local11:*;
var _local12:Face;
var _local13:Object;
var _local14:Surface;
var _local15:Point;
var _local16:Point;
var _local17:Point;
var _local3:Array = ObjectUtility.toArray(_arg1.vertices, true);
_local3.sortOn(verticesSort, verticesSortOptions);
var _local4:Dictionary = new Dictionary(true);
var _local6:Vertex = _local3[0];
var _local7:uint = _local3.length;
_local8 = 1;
while (_local8 < _local7) {
_local5 = _local3[_local8];
if (((((((((((((_local6.x - _local5.x) <= _arg2)) && (((_local6.x - _local5.x) >= -(_arg2))))) && (((_local6.y - _local5.y) <= _arg2)))) && (((_local6.y - _local5.y) >= -(_arg2))))) && (((_local6.z - _local5.z) <= _arg2)))) && (((_local6.z - _local5.z) >= -(_arg2))))){
_local4[_local5] = _local6;
} else {
_local6 = _local5;
};
_local8++;
};
var _local9:Set = new Set(true);
for (_local10 in _local4) {
_local5 = _local10;
for (_local11 in _local5.faces) {
_local9[_local11] = true;
};
};
for (_local11 in _local9) {
_local12 = _local11;
_local13 = _arg1.getFaceId(_local12);
_local14 = _local12.surface;
_local15 = _local12.aUV;
_local16 = _local12.bUV;
_local17 = _local12.cUV;
_local3 = _local12.vertices;
_local7 = _local3.length;
_local8 = 0;
while (_local8 < _local7) {
_local5 = _local4[_local3[_local8]];
if (_local5 != null){
_local3[_local8] = _local5;
};
_local8++;
};
_arg1.removeFace(_local12);
_local12 = _arg1.addFace(_local3, _local13);
_local14.addFace(_local12);
_local12.aUV = _local15;
_local12.bUV = _local16;
_local12.cUV = _local17;
};
for (_local10 in _local4) {
_arg1.removeVertex(_local10);
};
}
public static function getBestBeginVertexIndex(_arg1:Array):uint{
var _local4:Number;
var _local5:Vertex;
var _local6:Point3D;
var _local7:Point3D;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:uint;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local2:uint;
var _local3:uint = _arg1.length;
if (_local3 > 3){
_local4 = 0;
_local5 = _arg1[(_local3 - 1)];
_local6 = _local5.coords;
_local5 = _arg1[0];
_local7 = _local5.coords;
_local8 = (_local7.x - _local6.x);
_local9 = (_local7.y - _local6.y);
_local10 = (_local7.z - _local6.z);
_local11 = 0;
while (_local11 < _local3) {
_local6 = _local7;
_local5 = _arg1[((_local11)<(_local3 - 1)) ? (_local11 + 1) : 0];
_local7 = _local5.coords;
_local12 = (_local7.x - _local6.x);
_local13 = (_local7.y - _local6.y);
_local14 = (_local7.z - _local6.z);
_local15 = ((_local9 * _local14) - (_local10 * _local13));
_local16 = ((_local10 * _local12) - (_local8 * _local14));
_local17 = ((_local8 * _local13) - (_local9 * _local12));
_local18 = (((_local15 * _local15) + (_local16 * _local16)) + (_local17 * _local17));
if (_local18 > _local4){
_local4 = _local18;
_local2 = _local11;
};
_local8 = _local12;
_local9 = _local13;
_local10 = _local14;
_local11++;
};
_local2 = ((_local2)>0) ? (_local2 - 1) : (_local3 - 1);
};
return (_local2);
}
}
}//package com.alternativagame.utility
Section 62
//MouseUtility (com.alternativagame.utility.MouseUtility)
package com.alternativagame.utility {
import flash.geom.*;
import flash.display.*;
public class MouseUtility {
private static var _stage:Stage = null;
public static function init(_arg1:Stage):void{
_stage = _arg1;
}
public static function localCoords(_arg1:DisplayObject):Point{
return (_arg1.globalToLocal(globalCoords()));
}
public static function globalCoords(_arg1:Boolean=true):Point{
var _local3:int;
var _local4:int;
var _local2:Point;
if (_stage != null){
_local3 = _stage.mouseX;
_local4 = _stage.mouseY;
if (_arg1){
_local3 = ((_local3)<0) ? 0 : ((_local3)>_stage.stageWidth) ? _stage.stageWidth : _local3;
_local4 = ((_local4)<0) ? 0 : ((_local4)>_stage.stageHeight) ? _stage.stageHeight : _local4;
};
_local2 = new Point(_local3, _local4);
} else {
throw (new Error("MouseUtility don't have link to stage. Use MouseUtility.init(stage) before."));
};
return (_local2);
}
}
}//package com.alternativagame.utility
Section 63
//ObjectUtility (com.alternativagame.utility.ObjectUtility)
package com.alternativagame.utility {
import com.alternativagame.type.*;
import flash.utils.*;
public class ObjectUtility {
public static function getClassTree(_arg1, _arg2:Class=null):Array{
var _local3:Array = new Array();
var _local4:Class = Class(getDefinitionByName(getQualifiedClassName(_arg1)));
_arg2 = ((_arg2)==null) ? Object : _arg2;
while (_local4 != _arg2) {
_local3.push(_local4);
_local4 = Class(getDefinitionByName(getQualifiedSuperclassName(_local4)));
};
_local3.push(_local4);
return (_local3);
}
public static function getClass(_arg1):Class{
return (Class(getDefinitionByName(getQualifiedClassName(_arg1))));
}
public static function isEmpty(_arg1):Boolean{
var _local2:*;
for (_local2 in _arg1) {
return (false);
};
return (true);
}
public static function clone(_arg1):Object{
var _local3:String;
var _local2:Object = new Object();
for (_local3 in _arg1) {
_local2[_local3] = _arg1[_local3];
};
return (_local2);
}
public static function length(_arg1):uint{
var _local3:*;
var _local2:uint;
for (_local3 in _arg1) {
_local2++;
};
return (_local2);
}
public static function toSet(_arg1, _arg2:Boolean=false):Set{
var _local4:*;
var _local3:Set = new Set(_arg2);
for each (_local4 in _arg1) {
_local3[_local4] = true;
};
return (_local3);
}
public static function getClassName(_arg1):String{
var _local2:String = getQualifiedClassName(_arg1);
return (_local2.substring((_local2.indexOf("::") + 2)));
}
public static function toArray(_arg1, _arg2:Boolean=false):Array{
var _local4:*;
var _local3:Array = new Array();
if (_arg2){
for (_local4 in _arg1) {
_local3.push(_arg1[_local4]);
};
} else {
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
return (_local3);
}
}
}//package com.alternativagame.utility
Section 64
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.0.0.0";
public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
}
}//package mx.core
Section 65
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 66
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 67
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
var bitmapData = _arg1;
var pixelSnapping = _arg2;
var smoothing = _arg3;
super(bitmapData, pixelSnapping, smoothing);
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 68
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 69
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 70
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 71
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 72
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 73
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 74
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipLoaderAsset(){
var _local1:LoaderContext = new LoaderContext();
_local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in _local1)){
_local1["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, _local1);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(_arg1:Number):void{
if (!initialized){
requestedWidth = _arg1;
} else {
loader.width = _arg1;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(_arg1:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(_arg1);
}
override public function set height(_arg1:Number):void{
if (!initialized){
requestedHeight = _arg1;
} else {
loader.height = _arg1;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 75
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 76
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 77
//Bunker (Bunker)
package {
import flash.events.*;
import com.alternativagame.engine3d.*;
import com.alternativagame.type.*;
import flash.geom.*;
import flash.display.*;
import com.alternativagame.engine3d.collision.*;
import flash.utils.*;
import bunker.*;
import com.alternativagame.utility.*;
import flash.text.*;
import com.alternativagame.admin.*;
import flash.ui.*;
public class Bunker extends Sprite {
private const offsetTreshold:Number = 0.01;
private const gravity:Number = 1;
private const maxVelocity:Number = 4;
private const acceleration:Number = 3;
private const REACTOR:uint = 3;
private const radius:Number;
private const tick:Number = 20;
private const coordsTreshold:Number = 0.25;
private const stature:Number = 62.992;
private const runMultiplier:Number = 2.5;
private const ENTRANCE:uint = 1;
private const maxAngle:Number;
private const friction:Number = 0.8;
private const BUNKER:uint = 2;
private var entranceAmbient:Sound3D;
private var ventilator1:Sound3D;
private var ventilator3:Sound3D;
private var place:int;// = 0
private var screenLight:ScreenLight;
private var ventilator2:Sound3D;
private var prevDragCoords:Point;
private var loader:Loader3DS;
private var left:Boolean;// = false
private var object3d:Object3D;
private var loadingInfo:TextField;
private var right:Boolean;// = false
private var camera:Camera3D;
private var loadingCounter:int;// = -1
private var loadingSequence:Array;
private var coords:Point3D;
private var ventilators:Ventilators;
private var grid:Grid;
private var timer:uint;
private var screenMultiplier:uint;// = 10
private var passage:Passage;
private var debug:Boolean;// = false
private var low:Boolean;// = false
private var ventilation:Ventilation;
private var screen:Screen;
private var startDragCoords:Point;
private var icon:Bitmap;
private var fly:Boolean;// = false
private var precision:Number;// = 20
private var qualityTimer:uint;// = 0
private var energy:Energy;
private var bunkerMesh:BunkerMesh;
private var run:Boolean;// = false
private var reactorLight:ReactorLight;
private var reactorAmbient:Sound3D;
private var splits:Splits;
private var scene:Scene3D;
private var core:Core;
private var reactor:Reactor;
private var up:Boolean;// = false
private var slope:Slope;
private var down:Boolean;// = false
private var entrance:Entrance;
private var moveSound:MoveSound;
private var bunkerWindows:BunkerWindows;
private var currentDragCoords:Point;
private var bunkerAmbient:Sound3D;
private var velocity:Point3D;
private var startRotX:Number;
private var startRotZ:Number;
private var entranceWindows:EntranceWindows;
private var previousCollision:Collision;
private var qualityTimerMax:uint;// = 50
private static const bmpFly:Class = Bunker_bmpFly;
private static const bmpLogo:Class = Bunker_bmpLogo;
private static const flyBmp:BitmapData = new bmpFly().bitmapData;
private static const bmpWalk:Class = Bunker_bmpWalk;
private static const logoBmp:BitmapData = new bmpLogo().bitmapData;
private static const walkBmp:BitmapData = new bmpWalk().bitmapData;
public function Bunker(){
splits = new Splits();
entrance = new Entrance();
entranceWindows = new EntranceWindows();
screen = new Screen();
screenLight = new ScreenLight();
passage = new Passage();
bunkerMesh = new BunkerMesh();
bunkerWindows = new BunkerWindows();
grid = new Grid();
slope = new Slope();
core = new Core();
reactor = new Reactor();
reactorLight = new ReactorLight();
ventilation = new Ventilation();
ventilators = new Ventilators();
moveSound = new MoveSound();
entranceAmbient = new Sound3D(362, -1945, 690, 370, "entrance.mp3", "Loading entrance ambient");
bunkerAmbient = new Sound3D(0, -315, 1270, 770, "bunker.mp3", "Loading bunker ambient");
reactorAmbient = new Sound3D(0, 2323, 1615, 607, "reactor.mp3", "Loading reactor ambient");
ventilator1 = new Sound3D(472, 2322, 450, 100, "ventilator.mp3", "Loading ventilator sound", 2);
ventilator2 = new Sound3D(-472, 2322, 450, 100, "ventilator.mp3", "Loading ventilator sound", 2);
ventilator3 = new Sound3D(0, 2795, 300, 450, "ventilator.mp3", "Loading ventilator soun", 2);
currentDragCoords = new Point();
radius = (15.748 + 5);
maxAngle = MathUtility.toRadian(40);
velocity = new Point3D();
coords = new Point3D(362.205, -2120, (fly) ? stature : radius);
loadingSequence = [moveSound, entrance, passage, entranceAmbient, bunkerMesh, grid, bunkerAmbient, slope, reactor, ventilation, reactorAmbient, ventilator1, ventilator2, ventilator3];
super();
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.frameRate = 100;
MouseUtility.init(stage);
scene = new Scene3D();
scene.root = new Object3D("root");
energy = new Energy();
scene.root.addObject(energy);
scene.root.addObject(splits);
scene.calculate();
changePlace(1);
camera = new Camera3D("camera");
camera.fov = MathUtility.toRadian(110);
camera.rotX = -1.79;
camera.x = coords.x;
camera.y = coords.y;
camera.z = (coords.z + (fly) ? 0 : (stature - radius));
scene.root.addObject(camera);
addChild(camera.view);
FPS.init(this);
var _local1:Bitmap = new Bitmap(logoBmp);
_local1.x = 3;
_local1.y = 3;
addChild(_local1);
icon = new Bitmap((fly) ? flyBmp : walkBmp);
icon.alpha = 0.4;
icon.blendMode = BlendMode.ADD;
addChild(icon);
var _local2:TestInfo = new TestInfo();
_local2.x = 3;
_local2.y = 46;
_local2.write("Drag — look");
_local2.write("WSAD or arrows — move");
_local2.write("F — on/off fly mode");
_local2.write("Wheel or [ ] — change FOV");
_local2.write("+/- — change screen size");
_local2.write("T — show triangulation");
addChild(_local2);
loadingInfo = new TextField();
loadingInfo.x = 3;
loadingInfo.text = " ";
loadingInfo.autoSize = TextFieldAutoSize.LEFT;
loadingInfo.selectable = false;
loadingInfo.setTextFormat(new TextFormat("Tahoma", 10, 0xFF0000));
loadingInfo.defaultTextFormat = new TextFormat("Tahoma", 10, 0xFF0000);
addChild(loadingInfo);
loadNext();
onResize(null);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
stage.addEventListener(Event.RESIZE, onResize);
}
private function changePlace(_arg1:uint):void{
if (_arg1 == 1){
switch (place){
case 0:
scene.root.addObject(entrance);
scene.root.addObject(entranceWindows);
scene.root.addObject(screen);
scene.root.addObject(screenLight);
scene.calculate();
scene.root.addObject(passage);
scene.calculate();
break;
case 2:
scene.root.removeObject(slope);
scene.root.removeObject(bunkerMesh);
scene.root.removeObject(bunkerWindows);
scene.root.removeObject(grid);
scene.root.addObject(entrance);
scene.root.addObject(entranceWindows);
scene.root.addObject(screen);
scene.root.addObject(screenLight);
scene.calculate();
break;
case 3:
break;
};
screen.startAnimation();
};
if (_arg1 == 2){
switch (place){
case 0:
scene.root.addObject(bunkerMesh);
scene.root.addObject(bunkerWindows);
scene.root.addObject(grid);
scene.calculate();
scene.root.addObject(passage);
scene.calculate();
scene.root.addObject(slope);
scene.calculate();
break;
case 1:
scene.root.removeObject(entrance);
scene.root.removeObject(entranceWindows);
scene.root.removeObject(screen);
scene.root.removeObject(screenLight);
scene.root.addObject(bunkerMesh);
scene.root.addObject(bunkerWindows);
scene.root.addObject(grid);
scene.calculate();
scene.root.addObject(slope);
scene.calculate();
screen.stopAnimation();
break;
case 3:
scene.root.removeObject(core);
scene.root.removeObject(reactor);
scene.root.removeObject(ventilation);
scene.root.removeObject(ventilators);
scene.root.removeObject(reactorLight);
scene.root.addObject(bunkerMesh);
scene.root.addObject(bunkerWindows);
scene.root.addObject(grid);
scene.calculate();
scene.root.addObject(passage);
scene.calculate();
energy.stopAnimation();
ventilators.stopAnimation();
break;
};
};
if (_arg1 == 3){
switch (place){
case 0:
scene.root.addObject(core);
scene.root.addObject(reactor);
scene.root.addObject(ventilation);
scene.root.addObject(ventilators);
scene.root.addObject(reactorLight);
scene.calculate();
scene.root.addObject(slope);
scene.calculate();
break;
case 1:
break;
case 2:
scene.root.removeObject(passage);
scene.root.removeObject(bunkerMesh);
scene.root.removeObject(bunkerWindows);
scene.root.removeObject(grid);
scene.root.addObject(core);
scene.root.addObject(reactor);
scene.root.addObject(ventilation);
scene.root.addObject(ventilators);
scene.root.addObject(reactorLight);
scene.calculate();
break;
};
energy.startAnimation();
ventilators.startAnimation();
};
place = _arg1;
}
private function onMouseUp(_arg1:MouseEvent):void{
startDragCoords = null;
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function weldVerticesAndFaces(_arg1:Object3D):void{
var _local3:*;
var _local4:Surface;
if ((_arg1 is Mesh)){
trace(_arg1);
MeshUtility.autoWeldVertices(Mesh(_arg1), 0.01);
MeshUtility.autoWeldFaces(Mesh(_arg1), 0.03, 0.01);
trace(_arg1);
trace(MeshUtility.generateClass(Mesh(_arg1)));
for each (_local4 in Mesh(_arg1).surfaces) {
if ((_local4.material is TextureMaterial)){
TextureMaterial(_local4.material).precision = 20;
};
};
};
var _local2:Set = _arg1.objects;
for (_local3 in _local2) {
weldVerticesAndFaces(_local3);
};
}
private function onLoad(_arg1:Event):void{
object3d = loader.content;
weldVerticesAndFaces(object3d);
scene.root.addObject(object3d);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function changeDebug():void{
debug = !(debug);
entrance.material.debug = debug;
screen.material.debug = debug;
passage.material.debug = debug;
bunkerMesh.material.debug = debug;
grid.material.debug = debug;
slope.material.debug = debug;
reactor.material1.debug = debug;
reactor.material2.debug = debug;
reactor.material3.debug = debug;
reactor.material4.debug = debug;
ventilation.material.debug = debug;
energy.material.debug = debug;
}
private function addFOV(_arg1:Number):void{
var _local2:Number = (camera.fov - _arg1);
camera.fov = ((_local2)<MathUtility.degree30) ? MathUtility.degree30 : ((_local2)>MathUtility.toRadian(170)) ? MathUtility.toRadian(170) : _local2;
}
private function onResize(_arg1:Event):void{
var _local2:Number = ((stage.stageWidth * screenMultiplier) / 10);
var _local3:Number = ((stage.stageHeight * screenMultiplier) / 10);
var _local4:Number = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
camera.view.x = ((stage.stageWidth - _local2) >> 1);
camera.view.y = ((stage.stageHeight - _local3) >> 1);
camera.view.width = _local2;
camera.view.height = _local3;
camera.viewRadius = _local4;
loadingInfo.y = ((stage.stageHeight - loadingInfo.height) - 1);
icon.x = ((stage.stageWidth - icon.width) - 5);
icon.y = ((stage.stageHeight - icon.height) - 5);
}
private function changeMove():void{
var _local1:Point3D;
var _local2:Point3D;
var _local3:*;
var _local4:*;
fly = !(fly);
if (fly){
coords.z = camera.z;
} else {
_local1 = new Point3D(0, 0, (-(stature) + radius));
_local2 = Point3D.sum(coords, _local1);
do {
_local3 = scene.calculateCollision(coords, _local1, radius);
} while (_local3 == null);
coords.x = _local2.x;
coords.y = _local2.y;
coords.z = _local2.z;
velocity.z = (-(gravity) - coordsTreshold);
};
icon.bitmapData = (fly) ? flyBmp : walkBmp;
}
private function onEnterFrame(_arg1:Event):void{
var _local6:Number;
var _local10:Number;
var _local11:Number;
var _local12:Matrix3D;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Collision;
var _local17:Point3D;
var _local18:*;
var _local19:*;
var _local2:Number = ((getTimer() - timer) / tick);
if (_local2 > 10){
_local2 = 10;
};
timer = getTimer();
if (startDragCoords != null){
prevDragCoords = currentDragCoords;
currentDragCoords = MouseUtility.globalCoords(false);
if (!startDragCoords.equals(currentDragCoords)){
camera.rotZ = (startRotZ + (((startDragCoords.x - currentDragCoords.x) / screenMultiplier) / 10));
camera.rotX = (startRotX + (((startDragCoords.y - currentDragCoords.y) / screenMultiplier) / 10));
camera.rotX = ((camera.rotX)>0) ? 0 : ((camera.rotX)<-(MathUtility.degree180)) ? -(MathUtility.degree180) : camera.rotX;
};
};
var _local3:Point = new Point(camera.x, camera.y);
var _local4:Number = (fly) ? 250 : 160;
var _local5:Number = (fly) ? 1.6 : 1.2;
var _local7:Point3D = new Point3D();
_local6 = (ventilator1.getStrength(_local3, _local4) * _local5);
_local7.x = ((-0.707 * _local2) * _local6);
_local7.z = ((0.707 * _local2) * _local6);
velocity.add(_local7);
_local6 = (ventilator2.getStrength(_local3, _local4) * _local5);
_local7.x = ((0.707 * _local2) * _local6);
_local7.z = ((0.707 * _local2) * _local6);
velocity.add(_local7);
_local6 = (ventilator3.getStrength(_local3, _local4) * _local5);
_local7.y = ((-0.707 * _local2) * _local6);
_local7.z = ((0.707 * _local2) * _local6);
velocity.add(_local7);
if (((((((up) || (down))) || (left))) || (right))){
_local10 = (acceleration * _local2);
_local11 = (maxVelocity * _local2);
if (run){
_local10 = (_local10 * runMultiplier);
_local11 = (_local11 * runMultiplier);
};
if (fly){
_local12 = Matrix3D.rotationMatrix(camera.rotX, camera.rotY, camera.rotZ);
if (up){
velocity.x = (velocity.x + (_local12.c * _local10));
velocity.y = (velocity.y + (_local12.g * _local10));
velocity.z = (velocity.z + (_local12.k * _local10));
} else {
if (down){
velocity.x = (velocity.x - (_local12.c * _local10));
velocity.y = (velocity.y - (_local12.g * _local10));
velocity.z = (velocity.z - (_local12.k * _local10));
};
};
if (right){
velocity.x = (velocity.x + (_local12.a * _local10));
velocity.y = (velocity.y + (_local12.e * _local10));
velocity.z = (velocity.z + (_local12.i * _local10));
} else {
if (left){
velocity.x = (velocity.x - (_local12.a * _local10));
velocity.y = (velocity.y - (_local12.e * _local10));
velocity.z = (velocity.z - (_local12.i * _local10));
};
};
if (velocity.length > _local11){
velocity.length = _local11;
};
} else {
if (up){
velocity.x = (velocity.x - (Math.sin(camera.rotZ) * _local10));
velocity.y = (velocity.y + (Math.cos(camera.rotZ) * _local10));
} else {
if (down){
velocity.x = (velocity.x + (Math.sin(camera.rotZ) * _local10));
velocity.y = (velocity.y - (Math.cos(camera.rotZ) * _local10));
};
};
if (right){
velocity.x = (velocity.x + (Math.cos(camera.rotZ) * _local10));
velocity.y = (velocity.y + (Math.sin(camera.rotZ) * _local10));
} else {
if (left){
velocity.x = (velocity.x - (Math.cos(camera.rotZ) * _local10));
velocity.y = (velocity.y - (Math.sin(camera.rotZ) * _local10));
};
};
_local13 = Math.sqrt(((velocity.x * velocity.x) + (velocity.y * velocity.y)));
if (_local13 > _local11){
velocity.x = (velocity.x * (_local11 / _local13));
velocity.y = (velocity.y * (_local11 / _local13));
};
moveSound.setMode((run) ? MoveSound.RUN : MoveSound.WALK);
};
} else {
_local14 = Math.pow(friction, _local2);
velocity.x = (velocity.x * _local14);
velocity.y = (velocity.y * _local14);
velocity.z = (velocity.z * (fly) ? _local14 : 1);
if (!fly){
moveSound.setMode(MoveSound.NONE);
};
};
if (!fly){
_local15 = (-(gravity) * _local2);
_local16 = scene.calculateCollision(coords, new Point3D(0, 0, _local15), radius);
if ((((((_local16 == null)) || ((_local16.normal.z <= 0)))) || ((Math.acos(_local16.normal.z) > maxAngle)))){
velocity.z = (velocity.z + _local15);
previousCollision = null;
} else {
if (previousCollision == null){
moveSound.setMode(MoveSound.WALK);
};
previousCollision = _local16;
};
};
if ((((((((((((velocity.x > coordsTreshold)) || ((velocity.x < -(coordsTreshold))))) || ((velocity.y > coordsTreshold)))) || ((velocity.y < -(coordsTreshold))))) || ((velocity.z > coordsTreshold)))) || ((velocity.z < -(coordsTreshold))))){
_local17 = Point3D.sum(coords, velocity);
do {
_local18 = scene.calculateCollision(coords, velocity, radius);
} while (_local18 == null);
coords.x = _local17.x;
coords.y = _local17.y;
coords.z = _local17.z;
if (((((((((((camera.x - coords.x) > coordsTreshold)) || (((camera.x - coords.x) < -(coordsTreshold))))) || (((camera.y - coords.y) > coordsTreshold)))) || (((camera.y - coords.y) < -(coordsTreshold))))) || ((fly) ? ((((camera.z - coords.z) > coordsTreshold)) || (((camera.z - coords.z) < -(coordsTreshold)))) : ((((((camera.z - coords.z) - stature) + radius) > coordsTreshold)) || (((((camera.z - coords.z) - stature) + radius) < -(coordsTreshold))))))){
camera.x = coords.x;
camera.y = coords.y;
camera.z = (coords.z + (fly) ? 0 : (stature - radius));
if (place == 3){
energy.rotZ = -(Math.atan2((energy.x - coords.x), (energy.y - coords.y)));
};
checkPlace();
};
} else {
velocity.x = 0;
velocity.y = 0;
velocity.z = 0;
};
if (fly){
moveSound.setMode(MoveSound.FLY, (velocity.length / maxVelocity));
};
var _local8:Point = new Point(camera.x, camera.y);
var _local9:Point = new Point(Math.cos(camera.rotZ), Math.sin(camera.rotZ));
entranceAmbient.checkVolume(_local8, _local9);
bunkerAmbient.checkVolume(_local8, _local9);
reactorAmbient.checkVolume(_local8, _local9);
ventilator1.checkVolume(_local8, _local9);
ventilator2.checkVolume(_local8, _local9);
ventilator3.checkVolume(_local8, _local9);
screen.checkVolume(_local8, _local9);
checkQuality();
scene.calculate();
}
private function onKeyUp(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case Keyboard.SHIFT:
run = false;
break;
case 87:
case Keyboard.UP:
up = false;
break;
case 83:
case Keyboard.DOWN:
down = false;
break;
case 65:
case Keyboard.LEFT:
left = false;
break;
case 68:
case Keyboard.RIGHT:
right = false;
break;
};
}
private function onMouseDown(_arg1:MouseEvent):void{
startDragCoords = MouseUtility.globalCoords(false);
currentDragCoords = startDragCoords.clone();
prevDragCoords = startDragCoords.clone();
startRotX = camera.rotX;
startRotZ = camera.rotZ;
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function onKeyDown(_arg1:KeyboardEvent):void{
var _local2:*;
switch (_arg1.keyCode){
case Keyboard.SHIFT:
run = true;
break;
case 70:
changeMove();
break;
case 84:
changeDebug();
break;
case 107:
case 187:
if (screenMultiplier < 10){
screenMultiplier++;
onResize(null);
};
break;
case 109:
case 189:
if (screenMultiplier > 1){
screenMultiplier--;
onResize(null);
};
break;
case 219:
addFOV((-3 / 20));
break;
case 221:
addFOV((3 / 20));
break;
case 87:
case Keyboard.UP:
up = true;
break;
case 83:
case Keyboard.DOWN:
down = true;
break;
case 65:
case Keyboard.LEFT:
left = true;
break;
case 68:
case Keyboard.RIGHT:
right = true;
break;
};
}
private function checkQuality():void{
if (((((!((startDragCoords == null))) && (!(prevDragCoords.equals(currentDragCoords))))) || ((velocity.length > coordsTreshold)))){
if (qualityTimer != qualityTimerMax){
qualityTimer = qualityTimerMax;
stage.quality = StageQuality.LOW;
entrance.material.precision = precision;
screen.material.precision = precision;
passage.material.precision = precision;
bunkerMesh.material.precision = precision;
grid.material.precision = precision;
slope.material.precision = precision;
reactor.material1.precision = precision;
reactor.material2.precision = precision;
reactor.material3.precision = precision;
reactor.material4.precision = precision;
ventilation.material.precision = precision;
energy.material.precision = precision;
};
} else {
if (qualityTimer > 0){
qualityTimer--;
if (qualityTimer == 0){
stage.quality = StageQuality.HIGH;
entrance.material.precision = 1;
screen.material.precision = 5;
passage.material.precision = 1;
bunkerMesh.material.precision = 1;
grid.material.precision = 1;
slope.material.precision = 1;
reactor.material1.precision = 1;
reactor.material2.precision = 1;
reactor.material3.precision = 1;
reactor.material4.precision = 1;
ventilation.material.precision = 1;
energy.material.precision = 15;
};
};
};
}
private function checkPlace():void{
var _local1:Number;
if ((((coords.y > -1582.677)) && ((coords.y < -1062.992)))){
if ((((place == 1)) && ((coords.x < 117.645)))){
changePlace(2);
};
if ((((place == 2)) && ((coords.x > 246.789)))){
changePlace(1);
};
} else {
if ((((coords.y > 629.921)) && ((coords.y < 1574.803)))){
_local1 = ((-0.533399937770007 * coords.y) + 335.999822200021);
if ((((place == 2)) && ((camera.z <= (_local1 - 15))))){
changePlace(3);
} else {
if ((((place == 3)) && ((camera.z > (_local1 + 15))))){
changePlace(2);
};
};
};
};
}
private function onMouseWheel(_arg1:MouseEvent):void{
addFOV((_arg1.delta / 20));
}
public function loadNext():void{
loadingInfo.text = " ";
loadingCounter++;
if (loadingCounter < loadingSequence.length){
loadingInfo.text = loadingSequence[loadingCounter].load(loadNext);
};
}
}
}//package
import flash.text.*;
class TestInfo extends TextField {
private function TestInfo(){
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
text = ("Alternativa3D 5.0 M1\nDemo \"Bunker\"" + "\n");
setTextFormat(new TextFormat("Tahoma", 10, 12281395));
defaultTextFormat = new TextFormat("Tahoma", 10, 0x7F7F7F);
}
public function write(_arg1:String):void{
appendText(("\n" + _arg1));
}
}
Section 78
//Bunker_bmpFly (Bunker_bmpFly)
package {
import mx.core.*;
public class Bunker_bmpFly extends BitmapAsset {
}
}//package
Section 79
//Bunker_bmpLogo (Bunker_bmpLogo)
package {
import mx.core.*;
public class Bunker_bmpLogo extends BitmapAsset {
}
}//package
Section 80
//Bunker_bmpWalk (Bunker_bmpWalk)
package {
import mx.core.*;
public class Bunker_bmpWalk extends BitmapAsset {
}
}//package