mirror of
https://github.com/ApfelTeeSaft/PlanetFleet.git
synced 2026-08-26 19:33:38 +00:00
Merge pull request #193 from devZoGok/ft-191-demo-unit-implementations
Ft 191 demo unit implementations
This commit is contained in:
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,120 +0,0 @@
|
||||
<model>
|
||||
<node name="Cube" px="0.0" py="0.0" pz="-0.0" rw="1.0" rx="0.0" ry="0.0" rz="0.0" sx="1.0" sy="1.0" sz="1.0">
|
||||
<mesh name="CubeCube" num_vertex_pos="16" num_faces="32" num_vertex_groups="0" num_shape_keys="0">
|
||||
<vertdata px="1.9262968301773071" py="3.097959041595459" pz="-5.632621765136719" nx="0.3689036965370178" ny="-0.8531237244606018" nz="0.3689036965370178" />
|
||||
<vertdata px="3.7058804035186768" py="-0.0005134940147399902" pz="-7.412205219268799" nx="0.5773501992225647" ny="0.5773501396179199" nz="0.5773504376411438" />
|
||||
<vertdata px="1.9262968301773071" py="3.097959041595459" pz="0.5843225717544556" nx="0.07951007783412933" ny="-0.8262193202972412" nz="-0.557709276676178" />
|
||||
<vertdata px="3.7058804035186768" py="-0.0005134940147399902" pz="2.363906145095825" nx="0.4004383385181427" ny="0.5532214045524597" nz="-0.7304760217666626" />
|
||||
<vertdata px="-1.9262968301773071" py="3.097959041595459" pz="-5.632621765136719" nx="-0.36890366673469543" ny="-0.8531237244606018" nz="0.3689036965370178" />
|
||||
<vertdata px="-3.7058804035186768" py="-0.0005134940147399902" pz="-7.412205219268799" nx="-0.5773500204086304" ny="0.577350378036499" nz="0.5773504376411438" />
|
||||
<vertdata px="-1.9262968301773071" py="3.097959041595459" pz="0.5843225717544556" nx="-0.07951010018587112" ny="-0.8262193202972412" nz="-0.557709276676178" />
|
||||
<vertdata px="-3.7058804035186768" py="-0.0005134940147399902" pz="2.363906145095825" nx="-0.40043869614601135" ny="0.5532211661338806" nz="-0.7304758429527283" />
|
||||
<vertdata px="3.7058804035186768" py="0.5489315986633301" pz="2.363906145095825" nx="0.47624310851097107" ny="-0.3169591724872589" nz="-0.8202008008956909" />
|
||||
<vertdata px="-3.7058804035186768" py="0.5489315986633301" pz="2.363906145095825" nx="-0.47624287009239197" ny="-0.31695929169654846" nz="-0.8202009201049805" />
|
||||
<vertdata px="3.7058804035186768" py="0.5489315986633301" pz="-7.412205219268799" nx="0.6674611568450928" ny="-0.3301376700401306" nz="0.6674613952636719" />
|
||||
<vertdata px="-3.7058804035186768" py="0.5489315986633301" pz="-7.412205219268799" nx="-0.6674611568450928" ny="-0.33013758063316345" nz="0.6674613952636719" />
|
||||
<vertdata px="0.0" py="-0.0005134940147399902" pz="-7.412205219268799" nx="0.0" ny="0.7071066498756409" nz="0.7071068286895752" />
|
||||
<vertdata px="0.0" py="0.5489315986633301" pz="-0.0004444122314453125" nx="1.0892627244629693e-08" ny="-0.21838007867336273" nz="-0.9758637547492981" />
|
||||
<vertdata px="0.0" py="-0.0005134940147399902" pz="-0.0004444122314453125" nx="-2.369521645562145e-08" ny="0.8502139449119568" nz="-0.5264374017715454" />
|
||||
<vertdata px="0.0" py="0.5489315986633301" pz="-7.412205219268799" nx="0.0" ny="-0.3000441789627075" nz="0.9539253115653992" />
|
||||
<vertdata px="0.0" py="3.097959041595459" pz="-1.780027985572815" nx="0.0" ny="-0.9764533638954163" nz="-0.21572870016098022" />
|
||||
<vertdata px="0.0" py="3.097959041595459" pz="-5.632621765136719" nx="0.0" ny="-0.8866903185844421" nz="0.4623638093471527" />
|
||||
<vert id="4" uvx="0.3589325249195099" uvy="0.5394231677055359" tx="3.531605159423634e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.53160487520654e-07" />
|
||||
<vert id="16" uvx="0.5341650247573853" uvy="0.62703937292099" tx="3.5316062962920114e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.531606012074917e-07" />
|
||||
<vert id="17" uvx="0.3589325547218323" uvy="0.6270394325256348" tx="3.5316062962920114e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.531606012074917e-07" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.8353264331817627" ty="-0.13493308424949646" tz="-0.5329378843307495" bx="0.11375348269939423" by="0.9908547401428223" bz="-0.072574682533741" />
|
||||
<vert id="7" uvx="0.3622313439846039" uvy="0.33756721019744873" tx="0.8313257098197937" ty="-0.16609829664230347" tz="-0.5303855538368225" bx="0.14002688229084015" by="0.9861091375350952" bz="-0.08933710306882858" />
|
||||
<vert id="14" uvx="0.5616758465766907" uvy="0.36521783471107483" tx="0.8356598019599915" ty="-0.1319960504770279" tz="-0.5331506133079529" bx="0.11127745360136032" by="0.9912501573562622" bz="-0.07099497318267822" />
|
||||
<vert id="9" uvx="0.05321301892399788" uvy="0.9850500822067261" tx="0.0" ty="-0.7621659636497498" tz="-0.6473817229270935" bx="-0.0" by="-0.6473817229270935" bz="0.7621659636497498" />
|
||||
<vert id="5" uvx="0.33374321460723877" uvy="0.6939942836761475" tx="0.0" ty="-0.8632479310035706" tz="-0.5047802329063416" bx="-0.0" by="-0.5047802329063416" bz="0.8632479310035706" />
|
||||
<vert id="7" uvx="0.0704030767083168" uvy="0.9998505115509033" tx="0.0" ty="-0.7578136324882507" tz="-0.6524709463119507" bx="-0.0" by="-0.6524709463119507" bz="0.7578136324882507" />
|
||||
<vert id="1" uvx="0.8035919666290283" uvy="0.3372681438922882" tx="-4.770962647171473e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770962291900105e-08" />
|
||||
<vert id="14" uvx="0.46647340059280396" uvy="0.16870884597301483" tx="-4.770962647171473e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770962291900105e-08" />
|
||||
<vert id="12" uvx="0.8035919666290283" uvy="0.16870886087417603" tx="-4.770962647171473e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770962291900105e-08" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="0.0" ty="-0.9446566700935364" tz="-0.32806074619293213" bx="-0.0" by="0.32806074619293213" bz="-0.9446566700935364" />
|
||||
<vert id="3" uvx="0.11095648258924484" uvy="0.0001494785537943244" tx="0.0" ty="-0.7895708084106445" tz="-0.6136593818664551" bx="-0.0" by="0.6136593818664551" bz="-0.7895708084106445" />
|
||||
<vert id="1" uvx="0.3586335778236389" uvy="0.3809709846973419" tx="0.0" ty="-0.9486247301101685" tz="-0.31640344858169556" bx="-0.0" by="0.31640344858169556" bz="-0.9486247301101685" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.07605789601802826" ty="-0.9971033930778503" tz="-0.0" bx="-0.9971033930778503" by="-0.07605789601802826" bz="-0.0" />
|
||||
<vert id="1" uvx="0.3586335778236389" uvy="0.3809709846973419" tx="-0.2632100284099579" ty="-0.9647385478019714" tz="-0.0" bx="-0.9647385478019714" by="0.2632100284099579" bz="-0.0" />
|
||||
<vert id="12" uvx="0.35745128989219666" uvy="0.5447126626968384" tx="0.10820784419775009" ty="-0.9941282868385315" tz="-0.0" bx="-0.9941282868385315" by="-0.10820784419775009" bz="-0.0" />
|
||||
<vert id="6" uvx="0.44127848744392395" uvy="0.487147718667984" tx="0.7016444802284241" ty="-0.3261772096157074" tz="-0.6334852576255798" bx="-0.06708993017673492" by="0.8548752665519714" bz="-0.5144778490066528" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.7016444802284241" ty="-0.3261772096157074" tz="-0.6334851980209351" bx="-0.06708990037441254" by="0.8548752069473267" bz="-0.5144778490066528" />
|
||||
<vert id="16" uvx="0.5607007145881653" uvy="0.5391241908073425" tx="0.7016444206237793" ty="-0.326177179813385" tz="-0.6334851980209351" bx="-0.06708991527557373" by="0.8548752069473267" bz="-0.5144777894020081" />
|
||||
<vert id="2" uvx="0.0001495767937740311" uvy="0.19534249603748322" tx="0.41084161400794983" ty="-0.5884784460067749" tz="-0.6963492035865784" bx="-0.39861783385276794" by="0.5709694027900696" bz="-0.717703104019165" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="0.41084161400794983" ty="-0.5884784460067749" tz="-0.6963492631912231" bx="-0.39861786365509033" by="0.5709694623947144" bz="-0.717703104019165" />
|
||||
<vert id="0" uvx="0.1928858608007431" uvy="0.43597763776779175" tx="0.41084161400794983" ty="-0.5884784460067749" tz="-0.6963492631912231" bx="-0.39861786365509033" by="0.5709694623947144" bz="-0.717703104019165" />
|
||||
<vert id="4" uvx="0.1822509914636612" uvy="0.6234169602394104" tx="-0.4327998459339142" ty="-0.6199308037757874" tz="-0.654499888420105" bx="-0.3746616244316101" by="-0.5366551876068115" bz="0.7560621500015259" />
|
||||
<vert id="9" uvx="0.05321301892399788" uvy="0.9850500822067261" tx="-0.4327998459339142" ty="-0.6199308037757874" tz="-0.654499888420105" bx="-0.3746616244316101" by="-0.5366551876068115" bz="0.7560621500015259" />
|
||||
<vert id="6" uvx="0.00014950423792470247" uvy="0.8337759375572205" tx="-0.4327998459339142" ty="-0.6199308037757874" tz="-0.654499888420105" bx="-0.3746616244316101" by="-0.5366551876068115" bz="0.7560621500015259" />
|
||||
<vert id="0" uvx="0.1928858608007431" uvy="0.43597763776779175" tx="0.07300851494073868" ty="-0.8177588582038879" tz="-0.5709118247032166" bx="-0.9973313808441162" by="-0.05986311286687851" bz="-0.04179295152425766" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.07429242134094238" ty="-0.8176811337471008" tz="-0.5708575248718262" bx="-0.9972366094589233" by="-0.06091585010290146" bz="-0.04252791032195091" />
|
||||
<vert id="17" uvx="0.1862851232290268" uvy="0.5313258171081543" tx="0.07429240643978119" ty="-0.817681074142456" tz="-0.5708574652671814" bx="-0.9972364902496338" by="-0.060915835201740265" bz="-0.042527902871370316" />
|
||||
<vert id="4" uvx="0.1822509914636612" uvy="0.6234169602394104" tx="-0.06036679074168205" ty="-0.818451464176178" tz="-0.5713955760002136" bx="-0.9981762170791626" by="0.0494975671172142" bz="0.03455634042620659" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="-0.06036679074168205" ty="-0.8184515237808228" tz="-0.5713955760002136" bx="-0.9981762766838074" by="0.0494975671172142" bz="0.03455634042620659" />
|
||||
<vert id="11" uvx="0.3132839500904083" uvy="0.684260368347168" tx="-0.06036679074168205" ty="-0.8184515237808228" tz="-0.5713955760002136" bx="-0.9981762766838074" by="0.0494975671172142" bz="0.03455634042620659" />
|
||||
<vert id="2" uvx="0.681327760219574" uvy="0.48923569917678833" tx="0.8502992987632751" ty="0.14735522866249084" tz="0.5052499175071716" bx="-0.016214080154895782" by="0.9668834805488586" bz="-0.25470271706581116" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.8502994179725647" ty="0.14735524356365204" tz="0.5052499771118164" bx="-0.016214072704315186" by="0.966883659362793" bz="-0.25470274686813354" />
|
||||
<vert id="8" uvx="0.7665426731109619" uvy="0.36274176836013794" tx="0.8502992391586304" ty="0.14735522866249084" tz="0.5052499175071716" bx="-0.016214080154895782" by="0.9668834805488586" bz="-0.25470268726348877" />
|
||||
<vert id="11" uvx="0.3132839500904083" uvy="0.684260368347168" tx="0.37584277987480164" ty="-0.9266834259033203" tz="-0.0" bx="-0.9266834259033203" by="-0.37584277987480164" bz="-0.0" />
|
||||
<vert id="12" uvx="0.35745128989219666" uvy="0.5447126626968384" tx="0.10820784419775009" ty="-0.9941282868385315" tz="-0.0" bx="-0.9941282868385315" by="-0.10820784419775009" bz="-0.0" />
|
||||
<vert id="5" uvx="0.33374321460723877" uvy="0.6939942836761475" tx="0.4025798738002777" ty="-0.9153848886489868" tz="-0.0" bx="-0.9153848886489868" by="-0.4025798738002777" bz="-0.0" />
|
||||
<vert id="5" uvx="0.8035919666290283" uvy="0.00014956301311030984" tx="-1.0043602571840893e-07" ty="-6.454641797200949e-19" tz="-1.0" bx="1.0" by="6.426619653110421e-12" bz="-1.0043602571840893e-07" />
|
||||
<vert id="14" uvx="0.46647340059280396" uvy="0.16870884597301483" tx="-1.0043601861298157e-07" ty="-6.454641280213066e-19" tz="-1.0" bx="1.0" by="6.426619653110421e-12" bz="-1.0043601861298157e-07" />
|
||||
<vert id="7" uvx="0.35893261432647705" uvy="0.00014951835328247398" tx="-1.0043602571840893e-07" ty="-6.454641280213066e-19" tz="-1.0" bx="1.0" by="6.426619653110421e-12" bz="-1.0043602571840893e-07" />
|
||||
<vert id="8" uvx="0.7665426731109619" uvy="0.36274176836013794" tx="0.8352057337760925" ty="0.13598060607910156" tz="0.5328608751296997" bx="-0.11463657766580582" by="0.9907115697860718" bz="-0.07313809543848038" />
|
||||
<vert id="14" uvx="0.5616758465766907" uvy="0.36521783471107483" tx="0.8352406024932861" ty="0.13567835092544556" tz="0.5328832268714905" bx="-0.11438176780939102" by="0.9907529354095459" bz="-0.0729755237698555" />
|
||||
<vert id="3" uvx="0.7630866169929504" uvy="0.33756721019744873" tx="0.8352023959159851" ty="0.13600900769233704" tz="0.5328587889671326" bx="-0.11466052383184433" by="0.9907075762748718" bz="-0.07315336912870407" />
|
||||
<vert id="0" uvx="0.35893258452415466" uvy="0.7146556377410889" tx="2.1078601264434838e-07" ty="-3.357157149388827e-14" tz="1.0" bx="1.0" by="-1.5926850949199434e-07" bz="-2.1078601264434838e-07" />
|
||||
<vert id="16" uvx="0.5341650247573853" uvy="0.62703937292099" tx="2.1078601264434838e-07" ty="-3.357157488202006e-14" tz="1.0" bx="1.0" by="-1.5926850949199434e-07" bz="-2.1078601264434838e-07" />
|
||||
<vert id="2" uvx="0.6417058110237122" uvy="0.7146555781364441" tx="2.1078599843349366e-07" ty="-3.357157488202006e-14" tz="1.0" bx="1.0" by="-1.5926850949199434e-07" bz="-2.1078599843349366e-07" />
|
||||
<vert id="4" uvx="0.3589325249195099" uvy="0.5394231677055359" tx="2.1078599843349366e-07" ty="3.357157149388827e-14" tz="1.0" bx="1.0" by="1.5926850949199434e-07" bz="-2.1078599843349366e-07" />
|
||||
<vert id="6" uvx="0.6417057514190674" uvy="0.5394231081008911" tx="2.1078599843349366e-07" ty="3.357157149388827e-14" tz="1.0" bx="1.0" by="1.5926850949199434e-07" bz="-2.1078599843349366e-07" />
|
||||
<vert id="16" uvx="0.5341650247573853" uvy="0.62703937292099" tx="2.1078599843349366e-07" ty="3.357157149388827e-14" tz="1.0" bx="1.0" by="1.5926850949199434e-07" bz="-2.1078599843349366e-07" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.8353264331817627" ty="-0.13493308424949646" tz="-0.5329378843307495" bx="0.11375348269939423" by="0.9908547401428223" bz="-0.072574682533741" />
|
||||
<vert id="9" uvx="0.35893261432647705" uvy="0.3601662218570709" tx="0.8309071063995361" ty="-0.16901995241641998" tz="-0.530118465423584" bx="0.1424899399280548" by="0.9856126308441162" bz="-0.09090853482484818" />
|
||||
<vert id="7" uvx="0.3622313439846039" uvy="0.33756721019744873" tx="0.8313257098197937" ty="-0.16609829664230347" tz="-0.5303855538368225" bx="0.14002688229084015" by="0.9861091375350952" bz="-0.08933710306882858" />
|
||||
<vert id="9" uvx="0.05321301892399788" uvy="0.9850500822067261" tx="0.0" ty="-0.7621659636497498" tz="-0.6473817229270935" bx="-0.0" by="-0.6473817229270935" bz="0.7621659636497498" />
|
||||
<vert id="11" uvx="0.3132839500904083" uvy="0.684260368347168" tx="0.0" ty="-0.8666088581085205" tz="-0.49898821115493774" bx="-0.0" by="-0.49898821115493774" bz="0.8666088581085205" />
|
||||
<vert id="5" uvx="0.33374321460723877" uvy="0.6939942836761475" tx="0.0" ty="-0.8632479310035706" tz="-0.5047802329063416" bx="-0.0" by="-0.5047802329063416" bz="0.8632479310035706" />
|
||||
<vert id="1" uvx="0.8035919666290283" uvy="0.3372681438922882" tx="0.0" ty="0.0" tz="-1.0" bx="1.0" by="-6.426619653110421e-12" bz="-0.0" />
|
||||
<vert id="3" uvx="0.35893258452415466" uvy="0.3372681438922882" tx="0.0" ty="0.0" tz="-1.0" bx="1.0" by="-6.426619653110421e-12" bz="-0.0" />
|
||||
<vert id="14" uvx="0.46647340059280396" uvy="0.16870884597301483" tx="0.0" ty="0.0" tz="-1.0" bx="1.0" by="-6.426619653110421e-12" bz="-0.0" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="0.0" ty="-0.9446566700935364" tz="-0.32806074619293213" bx="-0.0" by="0.32806074619293213" bz="-0.9446566700935364" />
|
||||
<vert id="8" uvx="0.08567869663238525" uvy="0.016785599291324615" tx="0.0" ty="-0.7819544076919556" tz="-0.623335599899292" bx="-0.0" by="0.623335599899292" bz="-0.7819544076919556" />
|
||||
<vert id="3" uvx="0.11095648258924484" uvy="0.0001494785537943244" tx="0.0" ty="-0.7895708084106445" tz="-0.6136593818664551" bx="-0.0" by="0.6136593818664551" bz="-0.7895708084106445" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.07605789601802826" ty="-0.9971033930778503" tz="-0.0" bx="-0.9971033930778503" by="-0.07605789601802826" bz="-0.0" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="-0.297568142414093" ty="-0.9547004699707031" tz="-0.0" bx="-0.9547004699707031" by="0.297568142414093" bz="-0.0" />
|
||||
<vert id="1" uvx="0.3586335778236389" uvy="0.3809709846973419" tx="-0.2632100284099579" ty="-0.9647385478019714" tz="-0.0" bx="-0.9647385478019714" by="0.2632100284099579" bz="-0.0" />
|
||||
<vert id="6" uvx="0.44127848744392395" uvy="0.487147718667984" tx="0.8499642610549927" ty="-0.1617148220539093" tz="-0.5014070868492126" bx="0.02885475754737854" by="0.9645857810974121" bz="-0.26218676567077637" />
|
||||
<vert id="9" uvx="0.35893261432647705" uvy="0.3601662218570709" tx="0.8499642014503479" ty="-0.1617148071527481" tz="-0.5014070868492126" bx="0.02885475754737854" by="0.9645856618881226" bz="-0.262186735868454" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.8499642610549927" ty="-0.1617148220539093" tz="-0.5014070868492126" bx="0.02885475754737854" by="0.9645857810974121" bz="-0.26218676567077637" />
|
||||
<vert id="2" uvx="0.0001495767937740311" uvy="0.19534249603748322" tx="0.4171513319015503" ty="-0.5975162386894226" tz="-0.6848058104515076" bx="-0.3920099437236786" by="0.5615043640136719" bz="-0.7287254929542542" />
|
||||
<vert id="8" uvx="0.08567869663238525" uvy="0.016785599291324615" tx="0.4171513617038727" ty="-0.5975162982940674" tz="-0.6848058700561523" bx="-0.392009973526001" by="0.5615044236183167" bz="-0.7287255525588989" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="0.4171513319015503" ty="-0.5975162982940674" tz="-0.6848058700561523" bx="-0.392009973526001" by="0.5615044236183167" bz="-0.7287255525588989" />
|
||||
<vert id="4" uvx="0.1822509914636612" uvy="0.6234169602394104" tx="-0.3649314045906067" ty="-0.5227177739143372" tz="-0.7704486846923828" bx="-0.44103530049324036" by="-0.6317269802093506" bz="0.6375019550323486" />
|
||||
<vert id="11" uvx="0.3132839500904083" uvy="0.684260368347168" tx="-0.3649314343929291" ty="-0.5227178335189819" tz="-0.7704487442970276" bx="-0.44103533029556274" by="-0.6317270398139954" bz="0.6375020146369934" />
|
||||
<vert id="9" uvx="0.05321301892399788" uvy="0.9850500822067261" tx="-0.3649314045906067" ty="-0.5227177739143372" tz="-0.770448625087738" bx="-0.44103527069091797" by="-0.6317269206047058" bz="0.6375019550323486" />
|
||||
<vert id="0" uvx="0.1928858608007431" uvy="0.43597763776779175" tx="0.19899886846542358" ty="-0.8035477995872498" tz="-0.560990571975708" bx="-0.9799997806549072" by="-0.1631685197353363" bz="-0.11391482502222061" />
|
||||
<vert id="10" uvx="0.33420810103416443" uvy="0.38810980319976807" tx="0.1989988535642624" ty="-0.803547739982605" tz="-0.5609905123710632" bx="-0.9799996614456177" by="-0.1631685048341751" bz="-0.11391481757164001" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.19899886846542358" ty="-0.803547739982605" tz="-0.560990571975708" bx="-0.9799997210502625" by="-0.1631685197353363" bz="-0.11391482502222061" />
|
||||
<vert id="4" uvx="0.1822509914636612" uvy="0.6234169602394104" tx="0.07557619363069534" ty="-0.8176019787788391" tz="-0.5708022713661194" bx="-0.9971400499343872" by="-0.061968471854925156" bz="-0.043262794613838196" />
|
||||
<vert id="17" uvx="0.1862851232290268" uvy="0.5313258171081543" tx="0.07429240643978119" ty="-0.817681074142456" tz="-0.5708574652671814" bx="-0.9972364902496338" by="-0.060915835201740265" bz="-0.042527902871370316" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.07429242134094238" ty="-0.8176811337471008" tz="-0.5708575248718262" bx="-0.9972366094589233" by="-0.06091585010290146" bz="-0.04252791032195091" />
|
||||
<vert id="2" uvx="0.681327760219574" uvy="0.48923569917678833" tx="0.7004905343055725" ty="0.31255924701690674" tz="0.6415761709213257" bx="0.07822474837303162" by="0.8599477410316467" bz="-0.5043521523475647" />
|
||||
<vert id="16" uvx="0.5607007145881653" uvy="0.5391241908073425" tx="0.7004904747009277" ty="0.31255921721458435" tz="0.6415761113166809" bx="0.07822476327419281" by="0.859947681427002" bz="-0.5043520927429199" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.7004904747009277" ty="0.31255921721458435" tz="0.6415761113166809" bx="0.07822476327419281" by="0.859947681427002" bz="-0.5043520927429199" />
|
||||
<vert id="11" uvx="0.3132839500904083" uvy="0.684260368347168" tx="0.37584277987480164" ty="-0.9266834259033203" tz="-0.0" bx="-0.9266834259033203" by="-0.37584277987480164" bz="-0.0" />
|
||||
<vert id="15" uvx="0.33246752619743347" uvy="0.542590320110321" tx="0.07605789601802826" ty="-0.9971033930778503" tz="-0.0" bx="-0.9971033930778503" by="-0.07605789601802826" bz="-0.0" />
|
||||
<vert id="12" uvx="0.35745128989219666" uvy="0.5447126626968384" tx="0.10820784419775009" ty="-0.9941282868385315" tz="-0.0" bx="-0.9941282868385315" by="-0.10820784419775009" bz="-0.0" />
|
||||
<vert id="5" uvx="0.8035919666290283" uvy="0.00014956301311030984" tx="-4.770962291900105e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770961936628737e-08" />
|
||||
<vert id="12" uvx="0.8035919666290283" uvy="0.16870886087417603" tx="-4.770962647171473e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770962291900105e-08" />
|
||||
<vert id="14" uvx="0.46647340059280396" uvy="0.16870884597301483" tx="-4.770962647171473e-08" ty="0.0" tz="-1.0" bx="0.9999999403953552" by="0.0" bz="-4.770962291900105e-08" />
|
||||
<vert id="8" uvx="0.7665426731109619" uvy="0.36274176836013794" tx="0.8352057337760925" ty="0.13598060607910156" tz="0.5328608751296997" bx="-0.11463657766580582" by="0.9907115697860718" bz="-0.07313809543848038" />
|
||||
<vert id="13" uvx="0.561755359172821" uvy="0.39117196202278137" tx="0.835243821144104" ty="0.1356499344110489" tz="0.5328853130340576" bx="-0.11435780674219131" by="0.9907567501068115" bz="-0.07296024262905121" />
|
||||
<vert id="14" uvx="0.5616758465766907" uvy="0.36521783471107483" tx="0.8352406024932861" ty="0.13567835092544556" tz="0.5328832268714905" bx="-0.11438176780939102" by="0.9907529354095459" bz="-0.0729755237698555" />
|
||||
<vert id="0" uvx="0.35893258452415466" uvy="0.7146556377410889" tx="3.5316074331603886e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.5316071489432943e-07" />
|
||||
<vert id="17" uvx="0.3589325547218323" uvy="0.6270394325256348" tx="3.5316062962920114e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.531606012074917e-07" />
|
||||
<vert id="16" uvx="0.5341650247573853" uvy="0.62703937292099" tx="3.5316062962920114e-07" ty="0.0" tz="1.0" bx="0.9999999403953552" by="-0.0" bz="-3.531606012074917e-07" />
|
||||
</mesh>
|
||||
</node>
|
||||
</model>
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 536 KiB |
@@ -0,0 +1,550 @@
|
||||
<model>
|
||||
<node name="Circle" px="0.0" py="0.0" pz="-0.0" rw="1.0" rx="0.0" ry="0.0" rz="0.0" sx="1.0" sy="1.0" sz="1.0">
|
||||
<mesh name="CircleCircle" num_vertex_pos="88" num_faces="152" num_vertex_groups="0" num_shape_keys="0">
|
||||
<vertdata px="2.3333334922790527" py="0.0" pz="3.5" nx="0.09849293529987335" ny="-0.9480081796646118" nz="-0.302621066570282" />
|
||||
<vertdata px="2.8614654541015625" py="0.0" pz="-3.2481021881103516" nx="0.1821654587984085" ny="-0.9538293480873108" nz="0.23879964649677277" />
|
||||
<vertdata px="3.205582618713379" py="0.0" pz="-2.8624494075775146" nx="0.2576839029788971" ny="-0.9522520899772644" nz="0.1637527346611023" />
|
||||
<vertdata px="2.3333332538604736" py="0.0" pz="-3.5" nx="0.09849293529987335" ny="-0.9480081796646118" nz="0.30262112617492676" />
|
||||
<vertdata px="1.1666666269302368" py="0.0" pz="-3.6587908267974854" nx="0.029718050733208656" ny="-0.940009593963623" nz="0.3398509621620178" />
|
||||
<vertdata px="1.1666667461395264" py="0.0" pz="3.6587908267974854" nx="0.029718047007918358" ny="-0.940009593963623" nz="-0.33985117077827454" />
|
||||
<vertdata px="3.205582618713379" py="0.0" pz="2.8624494075775146" nx="0.25768381357192993" ny="-0.9522520899772644" nz="-0.16375266015529633" />
|
||||
<vertdata px="2.8614654541015625" py="0.0" pz="3.2481021881103516" nx="0.18216542899608612" ny="-0.9538293480873108" nz="-0.23879961669445038" />
|
||||
<vertdata px="0.0" py="0.0" pz="3.6876285076141357" nx="7.522156231232202e-10" ny="-0.9382537007331848" nz="-0.34594786167144775" />
|
||||
<vertdata px="0.0" py="0.0" pz="-3.6876285076141357" nx="3.008862325959427e-10" ny="-0.9382537007331848" nz="0.345947802066803" />
|
||||
<vertdata px="3.5" py="0.0" pz="-2.1035704612731934" nx="0.3232862949371338" ny="-0.9435587525367737" nz="0.07199108600616455" />
|
||||
<vertdata px="3.5" py="0.0" pz="2.1035704612731934" nx="0.3232860565185547" ny="-0.9435588717460632" nz="-0.07199160754680634" />
|
||||
<vertdata px="-2.3333334922790527" py="0.0" pz="3.5" nx="-0.09849289804697037" ny="-0.9480081796646118" nz="-0.302621066570282" />
|
||||
<vertdata px="-2.8614654541015625" py="0.0" pz="-3.2481021881103516" nx="-0.1821654587984085" ny="-0.9538293480873108" nz="0.23879964649677277" />
|
||||
<vertdata px="-3.205582618713379" py="0.0" pz="-2.8624494075775146" nx="-0.25768381357192993" ny="-0.9522520899772644" nz="0.16375266015529633" />
|
||||
<vertdata px="-2.3333332538604736" py="0.0" pz="-3.5" nx="-0.09849292039871216" ny="-0.9480082988739014" nz="0.30262115597724915" />
|
||||
<vertdata px="-1.1666666269302368" py="0.0" pz="-3.6587908267974854" nx="-0.0297180637717247" ny="-0.9400097131729126" nz="0.33985093235969543" />
|
||||
<vertdata px="-1.1666667461395264" py="0.0" pz="3.6587908267974854" nx="-0.02971806190907955" ny="-0.940009593963623" nz="-0.33985111117362976" />
|
||||
<vertdata px="-3.205582618713379" py="0.0" pz="2.8624494075775146" nx="-0.2576839029788971" ny="-0.9522520899772644" nz="-0.1637527346611023" />
|
||||
<vertdata px="-2.8614654541015625" py="0.0" pz="3.2481021881103516" nx="-0.18216542899608612" ny="-0.9538293480873108" nz="-0.23879961669445038" />
|
||||
<vertdata px="-3.5" py="0.0" pz="-2.1035704612731934" nx="-0.3232860565185547" ny="-0.9435588717460632" nz="0.07199160754680634" />
|
||||
<vertdata px="-3.5" py="0.0" pz="2.1035704612731934" nx="-0.3232862949371338" ny="-0.9435587525367737" nz="-0.07199108600616455" />
|
||||
<vertdata px="0.6579598188400269" py="0.5886510610580444" pz="0.9869399070739746" nx="0.014037798158824444" ny="-0.9984645843505859" nz="-0.05358616262674332" />
|
||||
<vertdata px="0.8068840503692627" py="0.5886510610580444" pz="0.9159090518951416" nx="0.030952900648117065" ny="-0.9986249208450317" nz="-0.04231061413884163" />
|
||||
<vertdata px="-2.1338816935667637e-08" py="0.5886510610580444" pz="1.0398478507995605" nx="1.8630769815786152e-08" ny="-0.9984745979309082" nz="-0.055212415754795074" />
|
||||
<vertdata px="0.3289799690246582" py="0.5886510610580444" pz="1.0317161083221436" nx="0.003974931314587593" ny="-0.9984536170959473" nz="-0.055449407547712326" />
|
||||
<vertdata px="0.6579599380493164" py="0.5886510610580444" pz="-0.9869399070739746" nx="0.01403802540153265" ny="-0.9984645247459412" nz="0.05358634516596794" />
|
||||
<vertdata px="0.3289799094200134" py="0.5886510610580444" pz="-1.0317161083221436" nx="0.003975017927587032" ny="-0.9984534978866577" nz="0.05545012652873993" />
|
||||
<vertdata px="0.9039192199707031" py="0.5886510610580444" pz="-0.8071615695953369" nx="0.04595489799976349" ny="-0.9985888600349426" nz="0.0266169011592865" />
|
||||
<vertdata px="0.8068840503692627" py="0.5886510610580444" pz="-0.9159090518951416" nx="0.03095313534140587" ny="-0.9986249208450317" nz="0.04231065511703491" />
|
||||
<vertdata px="-2.1338816935667637e-08" py="0.5886510610580444" pz="-1.0398478507995605" nx="-1.8853452132816528e-08" ny="-0.998474657535553" nz="0.05521243065595627" />
|
||||
<vertdata px="0.9869399070739746" py="0.5886510610580444" pz="0.5931706428527832" nx="0.05917312949895859" ny="-0.9982153177261353" nz="-0.008043614216148853" />
|
||||
<vertdata px="0.9869399070739746" py="0.5886510610580444" pz="-0.5931706428527832" nx="0.05917162075638771" ny="-0.99821537733078" nz="0.008043656125664711" />
|
||||
<vertdata px="0.9039192199707031" py="0.5886510610580444" pz="0.8071615695953369" nx="0.04595489054918289" ny="-0.9985888600349426" nz="-0.026616867631673813" />
|
||||
<vertdata px="-0.657960057258606" py="0.5886510610580444" pz="0.9869399070739746" nx="-0.014037922956049442" ny="-0.9984645247459412" nz="-0.05358635634183884" />
|
||||
<vertdata px="-0.8068840503692627" py="0.5886510610580444" pz="0.9159090518951416" nx="-0.03095286525785923" ny="-0.9986249208450317" nz="-0.04231061041355133" />
|
||||
<vertdata px="-0.3289799690246582" py="0.5886510610580444" pz="1.0317161083221436" nx="-0.003975032828748226" ny="-0.9984534978866577" nz="-0.05545012280344963" />
|
||||
<vertdata px="-0.6579599380493164" py="0.5886510610580444" pz="-0.9869399070739746" nx="-0.01403792668133974" ny="-0.9984645843505859" nz="0.05358613282442093" />
|
||||
<vertdata px="-0.3289799690246582" py="0.5886510610580444" pz="-1.0317161083221436" nx="-0.0039749108254909515" ny="-0.9984536170959473" nz="0.05544940009713173" />
|
||||
<vertdata px="-0.9039192199707031" py="0.5886510610580444" pz="-0.8071615695953369" nx="-0.04595489427447319" ny="-0.9985888600349426" nz="0.026616862043738365" />
|
||||
<vertdata px="-0.8068840503692627" py="0.5886510610580444" pz="-0.9159090518951416" nx="-0.030953191220760345" ny="-0.9986249208450317" nz="0.04231058806180954" />
|
||||
<vertdata px="-0.9869399070739746" py="0.5886510610580444" pz="0.5931706428527832" nx="-0.05917242169380188" ny="-0.99821537733078" nz="-0.008043691515922546" />
|
||||
<vertdata px="-0.9869399070739746" py="0.5886510610580444" pz="-0.5931706428527832" nx="-0.05917242169380188" ny="-0.99821537733078" nz="0.008043578825891018" />
|
||||
<vertdata px="-0.9039192199707031" py="0.5886510610580444" pz="0.8071615695953369" nx="-0.04595489799976349" ny="-0.9985888600349426" nz="-0.026616869494318962" />
|
||||
<vertdata px="2.27839994430542" py="0.27705520391464233" pz="2.586254119873047" nx="0.14964617788791656" ny="-0.9679763317108154" nz="-0.20156364142894745" />
|
||||
<vertdata px="1.5615100860595703" py="0.48244887590408325" pz="1.7724989652633667" nx="0.08680514991283417" ny="-0.9893050789833069" nz="-0.1172189861536026" />
|
||||
<vertdata px="1.273306965827942" py="0.48244887590408325" pz="1.9099605083465576" nx="0.042043279856443405" ny="-0.9878289699554443" nz="-0.1497543603181839" />
|
||||
<vertdata px="1.8578827381134033" py="0.27705520391464233" pz="2.7868239879608154" nx="0.07315535843372345" ny="-0.9636355638504028" nz="-0.2570112645626068" />
|
||||
<vertdata px="0.9289413690567017" py="0.27705520391464233" pz="2.9132585525512695" nx="0.0218022670596838" ny="-0.959774911403656" nz="-0.2799229621887207" />
|
||||
<vertdata px="0.636653482913971" py="0.48244887590408325" pz="1.9966129064559937" nx="0.012482929043471813" ny="-0.9866608381271362" nz="-0.16230976581573486" />
|
||||
<vertdata px="6.3005387573866756e-09" py="0.48244887590408325" pz="2.012349843978882" nx="-1.4847646723215036e-10" ny="-0.9864804744720459" nz="-0.16387902200222015" />
|
||||
<vertdata px="1.3746145555160183e-08" py="0.27705520391464233" pz="2.936220407485962" nx="7.058891804412326e-10" ny="-0.9590924978256226" nz="-0.2830928862094879" />
|
||||
<vertdata px="0.9289413094520569" py="0.27705520391464233" pz="-2.9132585525512695" nx="0.021802248433232307" ny="-0.959774911403656" nz="0.2799229025840759" />
|
||||
<vertdata px="0.6366533637046814" py="0.48244887590408325" pz="-1.9966129064559937" nx="0.01248290203511715" ny="-0.9866608381271362" nz="0.16230976581573486" />
|
||||
<vertdata px="1.273306965827942" py="0.48244887590408325" pz="-1.9099605083465576" nx="0.0420432947576046" ny="-0.9878289699554443" nz="0.14975440502166748" />
|
||||
<vertdata px="1.8578824996948242" py="0.27705520391464233" pz="-2.7868239879608154" nx="0.07315532863140106" ny="-0.9636355638504028" nz="0.25701138377189636" />
|
||||
<vertdata px="2.27839994430542" py="0.27705520391464233" pz="-2.586254119873047" nx="0.14964614808559418" ny="-0.9679762125015259" nz="0.20156393945217133" />
|
||||
<vertdata px="1.5615100860595703" py="0.48244887590408325" pz="-1.7724989652633667" nx="0.08680517226457596" ny="-0.9893050789833069" nz="0.11721903085708618" />
|
||||
<vertdata px="1.749295949935913" py="0.48244887590408325" pz="-1.5620471239089966" nx="0.1275525987148285" ny="-0.9889193773269653" nz="0.07595252245664597" />
|
||||
<vertdata px="2.552398443222046" py="0.27705520391464233" pz="-2.2791833877563477" nx="0.21917058527469635" ny="-0.9668182730674744" nz="0.13125039637088776" />
|
||||
<vertdata px="1.3746145555160183e-08" py="0.27705520391464233" pz="-2.936220169067383" nx="7.430411841369278e-11" ny="-0.9590924978256226" nz="0.2830929756164551" />
|
||||
<vertdata px="6.3005387573866756e-09" py="0.48244887590408325" pz="-2.0123496055603027" nx="4.825485566684051e-10" ny="-0.9864804744720459" nz="0.16387903690338135" />
|
||||
<vertdata px="2.7868237495422363" py="0.27705520391464233" pz="-1.6749372482299805" nx="0.2778566777706146" ny="-0.959510087966919" nz="0.046218086034059525" />
|
||||
<vertdata px="1.909960389137268" py="0.48244887590408325" pz="-1.1479246616363525" nx="0.16281218826770782" ny="-0.9863094687461853" nz="0.026187235489487648" />
|
||||
<vertdata px="1.909960389137268" py="0.48244887590408325" pz="1.1479246616363525" nx="0.16281263530254364" ny="-0.9863094091415405" nz="-0.026186935603618622" />
|
||||
<vertdata px="2.7868239879608154" py="0.27705520391464233" pz="1.6749372482299805" nx="0.27785617113113403" ny="-0.9595102667808533" nz="-0.04621828347444534" />
|
||||
<vertdata px="2.552398204803467" py="0.27705520391464233" pz="2.2791833877563477" nx="0.21917055547237396" ny="-0.9668183326721191" nz="-0.13125035166740417" />
|
||||
<vertdata px="1.749295949935913" py="0.48244887590408325" pz="1.562047004699707" nx="0.1275525689125061" ny="-0.9889193773269653" nz="-0.07595252245664597" />
|
||||
<vertdata px="-1.8578827381134033" py="0.27705520391464233" pz="2.7868237495422363" nx="-0.07315532118082047" ny="-0.9636356234550476" nz="-0.2570112645626068" />
|
||||
<vertdata px="-1.273306965827942" py="0.48244887590408325" pz="1.9099602699279785" nx="-0.042043235152959824" ny="-0.9878289699554443" nz="-0.14975440502166748" />
|
||||
<vertdata px="-1.5615100860595703" py="0.48244887590408325" pz="1.7724989652633667" nx="-0.08680509030818939" ny="-0.9893050789833069" nz="-0.11721903085708618" />
|
||||
<vertdata px="-2.27839994430542" py="0.27705520391464233" pz="2.586254119873047" nx="-0.14964613318443298" ny="-0.9679762721061707" nz="-0.20156383514404297" />
|
||||
<vertdata px="-0.636653482913971" py="0.48244887590408325" pz="1.9966129064559937" nx="-0.012482953257858753" ny="-0.9866608381271362" nz="-0.16230979561805725" />
|
||||
<vertdata px="-0.9289413690567017" py="0.27705520391464233" pz="2.9132585525512695" nx="-0.021802296862006187" ny="-0.9597748517990112" nz="-0.2799229323863983" />
|
||||
<vertdata px="-1.8578822612762451" py="0.27705520391464233" pz="-2.7868237495422363" nx="-0.07315527647733688" ny="-0.9636355638504028" nz="0.25701144337654114" />
|
||||
<vertdata px="-1.2733068466186523" py="0.48244887590408325" pz="-1.9099602699279785" nx="-0.04204324260354042" ny="-0.9878289699554443" nz="0.14975441992282867" />
|
||||
<vertdata px="-0.636653482913971" py="0.48244887590408325" pz="-1.9966129064559937" nx="-0.012482929974794388" ny="-0.9866608381271362" nz="0.16230978071689606" />
|
||||
<vertdata px="-0.9289412498474121" py="0.27705520391464233" pz="-2.9132585525512695" nx="-0.021802283823490143" ny="-0.959774911403656" nz="0.2799229621887207" />
|
||||
<vertdata px="-2.552398204803467" py="0.27705520391464233" pz="-2.2791833877563477" nx="-0.21917055547237396" ny="-0.9668182730674744" nz="0.13125035166740417" />
|
||||
<vertdata px="-1.7492958307266235" py="0.48244887590408325" pz="-1.562047004699707" nx="-0.12755253911018372" ny="-0.9889193773269653" nz="0.07595250755548477" />
|
||||
<vertdata px="-1.5615100860595703" py="0.48244887590408325" pz="-1.7724989652633667" nx="-0.0868050828576088" ny="-0.9893050789833069" nz="0.11721903830766678" />
|
||||
<vertdata px="-2.27839994430542" py="0.27705520391464233" pz="-2.586254119873047" nx="-0.14964613318443298" ny="-0.9679762125015259" nz="0.20156386494636536" />
|
||||
<vertdata px="-2.7868237495422363" py="0.27705520391464233" pz="1.6749372482299805" nx="-0.2778565287590027" ny="-0.959510087966919" nz="-0.04621795192360878" />
|
||||
<vertdata px="-1.909960150718689" py="0.48244887590408325" pz="1.1479246616363525" nx="-0.1628127545118332" ny="-0.9863094091415405" nz="-0.02618701010942459" />
|
||||
<vertdata px="-1.909960389137268" py="0.48244887590408325" pz="-1.1479246616363525" nx="-0.16281209886074066" ny="-0.9863095283508301" nz="0.026187164708971977" />
|
||||
<vertdata px="-2.7868239879608154" py="0.27705520391464233" pz="-1.6749372482299805" nx="-0.27785632014274597" ny="-0.9595101475715637" nz="0.0462183952331543" />
|
||||
<vertdata px="-1.749295949935913" py="0.48244887590408325" pz="1.5620471239089966" nx="-0.12755262851715088" ny="-0.9889193773269653" nz="-0.07595252990722656" />
|
||||
<vertdata px="-2.552398443222046" py="0.27705520391464233" pz="2.2791833877563477" nx="-0.21917058527469635" ny="-0.9668182730674744" nz="-0.13125039637088776" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="1.0" ty="1.210358732350869e-06" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="31" uvx="0.6058473587036133" uvy="0.4195728898048401" tx="1.0" ty="1.210358732350869e-06" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="32" uvx="0.6058473587036133" uvy="0.5804271101951599" tx="1.0" ty="1.210358732350869e-06" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="1.0" ty="0.0" tz="-5.539270659937756e-07" bx="-5.539270659937756e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="1.0" ty="0.0" tz="-5.539270659937756e-07" bx="-5.539270659937756e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="1.0" ty="0.0" tz="-5.539270659937756e-07" bx="-5.539270659937756e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="1.0" ty="0.0" tz="-2.3678351226408267e-06" bx="-2.3678351226408267e-06" by="0.0" bz="-1.0" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="1.0" ty="0.0" tz="-2.3678351226408267e-06" bx="-2.3678351226408267e-06" by="0.0" bz="-1.0" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="1.0" ty="0.0" tz="-2.3678351226408267e-06" bx="-2.3678351226408267e-06" by="0.0" bz="-1.0" />
|
||||
<vert id="24" uvx="0.4720843434333801" uvy="0.3590086102485657" tx="1.0" ty="8.439614163080478e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="1.0" ty="8.439614163080478e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="30" uvx="0.4720843434333801" uvy="0.6409913897514343" tx="1.0" ty="8.439614163080478e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="1.0" ty="0.0" tz="2.934376368557423e-07" bx="2.934376368557423e-07" by="-0.0" bz="-1.0" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="1.0" ty="0.0" tz="1.0487909918310834e-07" bx="1.0487909918310834e-07" by="-0.0" bz="-1.0" />
|
||||
<vert id="25" uvx="0.5166720151901245" uvy="0.36011117696762085" tx="1.0" ty="0.0" tz="9.237298570496932e-08" bx="9.237298570496932e-08" by="-0.0" bz="-1.0" />
|
||||
<vert id="41" uvx="0.338321328163147" uvy="0.4195728898048401" tx="1.0" ty="-6.051793661754346e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="1.0" ty="-6.051793661754346e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="42" uvx="0.338321328163147" uvy="0.5804271101951599" tx="1.0" ty="-6.051793661754346e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="1.0" ty="2.1849061226930644e-07" tz="-2.4171363293135073e-06" bx="-2.4171363293135073e-06" by="-5.2812154606105e-13" bz="-1.0" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="1.0" ty="2.1849059805845172e-07" tz="-2.4171363293135073e-06" bx="-2.4171363293135073e-06" by="-5.2812154606105e-13" bz="-1.0" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="1.0" ty="2.18490583847597e-07" tz="-2.4171363293135073e-06" bx="-2.4171363293135073e-06" by="-5.2812154606105e-13" bz="-1.0" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="1.0" ty="-9.512628906804821e-08" tz="1.4031614909981727e-06" bx="1.4031614909981727e-06" by="-1.3347752536498753e-13" bz="-1.0" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="1.0" ty="-9.512628196262085e-08" tz="1.4031614909981727e-06" bx="1.4031614909981727e-06" by="-1.3347752536498753e-13" bz="-1.0" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="1.0" ty="-9.512628196262085e-08" tz="1.4031616046850104e-06" bx="1.4031616046850104e-06" by="-1.3347753891751468e-13" bz="-1.0" />
|
||||
<vert id="30" uvx="0.4720843434333801" uvy="0.6409913897514343" tx="1.0" ty="-8.439614163080478e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="1.0" ty="-8.439614163080478e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="24" uvx="0.4720843434333801" uvy="0.3590086102485657" tx="1.0" ty="-8.439614163080478e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="1.0" ty="3.671553088224755e-07" tz="3.8079346609265485e-07" bx="3.8079346609265485e-07" by="1.398103367019482e-13" bz="-1.0" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="1.0" ty="3.6715528040076606e-07" tz="3.8079346609265485e-07" bx="3.8079346609265485e-07" by="1.398103367019482e-13" bz="-1.0" />
|
||||
<vert id="34" uvx="0.38290897011756897" uvy="0.3661822974681854" tx="1.0" ty="3.6715528040076606e-07" tz="3.8079346609265485e-07" bx="3.8079346609265485e-07" by="1.398103367019482e-13" bz="-1.0" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9902617931365967" ty="-0.13921783864498138" tz="1.3884188376778184e-07" bx="0.039008110761642456" by="0.27746522426605225" bz="-0.9599434733390808" />
|
||||
<vert id="0" uvx="0.7906097769737244" uvy="0.025440294295549393" tx="0.9902618527412415" ty="-0.13921783864498138" tz="1.3884188376778184e-07" bx="0.039008110761642456" by="0.27746522426605225" bz="-0.9599435329437256" />
|
||||
<vert id="7" uvx="0.8621891140937805" uvy="0.05959474667906761" tx="0.9902617931365967" ty="-0.1392178237438202" tz="1.3884186955692712e-07" bx="0.03900810703635216" by="0.27746522426605225" bz="-0.9599434733390808" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.9999585151672363" ty="-0.00911356508731842" tz="1.1569392910359966e-07" bx="0.003152814693748951" by="0.34592118859291077" bz="-0.9382582306861877" />
|
||||
<vert id="8" uvx="0.47436589002609253" uvy="3.486812616415591e-09" tx="0.9999584555625916" ty="-0.009113564155995846" tz="1.156939219981723e-07" bx="0.0031528144609183073" by="0.34592118859291077" bz="-0.938258171081543" />
|
||||
<vert id="5" uvx="0.6324878334999084" uvy="0.0039100730791687965" tx="0.9999584555625916" ty="-0.00911356508731842" tz="1.1569391489274494e-07" bx="0.003152814693748951" by="0.34592118859291077" bz="-0.938258171081543" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.9988271594047546" ty="-0.048419151455163956" tz="2.523156972245033e-08" bx="-0.016228551045060158" by="-0.3347754180431366" bz="-0.9421582221984863" />
|
||||
<vert id="4" uvx="0.6324877738952637" uvy="0.9960899949073792" tx="0.9988270998001099" ty="-0.04841914772987366" tz="2.5231566169736652e-08" bx="-0.01622854918241501" by="-0.3347753882408142" bz="-0.9421581625938416" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.9988270998001099" ty="-0.048419151455163956" tz="2.523156794609349e-08" bx="-0.016228551045060158" by="-0.3347753882408142" bz="-0.9421581625938416" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.9988270998001099" ty="-0.0484192930161953" tz="5.423447646535351e-08" bx="0.01622869446873665" by="0.33477583527565" bz="-0.9421581625938416" />
|
||||
<vert id="5" uvx="0.6324878334999084" uvy="0.0039100730791687965" tx="0.9988270998001099" ty="-0.0484192930161953" tz="5.423447646535351e-08" bx="0.01622869446873665" by="0.33477583527565" bz="-0.9421581625938416" />
|
||||
<vert id="0" uvx="0.7906097769737244" uvy="0.025440294295549393" tx="0.9988270998001099" ty="-0.0484192930161953" tz="5.423448001806719e-08" bx="0.01622869446873665" by="0.33477583527565" bz="-0.9421581625938416" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9732493162155151" ty="-0.22975189983844757" tz="-1.2375674884879118e-07" bx="-0.04614124447107315" by="-0.1954578459262848" bz="-0.9796261191368103" />
|
||||
<vert id="2" uvx="0.9088283777236938" uvy="0.8881152272224426" tx="0.9732492566108704" ty="-0.229751855134964" tz="-1.2375672042708175e-07" bx="-0.046141233295202255" by="-0.1954578310251236" bz="-0.9796259999275208" />
|
||||
<vert id="1" uvx="0.8621891140937805" uvy="0.9404053092002869" tx="0.9732493162155151" ty="-0.22975188493728638" tz="-1.2375673463793646e-07" bx="-0.04614124074578285" by="-0.1954578459262848" bz="-0.9796261191368103" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.9999584555625916" ty="-0.009113344363868237" tz="4.892175979875901e-07" bx="-0.0031521678902208805" by="-0.3459208607673645" bz="-0.9382583498954773" />
|
||||
<vert id="9" uvx="0.47436586022377014" uvy="1.0" tx="0.9999585151672363" ty="-0.009113344363868237" tz="4.892175979875901e-07" bx="-0.0031521678902208805" by="-0.3459208607673645" bz="-0.9382584095001221" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.9999585151672363" ty="-0.009113345295190811" tz="4.89217654831009e-07" bx="-0.003152168355882168" by="-0.3459208607673645" bz="-0.9382584095001221" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9902618527412415" ty="-0.13921770453453064" tz="-1.7524398288060183e-07" bx="-0.03900812938809395" by="-0.2774653732776642" bz="-0.9599433541297913" />
|
||||
<vert id="3" uvx="0.7906097173690796" uvy="0.9745597839355469" tx="0.9902618527412415" ty="-0.13921771943569183" tz="-1.7524398288060183e-07" bx="-0.039008136838674545" by="-0.2774653732776642" bz="-0.959943413734436" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.9902617931365967" ty="-0.13921770453453064" tz="-1.7524396866974712e-07" bx="-0.03900812938809395" by="-0.2774653732776642" bz="-0.9599432945251465" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.932133138179779" ty="-0.3621157109737396" tz="3.4303607776564604e-07" bx="3.029126673936844e-07" by="-1.6757388721089228e-07" bz="-0.9999999403953552" />
|
||||
<vert id="10" uvx="0.9487317204475403" uvy="0.7852199673652649" tx="0.932133138179779" ty="-0.36211568117141724" tz="3.430360493439366e-07" bx="3.0291263897197496e-07" by="-1.6757388721089228e-07" bz="-0.9999999403953552" />
|
||||
<vert id="62" uvx="0.8509988784790039" uvy="0.7271022200584412" tx="0.932133138179779" ty="-0.3621157109737396" tz="3.4303607776564604e-07" bx="3.029126673936844e-07" by="-1.6757388721089228e-07" bz="-0.9999999403953552" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9732491970062256" ty="-0.22975167632102966" tz="-1.705316208244767e-07" bx="0.046140823513269424" by="0.19545750319957733" bz="-0.9796260595321655" />
|
||||
<vert id="6" uvx="0.9088284373283386" uvy="0.11188479512929916" tx="0.9732493162155151" ty="-0.22975167632102966" tz="-1.7053163503533142e-07" bx="0.046140823513269424" by="0.19545753300189972" bz="-0.9796261787414551" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9732492566108704" ty="-0.22975167632102966" tz="-1.705316208244767e-07" bx="0.046140823513269424" by="0.19545751810073853" bz="-0.9796261191368103" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9537917971611023" ty="-0.3004683554172516" tz="-6.579779210369452e-08" bx="-0.0347902812063694" by="-0.11043631285429001" bz="-0.9932741522789001" />
|
||||
<vert id="10" uvx="0.9487317204475403" uvy="0.7852199673652649" tx="0.9537917971611023" ty="-0.3004683256149292" tz="-6.579778499826716e-08" bx="-0.0347902774810791" by="-0.11043631285429001" bz="-0.9932741522789001" />
|
||||
<vert id="2" uvx="0.9088283777236938" uvy="0.8881152272224426" tx="0.9537917375564575" ty="-0.3004683256149292" tz="-6.579778499826716e-08" bx="-0.0347902774810791" by="-0.11043630540370941" bz="-0.9932740926742554" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9537917375564575" ty="-0.3004683554172516" tz="-1.5138779474455077e-07" bx="0.034790173172950745" by="0.11043667793273926" bz="-0.9932739734649658" />
|
||||
<vert id="11" uvx="0.9487317204475403" uvy="0.2147800624370575" tx="0.9537917971611023" ty="-0.300468385219574" tz="-1.513878089554055e-07" bx="0.03479017689824104" by="0.11043668538331985" bz="-0.9932740926742554" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.9537917971611023" ty="-0.3004683554172516" tz="-1.5138779474455077e-07" bx="0.034790173172950745" by="0.11043668538331985" bz="-0.9932740330696106" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9902618527412415" ty="0.1392175704240799" tz="1.1679107103645947e-07" bx="-0.039007749408483505" by="0.27746498584747314" bz="-0.9599435329437256" />
|
||||
<vert id="12" uvx="0.1581219732761383" uvy="0.025440247729420662" tx="0.9902617931365967" ty="0.1392175853252411" tz="1.1679107103645947e-07" bx="-0.039007753133773804" by="0.27746495604515076" bz="-0.9599434733390808" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.9902617335319519" ty="0.1392175555229187" tz="1.1679106393103211e-07" bx="-0.03900774195790291" by="0.27746492624282837" bz="-0.959943413734436" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.9999584555625916" ty="0.009113588370382786" tz="9.315781568375314e-08" bx="-0.0031526212114840746" by="0.3459205627441406" bz="-0.9382584691047668" />
|
||||
<vert id="8" uvx="0.47436589002609253" uvy="3.486812616415591e-09" tx="0.9999584555625916" ty="0.009113587439060211" tz="9.315781568375314e-08" bx="-0.003152620978653431" by="0.3459205627441406" bz="-0.9382584691047668" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.9999585151672363" ty="0.009113588370382786" tz="9.315782989460786e-08" bx="-0.0031526212114840746" by="0.3459205627441406" bz="-0.9382585287094116" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.9988271594047546" ty="0.04841931164264679" tz="5.0488694114392274e-08" bx="0.016228685155510902" by="-0.3347755968570709" bz="-0.9421582221984863" />
|
||||
<vert id="16" uvx="0.3162439167499542" uvy="0.9960899353027344" tx="0.9988270401954651" ty="0.04841930791735649" tz="5.0488687008964916e-08" bx="0.016228685155510902" by="-0.33477553725242615" bz="-0.9421581029891968" />
|
||||
<vert id="15" uvx="0.1581219881772995" uvy="0.9745597243309021" tx="0.9988270998001099" ty="0.04841930791735649" tz="5.0488687008964916e-08" bx="0.016228685155510902" by="-0.33477556705474854" bz="-0.9421581625938416" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.9988270998001099" ty="0.04841914400458336" tz="7.871103235856935e-08" bx="-0.016228483989834785" by="0.3347751200199127" bz="-0.9421583414077759" />
|
||||
<vert id="17" uvx="0.3162439465522766" uvy="0.003910049330443144" tx="0.9988270998001099" ty="0.04841914027929306" tz="7.871103235856935e-08" bx="-0.016228483989834785" by="0.3347751200199127" bz="-0.9421583414077759" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.9988270998001099" ty="0.04841914027929306" tz="7.871103235856935e-08" bx="-0.016228483989834785" by="0.3347751200199127" bz="-0.9421583414077759" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9732491970062256" ty="0.22975167632102966" tz="-1.3642524265833345e-07" bx="0.04614085704088211" by="-0.19545748829841614" bz="-0.9796260595321655" />
|
||||
<vert id="14" uvx="0.039903316646814346" uvy="0.8881152272224426" tx="0.9732493162155151" ty="0.22975167632102966" tz="-1.3642525686918816e-07" bx="0.04614085704088211" by="-0.19545751810073853" bz="-0.9796261787414551" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9732492566108704" ty="0.22975167632102966" tz="-1.3642525686918816e-07" bx="0.04614085704088211" by="-0.19545750319957733" bz="-0.9796261191368103" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9999585151672363" ty="0.009113534353673458" tz="5.913568656978896e-08" bx="0.003152746707201004" by="-0.34592071175575256" bz="-0.9382584095001221" />
|
||||
<vert id="9" uvx="0.47436586022377014" uvy="1.0" tx="0.9999584555625916" ty="0.009113533422350883" tz="5.91356794643616e-08" bx="0.0031527462415397167" by="-0.34592071175575256" bz="-0.9382583498954773" />
|
||||
<vert id="16" uvx="0.3162439167499542" uvy="0.9960899353027344" tx="0.9999584555625916" ty="0.009113533422350883" tz="5.913568301707528e-08" bx="0.0031527462415397167" by="-0.34592071175575256" bz="-0.9382583498954773" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9902617335319519" ty="0.13921795785427094" tz="3.2467079336129245e-07" bx="0.03900833800435066" by="-0.2774653136730194" bz="-0.9599434733390808" />
|
||||
<vert id="15" uvx="0.1581219881772995" uvy="0.9745597243309021" tx="0.9902617931365967" ty="0.13921795785427094" tz="3.2467079336129245e-07" bx="0.03900833800435066" by="-0.2774653434753418" bz="-0.9599435329437256" />
|
||||
<vert id="13" uvx="0.08654259890317917" uvy="0.9404052495956421" tx="0.9902617931365967" ty="0.13921795785427094" tz="3.2467079336129245e-07" bx="0.03900833800435066" by="-0.2774653434753418" bz="-0.9599435329437256" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.932133138179779" ty="0.3621157109737396" tz="-1.386158089115993e-15" bx="-1.6842635730540678e-08" by="4.335513636988253e-08" bz="-0.9999999403953552" />
|
||||
<vert id="21" uvx="4.843819212396738e-08" uvy="0.2147800475358963" tx="0.932133138179779" ty="0.36211568117141724" tz="-1.3861579832368746e-15" bx="-1.684263395418384e-08" by="4.335513636988253e-08" bz="-0.9999999403953552" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.932133138179779" ty="0.3621157109737396" tz="-1.3861579832368746e-15" bx="-1.6842635730540678e-08" by="4.335513636988253e-08" bz="-0.9999999403953552" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9732493162155151" ty="0.22975192964076996" tz="-2.3892212652754097e-07" bx="-0.046141356229782104" by="0.1954578161239624" bz="-0.9796261191368103" />
|
||||
<vert id="18" uvx="0.03990337252616882" uvy="0.11188479512929916" tx="0.9732492566108704" ty="0.22975191473960876" tz="-2.3892209810583154e-07" bx="-0.046141356229782104" by="0.1954578012228012" bz="-0.9796260595321655" />
|
||||
<vert id="19" uvx="0.08654259890317917" uvy="0.059594687074422836" tx="0.9732491970062256" ty="0.22975191473960876" tz="-2.3892212652754097e-07" bx="-0.046141356229782104" by="0.19545778632164001" bz="-0.9796259999275208" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9537917375564575" ty="0.3004683554172516" tz="-3.3088255690927326e-07" bx="0.034790001809597015" by="-0.11043673008680344" bz="-0.9932739734649658" />
|
||||
<vert id="20" uvx="5.371173728008216e-09" uvy="0.7852199673652649" tx="0.9537917971611023" ty="0.300468385219574" tz="-3.308826137526921e-07" bx="0.034790005534887314" by="-0.11043673753738403" bz="-0.9932740926742554" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.9537917971611023" ty="0.3004683554172516" tz="-3.308825853309827e-07" bx="0.034790001809597015" by="-0.11043673753738403" bz="-0.9932740330696106" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9537917971611023" ty="0.3004683554172516" tz="-2.130387315446569e-07" bx="-0.03479041904211044" by="0.11043626815080643" bz="-0.9932741522789001" />
|
||||
<vert id="21" uvx="4.843819212396738e-08" uvy="0.2147800475358963" tx="0.9537918567657471" ty="0.3004683554172516" tz="-2.130387315446569e-07" bx="-0.03479041904211044" by="0.11043627560138702" bz="-0.9932742118835449" />
|
||||
<vert id="18" uvx="0.03990337252616882" uvy="0.11188479512929916" tx="0.9537917375564575" ty="0.3004683256149292" tz="-2.130387173338022e-07" bx="-0.034790415316820145" by="0.11043626070022583" bz="-0.9932740926742554" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="0.9956754446029663" ty="0.09290008246898651" tz="-1.1365496277448983e-07" bx="-0.003346225945279002" by="0.03586263209581375" bz="-0.9993512034416199" />
|
||||
<vert id="83" uvx="0.21363316476345062" uvy="0.34435462951660156" tx="0.9956755042076111" ty="0.09290008991956711" tz="-1.1365496277448983e-07" bx="-0.003346226178109646" by="0.03586263209581375" bz="-0.9993512630462646" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.9956753849983215" ty="0.09290006756782532" tz="-1.1365494145820776e-07" bx="-0.003346225479617715" by="0.03586262837052345" bz="-0.9993511438369751" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.9824341535568237" ty="0.1866096407175064" tz="-9.725474825472702e-08" bx="-0.01347491703927517" by="0.07094018906354904" bz="-0.997389554977417" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.982434093952179" ty="0.1866096556186676" tz="-9.725474114929966e-08" bx="-0.013474917970597744" by="0.07094018161296844" bz="-0.9973894953727722" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9824342131614685" ty="0.1866096705198288" tz="-9.725475536015438e-08" bx="-0.013474918901920319" by="0.07094018906354904" bz="-0.9973896145820618" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="0.9956754446029663" ty="0.09289997071027756" tz="5.367150612833882e-10" bx="0.003346103010699153" by="-0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9956754446029663" ty="0.09289996325969696" tz="5.367150612833882e-10" bx="0.0033461027778685093" by="-0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="42" uvx="0.338321328163147" uvy="0.5804271101951599" tx="0.9956755042076111" ty="0.09289996325969696" tz="5.367150612833882e-10" bx="0.0033461027778685093" by="-0.035862576216459274" bz="-0.9993512034416199" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.9824341535568237" ty="0.1866096556186676" tz="2.3249940284131299e-07" bx="0.013475079089403152" by="-0.070940300822258" bz="-0.9973896145820618" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.9824342131614685" ty="0.1866096705198288" tz="2.3249943126302242e-07" bx="0.013475080020725727" by="-0.07094030827283859" bz="-0.9973896741867065" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9824341535568237" ty="0.1866096556186676" tz="2.324994170521677e-07" bx="0.013475079089403152" by="-0.070940300822258" bz="-0.9973896145820618" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="0.9975647330284119" ty="0.06974761188030243" tz="-1.5990841006896517e-07" bx="-0.004332558251917362" by="0.06196409463882446" bz="-0.9980690479278564" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.9975646138191223" ty="0.06974760442972183" tz="-1.5990838164725574e-07" bx="-0.004332557786256075" by="0.061964087188243866" bz="-0.9980689287185669" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.9975646138191223" ty="0.06974761188030243" tz="-1.5990839585811045e-07" bx="-0.004332558251917362" by="0.061964087188243866" bz="-0.9980689287185669" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.9900213479995728" ty="0.14091728627681732" tz="-2.2308446645524782e-08" bx="-0.017580563202500343" by="0.12351296097040176" bz="-0.9921872019767761" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9900213479995728" ty="0.14091728627681732" tz="-2.2308446645524782e-08" bx="-0.017580563202500343" by="0.12351296097040176" bz="-0.9921872019767761" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9900213479995728" ty="0.14091728627681732" tz="-2.2308444869167943e-08" bx="-0.017580563202500343" by="0.12351296097040176" bz="-0.9921872019767761" />
|
||||
<vert id="41" uvx="0.338321328163147" uvy="0.4195728898048401" tx="0.9934456944465637" ty="0.11430531740188599" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0000001192092896" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.993445634841919" ty="0.11430530995130539" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="83" uvx="0.21363316476345062" uvy="0.34435462951660156" tx="0.9934456944465637" ty="0.11430532485246658" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0000001192092896" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9736462235450745" ty="0.22806376218795776" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.9736462235450745" ty="0.22806371748447418" tz="-0.0" bx="0.0" by="-0.0" bz="-0.9999999403953552" />
|
||||
<vert id="83" uvx="0.21363316476345062" uvy="0.34435462951660156" tx="0.9736461639404297" ty="0.22806371748447418" tz="-0.0" bx="0.0" by="-0.0" bz="-0.9999998807907104" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="0.9991341829299927" ty="0.041602686047554016" tz="4.7075221232262265e-07" bx="0.0036155213601887226" by="-0.08681944012641907" bz="-0.9962174892425537" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9991341233253479" ty="0.041602686047554016" tz="4.7075221232262265e-07" bx="0.0036155213601887226" by="-0.08681943267583847" bz="-0.9962174296379089" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.9991342425346375" ty="0.041602689772844315" tz="4.707522691660415e-07" bx="0.0036155215930193663" by="-0.08681944757699966" bz="-0.9962175488471985" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.996426522731781" ty="0.08446484804153442" tz="5.38640790637146e-07" bx="0.01472924929112196" by="-0.1737537533044815" bz="-0.984679102897644" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.996426522731781" ty="0.08446484804153442" tz="5.38640790637146e-07" bx="0.01472924929112196" by="-0.1737537533044815" bz="-0.984679102897644" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9964264035224915" ty="0.08446484804153442" tz="5.38640790637146e-07" bx="0.01472924929112196" by="-0.1737537384033203" bz="-0.9846789836883545" />
|
||||
<vert id="38" uvx="0.42749667167663574" uvy="0.6398888230323792" tx="0.9999963045120239" ty="0.0026993555948138237" tz="1.737101200660618e-07" bx="0.00029321282636374235" by="-0.10855889320373535" bz="-0.9940899014472961" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.9999962449073792" ty="0.00269935536198318" tz="1.737101200660618e-07" bx="0.0002932127972599119" by="-0.10855888575315475" bz="-0.9940898418426514" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.9999963641166687" ty="0.0026993558276444674" tz="1.737101342769165e-07" bx="0.00029321282636374235" by="-0.10855890065431595" bz="-0.9940899610519409" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.9999849796295166" ty="0.005495251156389713" tz="-1.3137341881019893e-08" bx="0.0011925508733838797" by="-0.2170138657093048" bz="-0.9761678576469421" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.999984860420227" ty="0.005495250690728426" tz="-1.3137340992841473e-08" bx="0.0011925507569685578" by="-0.21701385080814362" bz="-0.9761677384376526" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9999849200248718" ty="0.005495251156389713" tz="-1.3137341881019893e-08" bx="0.0011925508733838797" by="-0.21701385080814362" bz="-0.9761677980422974" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="0.9975646734237671" ty="0.0697472020983696" tz="8.481379154545721e-07" bx="0.004333213437348604" by="-0.06196397915482521" bz="-0.9980689883232117" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.9975646138191223" ty="0.069747194647789" tz="8.481378586111532e-07" bx="0.004333212971687317" by="-0.06196397542953491" bz="-0.9980689287185669" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="0.9975647330284119" ty="0.0697472095489502" tz="8.481380291414098e-07" bx="0.0043332139030098915" by="-0.06196398288011551" bz="-0.9980690479278564" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.9900213479995728" ty="0.14091740548610687" tz="-2.8366636684040714e-07" bx="0.01758028380572796" by="-0.12351305037736893" bz="-0.9921871423721313" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9900213479995728" ty="0.14091740548610687" tz="-2.8366636684040714e-07" bx="0.01758028380572796" by="-0.12351305037736893" bz="-0.9921871423721313" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.9900214076042175" ty="0.14091740548610687" tz="-2.8366636684040714e-07" bx="0.01758028380572796" by="-0.12351305782794952" bz="-0.9921872019767761" />
|
||||
<vert id="34" uvx="0.38290897011756897" uvy="0.3661822974681854" tx="0.9998970031738281" ty="0.014355788938701153" tz="3.6095732980356843e-07" bx="-0.0015054912073537707" by="0.10488417744636536" bz="-0.9944834113121033" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.9998968839645386" ty="0.014355786144733429" tz="3.60957301381859e-07" bx="-0.0015054908581078053" by="0.10488416254520416" bz="-0.9944832921028137" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="0.9998968839645386" ty="0.014355787076056004" tz="3.60957301381859e-07" bx="-0.001505490974523127" by="0.10488416254520416" bz="-0.9944832921028137" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9995731711387634" ty="0.02921643666923046" tz="1.2866044585280179e-07" bx="-0.006131766363978386" by="0.20978857576847076" bz="-0.9777275919914246" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.9995731115341187" ty="0.029216432943940163" tz="1.2866043164194707e-07" bx="-0.006131765432655811" by="0.20978856086730957" bz="-0.9777275919914246" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.9995731115341187" ty="0.029216432943940163" tz="1.2866044585280179e-07" bx="-0.006131765432655811" by="0.20978856086730957" bz="-0.9777275919914246" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="0.9998969435691833" ty="0.014356021769344807" tz="-1.6772995081737463e-07" bx="0.001505707623437047" by="-0.10488415509462357" bz="-0.9944832921028137" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.9998969435691833" ty="0.014356023631989956" tz="-1.6772996502822934e-07" bx="0.0015057077398523688" by="-0.10488415509462357" bz="-0.9944832921028137" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9998970031738281" ty="0.014356023631989956" tz="-1.6772997923908406e-07" bx="0.0015057077398523688" by="-0.10488416254520416" bz="-0.9944833517074585" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9995731711387634" ty="0.029216419905424118" tz="-2.472871472036786e-07" bx="0.00613164808601141" by="-0.20978862047195435" bz="-0.9777275919914246" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9995731711387634" ty="0.02921641618013382" tz="-2.472871187819692e-07" bx="0.006131647154688835" by="-0.20978862047195435" bz="-0.9777275919914246" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.9995731115341187" ty="0.02921641431748867" tz="-2.472871187819692e-07" bx="0.006131647154688835" by="-0.20978860557079315" bz="-0.9777275919914246" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="0.9999963045120239" ty="0.002699141623452306" tz="7.208491581423004e-08" bx="-0.0002929453330580145" by="0.10855892300605774" bz="-0.9940899610519409" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999963641166687" ty="0.002699142089113593" tz="7.20849229196574e-08" bx="-0.0002929453912656754" by="0.10855893045663834" bz="-0.9940900206565857" />
|
||||
<vert id="24" uvx="0.4720843434333801" uvy="0.3590086102485657" tx="0.9999963641166687" ty="0.002699142089113593" tz="7.20849229196574e-08" bx="-0.0002929453912656754" by="0.10855893045663834" bz="-0.9940900206565857" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.999984860420227" ty="0.005495178513228893" tz="5.4323702869396584e-08" bx="-0.0011924942955374718" by="0.21701376140117645" bz="-0.9761677980422974" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.999984860420227" ty="0.005495178978890181" tz="5.432370642211026e-08" bx="-0.0011924944119527936" by="0.21701376140117645" bz="-0.9761677980422974" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999849200248718" ty="0.005495178978890181" tz="5.432370642211026e-08" bx="-0.0011924944119527936" by="0.21701376140117645" bz="-0.9761678576469421" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="0.9991342425346375" ty="0.041602712124586105" tz="-4.196014060653397e-07" bx="-0.0036154775880277157" by="0.08681956678628922" bz="-0.9962174892425537" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9991341829299927" ty="0.041602715849876404" tz="-4.196014060653397e-07" bx="-0.0036154778208583593" by="0.08681955933570862" bz="-0.9962174296379089" />
|
||||
<vert id="34" uvx="0.38290897011756897" uvy="0.3661822974681854" tx="0.9991341829299927" ty="0.041602715849876404" tz="-4.1960137764363026e-07" bx="-0.0036154778208583593" by="0.08681955933570862" bz="-0.9962174296379089" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.996426522731781" ty="0.08446459472179413" tz="1.4230343481358432e-07" bx="-0.014728512614965439" by="0.1737535148859024" bz="-0.9846790432929993" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.996426522731781" ty="0.08446459472179413" tz="1.4230343481358432e-07" bx="-0.014728512614965439" by="0.1737535148859024" bz="-0.9846790432929993" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9964264035224915" ty="0.08446458727121353" tz="1.423034206027296e-07" bx="-0.01472851075232029" by="0.1737534999847412" bz="-0.9846789836883545" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="0.9956754446029663" ty="-0.09289997071027756" tz="5.367150612833882e-10" bx="0.003346103010699153" by="0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.9956754446029663" ty="-0.09289996325969696" tz="5.367150612833882e-10" bx="0.0033461027778685093" by="0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="31" uvx="0.6058473587036133" uvy="0.4195728898048401" tx="0.9956755042076111" ty="-0.09289996325969696" tz="5.367150612833882e-10" bx="0.0033461027778685093" by="0.035862576216459274" bz="-0.9993512034416199" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.9824341535568237" ty="-0.18660974502563477" tz="1.7760471848760062e-07" bx="0.01347503811120987" by="0.07094035297632217" bz="-0.9973896145820618" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.9824342131614685" ty="-0.18660974502563477" tz="1.7760473269845534e-07" bx="0.01347503811120987" by="0.07094036042690277" bz="-0.9973896741867065" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.9824341535568237" ty="-0.18660973012447357" tz="1.7760471848760062e-07" bx="0.013475037179887295" by="0.07094035297632217" bz="-0.9973896145820618" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="0.9956754446029663" ty="-0.09290005266666412" tz="-1.1284982548431799e-07" bx="-0.0033462229184806347" by="-0.035862620919942856" bz="-0.9993511438369751" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9956754446029663" ty="-0.09290005266666412" tz="-1.1284983258974535e-07" bx="-0.0033462229184806347" by="-0.035862620919942856" bz="-0.9993511438369751" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9956753849983215" ty="-0.09290004521608353" tz="-1.1284982548431799e-07" bx="-0.003346222685649991" by="-0.03586261719465256" bz="-0.9993510842323303" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9824341535568237" ty="-0.1866096407175064" tz="-9.725474825472702e-08" bx="-0.01347491703927517" by="-0.07094018906354904" bz="-0.997389554977417" />
|
||||
<vert id="62" uvx="0.8509988784790039" uvy="0.7271022200584412" tx="0.982434093952179" ty="-0.1866096556186676" tz="-9.725474114929966e-08" bx="-0.013474917970597744" by="-0.07094018161296844" bz="-0.9973894953727722" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9824342131614685" ty="-0.1866096705198288" tz="-9.725475536015438e-08" bx="-0.013474918901920319" by="-0.07094018906354904" bz="-0.9973896145820618" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="0.9975646734237671" ty="-0.06974715739488602" tz="1.7586264888791447e-08" bx="0.004332396201789379" by="0.061964213848114014" bz="-0.9980689287185669" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.9975646734237671" ty="-0.06974715739488602" tz="1.7586264888791447e-08" bx="0.004332396201789379" by="0.061964213848114014" bz="-0.9980689287185669" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="0.9975647330284119" ty="-0.06974715739488602" tz="1.7586264888791447e-08" bx="0.004332396201789379" by="0.06196421757340431" bz="-0.9980689883232117" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9900213479995728" ty="-0.14091745018959045" tz="8.956990882325044e-08" bx="0.017580656334757805" by="0.12351299822330475" bz="-0.9921871423721313" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9900213479995728" ty="-0.14091746509075165" tz="8.956990882325044e-08" bx="0.017580658197402954" by="0.12351299822330475" bz="-0.9921871423721313" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.9900213479995728" ty="-0.14091746509075165" tz="8.95699159286778e-08" bx="0.017580658197402954" by="0.12351299822330475" bz="-0.9921871423721313" />
|
||||
<vert id="32" uvx="0.6058473587036133" uvy="0.5804271101951599" tx="0.9934456944465637" ty="-0.1143052875995636" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.993445634841919" ty="-0.114305280148983" tz="-0.0" bx="-0.0" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9934456944465637" ty="-0.1143052950501442" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9736462235450745" ty="-0.22806377708911896" tz="7.285645153842779e-08" bx="6.643055172617096e-08" by="-3.5852238511324686e-08" bz="-1.0" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.9736461043357849" ty="-0.22806376218795776" tz="7.285645153842779e-08" bx="6.643055172617096e-08" by="-3.5852238511324686e-08" bz="-0.9999999403953552" />
|
||||
<vert id="62" uvx="0.8509988784790039" uvy="0.7271022200584412" tx="0.9736462235450745" ty="-0.22806379199028015" tz="7.285645864385515e-08" bx="6.643055883159832e-08" by="-3.5852238511324686e-08" bz="-1.0" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="0.9991341829299927" ty="-0.04160265997052193" tz="-4.212195392483409e-07" bx="-0.00361547339707613" by="-0.08681952953338623" bz="-0.9962174296379089" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9991342425346375" ty="-0.041602663695812225" tz="-4.212195676700503e-07" bx="-0.0036154736299067736" by="-0.08681953698396683" bz="-0.9962174892425537" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="0.9991341829299927" ty="-0.04160265997052193" tz="-4.212195392483409e-07" bx="-0.00361547339707613" by="-0.08681952953338623" bz="-0.9962174296379089" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.996426522731781" ty="-0.08446492999792099" tz="2.2237708208194817e-07" bx="-0.014728491194546223" by="-0.1737534999847412" bz="-0.984679102897644" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.9964264035224915" ty="-0.0844649225473404" tz="2.2237705366023874e-07" bx="-0.014728490263223648" by="-0.17375348508358002" bz="-0.9846789836883545" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9964264035224915" ty="-0.0844649225473404" tz="2.2237708208194817e-07" bx="-0.014728490263223648" by="-0.17375348508358002" bz="-0.9846789836883545" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="0.9999963045120239" ty="-0.0026991423219442368" tz="7.745223484789676e-08" bx="-0.0002929400361608714" by="-0.10855891555547714" bz="-0.9940899014472961" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.9999964237213135" ty="-0.0026991425547748804" tz="7.745224195332412e-08" bx="-0.00029294006526470184" by="-0.10855893045663834" bz="-0.9940900206565857" />
|
||||
<vert id="30" uvx="0.4720843434333801" uvy="0.6409913897514343" tx="0.9999963045120239" ty="-0.0026991423219442368" tz="7.745223484789676e-08" bx="-0.0002929400361608714" by="-0.10855891555547714" bz="-0.9940899014472961" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.999984860420227" ty="-0.00549512542784214" tz="-1.5639103878584137e-07" bx="-0.0011926883598789573" by="-0.21701374650001526" bz="-0.9761677980422974" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.999984860420227" ty="-0.00549512542784214" tz="-1.5639103878584137e-07" bx="-0.0011926883598789573" by="-0.21701374650001526" bz="-0.9761677980422974" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.999984860420227" ty="-0.0054951258935034275" tz="-1.5639102457498666e-07" bx="-0.001192688476294279" by="-0.21701374650001526" bz="-0.9761677980422974" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="0.9975647330284119" ty="-0.06974765658378601" tz="-6.752686090294446e-07" bx="-0.004333074204623699" by="-0.06196405738592148" bz="-0.9980690479278564" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9975646138191223" ty="-0.06974764168262482" tz="-6.752684953426069e-07" bx="-0.004333073273301125" by="-0.06196404993534088" bz="-0.9980689287185669" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.9975646138191223" ty="-0.06974764913320541" tz="-6.752686090294446e-07" bx="-0.004333073738962412" by="-0.06196404993534088" bz="-0.9980689287185669" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.9900213479995728" ty="-0.1409173309803009" tz="-3.2738452659941686e-07" bx="-0.017580868676304817" by="-0.12351291626691818" bz="-0.9921872019767761" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9900213479995728" ty="-0.1409173309803009" tz="-3.2738452659941686e-07" bx="-0.017580868676304817" by="-0.12351291626691818" bz="-0.9921872019767761" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9900213479995728" ty="-0.1409173309803009" tz="-3.2738452659941686e-07" bx="-0.017580868676304817" by="-0.12351291626691818" bz="-0.9921872019767761" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="0.9998969435691833" ty="-0.014356028288602829" tz="6.83837264592313e-10" bx="0.001505875843577087" by="0.10488415509462357" bz="-0.9944832921028137" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.9998969435691833" ty="-0.014356029219925404" tz="6.838373201034642e-10" bx="0.001505875843577087" by="0.10488415509462357" bz="-0.9944832921028137" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9998969435691833" ty="-0.014356028288602829" tz="6.838373201034642e-10" bx="0.001505875843577087" by="0.10488415509462357" bz="-0.9944832921028137" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9995731711387634" ty="-0.02921641245484352" tz="6.768569704718175e-08" bx="0.006131953094154596" by="0.20978857576847076" bz="-0.9777275919914246" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.9995731711387634" ty="-0.029216410592198372" tz="6.768568994175439e-08" bx="0.006131952628493309" by="0.20978857576847076" bz="-0.9777275919914246" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.9995730519294739" ty="-0.029216408729553223" tz="6.768568994175439e-08" bx="0.006131952162832022" by="0.20978856086730957" bz="-0.9777275323867798" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="0.9998970031738281" ty="-0.014355722814798355" tz="1.0037832680609426e-06" bx="-0.0015048448694869876" by="-0.10488417744636536" bz="-0.9944833517074585" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.9998968839645386" ty="-0.014355720952153206" tz="1.0037830406872672e-06" bx="-0.0015048447530716658" by="-0.10488416254520416" bz="-0.994483232498169" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="0.9998968839645386" ty="-0.01435572188347578" tz="1.003783154374105e-06" bx="-0.0015048448694869876" by="-0.10488416254520416" bz="-0.994483232498169" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9995731711387634" ty="-0.029216255992650986" tz="4.735101981623302e-07" bx="-0.006131390575319529" by="-0.20978856086730957" bz="-0.9777275919914246" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.9995731115341187" ty="-0.029216252267360687" tz="4.7351016974062077e-07" bx="-0.006131389643996954" by="-0.20978854596614838" bz="-0.9777275919914246" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.9995731115341187" ty="-0.029216254130005836" tz="4.7351016974062077e-07" bx="-0.006131390109658241" by="-0.20978854596614838" bz="-0.9777275919914246" />
|
||||
<vert id="25" uvx="0.5166720151901245" uvy="0.36011117696762085" tx="0.9999963045120239" ty="-0.0026993697974830866" tz="1.7699598231502023e-07" bx="0.0002932176867034286" by="0.10855890810489655" bz="-0.9940899014472961" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999964237213135" ty="-0.002699370263144374" tz="1.7699599652587494e-07" bx="0.00029321774491108954" by="0.10855892300605774" bz="-0.9940900206565857" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.9999963641166687" ty="-0.0026993700303137302" tz="1.7699599652587494e-07" bx="0.0002932177158072591" by="0.10855891555547714" bz="-0.9940899610519409" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.999984860420227" ty="-0.005495320074260235" tz="5.634642974428061e-08" bx="0.0011926336446776986" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.999984860420227" ty="-0.005495320074260235" tz="5.634643684970797e-08" bx="0.0011926336446776986" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.999984860420227" ty="-0.005495320539921522" tz="5.634643329699429e-08" bx="0.0011926337610930204" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="0.9991343021392822" ty="-0.04160265251994133" tz="-1.5173812073498993e-07" bx="0.0036148964427411556" by="0.08681942522525787" bz="-0.9962176084518433" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9991341829299927" ty="-0.04160264879465103" tz="-1.517380923132805e-07" bx="0.0036148959770798683" by="0.08681941032409668" bz="-0.9962174892425537" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9991341829299927" ty="-0.04160264879465103" tz="-1.5173810652413522e-07" bx="0.0036148959770798683" by="0.08681941032409668" bz="-0.9962174892425537" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9964264631271362" ty="-0.08446488529443741" tz="9.577556880913107e-08" bx="0.014728804118931293" by="0.17375357449054718" bz="-0.9846790432929993" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.996426522731781" ty="-0.08446488529443741" tz="9.577558301998579e-08" bx="0.014728804118931293" by="0.17375357449054718" bz="-0.984679102897644" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9964264631271362" ty="-0.08446488529443741" tz="9.577557591455843e-08" bx="0.014728804118931293" by="0.17375357449054718" bz="-0.9846790432929993" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="1.0" ty="-4.447370258731098e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="1.0" ty="-4.447370258731098e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="31" uvx="0.6058473587036133" uvy="0.4195728898048401" tx="1.0" ty="-4.447370258731098e-07" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="1.0" ty="6.082964318920858e-07" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="0.9999999403953552" ty="6.082964318920858e-07" tz="-0.0" bx="0.0" by="-0.0" bz="-0.9999999403953552" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="1.0" ty="6.082964318920858e-07" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="1.0" ty="8.383176464121789e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="0.9999999403953552" ty="8.383176464121789e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-0.9999999403953552" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="1.0" ty="8.383176464121789e-08" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="24" uvx="0.4720843434333801" uvy="0.3590086102485657" tx="1.0" ty="0.0" tz="-8.853718469481464e-08" bx="-8.853718469481464e-08" by="0.0" bz="-1.0" />
|
||||
<vert id="25" uvx="0.5166720151901245" uvy="0.36011117696762085" tx="1.0" ty="0.0" tz="9.237298570496932e-08" bx="9.237298570496932e-08" by="-0.0" bz="-1.0" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="1.0" ty="0.0" tz="1.0487909918310834e-07" bx="1.0487909918310834e-07" by="-0.0" bz="-1.0" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="1.0" ty="-2.868400770239532e-07" tz="1.3539324754674453e-06" bx="1.3539324754674453e-06" by="-3.883621397561543e-13" bz="-1.0" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="1.0" ty="-2.8684010544566263e-07" tz="1.353932589154283e-06" bx="1.353932589154283e-06" by="-3.883621668612086e-13" bz="-1.0" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="1.0" ty="-2.8684010544566263e-07" tz="1.3539324754674453e-06" bx="1.3539324754674453e-06" by="-3.883621397561543e-13" bz="-1.0" />
|
||||
<vert id="41" uvx="0.338321328163147" uvy="0.4195728898048401" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="1.0" ty="-8.110632165880816e-07" tz="-6.07526544627035e-07" bx="-6.07526544627035e-07" by="4.927424570796979e-13" bz="-1.0" />
|
||||
<vert id="34" uvx="0.38290897011756897" uvy="0.3661822974681854" tx="1.0" ty="-8.110632165880816e-07" tz="-6.07526544627035e-07" bx="-6.07526544627035e-07" by="4.927424570796979e-13" bz="-1.0" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="1.0" ty="-8.110632734315004e-07" tz="-6.07526544627035e-07" bx="-6.07526544627035e-07" by="4.927424570796979e-13" bz="-1.0" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="1.0" ty="0.0" tz="7.728509388016391e-08" bx="7.728509388016391e-08" by="-0.0" bz="-1.0" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="0.9999999403953552" ty="0.0" tz="7.728508677473656e-08" bx="7.728508677473656e-08" by="-0.0" bz="-0.9999999403953552" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="1.0" ty="0.0" tz="7.728509388016391e-08" bx="7.728509388016391e-08" by="-0.0" bz="-1.0" />
|
||||
<vert id="30" uvx="0.4720843434333801" uvy="0.6409913897514343" tx="1.0" ty="0.0" tz="-8.853719890566936e-08" bx="-8.853719890566936e-08" by="0.0" bz="-1.0" />
|
||||
<vert id="38" uvx="0.42749667167663574" uvy="0.6398888230323792" tx="0.9999999403953552" ty="0.0" tz="-8.8537191800242e-08" bx="-8.8537191800242e-08" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="1.0" ty="0.0" tz="-8.853719890566936e-08" bx="-8.853719890566936e-08" by="0.0" bz="-1.0" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="1.0" ty="-7.682959335397754e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="38" uvx="0.42749667167663574" uvy="0.6398888230323792" tx="1.0" ty="-7.682959335397754e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="1.0" ty="-7.682959335397754e-08" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9902617335319519" ty="-0.13921785354614258" tz="1.4601749853682122e-07" bx="0.03900807723402977" by="0.2774648666381836" bz="-0.9599434733390808" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.9902617931365967" ty="-0.13921786844730377" tz="1.4601749853682122e-07" bx="0.03900808095932007" by="0.277464896440506" bz="-0.9599435329437256" />
|
||||
<vert id="0" uvx="0.7906097769737244" uvy="0.025440294295549393" tx="0.9902617931365967" ty="-0.13921786844730377" tz="1.4601751274767594e-07" bx="0.03900808095932007" by="0.277464896440506" bz="-0.9599435329437256" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.9999584555625916" ty="-0.009113634936511517" tz="2.3633466739170217e-08" bx="0.0031527478713542223" by="0.3459206819534302" bz="-0.9382585287094116" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.9999585151672363" ty="-0.009113634936511517" tz="2.3633468515527056e-08" bx="0.0031527478713542223" by="0.3459206819534302" bz="-0.9382585883140564" />
|
||||
<vert id="8" uvx="0.47436589002609253" uvy="3.486812616415591e-09" tx="0.9999584555625916" ty="-0.009113634936511517" tz="2.3633466739170217e-08" bx="0.0031527478713542223" by="0.3459206819534302" bz="-0.9382585287094116" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.9988271594047546" ty="-0.0484192781150341" tz="-1.2486008893475287e-09" bx="-0.016228627413511276" by="-0.3347755968570709" bz="-0.9421582221984863" />
|
||||
<vert id="3" uvx="0.7906097173690796" uvy="0.9745597839355469" tx="0.9988270998001099" ty="-0.048419274389743805" tz="-1.2486006673029237e-09" bx="-0.016228627413511276" by="-0.33477556705474854" bz="-0.9421581625938416" />
|
||||
<vert id="4" uvx="0.6324877738952637" uvy="0.9960899949073792" tx="0.9988270401954651" ty="-0.048419274389743805" tz="-1.2486006673029237e-09" bx="-0.016228627413511276" by="-0.33477553725242615" bz="-0.9421581029891968" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.9988270998001099" ty="-0.048419173806905746" tz="1.0318850485191433e-07" bx="0.016228673979640007" by="0.33477529883384705" bz="-0.9421582221984863" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.9988270998001099" ty="-0.048419173806905746" tz="1.0318851195734169e-07" bx="0.016228673979640007" by="0.33477529883384705" bz="-0.9421582221984863" />
|
||||
<vert id="5" uvx="0.6324878334999084" uvy="0.0039100730791687965" tx="0.9988271594047546" ty="-0.048419177532196045" tz="1.0318851195734169e-07" bx="0.016228675842285156" by="0.33477532863616943" bz="-0.9421582818031311" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9732492566108704" ty="-0.22975172102451324" tz="-2.070366349471442e-07" bx="-0.046141330152750015" by="-0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9732492566108704" ty="-0.22975175082683563" tz="-2.070366491579989e-07" bx="-0.04614133760333061" by="-0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="2" uvx="0.9088283777236938" uvy="0.8881152272224426" tx="0.9732492566108704" ty="-0.22975172102451324" tz="-2.070366349471442e-07" bx="-0.046141330152750015" by="-0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.9999585151672363" ty="-0.00911339558660984" tz="3.1790864341019187e-07" bx="-0.003152345772832632" by="-0.3459208011627197" bz="-0.9382584095001221" />
|
||||
<vert id="4" uvx="0.6324877738952637" uvy="0.9960899949073792" tx="0.9999585151672363" ty="-0.00911339558660984" tz="3.1790864341019187e-07" bx="-0.003152345772832632" by="-0.3459208011627197" bz="-0.9382584095001221" />
|
||||
<vert id="9" uvx="0.47436586022377014" uvy="1.0" tx="0.9999584555625916" ty="-0.00911339558660984" tz="3.179086718319013e-07" bx="-0.003152345772832632" by="-0.3459208011627197" bz="-0.9382583498954773" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9902617335319519" ty="-0.13921795785427094" tz="-3.2467079336129245e-07" bx="-0.03900833800435066" by="-0.2774653136730194" bz="-0.9599434733390808" />
|
||||
<vert id="1" uvx="0.8621891140937805" uvy="0.9404053092002869" tx="0.9902617931365967" ty="-0.13921795785427094" tz="-3.2467079336129245e-07" bx="-0.03900833800435066" by="-0.2774653434753418" bz="-0.9599435329437256" />
|
||||
<vert id="3" uvx="0.7906097173690796" uvy="0.9745597839355469" tx="0.9902617931365967" ty="-0.13921795785427094" tz="-3.2467079336129245e-07" bx="-0.03900833800435066" by="-0.2774653434753418" bz="-0.9599435329437256" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.932133138179779" ty="-0.3621158301830292" tz="-1.0242658987635878e-07" bx="-9.547522239472528e-08" by="3.709029172682676e-08" bz="-1.0000001192092896" />
|
||||
<vert id="11" uvx="0.9487317204475403" uvy="0.2147800624370575" tx="0.932133138179779" ty="-0.3621158301830292" tz="-1.0242658277093142e-07" bx="-9.547521528929792e-08" by="3.709029172682676e-08" bz="-1.0000001192092896" />
|
||||
<vert id="10" uvx="0.9487317204475403" uvy="0.7852199673652649" tx="0.9321330785751343" ty="-0.3621158301830292" tz="-1.0242658277093142e-07" bx="-9.547521528929792e-08" by="3.709029172682676e-08" bz="-1.0" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9732493162155151" ty="-0.22975176572799683" tz="-3.784150806040998e-07" bx="0.04614073783159256" by="0.19545796513557434" bz="-0.9796260595321655" />
|
||||
<vert id="7" uvx="0.8621891140937805" uvy="0.05959474667906761" tx="0.9732493162155151" ty="-0.22975176572799683" tz="-3.784150806040998e-07" bx="0.04614073783159256" by="0.19545796513557434" bz="-0.9796260595321655" />
|
||||
<vert id="6" uvx="0.9088284373283386" uvy="0.11188479512929916" tx="0.9732492566108704" ty="-0.22975175082683563" tz="-3.7841505218239035e-07" bx="0.04614073410630226" by="0.19545795023441315" bz="-0.9796259999275208" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9537917375564575" ty="-0.30046841502189636" tz="-1.775475944043592e-08" bx="-0.03479021415114403" by="-0.11043623089790344" bz="-0.9932740926742554" />
|
||||
<vert id="62" uvx="0.8509988784790039" uvy="0.7271022200584412" tx="0.9537917971611023" ty="-0.30046841502189636" tz="-1.7754761216792758e-08" bx="-0.03479021415114403" by="-0.11043623834848404" bz="-0.9932741522789001" />
|
||||
<vert id="10" uvx="0.9487317204475403" uvy="0.7852199673652649" tx="0.9537916779518127" ty="-0.30046841502189636" tz="-1.775475944043592e-08" bx="-0.03479021415114403" by="-0.11043622344732285" bz="-0.9932740330696106" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9537919163703918" ty="-0.30046817660331726" tz="-1.6925153545344074e-07" bx="0.03479006513953209" by="0.11043648421764374" bz="-0.9932741522789001" />
|
||||
<vert id="6" uvx="0.9088284373283386" uvy="0.11188479512929916" tx="0.9537918567657471" ty="-0.3004681468009949" tz="-1.6925152124258602e-07" bx="0.03479006141424179" by="0.11043647676706314" bz="-0.9932740926742554" />
|
||||
<vert id="11" uvx="0.9487317204475403" uvy="0.2147800624370575" tx="0.9537919163703918" ty="-0.3004681468009949" tz="-1.6925153545344074e-07" bx="0.03479006141424179" by="0.11043648421764374" bz="-0.9932741522789001" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9902617931365967" ty="0.139217808842659" tz="-8.350427904701974e-09" bx="-0.03900798037648201" by="0.27746525406837463" bz="-0.9599434733390808" />
|
||||
<vert id="19" uvx="0.08654259890317917" uvy="0.059594687074422836" tx="0.9902617931365967" ty="0.1392177939414978" tz="-8.350427016523554e-09" bx="-0.03900797665119171" by="0.27746525406837463" bz="-0.9599434733390808" />
|
||||
<vert id="12" uvx="0.1581219732761383" uvy="0.025440247729420662" tx="0.9902618527412415" ty="0.139217808842659" tz="-8.350427904701974e-09" bx="-0.03900798037648201" by="0.27746525406837463" bz="-0.9599435329437256" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.9999584555625916" ty="0.009113498963415623" tz="6.493486637282331e-08" bx="-0.003152622375637293" by="0.34592118859291077" bz="-0.938258171081543" />
|
||||
<vert id="17" uvx="0.3162439465522766" uvy="0.003910049330443144" tx="0.9999585151672363" ty="0.009113498963415623" tz="6.493486637282331e-08" bx="-0.003152622375637293" by="0.34592118859291077" bz="-0.9382582306861877" />
|
||||
<vert id="8" uvx="0.47436589002609253" uvy="3.486812616415591e-09" tx="0.9999584555625916" ty="0.009113498963415623" tz="6.493486637282331e-08" bx="-0.003152622375637293" by="0.34592118859291077" bz="-0.938258171081543" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.9988270998001099" ty="0.04841911047697067" tz="-2.5460258257226087e-07" bx="0.016228320077061653" by="-0.3347753882408142" bz="-0.9421582221984863" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9988270998001099" ty="0.04841911047697067" tz="-2.5460258257226087e-07" bx="0.016228320077061653" by="-0.3347753882408142" bz="-0.9421582221984863" />
|
||||
<vert id="16" uvx="0.3162439167499542" uvy="0.9960899353027344" tx="0.9988271594047546" ty="0.04841911420226097" tz="-2.546026109939703e-07" bx="0.016228321939706802" by="-0.3347754180431366" bz="-0.9421582818031311" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.9988271594047546" ty="0.04841926693916321" tz="7.920648670278752e-08" bx="-0.016228558495640755" by="0.33477580547332764" bz="-0.9421581029891968" />
|
||||
<vert id="12" uvx="0.1581219732761383" uvy="0.025440247729420662" tx="0.9988270998001099" ty="0.048419270664453506" tz="7.920648670278752e-08" bx="-0.016228558495640755" by="0.33477577567100525" bz="-0.942158043384552" />
|
||||
<vert id="17" uvx="0.3162439465522766" uvy="0.003910049330443144" tx="0.9988270998001099" ty="0.04841926321387291" tz="7.920648670278752e-08" bx="-0.016228556632995605" by="0.33477577567100525" bz="-0.942158043384552" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9732493162155151" ty="0.22975172102451324" tz="-5.231202067079721e-07" bx="0.04614058881998062" by="-0.19545799493789673" bz="-0.9796260595321655" />
|
||||
<vert id="13" uvx="0.08654259890317917" uvy="0.9404052495956421" tx="0.9732493162155151" ty="0.22975172102451324" tz="-5.231202067079721e-07" bx="0.04614058881998062" by="-0.19545799493789673" bz="-0.9796260595321655" />
|
||||
<vert id="14" uvx="0.039903316646814346" uvy="0.8881152272224426" tx="0.9732491970062256" ty="0.22975172102451324" tz="-5.231202067079721e-07" bx="0.04614058881998062" by="-0.19545796513557434" bz="-0.979625940322876" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9999585151672363" ty="0.00911351665854454" tz="-1.5609110448622232e-08" bx="0.003152670571580529" by="-0.34592074155807495" bz="-0.9382584691047668" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.9999585151672363" ty="0.009113517589867115" tz="-1.5609110448622232e-08" bx="0.0031526710372418165" by="-0.34592074155807495" bz="-0.9382584691047668" />
|
||||
<vert id="9" uvx="0.47436586022377014" uvy="1.0" tx="0.9999585151672363" ty="0.00911351665854454" tz="-1.5609108672265393e-08" bx="0.003152670571580529" by="-0.34592074155807495" bz="-0.9382584691047668" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9902617335319519" ty="0.13921773433685303" tz="6.580931994903949e-07" bx="0.039008624851703644" by="-0.27746549248695374" bz="-0.9599432945251465" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.9902617335319519" ty="0.13921773433685303" tz="6.580932563338138e-07" bx="0.039008624851703644" by="-0.27746549248695374" bz="-0.9599432945251465" />
|
||||
<vert id="15" uvx="0.1581219881772995" uvy="0.9745597243309021" tx="0.9902617931365967" ty="0.13921773433685303" tz="6.580932563338138e-07" bx="0.039008624851703644" by="-0.2774655222892761" bz="-0.9599433541297913" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.932133138179779" ty="0.3621158301830292" tz="-1.0242658987635878e-07" bx="-9.547522239472528e-08" by="-3.709029172682676e-08" bz="-1.0000001192092896" />
|
||||
<vert id="20" uvx="5.371173728008216e-09" uvy="0.7852199673652649" tx="0.932133138179779" ty="0.3621158301830292" tz="-1.0242658277093142e-07" bx="-9.547521528929792e-08" by="-3.709029172682676e-08" bz="-1.0000001192092896" />
|
||||
<vert id="21" uvx="4.843819212396738e-08" uvy="0.2147800475358963" tx="0.9321330785751343" ty="0.3621158301830292" tz="-1.0242658277093142e-07" bx="-9.547521528929792e-08" by="-3.709029172682676e-08" bz="-1.0" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9732492566108704" ty="0.22975172102451324" tz="-1.914798559710107e-07" bx="-0.04614131525158882" by="0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9732492566108704" ty="0.22975175082683563" tz="-1.914798559710107e-07" bx="-0.04614132270216942" by="0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="18" uvx="0.03990337252616882" uvy="0.11188479512929916" tx="0.9732492566108704" ty="0.22975172102451324" tz="-1.914798559710107e-07" bx="-0.04614131525158882" by="0.19545800983905792" bz="-0.979625940322876" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9537919163703918" ty="0.3004681169986725" tz="-3.9847151356298127e-07" bx="0.03478984162211418" by="-0.11043655127286911" bz="-0.9932741522789001" />
|
||||
<vert id="14" uvx="0.039903316646814346" uvy="0.8881152272224426" tx="0.9537918567657471" ty="0.3004681169986725" tz="-3.984715419846907e-07" bx="0.03478984162211418" by="-0.11043654382228851" bz="-0.9932740926742554" />
|
||||
<vert id="20" uvx="5.371173728008216e-09" uvy="0.7852199673652649" tx="0.9537919163703918" ty="0.3004681169986725" tz="-3.9847151356298127e-07" bx="0.03478984162211418" by="-0.11043655127286911" bz="-0.9932741522789001" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9537917971611023" ty="0.30046844482421875" tz="-1.2870755483618268e-07" bx="-0.03479032218456268" by="0.11043620854616165" bz="-0.9932741522789001" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.9537917971611023" ty="0.30046841502189636" tz="-1.2870754062532797e-07" bx="-0.034790318459272385" by="0.11043620854616165" bz="-0.9932741522789001" />
|
||||
<vert id="21" uvx="4.843819212396738e-08" uvy="0.2147800475358963" tx="0.9537916779518127" ty="0.30046841502189636" tz="-1.2870754062532797e-07" bx="-0.034790318459272385" by="0.11043619364500046" bz="-0.9932740330696106" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="0.9956754446029663" ty="0.09289997071027756" tz="-1.0734301225667764e-09" bx="-0.003346103709191084" by="0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="41" uvx="0.338321328163147" uvy="0.4195728898048401" tx="0.9956755042076111" ty="0.09289996325969696" tz="-1.0734301225667764e-09" bx="-0.0033461034763604403" by="0.035862576216459274" bz="-0.9993512034416199" />
|
||||
<vert id="83" uvx="0.21363316476345062" uvy="0.34435462951660156" tx="0.9956754446029663" ty="0.09289996325969696" tz="-1.0734301225667764e-09" bx="-0.0033461034763604403" by="0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.982434093952179" ty="0.18660980463027954" tz="-9.257103528170774e-08" bx="-0.013474984094500542" by="0.07094049453735352" bz="-0.9973896145820618" />
|
||||
<vert id="83" uvx="0.21363316476345062" uvy="0.34435462951660156" tx="0.982434093952179" ty="0.18660978972911835" tz="-9.257102817628038e-08" bx="-0.013474983163177967" by="0.07094049453735352" bz="-0.997389554977417" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.982434093952179" ty="0.18660980463027954" tz="-9.257102817628038e-08" bx="-0.013474984094500542" by="0.07094049453735352" bz="-0.9973896145820618" />
|
||||
<vert id="39" uvx="0.34957337379455566" uvy="0.6094418168067932" tx="0.9956755042076111" ty="0.0929000973701477" tz="2.273097692295778e-07" bx="0.0033463456202298403" by="-0.03586268797516823" bz="-0.9993513226509094" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.9956753849983215" ty="0.09290008991956711" tz="2.2730975501872308e-07" bx="0.0033463453873991966" by="-0.03586268424987793" bz="-0.9993512034416199" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9956754446029663" ty="0.09290008991956711" tz="2.273097692295778e-07" bx="0.0033463453873991966" by="-0.03586268424987793" bz="-0.9993512630462646" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.982434093952179" ty="0.18660962581634521" tz="1.239343845327312e-07" bx="0.013475004583597183" by="-0.07094050198793411" bz="-0.9973894953727722" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9824341535568237" ty="0.1866096556186676" tz="1.2393439874358592e-07" bx="0.013475006446242332" by="-0.07094050943851471" bz="-0.997389554977417" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.9824341535568237" ty="0.1866096407175064" tz="1.239343845327312e-07" bx="0.013475005514919758" by="-0.07094050943851471" bz="-0.997389554977417" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="0.9975646734237671" ty="0.06974716484546661" tz="2.482067706921498e-08" bx="-0.004332354292273521" by="0.061964213848114014" bz="-0.9980689287185669" />
|
||||
<vert id="43" uvx="0.34957337379455566" uvy="0.3905581831932068" tx="0.9975647330284119" ty="0.06974716484546661" tz="2.482068062192866e-08" bx="-0.004332354292273521" by="0.06196421757340431" bz="-0.9980689883232117" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.9975647330284119" ty="0.06974716484546661" tz="2.482067884557182e-08" bx="-0.004332354292273521" by="0.06196421757340431" bz="-0.9980689883232117" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.9900213479995728" ty="0.14091745018959045" tz="-1.3063676362889964e-07" bx="-0.017580697312951088" by="0.12351299822330475" bz="-0.9921871423721313" />
|
||||
<vert id="86" uvx="0.2354084998369217" uvy="0.2882043719291687" tx="0.9900214076042175" ty="0.14091746509075165" tz="-1.3063677783975436e-07" bx="-0.017580699175596237" by="0.12351300567388535" bz="-0.9921872615814209" />
|
||||
<vert id="87" uvx="0.1273575872182846" uvy="0.19096893072128296" tx="0.9900213479995728" ty="0.14091745018959045" tz="-1.3063677783975436e-07" bx="-0.017580697312951088" by="0.12351299822330475" bz="-0.9921871423721313" />
|
||||
<vert id="41" uvx="0.338321328163147" uvy="0.4195728898048401" tx="0.9934456944465637" ty="0.1143052875995636" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0000001192092896" />
|
||||
<vert id="42" uvx="0.338321328163147" uvy="0.5804271101951599" tx="0.993445634841919" ty="0.1143052726984024" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9934457540512085" ty="0.1143052950501442" tz="-0.0" bx="0.0" by="-0.0" bz="-1.0000001192092896" />
|
||||
<vert id="84" uvx="0.21363310515880585" uvy="0.6556453704833984" tx="0.9736462235450745" ty="0.22806371748447418" tz="-3.642821511107286e-08" bx="-3.9974047183477524e-08" by="1.0928363103346328e-08" bz="-1.0" />
|
||||
<vert id="85" uvx="0.09558513760566711" uvy="0.7271022200584412" tx="0.9736462235450745" ty="0.22806374728679657" tz="-3.642821866378654e-08" bx="-3.99740507361912e-08" by="1.0928362215167908e-08" bz="-1.0" />
|
||||
<vert id="82" uvx="0.09558520466089249" uvy="0.27289777994155884" tx="0.9736462235450745" ty="0.22806376218795776" tz="-3.642821866378654e-08" bx="-3.99740507361912e-08" by="1.0928362215167908e-08" bz="-1.0" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="0.9991342425346375" ty="0.04160245507955551" tz="-1.926091727000312e-06" bx="0.003613115753978491" by="-0.08681955188512802" bz="-0.9962174892425537" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="0.9991341829299927" ty="0.04160245507955551" tz="-1.9260919543739874e-06" bx="0.003613115753978491" by="-0.08681954443454742" bz="-0.9962174296379089" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9991342425346375" ty="0.04160245507955551" tz="-1.9260919543739874e-06" bx="0.003613115753978491" by="-0.08681955188512802" bz="-0.9962174892425537" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.996426522731781" ty="0.08446469902992249" tz="4.291636059861048e-07" bx="0.014729090966284275" by="-0.17375347018241882" bz="-0.984679102897644" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9964264035224915" ty="0.08446469902992249" tz="4.2916354914268595e-07" bx="0.014729090966284275" by="-0.17375345528125763" bz="-0.9846790432929993" />
|
||||
<vert id="74" uvx="0.22148749232292175" uvy="0.8778612613677979" tx="0.996426522731781" ty="0.08446469902992249" tz="4.2916354914268595e-07" bx="0.014729090966284275" by="-0.17375347018241882" bz="-0.984679102897644" />
|
||||
<vert id="38" uvx="0.42749667167663574" uvy="0.6398888230323792" tx="0.9999964237213135" ty="0.0026991432532668114" tz="-7.752806396865708e-08" bx="0.00029294018168002367" by="-0.10855896770954132" bz="-0.9940899610519409" />
|
||||
<vert id="30" uvx="0.4720843434333801" uvy="0.6409913897514343" tx="0.9999963045120239" ty="0.0026991430204361677" tz="-7.752804975780236e-08" bx="0.0002929401525761932" by="-0.10855895280838013" bz="-0.9940898418426514" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.9999964237213135" ty="0.0026991432532668114" tz="-7.752806396865708e-08" bx="0.00029294018168002367" by="-0.10855896770954132" bz="-0.9940899610519409" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.999984860420227" ty="0.005495124496519566" tz="1.5639099615327723e-07" bx="0.0011926882434636354" by="-0.21701376140117645" bz="-0.9761677980422974" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.999984860420227" ty="0.005495124962180853" tz="1.5639101036413194e-07" bx="0.0011926883598789573" by="-0.21701376140117645" bz="-0.9761677980422974" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.999984860420227" ty="0.005495124962180853" tz="1.5639101036413194e-07" bx="0.0011926883598789573" by="-0.21701376140117645" bz="-0.9761677980422974" />
|
||||
<vert id="40" uvx="0.36272484064102173" uvy="0.6241867542266846" tx="0.9975646734237671" ty="0.06974753737449646" tz="-5.213773874856997e-07" bx="0.00433187372982502" by="-0.061964116990566254" bz="-0.9980689883232117" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.9975646734237671" ty="0.06974754482507706" tz="-5.213773306422809e-07" bx="0.004331874195486307" by="-0.061964116990566254" bz="-0.9980689883232117" />
|
||||
<vert id="79" uvx="0.2354084849357605" uvy="0.7117956280708313" tx="0.9975646138191223" ty="0.06974753737449646" tz="-5.213773306422809e-07" bx="0.00433187372982502" by="-0.061964113265275955" bz="-0.9980689287185669" />
|
||||
<vert id="80" uvx="0.2608596682548523" uvy="0.7403304576873779" tx="0.9900213479995728" ty="0.14091740548610687" tz="3.236664838368597e-07" bx="0.017580848187208176" by="-0.12351273000240326" bz="-0.9921872019767761" />
|
||||
<vert id="81" uvx="0.16449342668056488" uvy="0.8506662845611572" tx="0.9900213479995728" ty="0.14091740548610687" tz="3.2366651225856913e-07" bx="0.017580848187208176" by="-0.12351273000240326" bz="-0.9921872019767761" />
|
||||
<vert id="78" uvx="0.1273575723171234" uvy="0.8090310096740723" tx="0.9900214076042175" ty="0.14091742038726807" tz="3.2366651225856913e-07" bx="0.017580850049853325" by="-0.12351273745298386" bz="-0.9921872615814209" />
|
||||
<vert id="34" uvx="0.38290897011756897" uvy="0.3661822974681854" tx="0.9998969435691833" ty="0.014356018044054508" tz="1.6626459853341657e-07" bx="-0.0015057085547596216" by="0.10488414019346237" bz="-0.9944833517074585" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9998970031738281" ty="0.014356018975377083" tz="1.662646127442713e-07" bx="-0.0015057085547596216" by="0.10488414764404297" bz="-0.9944834113121033" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.9998969435691833" ty="0.014356018975377083" tz="1.662646127442713e-07" bx="-0.0015057085547596216" by="0.10488414019346237" bz="-0.9944833517074585" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9995730519294739" ty="0.029216455295681953" tz="6.338545688322483e-08" bx="-0.006131837144494057" by="0.20978866517543793" bz="-0.9777275323867798" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.9995730519294739" ty="0.029216453433036804" tz="6.338545688322483e-08" bx="-0.006131836678832769" by="0.20978866517543793" bz="-0.9777275323867798" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.9995731115341187" ty="0.029216455295681953" tz="6.338546398865219e-08" bx="-0.006131837144494057" by="0.20978866517543793" bz="-0.9777275919914246" />
|
||||
<vert id="37" uvx="0.38290899991989136" uvy="0.6338176727294922" tx="0.9998970031738281" ty="0.014355862513184547" tz="2.815750690388086e-07" bx="0.0015061369631439447" by="-0.10488410294055939" bz="-0.9944833517074585" />
|
||||
<vert id="38" uvx="0.42749667167663574" uvy="0.6398888230323792" tx="0.9998968839645386" ty="0.014355860650539398" tz="2.815750121953897e-07" bx="0.001506136730313301" by="-0.1048840880393982" bz="-0.994483232498169" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.9998968839645386" ty="0.014355860650539398" tz="2.815750121953897e-07" bx="0.001506136730313301" by="-0.1048840880393982" bz="-0.994483232498169" />
|
||||
<vert id="75" uvx="0.2999207377433777" uvy="0.7589686512947083" tx="0.9995731115341187" ty="0.029216444119811058" tz="-1.181668025651561e-07" bx="0.006131777539849281" by="-0.20978854596614838" bz="-0.9777275323867798" />
|
||||
<vert id="76" uvx="0.38620835542678833" uvy="0.7707177400588989" tx="0.9995731115341187" ty="0.029216444119811058" tz="-1.181668025651561e-07" bx="0.006131777539849281" by="-0.20978854596614838" bz="-0.9777275323867798" />
|
||||
<vert id="77" uvx="0.34738975763320923" uvy="0.8950043320655823" tx="0.9995731115341187" ty="0.02921644225716591" tz="-1.1816679545972875e-07" bx="0.006131777074187994" by="-0.20978854596614838" bz="-0.9777275323867798" />
|
||||
<vert id="36" uvx="0.42749667167663574" uvy="0.36011117696762085" tx="0.9999963045120239" ty="0.0026993504725396633" tz="8.088298364405944e-10" bx="-0.00029303881456144154" by="0.10855890810489655" bz="-0.9940899014472961" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.9999963641166687" ty="0.002699350705370307" tz="8.088298364405944e-10" bx="-0.000293038843665272" by="0.10855891555547714" bz="-0.9940899610519409" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999964237213135" ty="0.002699350705370307" tz="8.088298919517456e-10" bx="-0.000293038843665272" by="0.10855892300605774" bz="-0.9940900206565857" />
|
||||
<vert id="72" uvx="0.38620835542678833" uvy="0.22928225994110107" tx="0.999984860420227" ty="0.005495262797921896" tz="2.0107421505599632e-07" bx="-0.0011923700803890824" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="73" uvx="0.34738975763320923" uvy="0.10499565303325653" tx="0.999984860420227" ty="0.005495263263583183" tz="2.0107421505599632e-07" bx="-0.0011923701968044043" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.999984860420227" ty="0.005495263263583183" tz="2.0107422926685103e-07" bx="-0.0011923701968044043" by="0.217013880610466" bz="-0.9761677384376526" />
|
||||
<vert id="35" uvx="0.36272484064102173" uvy="0.3758132755756378" tx="0.9991341829299927" ty="0.04160264879465103" tz="1.5562262944968097e-07" bx="-0.00361489225178957" by="0.08681941032409668" bz="-0.9962174892425537" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.9991342425346375" ty="0.04160264879465103" tz="1.5562264366053569e-07" bx="-0.00361489225178957" by="0.08681941777467728" bz="-0.9962175488471985" />
|
||||
<vert id="69" uvx="0.2999207377433777" uvy="0.24103134870529175" tx="0.9991341233253479" ty="0.041602641344070435" tz="1.5562262944968097e-07" bx="-0.003614891553297639" by="0.08681940287351608" bz="-0.9962174296379089" />
|
||||
<vert id="70" uvx="0.2608596682548523" uvy="0.2596695125102997" tx="0.9964264631271362" ty="0.08446479588747025" tz="2.2086542372790063e-08" bx="-0.01472868025302887" by="0.17375367879867554" bz="-0.9846790432929993" />
|
||||
<vert id="71" uvx="0.16449347138404846" uvy="0.1493336707353592" tx="0.9964264035224915" ty="0.08446480333805084" tz="2.2086540596433224e-08" bx="-0.014728682115674019" by="0.17375366389751434" bz="-0.9846789836883545" />
|
||||
<vert id="68" uvx="0.22148744761943817" uvy="0.12213874608278275" tx="0.996426522731781" ty="0.08446481078863144" tz="2.2086544149146903e-08" bx="-0.014728683046996593" by="0.17375367879867554" bz="-0.984679102897644" />
|
||||
<vert id="33" uvx="0.5945953130722046" uvy="0.3905581831932068" tx="0.9956754446029663" ty="-0.09290005266666412" tz="5.427807892033343e-08" bx="0.003346164943650365" by="0.03586263209581375" bz="-0.9993511438369751" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.9956753849983215" ty="-0.09290004521608353" tz="5.427807536761975e-08" bx="0.0033461647108197212" by="0.03586262837052345" bz="-0.9993510842323303" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.9956754446029663" ty="-0.09290006011724472" tz="5.427807892033343e-08" bx="0.003346165409311652" by="0.03586263209581375" bz="-0.9993511438369751" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.982434093952179" ty="-0.18660962581634521" tz="1.6632179722364526e-07" bx="0.013475046493113041" by="0.07094049453735352" bz="-0.9973894953727722" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9824341535568237" ty="-0.1866096556186676" tz="1.663218256453547e-07" bx="0.01347504835575819" by="0.07094050198793411" bz="-0.997389554977417" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.982434093952179" ty="-0.1866096407175064" tz="1.6632181143449998e-07" bx="0.013475047424435616" by="0.07094049453735352" bz="-0.997389554977417" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="0.9956754446029663" ty="-0.09289997071027756" tz="-5.367150612833882e-10" bx="-0.003346103010699153" by="-0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="32" uvx="0.6058473587036133" uvy="0.5804271101951599" tx="0.9956755042076111" ty="-0.09289996325969696" tz="-5.367150612833882e-10" bx="-0.0033461027778685093" by="-0.035862576216459274" bz="-0.9993512034416199" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9956754446029663" ty="-0.09289996325969696" tz="-5.367150612833882e-10" bx="-0.0033461027778685093" by="-0.035862576216459274" bz="-0.9993511438369751" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9824341535568237" ty="-0.18660978972911835" tz="-9.149502488980943e-08" bx="-0.013474982231855392" by="-0.07094050198793411" bz="-0.9973896741867065" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9824340343475342" ty="-0.18660978972911835" tz="-9.149501778438207e-08" bx="-0.013474982231855392" by="-0.07094049453735352" bz="-0.997389554977417" />
|
||||
<vert id="62" uvx="0.8509988784790039" uvy="0.7271022200584412" tx="0.9824340343475342" ty="-0.18660977482795715" tz="-9.149501778438207e-08" bx="-0.013474981300532818" by="-0.07094049453735352" bz="-0.9973894953727722" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="0.9975647330284119" ty="-0.06974759697914124" tz="-1.8027145642918185e-07" bx="0.004332218784838915" by="0.061964116990566254" bz="-0.9980690479278564" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9975646138191223" ty="-0.06974759697914124" tz="-1.8027145642918185e-07" bx="0.004332218784838915" by="0.06196410953998566" bz="-0.9980689287185669" />
|
||||
<vert id="67" uvx="0.7095834612846375" uvy="0.2882044017314911" tx="0.9975646138191223" ty="-0.06974758952856064" tz="-1.802714137966177e-07" bx="0.0043322183191776276" by="0.06196410953998566" bz="-0.9980689287185669" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9900213479995728" ty="-0.14091739058494568" tz="2.027515080271769e-07" bx="0.017580727115273476" by="0.12351274490356445" bz="-0.9921872019767761" />
|
||||
<vert id="44" uvx="0.7820906639099121" uvy="0.14933373034000397" tx="0.9900213479995728" ty="-0.14091739058494568" tz="2.027515080271769e-07" bx="0.017580727115273476" by="0.12351274490356445" bz="-0.9921872019767761" />
|
||||
<vert id="66" uvx="0.8192265033721924" uvy="0.19096899032592773" tx="0.9900214076042175" ty="-0.14091739058494568" tz="2.027515222380316e-07" bx="0.017580727115273476" by="0.12351275235414505" bz="-0.9921872615814209" />
|
||||
<vert id="32" uvx="0.6058473587036133" uvy="0.5804271101951599" tx="0.9934456944465637" ty="-0.1143052875995636" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0000001192092896" />
|
||||
<vert id="31" uvx="0.6058473587036133" uvy="0.4195728898048401" tx="0.993445634841919" ty="-0.1143052726984024" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.9934457540512085" ty="-0.1143052950501442" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0000001192092896" />
|
||||
<vert id="63" uvx="0.7313588261604309" uvy="0.6556453704833984" tx="0.9736461043357849" ty="-0.22806374728679657" tz="2.1260967741909553e-07" bx="2.0700659320027626e-07" by="-4.848855539307806e-08" bz="-0.9999998807907104" />
|
||||
<vert id="64" uvx="0.7313588261604309" uvy="0.34435462951660156" tx="0.9736461639404297" ty="-0.22806373238563538" tz="2.1260966320824082e-07" bx="2.0700657898942154e-07" by="-4.848855184036438e-08" bz="-0.9999998807907104" />
|
||||
<vert id="65" uvx="0.8509989380836487" uvy="0.2728978097438812" tx="0.9736462235450745" ty="-0.22806374728679657" tz="2.1260967741909553e-07" bx="2.0700659320027626e-07" by="-4.848855539307806e-08" bz="-1.0" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="0.9991343021392822" ty="-0.041602641344070435" tz="3.080081114603672e-07" bx="-0.0036147397477179766" by="-0.08681943267583847" bz="-0.9962176084518433" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.9991341829299927" ty="-0.041602637618780136" tz="3.080080830386578e-07" bx="-0.003614739514887333" by="-0.08681941777467728" bz="-0.9962174892425537" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9991341829299927" ty="-0.04160263389348984" tz="3.0800805461694836e-07" bx="-0.0036147392820566893" by="-0.08681941777467728" bz="-0.9962174892425537" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.9964264631271362" ty="-0.08446486294269562" tz="-9.187787242126433e-08" bx="-0.014728804118931293" by="-0.17375366389751434" bz="-0.9846790432929993" />
|
||||
<vert id="56" uvx="0.7820906043052673" uvy="0.850666344165802" tx="0.9964264035224915" ty="-0.08446486294269562" tz="-9.187788663211904e-08" bx="-0.014728804118931293" by="-0.17375364899635315" bz="-0.9846789836883545" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.996426522731781" ty="-0.08446486294269562" tz="-9.187787952669169e-08" bx="-0.014728804118931293" by="-0.17375366389751434" bz="-0.984679102897644" />
|
||||
<vert id="27" uvx="0.5166720151901245" uvy="0.6398888230323792" tx="0.9999963045120239" ty="-0.0026993565261363983" tz="-1.736848815880876e-07" bx="-0.0002932129136752337" by="-0.10855890810489655" bz="-0.9940899014472961" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.9999964237213135" ty="-0.002699356758967042" tz="-1.7368491000979702e-07" bx="-0.0002932129427790642" by="-0.10855892300605774" bz="-0.9940900206565857" />
|
||||
<vert id="61" uvx="0.472495973110199" uvy="0.7728514671325684" tx="0.9999963045120239" ty="-0.0026993562933057547" tz="-1.736848815880876e-07" bx="-0.0002932129136752337" by="-0.10855890810489655" bz="-0.9940899014472961" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.9999849796295166" ty="-0.005495148710906506" tz="4.602128171882214e-07" bx="-0.0011920917313545942" by="-0.21701379120349884" bz="-0.9761679172515869" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.999984860420227" ty="-0.005495148245245218" tz="4.6021278876651195e-07" bx="-0.0011920916149392724" by="-0.21701377630233765" bz="-0.9761677980422974" />
|
||||
<vert id="60" uvx="0.4732920229434967" uvy="0.8981176614761353" tx="0.999984860420227" ty="-0.005495147779583931" tz="4.6021278876651195e-07" bx="-0.0011920914985239506" by="-0.21701377630233765" bz="-0.9761677980422974" />
|
||||
<vert id="29" uvx="0.5814438462257385" uvy="0.6241867542266846" tx="0.9975646734237671" ty="-0.06974722445011139" tz="-9.29712143715733e-07" bx="-0.004333308432251215" by="-0.06196415051817894" bz="-0.9980689287185669" />
|
||||
<vert id="28" uvx="0.5945953130722046" uvy="0.6094418168067932" tx="0.9975647330284119" ty="-0.06974722445011139" tz="-9.297122005591518e-07" bx="-0.004333308432251215" by="-0.06196415424346924" bz="-0.9980689883232117" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9975647330284119" ty="-0.06974722445011139" tz="-9.29712143715733e-07" bx="-0.004333308432251215" by="-0.06196415424346924" bz="-0.9980689883232117" />
|
||||
<vert id="57" uvx="0.6841322779655457" uvy="0.7403305172920227" tx="0.9900214076042175" ty="-0.14091750979423523" tz="-6.232707505660073e-07" bx="-0.017581189051270485" by="-0.12351293116807938" bz="-0.9921872615814209" />
|
||||
<vert id="58" uvx="0.7095834612846375" uvy="0.7117956280708313" tx="0.9900213479995728" ty="-0.14091752469539642" tz="-6.232708074094262e-07" bx="-0.017581190913915634" by="-0.12351292371749878" bz="-0.9921872019767761" />
|
||||
<vert id="59" uvx="0.8192265033721924" uvy="0.809031069278717" tx="0.9900214076042175" ty="-0.14091752469539642" tz="-6.232708074094262e-07" bx="-0.017581190913915634" by="-0.12351293116807938" bz="-0.9921872615814209" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="0.9998969435691833" ty="-0.014355868101119995" tz="3.023114913958125e-07" bx="0.0015061588492244482" by="0.10488414764404297" bz="-0.9944834113121033" />
|
||||
<vert id="25" uvx="0.5166720151901245" uvy="0.36011117696762085" tx="0.9998968839645386" ty="-0.01435586716979742" tz="3.023114913958125e-07" bx="0.0015061587328091264" by="0.10488414019346237" bz="-0.9944833517074585" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.9998968839645386" ty="-0.014355868101119995" tz="3.023114913958125e-07" bx="0.0015061588492244482" by="0.10488414019346237" bz="-0.9944833517074585" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9995731711387634" ty="-0.029216377064585686" tz="6.732359736361104e-08" bx="0.00613194378092885" by="0.20978853106498718" bz="-0.9777275323867798" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.9995731115341187" ty="-0.029216375201940536" tz="6.732359025818369e-08" bx="0.006131943315267563" by="0.209788516163826" bz="-0.9777275323867798" />
|
||||
<vert id="48" uvx="0.599194347858429" uvy="0.10499566793441772" tx="0.9995731115341187" ty="-0.029216373339295387" tz="6.732359025818369e-08" bx="0.0061319428496062756" by="0.209788516163826" bz="-0.9777275323867798" />
|
||||
<vert id="26" uvx="0.5612596869468689" uvy="0.633817732334137" tx="0.9998969435691833" ty="-0.01435598824173212" tz="3.433729318658152e-07" bx="-0.0015055295079946518" by="-0.10488416999578476" bz="-0.9944833517074585" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9998969435691833" ty="-0.01435598824173212" tz="3.433729602875246e-07" bx="-0.0015055295079946518" by="-0.10488416999578476" bz="-0.9944833517074585" />
|
||||
<vert id="53" uvx="0.5587835907936096" uvy="0.7707177400588989" tx="0.9998969435691833" ty="-0.01435598824173212" tz="3.433729318658152e-07" bx="-0.0015055295079946518" by="-0.10488416999578476" bz="-0.9944833517074585" />
|
||||
<vert id="54" uvx="0.6450712084770203" uvy="0.758968710899353" tx="0.9995731115341187" ty="-0.029216382652521133" tz="5.595784458023445e-08" bx="-0.006131824105978012" by="-0.2097884863615036" bz="-0.9777275919914246" />
|
||||
<vert id="55" uvx="0.725096583366394" uvy="0.8778613209724426" tx="0.9995730519294739" ty="-0.029216384515166283" tz="5.595783747480709e-08" bx="-0.006131824571639299" by="-0.2097884863615036" bz="-0.9777275323867798" />
|
||||
<vert id="52" uvx="0.599194347858429" uvy="0.895004391670227" tx="0.9995731115341187" ty="-0.029216382652521133" tz="5.595784458023445e-08" bx="-0.006131824105978012" by="-0.2097884863615036" bz="-0.9777275919914246" />
|
||||
<vert id="25" uvx="0.5166720151901245" uvy="0.36011117696762085" tx="0.9999963045120239" ty="-0.002699141390621662" tz="-7.211017560848632e-08" bx="0.00029294524574652314" by="0.10855890810489655" bz="-0.9940899610519409" />
|
||||
<vert id="24" uvx="0.4720843434333801" uvy="0.3590086102485657" tx="0.9999963641166687" ty="-0.002699141623452306" tz="-7.211018271391367e-08" bx="0.0002929452748503536" by="0.10855891555547714" bz="-0.9940900206565857" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999963641166687" ty="-0.002699141623452306" tz="-7.211018271391367e-08" bx="0.0002929452748503536" by="0.10855891555547714" bz="-0.9940900206565857" />
|
||||
<vert id="49" uvx="0.5587835907936096" uvy="0.22928227484226227" tx="0.999984860420227" ty="-0.005495215300470591" tz="1.1510368125300374e-07" bx="0.0011926674051210284" by="0.21701370179653168" bz="-0.9761677980422974" />
|
||||
<vert id="50" uvx="0.472495973110199" uvy="0.22714851796627045" tx="0.9999849200248718" ty="-0.005495215766131878" tz="1.1510368125300374e-07" bx="0.0011926675215363503" by="0.21701370179653168" bz="-0.9761678576469421" />
|
||||
<vert id="51" uvx="0.4732920527458191" uvy="0.10188230127096176" tx="0.9999849200248718" ty="-0.005495215766131878" tz="1.1510367414757638e-07" bx="0.0011926675215363503" by="0.21701370179653168" bz="-0.9761678576469421" />
|
||||
<vert id="23" uvx="0.5814438462257385" uvy="0.3758132755756378" tx="0.9991341233253479" ty="-0.04160253331065178" tz="-7.148775580390065e-07" bx="0.0036143327597528696" by="0.0868195965886116" bz="-0.9962174296379089" />
|
||||
<vert id="22" uvx="0.5612596869468689" uvy="0.3661823272705078" tx="0.9991341829299927" ty="-0.04160253703594208" tz="-7.148776717258443e-07" bx="0.0036143329925835133" by="0.0868196040391922" bz="-0.9962174892425537" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9991343021392822" ty="-0.04160253703594208" tz="-7.148777285692631e-07" bx="0.0036143329925835133" by="0.0868196189403534" bz="-0.9962176084518433" />
|
||||
<vert id="45" uvx="0.6841322779655457" uvy="0.25966954231262207" tx="0.9964264035224915" ty="-0.08446487784385681" tz="-1.7348435221720138e-07" bx="0.014728519134223461" by="0.17375336587429047" bz="-0.9846790432929993" />
|
||||
<vert id="46" uvx="0.6450712084770203" uvy="0.24103134870529175" tx="0.9964264035224915" ty="-0.08446487784385681" tz="-1.7348435221720138e-07" bx="0.014728519134223461" by="0.17375336587429047" bz="-0.9846790432929993" />
|
||||
<vert id="47" uvx="0.7250966429710388" uvy="0.12213875353336334" tx="0.996426522731781" ty="-0.08446488529443741" tz="-1.734843806389108e-07" bx="0.01472852099686861" by="0.17375338077545166" bz="-0.984679102897644" />
|
||||
</mesh>
|
||||
</node>
|
||||
</model>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,162 @@
|
||||
<model>
|
||||
<node name="Cube" px="0.0" py="0.0" pz="-0.0" rw="1.0" rx="0.0" ry="0.0" rz="0.0" sx="1.0" sy="1.0" sz="1.0">
|
||||
<mesh name="CubeCube" num_vertex_pos="24" num_faces="44" num_vertex_groups="0" num_shape_keys="0">
|
||||
<vertdata px="4.68746280670166" py="6.313983917236328" pz="-12.84763240814209" nx="0.4789515733718872" ny="-0.7991589307785034" nz="0.3632499873638153" />
|
||||
<vertdata px="6.157801628112793" py="-2.210783004760742" pz="-15.642046928405762" nx="0.5773528814315796" ny="0.5773285627365112" nz="0.5773693919181824" />
|
||||
<vertdata px="6.157801628112793" py="2.5722033977508545" pz="14.073357582092285" nx="0.7357242703437805" ny="-0.5811285972595215" nz="-0.3478497862815857" />
|
||||
<vertdata px="6.157801628112793" py="-0.6326644420623779" pz="14.073357582092285" nx="0.6583318114280701" ny="0.561680018901825" nz="-0.5011135339736938" />
|
||||
<vertdata px="-4.68746280670166" py="6.313983917236328" pz="-12.84763240814209" nx="-0.4789579510688782" ny="-0.7991530299186707" nz="0.3632543981075287" />
|
||||
<vertdata px="-6.157801628112793" py="-2.210783004760742" pz="-15.642046928405762" nx="-0.5773425102233887" ny="0.5773541331291199" nz="0.5773541331291199" />
|
||||
<vertdata px="-6.157801628112793" py="2.5722033977508545" pz="14.073357582092285" nx="-0.7357242703437805" ny="-0.5811285972595215" nz="-0.3478497862815857" />
|
||||
<vertdata px="-6.157801628112793" py="-0.6326644420623779" pz="14.073357582092285" nx="-0.6583318114280701" ny="0.561680018901825" nz="-0.5011135339736938" />
|
||||
<vertdata px="0.0" py="-2.210783004760742" pz="-15.642046928405762" nx="0.0" ny="0.7070942521095276" nz="0.7071192860603333" />
|
||||
<vertdata px="0.0" py="4.764591217041016" pz="17.375267028808594" nx="0.0" ny="-0.7656209468841553" nz="-0.6432918906211853" />
|
||||
<vertdata px="0.0" py="0.9454541206359863" pz="17.375267028808594" nx="0.0" ny="0.45948535203933716" nz="-0.8881853818893433" />
|
||||
<vertdata px="0.0" py="6.313983917236328" pz="-12.84763240814209" nx="0.0" ny="-0.8858751058578491" nz="0.46392372250556946" />
|
||||
<vertdata px="-6.157801628112793" py="-2.210783004760742" pz="7.764064788818359" nx="-0.6806055903434753" ny="0.7271550893783569" nz="-0.08956265449523926" />
|
||||
<vertdata px="4.68746280670166" py="6.313983917236328" pz="4.969648838043213" nx="0.4721997380256653" ny="-0.7960413694381714" nz="-0.37860986590385437" />
|
||||
<vertdata px="-4.68746280670166" py="6.313983917236328" pz="4.969648838043213" nx="-0.4721934497356415" ny="-0.7960474491119385" nz="-0.3786052465438843" />
|
||||
<vertdata px="6.157801628112793" py="-2.210783004760742" pz="7.764064788818359" nx="0.6805939078330994" ny="0.7271661162376404" nz="-0.08956210315227509" />
|
||||
<vertdata px="0.0" py="-2.210783004760742" pz="7.764064788818359" nx="0.0" ny="0.9902214407920837" nz="-0.13950476050376892" />
|
||||
<vertdata px="0.0" py="6.313983917236328" pz="4.969648838043213" nx="0.0" ny="-0.8698450922966003" nz="-0.49332502484321594" />
|
||||
<vertdata px="-6.157801628112793" py="2.281262159347534" pz="7.764064788818359" nx="-0.8043156862258911" ny="-0.5519700646400452" nz="-0.22001208364963531" />
|
||||
<vertdata px="-6.157801628112793" py="2.281262159347534" pz="-15.642046928405762" nx="-0.66242516040802" ny="-0.2828081548213959" nz="0.6936947107315063" />
|
||||
<vertdata px="0.0" py="2.281262159347534" pz="-15.642046928405762" nx="0.0" ny="-0.298376202583313" nz="0.9544483423233032" />
|
||||
<vertdata px="6.157801628112793" py="2.281262159347534" pz="-15.642046928405762" nx="0.662426233291626" ny="-0.2828121781349182" nz="0.6936920881271362" />
|
||||
<vertdata px="6.157801628112793" py="2.281262159347534" pz="7.764064788818359" nx="0.8043178915977478" ny="-0.551967203617096" nz="-0.22001104056835175" />
|
||||
<vertdata px="0.0" py="1.641518235206604" pz="7.764064788818359" nx="1.4830084937855759e-09" ny="-0.9212736487388611" nz="-0.38891491293907166" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.9847397208213806" ty="0.17306628823280334" tz="-0.018327003344893456" bx="0.0355265773832798" by="-0.3029925525188446" bz="-0.9523305296897888" />
|
||||
<vert id="6" uvx="0.2917885184288025" uvy="0.0832657739520073" tx="0.9847396016120911" ty="0.17306628823280334" tz="-0.018327001482248306" bx="0.0355265773832798" by="-0.3029925227165222" bz="-0.9523304104804993" />
|
||||
<vert id="9" uvx="0.43768277764320374" uvy="0.0" tx="0.9847397208213806" ty="0.17306630313396454" tz="-0.018327005207538605" bx="0.0355265811085701" by="-0.3029925525188446" bz="-0.9523305296897888" />
|
||||
<vert id="10" uvx="0.6970616579055786" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.4725646674633026" />
|
||||
<vert id="6" uvx="0.6756657958030701" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.4725646674633026" />
|
||||
<vert id="7" uvx="0.7510870099067688" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.4725646674633026" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="5" uvx="0.7882254719734192" uvy="-1.005843586199262e-08" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="12" uvx="0.7882254719734192" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-0.9970225691795349" ty="0.07630708068609238" tz="-0.011099583469331264" bx="-0.013223884627223015" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="3" uvx="0.0" uvy="0.082798071205616" tx="-0.9970225691795349" ty="0.07630708813667297" tz="-0.011099583469331264" bx="-0.013223888352513313" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="10" uvx="0.14589425921440125" uvy="0.0" tx="-0.9970225691795349" ty="0.07630708813667297" tz="-0.011099583469331264" bx="-0.013223888352513313" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="22" uvx="0.8871611952781677" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="3" uvx="0.9557356834411621" uvy="0.07823076844215393" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="15" uvx="0.992874026298523" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="1" uvx="0.49376237392425537" uvy="0.7082115411758423" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="8" uvx="0.493762344121933" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="19" uvx="0.3873341679573059" uvy="1.0000001192092896" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="8" uvx="0.493762344121933" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="5" uvx="0.493762344121933" uvy="1.0000001192092896" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265079200267792" bz="-0.9701137542724609" />
|
||||
<vert id="7" uvx="0.2917885184288025" uvy="0.082798071205616" tx="-0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265077710151672" bz="-0.9701136946678162" />
|
||||
<vert id="12" uvx="0.2917885184288025" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265079200267792" bz="-0.9701137542724609" />
|
||||
<vert id="2" uvx="0.8803144097328186" uvy="0.07823076844215393" tx="-3.3821759615193514e-08" ty="-0.9999999403953552" tz="1.8135756008064163e-08" bx="0.881295919418335" by="-3.837729778410903e-08" bz="-0.4725646674633026" />
|
||||
<vert id="10" uvx="0.9017102718353271" uvy="-1.4905723322300446e-09" tx="-8.90868534497713e-08" ty="-0.9999999403953552" tz="4.7769763256155784e-08" bx="0.881295919418335" by="-1.0108619363791149e-07" bz="-0.4725646674633026" />
|
||||
<vert id="3" uvx="0.9557356834411621" uvy="0.07823076844215393" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="-0.472564697265625" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.9946390390396118" ty="0.10283250361680984" tz="-0.010889392346143723" bx="-0.006108131259679794" by="-0.04669655114412308" bz="-0.9988904595375061" />
|
||||
<vert id="2" uvx="0.583577036857605" uvy="0.0832657739520073" tx="0.9946390390396118" ty="0.10283250361680984" tz="-0.010889393277466297" bx="-0.006108132191002369" by="-0.046696554869413376" bz="-0.9988904595375061" />
|
||||
<vert id="22" uvx="0.583577036857605" uvy="0.2326439768075943" tx="0.9946390390396118" ty="0.10283251106739044" tz="-0.010889392346143723" bx="-0.006108131259679794" by="-0.04669655114412308" bz="-0.9988904595375061" />
|
||||
<vert id="11" uvx="0.43768277764320374" uvy="0.7082115411758423" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="13" uvx="0.5487409234046936" uvy="0.2884212136268616" tx="0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="0" uvx="0.5487409234046936" uvy="0.7082115411758423" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="8" uvx="0.14589425921440125" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="12" uvx="0.2917885184288025" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="5" uvx="0.2917885184288025" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="21" uvx="0.8871611952781677" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="15" uvx="0.992874026298523" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="1" uvx="0.992874026298523" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="1" uvx="0.0" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="8" uvx="0.14589425921440125" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="7" uvx="0.7510870099067688" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="1.0" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="1.0" />
|
||||
<vert id="12" uvx="0.7882254719734192" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="1.3459697356665856e-07" by="0.0" bz="1.0" />
|
||||
<vert id="4" uvx="0.32662466168403625" uvy="0.7082115411758423" tx="0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="17" uvx="0.43768277764320374" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="11" uvx="0.43768277764320374" uvy="0.7082115411758423" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="4" uvx="0.583577036857605" uvy="0.06620688736438751" tx="-0.3425443470478058" ty="-0.9395017027854919" tz="-5.263146931611118e-07" bx="-1.8028610782039323e-07" by="-4.94473511025717e-07" bz="0.9999999403953552" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="-0.3425443768501282" ty="-0.9395017027854919" tz="-5.263147500045307e-07" bx="-1.8028612203124794e-07" by="-4.944735678691359e-07" bz="0.9999999403953552" />
|
||||
<vert id="14" uvx="0.5835769772529602" uvy="0.4883444011211395" tx="-0.3425443768501282" ty="-0.9395017027854919" tz="-5.263146931611118e-07" bx="-1.8028610782039323e-07" by="-4.94473511025717e-07" bz="0.9999999403953552" />
|
||||
<vert id="0" uvx="0.29178857803344727" uvy="0.7430476546287537" tx="5.46949706858868e-07" ty="-0.8219507336616516" tz="-0.5695586204528809" bx="-1.0" by="-4.4956567535336944e-07" bz="-3.1151992629929737e-07" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="5.469494794851926e-07" ty="-0.8219507336616516" tz="-0.5695585608482361" bx="-1.0" by="-4.4956550482311286e-07" bz="-3.115197841907502e-07" />
|
||||
<vert id="11" uvx="0.2917885482311249" uvy="0.8541057705879211" tx="5.469495363286114e-07" ty="-0.8219506740570068" tz="-0.5695586204528809" bx="-0.9999999403953552" by="-4.495655332448223e-07" bz="-3.1151981261245965e-07" />
|
||||
<vert id="4" uvx="0.2917885482311249" uvy="0.9651639461517334" tx="2.914455592417653e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-2.3955385586305056e-07" bz="-1.6599535967998236e-07" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="2.914455592417653e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-2.3955385586305056e-07" bz="-1.6599535967998236e-07" />
|
||||
<vert id="19" uvx="0.3873341679573059" uvy="1.0000001192092896" tx="2.914455592417653e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-2.3955385586305056e-07" bz="-1.6599535967998236e-07" />
|
||||
<vert id="13" uvx="0.7882255911827087" uvy="0.29392117261886597" tx="0.3425443470478058" ty="-0.9395017027854919" tz="5.263146931611118e-07" bx="1.8028610782039323e-07" by="-4.94473511025717e-07" bz="-0.9999999403953552" />
|
||||
<vert id="21" uvx="0.8871611952781677" uvy="0.7822656035423279" tx="0.3425443768501282" ty="-0.9395016431808472" tz="5.263146363176929e-07" bx="1.802860936095385e-07" by="-4.944734541822982e-07" bz="-0.9999999403953552" />
|
||||
<vert id="0" uvx="0.788225531578064" uvy="0.7160586714744568" tx="0.3425443768501282" ty="-0.9395017027854919" tz="5.263146931611118e-07" bx="1.8028610782039323e-07" by="-4.94473511025717e-07" bz="-0.9999999403953552" />
|
||||
<vert id="13" uvx="0.5487409234046936" uvy="0.2884212136268616" tx="0.9923793077468872" ty="0.12253512442111969" tz="-0.01297579426318407" bx="-0.10893320292234421" by="0.8232192397117615" bz="-0.5571746826171875" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.992379367351532" ty="0.12253513932228088" tz="-0.01297579612582922" bx="-0.1089332178235054" by="0.8232192397117615" bz="-0.5571747422218323" />
|
||||
<vert id="22" uvx="0.583577036857605" uvy="0.2326439768075943" tx="0.9923794269561768" ty="0.12253513187170029" tz="-0.012975795194506645" bx="-0.1089332103729248" by="0.8232192993164062" bz="-0.5571747422218323" />
|
||||
<vert id="14" uvx="0.32662466168403625" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="17" uvx="0.43768277764320374" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.9946390390396118" ty="-0.10283250361680984" tz="0.010889392346143723" bx="0.006108131259679794" by="-0.04669655114412308" bz="-0.9988904595375061" />
|
||||
<vert id="18" uvx="0.2917885184288025" uvy="0.2326439768075943" tx="0.9946390390396118" ty="-0.10283251106739044" tz="0.010889392346143723" bx="0.006108131259679794" by="-0.04669655114412308" bz="-0.9988904595375061" />
|
||||
<vert id="6" uvx="0.2917885184288025" uvy="0.0832657739520073" tx="0.9946390390396118" ty="-0.10283250361680984" tz="0.010889393277466297" bx="0.006108132191002369" by="-0.046696554869413376" bz="-0.9988904595375061" />
|
||||
<vert id="10" uvx="0.6970616579055786" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.472564697265625" />
|
||||
<vert id="9" uvx="0.6071845889091492" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.472564697265625" />
|
||||
<vert id="6" uvx="0.6756657958030701" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="0.8812959790229797" by="0.0" bz="0.472564697265625" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="19" uvx="0.682512640953064" uvy="-1.803953253443069e-08" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="5" uvx="0.7882254719734192" uvy="-1.005843586199262e-08" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="-0.0" bz="1.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265079200267792" bz="-0.9701137542724609" />
|
||||
<vert id="15" uvx="0.0" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265079200267792" bz="-0.9701137542724609" />
|
||||
<vert id="3" uvx="0.0" uvy="0.082798071205616" tx="-0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="-0.24265077710151672" bz="-0.9701136946678162" />
|
||||
<vert id="22" uvx="0.8871611952781677" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="1.8865542017465486e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="2" uvx="0.8803144097328186" uvy="0.07823076844215393" tx="0.0" ty="-1.0" tz="-0.0" bx="1.8865542017465486e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="3" uvx="0.9557356834411621" uvy="0.07823076844215393" tx="0.0" ty="-1.0" tz="-0.0" bx="1.8865542017465486e-07" by="0.0" bz="-1.0" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="21" uvx="0.3873341977596283" uvy="0.7082115411758423" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="1" uvx="0.49376237392425537" uvy="0.7082115411758423" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="19" uvx="0.3873341679573059" uvy="1.0000001192092896" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="8" uvx="0.493762344121933" uvy="0.8541058301925659" tx="0.0" ty="-1.0" tz="-0.0" bx="-1.0" by="0.0" bz="-0.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-0.9970225691795349" ty="-0.07630708068609238" tz="0.011099583469331264" bx="0.013223884627223015" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="10" uvx="0.14589425921440125" uvy="0.0" tx="-0.9970225691795349" ty="-0.07630708813667297" tz="0.011099583469331264" bx="0.013223888352513313" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="7" uvx="0.2917885184288025" uvy="0.082798071205616" tx="-0.9970225691795349" ty="-0.07630708813667297" tz="0.011099583469331264" bx="0.013223888352513313" by="-0.3110142946243286" bz="-0.9503132104873657" />
|
||||
<vert id="2" uvx="0.8803144097328186" uvy="0.07823076844215393" tx="-3.3821759615193514e-08" ty="-0.9999999403953552" tz="1.8135756008064163e-08" bx="0.881295919418335" by="-3.837729778410903e-08" bz="-0.4725646674633026" />
|
||||
<vert id="9" uvx="0.8118332028388977" uvy="-8.276101581827788e-09" tx="-1.1901535401648289e-07" ty="-1.0" tz="6.381789319220843e-08" bx="0.8812959790229797" by="-1.3504583762369293e-07" bz="-0.472564697265625" />
|
||||
<vert id="10" uvx="0.9017102718353271" uvy="-1.4905723322300446e-09" tx="-8.90868534497713e-08" ty="-0.9999999403953552" tz="4.7769763256155784e-08" bx="0.881295919418335" by="-1.0108619363791149e-07" bz="-0.4725646674633026" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.9847397208213806" ty="-0.17306628823280334" tz="0.018327003344893456" bx="-0.0355265773832798" by="-0.3029925525188446" bz="-0.9523305296897888" />
|
||||
<vert id="9" uvx="0.43768277764320374" uvy="0.0" tx="0.9847397208213806" ty="-0.17306630313396454" tz="0.018327005207538605" bx="-0.0355265811085701" by="-0.3029925525188446" bz="-0.9523305296897888" />
|
||||
<vert id="2" uvx="0.583577036857605" uvy="0.0832657739520073" tx="0.9847396016120911" ty="-0.17306628823280334" tz="0.018327001482248306" bx="-0.0355265773832798" by="-0.3029925227165222" bz="-0.9523304104804993" />
|
||||
<vert id="11" uvx="0.43768277764320374" uvy="0.7082115411758423" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="17" uvx="0.43768277764320374" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="13" uvx="0.5487409234046936" uvy="0.2884212136268616" tx="0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="8" uvx="0.14589425921440125" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="12" uvx="0.2917885184288025" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="21" uvx="0.8871611952781677" uvy="0.7822656035423279" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="22" uvx="0.8871611952781677" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="15" uvx="0.992874026298523" uvy="0.22771424055099487" tx="0.0" ty="-1.0" tz="-0.0" bx="-0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="1" uvx="0.0" uvy="0.7848830223083496" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="15" uvx="0.0" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="16" uvx="0.14589425921440125" uvy="0.23610679805278778" tx="-1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="7" uvx="0.7510870099067688" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="1.0611867651277862e-07" by="0.0" bz="1.0" />
|
||||
<vert id="6" uvx="0.6756657958030701" uvy="0.7040348052978516" tx="0.0" ty="-1.0" tz="-0.0" bx="1.0611867651277862e-07" by="0.0" bz="1.0" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="0.0" ty="-1.0" tz="-0.0" bx="1.0611867651277862e-07" by="0.0" bz="1.0" />
|
||||
<vert id="4" uvx="0.32662466168403625" uvy="0.7082115411758423" tx="0.9999999403953552" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-0.9999999403953552" />
|
||||
<vert id="14" uvx="0.32662466168403625" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="17" uvx="0.43768277764320374" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="0.0" by="0.0" bz="-1.0" />
|
||||
<vert id="4" uvx="0.583577036857605" uvy="0.06620688736438751" tx="-0.34254419803619385" ty="-0.9395017027854919" tz="-1.0016075435714811e-07" bx="-3.430949035987396e-08" by="-9.410120327402183e-08" bz="1.0" />
|
||||
<vert id="19" uvx="0.682512640953064" uvy="-1.803953253443069e-08" tx="-0.34254419803619385" ty="-0.9395017027854919" tz="-1.0016075435714811e-07" bx="-3.430949035987396e-08" by="-9.410120327402183e-08" bz="1.0" />
|
||||
<vert id="18" uvx="0.682512640953064" uvy="0.554551362991333" tx="-0.3425442576408386" ty="-0.9395017623901367" tz="-1.0016076856800282e-07" bx="-3.430949746530132e-08" by="-9.410121748487654e-08" bz="1.0000001192092896" />
|
||||
<vert id="0" uvx="0.29178857803344727" uvy="0.7430476546287537" tx="2.2899290286204632e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-1.88220852237464e-07" bz="-1.304249082068054e-07" />
|
||||
<vert id="21" uvx="0.3873341977596283" uvy="0.7082115411758423" tx="2.2899291707290104e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-1.882208664483187e-07" bz="-1.3042492241766013e-07" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="2.2899293128375575e-07" ty="-0.8219506144523621" tz="-0.5695587396621704" bx="-0.9999999403953552" by="-1.8822088065917342e-07" bz="-1.3042492241766013e-07" />
|
||||
<vert id="4" uvx="0.2917885482311249" uvy="0.9651639461517334" tx="5.469493657983548e-07" ty="-0.8219507336616516" tz="-0.5695586204528809" bx="-1.0" by="-4.4956539113627514e-07" bz="-3.1151972734733135e-07" />
|
||||
<vert id="11" uvx="0.2917885482311249" uvy="0.8541057705879211" tx="5.469495363286114e-07" ty="-0.8219506740570068" tz="-0.5695586204528809" bx="-0.9999999403953552" by="-4.495655332448223e-07" bz="-3.1151981261245965e-07" />
|
||||
<vert id="20" uvx="0.3873341679573059" uvy="0.8541058301925659" tx="5.469494794851926e-07" ty="-0.8219507336616516" tz="-0.5695585608482361" bx="-1.0" by="-4.4956550482311286e-07" bz="-3.115197841907502e-07" />
|
||||
<vert id="13" uvx="0.7882255911827087" uvy="0.29392117261886597" tx="0.34254422783851624" ty="-0.9395017027854919" tz="1.5024114929929056e-07" bx="5.146424442159514e-08" by="-1.411518297800285e-07" bz="-1.0" />
|
||||
<vert id="22" uvx="0.8871611952781677" uvy="0.22771424055099487" tx="0.3425442576408386" ty="-0.9395017623901367" tz="1.5024116351014527e-07" bx="5.146424797430882e-08" by="-1.411518439908832e-07" bz="-1.0000001192092896" />
|
||||
<vert id="21" uvx="0.8871611952781677" uvy="0.7822656035423279" tx="0.3425442576408386" ty="-0.9395017623901367" tz="1.5024116351014527e-07" bx="5.146424797430882e-08" by="-1.411518439908832e-07" bz="-1.0000001192092896" />
|
||||
<vert id="13" uvx="0.5487409234046936" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="17" uvx="0.43768277764320374" uvy="0.2884212136268616" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="1.0" ty="0.0" tz="-0.0" bx="-0.0" by="0.8582265377044678" bz="-0.513271152973175" />
|
||||
<vert id="14" uvx="0.32662466168403625" uvy="0.2884212136268616" tx="0.9923793077468872" ty="-0.12253512442111969" tz="0.01297579426318407" bx="0.10893320292234421" by="0.8232192397117615" bz="-0.5571746826171875" />
|
||||
<vert id="18" uvx="0.2917885184288025" uvy="0.2326439768075943" tx="0.9923794269561768" ty="-0.12253513187170029" tz="0.012975795194506645" bx="0.1089332103729248" by="0.8232192993164062" bz="-0.5571747422218323" />
|
||||
<vert id="23" uvx="0.43768277764320374" uvy="0.2342401146888733" tx="0.992379367351532" ty="-0.12253513932228088" tz="0.01297579612582922" bx="0.1089332178235054" by="0.8232192397117615" bz="-0.5571747422218323" />
|
||||
</mesh>
|
||||
</node>
|
||||
</model>
|
||||
@@ -1,6 +1,7 @@
|
||||
map = {
|
||||
lights = {
|
||||
{type = 3, color = {x = 0.900000, y = 0.900000, z = 0.900000}},},
|
||||
{type = 3, color = {x = 0.900000, y = 0.900000, z = 0.900000}},
|
||||
},
|
||||
numWaterBodies = 1,
|
||||
size = {x = 1000.000000, y = 169.766891, z = 1000.000000},
|
||||
impassibleNodeValue = 65535,
|
||||
@@ -12,24 +13,27 @@ spawnPoints = {
|
||||
},
|
||||
players = {
|
||||
{
|
||||
resourceDeposits = {
|
||||
{id = 0, pos = {x = 100.000000, y = 0.000000, z = 100.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}, initAmmount = 1000},
|
||||
{id = 0, pos = {x = -200.000000, y = 0.000000, z = 50.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}, initAmmount = 1000},
|
||||
},
|
||||
resourceDeposits = {},
|
||||
units = {
|
||||
{id = 1, pos = {x = 300.000000, y = 0.000000, z = 0.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = 18, pos = {x = 300.000000, y = 0.000000, z = 100.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = 0, pos = {x = 290.000000, y = 0.000000, z = 0.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = UnitId.POINT_DEFENSE, pos = {x = 280.000000, y = 0.000000, z = 50.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}, buildStatus = 100},
|
||||
}
|
||||
,},
|
||||
{
|
||||
resourceDeposits = {},
|
||||
spawnPoint = 0,
|
||||
units = {
|
||||
{id = 0, pos = {x = 300.000000, y = 0.000000, z = 450.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = 1, pos = {x = -300.000000, y = 0.000000, z = -450.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = 13, pos = {x = 0.000000, y = 0.000000, z = 0.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = UnitId.ENGINEER, pos = {x = 300.000000, y = 0.000000, z = 450.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
{id = UnitId.ENGINEER, pos = {x = -300.000000, y = 0.000000, z = -450.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}},
|
||||
}
|
||||
,},
|
||||
{
|
||||
resourceDeposits = {
|
||||
{id = 0, pos = {x = 100.000000, y = 0.000000, z = 100.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}, initAmmount = 1000},
|
||||
{id = 0, pos = {x = -200.000000, y = 0.000000, z = 50.000000}, rot = {w = 1.000000, x = 0.000000, y = 0.000000, z = 0.000000}, initAmmount = 1000},
|
||||
},
|
||||
units = {}
|
||||
}
|
||||
,}
|
||||
},
|
||||
numCells = 37306,
|
||||
cells = {
|
||||
|
||||
@@ -1,13 +1,60 @@
|
||||
ProjectileId = {CRUISE_MISSILE = 0, TORPEDO = 1}
|
||||
ProjectileClass = {CRUISE_MISSILE = 0, TORPEDO = 1}
|
||||
ProjectileId = {HE_SHELL = 0, EMP_SHELL = 1, CRUISE_MISSILE = 2, MISSILE = 3, TORPEDO = 4}
|
||||
ProjectileClass = {SHELL = 0, CRUISE_MISSILE = 1, MISSILE = 2, TORPEDO = 3}
|
||||
G = 9.8
|
||||
|
||||
explosionVfx = {
|
||||
vfx = true,
|
||||
duration = 50,
|
||||
offset = 0,
|
||||
mesh = {
|
||||
numParticles = 1,
|
||||
texture = PATH .. 'Textures/Explosion/explosion07.png',
|
||||
lowLife = 3,
|
||||
highLife = 3,
|
||||
size = {x = 10, y = 10},
|
||||
}
|
||||
}
|
||||
explosionSfx = {
|
||||
vfx = false,
|
||||
offset = 100,
|
||||
path = PATH .. 'Sounds/SFX/Explosions/explosion02.ogg',
|
||||
duration = 2500
|
||||
}
|
||||
Detonation = {EXPLOSION = 0, EMP = 1, CRYO = 2}
|
||||
|
||||
projectiles = {
|
||||
{
|
||||
projectileClass = ProjectileClass.SHELL,
|
||||
size = {x = 1, y = 1, z = 1},
|
||||
speed = 5,
|
||||
rotAngle = .1,
|
||||
explosion = {detonation = Detonation.EXPLOSION, damage = 100, radius = 20, fx = {explosionVfx, explosionSfx}},
|
||||
directHitDamage = 200,
|
||||
rayLength = 1,
|
||||
name = "Shell",
|
||||
basePath = PATH .. "Models/GameObjects/Projectiles/Shells/",
|
||||
meshPath = "shell.xml",
|
||||
albedoPath = 'shell.jpg'
|
||||
},
|
||||
{
|
||||
projectileClass = ProjectileClass.SHELL,
|
||||
size = {x = 1, y = 1, z = 1},
|
||||
speed = 5,
|
||||
rotAngle = .1,
|
||||
explosion = {detonation = Detonation.EMP, damage = 0, radius = 20, fx = {explosionVfx, explosionSfx}},
|
||||
directHitDamage = 0,
|
||||
rayLength = 1,
|
||||
name = "Shell",
|
||||
basePath = PATH .. "Models/GameObjects/Projectiles/Shells/",
|
||||
meshPath = "shell.xml",
|
||||
albedoPath = 'shell.jpg'
|
||||
},
|
||||
{
|
||||
projectileClass = ProjectileClass.CRUISE_MISSILE,
|
||||
size = {x = 6, y = 13.5, z = 2.54},
|
||||
speed = .5,
|
||||
rotAngle = .1,
|
||||
explosion = {damage = 100, radius = 20, sfx = PATH .. 'Sounds/SFX/Explosions/explosion02.ogg'},
|
||||
explosion = {detonation = Detonation.EXPLOSION, damage = 100, radius = 20, fx = {explosionVfx, explosionSfx}},
|
||||
directHitDamage = 450,
|
||||
rayLength = 6,
|
||||
name = "Cruise missile",
|
||||
@@ -15,11 +62,24 @@ projectiles = {
|
||||
meshPath = "cruiseMissile.xml",
|
||||
albedoPath = 'cruiseMissile.jpg'
|
||||
},
|
||||
{
|
||||
projectileClass = ProjectileClass.MISSILE,
|
||||
size = {x = 3, y = 7., z = 1.27},
|
||||
speed = .5,
|
||||
rotAngle = .1,
|
||||
explosion = {detonation = Detonation.EXPLOSION, damage = 70, radius = 12, fx = {explosionVfx, explosionSfx}},
|
||||
directHitDamage = 250,
|
||||
rayLength = 3,
|
||||
name = "Missile",
|
||||
basePath = PATH .. "Models/GameObjects/Projectiles/Missiles/",
|
||||
meshPath = "missile.xml",
|
||||
albedoPath = 'cruiseMissile.jpg'
|
||||
},
|
||||
{
|
||||
projectileClass = ProjectileClass.TORPEDO,
|
||||
size = {x = 1, y = 6, z = 1},
|
||||
speed = .06,
|
||||
explosion = {damage = 20, radius = 3, sfx = PATH .. 'Sounds/Units/Submarines/torpedo.ogg'},
|
||||
explosion = {detonation = Detonation.EXPLOSION, damage = 20, radius = 3, fx = {explosionVfx, explosionSfx}},
|
||||
directHitDamage = 450,
|
||||
rayLength = 3.5,
|
||||
name = "Torpedo",
|
||||
|
||||
@@ -10,7 +10,8 @@ OrderType = {
|
||||
SUPPLY = 7,
|
||||
LOAD = 8,
|
||||
UNLOAD = 9,
|
||||
HACK = 10
|
||||
HACK = 10,
|
||||
FREEZE = 11
|
||||
}
|
||||
UnitId = {
|
||||
WAR_MECH = 0,
|
||||
@@ -28,16 +29,20 @@ UnitId = {
|
||||
CHAMPION_CARRIER = 12,
|
||||
MISSILE_SUBMARINE = 13,
|
||||
STEALTH_SUBMARINE = 14,
|
||||
LAND_FACTORY = 15,
|
||||
NAVAL_FACTORY = 16,
|
||||
TRADE_CENTER = 17,
|
||||
LAB = 18,
|
||||
POINT_DEFENSE = 19,
|
||||
EXTRACTOR = 20,
|
||||
REFINERY = 21,
|
||||
FORT = 22
|
||||
ICEBREAKER = 15,
|
||||
FREEZER = 16,
|
||||
EMP_BOAT = 17,
|
||||
LAND_FACTORY = 18,
|
||||
NAVAL_FACTORY = 19,
|
||||
TRADE_CENTER = 20,
|
||||
LAB = 21,
|
||||
POINT_DEFENSE = 22,
|
||||
EXTRACTOR = 23,
|
||||
REFINERY = 24,
|
||||
FORT = 25,
|
||||
ICE_SHEET = 26
|
||||
}
|
||||
WeaponClass = {HITSCAN = 0, SHELL = 1, TORPEDO = 2, CRUISE_MISSILE = 3, HACK = 4}
|
||||
WeaponClass = {FREEZE = 1}
|
||||
UnitClass = {
|
||||
WAR_MECH = 0,
|
||||
TANK = 1,
|
||||
@@ -48,14 +53,18 @@ UnitClass = {
|
||||
CRUISER = 6,
|
||||
CARRIER = 7,
|
||||
SUBMARINE = 8,
|
||||
LAND_FACTORY = 9,
|
||||
NAVAL_FACTORY = 10,
|
||||
TRADE_CENTER = 11,
|
||||
LAB = 12,
|
||||
POINT_DEFENSE = 13,
|
||||
EXTRACTOR = 14,
|
||||
REFINERY = 15,
|
||||
FORT = 16
|
||||
ICEBREAKER = 9,
|
||||
FREEZER = 10,
|
||||
EMP_BOAT = 11,
|
||||
LAND_FACTORY = 12,
|
||||
NAVAL_FACTORY = 13,
|
||||
TRADE_CENTER = 14,
|
||||
LAB = 15,
|
||||
POINT_DEFENSE = 16,
|
||||
EXTRACTOR = 17,
|
||||
REFINERY = 18,
|
||||
FORT = 19,
|
||||
ICE_SHEET = 20
|
||||
}
|
||||
UnitType = {UNDERWATER = 0, SEA_LEVEL = 1, HOVER = 2, LAND = 3, AIR = 4}
|
||||
|
||||
@@ -84,14 +93,13 @@ explosionSfx = {
|
||||
duration = 2500
|
||||
}
|
||||
|
||||
|
||||
units = {
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 100,
|
||||
maxRange = 10,
|
||||
maxRange = 14,
|
||||
damage = 50,
|
||||
fireFx = {
|
||||
{
|
||||
@@ -143,28 +151,35 @@ units = {
|
||||
cost = 500,
|
||||
size = {x = 6, y = 9.22, z = 2.42},
|
||||
hitboxOffset = {x = 0, y = 4.5, z = 0},
|
||||
lineOfSight = 250,
|
||||
lineOfSight = 25,
|
||||
name = 'War mech',
|
||||
basePath = PATH .. vehiclePrefix .. 'WarMechs/',
|
||||
meshPath = 'warMech.xml',
|
||||
albedoPath = 'mech.jpg',
|
||||
colorNodes = {'WarRobotTemplate.001'},
|
||||
selectionSfx = PATH .. 'Sounds/Units/WarMechs/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .3,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 1
|
||||
garrisonCategory = 1,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 1000,
|
||||
damage = 200,
|
||||
maxRange = 25,
|
||||
horizontalNode = {name = 'Turret', rotationSpeed = .05, maxFireAngle = .1},
|
||||
projectile = {id = ProjectileId.HE_SHELL, parent = 'Turret', pos = {x = 0.06, y = 5.82, z = 11.4}, rot = {w = 1, x = 0, y = 0, z = 0}},
|
||||
fireFx = {
|
||||
{
|
||||
vfx = false,
|
||||
duration = 300,
|
||||
path = PATH .. 'Sounds/Units/Tanks/attack.ogg',
|
||||
},
|
||||
{
|
||||
vfx = true,
|
||||
duration = 50,
|
||||
@@ -172,19 +187,14 @@ units = {
|
||||
path = PATH .. vfxPrefix .. 'muzzleFlash.xml',
|
||||
color = {x = 1, y = 1, z = 0, a = 1},
|
||||
},
|
||||
parent = 'Turret',
|
||||
parent = 'CannonBarrel',
|
||||
pos = {x = 0.06, y = 5.82, z = 11.4},
|
||||
rot = {w = 1, x = 0, y = 0, z = 0},
|
||||
--scale = .5
|
||||
},
|
||||
{
|
||||
vfx = false,
|
||||
duration = 300,
|
||||
path = PATH .. 'Sounds/Units/Tanks/attack.ogg',
|
||||
}
|
||||
},
|
||||
landHitFx = {explosionVfx, explosionSfx},
|
||||
unitHitFx = {explosionVfx, explosionSfx}
|
||||
--landHitFx = {explosionVfx, explosionSfx},
|
||||
--unitHitFx = {explosionVfx, explosionSfx}
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.TANK,
|
||||
@@ -203,40 +213,42 @@ units = {
|
||||
albedoPath = 'tank.jpg',
|
||||
colorNodes = {'Antenna_S', 'Antenna_L', 'Hatch'},
|
||||
selectionSfx = PATH .. 'Sounds/Units/Tanks/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 2
|
||||
garrisonCategory = 2,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 2000,
|
||||
damage = 5000,
|
||||
maxRange = 30,
|
||||
maxRange = 70,
|
||||
horizontalNode = {name = 'turret', rotationSpeed = .05, maxFireAngle = .1},
|
||||
verticalNode = {name = 'tubes', rotationSpeed = .05, maxFireAngle = .1},
|
||||
projectile = {id = ProjectileId.MISSILE, parent = 'tubes', pos = {x = 0.95, y = 2.16, z = 4.11}, rot = {w = 1, x = 0, y = 0, z = 0}},
|
||||
fireFx = {
|
||||
{
|
||||
vfx = true,
|
||||
duration = 50,
|
||||
parent = 'tubes',
|
||||
pos = {x = 0.95, y = 2.16, z = 4.11},
|
||||
rot = {w = 1, x = 0, y = 0, z = 0},
|
||||
mesh = {
|
||||
path = PATH .. vfxPrefix .. 'muzzleFlash.xml',
|
||||
color = {x = 1, y = 1, z = 0, a = 1},
|
||||
},
|
||||
pos = {x = 1, y = 5.8, z = 3.9},
|
||||
rot = {w = 1, x = 0, y = 0, z = 0},
|
||||
--scale = .5
|
||||
},
|
||||
{
|
||||
vfx = false,
|
||||
duration = 300,
|
||||
path = PATH .. 'Sounds/Units/Tanks/attack.ogg',
|
||||
duration = 2500,
|
||||
path = PATH .. 'Sounds/Units/Submarines/missile.ogg',
|
||||
}
|
||||
},
|
||||
landHitFx = {explosionVfx, explosionSfx},
|
||||
unitHitFx = {explosionVfx, explosionSfx}
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.ARTILLERY,
|
||||
@@ -255,17 +267,14 @@ units = {
|
||||
albedoPath = 'artillery.jpg',
|
||||
colorNodes = {'turret'},
|
||||
selectionSfx = PATH .. 'Sounds/Units/Tanks/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 2
|
||||
garrisonCategory = 2,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{type = WeaponClass.HITSCAN, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/WarMechs/fire.ogg', damage = 20, maxRange = 8},
|
||||
},
|
||||
buildableUnits = {
|
||||
{id = UnitId.LAND_FACTORY, buildable = true, trigger = 76},
|
||||
{id = UnitId.NAVAL_FACTORY, buildable = true, trigger = 78},
|
||||
@@ -295,15 +304,15 @@ units = {
|
||||
colorNodes = {'Cube.008'},
|
||||
meshPath = 'engineer2.xml',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Engineers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {{type = WeaponClass.HITSCAN, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/WarMechs/fire.ogg', damage = 50, maxRange = 20}},
|
||||
weapons = {{orderType = OrderType.ATTACK, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/WarMechs/fire.ogg', damage = 50, maxRange = 20}},
|
||||
unitClass = UnitClass.TRANSPORT,
|
||||
unitType = UnitType.HOVER,
|
||||
isVehicle = true,
|
||||
@@ -320,15 +329,15 @@ units = {
|
||||
basePath = PATH .. vehiclePrefix .. 'Transports/',
|
||||
meshPath = 'scoutTransport.xml',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Transports/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {{type = WeaponClass.HITSCAN, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/Tanks/attack.ogg', damage = 100, maxRange = 25}},
|
||||
weapons = {{orderType = OrderType.ATTACK, rateOfFire = 2000, fireSfx = PATH .. 'Sounds/Units/Tanks/attack.ogg', damage = 100, maxRange = 25}},
|
||||
unitClass = UnitClass.TRANSPORT,
|
||||
unitType = UnitType.HOVER,
|
||||
armor = {ArmorType.MECHANIC},
|
||||
@@ -346,12 +355,12 @@ units = {
|
||||
meshPath = 'hoverTransport.xml',
|
||||
albedoPath = 'transport.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Transports/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {},
|
||||
@@ -379,20 +388,20 @@ units = {
|
||||
meshPath = 'cargoship.xml',
|
||||
albedoPath = 'cargoship.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Cargoships/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 200,
|
||||
damage = 300,
|
||||
maxRange = 15,
|
||||
damage = 10,
|
||||
maxRange = 50,
|
||||
fireFx = {
|
||||
{
|
||||
vfx = true,
|
||||
@@ -430,17 +439,17 @@ units = {
|
||||
meshPath = 'tacticalCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 200,
|
||||
fireFx = {
|
||||
{
|
||||
@@ -481,17 +490,17 @@ units = {
|
||||
meshPath = 'defensiveCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 200,
|
||||
damage = 300,
|
||||
maxRange = 15,
|
||||
@@ -531,17 +540,17 @@ units = {
|
||||
meshPath = 'cheapCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 200,
|
||||
fireSfx = PATH .. 'Sounds/Units/Cruisers/fire.ogg',
|
||||
damage = 300,
|
||||
@@ -582,17 +591,17 @@ units = {
|
||||
meshPath = 'transportCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Cruisers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 100,
|
||||
damage = 80,
|
||||
maxRange = 100,
|
||||
@@ -631,17 +640,17 @@ units = {
|
||||
meshPath = 'heavyCarrier.xml',
|
||||
albedoPath = 'carrier.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Carriers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 450,
|
||||
damage = 500,
|
||||
maxRange = 100,
|
||||
@@ -667,7 +676,7 @@ units = {
|
||||
waterHitFx = {explosionVfx, explosionSfx}
|
||||
},
|
||||
{
|
||||
type = WeaponClass.CRUISE_MISSILE,
|
||||
orderType = OrderType.LAUNCH,
|
||||
projectile = {id = ProjectileId.CRUISE_MISSILE, pos = {x = 0, y = 15, z = 0}, rot = {w = .707, x = -.707, y = 0, z = 0}},
|
||||
rateOfFire = 500,
|
||||
maxRange = 30,
|
||||
@@ -695,17 +704,17 @@ units = {
|
||||
meshPath = 'championCarrier.xml',
|
||||
albedoPath = 'carrier.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Carriers/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.TORPEDO,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 1000,
|
||||
fireFx = {
|
||||
{
|
||||
@@ -719,7 +728,7 @@ units = {
|
||||
projectile = {id = ProjectileId.TORPEDO, pos = {x = 0, y = -.27, z = 4.6}, rot = {w = 1, x = 0, y = 0, z = 0}}
|
||||
},
|
||||
{
|
||||
type = WeaponClass.CRUISE_MISSILE,
|
||||
orderType = OrderType.LAUNCH,
|
||||
rateOfFire = 500,
|
||||
maxRange = 30,
|
||||
fireFx = {
|
||||
@@ -747,17 +756,17 @@ units = {
|
||||
albedoPath = 'submarine.jpg',
|
||||
colorNodes = {'missileSubmarine.001'},
|
||||
selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.TORPEDO,
|
||||
orderType = OrderType.ATTACK,
|
||||
projectile = {id = ProjectileId.TORPEDO, pos = {x = 0, y = -.27, z = 4.6}, rot = {w = 1, x = 0, y = 0, z = 0}},
|
||||
damage = 200,
|
||||
maxRange = 20,
|
||||
@@ -786,12 +795,118 @@ units = {
|
||||
meshPath = 'stealthSubmarine.xml',
|
||||
albedoPath = 'submarine.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.ICEBREAKER,
|
||||
unitType = UnitType.SEA_LEVEL,
|
||||
isVehicle = true,
|
||||
health = 500,
|
||||
buildTime = 1000,
|
||||
cost = 500,
|
||||
size = {x = 12.6, y = 8.5, z = 32.8},
|
||||
hitboxOffset = {x = 0, y = 2.07, z = .8},
|
||||
lineOfSight = 25,
|
||||
name = 'Icebreaker',
|
||||
--colorNodes = {'stealthSubmarine.001'},
|
||||
basePath = PATH .. vehiclePrefix .. 'Icebreakers/',
|
||||
meshPath = 'icebreaker.xml',
|
||||
albedoPath = 'icebreaker.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.FREEZE,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 100,
|
||||
maxRange = 10,
|
||||
damage = 0,
|
||||
fireFx = {
|
||||
{
|
||||
vfx = false,
|
||||
duration = 500,
|
||||
path = PATH .. 'Sounds/SFX/Freezing/freeze.ogg'
|
||||
},
|
||||
},
|
||||
unitHitFx = {},
|
||||
landHitFx = {},
|
||||
waterHitFx = {},
|
||||
}
|
||||
},
|
||||
buildableUnits = {{id = UnitId.ICE_SHEET, buildable = true, trigger = 83}},
|
||||
unitClass = UnitClass.FREEZER,
|
||||
unitType = UnitType.SEA_LEVEL,
|
||||
isVehicle = true,
|
||||
health = 500,
|
||||
buildTime = 1000,
|
||||
cost = 500,
|
||||
size = {x = 8.5, y = 6.3, z = 17.6},
|
||||
hitboxOffset = {x = 0, y = 1.6, z = 0},
|
||||
lineOfSight = 25,
|
||||
name = 'Freezer',
|
||||
--colorNodes = {'stealthSubmarine.001'},
|
||||
basePath = PATH .. vehiclePrefix .. 'Freezers/',
|
||||
meshPath = 'freezer.xml',
|
||||
albedoPath = 'freezer.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 1000,
|
||||
damage = 0,
|
||||
maxRange = 25,
|
||||
horizontalNode = {name = 'turret', rotationSpeed = .05, maxFireAngle = .1},
|
||||
projectile = {id = ProjectileId.EMP_SHELL, parent = 'turret', pos = {x = 0.06, y = 5.82, z = 11.4}, rot = {w = .998, x = -.066, y = 0, z = 0}},
|
||||
fireFx = {
|
||||
{
|
||||
vfx = false,
|
||||
duration = 300,
|
||||
path = PATH .. 'Sounds/Units/Tanks/attack.ogg',
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.EMP_BOAT,
|
||||
unitType = UnitType.SEA_LEVEL,
|
||||
isVehicle = true,
|
||||
health = 500,
|
||||
buildTime = 1000,
|
||||
cost = 500,
|
||||
size = {x = 4.75, y = 5.15, z = 19.55},
|
||||
hitboxOffset = {x = 0, y = .18, z = .25},
|
||||
lineOfSight = 25,
|
||||
name = 'EMP boat',
|
||||
--colorNodes = {'stealthSubmarine.001'},
|
||||
basePath = PATH .. vehiclePrefix .. 'EMPShips/',
|
||||
meshPath = 'empShip.xml',
|
||||
albedoPath = 'empShip.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Submarines/selection.ogg',
|
||||
speed = .1,
|
||||
destinationOffset = .1,
|
||||
anglePrecision = .1,
|
||||
maxTurnAngle = .1,
|
||||
garrisonCategory = 3,
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
buildableUnits = {
|
||||
@@ -815,7 +930,7 @@ units = {
|
||||
basePath = PATH .. structurePrefix .. 'LandFactories/',
|
||||
meshPath = 'landFactory.xml',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.NAVAL_FACTORY,
|
||||
@@ -832,7 +947,7 @@ units = {
|
||||
meshPath = 'navalFactory.xml',
|
||||
albedoPath = 'factory.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.TRADE_CENTER,
|
||||
@@ -856,7 +971,7 @@ units = {
|
||||
meshPath = 'tradeCenter.xml',
|
||||
albedoPath = 'tradeCenter.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.LAB,
|
||||
@@ -878,15 +993,17 @@ units = {
|
||||
meshPath = 'lab2.xml',
|
||||
albedoPath = 'lab.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
weapons = {
|
||||
{
|
||||
type = WeaponClass.HITSCAN,
|
||||
orderType = OrderType.ATTACK,
|
||||
rateOfFire = 100,
|
||||
damage = 50,
|
||||
maxRange = 50,
|
||||
horizontalNode = {name = 'TurretBody', rotationSpeed = .05, maxFireAngle = .1},
|
||||
--verticalNode = {name = 'TurretArms', rotationSpeed = .05, maxFireAngle = .1},
|
||||
fireFx = {
|
||||
{
|
||||
vfx = true,
|
||||
@@ -937,7 +1054,7 @@ units = {
|
||||
meshPath = 'pointDefense2.xml',
|
||||
albedoPath = 'pointDefense.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.EXTRACTOR,
|
||||
@@ -957,7 +1074,7 @@ units = {
|
||||
meshPath = 'extractor.xml',
|
||||
albedoPath = 'extractor.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.REFINERY,
|
||||
@@ -975,7 +1092,7 @@ units = {
|
||||
meshPath = 'refinery.xml',
|
||||
albedoPath = 'refinery.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
buildableUnits = {{id = UnitId.ENGINEER, buildable = true, trigger = 69}},
|
||||
@@ -994,6 +1111,21 @@ units = {
|
||||
colorNodes = {'Cube.004'},
|
||||
albedoPath = 'fort.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
{
|
||||
unitClass = UnitClass.ICE_SHEET,
|
||||
unitType = UnitType.SEA_LEVEL,
|
||||
isVehicle = false,
|
||||
health = 1000,
|
||||
size = {x = 7, y = 1.5, z = 7},
|
||||
hitboxOffset = {x = 0, y = 0, z = 0},
|
||||
lineOfSight = 5,
|
||||
name = 'Ice sheet',
|
||||
basePath = PATH .. structurePrefix .. 'IceSheets/',
|
||||
meshPath = 'iceSheet.xml',
|
||||
albedoPath = 'iceSheet.jpg',
|
||||
selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg',
|
||||
deathFx = {explosionVfx, explosionSfx},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -82,12 +82,17 @@ function generateGui(unitId)
|
||||
mainUnit.unitClass == UnitClass.FORT
|
||||
)
|
||||
|
||||
isEng = (
|
||||
mainUnit.unitClass == UnitClass.ENGINEER or
|
||||
mainUnit.unitClass == UnitClass.FREEZER
|
||||
)
|
||||
|
||||
buttonData = {
|
||||
trigger = buildUnit.trigger,
|
||||
name = units[buildUnit.id + 1].name,
|
||||
buttonType = (mainUnit.isVehicle and ButtonType.BUILD or ButtonType.TRAIN),
|
||||
factoryId = (isFactory and unitId or nil),
|
||||
engineerId = (mainUnit.unitClass == UnitClass.ENGINEER and unitId or nil),
|
||||
engineerId = (isEng and unitId or nil),
|
||||
slotId = (ButtonType.BUILD and i - 1 or nil)
|
||||
}
|
||||
gui[#gui + 1] = generateButton(#gui, buttonData)
|
||||
|
||||
+13
-9
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.9)
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
set(GAME_NAME battleship)
|
||||
project(${GAME_NAME})
|
||||
@@ -10,31 +10,35 @@ else()
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDART 17)
|
||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
|
||||
set(CMAKE_BUILD_TYPE Debug)
|
||||
set(BUILD_TESTS ON)
|
||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL FORCED)
|
||||
cmake_policy(SET CMP0015 NEW)
|
||||
|
||||
set(STATES activeGameState.cpp inGameAppState.cpp guiAppState.cpp mapEditorAppState.cpp loadingAppState.cpp)
|
||||
|
||||
set(UNIT_BUTTONS unitButton.cpp tradeButton.cpp buildButton.cpp trainButton.cpp researchButton.cpp orderButton.cpp stateToggleButton.cpp)
|
||||
set(OPTIONS_BUTTONS optionsButton.cpp tabButton.cpp okButton.cpp defaultsButton.cpp)
|
||||
set(TRADING_BUTTONS activeStateBackButton.cpp playerTradeButton.cpp tradingScreenButton.cpp offerButton.cpp resourceAmmountButton.cpp)
|
||||
set(MENU_BUTTONS mainMenuButton.cpp singlePlayerButton.cpp exitButton.cpp backButton.cpp playButton.cpp)
|
||||
set(MAP_EDITOR_BUTTONS mapEditorButton.cpp newMapButton.cpp loadMapButton.cpp exportButton.cpp)
|
||||
set(BUTTONS statsButton.cpp activeStateButton.cpp minimapButton.cpp ${TRADING_BUTTONS} ${OPTIONS_BUTTONS} ${MENU_BUTTONS} ${MAP_EDITOR_BUTTONS} ${UNIT_BUTTONS})
|
||||
|
||||
set(LISTBOXES skyboxTextureListbox.cpp landTextureListbox.cpp gameObjectListbox.cpp mapListbox.cpp)
|
||||
set(GUI tooltip.cpp concreteGuiManager.cpp ${BUTTONS} ${LISTBOXES})
|
||||
|
||||
set(STATES activeGameState.cpp inGameAppState.cpp guiAppState.cpp mapEditorAppState.cpp loadingAppState.cpp)
|
||||
set(UTIL util.cpp binds.h)
|
||||
set(CONTROLLERS gameObjectFrameController.cpp cameraController.cpp)
|
||||
set(CONSOLE console.cpp abstractCommand.cpp addUnitCommand.cpp addResourceCommand.cpp addTechnologyCommand.cpp toggleDebugCommand.cpp)
|
||||
set(CORE gameManager.cpp game.cpp fxManager.cpp defConfigs.cpp ${CONSOLE} ${CONTROLLERS})
|
||||
set(PROJECTILES projectile.cpp cruiseMissile.cpp)
|
||||
set(VEHICLES vehicle.cpp engineer.cpp resourceRover.cpp)
|
||||
set(STRUCTURES structure.cpp factory.cpp pointDefense.cpp extractor.cpp researchStruct.cpp)
|
||||
set(UNITS gameObjectFactory.cpp unit.cpp ${STRUCTURES} ${VEHICLES})
|
||||
set(CORE gameManager.cpp game.cpp environment.cpp fxManager.cpp defConfigs.cpp ${CONSOLE} ${CONTROLLERS})
|
||||
|
||||
set(PROJECTILES projectile.cpp missile.cpp cruiseMissile.cpp shell.cpp)
|
||||
set(VEHICLES vehicle.cpp submarine.cpp engineer.cpp resourceRover.cpp freezer.cpp)
|
||||
set(STRUCTURES structure.cpp factory.cpp pointDefense.cpp extractor.cpp researchStruct.cpp iceSheet.cpp)
|
||||
set(UNITS gameObjectFactory.cpp unit.cpp weapon.cpp ${STRUCTURES} ${VEHICLES})
|
||||
set(CONTENT player.cpp trader.cpp pathfinder.cpp map.cpp gameObject.cpp gameObjectFrame.h resourceDeposit.cpp ${UNITS} ${PROJECTILES})
|
||||
|
||||
set(UTIL util.cpp binds.h)
|
||||
|
||||
set(GAME_SRC ${STATES} ${GUI} ${CORE} ${CONTENT} ${UTIL})
|
||||
|
||||
set(SFML_DIR external/SFML)
|
||||
|
||||
+6
-5
@@ -238,7 +238,7 @@ namespace battleship{
|
||||
}
|
||||
else if(cursorState == CursorState::HACK)
|
||||
orderPossible = (!ownGameObj && gameObjUnit && mainPlayer->getSelectedUnit(0)->getUnitClass() == UnitClass::ENGINEER);
|
||||
else if(gameObjUnit)
|
||||
else if(controlPressed)
|
||||
cursorState = CursorState::ATTACK;
|
||||
else
|
||||
cursorState = CursorState::NORMAL;
|
||||
@@ -337,7 +337,7 @@ namespace battleship{
|
||||
|
||||
void ActiveGameState::updateGameObjHoveredOn(){
|
||||
vector<GameObject*> gameObjs;
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers();
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers(true);
|
||||
|
||||
for(Player *pl : players){
|
||||
vector<ResourceDeposit*> resDeps = pl->getResourceDeposits();
|
||||
@@ -482,7 +482,7 @@ namespace battleship{
|
||||
|
||||
vector<Unit*> units;
|
||||
|
||||
for (Player *p : Game::getSingleton()->getPlayers())
|
||||
for (Player *p : Game::getSingleton()->getPlayers(true))
|
||||
for (Unit *u : p->getUnits())
|
||||
units.push_back(u);
|
||||
|
||||
@@ -703,7 +703,7 @@ namespace battleship{
|
||||
else if(cursorState == CursorState::HACK){
|
||||
if(orderPossible) issueOrder(Order::TYPE::HACK, vector<Order::Target>{Order::Target((Unit*)gameObjHoveredOn)}, shiftPressed);
|
||||
}
|
||||
else if(selectedUnits[0]->getUnitClass() == UnitClass::ENGINEER && ufCtr->isPlacingOnSurface()){
|
||||
else if((selectedUnits[0]->getUnitClass() == UnitClass::ENGINEER || selectedUnits[0]->getUnitClass() == UnitClass::FREEZER) && ufCtr->isPlacingOnSurface()){
|
||||
castRayToTerrain();
|
||||
GameObjectFrame gmObjFr = ufCtr->getGameObjectFrame(0);
|
||||
|
||||
@@ -717,7 +717,7 @@ namespace battleship{
|
||||
|
||||
buildableStructSelected = false;
|
||||
}
|
||||
else if(!canSelectHoveredOnGameObj()){
|
||||
else{
|
||||
if(targets.empty()) castRayToTerrain();
|
||||
|
||||
issueOrder(Order::TYPE::MOVE, targets, shiftPressed);
|
||||
@@ -788,6 +788,7 @@ namespace battleship{
|
||||
|
||||
forceCursorState = isPressed;
|
||||
controlPressed = isPressed;
|
||||
orderPossible = isPressed;
|
||||
break;
|
||||
case Bind::LEFT_SHIFT:
|
||||
{
|
||||
|
||||
+9
-19
@@ -12,7 +12,7 @@ namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
|
||||
CruiseMissile::CruiseMissile(Unit *unit, Vector3 tp, Vector3 pos, Quaternion rot) : Projectile(unit, 0, pos, rot), targetPoint(tp), flightStage(FlightStage::ASCENT){
|
||||
CruiseMissile::CruiseMissile(Unit *unit, int id, Vector3 tp, Vector3 pos, Quaternion rot) : Projectile(unit, id, pos, rot), targetPoint(tp), flightStage(FlightStage::ASCENT){
|
||||
Vector3 unitDir = unit->getDirVec();
|
||||
Vector3 leftDir = unit->getLeftVec();
|
||||
Vector3 targDir = (Vector3(targetPoint.x, pos.y, targetPoint.z) - pos).norm();
|
||||
@@ -29,7 +29,7 @@ namespace battleship{
|
||||
|
||||
if(flightStage == FlightStage::ASCENT && pos.y - initPos.y > minHeight){
|
||||
orientAt(Quaternion(angle, leftVec) * rot);
|
||||
if(dirVec.y <= 0) flightStage = FlightStage::CRUISE;
|
||||
if(dirVec.y <= .001) flightStage = FlightStage::CRUISE;
|
||||
}
|
||||
else if(flightStage == FlightStage::DESCENT){
|
||||
Vector3 targDir = (Vector3(targetPoint.x, initPos.y, targetPoint.z) - initPos).norm();
|
||||
@@ -47,19 +47,8 @@ namespace battleship{
|
||||
flightStage = FlightStage::DESCENT;
|
||||
}
|
||||
|
||||
void CruiseMissile::checkSurfaceCollision(){
|
||||
Map *map = Map::getSingleton();
|
||||
int cellId = map->getCellId(pos, false);
|
||||
|
||||
if((pos + dirVec * rayLength).y <= map->getCells()[cellId].pos.y){
|
||||
Game::getSingleton()->explode(pos, explosionDamage, explosionRadius, explosionSfx);
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
|
||||
void CruiseMissile::update(){
|
||||
GameObject::update();
|
||||
placeAt(pos + dirVec * speed);
|
||||
Projectile::update();
|
||||
|
||||
switch(flightStage){
|
||||
case FlightStage::ASCENT:
|
||||
@@ -73,10 +62,11 @@ namespace battleship{
|
||||
break;
|
||||
}
|
||||
|
||||
if(!remove && flightStage == FlightStage::DESCENT){
|
||||
checkSurfaceCollision();
|
||||
if(remove) return;
|
||||
checkUnitCollision();
|
||||
}
|
||||
checkCollision();
|
||||
}
|
||||
|
||||
void CruiseMissile::checkCollision(){
|
||||
if(flightStage == FlightStage::DESCENT)
|
||||
Projectile::checkCollision();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
namespace battleship{
|
||||
class CruiseMissile : public Projectile{
|
||||
public:
|
||||
CruiseMissile(Unit*, vb01::Vector3, vb01::Vector3, vb01::Quaternion);
|
||||
CruiseMissile(Unit*, int, vb01::Vector3, vb01::Vector3, vb01::Quaternion);
|
||||
void update();
|
||||
private:
|
||||
enum class FlightStage{ASCENT, CRUISE, DESCENT};
|
||||
@@ -15,7 +15,7 @@ namespace battleship{
|
||||
|
||||
void pitch(float, vb01::Vector3);
|
||||
void cruise();
|
||||
void checkSurfaceCollision();
|
||||
void checkCollision();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+1
-29
@@ -50,40 +50,12 @@ namespace battleship{
|
||||
hackStatus = 0;
|
||||
}
|
||||
|
||||
void Engineer::build(Order order){
|
||||
if(pathPoints.empty()){
|
||||
if(!order.targets[0].unit)
|
||||
player->addUnit(order.targets[0].unit);
|
||||
else {
|
||||
Structure *structure = (Structure*)order.targets[0].unit;
|
||||
sol::table targTable = generateView()["units"][order.targets[0].unit->getId()];
|
||||
int costRate = (int)targTable["cost"] / 100, buildRate = (int)targTable["buildTime"] / 100;
|
||||
|
||||
if(structure->getBuildStatus() < 100 && player->getResource(ResourceType::REFINEDS) >= costRate && getTime() - lastIncrementTime > buildRate){
|
||||
structure->incrementBuildStatus();
|
||||
player->updateResource(ResourceType::REFINEDS, -costRate, true);
|
||||
lastIncrementTime = getTime();
|
||||
}
|
||||
else if(structure->getBuildStatus() >= 100){
|
||||
removeOrder(0);
|
||||
player->incStructuresBuilt();
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
navigate(0.5 * Map::getSingleton()->getCellSize().x);
|
||||
|
||||
if(type == UnitType::LAND)
|
||||
alignToSurface();
|
||||
}
|
||||
}
|
||||
|
||||
//TODO change unit colors after faction change
|
||||
void Engineer::hack(Order order){
|
||||
Unit *targUnit = order.targets[0].unit;
|
||||
bool withinRange = (targUnit->getPos().getDistanceFrom(pos) < hackRange);
|
||||
int hackRate = int(generateView()["units"][id + 1]["hackTime"]) / 100;
|
||||
bool canHack = (getTime() - lastIncrementTime > hackRate);
|
||||
bool canHack = (getTime() - lastHackTime > hackRate);
|
||||
|
||||
if(withinRange && canHack){
|
||||
hackStatus++;
|
||||
|
||||
+1
-2
@@ -20,10 +20,9 @@ namespace battleship{
|
||||
private:
|
||||
int hackStatus = 0;
|
||||
float hackRange;
|
||||
vb01::s64 lastIncrementTime = 0;
|
||||
vb01::s64 lastHackTime = 0;
|
||||
vb01::Node *hackStatusBackground = nullptr, *hackStatusForeground = nullptr;
|
||||
|
||||
void build(Order);
|
||||
void hack(Order);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#include "environment.h"
|
||||
#include "fxManager.h"
|
||||
#include "player.h"
|
||||
#include "unit.h"
|
||||
#include "game.h"
|
||||
|
||||
#include <root.h>
|
||||
#include <node.h>
|
||||
#include <material.h>
|
||||
#include <texture.h>
|
||||
#include <particleEmitter.h>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
|
||||
static Environment *environment = nullptr;
|
||||
|
||||
Environment* Environment::getSingleton(){
|
||||
if(!environment)
|
||||
environment = new Environment();
|
||||
|
||||
return environment;
|
||||
}
|
||||
|
||||
//TODO use the pos argument from the fx
|
||||
void Environment::explode(FxManager::Fx *fx, Detonation det, Vector3 pos, int damage, float radius){
|
||||
FxManager::getSingleton()->addFx(fx);
|
||||
|
||||
if(radius == 0) return;
|
||||
|
||||
for(Player *pl : Game::getSingleton()->getPlayers()){
|
||||
for(Unit *un : pl->getUnits()){
|
||||
float distance = un->getPos().getDistanceFrom(pos);
|
||||
|
||||
if(distance < radius){
|
||||
switch(det){
|
||||
case Detonation::EXPLOSION:
|
||||
un->takeDamage(int(damage * (1.f - distance / radius)));
|
||||
break;
|
||||
case Detonation::EMP:
|
||||
un->setCondition(Unit::Condition::EM_JAMMED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef ENVIRONMENT_H
|
||||
#define ENVIRONMENT_H
|
||||
|
||||
#include <vector.h>
|
||||
|
||||
#include "fxManager.h"
|
||||
|
||||
namespace battleship{
|
||||
class Environment{
|
||||
public:
|
||||
enum class Detonation{EXPLOSION, EMP, CRYO};
|
||||
|
||||
static Environment* getSingleton();
|
||||
static void explode(FxManager::Fx*, Detonation, vb01::Vector3, int = 0, float = 0);
|
||||
private:
|
||||
Environment(){}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
+2
-10
@@ -12,21 +12,13 @@ namespace battleship{
|
||||
using namespace gameBase;
|
||||
|
||||
Extractor::Extractor(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, ResourceDeposit *rd, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){
|
||||
if(!rd){
|
||||
vector<ResourceDeposit*> deposits;
|
||||
|
||||
for(Player *pl : Game::getSingleton()->getPlayers()){
|
||||
vector<ResourceDeposit*> dep = pl->getResourceDeposits();
|
||||
deposits.insert(deposits.end(), dep.begin(), dep.end());
|
||||
}
|
||||
|
||||
for(ResourceDeposit *dep : deposits)
|
||||
if(!rd)
|
||||
for(ResourceDeposit *dep : Game::getSingleton()->getCivilianPlayer()->getResourceDeposits())
|
||||
if(dep->getPos().getDistanceFrom(pos) < .001){
|
||||
deposit = dep;
|
||||
deposit->setExtractor(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Vector2 size = Vector2(lenHpBar, 10);
|
||||
ammountBackground = Unit::createBar(Vector2::VEC_ZERO, size, Vector4(0, 0, 0, 1));
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
#include "freezer.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace vb01;
|
||||
|
||||
//TODO rename the class to a more generic name
|
||||
Freezer::Freezer(Player *player, int id, Vector3 pos, Quaternion rot, Unit::State state) : Vehicle(player, id, pos, rot, state){}
|
||||
|
||||
void Freezer::attack(Order order){
|
||||
Vehicle::attack(order);
|
||||
|
||||
Unit *target = order.targets[0].unit;
|
||||
|
||||
if(target && target->getFreezeStatus() == 100)
|
||||
removeOrder(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef FREEZER_H
|
||||
#define FREEZER_H
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
namespace battleship{
|
||||
class Freezer : public Vehicle{
|
||||
public:
|
||||
Freezer(Player*, int, vb01::Vector3, vb01::Quaternion, Unit::State);
|
||||
private:
|
||||
void attack(Order);
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
+118
-2
@@ -1,14 +1,18 @@
|
||||
#include "fxManager.h"
|
||||
#include "gameObject.h"
|
||||
|
||||
#include <root.h>
|
||||
#include <node.h>
|
||||
#include <model.h>
|
||||
#include <box.h>
|
||||
#include <material.h>
|
||||
#include <vector.h>
|
||||
#include <particleEmitter.h>
|
||||
|
||||
#include <SFML/Audio.hpp>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace sf;
|
||||
|
||||
FxManager::Fx::Component::Component(void *c, bool v, s64 dur, vb01::Vector3 p, s64 ot) : comp(c), vfx(v), duration(dur), pos(p), offsetTime(ot) {
|
||||
if(v) ((vb01::Node*)c)->setVisible(false);
|
||||
@@ -18,6 +22,118 @@ namespace battleship{
|
||||
toggleComponents(!re);
|
||||
}
|
||||
|
||||
FxManager::Fx* FxManager::initFx(sol::table fxTbl, Node *baseNode, bool attached, Vector3 cp){
|
||||
int numComponents = fxTbl.size();
|
||||
|
||||
if(numComponents == 0) return nullptr;
|
||||
|
||||
vector<FxManager::Fx::Component> fxComponents;
|
||||
|
||||
for(int i = 0; i < numComponents; i++){
|
||||
sol::table compTbl = fxTbl[i + 1];
|
||||
|
||||
bool vfx = compTbl["vfx"];
|
||||
s64 duration = compTbl["duration"], offset = compTbl["offset"].get_or(0);
|
||||
|
||||
if(vfx){
|
||||
sol::table meshTbl = compTbl["mesh"];
|
||||
|
||||
string meshPath = "";
|
||||
Material *mat = nullptr;
|
||||
Node *flashNode = nullptr;
|
||||
|
||||
sol::optional<sol::table> posOpt = compTbl["pos"], rotOpt = compTbl["rot"];
|
||||
Vector3 compPos = cp;
|
||||
Quaternion compRot = Quaternion::QUAT_W;
|
||||
float sc = compTbl["scale"].get_or(1);
|
||||
|
||||
if(posOpt != sol::nullopt){
|
||||
sol::table posTable = compTbl["pos"];
|
||||
compPos = Vector3(posTable["x"], posTable["y"], posTable["z"]);
|
||||
}
|
||||
|
||||
if(rotOpt != sol::nullopt){
|
||||
sol::table rotTable = compTbl["rot"];
|
||||
compRot = Quaternion(rotTable["w"], rotTable["x"], rotTable["y"], rotTable["z"]);
|
||||
}
|
||||
|
||||
sol::optional<string> pathOpt = meshTbl["path"];
|
||||
sol::optional<int> numPartOpt = meshTbl["numParticles"];
|
||||
|
||||
if(pathOpt != sol::nullopt){
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "texture");
|
||||
|
||||
meshPath = meshTbl["path"];
|
||||
flashNode = new Model(meshPath);
|
||||
((Model*)flashNode)->setMaterial(mat);
|
||||
flashNode->setPosition(compPos);
|
||||
flashNode->setOrientation(compRot);
|
||||
flashNode->setScale(Vector3(sc, sc, sc));
|
||||
}
|
||||
else if(numPartOpt != sol::nullopt){
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "particle");
|
||||
|
||||
int numParticles = meshTbl["numParticles"];
|
||||
ParticleEmitter *pe = new ParticleEmitter(numParticles);
|
||||
pe->setMaterial(mat);
|
||||
pe->setLowLife(meshTbl["lowLife"]);
|
||||
pe->setHighLife(meshTbl["highLife"]);
|
||||
pe->setSpeed(0);
|
||||
|
||||
sol::table sizeTbl = meshTbl["size"];
|
||||
pe->setSize(Vector2(sizeTbl["x"], sizeTbl["y"]));
|
||||
|
||||
flashNode = new Node(compPos + Vector3(0, 2, 0), compRot, Vector3(sc, sc, sc));
|
||||
flashNode->attachParticleEmitter(pe);
|
||||
flashNode->lookAt(Vector3::VEC_J, Vector3::VEC_K);
|
||||
}
|
||||
else{
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "texture");
|
||||
|
||||
sol::table sizeTbl = meshTbl["size"];
|
||||
Box *box = new Box(Vector3(sizeTbl["x"], sizeTbl["y"], 0));
|
||||
box->setMaterial(mat);
|
||||
|
||||
flashNode = new Node(compPos, compRot, Vector3(sc, sc, sc), "laser");
|
||||
flashNode->attachMesh(box);
|
||||
}
|
||||
|
||||
sol::optional<string> texOpt = meshTbl["texture"];
|
||||
|
||||
if(texOpt != sol::nullopt){
|
||||
string p[]{meshTbl["texture"]};
|
||||
Texture *tex = new Texture(p, 1, false);
|
||||
mat->addBoolUniform("texturingEnabled", true);
|
||||
mat->addTexUniform("diffuseMap[0]", tex, false);
|
||||
}
|
||||
else{
|
||||
sol::table colorTable = meshTbl["color"];
|
||||
mat->addVec4Uniform("diffuseColor", Vector4(colorTable["x"], colorTable["y"], colorTable["z"], colorTable["a"]));
|
||||
mat->addBoolUniform("texturingEnabled", false);
|
||||
}
|
||||
|
||||
flashNode->setVisible(false);
|
||||
Node *parNode = (attached ? baseNode : Root::getSingleton()->getRootNode());
|
||||
sol::optional<string> parNameOpt = compTbl["parent"];
|
||||
|
||||
if(parNameOpt != sol::nullopt){
|
||||
string parName = compTbl["parent"];
|
||||
parNode = baseNode->findDescendant(parName, true);
|
||||
}
|
||||
|
||||
parNode->attachChild(flashNode);
|
||||
fxComponents.push_back(FxManager::Fx::Component((void*)flashNode, vfx, duration, compPos, offset));
|
||||
}
|
||||
else{
|
||||
sf::SoundBuffer *sfxBuffer = new sf::SoundBuffer();
|
||||
sf::Sound *sfx = GameObject::prepareSfx(sfxBuffer, compTbl["path"]);
|
||||
fxComponents.push_back(FxManager::Fx::Component((void*)sfx, vfx, duration, Vector3::VEC_ZERO, offset));
|
||||
}
|
||||
}
|
||||
|
||||
return new FxManager::Fx(fxComponents, attached);
|
||||
}
|
||||
|
||||
void FxManager::Fx::toggleComponents(bool active){
|
||||
for(Component &component : components){
|
||||
component.active = active;
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
|
||||
#include <util.h>
|
||||
|
||||
#include <solUtil.h>
|
||||
|
||||
namespace vb01{
|
||||
class Node;
|
||||
}
|
||||
|
||||
namespace battleship{
|
||||
class FxManager{
|
||||
public:
|
||||
@@ -24,6 +30,7 @@ namespace battleship{
|
||||
};
|
||||
|
||||
static FxManager* getSingleton();
|
||||
FxManager::Fx* initFx(sol::table, vb01::Node*, bool, vb01::Vector3 = vb01::Vector3::VEC_ZERO);
|
||||
void update();
|
||||
void removeFx(Fx*);
|
||||
inline void addFx(Fx *fx){fxs.push_back(fx);}
|
||||
|
||||
@@ -122,11 +122,11 @@ namespace battleship{
|
||||
|
||||
for(Projectile *proj : pl->getProjectiles())
|
||||
gameObjs.push_back((GameObject*)proj);
|
||||
|
||||
for(ResourceDeposit *dep : pl->getResourceDeposits())
|
||||
gameObjs.push_back((GameObject*)dep);
|
||||
}
|
||||
|
||||
for(ResourceDeposit *dep : civilianPlayer->getResourceDeposits())
|
||||
gameObjs.push_back((GameObject*)dep);
|
||||
|
||||
for(GameObject *obj : gameObjs)
|
||||
obj->reinit();
|
||||
}
|
||||
@@ -137,47 +137,6 @@ namespace battleship{
|
||||
paused = !paused;
|
||||
}
|
||||
|
||||
void Game::explode(Vector3 pos, int damage, float radius, sf::Sound *explosionSfx){
|
||||
if(!(damage == 0 || radius == 0))
|
||||
for(Player *pl : players){
|
||||
for(Unit *un : pl->getUnits()){
|
||||
float distance = un->getPos().getDistanceFrom(pos);
|
||||
|
||||
if(distance < radius)
|
||||
un->takeDamage(int(damage * (1.f - distance / radius)));
|
||||
}
|
||||
}
|
||||
|
||||
Root *root = Root::getSingleton();
|
||||
|
||||
const int numFrames = 1;
|
||||
string p[numFrames];
|
||||
|
||||
for(int i = 0; i < numFrames; i++)
|
||||
p[i] = GameManager::getSingleton()->getPath() + "Textures/Explosion/explosion07.png";
|
||||
|
||||
Texture *tex = new Texture(p, numFrames, false);
|
||||
|
||||
Material *mat = new Material(root->getLibPath() + "particle");
|
||||
mat->addTexUniform("tex", tex, true);
|
||||
|
||||
ParticleEmitter *pe = new ParticleEmitter(1);
|
||||
pe->setMaterial(mat);
|
||||
pe->setLowLife(3);
|
||||
pe->setHighLife(3);
|
||||
pe->setSize(10 * Vector2::VEC_IJ);
|
||||
pe->setSpeed(0);
|
||||
|
||||
Node *node = new Node(pos + Vector3(0, 2, 0));
|
||||
node->attachParticleEmitter(pe);
|
||||
node->lookAt(Vector3::VEC_J, Vector3::VEC_K);
|
||||
root->getRootNode()->attachChild(node);
|
||||
|
||||
typedef FxManager::Fx Fx;
|
||||
typedef FxManager::Fx::Component Component;
|
||||
FxManager::getSingleton()->addFx(new Fx(vector<Component>{Component((void*)node, true, 50), Component((void*)explosionSfx, false, 2500)}));
|
||||
}
|
||||
|
||||
void Game::changeUnitPlayer(Unit *unit, Player *newPlayer){
|
||||
Player *oldPlayer = unit->getPlayer();
|
||||
vector<Unit*> &oldPlayerUnits = oldPlayer->getUnits();
|
||||
@@ -276,4 +235,12 @@ namespace battleship{
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
vector<Player*> Game::getPlayers(bool civPl){
|
||||
vector<Player*> playersVec = players;
|
||||
|
||||
if(civPl) playersVec.push_back(civilianPlayer);
|
||||
|
||||
return playersVec;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,16 +22,17 @@ namespace battleship{
|
||||
void update();
|
||||
void togglePause();
|
||||
void removeAllElements();
|
||||
void explode(vb01::Vector3, int, float, sf::Sound*);
|
||||
void changeUnitPlayer(Unit*, Player*);
|
||||
void initTechnologies();
|
||||
float calcAbilFromTech(Ability::Type, std::vector<int>, int, int);
|
||||
bool isUnitUnlocked(std::vector<int>, int);
|
||||
std::vector<Player*> getPlayers(bool = false);
|
||||
inline void setDebug(bool d){this->debug = d;}
|
||||
inline void addPlayer(Player *pl){players.push_back(pl);}
|
||||
inline bool isDebug(){return debug;}
|
||||
inline std::vector<Player*>& getPlayers(){return players;}
|
||||
inline Player* getPlayer(int id){return players[id];}
|
||||
inline void setCivilianPlayer(Player *pl){this->civilianPlayer = pl;}
|
||||
inline Player* getCivilianPlayer(){return civilianPlayer;}
|
||||
inline int getNumPlayers(){return players.size();}
|
||||
inline Technology getTechnology(int id){return technologies[id];}
|
||||
inline Ability getAbility(int id){return abilities[id];}
|
||||
@@ -44,6 +45,7 @@ namespace battleship{
|
||||
std::vector<Technology> technologies;
|
||||
std::vector<Ability> abilities;
|
||||
std::vector<Player*> players;
|
||||
Player *civilianPlayer = nullptr;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+23
-5
@@ -45,8 +45,11 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void GameObject::orientAt(Quaternion rotQuat){
|
||||
model->setOrientation(rotQuat);
|
||||
rot = rotQuat;
|
||||
model->setOrientation(rotQuat);
|
||||
leftVec = model->getGlobalAxis(0);
|
||||
upVec = model->getGlobalAxis(1);
|
||||
dirVec = model->getGlobalAxis(2);
|
||||
}
|
||||
|
||||
//TODO remove neccessity to create a material for an invisible mesh
|
||||
@@ -153,10 +156,25 @@ namespace battleship{
|
||||
return sfx;
|
||||
}
|
||||
|
||||
void GameObject::initSound(){
|
||||
deathSfxBuffer = new sf::SoundBuffer();
|
||||
string sfxPath = generateView()[getGameObjTableName()][id + 1]["deathSfx"];
|
||||
deathSfx = prepareSfx(deathSfxBuffer, sfxPath);
|
||||
bool GameObject::pointWithinObj(Vector3 point, float deltaLength, float deltaWidth, bool useHeight, float deltaHeight){
|
||||
Vector3 pointDir = point - pos;
|
||||
bool within = true;
|
||||
|
||||
float forwAngle = std::min(dirVec.getAngleBetween(pointDir.norm()), (-dirVec).getAngleBetween(pointDir.norm()));
|
||||
float forwDist = pointDir.getLength() * cos(forwAngle);
|
||||
within &= (forwDist < .5 * (length + deltaLength));
|
||||
|
||||
float leftAngle = std::min(leftVec.getAngleBetween(pointDir.norm()), (-leftVec).getAngleBetween(pointDir.norm()));
|
||||
float leftDist = pointDir.getLength() * cos(leftAngle);
|
||||
within &= (leftDist < .5 * (width + deltaWidth));
|
||||
|
||||
if(useHeight){
|
||||
float upAngle = std::min(upVec.getAngleBetween(pointDir.norm()), (-upVec).getAngleBetween(pointDir.norm()));
|
||||
float upDist = pointDir.getLength() * cos(upAngle);
|
||||
within &= (upDist < .5 * (height + deltaHeight));
|
||||
}
|
||||
|
||||
return within;
|
||||
}
|
||||
|
||||
string GameObject::getGameObjTableName(){
|
||||
|
||||
+3
-4
@@ -23,11 +23,12 @@ namespace battleship{
|
||||
virtual void reinit();
|
||||
virtual void update();
|
||||
virtual void select(){}
|
||||
void placeAt(vb01::Vector3);
|
||||
virtual void placeAt(vb01::Vector3);
|
||||
void orientAt(vb01::Quaternion);
|
||||
std::string getGameObjTableName();
|
||||
void updateGameStats(Unit*);
|
||||
static sf::Sound* prepareSfx(sf::SoundBuffer*, std::string);
|
||||
bool pointWithinObj(vb01::Vector3, float = 0, float = 0, bool = false, float = 0);
|
||||
inline vb01::Vector2 getScreenPos(){return screenPos;}
|
||||
inline vb01::Vector3 getCorner(int i){return corners[i];}
|
||||
inline bool isSelectable(){return selectable;}
|
||||
@@ -55,13 +56,11 @@ namespace battleship{
|
||||
virtual void initHitbox();
|
||||
virtual void destroyHitbox();
|
||||
virtual void destroySound();
|
||||
virtual void initSound();
|
||||
virtual void initSound(){}
|
||||
|
||||
Type type;
|
||||
int id;
|
||||
Player *player;
|
||||
sf::SoundBuffer *deathSfxBuffer;
|
||||
sf::Sound *deathSfx;
|
||||
vb01::Model *model = nullptr;
|
||||
vb01::Node *hitbox = nullptr;
|
||||
vb01::Vector3 pos = vb01::Vector3(0, 0, 0), upVec = vb01::Vector3(0, 1, 0), dirVec = vb01::Vector3(0, 0, 1), leftVec = vb01::Vector3(1, 0, 0), corners[8];
|
||||
|
||||
+45
-27
@@ -2,13 +2,18 @@
|
||||
#include "player.h"
|
||||
#include "factory.h"
|
||||
#include "engineer.h"
|
||||
#include "submarine.h"
|
||||
#include "resourceRover.h"
|
||||
#include "projectile.h"
|
||||
#include "resourceDeposit.h"
|
||||
#include "pointDefense.h"
|
||||
#include "extractor.h"
|
||||
#include "cruiseMissile.h"
|
||||
#include "freezer.h"
|
||||
#include "researchStruct.h"
|
||||
#include "missile.h"
|
||||
#include "cruiseMissile.h"
|
||||
#include "iceSheet.h"
|
||||
#include "shell.h"
|
||||
#include "defConfigs.h"
|
||||
|
||||
#include <solUtil.h>
|
||||
@@ -23,41 +28,54 @@ namespace battleship{
|
||||
Unit* GameObjectFactory::createUnit(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus){
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
int unitClass = SOL_LUA_VIEW["units"][id + 1]["unitClass"];
|
||||
bool vehicle = SOL_LUA_VIEW["units"][id + 1]["isVehicle"];
|
||||
|
||||
switch((UnitClass)unitClass){
|
||||
case UnitClass::FORT:
|
||||
case UnitClass::LAND_FACTORY:
|
||||
case UnitClass::NAVAL_FACTORY:
|
||||
return new Factory(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
case UnitClass::POINT_DEFENSE:
|
||||
return new PointDefense(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
case UnitClass::EXTRACTOR:
|
||||
return new Extractor(player, id, pos, rot, buildStatus);
|
||||
case UnitClass::LAB:
|
||||
return new ResearchStruct(player, id, pos, rot, buildStatus);
|
||||
case UnitClass::TRADE_CENTER:
|
||||
case UnitClass::REFINERY:
|
||||
return new Structure(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
case UnitClass::ENGINEER:
|
||||
return new Engineer(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
case UnitClass::RESOURCE_ROVER:
|
||||
return new ResourceRover(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
default:
|
||||
return new Vehicle(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
}
|
||||
if(vehicle)
|
||||
switch((UnitClass)unitClass){
|
||||
case UnitClass::ENGINEER:
|
||||
return new Engineer(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
case UnitClass::RESOURCE_ROVER:
|
||||
return new ResourceRover(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
case UnitClass::SUBMARINE:
|
||||
return new Submarine(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
case UnitClass::FREEZER:
|
||||
return new Freezer(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
default:
|
||||
return new Vehicle(player, id, pos, rot, Unit::State::STAND_GROUND);
|
||||
}
|
||||
else
|
||||
switch((UnitClass)unitClass){
|
||||
case UnitClass::FORT:
|
||||
case UnitClass::LAND_FACTORY:
|
||||
case UnitClass::NAVAL_FACTORY:
|
||||
return new Factory(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
case UnitClass::POINT_DEFENSE:
|
||||
return new PointDefense(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
case UnitClass::EXTRACTOR:
|
||||
return new Extractor(player, id, pos, rot, buildStatus);
|
||||
case UnitClass::LAB:
|
||||
return new ResearchStruct(player, id, pos, rot, buildStatus);
|
||||
case UnitClass::ICE_SHEET:
|
||||
return new IceSheet(player, id, pos, rot, buildStatus);
|
||||
default:
|
||||
return new Structure(player, id, pos, rot, buildStatus, Unit::State::STAND_GROUND);
|
||||
}
|
||||
}
|
||||
|
||||
Projectile* GameObjectFactory::createProjectile(Unit *unit, int id, Vector3 pos, Quaternion rot){
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
int projectileClass = SOL_LUA_VIEW["projectiles"][id + 1]["projectileClass"];
|
||||
|
||||
Order::Target target = unit->getOrder(0).targets[0];
|
||||
Vector3 targetPos = (target.unit ? target.unit->getPos() : target.pos);
|
||||
|
||||
switch((ProjectileClass)projectileClass){
|
||||
case ProjectileClass::SHELL:
|
||||
return new Shell(unit, id, pos, rot);
|
||||
case ProjectileClass::CRUISE_MISSILE:
|
||||
{
|
||||
Order::Target target = unit->getOrder(0).targets[0];
|
||||
Vector3 targetPos = (target.unit ? target.unit->getPos() : target.pos);
|
||||
return new CruiseMissile(unit, targetPos, pos, rot);
|
||||
}
|
||||
return new CruiseMissile(unit, id, targetPos, pos, rot);
|
||||
case ProjectileClass::MISSILE:
|
||||
return new Missile(unit, id, targetPos, pos, rot);
|
||||
default:
|
||||
return new Projectile(unit, id, pos, rot);
|
||||
}
|
||||
|
||||
@@ -59,17 +59,9 @@ namespace battleship{
|
||||
void GameObjectFrameController::snapToObj(GameObjectFrame &s, GameObject::Type type, int unitId, float maxDist){
|
||||
if(s.getType() == GameObject::Type::UNIT && s.getId() == unitId){
|
||||
s.status = GameObjectFrame::NOT_PLACEABLE;
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers();
|
||||
vector<ResourceDeposit*> deposits;
|
||||
|
||||
for(Player *pl : players){
|
||||
vector<ResourceDeposit*> deps = pl->getResourceDeposits();
|
||||
|
||||
for(ResourceDeposit *dep : deps)
|
||||
deposits.push_back(dep);
|
||||
}
|
||||
Player *civPl = Game::getSingleton()->getCivilianPlayer();
|
||||
|
||||
for(ResourceDeposit *dep : deposits){
|
||||
for(ResourceDeposit *dep : civPl->getResourceDeposits()){
|
||||
Vector3 depPos = dep->getPos();
|
||||
|
||||
if(!dep->getExtractor() && s.getPos().getDistanceFrom(depPos) < maxDist){
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#include "iceSheet.h"
|
||||
#include "player.h"
|
||||
#include "game.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace vb01;
|
||||
using namespace std;
|
||||
|
||||
IceSheet::IceSheet(Player *player, int id, Vector3 pos, Quaternion rot, int bldSt) : Structure(player, id, pos, rot, bldSt, Unit::State::STAND_GROUND){}
|
||||
|
||||
void IceSheet::update(){
|
||||
Structure::update();
|
||||
|
||||
if(buildStatus < 100)
|
||||
model->getChild(0)->setScale(.01 * buildStatus * Vector3::VEC_IJK);
|
||||
|
||||
for(Player *pl : Game::getSingleton()->getPlayers(true)){
|
||||
vector<Unit*> icebreakers = pl->getUnitsByClass(UnitClass::ICEBREAKER);
|
||||
|
||||
for(Unit *icebreaker : icebreakers)
|
||||
if(icebreaker->pointWithinObj(pos)){
|
||||
player->removeUnit(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
#ifndef ICE_SHEET_H
|
||||
#define ICE_SHEET_H
|
||||
|
||||
#include "structure.h"
|
||||
|
||||
namespace battleship{
|
||||
class IceSheet : public Structure{
|
||||
public:
|
||||
IceSheet(Player*, int, vb01::Vector3, vb01::Quaternion, int);
|
||||
void update();
|
||||
private:
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -48,9 +48,8 @@ namespace battleship{
|
||||
string refIconFile = SOL_STATE_VIEW["refIcon"];
|
||||
string basePath = GameManager::getSingleton()->getPath() + "Textures/Icons/Minimap/";
|
||||
|
||||
for(Player *pl : Game::getSingleton()->getPlayers())
|
||||
for(ResourceDeposit *rd : pl->getResourceDeposits())
|
||||
depositIcons.push_back(initIcon(rd->getPos(), basePath + refIconFile));
|
||||
for(ResourceDeposit *rd : Game::getSingleton()->getCivilianPlayer()->getResourceDeposits())
|
||||
depositIcons.push_back(initIcon(rd->getPos(), basePath + refIconFile));
|
||||
|
||||
string camIconFile = SOL_STATE_VIEW["eyeIcon"];
|
||||
camIcon = initIcon(Root::getSingleton()->getCamera()->getPosition(), basePath + camIconFile);
|
||||
@@ -107,7 +106,7 @@ namespace battleship{
|
||||
Vector3 mapSize = Map::getSingleton()->getMapSize();
|
||||
vector<pair<Unit*, Vector2>> unitMinimapPos;
|
||||
|
||||
for(Player *pl : Game::getSingleton()->getPlayers())
|
||||
for(Player *pl : Game::getSingleton()->getPlayers(true))
|
||||
for(Unit *un : pl->getUnits()){
|
||||
Vector2 coords = Vector2(
|
||||
int(un->getPos().x / mapSize.x * width),
|
||||
@@ -383,6 +382,41 @@ namespace battleship{
|
||||
return spawnPointsTbl.size();
|
||||
}
|
||||
|
||||
//TODO improve for underwater cells
|
||||
vector<int> Map::getSurroundingCells(Vector3 p, int numRings){
|
||||
int numHorCells = int(mapSize.x / CELL_SIZE.x);
|
||||
int numVertCells = int(mapSize.z / CELL_SIZE.z);
|
||||
int horId = int((.5 * mapSize.x + p.x) / CELL_SIZE.x);
|
||||
int vertId = int((.5 * mapSize.z + p.z) / CELL_SIZE.z);
|
||||
|
||||
vector<int> cellIds;
|
||||
|
||||
for(int i = vertId - numRings; i <= vertId + numRings; i++)
|
||||
for(int j = horId - numRings; j <= horId + numRings; j++)
|
||||
cellIds.push_back(numHorCells * i + j);
|
||||
|
||||
return cellIds;
|
||||
}
|
||||
|
||||
void Map::blockCells(Unit *unit){
|
||||
vector<int> surroundingCellIds = getSurroundingCells(unit->getPos(), 0);
|
||||
|
||||
for(int scid : surroundingCellIds){
|
||||
if(cells[scid].blockedBy && cells[scid].blockedBy != unit) continue;
|
||||
|
||||
bool within = unit->pointWithinObj(cells[scid].pos);
|
||||
cells[scid].blockedBy = (within ? unit : nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void Map::unblockCells(Unit *unit){
|
||||
vector<int> surroundingCellIds = getSurroundingCells(unit->getPos(), 0);
|
||||
|
||||
for(int scid : surroundingCellIds)
|
||||
if(cells[scid].blockedBy == unit)
|
||||
cells[scid].blockedBy = nullptr;
|
||||
}
|
||||
|
||||
void Map::loadSpawnPoints(){
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
int numSpawnPoints = getNumMapSpawnPoints();
|
||||
@@ -395,15 +429,15 @@ namespace battleship{
|
||||
|
||||
//TODO move minimap loading elsewhere
|
||||
void Map::loadPlayerGameObjects(){
|
||||
int numPlayers = Game::getSingleton()->getNumPlayers();
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers(true);
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
string playerInd = "players";
|
||||
|
||||
for(int i = 0; i < numPlayers; i++){
|
||||
for(int i = 0; i < players.size(); i++){
|
||||
string resDepInd = "resourceDeposits";
|
||||
SOL_LUA_VIEW.script("numResourceDeposits = #" + mapTable + "." + playerInd + "[" + to_string(i + 1) + "]." + resDepInd);
|
||||
int numNpcObjs = SOL_LUA_VIEW["numResourceDeposits"];
|
||||
Player *player = Game::getSingleton()->getPlayer(i);
|
||||
Player *player = players[i];
|
||||
|
||||
for(int j = 0; j < numNpcObjs; j++){
|
||||
sol::table npcObjTable = SOL_LUA_VIEW[mapTable][playerInd][i + 1][resDepInd][j + 1];
|
||||
@@ -587,7 +621,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void Map::unloadPlayerObjects(){
|
||||
for(Player *pl : Game::getSingleton()->getPlayers()){
|
||||
for(Player *pl : Game::getSingleton()->getPlayers(true)){
|
||||
while(pl->getNumUnits() > 0){
|
||||
pl->removeUnit(0);
|
||||
}
|
||||
@@ -668,6 +702,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
//TODO replace search with binary search
|
||||
//TODO optimize horizontal and vertical id calculcation
|
||||
int Map::getCellId(Vector3 pos, bool checkUnderwaterCells){
|
||||
int numHorCells = int(mapSize.x / CELL_SIZE.x), horId = -1;
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace battleship{
|
||||
Type type;
|
||||
vb01::Vector3 pos;
|
||||
std::vector<Edge> edges;
|
||||
Unit *blockedBy = nullptr;
|
||||
std::vector<int> underWaterCellIds;
|
||||
|
||||
Cell(){}
|
||||
@@ -77,6 +78,9 @@ namespace battleship{
|
||||
bool isPointWithinTerrainObject(vb01::Vector3, int);
|
||||
void loadPlayerGameObjects();
|
||||
int getNumMapSpawnPoints(std::string = "");
|
||||
std::vector<int> getSurroundingCells(vb01::Vector3, int);
|
||||
void blockCells(Unit*);
|
||||
void unblockCells(Unit*);
|
||||
inline std::string getMapName(){return mapName;}
|
||||
inline vb01::Node* getNodeParent(){return terrainNode;}
|
||||
inline vb01::Vector3 getCellSize(){return CELL_SIZE;}
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
#include "missile.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace vb01;
|
||||
|
||||
Missile::Missile(Unit *un, int id, Vector3 tp, Vector3 pos, Quaternion rot) :
|
||||
Projectile(un, id, pos, rot),
|
||||
targetPos(tp){}
|
||||
|
||||
void Missile::update(){
|
||||
Vector3 targDir = (targetPos - pos).norm();
|
||||
float angle = targDir.getAngleBetween(dirVec);
|
||||
float ra = (rotAngle < angle ? rotAngle : angle);
|
||||
orientAt(Quaternion(ra, dirVec.cross(targDir)) * rot);
|
||||
|
||||
Projectile::update();
|
||||
checkCollision();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef MISSILE_H
|
||||
#define MISSILE_H
|
||||
|
||||
#include "projectile.h"
|
||||
|
||||
namespace battleship{
|
||||
class Missile : public Projectile{
|
||||
public:
|
||||
Missile(Unit*, int, vb01::Vector3, vb01::Vector3, vb01::Quaternion);
|
||||
~Missile(){}
|
||||
void update();
|
||||
private:
|
||||
vb01::Vector3 targetPos;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
+26
-5
@@ -1,7 +1,7 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include "pathfinder.h"
|
||||
#include "unit.h"
|
||||
#include "vehicle.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
@@ -16,7 +16,7 @@ namespace battleship{
|
||||
return pathfinder;
|
||||
}
|
||||
|
||||
vector<int> Pathfinder::findPath(vector<Map::Cell> &cells, vector<float> &heuristics, int source, int dest, int unitType){
|
||||
vector<int> Pathfinder::findPath(vector<Map::Cell> &cells, vector<float> &heuristics, int source, int dest, Vehicle *vehicle){
|
||||
const int size = cells.size();
|
||||
u32 *distances = new u32[size];
|
||||
vector<int> *paths = new vector<int>[size];
|
||||
@@ -67,10 +67,31 @@ namespace battleship{
|
||||
}
|
||||
|
||||
bool canMoveToStrichCell = true;
|
||||
bool ship = ((UnitType)unitType == UnitType::UNDERWATER || (UnitType)unitType == UnitType::SEA_LEVEL);
|
||||
|
||||
if((ship && cells[vertStrich].type != Map::Cell::WATER) || ((UnitType)unitType == UnitType::LAND && cells[vertStrich].type != Map::Cell::LAND))
|
||||
continue;
|
||||
if(vehicle){
|
||||
UnitType unitType = vehicle->getType();
|
||||
bool ship = (unitType == UnitType::UNDERWATER || unitType == UnitType::SEA_LEVEL);
|
||||
Unit *blockingUnit = cells[vertStrich].blockedBy;
|
||||
bool diffBlockingUnit = (blockingUnit && blockingUnit != vehicle);
|
||||
|
||||
if(
|
||||
(unitType == UnitType::LAND && (diffBlockingUnit || cells[vertStrich].type != Map::Cell::LAND)) ||
|
||||
(
|
||||
ship &&
|
||||
(
|
||||
cells[vertStrich].type != Map::Cell::WATER ||
|
||||
(
|
||||
diffBlockingUnit &&
|
||||
blockingUnit->getUnitClass() == UnitClass::ICE_SHEET &&
|
||||
vehicle->getUnitClass() != UnitClass::ICEBREAKER
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(distances[vertStrich] + cells[vertStrich].edges[i].weight < distances[edgeNode]){
|
||||
distances[edgeNode] = distances[vertStrich] + cells[vertStrich].edges[i].weight;
|
||||
|
||||
+3
-1
@@ -8,10 +8,12 @@
|
||||
#include <util.h>
|
||||
|
||||
namespace battleship{
|
||||
class Vehicle;
|
||||
|
||||
class Pathfinder{
|
||||
public:
|
||||
static Pathfinder* getSingleton();
|
||||
std::vector<int> findPath(std::vector<Map::Cell>&, std::vector<float>&, int, int, int = -1);
|
||||
std::vector<int> findPath(std::vector<Map::Cell>&, std::vector<float>&, int, int, Vehicle* = nullptr);
|
||||
inline vb01::u32 getImpassibleNodeVal(){return impassibleNodeVal;}
|
||||
inline void setImpassibleNodeVal(vb01::u32 val){this->impassibleNodeVal = val;}
|
||||
private:
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ namespace battleship{
|
||||
|
||||
int src = 0, dest = cells.size() - 1;
|
||||
vector<float> heur;
|
||||
vector<int> path = pathfinder->findPath(cells, heur, src, dest, 3);
|
||||
vector<int> path = pathfinder->findPath(cells, heur, src, dest);
|
||||
CPPUNIT_ASSERT(path == vector<int>({0, 1, 2, 4, 3, 6}));
|
||||
|
||||
int sumPathWeights = calcPathLength(path);
|
||||
@@ -82,7 +82,7 @@ namespace battleship{
|
||||
|
||||
for(int i = 0; i < numIterations; i++){
|
||||
s64 t0 = getTime();
|
||||
pathfinder->findPath(cells, heur, src, dest, 3);
|
||||
pathfinder->findPath(cells, heur, src, dest);
|
||||
s64 t1 = getTime();
|
||||
sumTime += t1 - t0;
|
||||
}
|
||||
|
||||
@@ -66,6 +66,8 @@ namespace battleship{
|
||||
string name = (cpuPlayer ? "CPU player #" + to_string(i) : "Player");
|
||||
game->addPlayer(new Player(difficulty, faction, team, color, cpuPlayer, i, name));
|
||||
}
|
||||
|
||||
game->setCivilianPlayer(new Player(0, 0, 0, .5 * Vector3::VEC_IJK));
|
||||
|
||||
handleLoadingGui(new LoadingAppState(new InGameAppState(mapName), "inGame.lua"));
|
||||
}
|
||||
|
||||
+1
-26
@@ -7,36 +7,11 @@ namespace battleship{
|
||||
using namespace std;
|
||||
using namespace gameBase;
|
||||
|
||||
PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){
|
||||
turretDir = dirVec;
|
||||
}
|
||||
PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){}
|
||||
|
||||
void PointDefense::attack(Order order){
|
||||
if(!isComplete()) return;
|
||||
|
||||
Unit *targUnit = order.targets[0].unit;
|
||||
Vector3 targDir = (targUnit ? targUnit->getPos() : order.targets[0].pos) - pos;
|
||||
|
||||
if(targDir.getLength() > weapons[0]->getMaxRange()){
|
||||
removeOrder(0);
|
||||
return;
|
||||
}
|
||||
|
||||
float angleToTarg = targDir.norm().getAngleBetween(turretDir);
|
||||
|
||||
if(angleToTarg > .05)
|
||||
rotateTurret(calculateRotation(targDir.norm(), angleToTarg, .1));
|
||||
else
|
||||
weapons[0]->fire(order);
|
||||
|
||||
Unit::attack(order);
|
||||
}
|
||||
|
||||
void PointDefense::rotateTurret(float angle){
|
||||
string nodeName = generateView()[GameObject::getGameObjTableName()][id + 1]["turretNode"];
|
||||
Node *turretNode = model->findDescendant(nodeName, true);
|
||||
Quaternion rotQuat = Quaternion(angle, Vector3::VEC_J);
|
||||
turretNode->setOrientation(rotQuat * turretNode->getOrientation());
|
||||
turretDir = rotQuat * turretDir;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,7 @@ namespace battleship{
|
||||
public:
|
||||
PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int, Unit::State);
|
||||
private:
|
||||
vb01::Vector3 turretDir;
|
||||
|
||||
void attack(Order);
|
||||
void rotateTurret(float);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+25
-23
@@ -10,6 +10,7 @@
|
||||
#include "unit.h"
|
||||
#include "util.h"
|
||||
#include "player.h"
|
||||
#include "environment.h"
|
||||
#include "projectile.h"
|
||||
#include "defConfigs.h"
|
||||
#include "resourceDeposit.h"
|
||||
@@ -43,7 +44,6 @@ namespace battleship{
|
||||
initProperties();
|
||||
|
||||
initModel();
|
||||
initSound();
|
||||
|
||||
GameObject::reinit();
|
||||
}
|
||||
@@ -64,25 +64,23 @@ namespace battleship{
|
||||
rotAngle = projTable["rotAngle"].get_or(0.0);
|
||||
}
|
||||
|
||||
void Projectile::initSound(){
|
||||
explosionSfxBuffer = new sf::SoundBuffer();
|
||||
string sfxPath = generateView()[GameObject::getGameObjTableName()][id + 1]["explosion"]["sfx"];
|
||||
explosionSfx = GameObject::prepareSfx(explosionSfxBuffer, sfxPath);
|
||||
}
|
||||
|
||||
void Projectile::update() {
|
||||
GameObject::update();
|
||||
placeAt(pos + speed * dirVec);
|
||||
|
||||
if(!remove){
|
||||
checkSurfaceCollision();
|
||||
if(remove) return;
|
||||
checkUnitCollision();
|
||||
}
|
||||
}
|
||||
|
||||
void Projectile::detonate(Unit *target){
|
||||
if(target) target->takeDamage(directHitDamage);
|
||||
|
||||
sol::table tbl = generateView()[getGameObjTableName()][id + 1]["explosion"];
|
||||
FxManager::Fx *fx = FxManager::getSingleton()->initFx(tbl["fx"], model, false, pos);
|
||||
Environment::explode(fx, (Environment::Detonation)tbl["detonation"], pos, tbl["damage"], tbl["radius"]);
|
||||
|
||||
remove = true;
|
||||
}
|
||||
|
||||
void Projectile::checkUnitCollision(){
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers();
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers(true);
|
||||
vector<Unit*> targetUnits;
|
||||
vector<Node*> targetNodes;
|
||||
|
||||
@@ -98,22 +96,26 @@ namespace battleship{
|
||||
|
||||
vector<RayCaster::CollisionResult> results = RayCaster::cast(pos, dirVec, targetNodes, rayLength);
|
||||
|
||||
if(!results.empty()){
|
||||
if(!results.empty())
|
||||
for(int i = 0; i < targetNodes.size(); i++)
|
||||
if(targetNodes[i]->getMesh(0) == results[0].mesh){
|
||||
targetUnits[i]->takeDamage(directHitDamage);
|
||||
Game::getSingleton()->explode(pos, explosionDamage, explosionRadius, explosionSfx);
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
if(targetNodes[i]->getMesh(0) == results[0].mesh)
|
||||
detonate(targetUnits[i]);
|
||||
}
|
||||
|
||||
void Projectile::checkSurfaceCollision(){
|
||||
Map *map = Map::getSingleton();
|
||||
int cellId = map->getCellId(pos, false);
|
||||
|
||||
if(map->getCells()[cellId].type == Map::Cell::LAND)
|
||||
remove = true;
|
||||
if((pos + dirVec * rayLength).y <= map->getCells()[cellId].pos.y)
|
||||
detonate();
|
||||
}
|
||||
|
||||
void Projectile::checkCollision(){
|
||||
if(!remove){
|
||||
checkSurfaceCollision();
|
||||
if(remove) return;
|
||||
checkUnitCollision();
|
||||
}
|
||||
}
|
||||
|
||||
void Projectile::debug(){
|
||||
|
||||
+9
-8
@@ -1,20 +1,20 @@
|
||||
#ifndef PROJECTILE_H
|
||||
#define PROJECTILE_H
|
||||
|
||||
#include <SFML/Audio.hpp>
|
||||
|
||||
#include "gameObject.h"
|
||||
#include "fxManager.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <SFML/Audio.hpp>
|
||||
|
||||
namespace vb01{
|
||||
class Node;
|
||||
}
|
||||
|
||||
namespace battleship {
|
||||
enum class ProjectileClass{CRUISE_MISSILE, TORPEDO};
|
||||
class Unit;
|
||||
|
||||
enum class ProjectileClass{SHELL, CRUISE_MISSILE, MISSILE, TORPEDO};
|
||||
|
||||
class Projectile : public GameObject{
|
||||
public:
|
||||
Projectile(Unit*, int, vb01::Vector3, vb01::Quaternion);
|
||||
@@ -23,17 +23,18 @@ namespace battleship {
|
||||
virtual void debug();
|
||||
private:
|
||||
void initProperties();
|
||||
void initSound();
|
||||
void checkCollision();
|
||||
void detonate(Unit *u = nullptr);
|
||||
protected:
|
||||
virtual void reinit();
|
||||
virtual void checkUnitCollision();
|
||||
virtual void checkSurfaceCollision();
|
||||
void checkCollision();
|
||||
|
||||
float speed, rayLength, explosionRadius, rotAngle;
|
||||
int directHitDamage, explosionDamage;
|
||||
vb01::Vector3 initPos;
|
||||
Unit *unit = nullptr;
|
||||
FxManager::Fx *explosionFx = nullptr;
|
||||
float speed, rayLength, explosionRadius, rotAngle;
|
||||
int directHitDamage, explosionDamage;
|
||||
sf::SoundBuffer *shotSfxBuffer, *explosionSfxBuffer;
|
||||
sf::Sound *shotSfx = nullptr, *explosionSfx = nullptr;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#include "shell.h"
|
||||
|
||||
#include <solUtil.h>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace gameBase;
|
||||
|
||||
Shell::Shell(Unit *un, int id, Vector3 pos, Quaternion rot) :
|
||||
Projectile(un, id, pos, rot),
|
||||
initTime(getTime()),
|
||||
initDir(dirVec) {}
|
||||
|
||||
void Shell::update(){
|
||||
float currTime = float(getTime() - initTime) / 1000;
|
||||
|
||||
if(currTime == 0) return;
|
||||
|
||||
const float G = generateView()["G"];
|
||||
float angle = initDir.getAngleBetween(Vector3(initDir.x, 0, initDir.z).norm());
|
||||
|
||||
dirVec = (
|
||||
pos +
|
||||
speed * currTime * cos(angle) * Vector3(initDir.x, 0, initDir.z).norm() +
|
||||
(currTime * speed * sin(angle) - G * currTime * currTime) * Vector3::VEC_J -
|
||||
pos
|
||||
).norm();
|
||||
upVec = Quaternion(-PI / 2, leftVec) * dirVec;
|
||||
model->lookAt(dirVec, upVec);
|
||||
|
||||
Projectile::update();
|
||||
checkCollision();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef SHELL_H
|
||||
#define SHELL_H
|
||||
|
||||
#include "projectile.h"
|
||||
|
||||
#include <util.h>
|
||||
|
||||
namespace battleship{
|
||||
class Shell : public Projectile{
|
||||
public:
|
||||
Shell(Unit*, int, vb01::Vector3, vb01::Quaternion);
|
||||
void update();
|
||||
private:
|
||||
vb01::s64 initTime;
|
||||
vb01::Vector3 initDir;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
+1
-1
@@ -17,9 +17,9 @@ namespace battleship{
|
||||
inline int getBuildStatus(){return buildStatus;}
|
||||
inline void incrementBuildStatus(){buildStatus++;}
|
||||
private:
|
||||
int buildStatus = 0;
|
||||
protected:
|
||||
vb01::Node *buildStatusBackground = nullptr, *buildStatusForeground = nullptr;
|
||||
int buildStatus = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#include "submarine.h"
|
||||
#include "map.h"
|
||||
|
||||
#include <quad.h>
|
||||
|
||||
namespace battleship{
|
||||
using namespace vb01;
|
||||
using namespace std;
|
||||
|
||||
Submarine::Submarine(Player *player, int id, Vector3 pos, Quaternion rot, Unit::State state) : Vehicle(player, id, pos, rot, state){}
|
||||
|
||||
bool Submarine::validateLaunchOrder(){
|
||||
if(!Unit::validateLaunchOrder()) return false;
|
||||
|
||||
vector<Node*> terrainNodes = Map::getSingleton()->getNodeParent()->getChildren();
|
||||
|
||||
for(int i = 1; i < terrainNodes.size(); i++){
|
||||
Vector3 wbPos = terrainNodes[i]->getPosition();
|
||||
Vector3 size = ((Quad*)terrainNodes[i]->getMesh(0))->getSize();
|
||||
|
||||
if(fabs(wbPos.x - pos.x) < .5 * size.x && fabs(wbPos.z - pos.z) < .5 * size.y && pos.y - wbPos.y > -.1)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
#ifndef SUBMARINE_H
|
||||
#define SUBMARINE_H
|
||||
|
||||
#include "vehicle.h"
|
||||
|
||||
namespace battleship{
|
||||
class Submarine : public Vehicle{
|
||||
public:
|
||||
Submarine(Player*, int, vb01::Vector3, vb01::Quaternion, Unit::State);
|
||||
private:
|
||||
bool validateLaunchOrder();
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -13,9 +13,12 @@
|
||||
#include <ext.hpp>
|
||||
|
||||
#include "unit.h"
|
||||
#include "weapon.h"
|
||||
#include "util.h"
|
||||
#include "game.h"
|
||||
#include "map.h"
|
||||
#include "vehicle.h"
|
||||
#include "environment.h"
|
||||
#include "gameObjectFactory.h"
|
||||
#include "activeGameState.h"
|
||||
#include "gameManager.h"
|
||||
@@ -30,264 +33,9 @@ using namespace gameBase;
|
||||
using namespace std;
|
||||
|
||||
namespace battleship{
|
||||
string Unit::Weapon::LASER_FLAG = "laser";
|
||||
|
||||
Unit::Weapon::Weapon(Unit *u, sol::table unitTable, int wid) :
|
||||
unit(u),
|
||||
id(wid),
|
||||
type((Weapon::Type)unitTable["weapons"][wid + 1]["type"]),
|
||||
rateOfFire(unitTable["weapons"][wid + 1]["rateOfFire"]),
|
||||
damage(unitTable["weapons"][wid + 1]["damage"].get_or(0))
|
||||
{
|
||||
sol::table weaponTable = unitTable["weapons"][wid + 1];
|
||||
maxRange = weaponTable["maxRange"];
|
||||
initProjectileData(weaponTable);
|
||||
|
||||
fireFx = initFx(weaponTable, "fireFx", true);
|
||||
if(fireFx) FxManager::getSingleton()->addFx(fireFx);
|
||||
}
|
||||
|
||||
void Unit::Weapon::initProjectileData(sol::table weaponTable){
|
||||
string projTableKey = "projectile";
|
||||
sol::optional<sol::table> proj = weaponTable[projTableKey];
|
||||
|
||||
if(proj != sol::nullopt){
|
||||
projId = weaponTable[projTableKey]["id"];
|
||||
sol::table projTable = generateView()["projectiles"];
|
||||
ProjectileClass pc = (ProjectileClass)projTable[projId + 1]["projectileClass"];
|
||||
|
||||
if(pc == ProjectileClass::CRUISE_MISSILE){
|
||||
minRange = 0;
|
||||
float rotAngle = projTable[projId + 1]["rotAngle"];
|
||||
float speed = projTable[projId + 1]["speed"];
|
||||
float base = PI / 2, alpha = 0;
|
||||
|
||||
while(base - alpha > .001){
|
||||
minRange += speed * sin(alpha);
|
||||
alpha += (base - alpha > rotAngle ? rotAngle : base - alpha);
|
||||
}
|
||||
|
||||
minRange *= 2;
|
||||
}
|
||||
|
||||
sol::table posTable = weaponTable[projTableKey]["pos"];
|
||||
projPos = Vector3(posTable["x"], posTable["y"], posTable["z"]);
|
||||
sol::table rotTable = weaponTable[projTableKey]["rot"];
|
||||
projRot = Quaternion(rotTable["w"], rotTable["x"], rotTable["y"], rotTable["z"]);
|
||||
}
|
||||
}
|
||||
|
||||
//TODO implement node child search by name
|
||||
FxManager::Fx* Unit::Weapon::initFx(sol::table weaponTable, string fxKey, bool attached){
|
||||
sol::optional<sol::table> fxOpt = weaponTable[fxKey];
|
||||
|
||||
if(fxOpt == sol::nullopt)
|
||||
return nullptr;
|
||||
|
||||
sol::table fxTbl = weaponTable[fxKey];
|
||||
int numComponents = fxTbl.size();
|
||||
|
||||
if(numComponents == 0)
|
||||
return nullptr;
|
||||
|
||||
vector<FxManager::Fx::Component> fxComponents;
|
||||
|
||||
for(int i = 0; i < numComponents; i++){
|
||||
sol::table compTbl = fxTbl[i + 1];
|
||||
|
||||
bool vfx = compTbl["vfx"];
|
||||
s64 duration = compTbl["duration"], offset = compTbl["offset"].get_or(0);
|
||||
|
||||
if(vfx){
|
||||
sol::table meshTbl = compTbl["mesh"];
|
||||
|
||||
string meshPath = "";
|
||||
Material *mat = nullptr;
|
||||
Node *flashNode = nullptr;
|
||||
|
||||
sol::optional<sol::table> posOpt = compTbl["pos"], rotOpt = compTbl["rot"];
|
||||
Vector3 compPos = Vector3::VEC_ZERO;
|
||||
Quaternion compRot = Quaternion::QUAT_W;
|
||||
float sc = compTbl["scale"].get_or(1);
|
||||
|
||||
if(posOpt != sol::nullopt){
|
||||
sol::table posTable = compTbl["pos"];
|
||||
compPos = Vector3(posTable["x"], posTable["y"], posTable["z"]);
|
||||
}
|
||||
|
||||
if(rotOpt != sol::nullopt){
|
||||
sol::table rotTable = compTbl["rot"];
|
||||
compRot = Quaternion(rotTable["w"], rotTable["x"], rotTable["y"], rotTable["z"]);
|
||||
}
|
||||
|
||||
sol::optional<string> pathOpt = meshTbl["path"];
|
||||
sol::optional<int> numPartOpt = meshTbl["numParticles"];
|
||||
|
||||
if(pathOpt != sol::nullopt){
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "texture");
|
||||
|
||||
meshPath = meshTbl["path"];
|
||||
flashNode = new Model(meshPath);
|
||||
((Model*)flashNode)->setMaterial(mat);
|
||||
flashNode->setPosition(compPos);
|
||||
flashNode->setOrientation(compRot);
|
||||
flashNode->setScale(Vector3(sc, sc, sc));
|
||||
}
|
||||
else if(numPartOpt != sol::nullopt){
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "particle");
|
||||
|
||||
int numParticles = meshTbl["numParticles"];
|
||||
ParticleEmitter *pe = new ParticleEmitter(numParticles);
|
||||
pe->setMaterial(mat);
|
||||
pe->setLowLife(meshTbl["lowLife"]);
|
||||
pe->setHighLife(meshTbl["highLife"]);
|
||||
pe->setSpeed(0);
|
||||
|
||||
sol::table sizeTbl = meshTbl["size"];
|
||||
pe->setSize(Vector2(sizeTbl["x"], sizeTbl["y"]));
|
||||
|
||||
flashNode = new Node(compPos, compRot, Vector3(sc, sc, sc));
|
||||
flashNode->attachParticleEmitter(pe);
|
||||
flashNode->lookAt(Vector3::VEC_J, Vector3::VEC_K);
|
||||
}
|
||||
else{
|
||||
mat = new Material(Root::getSingleton()->getLibPath() + "texture");
|
||||
|
||||
sol::table sizeTbl = meshTbl["size"];
|
||||
Box *box = new Box(Vector3(sizeTbl["x"], sizeTbl["y"], 0));
|
||||
box->setMaterial(mat);
|
||||
|
||||
flashNode = new Node(compPos, compRot, Vector3(sc, sc, sc), LASER_FLAG);
|
||||
flashNode->attachMesh(box);
|
||||
}
|
||||
|
||||
sol::optional<string> texOpt = meshTbl["texture"];
|
||||
|
||||
if(texOpt != sol::nullopt){
|
||||
string p[]{meshTbl["texture"]};
|
||||
Texture *tex = new Texture(p, 1, false);
|
||||
mat->addBoolUniform("texturingEnabled", true);
|
||||
mat->addTexUniform("diffuseMap[0]", tex, false);
|
||||
}
|
||||
else{
|
||||
sol::table colorTable = meshTbl["color"];
|
||||
mat->addVec4Uniform("diffuseColor", Vector4(colorTable["x"], colorTable["y"], colorTable["z"], colorTable["a"]));
|
||||
mat->addBoolUniform("texturingEnabled", false);
|
||||
}
|
||||
|
||||
flashNode->setVisible(false);
|
||||
Node *parNode = (attached ? unit->getModel() : Root::getSingleton()->getRootNode());
|
||||
sol::optional<string> parOpt = compTbl["parent"];
|
||||
|
||||
if(parOpt != sol::nullopt){
|
||||
vector<Node*> descendants;
|
||||
unit->getModel()->getDescendants(descendants);
|
||||
string parName = compTbl["parent"];
|
||||
parNode = nullptr;
|
||||
|
||||
for(Node *desc : descendants)
|
||||
if(desc->getName() == parName){
|
||||
parNode = desc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
parNode->attachChild(flashNode);
|
||||
|
||||
fxComponents.push_back(FxManager::Fx::Component((void*)flashNode, vfx, duration, compPos, offset));
|
||||
}
|
||||
else{
|
||||
sf::SoundBuffer *sfxBuffer = new sf::SoundBuffer();
|
||||
sf::Sound *sfx = GameObject::prepareSfx(sfxBuffer, compTbl["path"]);
|
||||
fxComponents.push_back(FxManager::Fx::Component((void*)sfx, vfx, duration, Vector3::VEC_ZERO, offset));
|
||||
}
|
||||
}
|
||||
|
||||
return new FxManager::Fx(fxComponents, attached);
|
||||
}
|
||||
|
||||
Unit::Weapon::~Weapon(){
|
||||
FxManager *fm = FxManager::getSingleton();
|
||||
|
||||
if(fireFx) fm->removeFx(fireFx);
|
||||
}
|
||||
|
||||
void Unit::Weapon::update(){}
|
||||
|
||||
void Unit::Weapon::useFx(FxManager::Fx *fx, Vector3 targPos, bool fire){
|
||||
if(fx && !fire)
|
||||
FxManager::getSingleton()->addFx(fx);
|
||||
else if(!fx)
|
||||
return;
|
||||
|
||||
fx->toggleComponents(true);
|
||||
|
||||
Vector3 plCol = unit->getPlayer()->getColor();
|
||||
|
||||
for(int i = 0; i < fx->components.size(); i++){
|
||||
FxManager::Fx::Component &comp = fx->components[i];
|
||||
|
||||
if(comp.vfx){
|
||||
if(fire && ((Node*)comp.comp)->getName() == LASER_FLAG){
|
||||
Vector3 initPos = unit->getPos(), laserDir = targPos - initPos;
|
||||
float targDist = laserDir.getLength();
|
||||
float angle = unit->getDirVec().getAngleBetween(laserDir);
|
||||
Vector3 crossProd = unit->getDirVec().cross(laserDir);
|
||||
|
||||
Node *compNode = (Node*)comp.comp;
|
||||
compNode->setOrientation(Quaternion(angle, crossProd) * compNode->getOrientation());
|
||||
|
||||
Box *box = (Box*)compNode->getMesh(0);
|
||||
Vector3 size = box->getSize();
|
||||
box->setSize(Vector3(size.x, size.y, targDist));
|
||||
box->updateVerts(box->getMeshBase());
|
||||
box->getMaterial()->setVec4Uniform("diffuseColor", Vector4(plCol.x, plCol.y, plCol.z, 1));
|
||||
|
||||
compNode->setPosition(comp.pos + .5 * targDist * Vector3::VEC_K);
|
||||
}
|
||||
else if(!fire)
|
||||
((Node*)comp.comp)->setPosition(targPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::Weapon::fire(Order order){
|
||||
if(!canFire()) return;
|
||||
|
||||
Unit *targetUnit = order.targets[0].unit;
|
||||
Vector3 targPos = (targetUnit ? targetUnit->getPos() : order.targets[0].pos);
|
||||
|
||||
if(fireFx) useFx(fireFx, targPos, true);
|
||||
|
||||
if(projId == -1){
|
||||
sol::table weaponTbl = generateView()["units"][unit->getId() + 1]["weapons"][id + 1];
|
||||
|
||||
if(targetUnit){
|
||||
targetUnit->takeDamage(damage);
|
||||
unit->updateGameStats(targetUnit);
|
||||
useFx(initFx(weaponTbl, "unitHitFx", false), targPos, false);
|
||||
}
|
||||
else{
|
||||
Map *map = Map::getSingleton();
|
||||
Map::Cell::Type cellType = map->getCells()[map->getCellId(targPos)].type;
|
||||
string fxKey = (cellType == Map::Cell::Type::LAND ? "landHitFx" : "waterHitFx");
|
||||
useFx(initFx(weaponTbl, fxKey, false), targPos, false);
|
||||
}
|
||||
}
|
||||
else{
|
||||
Vector3 leftVec = unit->getLeftVec();
|
||||
Vector3 upVec = unit->getUpVec();
|
||||
Vector3 dirVec = unit->getDirVec();
|
||||
Vector3 p = unit->getPos() + leftVec * projPos.x + upVec * projPos.y + dirVec * projPos.z;
|
||||
Quaternion r = unit->getRot() * projRot;
|
||||
unit->getPlayer()->addProjectile(GameObjectFactory::createProjectile(unit, projId, p, r));
|
||||
}
|
||||
|
||||
lastFireTime = getTime();
|
||||
}
|
||||
|
||||
Unit::Unit(Player *player, int id, Vector3 pos, Quaternion rot, State st) : GameObject(GameObject::Type::UNIT, id, player, pos, rot), state(st){
|
||||
selectable = true;
|
||||
restartTime = 2000;
|
||||
|
||||
Unit::initProperties();
|
||||
initModel();
|
||||
@@ -303,6 +51,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
Unit::~Unit() {
|
||||
Map::getSingleton()->unblockCells(this);
|
||||
removeBar(hpBackgroundNode);
|
||||
removeBar(hpForegroundNode);
|
||||
destroyWeapons();
|
||||
@@ -390,15 +139,22 @@ namespace battleship{
|
||||
sol::table unitTable = SOL_STATE_VIEW[objType][id + 1];
|
||||
|
||||
string tblName = "weapons";
|
||||
sol::optional<sol::table> wt = unitTable[tblName];
|
||||
sol::optional<sol::table> weaponsTblOpt = unitTable[tblName];
|
||||
|
||||
if(wt != sol::nullopt){
|
||||
if(weaponsTblOpt != sol::nullopt){
|
||||
string varName = "numWeapons";
|
||||
SOL_STATE_VIEW.script(varName + " = #" + objType + "[" + to_string(id + 1) + "]." + tblName);
|
||||
int numWeapons = SOL_STATE_VIEW[varName];
|
||||
|
||||
for(int i = 0; i < numWeapons; i++)
|
||||
weapons.push_back(new Weapon(this, unitTable, i));
|
||||
for(int i = 0; i < numWeapons; i++){
|
||||
int wt = 0;
|
||||
sol::optional<int> wtOpt = unitTable[tblName][i + 1]["type"];
|
||||
|
||||
if(wtOpt != sol::nullopt) wt = unitTable[tblName][i + 1]["type"];
|
||||
|
||||
Weapon *weapon = ((Weapon::Type)wt == Weapon::Type::FREEZER ? new CryoGun(this, unitTable, i) : new Weapon(this, unitTable, i));
|
||||
weapons.push_back(weapon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -492,15 +248,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void Unit::launch(Order order){
|
||||
for(Weapon *weapon : weapons){
|
||||
Vector3 targPos = Vector3(order.targets[0].pos.x, pos.y, order.targets[0].pos.z);
|
||||
|
||||
if(weapon->getProjectileId() == 0 && weapon->getMinRange() < targPos.getDistanceFrom(pos)){
|
||||
weapon->fire(order);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
getWeaponsByOrder(Order::TYPE::LAUNCH)[0]->fire(order);
|
||||
removeOrder(0);
|
||||
}
|
||||
|
||||
@@ -552,6 +300,11 @@ namespace battleship{
|
||||
void Unit::update() {
|
||||
GameObject::update();
|
||||
|
||||
if(condition == Condition::EM_JAMMED && getTime() - lastJamTime > restartTime)
|
||||
condition = Condition::ABLE;
|
||||
|
||||
if(freezeStatus >= 100) condition = Condition::FROZEN;
|
||||
|
||||
ActiveGameState *activeState = (ActiveGameState*)GameManager::getSingleton()->getStateManager()->getAppStateByType(AppStateType::ACTIVE_STATE);
|
||||
Player *mainPlayer = (activeState ? activeState->getPlayer() : nullptr);
|
||||
|
||||
@@ -572,7 +325,9 @@ namespace battleship{
|
||||
displayUnitStats(slot.foreground, slot.background, (int)((bool)slot.vehicle), (int)true, renderSelectables, slot.offset);
|
||||
|
||||
if (health <= DEATH_HP){
|
||||
Game::getSingleton()->explode(pos, 0, 0, deathSfx);
|
||||
sol::table tbl = generateView()[getGameObjTableName()][id + 1]["deathFx"];
|
||||
FxManager::Fx *fx = FxManager::getSingleton()->initFx(tbl, model, false, pos);
|
||||
Environment::explode(fx, Environment::Detonation::EXPLOSION, pos);
|
||||
remove = true;
|
||||
}
|
||||
|
||||
@@ -601,6 +356,8 @@ namespace battleship{
|
||||
|
||||
//TODO remove order argument from action methods
|
||||
void Unit::executeOrders() {
|
||||
if(condition != Condition::ABLE) return;
|
||||
|
||||
if (orders.size() > 0) {
|
||||
Order order = orders[0];
|
||||
|
||||
@@ -681,14 +438,20 @@ namespace battleship{
|
||||
|
||||
removeOrder(0);
|
||||
}
|
||||
|
||||
vector<Weapon*> attackWeapons = getWeaponsByOrder(Order::TYPE::ATTACK);
|
||||
Vector3 targPos = (order.targets[0].unit ? order.targets[0].unit->getPos() : order.targets[0].pos);
|
||||
|
||||
for(Weapon *weapon : attackWeapons)
|
||||
weapon->trackTarget(targPos);
|
||||
}
|
||||
|
||||
bool Unit::validateOrder(Order order){
|
||||
switch (order.type) {
|
||||
case Order::TYPE::ATTACK:
|
||||
return !weapons.empty();
|
||||
return !getWeaponsByOrder(Order::TYPE::ATTACK).empty();
|
||||
case Order::TYPE::BUILD:
|
||||
return unitClass == UnitClass::ENGINEER;
|
||||
return (unitClass == UnitClass::ENGINEER || unitClass == UnitClass::FREEZER);
|
||||
case Order::TYPE::PATROL:
|
||||
case Order::TYPE::MOVE:
|
||||
return vehicle;
|
||||
@@ -697,30 +460,28 @@ namespace battleship{
|
||||
case Order::TYPE::EJECT:
|
||||
return !garrisonSlots.empty();
|
||||
case Order::TYPE::LAUNCH:
|
||||
{
|
||||
for(Weapon *weapon : weapons)
|
||||
if(weapon->getType() == Weapon::Type::CRUISE_MISSILE)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
return validateLaunchOrder();
|
||||
case Order::TYPE::SUPPLY:
|
||||
case Order::TYPE::LOAD:
|
||||
case Order::TYPE::UNLOAD:
|
||||
return unitClass == UnitClass::RESOURCE_ROVER;
|
||||
case Order::TYPE::HACK:
|
||||
{
|
||||
for(Weapon *weapon : weapons)
|
||||
if(weapon->getType() == Weapon::Type::CRUISE_MISSILE)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
return !getWeaponsByOrder(Order::TYPE::HACK).empty();
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
vector<Weapon*> Unit::getWeaponsByOrder(Order::TYPE type){
|
||||
vector<Weapon*> weaps;
|
||||
|
||||
for(Weapon *w : weapons)
|
||||
if(w->getOrderType() == type)
|
||||
weaps.push_back(w);
|
||||
|
||||
return weaps;
|
||||
}
|
||||
|
||||
void Unit::receiveOrder(Order order, bool add) {
|
||||
if(!validateOrder(order)) return;
|
||||
|
||||
@@ -752,6 +513,14 @@ namespace battleship{
|
||||
}
|
||||
}
|
||||
|
||||
//TODO select only the closest cells based on unit size
|
||||
void Unit::placeAt(Vector3 p){
|
||||
//check twice in case the unit is warped over a long distance
|
||||
Map::getSingleton()->blockCells(this);
|
||||
GameObject::placeAt(p);
|
||||
Map::getSingleton()->blockCells(this);
|
||||
}
|
||||
|
||||
vector<Player*> Unit::getSelectingPlayers(){
|
||||
vector<Player*> players = Game::getSingleton()->getPlayers(), selectingPlayers;
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace vb01{
|
||||
|
||||
namespace battleship{
|
||||
class Player;
|
||||
class Weapon;
|
||||
class Unit;
|
||||
class Vehicle;
|
||||
class Structure;
|
||||
@@ -74,6 +75,9 @@ namespace battleship{
|
||||
CRUISER,
|
||||
CARRIER,
|
||||
SUBMARINE,
|
||||
ICEBREAKER,
|
||||
FREEZER,
|
||||
EMP_BOAT,
|
||||
LAND_FACTORY,
|
||||
NAVAL_FACTORY,
|
||||
TRADE_CENTER,
|
||||
@@ -81,43 +85,12 @@ namespace battleship{
|
||||
POINT_DEFENSE,
|
||||
EXTRACTOR,
|
||||
REFINERY,
|
||||
FORT
|
||||
FORT,
|
||||
ICE_SHEET
|
||||
};
|
||||
|
||||
class Unit : public GameObject{
|
||||
public:
|
||||
class Weapon{
|
||||
public:
|
||||
enum class Type{HITSCAN, SHELL, TORPEDO, CRUISE_MISSILE, HACK};
|
||||
|
||||
Weapon(Unit*, sol::table, int);
|
||||
~Weapon();
|
||||
virtual void update();
|
||||
virtual void fire(Order);
|
||||
inline Type getType(){return type;}
|
||||
inline int getProjectileId(){return projId;}
|
||||
inline int getRateOfFire(){return rateOfFire;}
|
||||
inline int getDamage(){return damage;}
|
||||
inline int getMinRange(){return minRange;}
|
||||
inline int getMaxRange(){return maxRange;}
|
||||
inline Unit* getUnit(){return unit;}
|
||||
private:
|
||||
Type type;
|
||||
int id, projId = -1, rateOfFire, damage = 0;
|
||||
float minRange = 0, maxRange;
|
||||
vb01::Vector3 projPos;
|
||||
vb01::Quaternion projRot;
|
||||
vb01::s64 lastFireTime = 0;
|
||||
Unit *unit = nullptr;
|
||||
FxManager::Fx *fireFx = nullptr;
|
||||
static std::string LASER_FLAG;
|
||||
|
||||
void initProjectileData(sol::table);
|
||||
FxManager::Fx* initFx(sol::table, std::string, bool);
|
||||
void useFx(FxManager::Fx*, vb01::Vector3, bool);
|
||||
inline bool canFire(){return vb01::getTime() - lastFireTime > rateOfFire;}
|
||||
};
|
||||
|
||||
struct GarrisonSlot{
|
||||
Vehicle *vehicle = nullptr;
|
||||
int category;
|
||||
@@ -129,6 +102,7 @@ namespace battleship{
|
||||
|
||||
enum class Armor {CAST, COMBINED, MECHANIC, SHELL, STEEL};
|
||||
enum class State {CHASE, STAND_GROUND, HOLD_FIRE};
|
||||
enum class Condition{ABLE, FROZEN, EM_JAMMED};
|
||||
|
||||
Unit(Player*, int, vb01::Vector3, vb01::Quaternion, State = State::STAND_GROUND);
|
||||
virtual ~Unit();
|
||||
@@ -154,7 +128,7 @@ namespace battleship{
|
||||
inline float getLineOfSight() {return lineOfSight;}
|
||||
inline UnitType getType() {return type;}
|
||||
inline UnitClass getUnitClass() {return unitClass;}
|
||||
inline void takeDamage(int damage) {health -= damage;}
|
||||
inline void takeDamage(int damage) {health -= damage * (1 + (freezeDmgFactor - 1) * freezeStatus * .01f);}
|
||||
inline int getPlayerId() {return playerId;}
|
||||
inline int getHealth(){return health;}
|
||||
inline int getDeathHp(){return DEATH_HP;}
|
||||
@@ -165,6 +139,14 @@ namespace battleship{
|
||||
inline std::string getGuiScreen(){return guiScreen;}
|
||||
inline BuildableUnit getBuildableUnit(int i){return buildableUnits[i];}
|
||||
inline vb01::Node* getLosLightNode(){return losLightNode;}
|
||||
inline void setFreezeStatus(int fs){this->freezeStatus = std::clamp(fs, 0, 100);}
|
||||
inline int getFreezeStatus(){return freezeStatus;}
|
||||
inline Condition getCondition(){return condition;}
|
||||
inline void setCondition(Condition cond){
|
||||
this->condition = cond;
|
||||
|
||||
if(cond == Condition::EM_JAMMED) lastJamTime = vb01::getTime();
|
||||
}
|
||||
private:
|
||||
void renderOrderLine(bool);
|
||||
void updateScreenCoordinates();
|
||||
@@ -178,13 +160,14 @@ namespace battleship{
|
||||
sf::Sound *selectionSfx = nullptr;
|
||||
vb01::Node *hpBackgroundNode = nullptr, *hpForegroundNode = nullptr, *losLightNode = nullptr;
|
||||
bool vehicle;
|
||||
Condition condition = Condition::ABLE;
|
||||
protected:
|
||||
UnitClass unitClass;
|
||||
UnitType type;
|
||||
std::vector<Order> orders;
|
||||
std::string guiScreen = "";
|
||||
int health = 0, maxHealth, playerId, lenHpBar = 200;
|
||||
vb01::s64 orderLineDispTime = 0, lastFireTime = 0;
|
||||
int health = 0, maxHealth, playerId, lenHpBar = 200, freezeStatus = 0, freezeDmgFactor = 10, restartTime;
|
||||
vb01::s64 orderLineDispTime = 0, lastFireTime = 0, lastJamTime = 0;
|
||||
float lineOfSight;
|
||||
std::vector<Armor> armorTypes;
|
||||
std::vector<Weapon*> weapons;
|
||||
@@ -192,8 +175,10 @@ namespace battleship{
|
||||
std::vector<BuildableUnit> buildableUnits;
|
||||
State state = State::STAND_GROUND;
|
||||
|
||||
void placeAt(vb01::Vector3);
|
||||
std::vector<Player*> getSelectingPlayers();
|
||||
void removeOrder(int);
|
||||
virtual bool validateLaunchOrder(){return !getWeaponsByOrder(Order::TYPE::LAUNCH).empty();}
|
||||
virtual bool validateGarrisonOrder(Order){return false;}
|
||||
virtual void targetUnitsAutomatically();
|
||||
virtual void reinit();
|
||||
@@ -211,10 +196,12 @@ namespace battleship{
|
||||
virtual void launch(Order);
|
||||
virtual void handleResources(Order){}
|
||||
virtual void hack(Order){}
|
||||
virtual void freeze(Order){}
|
||||
float calculateRotation(vb01::Vector3, float, float);
|
||||
void removeBar(vb01::Node*);
|
||||
vb01::Node* createBar(vb01::Vector2, vb01::Vector2, vb01::Vector4);
|
||||
void displayUnitStats(vb01::Node*, vb01::Node*, int, int, bool, vb01::Vector2 offset = vb01::Vector2::VEC_ZERO);
|
||||
std::vector<Weapon*> getWeaponsByOrder(Order::TYPE);
|
||||
inline std::vector<Armor> getArmorTypes(){return armorTypes;}
|
||||
};
|
||||
}
|
||||
|
||||
+51
-13
@@ -7,8 +7,10 @@
|
||||
#include <model.h>
|
||||
#include <quaternion.h>
|
||||
|
||||
#include "vehicle.h"
|
||||
#include "pathfinder.h"
|
||||
#include "structure.h"
|
||||
#include "vehicle.h"
|
||||
#include "weapon.h"
|
||||
#include "player.h"
|
||||
#include "game.h"
|
||||
#include "map.h"
|
||||
@@ -246,6 +248,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
//TODO allow ships to attack land targets and vice versa
|
||||
//TODO recursively search for vacant dest cell neibourghss
|
||||
void Vehicle::preparePathpoints(Order &order, Vector3 destPos, bool appendDestPos){
|
||||
removeAllPathpoints();
|
||||
|
||||
@@ -263,12 +266,22 @@ namespace battleship{
|
||||
|
||||
if(type != UnitType::UNDERWATER && fabs(destPos.y - cells[dest].pos.y) > .1) return;
|
||||
|
||||
if(cells[dest].blockedBy){
|
||||
vector<int> surrCellIds = map->getSurroundingCells(cells[dest].pos, 1);
|
||||
|
||||
for(int scid : surrCellIds)
|
||||
if(!cells[scid].blockedBy){
|
||||
dest = scid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
vector<float> heuristics;
|
||||
|
||||
for(Map::Cell &cell : cells)
|
||||
heuristics.push_back(145 * (cells[dest].pos.getDistanceFrom(cell.pos)));
|
||||
|
||||
vector<int> path = Pathfinder::getSingleton()->findPath(cells, heuristics, source, dest, (int)type);
|
||||
vector<int> path = Pathfinder::getSingleton()->findPath(cells, heuristics, source, dest, this);
|
||||
bool pathTruncated = false;
|
||||
|
||||
for(int i = 0; i < path.size(); i++){
|
||||
@@ -316,12 +329,19 @@ namespace battleship{
|
||||
Unit::attack(order);
|
||||
int currNumOrders = orders.size();
|
||||
|
||||
if(weapons.empty() || prevNumOrders != currNumOrders) return;
|
||||
if(prevNumOrders != currNumOrders) return;
|
||||
|
||||
Order::Target target = order.targets[0];
|
||||
Vector3 targVec = (target.unit ? target.unit->getPos() : target.pos) - pos;
|
||||
float distToTarg = targVec.getLength();
|
||||
Weapon *weapon = weapons[0];
|
||||
|
||||
vector<Weapon*> attackWeapons = getWeaponsByOrder(Order::TYPE::ATTACK);
|
||||
Weapon *weapon = attackWeapons[0];
|
||||
|
||||
for(Weapon *w : attackWeapons)
|
||||
if(w->getMaxRange() > weapon->getMaxRange())
|
||||
weapon = w;
|
||||
|
||||
float minDist = weapon->getMaxRange();
|
||||
|
||||
if(order.playerAssigned || (!order.playerAssigned && state == Unit::State::CHASE)){
|
||||
@@ -334,17 +354,35 @@ namespace battleship{
|
||||
removeOrder(0);
|
||||
return;
|
||||
}
|
||||
|
||||
float angleToTarg = targVec.norm().getAngleBetween(dirVec);
|
||||
|
||||
if(distToTarg <= weapon->getMaxRange()){
|
||||
if(angleToTarg <= anglePrecision)
|
||||
weapon->fire(order);
|
||||
else if(angleToTarg > anglePrecision)
|
||||
turn(calculateRotation(targVec.norm(), angleToTarg, maxTurnAngle));
|
||||
}
|
||||
}
|
||||
|
||||
void Vehicle::build(Order order){
|
||||
if(pathPoints.empty()){
|
||||
if(!order.targets[0].unit)
|
||||
player->addUnit(order.targets[0].unit);
|
||||
else {
|
||||
Structure *structure = (Structure*)order.targets[0].unit;
|
||||
sol::table targTable = generateView()["units"][structure->getId()];
|
||||
int costRate = (int)targTable["cost"] / 100, buildRate = (int)targTable["buildTime"] / 100;
|
||||
|
||||
if(structure->getBuildStatus() < 100 && player->getResource(ResourceType::REFINEDS) >= costRate && getTime() - lastBuildTime > buildRate){
|
||||
structure->incrementBuildStatus();
|
||||
player->updateResource(ResourceType::REFINEDS, -costRate, true);
|
||||
lastBuildTime = getTime();
|
||||
}
|
||||
else if(structure->getBuildStatus() >= 100){
|
||||
removeOrder(0);
|
||||
player->incStructuresBuilt();
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
navigate(0.5 * Map::getSingleton()->getCellSize().x);
|
||||
|
||||
if(type == UnitType::LAND)
|
||||
alignToSurface();
|
||||
}
|
||||
}
|
||||
|
||||
void Vehicle::select(){
|
||||
if(!garrisonable)
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace battleship{
|
||||
float speed, maxTurnAngle, anglePrecision;
|
||||
vb01::Material *debugMat = nullptr;
|
||||
std::vector<vb01::Node*> debugPathPoints;
|
||||
vb01::s64 lastBuildTime = 0;
|
||||
|
||||
inline int getNextPatrolPointId(int numPoints) {return patrolPointId == numPoints - 1 ? 0 : patrolPointId + 1;}
|
||||
bool validateGarrisonOrder(Order);
|
||||
@@ -34,6 +35,7 @@ namespace battleship{
|
||||
void addPathpoint(vb01::Vector3);
|
||||
void removePathpoint(int = 0);
|
||||
void removeAllPathpoints();
|
||||
void build(Order);
|
||||
void select();
|
||||
void reinit();
|
||||
protected:
|
||||
@@ -44,7 +46,7 @@ namespace battleship{
|
||||
void navigateToTarget(float);
|
||||
void preparePathpoints(Order&, vb01::Vector3, bool = false);
|
||||
void alignToSurface();
|
||||
void attack(Order);
|
||||
virtual void attack(Order);
|
||||
void garrison(Order);
|
||||
void patrol(Order);
|
||||
virtual void initProperties();
|
||||
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
#include <node.h>
|
||||
#include <box.h>
|
||||
#include <particleEmitter.h>
|
||||
|
||||
#include "map.h"
|
||||
#include "weapon.h"
|
||||
#include "player.h"
|
||||
#include "fxManager.h"
|
||||
#include "gameObjectFactory.h"
|
||||
#include "projectile.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace gameBase;
|
||||
|
||||
Weapon::Weapon(Unit *u, sol::table unitTable, int wid) :
|
||||
unit(u),
|
||||
id(wid),
|
||||
rateOfFire(unitTable["weapons"][wid + 1]["rateOfFire"]),
|
||||
damage(unitTable["weapons"][wid + 1]["damage"].get_or(0))
|
||||
{
|
||||
sol::table weaponTable = unitTable["weapons"][wid + 1];
|
||||
maxRange = weaponTable["maxRange"];
|
||||
orderType = (Order::TYPE)weaponTable["orderType"];
|
||||
|
||||
initProjectileData(weaponTable);
|
||||
|
||||
sol::optional<sol::table> horNodeTblOpt = unitTable["weapons"][wid + 1]["horizontalNode"];
|
||||
sol::optional<sol::table> vertNodeTblOpt = unitTable["weapons"][wid + 1]["verticalNode"];
|
||||
|
||||
if(horNodeTblOpt != sol::nullopt) horNode = initNode(weaponTable, true);
|
||||
if(vertNodeTblOpt != sol::nullopt) vertNode = initNode(weaponTable, false);
|
||||
|
||||
FxManager *fxManager = FxManager::getSingleton();
|
||||
fireFx = fxManager->initFx(weaponTable["fireFx"], unit->getModel(), true);
|
||||
if(fireFx) fxManager->addFx(fireFx);
|
||||
}
|
||||
|
||||
|
||||
Node* Weapon::initNode(sol::table weaponTable, bool horizontal){
|
||||
sol::table nodeTbl = weaponTable[horizontal ? "horizontalNode" : "verticalNode"];
|
||||
maxFireAngle = nodeTbl["maxFireAngle"];
|
||||
rotSpeed = nodeTbl["rotationSpeed"];
|
||||
|
||||
string name = nodeTbl["name"];
|
||||
return unit->getModel()->findDescendant(name, true);
|
||||
}
|
||||
|
||||
void Weapon::initProjectileData(sol::table weaponTable){
|
||||
string projTableKey = "projectile";
|
||||
sol::optional<sol::table> proj = weaponTable[projTableKey];
|
||||
|
||||
if(proj != sol::nullopt){
|
||||
projId = weaponTable[projTableKey]["id"];
|
||||
sol::table projTable = generateView()["projectiles"];
|
||||
ProjectileClass pc = (ProjectileClass)projTable[projId + 1]["projectileClass"];
|
||||
|
||||
if(pc == ProjectileClass::CRUISE_MISSILE){
|
||||
minRange = 0;
|
||||
float rotAngle = projTable[projId + 1]["rotAngle"];
|
||||
float speed = projTable[projId + 1]["speed"];
|
||||
float base = PI / 2, alpha = 0;
|
||||
|
||||
while(base - alpha > .001){
|
||||
minRange += speed * sin(alpha);
|
||||
alpha += (base - alpha > rotAngle ? rotAngle : base - alpha);
|
||||
}
|
||||
|
||||
minRange *= 2;
|
||||
}
|
||||
|
||||
projPar = unit->getModel();
|
||||
sol::optional<string> parNameOpt = weaponTable[projTableKey]["parent"];
|
||||
|
||||
if(parNameOpt != sol::nullopt){
|
||||
string parName = weaponTable[projTableKey]["parent"];
|
||||
projPar = unit->getModel()->findDescendant(parName, true);
|
||||
}
|
||||
|
||||
sol::table posTable = weaponTable[projTableKey]["pos"];
|
||||
projPos = Vector3(posTable["x"], posTable["y"], posTable["z"]);
|
||||
sol::table rotTable = weaponTable[projTableKey]["rot"];
|
||||
projRot = Quaternion(rotTable["w"], rotTable["x"], rotTable["y"], rotTable["z"]);
|
||||
}
|
||||
}
|
||||
|
||||
Weapon::~Weapon(){
|
||||
FxManager *fm = FxManager::getSingleton();
|
||||
|
||||
if(fireFx) fm->removeFx(fireFx);
|
||||
}
|
||||
|
||||
Vector3 Weapon::calcOrientVec(int id){
|
||||
Vector3 orientVec;
|
||||
|
||||
switch(id){
|
||||
case 0:
|
||||
orientVec = unit->getDirVec();
|
||||
break;
|
||||
case 1:
|
||||
orientVec = unit->getLeftVec();
|
||||
break;
|
||||
case 2:
|
||||
orientVec = unit->getUpVec();
|
||||
break;
|
||||
}
|
||||
|
||||
if(horNode) orientVec = horNode->getOrientation() * orientVec;
|
||||
if(vertNode) orientVec = vertNode->getOrientation() * orientVec;
|
||||
|
||||
return orientVec;
|
||||
}
|
||||
|
||||
//TODO replace unit pos with absolute weapon pos for withinAngle
|
||||
void Weapon::update(){
|
||||
if(unit->getCondition() != Unit::Condition::ABLE) return;
|
||||
|
||||
int numOrders = unit->getNumOrders();
|
||||
int ordTp = (numOrders > 0 ? (int)unit->getOrder(0).type : -1);
|
||||
Unit *targUnit = (ordTp != -1 ? unit->getOrder(0).targets[0].unit : nullptr);
|
||||
|
||||
if(ordTp == (int)orderType){
|
||||
Vector3 targPos = (targUnit ? targUnit->getPos() : unit->getOrder(0).targets[0].pos);
|
||||
float targDist = unit->getPos().getDistanceFrom(targPos);
|
||||
|
||||
bool withinRange = (minRange <= targDist && targDist <= maxRange);
|
||||
|
||||
Vector3 dirVec = calcOrientVec(0);
|
||||
bool withinAngle = (horNode ? Vector3(dirVec.x, 0, dirVec.z).norm().getAngleBetween((targPos - unit->getPos()).norm()) <= maxFireAngle : true);
|
||||
|
||||
if((Order::TYPE)ordTp == Order::TYPE::ATTACK && withinRange && withinAngle)
|
||||
fire(unit->getOrder(0));
|
||||
}
|
||||
else
|
||||
trackTarget(unit->getPos() + unit->getDirVec());
|
||||
}
|
||||
|
||||
void Weapon::useFx(FxManager::Fx *fx, Vector3 targPos, bool fire){
|
||||
if(fx && !fire)
|
||||
FxManager::getSingleton()->addFx(fx);
|
||||
else if(!fx)
|
||||
return;
|
||||
|
||||
fx->toggleComponents(true);
|
||||
|
||||
Vector3 plCol = unit->getPlayer()->getColor();
|
||||
|
||||
for(int i = 0; i < fx->components.size(); i++){
|
||||
FxManager::Fx::Component &comp = fx->components[i];
|
||||
|
||||
if(!comp.vfx) continue;
|
||||
|
||||
if(fire && ((Node*)comp.comp)->getName() == "laser"){
|
||||
Vector3 initPos = unit->getPos(), laserDir = targPos - initPos;
|
||||
float targDist = laserDir.getLength();
|
||||
float angle = unit->getDirVec().getAngleBetween(laserDir);
|
||||
Vector3 crossProd = unit->getDirVec().cross(laserDir);
|
||||
|
||||
Node *compNode = (Node*)comp.comp;
|
||||
compNode->setOrientation(Quaternion(angle, crossProd) * compNode->getOrientation());
|
||||
|
||||
Box *box = (Box*)compNode->getMesh(0);
|
||||
Vector3 size = box->getSize();
|
||||
box->setSize(Vector3(size.x, size.y, targDist));
|
||||
box->updateVerts(box->getMeshBase());
|
||||
box->getMaterial()->setVec4Uniform("diffuseColor", Vector4(plCol.x, plCol.y, plCol.z, 1));
|
||||
|
||||
compNode->setPosition(comp.pos + .5 * targDist * Vector3::VEC_K);
|
||||
}
|
||||
else if(!fire)
|
||||
((Node*)comp.comp)->setPosition(targPos);
|
||||
}
|
||||
}
|
||||
|
||||
void Weapon::updateTargetUnit(Unit *targetUnit){
|
||||
targetUnit->takeDamage(damage);
|
||||
unit->updateGameStats(targetUnit);
|
||||
}
|
||||
|
||||
//TODO replace the 'laser' flag literal
|
||||
void Weapon::fire(Order order){
|
||||
if(!canFire()) return;
|
||||
|
||||
Unit *targetUnit = order.targets[0].unit;
|
||||
Vector3 targPos = (targetUnit ? targetUnit->getPos() : order.targets[0].pos);
|
||||
|
||||
if(fireFx) useFx(fireFx, targPos, true);
|
||||
|
||||
if(projId == -1){
|
||||
sol::table weaponTbl = generateView()["units"][unit->getId() + 1]["weapons"][id + 1];
|
||||
FxManager *fxManager = FxManager::getSingleton();
|
||||
string fxKey = "unitHitFx";
|
||||
|
||||
if(targetUnit)
|
||||
updateTargetUnit(targetUnit);
|
||||
else{
|
||||
Map *map = Map::getSingleton();
|
||||
Map::Cell::Type cellType = map->getCells()[map->getCellId(targPos)].type;
|
||||
fxKey = (cellType == Map::Cell::Type::LAND ? "landHitFx" : "waterHitFx");
|
||||
}
|
||||
|
||||
sol::optional<sol::table> hitFxOpt = weaponTbl[fxKey];
|
||||
|
||||
if(hitFxOpt != sol::nullopt && ((sol::table)weaponTbl[fxKey]).size() > 0)
|
||||
useFx(fxManager->initFx(weaponTbl[fxKey], unit->getModel(), false), targPos, false);
|
||||
}
|
||||
else{
|
||||
Quaternion r = projPar->localToGlobalOrientation(projRot);
|
||||
Vector3 p = projPar->localToGlobalPosition(projPos);
|
||||
unit->getPlayer()->addProjectile(GameObjectFactory::createProjectile(unit, projId, p, r));
|
||||
}
|
||||
|
||||
lastFireTime = getTime();
|
||||
}
|
||||
|
||||
//TODO improve to allow for vertical alignment
|
||||
void Weapon::alignNode(Vector3 targPos, Node *node, bool horizontal){
|
||||
Vector3 targDir = targPos - unit->getPos();
|
||||
Vector3 targDirHor = Vector3(targDir.x, 0, targDir.z).norm(), targDirVert;
|
||||
|
||||
Vector3 dirVec = calcOrientVec(0);
|
||||
Vector3 dirVecHor = Vector3(dirVec.x, 0, dirVec.z).norm(), dirVecVert;
|
||||
|
||||
Vector3 leftVec = calcOrientVec(1);
|
||||
bool negate = (Vector3(leftVec.x, 0, leftVec.z).norm().getAngleBetween(targDirHor) < PI / 2);
|
||||
|
||||
float angle = dirVecHor.getAngleBetween(targDirHor);
|
||||
float rotAngle = (rotSpeed < angle ? rotSpeed : angle);
|
||||
|
||||
Quaternion rot = Quaternion((negate ? 1 : -1) * rotAngle, unit->getUpVec()) * node->getOrientation();
|
||||
node->setOrientation(rot);
|
||||
}
|
||||
|
||||
void Weapon::trackTarget(Vector3 targPos){
|
||||
if(horNode) alignNode(targPos, horNode, true);
|
||||
//if(vertNode) alignNode(targPos, vertNode, false);
|
||||
}
|
||||
|
||||
CryoGun::CryoGun(Unit *u, sol::table unitTable, int wid) : Weapon(u, unitTable, wid){}
|
||||
|
||||
void CryoGun::updateTargetUnit(Unit *targetUnit){
|
||||
if(canFreeze()){
|
||||
targetUnit->setFreezeStatus(targetUnit->getFreezeStatus() + 1);
|
||||
lastFreezeTime = getTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
#ifndef WEAPON_H
|
||||
#define WEAPON_H
|
||||
|
||||
#include <vector>
|
||||
#include <util.h>
|
||||
#include <quaternion.h>
|
||||
|
||||
#include <solUtil.h>
|
||||
|
||||
#include "unit.h"
|
||||
|
||||
namespace vb01{
|
||||
class Node;
|
||||
}
|
||||
|
||||
namespace battleship{
|
||||
class FxManager;
|
||||
|
||||
class Weapon{
|
||||
public:
|
||||
enum class Type{FREEZER = 1};
|
||||
|
||||
Weapon(Unit*, sol::table, int);
|
||||
~Weapon();
|
||||
virtual void update();
|
||||
virtual void fire(Order);
|
||||
void trackTarget(vb01::Vector3);
|
||||
inline int getProjectileId(){return projId;}
|
||||
inline int getRateOfFire(){return rateOfFire;}
|
||||
inline int getDamage(){return damage;}
|
||||
inline int getMinRange(){return minRange;}
|
||||
inline int getMaxRange(){return maxRange;}
|
||||
inline Unit* getUnit(){return unit;}
|
||||
inline Order::TYPE getOrderType(){return orderType;}
|
||||
private:
|
||||
Unit *unit = nullptr;
|
||||
Order::TYPE orderType;
|
||||
int id, projId = -1, damage = 0;
|
||||
float minRange = 0, maxRange, rotSpeed, maxFireAngle;
|
||||
vb01::s64 lastFireTime = 0;
|
||||
FxManager::Fx *fireFx = nullptr;
|
||||
vb01::Quaternion projRot;
|
||||
vb01::Vector3 projPos;
|
||||
float horConstraint = 1.57, vertConstraint = 1.57;
|
||||
vb01::Node *horNode = nullptr, *vertNode = nullptr, *projPar = nullptr;
|
||||
static std::string LASER_FLAG;
|
||||
|
||||
vb01::Vector3 calcOrientVec(int);
|
||||
void alignNode(vb01::Vector3, vb01::Node*, bool);
|
||||
void initProjectileData(sol::table);
|
||||
vb01::Node* initNode(sol::table, bool);
|
||||
void useFx(FxManager::Fx*, vb01::Vector3, bool);
|
||||
inline bool canFire(){return vb01::getTime() - lastFireTime > rateOfFire;}
|
||||
protected:
|
||||
int rateOfFire;
|
||||
|
||||
virtual void updateTargetUnit(Unit*);
|
||||
};
|
||||
|
||||
class CryoGun : public Weapon{
|
||||
public:
|
||||
CryoGun(Unit*, sol::table, int);
|
||||
private:
|
||||
vb01::s64 lastFreezeTime = 0;
|
||||
|
||||
void updateTargetUnit(Unit*);
|
||||
inline bool canFreeze(){return vb01::getTime() - lastFreezeTime > rateOfFire;}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user