2
0

PolycodeLuaWrappers.h 630 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727
  1. #pragma once
  2. extern "C" {
  3. #include <stdio.h>
  4. #include "lua.h"
  5. #include "lualib.h"
  6. #include "lauxlib.h"
  7. }
  8. #include "polycode/core/PolyBasicFileProvider.h"
  9. #include "polycode/core/PolyBezierCurve.h"
  10. #include "polycode/core/PolyBone.h"
  11. #include "polycode/core/PolyCamera.h"
  12. #include "polycode/core/PolyColor.h"
  13. #include "polycode/core/PolyConfig.h"
  14. #include "polycode/core/PolyCore.h"
  15. #include "polycode/core/PolyCoreFileProvider.h"
  16. #include "polycode/core/PolyCoreInput.h"
  17. #include "polycode/core/PolyCoreServices.h"
  18. #include "polycode/core/PolyCubemap.h"
  19. #include "polycode/core/PolyData.h"
  20. #include "polycode/core/PolyEntity.h"
  21. #include "polycode/core/PolyEvent.h"
  22. #include "polycode/core/PolyEventDispatcher.h"
  23. #include "polycode/core/PolyEventHandler.h"
  24. #include "polycode/core/PolyFont.h"
  25. #include "polycode/core/PolyGlobals.h"
  26. #include "polycode/core/PolyGPUDrawBuffer.h"
  27. #include "polycode/core/PolyImage.h"
  28. #include "polycode/core/PolyInputEvent.h"
  29. #include "polycode/core/PolyInputKeys.h"
  30. #include "polycode/core/PolyLabel.h"
  31. #include "polycode/core/PolyMaterial.h"
  32. #include "polycode/core/PolyMatrix4.h"
  33. #include "polycode/core/PolyMesh.h"
  34. #include "polycode/core/PolyObject.h"
  35. #include "polycode/core/PolyOpenGLGraphicsInterface.h"
  36. #include "polycode/core/PolyPAAudioInterface.h"
  37. #include "polycode/core/PolyParticleEmitter.h"
  38. #include "polycode/core/PolyPerlin.h"
  39. #include "polycode/core/PolyPhysFSFileProvider.h"
  40. #include "polycode/core/PolyQuaternion.h"
  41. #include "polycode/core/PolyQuaternionCurve.h"
  42. #include "polycode/core/PolyRay.h"
  43. #include "polycode/core/PolyRectangle.h"
  44. #include "polycode/core/PolyRenderDataArray.h"
  45. #include "polycode/core/PolyRenderer.h"
  46. #include "polycode/core/PolyResource.h"
  47. #include "polycode/core/PolyResourceManager.h"
  48. #include "polycode/core/PolyScene.h"
  49. #include "polycode/core/PolySceneEntityInstance.h"
  50. #include "polycode/core/PolySceneLabel.h"
  51. #include "polycode/core/PolySceneLight.h"
  52. #include "polycode/core/PolySceneLine.h"
  53. #include "polycode/core/PolySceneManager.h"
  54. #include "polycode/core/PolySceneMesh.h"
  55. #include "polycode/core/PolyScenePrimitive.h"
  56. #include "polycode/core/PolySceneRenderTexture.h"
  57. #include "polycode/core/PolySceneSound.h"
  58. #include "polycode/core/PolySceneSprite.h"
  59. #include "polycode/core/PolyScript.h"
  60. #include "polycode/core/PolyShader.h"
  61. #include "polycode/core/PolySkeleton.h"
  62. #include "polycode/core/PolySound.h"
  63. #include "polycode/core/PolySoundManager.h"
  64. #include "polycode/core/PolyString.h"
  65. #include "polycode/core/PolyTexture.h"
  66. #include "polycode/core/PolyTimer.h"
  67. #include "polycode/core/PolyTimerManager.h"
  68. #include "polycode/core/PolyVector2.h"
  69. #include "polycode/core/PolyVector3.h"
  70. #include "polycode/core/PolyVector4.h"
  71. using namespace std;
  72. namespace Polycode {
  73. class LuaEventHandler : public EventHandler {
  74. public:
  75. LuaEventHandler() : EventHandler() {}
  76. void handleEvent(Event *e) {
  77. lua_getglobal(L, "__customError");
  78. int errH = lua_gettop(L);
  79. lua_getglobal(L, "__handleEvent");
  80. lua_rawgeti( L, LUA_REGISTRYINDEX, wrapperIndex );
  81. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  82. *userdataPtr = (PolyBase*)e;
  83. lua_pcall(L, 2, 0, errH);
  84. lua_settop(L, 0);
  85. }
  86. int wrapperIndex;
  87. lua_State *L;
  88. };
  89. static int Polycode_BezierCurve_get_insertPoint(lua_State *L) {
  90. luaL_checktype(L, 1, LUA_TUSERDATA);
  91. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  92. if(!inst->insertPoint) {
  93. lua_pushnil(L);
  94. } else {
  95. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  96. *userdataPtr = (PolyBase*)inst->insertPoint;
  97. }
  98. return 1;
  99. }
  100. static int Polycode_BezierCurve_get_evaluationAccuracy(lua_State *L) {
  101. luaL_checktype(L, 1, LUA_TUSERDATA);
  102. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  103. lua_pushnumber(L, inst->evaluationAccuracy);
  104. return 1;
  105. }
  106. static int Polycode_BezierCurve_set_insertPoint(lua_State *L) {
  107. luaL_checktype(L, 1, LUA_TUSERDATA);
  108. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  109. luaL_checktype(L, 2, LUA_TUSERDATA);
  110. BezierPoint* *argInst = (BezierPoint**) *((PolyBase**)lua_touserdata(L, 2));
  111. inst->insertPoint = *argInst;
  112. return 0;
  113. }
  114. static int Polycode_BezierCurve_set_evaluationAccuracy(lua_State *L) {
  115. luaL_checktype(L, 1, LUA_TUSERDATA);
  116. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  117. Number param = lua_tonumber(L, 2);
  118. inst->evaluationAccuracy = param;
  119. return 0;
  120. }
  121. static int Polycode_BezierCurve(lua_State *L) {
  122. BezierCurve *inst = new BezierCurve();
  123. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  124. *userdataPtr = (PolyBase*)inst;
  125. luaL_getmetatable(L, "Polycode.BezierCurve");
  126. lua_setmetatable(L, -2);
  127. return 1;
  128. }
  129. static int Polycode_BezierCurve_getControlPoint(lua_State *L) {
  130. luaL_checktype(L, 1, LUA_TUSERDATA);
  131. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  132. luaL_checktype(L, 2, LUA_TNUMBER);
  133. int index = lua_tointeger(L, 2);
  134. PolyBase *ptrRetVal = (PolyBase*)inst->getControlPoint(index);
  135. if(ptrRetVal == NULL) {
  136. lua_pushnil(L);
  137. } else {
  138. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  139. *userdataPtr = ptrRetVal;
  140. }
  141. return 1;
  142. }
  143. static int Polycode_BezierCurve_getNumControlPoints(lua_State *L) {
  144. luaL_checktype(L, 1, LUA_TUSERDATA);
  145. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  146. lua_pushinteger(L, inst->getNumControlPoints());
  147. return 1;
  148. }
  149. static int Polycode_BezierCurve_addControlPoint(lua_State *L) {
  150. luaL_checktype(L, 1, LUA_TUSERDATA);
  151. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  152. luaL_checktype(L, 2, LUA_TNUMBER);
  153. Number p1x = lua_tonumber(L, 2);
  154. luaL_checktype(L, 3, LUA_TNUMBER);
  155. Number p1y = lua_tonumber(L, 3);
  156. luaL_checktype(L, 4, LUA_TNUMBER);
  157. Number p1z = lua_tonumber(L, 4);
  158. luaL_checktype(L, 5, LUA_TNUMBER);
  159. Number p2x = lua_tonumber(L, 5);
  160. luaL_checktype(L, 6, LUA_TNUMBER);
  161. Number p2y = lua_tonumber(L, 6);
  162. luaL_checktype(L, 7, LUA_TNUMBER);
  163. Number p2z = lua_tonumber(L, 7);
  164. luaL_checktype(L, 8, LUA_TNUMBER);
  165. Number p3x = lua_tonumber(L, 8);
  166. luaL_checktype(L, 9, LUA_TNUMBER);
  167. Number p3y = lua_tonumber(L, 9);
  168. luaL_checktype(L, 10, LUA_TNUMBER);
  169. Number p3z = lua_tonumber(L, 10);
  170. inst->addControlPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  171. return 0;
  172. }
  173. static int Polycode_BezierCurve_addControlPoint3dWithHandles(lua_State *L) {
  174. luaL_checktype(L, 1, LUA_TUSERDATA);
  175. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  176. luaL_checktype(L, 2, LUA_TNUMBER);
  177. Number p1x = lua_tonumber(L, 2);
  178. luaL_checktype(L, 3, LUA_TNUMBER);
  179. Number p1y = lua_tonumber(L, 3);
  180. luaL_checktype(L, 4, LUA_TNUMBER);
  181. Number p1z = lua_tonumber(L, 4);
  182. luaL_checktype(L, 5, LUA_TNUMBER);
  183. Number p2x = lua_tonumber(L, 5);
  184. luaL_checktype(L, 6, LUA_TNUMBER);
  185. Number p2y = lua_tonumber(L, 6);
  186. luaL_checktype(L, 7, LUA_TNUMBER);
  187. Number p2z = lua_tonumber(L, 7);
  188. luaL_checktype(L, 8, LUA_TNUMBER);
  189. Number p3x = lua_tonumber(L, 8);
  190. luaL_checktype(L, 9, LUA_TNUMBER);
  191. Number p3y = lua_tonumber(L, 9);
  192. luaL_checktype(L, 10, LUA_TNUMBER);
  193. Number p3z = lua_tonumber(L, 10);
  194. inst->addControlPoint3dWithHandles(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  195. return 0;
  196. }
  197. static int Polycode_BezierCurve_addControlPoint3d(lua_State *L) {
  198. luaL_checktype(L, 1, LUA_TUSERDATA);
  199. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  200. luaL_checktype(L, 2, LUA_TNUMBER);
  201. Number x = lua_tonumber(L, 2);
  202. luaL_checktype(L, 3, LUA_TNUMBER);
  203. Number y = lua_tonumber(L, 3);
  204. luaL_checktype(L, 4, LUA_TNUMBER);
  205. Number z = lua_tonumber(L, 4);
  206. inst->addControlPoint3d(x, y, z);
  207. return 0;
  208. }
  209. static int Polycode_BezierCurve_addControlPoint2dWithHandles(lua_State *L) {
  210. luaL_checktype(L, 1, LUA_TUSERDATA);
  211. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  212. luaL_checktype(L, 2, LUA_TNUMBER);
  213. Number p1x = lua_tonumber(L, 2);
  214. luaL_checktype(L, 3, LUA_TNUMBER);
  215. Number p1y = lua_tonumber(L, 3);
  216. luaL_checktype(L, 4, LUA_TNUMBER);
  217. Number p2x = lua_tonumber(L, 4);
  218. luaL_checktype(L, 5, LUA_TNUMBER);
  219. Number p2y = lua_tonumber(L, 5);
  220. luaL_checktype(L, 6, LUA_TNUMBER);
  221. Number p3x = lua_tonumber(L, 6);
  222. luaL_checktype(L, 7, LUA_TNUMBER);
  223. Number p3y = lua_tonumber(L, 7);
  224. inst->addControlPoint2dWithHandles(p1x, p1y, p2x, p2y, p3x, p3y);
  225. return 0;
  226. }
  227. static int Polycode_BezierCurve_addControlPoint2d(lua_State *L) {
  228. luaL_checktype(L, 1, LUA_TUSERDATA);
  229. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  230. luaL_checktype(L, 2, LUA_TNUMBER);
  231. Number x = lua_tonumber(L, 2);
  232. luaL_checktype(L, 3, LUA_TNUMBER);
  233. Number y = lua_tonumber(L, 3);
  234. inst->addControlPoint2d(x, y);
  235. return 0;
  236. }
  237. static int Polycode_BezierCurve_getPointAt(lua_State *L) {
  238. luaL_checktype(L, 1, LUA_TUSERDATA);
  239. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  240. luaL_checktype(L, 2, LUA_TNUMBER);
  241. Number a = lua_tonumber(L, 2);
  242. Vector3 *retInst = new Vector3();
  243. *retInst = inst->getPointAt(a);
  244. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  245. luaL_getmetatable(L, "Polycode.Vector3");
  246. lua_setmetatable(L, -2);
  247. *userdataPtr = (PolyBase*)retInst;
  248. return 1;
  249. }
  250. static int Polycode_BezierCurve_getPointBetween(lua_State *L) {
  251. luaL_checktype(L, 1, LUA_TUSERDATA);
  252. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  253. luaL_checktype(L, 2, LUA_TNUMBER);
  254. Number a = lua_tonumber(L, 2);
  255. luaL_checktype(L, 3, LUA_TUSERDATA);
  256. BezierPoint* bp1 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 3));
  257. luaL_checktype(L, 4, LUA_TUSERDATA);
  258. BezierPoint* bp2 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 4));
  259. Vector3 *retInst = new Vector3();
  260. *retInst = inst->getPointBetween(a, bp1, bp2);
  261. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  262. luaL_getmetatable(L, "Polycode.Vector3");
  263. lua_setmetatable(L, -2);
  264. *userdataPtr = (PolyBase*)retInst;
  265. return 1;
  266. }
  267. static int Polycode_BezierCurve_clearControlPoints(lua_State *L) {
  268. luaL_checktype(L, 1, LUA_TUSERDATA);
  269. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  270. inst->clearControlPoints();
  271. return 0;
  272. }
  273. static int Polycode_BezierCurve_getYValueAtX(lua_State *L) {
  274. luaL_checktype(L, 1, LUA_TUSERDATA);
  275. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  276. luaL_checktype(L, 2, LUA_TNUMBER);
  277. Number x = lua_tonumber(L, 2);
  278. lua_pushnumber(L, inst->getYValueAtX(x));
  279. return 1;
  280. }
  281. static int Polycode_BezierCurve_getTValueAtX(lua_State *L) {
  282. luaL_checktype(L, 1, LUA_TUSERDATA);
  283. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  284. luaL_checktype(L, 2, LUA_TNUMBER);
  285. Number x = lua_tonumber(L, 2);
  286. lua_pushnumber(L, inst->getTValueAtX(x));
  287. return 1;
  288. }
  289. static int Polycode_BezierCurve_removePoint(lua_State *L) {
  290. luaL_checktype(L, 1, LUA_TUSERDATA);
  291. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  292. luaL_checktype(L, 2, LUA_TUSERDATA);
  293. BezierPoint* point = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 2));
  294. inst->removePoint(point);
  295. return 0;
  296. }
  297. static int Polycode_BezierCurve_setHeightCacheResolution(lua_State *L) {
  298. luaL_checktype(L, 1, LUA_TUSERDATA);
  299. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  300. luaL_checktype(L, 2, LUA_TNUMBER);
  301. Number resolution = lua_tonumber(L, 2);
  302. inst->setHeightCacheResolution(resolution);
  303. return 0;
  304. }
  305. static int Polycode_BezierCurve_rebuildHeightCache(lua_State *L) {
  306. luaL_checktype(L, 1, LUA_TUSERDATA);
  307. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  308. inst->rebuildHeightCache();
  309. return 0;
  310. }
  311. static int Polycode_BezierCurve_recalculateDistances(lua_State *L) {
  312. luaL_checktype(L, 1, LUA_TUSERDATA);
  313. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  314. inst->recalculateDistances();
  315. return 0;
  316. }
  317. static int Polycode_delete_BezierCurve(lua_State *L) {
  318. luaL_checktype(L, 1, LUA_TUSERDATA);
  319. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  320. delete ((BezierCurve*) *inst);
  321. *inst = NULL;
  322. return 0;
  323. }
  324. static int Polycode_BezierPoint_get_p1(lua_State *L) {
  325. luaL_checktype(L, 1, LUA_TUSERDATA);
  326. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  327. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  328. *userdataPtr = (PolyBase*)&inst->p1;
  329. return 1;
  330. }
  331. static int Polycode_BezierPoint_get_p2(lua_State *L) {
  332. luaL_checktype(L, 1, LUA_TUSERDATA);
  333. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  334. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  335. *userdataPtr = (PolyBase*)&inst->p2;
  336. return 1;
  337. }
  338. static int Polycode_BezierPoint_get_p3(lua_State *L) {
  339. luaL_checktype(L, 1, LUA_TUSERDATA);
  340. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  341. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  342. *userdataPtr = (PolyBase*)&inst->p3;
  343. return 1;
  344. }
  345. static int Polycode_BezierPoint_set_p1(lua_State *L) {
  346. luaL_checktype(L, 1, LUA_TUSERDATA);
  347. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  348. luaL_checktype(L, 2, LUA_TUSERDATA);
  349. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  350. inst->p1 = *argInst;
  351. return 0;
  352. }
  353. static int Polycode_BezierPoint_set_p2(lua_State *L) {
  354. luaL_checktype(L, 1, LUA_TUSERDATA);
  355. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  356. luaL_checktype(L, 2, LUA_TUSERDATA);
  357. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  358. inst->p2 = *argInst;
  359. return 0;
  360. }
  361. static int Polycode_BezierPoint_set_p3(lua_State *L) {
  362. luaL_checktype(L, 1, LUA_TUSERDATA);
  363. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  364. luaL_checktype(L, 2, LUA_TUSERDATA);
  365. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  366. inst->p3 = *argInst;
  367. return 0;
  368. }
  369. static int Polycode_BezierPoint(lua_State *L) {
  370. luaL_checktype(L, 1, LUA_TNUMBER);
  371. Number p1x = lua_tonumber(L, 1);
  372. luaL_checktype(L, 2, LUA_TNUMBER);
  373. Number p1y = lua_tonumber(L, 2);
  374. luaL_checktype(L, 3, LUA_TNUMBER);
  375. Number p1z = lua_tonumber(L, 3);
  376. luaL_checktype(L, 4, LUA_TNUMBER);
  377. Number p2x = lua_tonumber(L, 4);
  378. luaL_checktype(L, 5, LUA_TNUMBER);
  379. Number p2y = lua_tonumber(L, 5);
  380. luaL_checktype(L, 6, LUA_TNUMBER);
  381. Number p2z = lua_tonumber(L, 6);
  382. luaL_checktype(L, 7, LUA_TNUMBER);
  383. Number p3x = lua_tonumber(L, 7);
  384. luaL_checktype(L, 8, LUA_TNUMBER);
  385. Number p3y = lua_tonumber(L, 8);
  386. luaL_checktype(L, 9, LUA_TNUMBER);
  387. Number p3z = lua_tonumber(L, 9);
  388. BezierPoint *inst = new BezierPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  389. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  390. *userdataPtr = (PolyBase*)inst;
  391. luaL_getmetatable(L, "Polycode.BezierPoint");
  392. lua_setmetatable(L, -2);
  393. return 1;
  394. }
  395. static int Polycode_delete_BezierPoint(lua_State *L) {
  396. luaL_checktype(L, 1, LUA_TUSERDATA);
  397. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  398. delete ((BezierPoint*) *inst);
  399. *inst = NULL;
  400. return 0;
  401. }
  402. static int Polycode_Bone_get_parentBoneId(lua_State *L) {
  403. luaL_checktype(L, 1, LUA_TUSERDATA);
  404. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  405. lua_pushinteger(L, inst->parentBoneId);
  406. return 1;
  407. }
  408. static int Polycode_Bone_get_boneMatrix(lua_State *L) {
  409. luaL_checktype(L, 1, LUA_TUSERDATA);
  410. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  411. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  412. *userdataPtr = (PolyBase*)&inst->boneMatrix;
  413. return 1;
  414. }
  415. static int Polycode_Bone_get_restMatrix(lua_State *L) {
  416. luaL_checktype(L, 1, LUA_TUSERDATA);
  417. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  418. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  419. *userdataPtr = (PolyBase*)&inst->restMatrix;
  420. return 1;
  421. }
  422. static int Polycode_Bone_get_baseMatrix(lua_State *L) {
  423. luaL_checktype(L, 1, LUA_TUSERDATA);
  424. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  425. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  426. *userdataPtr = (PolyBase*)&inst->baseMatrix;
  427. return 1;
  428. }
  429. static int Polycode_Bone_get_finalMatrix(lua_State *L) {
  430. luaL_checktype(L, 1, LUA_TUSERDATA);
  431. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  432. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  433. *userdataPtr = (PolyBase*)&inst->finalMatrix;
  434. return 1;
  435. }
  436. static int Polycode_Bone_get_baseRotation(lua_State *L) {
  437. luaL_checktype(L, 1, LUA_TUSERDATA);
  438. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  439. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  440. *userdataPtr = (PolyBase*)&inst->baseRotation;
  441. return 1;
  442. }
  443. static int Polycode_Bone_get_baseScale(lua_State *L) {
  444. luaL_checktype(L, 1, LUA_TUSERDATA);
  445. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  446. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  447. *userdataPtr = (PolyBase*)&inst->baseScale;
  448. return 1;
  449. }
  450. static int Polycode_Bone_get_basePosition(lua_State *L) {
  451. luaL_checktype(L, 1, LUA_TUSERDATA);
  452. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  453. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  454. *userdataPtr = (PolyBase*)&inst->basePosition;
  455. return 1;
  456. }
  457. static int Polycode_Bone_get_disableAnimation(lua_State *L) {
  458. luaL_checktype(L, 1, LUA_TUSERDATA);
  459. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  460. lua_pushboolean(L, inst->disableAnimation);
  461. return 1;
  462. }
  463. static int Polycode_Bone_set_parentBoneId(lua_State *L) {
  464. luaL_checktype(L, 1, LUA_TUSERDATA);
  465. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  466. int param = lua_tointeger(L, 2);
  467. inst->parentBoneId = param;
  468. return 0;
  469. }
  470. static int Polycode_Bone_set_boneMatrix(lua_State *L) {
  471. luaL_checktype(L, 1, LUA_TUSERDATA);
  472. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  473. luaL_checktype(L, 2, LUA_TUSERDATA);
  474. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  475. inst->boneMatrix = *argInst;
  476. return 0;
  477. }
  478. static int Polycode_Bone_set_restMatrix(lua_State *L) {
  479. luaL_checktype(L, 1, LUA_TUSERDATA);
  480. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  481. luaL_checktype(L, 2, LUA_TUSERDATA);
  482. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  483. inst->restMatrix = *argInst;
  484. return 0;
  485. }
  486. static int Polycode_Bone_set_baseMatrix(lua_State *L) {
  487. luaL_checktype(L, 1, LUA_TUSERDATA);
  488. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  489. luaL_checktype(L, 2, LUA_TUSERDATA);
  490. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  491. inst->baseMatrix = *argInst;
  492. return 0;
  493. }
  494. static int Polycode_Bone_set_finalMatrix(lua_State *L) {
  495. luaL_checktype(L, 1, LUA_TUSERDATA);
  496. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  497. luaL_checktype(L, 2, LUA_TUSERDATA);
  498. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  499. inst->finalMatrix = *argInst;
  500. return 0;
  501. }
  502. static int Polycode_Bone_set_baseRotation(lua_State *L) {
  503. luaL_checktype(L, 1, LUA_TUSERDATA);
  504. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  505. luaL_checktype(L, 2, LUA_TUSERDATA);
  506. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  507. inst->baseRotation = *argInst;
  508. return 0;
  509. }
  510. static int Polycode_Bone_set_baseScale(lua_State *L) {
  511. luaL_checktype(L, 1, LUA_TUSERDATA);
  512. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  513. luaL_checktype(L, 2, LUA_TUSERDATA);
  514. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  515. inst->baseScale = *argInst;
  516. return 0;
  517. }
  518. static int Polycode_Bone_set_basePosition(lua_State *L) {
  519. luaL_checktype(L, 1, LUA_TUSERDATA);
  520. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  521. luaL_checktype(L, 2, LUA_TUSERDATA);
  522. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  523. inst->basePosition = *argInst;
  524. return 0;
  525. }
  526. static int Polycode_Bone_set_disableAnimation(lua_State *L) {
  527. luaL_checktype(L, 1, LUA_TUSERDATA);
  528. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  529. bool param = lua_toboolean(L, 2) != 0;
  530. inst->disableAnimation = param;
  531. return 0;
  532. }
  533. static int Polycode_Bone(lua_State *L) {
  534. luaL_checktype(L, 1, LUA_TSTRING);
  535. String boneName = String(lua_tostring(L, 1));
  536. Bone *inst = new Bone(boneName);
  537. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  538. *userdataPtr = (PolyBase*)inst;
  539. luaL_getmetatable(L, "Polycode.Bone");
  540. lua_setmetatable(L, -2);
  541. return 1;
  542. }
  543. static int Polycode_Bone_getName(lua_State *L) {
  544. luaL_checktype(L, 1, LUA_TUSERDATA);
  545. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  546. lua_pushstring(L, inst->getName().c_str());
  547. return 1;
  548. }
  549. static int Polycode_Bone_setParentBone(lua_State *L) {
  550. luaL_checktype(L, 1, LUA_TUSERDATA);
  551. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  552. luaL_checktype(L, 2, LUA_TUSERDATA);
  553. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  554. inst->setParentBone(bone);
  555. return 0;
  556. }
  557. static int Polycode_Bone_addChildBone(lua_State *L) {
  558. luaL_checktype(L, 1, LUA_TUSERDATA);
  559. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  560. luaL_checktype(L, 2, LUA_TUSERDATA);
  561. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  562. inst->addChildBone(bone);
  563. return 0;
  564. }
  565. static int Polycode_Bone_getParentBone(lua_State *L) {
  566. luaL_checktype(L, 1, LUA_TUSERDATA);
  567. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  568. PolyBase *ptrRetVal = (PolyBase*)inst->getParentBone();
  569. if(ptrRetVal == NULL) {
  570. lua_pushnil(L);
  571. } else {
  572. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  573. *userdataPtr = ptrRetVal;
  574. }
  575. return 1;
  576. }
  577. static int Polycode_Bone_getNumChildBones(lua_State *L) {
  578. luaL_checktype(L, 1, LUA_TUSERDATA);
  579. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  580. lua_pushinteger(L, inst->getNumChildBones());
  581. return 1;
  582. }
  583. static int Polycode_Bone_getChildBone(lua_State *L) {
  584. luaL_checktype(L, 1, LUA_TUSERDATA);
  585. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  586. luaL_checktype(L, 2, LUA_TNUMBER);
  587. int index = lua_tointeger(L, 2);
  588. PolyBase *ptrRetVal = (PolyBase*)inst->getChildBone(index);
  589. if(ptrRetVal == NULL) {
  590. lua_pushnil(L);
  591. } else {
  592. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  593. *userdataPtr = ptrRetVal;
  594. }
  595. return 1;
  596. }
  597. static int Polycode_Bone_getBoneMatrix(lua_State *L) {
  598. luaL_checktype(L, 1, LUA_TUSERDATA);
  599. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  600. Matrix4 *retInst = new Matrix4();
  601. *retInst = inst->getBoneMatrix();
  602. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  603. luaL_getmetatable(L, "Polycode.Matrix4");
  604. lua_setmetatable(L, -2);
  605. *userdataPtr = (PolyBase*)retInst;
  606. return 1;
  607. }
  608. static int Polycode_Bone_setBoneMatrix(lua_State *L) {
  609. luaL_checktype(L, 1, LUA_TUSERDATA);
  610. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  611. luaL_checktype(L, 2, LUA_TUSERDATA);
  612. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  613. inst->setBoneMatrix(matrix);
  614. return 0;
  615. }
  616. static int Polycode_Bone_getRestMatrix(lua_State *L) {
  617. luaL_checktype(L, 1, LUA_TUSERDATA);
  618. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  619. Matrix4 *retInst = new Matrix4();
  620. *retInst = inst->getRestMatrix();
  621. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  622. luaL_getmetatable(L, "Polycode.Matrix4");
  623. lua_setmetatable(L, -2);
  624. *userdataPtr = (PolyBase*)retInst;
  625. return 1;
  626. }
  627. static int Polycode_Bone_getFullRestMatrix(lua_State *L) {
  628. luaL_checktype(L, 1, LUA_TUSERDATA);
  629. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  630. Matrix4 *retInst = new Matrix4();
  631. *retInst = inst->getFullRestMatrix();
  632. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  633. luaL_getmetatable(L, "Polycode.Matrix4");
  634. lua_setmetatable(L, -2);
  635. *userdataPtr = (PolyBase*)retInst;
  636. return 1;
  637. }
  638. static int Polycode_Bone_getParentRestMatrix(lua_State *L) {
  639. luaL_checktype(L, 1, LUA_TUSERDATA);
  640. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  641. Matrix4 *retInst = new Matrix4();
  642. *retInst = inst->getParentRestMatrix();
  643. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  644. luaL_getmetatable(L, "Polycode.Matrix4");
  645. lua_setmetatable(L, -2);
  646. *userdataPtr = (PolyBase*)retInst;
  647. return 1;
  648. }
  649. static int Polycode_Bone_getFinalMatrix(lua_State *L) {
  650. luaL_checktype(L, 1, LUA_TUSERDATA);
  651. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  652. Matrix4 *retInst = new Matrix4();
  653. *retInst = inst->getFinalMatrix();
  654. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  655. luaL_getmetatable(L, "Polycode.Matrix4");
  656. lua_setmetatable(L, -2);
  657. *userdataPtr = (PolyBase*)retInst;
  658. return 1;
  659. }
  660. static int Polycode_Bone_setRestMatrix(lua_State *L) {
  661. luaL_checktype(L, 1, LUA_TUSERDATA);
  662. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  663. luaL_checktype(L, 2, LUA_TUSERDATA);
  664. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  665. inst->setRestMatrix(matrix);
  666. return 0;
  667. }
  668. static int Polycode_Bone_setBaseMatrix(lua_State *L) {
  669. luaL_checktype(L, 1, LUA_TUSERDATA);
  670. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  671. luaL_checktype(L, 2, LUA_TUSERDATA);
  672. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  673. inst->setBaseMatrix(matrix);
  674. return 0;
  675. }
  676. static int Polycode_Bone_getBaseMatrix(lua_State *L) {
  677. luaL_checktype(L, 1, LUA_TUSERDATA);
  678. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  679. Matrix4 *retInst = new Matrix4();
  680. *retInst = inst->getBaseMatrix();
  681. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  682. luaL_getmetatable(L, "Polycode.Matrix4");
  683. lua_setmetatable(L, -2);
  684. *userdataPtr = (PolyBase*)retInst;
  685. return 1;
  686. }
  687. static int Polycode_Bone_getFullBaseMatrix(lua_State *L) {
  688. luaL_checktype(L, 1, LUA_TUSERDATA);
  689. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  690. Matrix4 *retInst = new Matrix4();
  691. *retInst = inst->getFullBaseMatrix();
  692. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  693. luaL_getmetatable(L, "Polycode.Matrix4");
  694. lua_setmetatable(L, -2);
  695. *userdataPtr = (PolyBase*)retInst;
  696. return 1;
  697. }
  698. static int Polycode_Bone_rebuildFinalMatrix(lua_State *L) {
  699. luaL_checktype(L, 1, LUA_TUSERDATA);
  700. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  701. inst->rebuildFinalMatrix();
  702. return 0;
  703. }
  704. static int Polycode_Bone_buildFinalMatrix(lua_State *L) {
  705. luaL_checktype(L, 1, LUA_TUSERDATA);
  706. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  707. Matrix4 *retInst = new Matrix4();
  708. *retInst = inst->buildFinalMatrix();
  709. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  710. luaL_getmetatable(L, "Polycode.Matrix4");
  711. lua_setmetatable(L, -2);
  712. *userdataPtr = (PolyBase*)retInst;
  713. return 1;
  714. }
  715. static int Polycode_Bone_intializeBone(lua_State *L) {
  716. luaL_checktype(L, 1, LUA_TUSERDATA);
  717. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  718. luaL_checktype(L, 2, LUA_TUSERDATA);
  719. Vector3 basePosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  720. luaL_checktype(L, 3, LUA_TUSERDATA);
  721. Vector3 baseScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  722. luaL_checktype(L, 4, LUA_TUSERDATA);
  723. Quaternion baseRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  724. luaL_checktype(L, 5, LUA_TUSERDATA);
  725. Vector3 restPosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 5));
  726. luaL_checktype(L, 6, LUA_TUSERDATA);
  727. Vector3 restScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 6));
  728. luaL_checktype(L, 7, LUA_TUSERDATA);
  729. Quaternion restRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 7));
  730. inst->intializeBone(basePosition, baseScale, baseRotation, restPosition, restScale, restRotation);
  731. return 0;
  732. }
  733. static int Polycode_delete_Bone(lua_State *L) {
  734. luaL_checktype(L, 1, LUA_TUSERDATA);
  735. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  736. delete ((Bone*) *inst);
  737. *inst = NULL;
  738. return 0;
  739. }
  740. static int Polycode_Camera_get_frustumCulling(lua_State *L) {
  741. luaL_checktype(L, 1, LUA_TUSERDATA);
  742. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  743. lua_pushboolean(L, inst->frustumCulling);
  744. return 1;
  745. }
  746. static int Polycode_Camera_get_topLeftOrtho(lua_State *L) {
  747. luaL_checktype(L, 1, LUA_TUSERDATA);
  748. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  749. lua_pushboolean(L, inst->topLeftOrtho);
  750. return 1;
  751. }
  752. static int Polycode_Camera_get_cameraShift(lua_State *L) {
  753. luaL_checktype(L, 1, LUA_TUSERDATA);
  754. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  755. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  756. *userdataPtr = (PolyBase*)&inst->cameraShift;
  757. return 1;
  758. }
  759. static int Polycode_Camera_set_frustumCulling(lua_State *L) {
  760. luaL_checktype(L, 1, LUA_TUSERDATA);
  761. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  762. bool param = lua_toboolean(L, 2) != 0;
  763. inst->frustumCulling = param;
  764. return 0;
  765. }
  766. static int Polycode_Camera_set_topLeftOrtho(lua_State *L) {
  767. luaL_checktype(L, 1, LUA_TUSERDATA);
  768. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  769. bool param = lua_toboolean(L, 2) != 0;
  770. inst->topLeftOrtho = param;
  771. return 0;
  772. }
  773. static int Polycode_Camera_set_cameraShift(lua_State *L) {
  774. luaL_checktype(L, 1, LUA_TUSERDATA);
  775. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  776. luaL_checktype(L, 2, LUA_TUSERDATA);
  777. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  778. inst->cameraShift = *argInst;
  779. return 0;
  780. }
  781. static int Polycode_Camera(lua_State *L) {
  782. luaL_checktype(L, 1, LUA_TUSERDATA);
  783. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  784. Camera *inst = new Camera(parentScene);
  785. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  786. *userdataPtr = (PolyBase*)inst;
  787. luaL_getmetatable(L, "Polycode.Camera");
  788. lua_setmetatable(L, -2);
  789. return 1;
  790. }
  791. static int Polycode_Camera_buildFrustumPlanes(lua_State *L) {
  792. luaL_checktype(L, 1, LUA_TUSERDATA);
  793. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  794. inst->buildFrustumPlanes();
  795. return 0;
  796. }
  797. static int Polycode_Camera_isSphereInFrustum(lua_State *L) {
  798. luaL_checktype(L, 1, LUA_TUSERDATA);
  799. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  800. luaL_checktype(L, 2, LUA_TUSERDATA);
  801. Vector3 pos = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  802. luaL_checktype(L, 3, LUA_TNUMBER);
  803. Number fRadius = lua_tonumber(L, 3);
  804. lua_pushboolean(L, inst->isSphereInFrustum(pos, fRadius));
  805. return 1;
  806. }
  807. static int Polycode_Camera_isAABBInFrustum(lua_State *L) {
  808. luaL_checktype(L, 1, LUA_TUSERDATA);
  809. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  810. luaL_checktype(L, 2, LUA_TUSERDATA);
  811. AABB aabb = *(AABB*) *((PolyBase**)lua_touserdata(L, 2));
  812. lua_pushboolean(L, inst->isAABBInFrustum(aabb));
  813. return 1;
  814. }
  815. static int Polycode_Camera_setOrthoMode(lua_State *L) {
  816. luaL_checktype(L, 1, LUA_TUSERDATA);
  817. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  818. luaL_checktype(L, 2, LUA_TBOOLEAN);
  819. bool mode = lua_toboolean(L, 2) != 0;
  820. inst->setOrthoMode(mode);
  821. return 0;
  822. }
  823. static int Polycode_Camera_setOrthoSize(lua_State *L) {
  824. luaL_checktype(L, 1, LUA_TUSERDATA);
  825. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  826. luaL_checktype(L, 2, LUA_TNUMBER);
  827. Number orthoSizeX = lua_tonumber(L, 2);
  828. luaL_checktype(L, 3, LUA_TNUMBER);
  829. Number orthoSizeY = lua_tonumber(L, 3);
  830. inst->setOrthoSize(orthoSizeX, orthoSizeY);
  831. return 0;
  832. }
  833. static int Polycode_Camera_setFrustumMode(lua_State *L) {
  834. luaL_checktype(L, 1, LUA_TUSERDATA);
  835. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  836. luaL_checktype(L, 2, LUA_TNUMBER);
  837. Number left = lua_tonumber(L, 2);
  838. luaL_checktype(L, 3, LUA_TNUMBER);
  839. Number right = lua_tonumber(L, 3);
  840. luaL_checktype(L, 4, LUA_TNUMBER);
  841. Number bottom = lua_tonumber(L, 4);
  842. luaL_checktype(L, 5, LUA_TNUMBER);
  843. Number top = lua_tonumber(L, 5);
  844. luaL_checktype(L, 6, LUA_TNUMBER);
  845. Number front = lua_tonumber(L, 6);
  846. luaL_checktype(L, 7, LUA_TNUMBER);
  847. Number back = lua_tonumber(L, 7);
  848. inst->setFrustumMode(left, right, bottom, top, front, back);
  849. return 0;
  850. }
  851. static int Polycode_Camera_getOrthoMode(lua_State *L) {
  852. luaL_checktype(L, 1, LUA_TUSERDATA);
  853. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  854. lua_pushboolean(L, inst->getOrthoMode());
  855. return 1;
  856. }
  857. static int Polycode_Camera_getOrthoSizeX(lua_State *L) {
  858. luaL_checktype(L, 1, LUA_TUSERDATA);
  859. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  860. lua_pushnumber(L, inst->getOrthoSizeX());
  861. return 1;
  862. }
  863. static int Polycode_Camera_getOrthoSizeY(lua_State *L) {
  864. luaL_checktype(L, 1, LUA_TUSERDATA);
  865. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  866. lua_pushnumber(L, inst->getOrthoSizeY());
  867. return 1;
  868. }
  869. static int Polycode_Camera_setFOV(lua_State *L) {
  870. luaL_checktype(L, 1, LUA_TUSERDATA);
  871. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  872. luaL_checktype(L, 2, LUA_TNUMBER);
  873. Number fov = lua_tonumber(L, 2);
  874. inst->setFOV(fov);
  875. return 0;
  876. }
  877. static int Polycode_Camera_getFOV(lua_State *L) {
  878. luaL_checktype(L, 1, LUA_TUSERDATA);
  879. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  880. lua_pushnumber(L, inst->getFOV());
  881. return 1;
  882. }
  883. static int Polycode_Camera_setClippingPlanes(lua_State *L) {
  884. luaL_checktype(L, 1, LUA_TUSERDATA);
  885. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  886. luaL_checktype(L, 2, LUA_TNUMBER);
  887. Number nearClipPlane = lua_tonumber(L, 2);
  888. luaL_checktype(L, 3, LUA_TNUMBER);
  889. Number farClipPlane = lua_tonumber(L, 3);
  890. inst->setClippingPlanes(nearClipPlane, farClipPlane);
  891. return 0;
  892. }
  893. static int Polycode_Camera_getNearClippingPlane(lua_State *L) {
  894. luaL_checktype(L, 1, LUA_TUSERDATA);
  895. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  896. lua_pushnumber(L, inst->getNearClippingPlane());
  897. return 1;
  898. }
  899. static int Polycode_Camera_getFarClippingPlane(lua_State *L) {
  900. luaL_checktype(L, 1, LUA_TUSERDATA);
  901. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  902. lua_pushnumber(L, inst->getFarClippingPlane());
  903. return 1;
  904. }
  905. static int Polycode_Camera_setParentScene(lua_State *L) {
  906. luaL_checktype(L, 1, LUA_TUSERDATA);
  907. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  908. luaL_checktype(L, 2, LUA_TUSERDATA);
  909. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  910. inst->setParentScene(parentScene);
  911. return 0;
  912. }
  913. static int Polycode_Camera_getParentScene(lua_State *L) {
  914. luaL_checktype(L, 1, LUA_TUSERDATA);
  915. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  916. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  917. if(ptrRetVal == NULL) {
  918. lua_pushnil(L);
  919. } else {
  920. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  921. *userdataPtr = ptrRetVal;
  922. }
  923. return 1;
  924. }
  925. static int Polycode_Camera_createProjectionMatrix(lua_State *L) {
  926. luaL_checktype(L, 1, LUA_TUSERDATA);
  927. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  928. Matrix4 *retInst = new Matrix4();
  929. *retInst = inst->createProjectionMatrix();
  930. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  931. luaL_getmetatable(L, "Polycode.Matrix4");
  932. lua_setmetatable(L, -2);
  933. *userdataPtr = (PolyBase*)retInst;
  934. return 1;
  935. }
  936. static int Polycode_Camera_hasFilterShader(lua_State *L) {
  937. luaL_checktype(L, 1, LUA_TUSERDATA);
  938. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  939. lua_pushboolean(L, inst->hasFilterShader());
  940. return 1;
  941. }
  942. static int Polycode_Camera_drawFilter(lua_State *L) {
  943. luaL_checktype(L, 1, LUA_TUSERDATA);
  944. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  945. luaL_checktype(L, 2, LUA_TUSERDATA);
  946. shared_ptr<RenderBuffer> targetBuffer = *(shared_ptr<RenderBuffer>*) *((PolyBase**)lua_touserdata(L, 2));
  947. inst->drawFilter(targetBuffer);
  948. return 0;
  949. }
  950. static int Polycode_Camera_setPostFilter(lua_State *L) {
  951. luaL_checktype(L, 1, LUA_TUSERDATA);
  952. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  953. luaL_checktype(L, 2, LUA_TUSERDATA);
  954. shared_ptr<Material> material = *(shared_ptr<Material>*) *((PolyBase**)lua_touserdata(L, 2));
  955. inst->setPostFilter(material);
  956. return 0;
  957. }
  958. static int Polycode_Camera_setPostFilterByName(lua_State *L) {
  959. luaL_checktype(L, 1, LUA_TUSERDATA);
  960. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  961. luaL_checktype(L, 2, LUA_TSTRING);
  962. String shaderName = String(lua_tostring(L, 2));
  963. inst->setPostFilterByName(shaderName);
  964. return 0;
  965. }
  966. static int Polycode_Camera_removePostFilter(lua_State *L) {
  967. luaL_checktype(L, 1, LUA_TUSERDATA);
  968. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  969. inst->removePostFilter();
  970. return 0;
  971. }
  972. static int Polycode_Camera_getScreenShaderMaterial(lua_State *L) {
  973. luaL_checktype(L, 1, LUA_TUSERDATA);
  974. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  975. shared_ptr<Material> *retInst = new shared_ptr<Material>();
  976. *retInst = inst->getScreenShaderMaterial();
  977. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  978. luaL_getmetatable(L, "Polycode.shared_ptr<Material>");
  979. lua_setmetatable(L, -2);
  980. *userdataPtr = (PolyBase*)retInst;
  981. return 1;
  982. }
  983. static int Polycode_Camera_Clone(lua_State *L) {
  984. luaL_checktype(L, 1, LUA_TUSERDATA);
  985. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  986. luaL_checktype(L, 2, LUA_TBOOLEAN);
  987. bool deepClone = lua_toboolean(L, 2) != 0;
  988. luaL_checktype(L, 3, LUA_TBOOLEAN);
  989. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  990. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  991. if(ptrRetVal == NULL) {
  992. lua_pushnil(L);
  993. } else {
  994. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  995. *userdataPtr = ptrRetVal;
  996. }
  997. return 1;
  998. }
  999. static int Polycode_Camera_applyClone(lua_State *L) {
  1000. luaL_checktype(L, 1, LUA_TUSERDATA);
  1001. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1002. luaL_checktype(L, 2, LUA_TUSERDATA);
  1003. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  1004. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1005. bool deepClone = lua_toboolean(L, 3) != 0;
  1006. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1007. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  1008. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  1009. return 0;
  1010. }
  1011. static int Polycode_Camera_getProjectionMatrix(lua_State *L) {
  1012. luaL_checktype(L, 1, LUA_TUSERDATA);
  1013. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1014. Matrix4 *retInst = new Matrix4();
  1015. *retInst = inst->getProjectionMatrix();
  1016. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1017. luaL_getmetatable(L, "Polycode.Matrix4");
  1018. lua_setmetatable(L, -2);
  1019. *userdataPtr = (PolyBase*)retInst;
  1020. return 1;
  1021. }
  1022. static int Polycode_Camera_setCustomProjectionMatrix(lua_State *L) {
  1023. luaL_checktype(L, 1, LUA_TUSERDATA);
  1024. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1025. luaL_checktype(L, 2, LUA_TUSERDATA);
  1026. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  1027. inst->setCustomProjectionMatrix(matrix);
  1028. return 0;
  1029. }
  1030. static int Polycode_Camera_getViewport(lua_State *L) {
  1031. luaL_checktype(L, 1, LUA_TUSERDATA);
  1032. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1033. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  1034. *retInst = inst->getViewport();
  1035. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1036. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  1037. lua_setmetatable(L, -2);
  1038. *userdataPtr = (PolyBase*)retInst;
  1039. return 1;
  1040. }
  1041. static int Polycode_Camera_setViewport(lua_State *L) {
  1042. luaL_checktype(L, 1, LUA_TUSERDATA);
  1043. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1044. luaL_checktype(L, 2, LUA_TUSERDATA);
  1045. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  1046. inst->setViewport(viewport);
  1047. return 0;
  1048. }
  1049. static int Polycode_Camera_setOrthoSizeMode(lua_State *L) {
  1050. luaL_checktype(L, 1, LUA_TUSERDATA);
  1051. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1052. luaL_checktype(L, 2, LUA_TNUMBER);
  1053. int orthoSizeMode = lua_tointeger(L, 2);
  1054. inst->setOrthoSizeMode(orthoSizeMode);
  1055. return 0;
  1056. }
  1057. static int Polycode_Camera_getOrthoSizeMode(lua_State *L) {
  1058. luaL_checktype(L, 1, LUA_TUSERDATA);
  1059. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1060. lua_pushinteger(L, inst->getOrthoSizeMode());
  1061. return 1;
  1062. }
  1063. static int Polycode_Camera_setProjectionMode(lua_State *L) {
  1064. luaL_checktype(L, 1, LUA_TUSERDATA);
  1065. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1066. luaL_checktype(L, 2, LUA_TNUMBER);
  1067. int mode = lua_tointeger(L, 2);
  1068. inst->setProjectionMode(mode);
  1069. return 0;
  1070. }
  1071. static int Polycode_Camera_getProjectionMode(lua_State *L) {
  1072. luaL_checktype(L, 1, LUA_TUSERDATA);
  1073. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1074. lua_pushinteger(L, inst->getProjectionMode());
  1075. return 1;
  1076. }
  1077. static int Polycode_Camera_projectRayFrom2DCoordinate(lua_State *L) {
  1078. luaL_checktype(L, 1, LUA_TUSERDATA);
  1079. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1080. luaL_checktype(L, 2, LUA_TUSERDATA);
  1081. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  1082. luaL_checktype(L, 3, LUA_TUSERDATA);
  1083. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  1084. Vector3 *retInst = new Vector3();
  1085. *retInst = inst->projectRayFrom2DCoordinate(coordinate, viewport);
  1086. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1087. luaL_getmetatable(L, "Polycode.Vector3");
  1088. lua_setmetatable(L, -2);
  1089. *userdataPtr = (PolyBase*)retInst;
  1090. return 1;
  1091. }
  1092. static int Polycode_Camera_renderFullScreenQuad(lua_State *L) {
  1093. luaL_checktype(L, 1, LUA_TUSERDATA);
  1094. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1095. luaL_checktype(L, 2, LUA_TUSERDATA);
  1096. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  1097. luaL_checktype(L, 3, LUA_TNUMBER);
  1098. int shaderPass = lua_tointeger(L, 3);
  1099. inst->renderFullScreenQuad(drawBuffer, shaderPass);
  1100. return 0;
  1101. }
  1102. static int Polycode_Camera_getShaderPass(lua_State *L) {
  1103. luaL_checktype(L, 1, LUA_TUSERDATA);
  1104. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1105. luaL_checktype(L, 2, LUA_TNUMBER);
  1106. int index = lua_tointeger(L, 2);
  1107. ShaderPass *retInst = new ShaderPass();
  1108. *retInst = inst->getShaderPass(index);
  1109. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1110. luaL_getmetatable(L, "Polycode.ShaderPass");
  1111. lua_setmetatable(L, -2);
  1112. *userdataPtr = (PolyBase*)retInst;
  1113. return 1;
  1114. }
  1115. static int Polycode_Camera_getNumShaderPasses(lua_State *L) {
  1116. luaL_checktype(L, 1, LUA_TUSERDATA);
  1117. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1118. lua_pushinteger(L, inst->getNumShaderPasses());
  1119. return 1;
  1120. }
  1121. static int Polycode_delete_Camera(lua_State *L) {
  1122. luaL_checktype(L, 1, LUA_TUSERDATA);
  1123. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1124. delete ((Camera*) *inst);
  1125. *inst = NULL;
  1126. return 0;
  1127. }
  1128. static int Polycode_Color_get_r(lua_State *L) {
  1129. luaL_checktype(L, 1, LUA_TUSERDATA);
  1130. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1131. lua_pushnumber(L, inst->r);
  1132. return 1;
  1133. }
  1134. static int Polycode_Color_get_g(lua_State *L) {
  1135. luaL_checktype(L, 1, LUA_TUSERDATA);
  1136. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1137. lua_pushnumber(L, inst->g);
  1138. return 1;
  1139. }
  1140. static int Polycode_Color_get_b(lua_State *L) {
  1141. luaL_checktype(L, 1, LUA_TUSERDATA);
  1142. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1143. lua_pushnumber(L, inst->b);
  1144. return 1;
  1145. }
  1146. static int Polycode_Color_get_a(lua_State *L) {
  1147. luaL_checktype(L, 1, LUA_TUSERDATA);
  1148. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1149. lua_pushnumber(L, inst->a);
  1150. return 1;
  1151. }
  1152. static int Polycode_Color_set_r(lua_State *L) {
  1153. luaL_checktype(L, 1, LUA_TUSERDATA);
  1154. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1155. Number param = lua_tonumber(L, 2);
  1156. inst->r = param;
  1157. return 0;
  1158. }
  1159. static int Polycode_Color_set_g(lua_State *L) {
  1160. luaL_checktype(L, 1, LUA_TUSERDATA);
  1161. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1162. Number param = lua_tonumber(L, 2);
  1163. inst->g = param;
  1164. return 0;
  1165. }
  1166. static int Polycode_Color_set_b(lua_State *L) {
  1167. luaL_checktype(L, 1, LUA_TUSERDATA);
  1168. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1169. Number param = lua_tonumber(L, 2);
  1170. inst->b = param;
  1171. return 0;
  1172. }
  1173. static int Polycode_Color_set_a(lua_State *L) {
  1174. luaL_checktype(L, 1, LUA_TUSERDATA);
  1175. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1176. Number param = lua_tonumber(L, 2);
  1177. inst->a = param;
  1178. return 0;
  1179. }
  1180. static int Polycode_Color(lua_State *L) {
  1181. luaL_checktype(L, 1, LUA_TNUMBER);
  1182. Number r = lua_tonumber(L, 1);
  1183. luaL_checktype(L, 2, LUA_TNUMBER);
  1184. Number g = lua_tonumber(L, 2);
  1185. luaL_checktype(L, 3, LUA_TNUMBER);
  1186. Number b = lua_tonumber(L, 3);
  1187. luaL_checktype(L, 4, LUA_TNUMBER);
  1188. Number a = lua_tonumber(L, 4);
  1189. Color *inst = new Color(r, g, b, a);
  1190. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1191. *userdataPtr = (PolyBase*)inst;
  1192. luaL_getmetatable(L, "Polycode.Color");
  1193. lua_setmetatable(L, -2);
  1194. return 1;
  1195. }
  1196. static int Polycode_Color_ColorWithInts(lua_State *L) {
  1197. luaL_checktype(L, 1, LUA_TNUMBER);
  1198. int r = lua_tointeger(L, 1);
  1199. luaL_checktype(L, 2, LUA_TNUMBER);
  1200. int g = lua_tointeger(L, 2);
  1201. luaL_checktype(L, 3, LUA_TNUMBER);
  1202. int b = lua_tointeger(L, 3);
  1203. luaL_checktype(L, 4, LUA_TNUMBER);
  1204. int a = lua_tointeger(L, 4);
  1205. Color *retInst = new Color();
  1206. *retInst = Color::ColorWithInts(r, g, b, a);
  1207. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1208. luaL_getmetatable(L, "Polycode.Color");
  1209. lua_setmetatable(L, -2);
  1210. *userdataPtr = (PolyBase*)retInst;
  1211. return 1;
  1212. }
  1213. static int Polycode_Color_ColorWithHex(lua_State *L) {
  1214. luaL_checktype(L, 1, LUA_TNUMBER);
  1215. int hex = lua_tointeger(L, 1);
  1216. Color *retInst = new Color();
  1217. *retInst = Color::ColorWithHex(hex);
  1218. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1219. luaL_getmetatable(L, "Polycode.Color");
  1220. lua_setmetatable(L, -2);
  1221. *userdataPtr = (PolyBase*)retInst;
  1222. return 1;
  1223. }
  1224. static int Polycode_Color_setColorHex(lua_State *L) {
  1225. luaL_checktype(L, 1, LUA_TUSERDATA);
  1226. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1227. luaL_checktype(L, 2, LUA_TNUMBER);
  1228. int hex = lua_tointeger(L, 2);
  1229. inst->setColorHex(hex);
  1230. return 0;
  1231. }
  1232. static int Polycode_Color_setColorHexRGB(lua_State *L) {
  1233. luaL_checktype(L, 1, LUA_TUSERDATA);
  1234. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1235. luaL_checktype(L, 2, LUA_TNUMBER);
  1236. int hex = lua_tointeger(L, 2);
  1237. inst->setColorHexRGB(hex);
  1238. return 0;
  1239. }
  1240. static int Polycode_Color_setColorHexFromString(lua_State *L) {
  1241. luaL_checktype(L, 1, LUA_TUSERDATA);
  1242. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1243. luaL_checktype(L, 2, LUA_TSTRING);
  1244. String hex = String(lua_tostring(L, 2));
  1245. inst->setColorHexFromString(hex);
  1246. return 0;
  1247. }
  1248. static int Polycode_Color_setColorHexRGBFromString(lua_State *L) {
  1249. luaL_checktype(L, 1, LUA_TUSERDATA);
  1250. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1251. luaL_checktype(L, 2, LUA_TSTRING);
  1252. String hex = String(lua_tostring(L, 2));
  1253. inst->setColorHexRGBFromString(hex);
  1254. return 0;
  1255. }
  1256. static int Polycode_Color_setColorHSV(lua_State *L) {
  1257. luaL_checktype(L, 1, LUA_TUSERDATA);
  1258. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1259. luaL_checktype(L, 2, LUA_TNUMBER);
  1260. Number h = lua_tonumber(L, 2);
  1261. luaL_checktype(L, 3, LUA_TNUMBER);
  1262. Number s = lua_tonumber(L, 3);
  1263. luaL_checktype(L, 4, LUA_TNUMBER);
  1264. Number v = lua_tonumber(L, 4);
  1265. inst->setColorHSV(h, s, v);
  1266. return 0;
  1267. }
  1268. static int Polycode_Color_setColorRGBA(lua_State *L) {
  1269. luaL_checktype(L, 1, LUA_TUSERDATA);
  1270. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1271. luaL_checktype(L, 2, LUA_TNUMBER);
  1272. int r = lua_tointeger(L, 2);
  1273. luaL_checktype(L, 3, LUA_TNUMBER);
  1274. int g = lua_tointeger(L, 3);
  1275. luaL_checktype(L, 4, LUA_TNUMBER);
  1276. int b = lua_tointeger(L, 4);
  1277. luaL_checktype(L, 5, LUA_TNUMBER);
  1278. int a = lua_tointeger(L, 5);
  1279. inst->setColorRGBA(r, g, b, a);
  1280. return 0;
  1281. }
  1282. static int Polycode_Color_setColorRGB(lua_State *L) {
  1283. luaL_checktype(L, 1, LUA_TUSERDATA);
  1284. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1285. luaL_checktype(L, 2, LUA_TNUMBER);
  1286. int r = lua_tointeger(L, 2);
  1287. luaL_checktype(L, 3, LUA_TNUMBER);
  1288. int g = lua_tointeger(L, 3);
  1289. luaL_checktype(L, 4, LUA_TNUMBER);
  1290. int b = lua_tointeger(L, 4);
  1291. inst->setColorRGB(r, g, b);
  1292. return 0;
  1293. }
  1294. static int Polycode_Color_setColor(lua_State *L) {
  1295. luaL_checktype(L, 1, LUA_TUSERDATA);
  1296. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1297. luaL_checktype(L, 2, LUA_TNUMBER);
  1298. Number r = lua_tonumber(L, 2);
  1299. luaL_checktype(L, 3, LUA_TNUMBER);
  1300. Number g = lua_tonumber(L, 3);
  1301. luaL_checktype(L, 4, LUA_TNUMBER);
  1302. Number b = lua_tonumber(L, 4);
  1303. luaL_checktype(L, 5, LUA_TNUMBER);
  1304. Number a = lua_tonumber(L, 5);
  1305. inst->setColor(r, g, b, a);
  1306. return 0;
  1307. }
  1308. static int Polycode_Color_blendColor(lua_State *L) {
  1309. luaL_checktype(L, 1, LUA_TUSERDATA);
  1310. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1311. luaL_checktype(L, 2, LUA_TUSERDATA);
  1312. Color c2 = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  1313. luaL_checktype(L, 3, LUA_TNUMBER);
  1314. int mode = lua_tointeger(L, 3);
  1315. luaL_checktype(L, 4, LUA_TNUMBER);
  1316. Number amount = lua_tonumber(L, 4);
  1317. luaL_checktype(L, 5, LUA_TUSERDATA);
  1318. Color c3 = *(Color*) *((PolyBase**)lua_touserdata(L, 5));
  1319. Color *retInst = new Color();
  1320. *retInst = inst->blendColor(c2, mode, amount, c3);
  1321. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1322. luaL_getmetatable(L, "Polycode.Color");
  1323. lua_setmetatable(L, -2);
  1324. *userdataPtr = (PolyBase*)retInst;
  1325. return 1;
  1326. }
  1327. static int Polycode_Color_Random(lua_State *L) {
  1328. luaL_checktype(L, 1, LUA_TUSERDATA);
  1329. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1330. inst->Random();
  1331. return 0;
  1332. }
  1333. static int Polycode_Color_getBrightness(lua_State *L) {
  1334. luaL_checktype(L, 1, LUA_TUSERDATA);
  1335. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1336. lua_pushnumber(L, inst->getBrightness());
  1337. return 1;
  1338. }
  1339. static int Polycode_Color_RGBtoHSV(lua_State *L) {
  1340. luaL_checktype(L, 1, LUA_TNUMBER);
  1341. Number r = lua_tonumber(L, 1);
  1342. luaL_checktype(L, 2, LUA_TNUMBER);
  1343. Number g = lua_tonumber(L, 2);
  1344. luaL_checktype(L, 3, LUA_TNUMBER);
  1345. Number b = lua_tonumber(L, 3);
  1346. luaL_checktype(L, 4, LUA_TNUMBER);
  1347. Number h = lua_tonumber(L, 4);
  1348. luaL_checktype(L, 5, LUA_TNUMBER);
  1349. Number s = lua_tonumber(L, 5);
  1350. luaL_checktype(L, 6, LUA_TNUMBER);
  1351. Number v = lua_tonumber(L, 6);
  1352. Color::RGBtoHSV(r, g, b, h, s, v);
  1353. return 0;
  1354. }
  1355. static int Polycode_Color_getHue(lua_State *L) {
  1356. luaL_checktype(L, 1, LUA_TUSERDATA);
  1357. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1358. lua_pushnumber(L, inst->getHue());
  1359. return 1;
  1360. }
  1361. static int Polycode_Color_getSaturation(lua_State *L) {
  1362. luaL_checktype(L, 1, LUA_TUSERDATA);
  1363. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1364. lua_pushnumber(L, inst->getSaturation());
  1365. return 1;
  1366. }
  1367. static int Polycode_Color_getValue(lua_State *L) {
  1368. luaL_checktype(L, 1, LUA_TUSERDATA);
  1369. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1370. lua_pushnumber(L, inst->getValue());
  1371. return 1;
  1372. }
  1373. static int Polycode_Color_getUint(lua_State *L) {
  1374. luaL_checktype(L, 1, LUA_TUSERDATA);
  1375. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1376. lua_pushinteger(L, inst->getUint());
  1377. return 1;
  1378. }
  1379. static int Polycode_delete_Color(lua_State *L) {
  1380. luaL_checktype(L, 1, LUA_TUSERDATA);
  1381. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1382. delete ((Color*) *inst);
  1383. *inst = NULL;
  1384. return 0;
  1385. }
  1386. static int Polycode_ConfigEntry_get_key(lua_State *L) {
  1387. luaL_checktype(L, 1, LUA_TUSERDATA);
  1388. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1389. lua_pushstring(L, inst->key.c_str());
  1390. return 1;
  1391. }
  1392. static int Polycode_ConfigEntry_get_configNamespace(lua_State *L) {
  1393. luaL_checktype(L, 1, LUA_TUSERDATA);
  1394. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1395. lua_pushstring(L, inst->configNamespace.c_str());
  1396. return 1;
  1397. }
  1398. static int Polycode_ConfigEntry_get_numVal(lua_State *L) {
  1399. luaL_checktype(L, 1, LUA_TUSERDATA);
  1400. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1401. lua_pushnumber(L, inst->numVal);
  1402. return 1;
  1403. }
  1404. static int Polycode_ConfigEntry_get_stringVal(lua_State *L) {
  1405. luaL_checktype(L, 1, LUA_TUSERDATA);
  1406. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1407. lua_pushstring(L, inst->stringVal.c_str());
  1408. return 1;
  1409. }
  1410. static int Polycode_ConfigEntry_get_isString(lua_State *L) {
  1411. luaL_checktype(L, 1, LUA_TUSERDATA);
  1412. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1413. lua_pushboolean(L, inst->isString);
  1414. return 1;
  1415. }
  1416. static int Polycode_ConfigEntry_set_key(lua_State *L) {
  1417. luaL_checktype(L, 1, LUA_TUSERDATA);
  1418. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1419. String param = lua_tostring(L, 2);
  1420. inst->key = param;
  1421. return 0;
  1422. }
  1423. static int Polycode_ConfigEntry_set_configNamespace(lua_State *L) {
  1424. luaL_checktype(L, 1, LUA_TUSERDATA);
  1425. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1426. String param = lua_tostring(L, 2);
  1427. inst->configNamespace = param;
  1428. return 0;
  1429. }
  1430. static int Polycode_ConfigEntry_set_numVal(lua_State *L) {
  1431. luaL_checktype(L, 1, LUA_TUSERDATA);
  1432. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1433. Number param = lua_tonumber(L, 2);
  1434. inst->numVal = param;
  1435. return 0;
  1436. }
  1437. static int Polycode_ConfigEntry_set_stringVal(lua_State *L) {
  1438. luaL_checktype(L, 1, LUA_TUSERDATA);
  1439. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1440. String param = lua_tostring(L, 2);
  1441. inst->stringVal = param;
  1442. return 0;
  1443. }
  1444. static int Polycode_ConfigEntry_set_isString(lua_State *L) {
  1445. luaL_checktype(L, 1, LUA_TUSERDATA);
  1446. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1447. bool param = lua_toboolean(L, 2) != 0;
  1448. inst->isString = param;
  1449. return 0;
  1450. }
  1451. static int Polycode_delete_ConfigEntry(lua_State *L) {
  1452. luaL_checktype(L, 1, LUA_TUSERDATA);
  1453. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1454. delete ((ConfigEntry*) *inst);
  1455. *inst = NULL;
  1456. return 0;
  1457. }
  1458. static int Polycode_Config(lua_State *L) {
  1459. Config *inst = new Config();
  1460. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1461. *userdataPtr = (PolyBase*)inst;
  1462. luaL_getmetatable(L, "Polycode.Config");
  1463. lua_setmetatable(L, -2);
  1464. return 1;
  1465. }
  1466. static int Polycode_Config_loadConfig(lua_State *L) {
  1467. luaL_checktype(L, 1, LUA_TUSERDATA);
  1468. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1469. luaL_checktype(L, 2, LUA_TSTRING);
  1470. String configNamespace = String(lua_tostring(L, 2));
  1471. luaL_checktype(L, 3, LUA_TSTRING);
  1472. String fileName = String(lua_tostring(L, 3));
  1473. inst->loadConfig(configNamespace, fileName);
  1474. return 0;
  1475. }
  1476. static int Polycode_Config_saveConfig(lua_State *L) {
  1477. luaL_checktype(L, 1, LUA_TUSERDATA);
  1478. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1479. luaL_checktype(L, 2, LUA_TSTRING);
  1480. String configNamespace = String(lua_tostring(L, 2));
  1481. luaL_checktype(L, 3, LUA_TSTRING);
  1482. String fileName = String(lua_tostring(L, 3));
  1483. inst->saveConfig(configNamespace, fileName);
  1484. return 0;
  1485. }
  1486. static int Polycode_Config_getEntry(lua_State *L) {
  1487. luaL_checktype(L, 1, LUA_TUSERDATA);
  1488. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1489. luaL_checktype(L, 2, LUA_TSTRING);
  1490. String configNamespace = String(lua_tostring(L, 2));
  1491. luaL_checktype(L, 3, LUA_TSTRING);
  1492. String key = String(lua_tostring(L, 3));
  1493. PolyBase *ptrRetVal = (PolyBase*)inst->getEntry(configNamespace, key);
  1494. if(ptrRetVal == NULL) {
  1495. lua_pushnil(L);
  1496. } else {
  1497. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1498. *userdataPtr = ptrRetVal;
  1499. }
  1500. return 1;
  1501. }
  1502. static int Polycode_Config_setStringValue(lua_State *L) {
  1503. luaL_checktype(L, 1, LUA_TUSERDATA);
  1504. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1505. luaL_checktype(L, 2, LUA_TSTRING);
  1506. String configNamespace = String(lua_tostring(L, 2));
  1507. luaL_checktype(L, 3, LUA_TSTRING);
  1508. String key = String(lua_tostring(L, 3));
  1509. luaL_checktype(L, 4, LUA_TSTRING);
  1510. String value = String(lua_tostring(L, 4));
  1511. inst->setStringValue(configNamespace, key, value);
  1512. return 0;
  1513. }
  1514. static int Polycode_Config_setNumericValue(lua_State *L) {
  1515. luaL_checktype(L, 1, LUA_TUSERDATA);
  1516. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1517. luaL_checktype(L, 2, LUA_TSTRING);
  1518. String configNamespace = String(lua_tostring(L, 2));
  1519. luaL_checktype(L, 3, LUA_TSTRING);
  1520. String key = String(lua_tostring(L, 3));
  1521. luaL_checktype(L, 4, LUA_TNUMBER);
  1522. Number value = lua_tonumber(L, 4);
  1523. inst->setNumericValue(configNamespace, key, value);
  1524. return 0;
  1525. }
  1526. static int Polycode_Config_getNumericValue(lua_State *L) {
  1527. luaL_checktype(L, 1, LUA_TUSERDATA);
  1528. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1529. luaL_checktype(L, 2, LUA_TSTRING);
  1530. String configNamespace = String(lua_tostring(L, 2));
  1531. luaL_checktype(L, 3, LUA_TSTRING);
  1532. String key = String(lua_tostring(L, 3));
  1533. lua_pushnumber(L, inst->getNumericValue(configNamespace, key));
  1534. return 1;
  1535. }
  1536. static int Polycode_Config_getStringValue(lua_State *L) {
  1537. luaL_checktype(L, 1, LUA_TUSERDATA);
  1538. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1539. luaL_checktype(L, 2, LUA_TSTRING);
  1540. String configNamespace = String(lua_tostring(L, 2));
  1541. luaL_checktype(L, 3, LUA_TSTRING);
  1542. String key = String(lua_tostring(L, 3));
  1543. lua_pushstring(L, inst->getStringValue(configNamespace, key).c_str());
  1544. return 1;
  1545. }
  1546. static int Polycode_Config_setBoolValue(lua_State *L) {
  1547. luaL_checktype(L, 1, LUA_TUSERDATA);
  1548. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1549. luaL_checktype(L, 2, LUA_TSTRING);
  1550. String configNamespace = String(lua_tostring(L, 2));
  1551. luaL_checktype(L, 3, LUA_TSTRING);
  1552. String key = String(lua_tostring(L, 3));
  1553. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1554. bool value = lua_toboolean(L, 4) != 0;
  1555. inst->setBoolValue(configNamespace, key, value);
  1556. return 0;
  1557. }
  1558. static int Polycode_Config_getBoolValue(lua_State *L) {
  1559. luaL_checktype(L, 1, LUA_TUSERDATA);
  1560. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1561. luaL_checktype(L, 2, LUA_TSTRING);
  1562. String configNamespace = String(lua_tostring(L, 2));
  1563. luaL_checktype(L, 3, LUA_TSTRING);
  1564. String key = String(lua_tostring(L, 3));
  1565. lua_pushboolean(L, inst->getBoolValue(configNamespace, key));
  1566. return 1;
  1567. }
  1568. static int Polycode_delete_Config(lua_State *L) {
  1569. luaL_checktype(L, 1, LUA_TUSERDATA);
  1570. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1571. delete ((Config*) *inst);
  1572. *inst = NULL;
  1573. return 0;
  1574. }
  1575. static int Polycode_Core_get_eventMutex(lua_State *L) {
  1576. luaL_checktype(L, 1, LUA_TUSERDATA);
  1577. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1578. if(!inst->eventMutex) {
  1579. lua_pushnil(L);
  1580. } else {
  1581. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1582. *userdataPtr = (PolyBase*)inst->eventMutex;
  1583. }
  1584. return 1;
  1585. }
  1586. static int Polycode_Core_get_paused(lua_State *L) {
  1587. luaL_checktype(L, 1, LUA_TUSERDATA);
  1588. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1589. lua_pushboolean(L, inst->paused);
  1590. return 1;
  1591. }
  1592. static int Polycode_Core_get_pauseOnLoseFocus(lua_State *L) {
  1593. luaL_checktype(L, 1, LUA_TUSERDATA);
  1594. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1595. lua_pushboolean(L, inst->pauseOnLoseFocus);
  1596. return 1;
  1597. }
  1598. static int Polycode_Core_get_defaultScreenWidth(lua_State *L) {
  1599. luaL_checktype(L, 1, LUA_TUSERDATA);
  1600. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1601. lua_pushinteger(L, inst->defaultScreenWidth);
  1602. return 1;
  1603. }
  1604. static int Polycode_Core_get_defaultScreenHeight(lua_State *L) {
  1605. luaL_checktype(L, 1, LUA_TUSERDATA);
  1606. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1607. lua_pushinteger(L, inst->defaultScreenHeight);
  1608. return 1;
  1609. }
  1610. static int Polycode_Core_get_deviceAttitude(lua_State *L) {
  1611. luaL_checktype(L, 1, LUA_TUSERDATA);
  1612. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1613. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1614. *userdataPtr = (PolyBase*)&inst->deviceAttitude;
  1615. return 1;
  1616. }
  1617. static int Polycode_Core_set_eventMutex(lua_State *L) {
  1618. luaL_checktype(L, 1, LUA_TUSERDATA);
  1619. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1620. luaL_checktype(L, 2, LUA_TUSERDATA);
  1621. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  1622. inst->eventMutex = *argInst;
  1623. return 0;
  1624. }
  1625. static int Polycode_Core_set_paused(lua_State *L) {
  1626. luaL_checktype(L, 1, LUA_TUSERDATA);
  1627. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1628. bool param = lua_toboolean(L, 2) != 0;
  1629. inst->paused = param;
  1630. return 0;
  1631. }
  1632. static int Polycode_Core_set_pauseOnLoseFocus(lua_State *L) {
  1633. luaL_checktype(L, 1, LUA_TUSERDATA);
  1634. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1635. bool param = lua_toboolean(L, 2) != 0;
  1636. inst->pauseOnLoseFocus = param;
  1637. return 0;
  1638. }
  1639. static int Polycode_Core_set_defaultScreenWidth(lua_State *L) {
  1640. luaL_checktype(L, 1, LUA_TUSERDATA);
  1641. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1642. int param = lua_tointeger(L, 2);
  1643. inst->defaultScreenWidth = param;
  1644. return 0;
  1645. }
  1646. static int Polycode_Core_set_defaultScreenHeight(lua_State *L) {
  1647. luaL_checktype(L, 1, LUA_TUSERDATA);
  1648. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1649. int param = lua_tointeger(L, 2);
  1650. inst->defaultScreenHeight = param;
  1651. return 0;
  1652. }
  1653. static int Polycode_Core_set_deviceAttitude(lua_State *L) {
  1654. luaL_checktype(L, 1, LUA_TUSERDATA);
  1655. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1656. luaL_checktype(L, 2, LUA_TUSERDATA);
  1657. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  1658. inst->deviceAttitude = *argInst;
  1659. return 0;
  1660. }
  1661. static int Polycode_Core_Update(lua_State *L) {
  1662. luaL_checktype(L, 1, LUA_TUSERDATA);
  1663. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1664. lua_pushboolean(L, inst->Update());
  1665. return 1;
  1666. }
  1667. static int Polycode_Core_Render(lua_State *L) {
  1668. luaL_checktype(L, 1, LUA_TUSERDATA);
  1669. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1670. inst->Render();
  1671. return 0;
  1672. }
  1673. static int Polycode_Core_fixedUpdate(lua_State *L) {
  1674. luaL_checktype(L, 1, LUA_TUSERDATA);
  1675. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1676. lua_pushboolean(L, inst->fixedUpdate());
  1677. return 1;
  1678. }
  1679. static int Polycode_Core_systemUpdate(lua_State *L) {
  1680. luaL_checktype(L, 1, LUA_TUSERDATA);
  1681. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1682. lua_pushboolean(L, inst->systemUpdate());
  1683. return 1;
  1684. }
  1685. static int Polycode_Core_updateAndRender(lua_State *L) {
  1686. luaL_checktype(L, 1, LUA_TUSERDATA);
  1687. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1688. lua_pushboolean(L, inst->updateAndRender());
  1689. return 1;
  1690. }
  1691. static int Polycode_Core_enableMouse(lua_State *L) {
  1692. luaL_checktype(L, 1, LUA_TUSERDATA);
  1693. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1694. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1695. bool newval = lua_toboolean(L, 2) != 0;
  1696. inst->enableMouse(newval);
  1697. return 0;
  1698. }
  1699. static int Polycode_Core_captureMouse(lua_State *L) {
  1700. luaL_checktype(L, 1, LUA_TUSERDATA);
  1701. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1702. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1703. bool newval = lua_toboolean(L, 2) != 0;
  1704. inst->captureMouse(newval);
  1705. return 0;
  1706. }
  1707. static int Polycode_Core_setCursor(lua_State *L) {
  1708. luaL_checktype(L, 1, LUA_TUSERDATA);
  1709. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1710. luaL_checktype(L, 2, LUA_TNUMBER);
  1711. int cursorType = lua_tointeger(L, 2);
  1712. inst->setCursor(cursorType);
  1713. return 0;
  1714. }
  1715. static int Polycode_Core_warpCursor(lua_State *L) {
  1716. luaL_checktype(L, 1, LUA_TUSERDATA);
  1717. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1718. luaL_checktype(L, 2, LUA_TNUMBER);
  1719. int x = lua_tointeger(L, 2);
  1720. luaL_checktype(L, 3, LUA_TNUMBER);
  1721. int y = lua_tointeger(L, 3);
  1722. inst->warpCursor(x, y);
  1723. return 0;
  1724. }
  1725. static int Polycode_Core_openOnScreenKeyboard(lua_State *L) {
  1726. luaL_checktype(L, 1, LUA_TUSERDATA);
  1727. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1728. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1729. bool open = lua_toboolean(L, 2) != 0;
  1730. inst->openOnScreenKeyboard(open);
  1731. return 0;
  1732. }
  1733. static int Polycode_Core_createThread(lua_State *L) {
  1734. luaL_checktype(L, 1, LUA_TUSERDATA);
  1735. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1736. luaL_checktype(L, 2, LUA_TUSERDATA);
  1737. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  1738. inst->createThread(target);
  1739. return 0;
  1740. }
  1741. static int Polycode_Core_lockMutex(lua_State *L) {
  1742. luaL_checktype(L, 1, LUA_TUSERDATA);
  1743. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1744. luaL_checktype(L, 2, LUA_TUSERDATA);
  1745. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1746. inst->lockMutex(mutex);
  1747. return 0;
  1748. }
  1749. static int Polycode_Core_unlockMutex(lua_State *L) {
  1750. luaL_checktype(L, 1, LUA_TUSERDATA);
  1751. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1752. luaL_checktype(L, 2, LUA_TUSERDATA);
  1753. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1754. inst->unlockMutex(mutex);
  1755. return 0;
  1756. }
  1757. static int Polycode_Core_createMutex(lua_State *L) {
  1758. luaL_checktype(L, 1, LUA_TUSERDATA);
  1759. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1760. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  1761. if(ptrRetVal == NULL) {
  1762. lua_pushnil(L);
  1763. } else {
  1764. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1765. *userdataPtr = ptrRetVal;
  1766. }
  1767. return 1;
  1768. }
  1769. static int Polycode_Core_copyStringToClipboard(lua_State *L) {
  1770. luaL_checktype(L, 1, LUA_TUSERDATA);
  1771. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1772. luaL_checktype(L, 2, LUA_TSTRING);
  1773. String str = String(lua_tostring(L, 2));
  1774. inst->copyStringToClipboard(str);
  1775. return 0;
  1776. }
  1777. static int Polycode_Core_getClipboardString(lua_State *L) {
  1778. luaL_checktype(L, 1, LUA_TUSERDATA);
  1779. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1780. lua_pushstring(L, inst->getClipboardString().c_str());
  1781. return 1;
  1782. }
  1783. static int Polycode_Core_getServices(lua_State *L) {
  1784. luaL_checktype(L, 1, LUA_TUSERDATA);
  1785. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1786. PolyBase *ptrRetVal = (PolyBase*)inst->getServices();
  1787. if(ptrRetVal == NULL) {
  1788. lua_pushnil(L);
  1789. } else {
  1790. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1791. *userdataPtr = ptrRetVal;
  1792. }
  1793. return 1;
  1794. }
  1795. static int Polycode_Core_getFPS(lua_State *L) {
  1796. luaL_checktype(L, 1, LUA_TUSERDATA);
  1797. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1798. lua_pushnumber(L, inst->getFPS());
  1799. return 1;
  1800. }
  1801. static int Polycode_Core_Shutdown(lua_State *L) {
  1802. luaL_checktype(L, 1, LUA_TUSERDATA);
  1803. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1804. inst->Shutdown();
  1805. return 0;
  1806. }
  1807. static int Polycode_Core_isFullscreen(lua_State *L) {
  1808. luaL_checktype(L, 1, LUA_TUSERDATA);
  1809. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1810. lua_pushboolean(L, inst->isFullscreen());
  1811. return 1;
  1812. }
  1813. static int Polycode_Core_getAALevel(lua_State *L) {
  1814. luaL_checktype(L, 1, LUA_TUSERDATA);
  1815. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1816. lua_pushinteger(L, inst->getAALevel());
  1817. return 1;
  1818. }
  1819. static int Polycode_Core_getInput(lua_State *L) {
  1820. luaL_checktype(L, 1, LUA_TUSERDATA);
  1821. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1822. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  1823. if(ptrRetVal == NULL) {
  1824. lua_pushnil(L);
  1825. } else {
  1826. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1827. *userdataPtr = ptrRetVal;
  1828. }
  1829. return 1;
  1830. }
  1831. static int Polycode_Core_getXRes(lua_State *L) {
  1832. luaL_checktype(L, 1, LUA_TUSERDATA);
  1833. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1834. lua_pushnumber(L, inst->getXRes());
  1835. return 1;
  1836. }
  1837. static int Polycode_Core_getYRes(lua_State *L) {
  1838. luaL_checktype(L, 1, LUA_TUSERDATA);
  1839. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1840. lua_pushnumber(L, inst->getYRes());
  1841. return 1;
  1842. }
  1843. static int Polycode_Core_getBackingXRes(lua_State *L) {
  1844. luaL_checktype(L, 1, LUA_TUSERDATA);
  1845. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1846. lua_pushnumber(L, inst->getBackingXRes());
  1847. return 1;
  1848. }
  1849. static int Polycode_Core_getBackingYRes(lua_State *L) {
  1850. luaL_checktype(L, 1, LUA_TUSERDATA);
  1851. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1852. lua_pushnumber(L, inst->getBackingYRes());
  1853. return 1;
  1854. }
  1855. static int Polycode_Core_getScreenInfo(lua_State *L) {
  1856. luaL_checktype(L, 1, LUA_TUSERDATA);
  1857. int* width = (int*) *((PolyBase**)lua_touserdata(L, 1));
  1858. luaL_checktype(L, 2, LUA_TUSERDATA);
  1859. int* height = (int*) *((PolyBase**)lua_touserdata(L, 2));
  1860. luaL_checktype(L, 3, LUA_TUSERDATA);
  1861. int* hz = (int*) *((PolyBase**)lua_touserdata(L, 3));
  1862. Core::getScreenInfo(width, height, hz);
  1863. return 0;
  1864. }
  1865. static int Polycode_Core_getScreenWidth(lua_State *L) {
  1866. luaL_checktype(L, 1, LUA_TUSERDATA);
  1867. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1868. lua_pushinteger(L, inst->getScreenWidth());
  1869. return 1;
  1870. }
  1871. static int Polycode_Core_getScreenHeight(lua_State *L) {
  1872. luaL_checktype(L, 1, LUA_TUSERDATA);
  1873. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1874. lua_pushinteger(L, inst->getScreenHeight());
  1875. return 1;
  1876. }
  1877. static int Polycode_Core_createFolder(lua_State *L) {
  1878. luaL_checktype(L, 1, LUA_TUSERDATA);
  1879. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1880. luaL_checktype(L, 2, LUA_TSTRING);
  1881. String folderPath = String(lua_tostring(L, 2));
  1882. inst->createFolder(folderPath);
  1883. return 0;
  1884. }
  1885. static int Polycode_Core_copyDiskItem(lua_State *L) {
  1886. luaL_checktype(L, 1, LUA_TUSERDATA);
  1887. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1888. luaL_checktype(L, 2, LUA_TSTRING);
  1889. String itemPath = String(lua_tostring(L, 2));
  1890. luaL_checktype(L, 3, LUA_TSTRING);
  1891. String destItemPath = String(lua_tostring(L, 3));
  1892. inst->copyDiskItem(itemPath, destItemPath);
  1893. return 0;
  1894. }
  1895. static int Polycode_Core_moveDiskItem(lua_State *L) {
  1896. luaL_checktype(L, 1, LUA_TUSERDATA);
  1897. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1898. luaL_checktype(L, 2, LUA_TSTRING);
  1899. String itemPath = String(lua_tostring(L, 2));
  1900. luaL_checktype(L, 3, LUA_TSTRING);
  1901. String destItemPath = String(lua_tostring(L, 3));
  1902. inst->moveDiskItem(itemPath, destItemPath);
  1903. return 0;
  1904. }
  1905. static int Polycode_Core_removeDiskItem(lua_State *L) {
  1906. luaL_checktype(L, 1, LUA_TUSERDATA);
  1907. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1908. luaL_checktype(L, 2, LUA_TSTRING);
  1909. String itemPath = String(lua_tostring(L, 2));
  1910. inst->removeDiskItem(itemPath);
  1911. return 0;
  1912. }
  1913. static int Polycode_Core_openFolderPicker(lua_State *L) {
  1914. luaL_checktype(L, 1, LUA_TUSERDATA);
  1915. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1916. lua_pushstring(L, inst->openFolderPicker().c_str());
  1917. return 1;
  1918. }
  1919. static int Polycode_Core_setFramerate(lua_State *L) {
  1920. luaL_checktype(L, 1, LUA_TUSERDATA);
  1921. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1922. luaL_checktype(L, 2, LUA_TNUMBER);
  1923. int frameRate = lua_tointeger(L, 2);
  1924. int maxFixedCycles;
  1925. if(lua_isnumber(L, 3)) {
  1926. maxFixedCycles = lua_tointeger(L, 3);
  1927. } else {
  1928. maxFixedCycles = 8;
  1929. }
  1930. inst->setFramerate(frameRate, maxFixedCycles);
  1931. return 0;
  1932. }
  1933. static int Polycode_Core_openFilePicker(lua_State *L) {
  1934. luaL_checktype(L, 1, LUA_TUSERDATA);
  1935. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1936. luaL_checktype(L, 2, LUA_TUSERDATA);
  1937. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1938. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1939. bool allowMultiple = lua_toboolean(L, 3) != 0;
  1940. return 0;
  1941. }
  1942. static int Polycode_Core_saveFilePicker(lua_State *L) {
  1943. luaL_checktype(L, 1, LUA_TUSERDATA);
  1944. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1945. luaL_checktype(L, 2, LUA_TUSERDATA);
  1946. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1947. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  1948. return 1;
  1949. }
  1950. static int Polycode_Core_handleVideoModeChange(lua_State *L) {
  1951. luaL_checktype(L, 1, LUA_TUSERDATA);
  1952. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1953. luaL_checktype(L, 2, LUA_TUSERDATA);
  1954. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  1955. inst->handleVideoModeChange(modeInfo);
  1956. return 0;
  1957. }
  1958. static int Polycode_Core_flushRenderContext(lua_State *L) {
  1959. luaL_checktype(L, 1, LUA_TUSERDATA);
  1960. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1961. inst->flushRenderContext();
  1962. return 0;
  1963. }
  1964. static int Polycode_Core_prepareRenderContext(lua_State *L) {
  1965. luaL_checktype(L, 1, LUA_TUSERDATA);
  1966. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1967. inst->prepareRenderContext();
  1968. return 0;
  1969. }
  1970. static int Polycode_Core_isWindowInitialized(lua_State *L) {
  1971. luaL_checktype(L, 1, LUA_TUSERDATA);
  1972. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1973. lua_pushboolean(L, inst->isWindowInitialized());
  1974. return 1;
  1975. }
  1976. static int Polycode_Core_openFile(lua_State *L) {
  1977. luaL_checktype(L, 1, LUA_TUSERDATA);
  1978. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1979. luaL_checktype(L, 2, LUA_TSTRING);
  1980. String fileName = String(lua_tostring(L, 2));
  1981. luaL_checktype(L, 3, LUA_TSTRING);
  1982. String opts = String(lua_tostring(L, 3));
  1983. PolyBase *ptrRetVal = (PolyBase*)inst->openFile(fileName, opts);
  1984. if(ptrRetVal == NULL) {
  1985. lua_pushnil(L);
  1986. } else {
  1987. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1988. *userdataPtr = ptrRetVal;
  1989. }
  1990. return 1;
  1991. }
  1992. static int Polycode_Core_closeFile(lua_State *L) {
  1993. luaL_checktype(L, 1, LUA_TUSERDATA);
  1994. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1995. luaL_checktype(L, 2, LUA_TUSERDATA);
  1996. CoreFile* file = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  1997. inst->closeFile(file);
  1998. return 0;
  1999. }
  2000. static int Polycode_Core_addFileSource(lua_State *L) {
  2001. luaL_checktype(L, 1, LUA_TUSERDATA);
  2002. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2003. luaL_checktype(L, 2, LUA_TSTRING);
  2004. String type = String(lua_tostring(L, 2));
  2005. luaL_checktype(L, 3, LUA_TSTRING);
  2006. String source = String(lua_tostring(L, 3));
  2007. inst->addFileSource(type, source);
  2008. return 0;
  2009. }
  2010. static int Polycode_Core_removeFileSource(lua_State *L) {
  2011. luaL_checktype(L, 1, LUA_TUSERDATA);
  2012. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2013. luaL_checktype(L, 2, LUA_TSTRING);
  2014. String type = String(lua_tostring(L, 2));
  2015. luaL_checktype(L, 3, LUA_TSTRING);
  2016. String source = String(lua_tostring(L, 3));
  2017. inst->removeFileSource(type, source);
  2018. return 0;
  2019. }
  2020. static int Polycode_Core_parseFolder(lua_State *L) {
  2021. luaL_checktype(L, 1, LUA_TUSERDATA);
  2022. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2023. luaL_checktype(L, 2, LUA_TSTRING);
  2024. String pathString = String(lua_tostring(L, 2));
  2025. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2026. bool showHidden = lua_toboolean(L, 3) != 0;
  2027. return 0;
  2028. }
  2029. static int Polycode_Core_systemParseFolder(lua_State *L) {
  2030. luaL_checktype(L, 1, LUA_TUSERDATA);
  2031. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2032. luaL_checktype(L, 2, LUA_TSTRING);
  2033. String pathString = String(lua_tostring(L, 2));
  2034. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2035. bool showHidden = lua_toboolean(L, 3) != 0;
  2036. luaL_checktype(L, 4, LUA_TUSERDATA);
  2037. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  2038. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  2039. return 1;
  2040. }
  2041. static int Polycode_Core_getResourcePathForFile(lua_State *L) {
  2042. luaL_checktype(L, 1, LUA_TUSERDATA);
  2043. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2044. luaL_checktype(L, 2, LUA_TSTRING);
  2045. String fileName = String(lua_tostring(L, 2));
  2046. lua_pushstring(L, inst->getResourcePathForFile(fileName).c_str());
  2047. return 1;
  2048. }
  2049. static int Polycode_Core_setVideoMode(lua_State *L) {
  2050. luaL_checktype(L, 1, LUA_TUSERDATA);
  2051. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2052. luaL_checktype(L, 2, LUA_TNUMBER);
  2053. int xRes = lua_tointeger(L, 2);
  2054. luaL_checktype(L, 3, LUA_TNUMBER);
  2055. int yRes = lua_tointeger(L, 3);
  2056. luaL_checktype(L, 4, LUA_TBOOLEAN);
  2057. bool fullScreen = lua_toboolean(L, 4) != 0;
  2058. luaL_checktype(L, 5, LUA_TBOOLEAN);
  2059. bool vSync = lua_toboolean(L, 5) != 0;
  2060. luaL_checktype(L, 6, LUA_TNUMBER);
  2061. int aaLevel = lua_tointeger(L, 6);
  2062. luaL_checktype(L, 7, LUA_TNUMBER);
  2063. int anisotropyLevel = lua_tointeger(L, 7);
  2064. bool retinaSupport;
  2065. if(lua_isboolean(L, 8)) {
  2066. retinaSupport = lua_toboolean(L, 8) != 0;
  2067. } else {
  2068. retinaSupport = true;
  2069. }
  2070. inst->setVideoMode(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, retinaSupport);
  2071. return 0;
  2072. }
  2073. static int Polycode_Core_resizeTo(lua_State *L) {
  2074. luaL_checktype(L, 1, LUA_TUSERDATA);
  2075. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2076. luaL_checktype(L, 2, LUA_TNUMBER);
  2077. int xRes = lua_tointeger(L, 2);
  2078. luaL_checktype(L, 3, LUA_TNUMBER);
  2079. int yRes = lua_tointeger(L, 3);
  2080. inst->resizeTo(xRes, yRes);
  2081. return 0;
  2082. }
  2083. static int Polycode_Core_doSleep(lua_State *L) {
  2084. luaL_checktype(L, 1, LUA_TUSERDATA);
  2085. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2086. inst->doSleep();
  2087. return 0;
  2088. }
  2089. static int Polycode_Core_openURL(lua_State *L) {
  2090. luaL_checktype(L, 1, LUA_TUSERDATA);
  2091. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2092. luaL_checktype(L, 2, LUA_TSTRING);
  2093. String url = String(lua_tostring(L, 2));
  2094. inst->openURL(url);
  2095. return 0;
  2096. }
  2097. static int Polycode_Core_getElapsed(lua_State *L) {
  2098. luaL_checktype(L, 1, LUA_TUSERDATA);
  2099. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2100. lua_pushnumber(L, inst->getElapsed());
  2101. return 1;
  2102. }
  2103. static int Polycode_Core_getTicks(lua_State *L) {
  2104. luaL_checktype(L, 1, LUA_TUSERDATA);
  2105. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2106. lua_pushinteger(L, inst->getTicks());
  2107. return 1;
  2108. }
  2109. static int Polycode_Core_getRefreshIntervalMs(lua_State *L) {
  2110. luaL_checktype(L, 1, LUA_TUSERDATA);
  2111. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2112. lua_pushinteger(L, inst->getRefreshIntervalMs());
  2113. return 1;
  2114. }
  2115. static int Polycode_Core_getTimeSleptMs(lua_State *L) {
  2116. luaL_checktype(L, 1, LUA_TUSERDATA);
  2117. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2118. lua_pushinteger(L, inst->getTimeSleptMs());
  2119. return 1;
  2120. }
  2121. static int Polycode_Core_getFixedTimestep(lua_State *L) {
  2122. luaL_checktype(L, 1, LUA_TUSERDATA);
  2123. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2124. lua_pushnumber(L, inst->getFixedTimestep());
  2125. return 1;
  2126. }
  2127. static int Polycode_Core_getTicksFloat(lua_State *L) {
  2128. luaL_checktype(L, 1, LUA_TUSERDATA);
  2129. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2130. lua_pushnumber(L, inst->getTicksFloat());
  2131. return 1;
  2132. }
  2133. static int Polycode_Core_setUserPointer(lua_State *L) {
  2134. luaL_checktype(L, 1, LUA_TUSERDATA);
  2135. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2136. luaL_checktype(L, 2, LUA_TUSERDATA);
  2137. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  2138. inst->setUserPointer(ptr);
  2139. return 0;
  2140. }
  2141. static int Polycode_Core_getUserPointer(lua_State *L) {
  2142. luaL_checktype(L, 1, LUA_TUSERDATA);
  2143. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2144. PolyBase *ptrRetVal = (PolyBase*)inst->getUserPointer();
  2145. if(ptrRetVal == NULL) {
  2146. lua_pushnil(L);
  2147. } else {
  2148. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2149. *userdataPtr = ptrRetVal;
  2150. }
  2151. return 1;
  2152. }
  2153. static int Polycode_Core_executeExternalCommand(lua_State *L) {
  2154. luaL_checktype(L, 1, LUA_TUSERDATA);
  2155. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2156. luaL_checktype(L, 2, LUA_TSTRING);
  2157. String command = String(lua_tostring(L, 2));
  2158. luaL_checktype(L, 3, LUA_TSTRING);
  2159. String args = String(lua_tostring(L, 3));
  2160. luaL_checktype(L, 4, LUA_TSTRING);
  2161. String inDirectory = String(lua_tostring(L, 4));
  2162. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  2163. return 1;
  2164. }
  2165. static int Polycode_Core_getDefaultWorkingDirectory(lua_State *L) {
  2166. luaL_checktype(L, 1, LUA_TUSERDATA);
  2167. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2168. lua_pushstring(L, inst->getDefaultWorkingDirectory().c_str());
  2169. return 1;
  2170. }
  2171. static int Polycode_Core_getUserHomeDirectory(lua_State *L) {
  2172. luaL_checktype(L, 1, LUA_TUSERDATA);
  2173. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2174. lua_pushstring(L, inst->getUserHomeDirectory().c_str());
  2175. return 1;
  2176. }
  2177. static int Polycode_Core_makeApplicationMain(lua_State *L) {
  2178. luaL_checktype(L, 1, LUA_TUSERDATA);
  2179. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2180. inst->makeApplicationMain();
  2181. return 0;
  2182. }
  2183. static int Polycode_Core_getEventMutex(lua_State *L) {
  2184. luaL_checktype(L, 1, LUA_TUSERDATA);
  2185. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2186. PolyBase *ptrRetVal = (PolyBase*)inst->getEventMutex();
  2187. if(ptrRetVal == NULL) {
  2188. lua_pushnil(L);
  2189. } else {
  2190. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2191. *userdataPtr = ptrRetVal;
  2192. }
  2193. return 1;
  2194. }
  2195. static int Polycode_Core_removeThread(lua_State *L) {
  2196. luaL_checktype(L, 1, LUA_TUSERDATA);
  2197. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2198. luaL_checktype(L, 2, LUA_TUSERDATA);
  2199. Threaded* thread = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  2200. inst->removeThread(thread);
  2201. return 0;
  2202. }
  2203. static int Polycode_delete_Core(lua_State *L) {
  2204. luaL_checktype(L, 1, LUA_TUSERDATA);
  2205. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2206. delete ((Core*) *inst);
  2207. *inst = NULL;
  2208. return 0;
  2209. }
  2210. static int Polycode_VideoModeChangeInfo_get_xRes(lua_State *L) {
  2211. luaL_checktype(L, 1, LUA_TUSERDATA);
  2212. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2213. lua_pushinteger(L, inst->xRes);
  2214. return 1;
  2215. }
  2216. static int Polycode_VideoModeChangeInfo_get_yRes(lua_State *L) {
  2217. luaL_checktype(L, 1, LUA_TUSERDATA);
  2218. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2219. lua_pushinteger(L, inst->yRes);
  2220. return 1;
  2221. }
  2222. static int Polycode_VideoModeChangeInfo_get_fullScreen(lua_State *L) {
  2223. luaL_checktype(L, 1, LUA_TUSERDATA);
  2224. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2225. lua_pushboolean(L, inst->fullScreen);
  2226. return 1;
  2227. }
  2228. static int Polycode_VideoModeChangeInfo_get_vSync(lua_State *L) {
  2229. luaL_checktype(L, 1, LUA_TUSERDATA);
  2230. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2231. lua_pushboolean(L, inst->vSync);
  2232. return 1;
  2233. }
  2234. static int Polycode_VideoModeChangeInfo_get_aaLevel(lua_State *L) {
  2235. luaL_checktype(L, 1, LUA_TUSERDATA);
  2236. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2237. lua_pushinteger(L, inst->aaLevel);
  2238. return 1;
  2239. }
  2240. static int Polycode_VideoModeChangeInfo_get_anisotropyLevel(lua_State *L) {
  2241. luaL_checktype(L, 1, LUA_TUSERDATA);
  2242. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2243. lua_pushinteger(L, inst->anisotropyLevel);
  2244. return 1;
  2245. }
  2246. static int Polycode_VideoModeChangeInfo_get_retinaSupport(lua_State *L) {
  2247. luaL_checktype(L, 1, LUA_TUSERDATA);
  2248. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2249. lua_pushboolean(L, inst->retinaSupport);
  2250. return 1;
  2251. }
  2252. static int Polycode_VideoModeChangeInfo_set_xRes(lua_State *L) {
  2253. luaL_checktype(L, 1, LUA_TUSERDATA);
  2254. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2255. int param = lua_tointeger(L, 2);
  2256. inst->xRes = param;
  2257. return 0;
  2258. }
  2259. static int Polycode_VideoModeChangeInfo_set_yRes(lua_State *L) {
  2260. luaL_checktype(L, 1, LUA_TUSERDATA);
  2261. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2262. int param = lua_tointeger(L, 2);
  2263. inst->yRes = param;
  2264. return 0;
  2265. }
  2266. static int Polycode_VideoModeChangeInfo_set_fullScreen(lua_State *L) {
  2267. luaL_checktype(L, 1, LUA_TUSERDATA);
  2268. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2269. bool param = lua_toboolean(L, 2) != 0;
  2270. inst->fullScreen = param;
  2271. return 0;
  2272. }
  2273. static int Polycode_VideoModeChangeInfo_set_vSync(lua_State *L) {
  2274. luaL_checktype(L, 1, LUA_TUSERDATA);
  2275. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2276. bool param = lua_toboolean(L, 2) != 0;
  2277. inst->vSync = param;
  2278. return 0;
  2279. }
  2280. static int Polycode_VideoModeChangeInfo_set_aaLevel(lua_State *L) {
  2281. luaL_checktype(L, 1, LUA_TUSERDATA);
  2282. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2283. int param = lua_tointeger(L, 2);
  2284. inst->aaLevel = param;
  2285. return 0;
  2286. }
  2287. static int Polycode_VideoModeChangeInfo_set_anisotropyLevel(lua_State *L) {
  2288. luaL_checktype(L, 1, LUA_TUSERDATA);
  2289. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2290. int param = lua_tointeger(L, 2);
  2291. inst->anisotropyLevel = param;
  2292. return 0;
  2293. }
  2294. static int Polycode_VideoModeChangeInfo_set_retinaSupport(lua_State *L) {
  2295. luaL_checktype(L, 1, LUA_TUSERDATA);
  2296. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2297. bool param = lua_toboolean(L, 2) != 0;
  2298. inst->retinaSupport = param;
  2299. return 0;
  2300. }
  2301. static int Polycode_delete_VideoModeChangeInfo(lua_State *L) {
  2302. luaL_checktype(L, 1, LUA_TUSERDATA);
  2303. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2304. delete ((VideoModeChangeInfo*) *inst);
  2305. *inst = NULL;
  2306. return 0;
  2307. }
  2308. static int Polycode_PolycodeViewBase_get_resizable(lua_State *L) {
  2309. luaL_checktype(L, 1, LUA_TUSERDATA);
  2310. PolycodeViewBase *inst = (PolycodeViewBase*) *((PolyBase**)lua_touserdata(L, 1));
  2311. lua_pushboolean(L, inst->resizable);
  2312. return 1;
  2313. }
  2314. static int Polycode_PolycodeViewBase_set_resizable(lua_State *L) {
  2315. luaL_checktype(L, 1, LUA_TUSERDATA);
  2316. PolycodeViewBase *inst = (PolycodeViewBase*) *((PolyBase**)lua_touserdata(L, 1));
  2317. bool param = lua_toboolean(L, 2) != 0;
  2318. inst->resizable = param;
  2319. return 0;
  2320. }
  2321. static int Polycode_PolycodeViewBase(lua_State *L) {
  2322. PolycodeViewBase *inst = new PolycodeViewBase();
  2323. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2324. *userdataPtr = (PolyBase*)inst;
  2325. luaL_getmetatable(L, "Polycode.PolycodeViewBase");
  2326. lua_setmetatable(L, -2);
  2327. return 1;
  2328. }
  2329. static int Polycode_delete_PolycodeViewBase(lua_State *L) {
  2330. luaL_checktype(L, 1, LUA_TUSERDATA);
  2331. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2332. delete ((PolycodeViewBase*) *inst);
  2333. *inst = NULL;
  2334. return 0;
  2335. }
  2336. static int Polycode_DummyCore(lua_State *L) {
  2337. DummyCore *inst = new DummyCore();
  2338. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2339. *userdataPtr = (PolyBase*)inst;
  2340. luaL_getmetatable(L, "Polycode.DummyCore");
  2341. lua_setmetatable(L, -2);
  2342. return 1;
  2343. }
  2344. static int Polycode_DummyCore_Render(lua_State *L) {
  2345. luaL_checktype(L, 1, LUA_TUSERDATA);
  2346. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2347. inst->Render();
  2348. return 0;
  2349. }
  2350. static int Polycode_DummyCore_systemUpdate(lua_State *L) {
  2351. luaL_checktype(L, 1, LUA_TUSERDATA);
  2352. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2353. lua_pushboolean(L, inst->systemUpdate());
  2354. return 1;
  2355. }
  2356. static int Polycode_DummyCore_setCursor(lua_State *L) {
  2357. luaL_checktype(L, 1, LUA_TUSERDATA);
  2358. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2359. luaL_checktype(L, 2, LUA_TNUMBER);
  2360. int cursorType = lua_tointeger(L, 2);
  2361. inst->setCursor(cursorType);
  2362. return 0;
  2363. }
  2364. static int Polycode_DummyCore_createThread(lua_State *L) {
  2365. luaL_checktype(L, 1, LUA_TUSERDATA);
  2366. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2367. luaL_checktype(L, 2, LUA_TUSERDATA);
  2368. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  2369. inst->createThread(target);
  2370. return 0;
  2371. }
  2372. static int Polycode_DummyCore_createMutex(lua_State *L) {
  2373. luaL_checktype(L, 1, LUA_TUSERDATA);
  2374. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2375. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  2376. if(ptrRetVal == NULL) {
  2377. lua_pushnil(L);
  2378. } else {
  2379. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2380. *userdataPtr = ptrRetVal;
  2381. }
  2382. return 1;
  2383. }
  2384. static int Polycode_DummyCore_copyStringToClipboard(lua_State *L) {
  2385. luaL_checktype(L, 1, LUA_TUSERDATA);
  2386. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2387. luaL_checktype(L, 2, LUA_TSTRING);
  2388. String str = String(lua_tostring(L, 2));
  2389. inst->copyStringToClipboard(str);
  2390. return 0;
  2391. }
  2392. static int Polycode_DummyCore_getClipboardString(lua_State *L) {
  2393. luaL_checktype(L, 1, LUA_TUSERDATA);
  2394. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2395. lua_pushstring(L, inst->getClipboardString().c_str());
  2396. return 1;
  2397. }
  2398. static int Polycode_DummyCore_createFolder(lua_State *L) {
  2399. luaL_checktype(L, 1, LUA_TUSERDATA);
  2400. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2401. luaL_checktype(L, 2, LUA_TSTRING);
  2402. String folderPath = String(lua_tostring(L, 2));
  2403. inst->createFolder(folderPath);
  2404. return 0;
  2405. }
  2406. static int Polycode_DummyCore_copyDiskItem(lua_State *L) {
  2407. luaL_checktype(L, 1, LUA_TUSERDATA);
  2408. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2409. luaL_checktype(L, 2, LUA_TSTRING);
  2410. String itemPath = String(lua_tostring(L, 2));
  2411. luaL_checktype(L, 3, LUA_TSTRING);
  2412. String destItemPath = String(lua_tostring(L, 3));
  2413. inst->copyDiskItem(itemPath, destItemPath);
  2414. return 0;
  2415. }
  2416. static int Polycode_DummyCore_moveDiskItem(lua_State *L) {
  2417. luaL_checktype(L, 1, LUA_TUSERDATA);
  2418. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2419. luaL_checktype(L, 2, LUA_TSTRING);
  2420. String itemPath = String(lua_tostring(L, 2));
  2421. luaL_checktype(L, 3, LUA_TSTRING);
  2422. String destItemPath = String(lua_tostring(L, 3));
  2423. inst->moveDiskItem(itemPath, destItemPath);
  2424. return 0;
  2425. }
  2426. static int Polycode_DummyCore_removeDiskItem(lua_State *L) {
  2427. luaL_checktype(L, 1, LUA_TUSERDATA);
  2428. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2429. luaL_checktype(L, 2, LUA_TSTRING);
  2430. String itemPath = String(lua_tostring(L, 2));
  2431. inst->removeDiskItem(itemPath);
  2432. return 0;
  2433. }
  2434. static int Polycode_DummyCore_openFolderPicker(lua_State *L) {
  2435. luaL_checktype(L, 1, LUA_TUSERDATA);
  2436. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2437. lua_pushstring(L, inst->openFolderPicker().c_str());
  2438. return 1;
  2439. }
  2440. static int Polycode_DummyCore_openFilePicker(lua_State *L) {
  2441. luaL_checktype(L, 1, LUA_TUSERDATA);
  2442. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2443. luaL_checktype(L, 2, LUA_TUSERDATA);
  2444. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  2445. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2446. bool allowMultiple = lua_toboolean(L, 3) != 0;
  2447. return 0;
  2448. }
  2449. static int Polycode_DummyCore_saveFilePicker(lua_State *L) {
  2450. luaL_checktype(L, 1, LUA_TUSERDATA);
  2451. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2452. luaL_checktype(L, 2, LUA_TUSERDATA);
  2453. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  2454. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  2455. return 1;
  2456. }
  2457. static int Polycode_DummyCore_handleVideoModeChange(lua_State *L) {
  2458. luaL_checktype(L, 1, LUA_TUSERDATA);
  2459. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2460. luaL_checktype(L, 2, LUA_TUSERDATA);
  2461. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  2462. inst->handleVideoModeChange(modeInfo);
  2463. return 0;
  2464. }
  2465. static int Polycode_DummyCore_flushRenderContext(lua_State *L) {
  2466. luaL_checktype(L, 1, LUA_TUSERDATA);
  2467. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2468. inst->flushRenderContext();
  2469. return 0;
  2470. }
  2471. static int Polycode_DummyCore_openURL(lua_State *L) {
  2472. luaL_checktype(L, 1, LUA_TUSERDATA);
  2473. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2474. luaL_checktype(L, 2, LUA_TSTRING);
  2475. String url = String(lua_tostring(L, 2));
  2476. inst->openURL(url);
  2477. return 0;
  2478. }
  2479. static int Polycode_DummyCore_getTicks(lua_State *L) {
  2480. luaL_checktype(L, 1, LUA_TUSERDATA);
  2481. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2482. lua_pushinteger(L, inst->getTicks());
  2483. return 1;
  2484. }
  2485. static int Polycode_DummyCore_executeExternalCommand(lua_State *L) {
  2486. luaL_checktype(L, 1, LUA_TUSERDATA);
  2487. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2488. luaL_checktype(L, 2, LUA_TSTRING);
  2489. String command = String(lua_tostring(L, 2));
  2490. luaL_checktype(L, 3, LUA_TSTRING);
  2491. String args = String(lua_tostring(L, 3));
  2492. luaL_checktype(L, 4, LUA_TSTRING);
  2493. String inDirectory = String(lua_tostring(L, 4));
  2494. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  2495. return 1;
  2496. }
  2497. static int Polycode_DummyCore_systemParseFolder(lua_State *L) {
  2498. luaL_checktype(L, 1, LUA_TUSERDATA);
  2499. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2500. luaL_checktype(L, 2, LUA_TSTRING);
  2501. String pathString = String(lua_tostring(L, 2));
  2502. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2503. bool showHidden = lua_toboolean(L, 3) != 0;
  2504. luaL_checktype(L, 4, LUA_TUSERDATA);
  2505. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  2506. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  2507. return 1;
  2508. }
  2509. static int Polycode_delete_DummyCore(lua_State *L) {
  2510. luaL_checktype(L, 1, LUA_TUSERDATA);
  2511. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2512. delete ((DummyCore*) *inst);
  2513. *inst = NULL;
  2514. return 0;
  2515. }
  2516. static int Polycode_TimeInfo_get_seconds(lua_State *L) {
  2517. luaL_checktype(L, 1, LUA_TUSERDATA);
  2518. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2519. lua_pushinteger(L, inst->seconds);
  2520. return 1;
  2521. }
  2522. static int Polycode_TimeInfo_get_minutes(lua_State *L) {
  2523. luaL_checktype(L, 1, LUA_TUSERDATA);
  2524. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2525. lua_pushinteger(L, inst->minutes);
  2526. return 1;
  2527. }
  2528. static int Polycode_TimeInfo_get_hours(lua_State *L) {
  2529. luaL_checktype(L, 1, LUA_TUSERDATA);
  2530. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2531. lua_pushinteger(L, inst->hours);
  2532. return 1;
  2533. }
  2534. static int Polycode_TimeInfo_get_month(lua_State *L) {
  2535. luaL_checktype(L, 1, LUA_TUSERDATA);
  2536. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2537. lua_pushinteger(L, inst->month);
  2538. return 1;
  2539. }
  2540. static int Polycode_TimeInfo_get_monthDay(lua_State *L) {
  2541. luaL_checktype(L, 1, LUA_TUSERDATA);
  2542. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2543. lua_pushinteger(L, inst->monthDay);
  2544. return 1;
  2545. }
  2546. static int Polycode_TimeInfo_get_weekDay(lua_State *L) {
  2547. luaL_checktype(L, 1, LUA_TUSERDATA);
  2548. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2549. lua_pushinteger(L, inst->weekDay);
  2550. return 1;
  2551. }
  2552. static int Polycode_TimeInfo_get_year(lua_State *L) {
  2553. luaL_checktype(L, 1, LUA_TUSERDATA);
  2554. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2555. lua_pushinteger(L, inst->year);
  2556. return 1;
  2557. }
  2558. static int Polycode_TimeInfo_get_yearDay(lua_State *L) {
  2559. luaL_checktype(L, 1, LUA_TUSERDATA);
  2560. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2561. lua_pushinteger(L, inst->yearDay);
  2562. return 1;
  2563. }
  2564. static int Polycode_TimeInfo_set_seconds(lua_State *L) {
  2565. luaL_checktype(L, 1, LUA_TUSERDATA);
  2566. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2567. int param = lua_tointeger(L, 2);
  2568. inst->seconds = param;
  2569. return 0;
  2570. }
  2571. static int Polycode_TimeInfo_set_minutes(lua_State *L) {
  2572. luaL_checktype(L, 1, LUA_TUSERDATA);
  2573. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2574. int param = lua_tointeger(L, 2);
  2575. inst->minutes = param;
  2576. return 0;
  2577. }
  2578. static int Polycode_TimeInfo_set_hours(lua_State *L) {
  2579. luaL_checktype(L, 1, LUA_TUSERDATA);
  2580. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2581. int param = lua_tointeger(L, 2);
  2582. inst->hours = param;
  2583. return 0;
  2584. }
  2585. static int Polycode_TimeInfo_set_month(lua_State *L) {
  2586. luaL_checktype(L, 1, LUA_TUSERDATA);
  2587. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2588. int param = lua_tointeger(L, 2);
  2589. inst->month = param;
  2590. return 0;
  2591. }
  2592. static int Polycode_TimeInfo_set_monthDay(lua_State *L) {
  2593. luaL_checktype(L, 1, LUA_TUSERDATA);
  2594. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2595. int param = lua_tointeger(L, 2);
  2596. inst->monthDay = param;
  2597. return 0;
  2598. }
  2599. static int Polycode_TimeInfo_set_weekDay(lua_State *L) {
  2600. luaL_checktype(L, 1, LUA_TUSERDATA);
  2601. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2602. int param = lua_tointeger(L, 2);
  2603. inst->weekDay = param;
  2604. return 0;
  2605. }
  2606. static int Polycode_TimeInfo_set_year(lua_State *L) {
  2607. luaL_checktype(L, 1, LUA_TUSERDATA);
  2608. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2609. int param = lua_tointeger(L, 2);
  2610. inst->year = param;
  2611. return 0;
  2612. }
  2613. static int Polycode_TimeInfo_set_yearDay(lua_State *L) {
  2614. luaL_checktype(L, 1, LUA_TUSERDATA);
  2615. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2616. int param = lua_tointeger(L, 2);
  2617. inst->yearDay = param;
  2618. return 0;
  2619. }
  2620. static int Polycode_TimeInfo(lua_State *L) {
  2621. TimeInfo *inst = new TimeInfo();
  2622. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2623. *userdataPtr = (PolyBase*)inst;
  2624. luaL_getmetatable(L, "Polycode.TimeInfo");
  2625. lua_setmetatable(L, -2);
  2626. return 1;
  2627. }
  2628. static int Polycode_delete_TimeInfo(lua_State *L) {
  2629. luaL_checktype(L, 1, LUA_TUSERDATA);
  2630. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2631. delete ((TimeInfo*) *inst);
  2632. *inst = NULL;
  2633. return 0;
  2634. }
  2635. static int Polycode_CoreMotionEvent_get_amount(lua_State *L) {
  2636. luaL_checktype(L, 1, LUA_TUSERDATA);
  2637. CoreMotionEvent *inst = (CoreMotionEvent*) *((PolyBase**)lua_touserdata(L, 1));
  2638. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2639. *userdataPtr = (PolyBase*)&inst->amount;
  2640. return 1;
  2641. }
  2642. static int Polycode_CoreMotionEvent_set_amount(lua_State *L) {
  2643. luaL_checktype(L, 1, LUA_TUSERDATA);
  2644. CoreMotionEvent *inst = (CoreMotionEvent*) *((PolyBase**)lua_touserdata(L, 1));
  2645. luaL_checktype(L, 2, LUA_TUSERDATA);
  2646. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  2647. inst->amount = *argInst;
  2648. return 0;
  2649. }
  2650. static int Polycode_CoreMotionEvent(lua_State *L) {
  2651. CoreMotionEvent *inst = new CoreMotionEvent();
  2652. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2653. *userdataPtr = (PolyBase*)inst;
  2654. luaL_getmetatable(L, "Polycode.CoreMotionEvent");
  2655. lua_setmetatable(L, -2);
  2656. return 1;
  2657. }
  2658. static int Polycode_delete_CoreMotionEvent(lua_State *L) {
  2659. luaL_checktype(L, 1, LUA_TUSERDATA);
  2660. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2661. delete ((CoreMotionEvent*) *inst);
  2662. *inst = NULL;
  2663. return 0;
  2664. }
  2665. static int Polycode_CoreFileExtension_get_extension(lua_State *L) {
  2666. luaL_checktype(L, 1, LUA_TUSERDATA);
  2667. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2668. lua_pushstring(L, inst->extension.c_str());
  2669. return 1;
  2670. }
  2671. static int Polycode_CoreFileExtension_get_description(lua_State *L) {
  2672. luaL_checktype(L, 1, LUA_TUSERDATA);
  2673. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2674. lua_pushstring(L, inst->description.c_str());
  2675. return 1;
  2676. }
  2677. static int Polycode_CoreFileExtension_set_extension(lua_State *L) {
  2678. luaL_checktype(L, 1, LUA_TUSERDATA);
  2679. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2680. String param = lua_tostring(L, 2);
  2681. inst->extension = param;
  2682. return 0;
  2683. }
  2684. static int Polycode_CoreFileExtension_set_description(lua_State *L) {
  2685. luaL_checktype(L, 1, LUA_TUSERDATA);
  2686. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2687. String param = lua_tostring(L, 2);
  2688. inst->description = param;
  2689. return 0;
  2690. }
  2691. static int Polycode_CoreFileExtension(lua_State *L) {
  2692. CoreFileExtension *inst = new CoreFileExtension();
  2693. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2694. *userdataPtr = (PolyBase*)inst;
  2695. luaL_getmetatable(L, "Polycode.CoreFileExtension");
  2696. lua_setmetatable(L, -2);
  2697. return 1;
  2698. }
  2699. static int Polycode_delete_CoreFileExtension(lua_State *L) {
  2700. luaL_checktype(L, 1, LUA_TUSERDATA);
  2701. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2702. delete ((CoreFileExtension*) *inst);
  2703. *inst = NULL;
  2704. return 0;
  2705. }
  2706. static int Polycode_OSFileEntry_get_name(lua_State *L) {
  2707. luaL_checktype(L, 1, LUA_TUSERDATA);
  2708. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2709. lua_pushstring(L, inst->name.c_str());
  2710. return 1;
  2711. }
  2712. static int Polycode_OSFileEntry_get_extension(lua_State *L) {
  2713. luaL_checktype(L, 1, LUA_TUSERDATA);
  2714. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2715. lua_pushstring(L, inst->extension.c_str());
  2716. return 1;
  2717. }
  2718. static int Polycode_OSFileEntry_get_nameWithoutExtension(lua_State *L) {
  2719. luaL_checktype(L, 1, LUA_TUSERDATA);
  2720. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2721. lua_pushstring(L, inst->nameWithoutExtension.c_str());
  2722. return 1;
  2723. }
  2724. static int Polycode_OSFileEntry_get_basePath(lua_State *L) {
  2725. luaL_checktype(L, 1, LUA_TUSERDATA);
  2726. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2727. lua_pushstring(L, inst->basePath.c_str());
  2728. return 1;
  2729. }
  2730. static int Polycode_OSFileEntry_get_fullPath(lua_State *L) {
  2731. luaL_checktype(L, 1, LUA_TUSERDATA);
  2732. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2733. lua_pushstring(L, inst->fullPath.c_str());
  2734. return 1;
  2735. }
  2736. static int Polycode_OSFileEntry_get_type(lua_State *L) {
  2737. luaL_checktype(L, 1, LUA_TUSERDATA);
  2738. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2739. lua_pushinteger(L, inst->type);
  2740. return 1;
  2741. }
  2742. static int Polycode_OSFileEntry_set_name(lua_State *L) {
  2743. luaL_checktype(L, 1, LUA_TUSERDATA);
  2744. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2745. String param = lua_tostring(L, 2);
  2746. inst->name = param;
  2747. return 0;
  2748. }
  2749. static int Polycode_OSFileEntry_set_extension(lua_State *L) {
  2750. luaL_checktype(L, 1, LUA_TUSERDATA);
  2751. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2752. String param = lua_tostring(L, 2);
  2753. inst->extension = param;
  2754. return 0;
  2755. }
  2756. static int Polycode_OSFileEntry_set_nameWithoutExtension(lua_State *L) {
  2757. luaL_checktype(L, 1, LUA_TUSERDATA);
  2758. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2759. String param = lua_tostring(L, 2);
  2760. inst->nameWithoutExtension = param;
  2761. return 0;
  2762. }
  2763. static int Polycode_OSFileEntry_set_basePath(lua_State *L) {
  2764. luaL_checktype(L, 1, LUA_TUSERDATA);
  2765. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2766. String param = lua_tostring(L, 2);
  2767. inst->basePath = param;
  2768. return 0;
  2769. }
  2770. static int Polycode_OSFileEntry_set_fullPath(lua_State *L) {
  2771. luaL_checktype(L, 1, LUA_TUSERDATA);
  2772. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2773. String param = lua_tostring(L, 2);
  2774. inst->fullPath = param;
  2775. return 0;
  2776. }
  2777. static int Polycode_OSFileEntry_set_type(lua_State *L) {
  2778. luaL_checktype(L, 1, LUA_TUSERDATA);
  2779. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2780. int param = lua_tointeger(L, 2);
  2781. inst->type = param;
  2782. return 0;
  2783. }
  2784. static int Polycode_OSFileEntry(lua_State *L) {
  2785. OSFileEntry *inst = new OSFileEntry();
  2786. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2787. *userdataPtr = (PolyBase*)inst;
  2788. luaL_getmetatable(L, "Polycode.OSFileEntry");
  2789. lua_setmetatable(L, -2);
  2790. return 1;
  2791. }
  2792. static int Polycode_OSFileEntry_init(lua_State *L) {
  2793. luaL_checktype(L, 1, LUA_TUSERDATA);
  2794. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2795. luaL_checktype(L, 2, LUA_TSTRING);
  2796. String path = String(lua_tostring(L, 2));
  2797. luaL_checktype(L, 3, LUA_TSTRING);
  2798. String name = String(lua_tostring(L, 3));
  2799. luaL_checktype(L, 4, LUA_TNUMBER);
  2800. int type = lua_tointeger(L, 4);
  2801. inst->init(path, name, type);
  2802. return 0;
  2803. }
  2804. static int Polycode_delete_OSFileEntry(lua_State *L) {
  2805. luaL_checktype(L, 1, LUA_TUSERDATA);
  2806. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2807. delete ((OSFileEntry*) *inst);
  2808. *inst = NULL;
  2809. return 0;
  2810. }
  2811. static int Polycode_CoreInput_get_simulateTouchWithMouse(lua_State *L) {
  2812. luaL_checktype(L, 1, LUA_TUSERDATA);
  2813. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2814. lua_pushboolean(L, inst->simulateTouchWithMouse);
  2815. return 1;
  2816. }
  2817. static int Polycode_CoreInput_get_simulateTouchAsPen(lua_State *L) {
  2818. luaL_checktype(L, 1, LUA_TUSERDATA);
  2819. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2820. lua_pushboolean(L, inst->simulateTouchAsPen);
  2821. return 1;
  2822. }
  2823. static int Polycode_CoreInput_get_simulateMouseWithTouch(lua_State *L) {
  2824. luaL_checktype(L, 1, LUA_TUSERDATA);
  2825. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2826. lua_pushboolean(L, inst->simulateMouseWithTouch);
  2827. return 1;
  2828. }
  2829. static int Polycode_CoreInput_get_ignoreOffScreenTouch(lua_State *L) {
  2830. luaL_checktype(L, 1, LUA_TUSERDATA);
  2831. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2832. lua_pushboolean(L, inst->ignoreOffScreenTouch);
  2833. return 1;
  2834. }
  2835. static int Polycode_CoreInput_get_keyRepeat(lua_State *L) {
  2836. luaL_checktype(L, 1, LUA_TUSERDATA);
  2837. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2838. lua_pushboolean(L, inst->keyRepeat);
  2839. return 1;
  2840. }
  2841. static int Polycode_CoreInput_get_mousePosition(lua_State *L) {
  2842. luaL_checktype(L, 1, LUA_TUSERDATA);
  2843. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2844. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2845. *userdataPtr = (PolyBase*)&inst->mousePosition;
  2846. return 1;
  2847. }
  2848. static int Polycode_CoreInput_get_deltaMousePosition(lua_State *L) {
  2849. luaL_checktype(L, 1, LUA_TUSERDATA);
  2850. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2851. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2852. *userdataPtr = (PolyBase*)&inst->deltaMousePosition;
  2853. return 1;
  2854. }
  2855. static int Polycode_CoreInput_set_simulateTouchWithMouse(lua_State *L) {
  2856. luaL_checktype(L, 1, LUA_TUSERDATA);
  2857. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2858. bool param = lua_toboolean(L, 2) != 0;
  2859. inst->simulateTouchWithMouse = param;
  2860. return 0;
  2861. }
  2862. static int Polycode_CoreInput_set_simulateTouchAsPen(lua_State *L) {
  2863. luaL_checktype(L, 1, LUA_TUSERDATA);
  2864. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2865. bool param = lua_toboolean(L, 2) != 0;
  2866. inst->simulateTouchAsPen = param;
  2867. return 0;
  2868. }
  2869. static int Polycode_CoreInput_set_simulateMouseWithTouch(lua_State *L) {
  2870. luaL_checktype(L, 1, LUA_TUSERDATA);
  2871. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2872. bool param = lua_toboolean(L, 2) != 0;
  2873. inst->simulateMouseWithTouch = param;
  2874. return 0;
  2875. }
  2876. static int Polycode_CoreInput_set_ignoreOffScreenTouch(lua_State *L) {
  2877. luaL_checktype(L, 1, LUA_TUSERDATA);
  2878. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2879. bool param = lua_toboolean(L, 2) != 0;
  2880. inst->ignoreOffScreenTouch = param;
  2881. return 0;
  2882. }
  2883. static int Polycode_CoreInput_set_keyRepeat(lua_State *L) {
  2884. luaL_checktype(L, 1, LUA_TUSERDATA);
  2885. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2886. bool param = lua_toboolean(L, 2) != 0;
  2887. inst->keyRepeat = param;
  2888. return 0;
  2889. }
  2890. static int Polycode_CoreInput_set_mousePosition(lua_State *L) {
  2891. luaL_checktype(L, 1, LUA_TUSERDATA);
  2892. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2893. luaL_checktype(L, 2, LUA_TUSERDATA);
  2894. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  2895. inst->mousePosition = *argInst;
  2896. return 0;
  2897. }
  2898. static int Polycode_CoreInput_set_deltaMousePosition(lua_State *L) {
  2899. luaL_checktype(L, 1, LUA_TUSERDATA);
  2900. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2901. luaL_checktype(L, 2, LUA_TUSERDATA);
  2902. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  2903. inst->deltaMousePosition = *argInst;
  2904. return 0;
  2905. }
  2906. static int Polycode_CoreInput(lua_State *L) {
  2907. CoreInput *inst = new CoreInput();
  2908. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2909. *userdataPtr = (PolyBase*)inst;
  2910. luaL_getmetatable(L, "Polycode.CoreInput");
  2911. lua_setmetatable(L, -2);
  2912. return 1;
  2913. }
  2914. static int Polycode_CoreInput_getMousePosition(lua_State *L) {
  2915. luaL_checktype(L, 1, LUA_TUSERDATA);
  2916. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2917. Vector2 *retInst = new Vector2();
  2918. *retInst = inst->getMousePosition();
  2919. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2920. luaL_getmetatable(L, "Polycode.Vector2");
  2921. lua_setmetatable(L, -2);
  2922. *userdataPtr = (PolyBase*)retInst;
  2923. return 1;
  2924. }
  2925. static int Polycode_CoreInput_getKeyState(lua_State *L) {
  2926. luaL_checktype(L, 1, LUA_TUSERDATA);
  2927. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2928. luaL_checktype(L, 2, LUA_TNUMBER);
  2929. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  2930. lua_pushboolean(L, inst->getKeyState(keyCode));
  2931. return 1;
  2932. }
  2933. static int Polycode_CoreInput_getJoystickButtonState(lua_State *L) {
  2934. luaL_checktype(L, 1, LUA_TUSERDATA);
  2935. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2936. luaL_checktype(L, 2, LUA_TNUMBER);
  2937. int joystickIndex = lua_tointeger(L, 2);
  2938. luaL_checktype(L, 3, LUA_TNUMBER);
  2939. int button = lua_tointeger(L, 3);
  2940. lua_pushboolean(L, inst->getJoystickButtonState(joystickIndex, button));
  2941. return 1;
  2942. }
  2943. static int Polycode_CoreInput_getJoystickAxisValue(lua_State *L) {
  2944. luaL_checktype(L, 1, LUA_TUSERDATA);
  2945. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2946. luaL_checktype(L, 2, LUA_TNUMBER);
  2947. int joystickIndex = lua_tointeger(L, 2);
  2948. luaL_checktype(L, 3, LUA_TNUMBER);
  2949. int axis = lua_tointeger(L, 3);
  2950. lua_pushnumber(L, inst->getJoystickAxisValue(joystickIndex, axis));
  2951. return 1;
  2952. }
  2953. static int Polycode_CoreInput_getMouseDelta(lua_State *L) {
  2954. luaL_checktype(L, 1, LUA_TUSERDATA);
  2955. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2956. Vector2 *retInst = new Vector2();
  2957. *retInst = inst->getMouseDelta();
  2958. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2959. luaL_getmetatable(L, "Polycode.Vector2");
  2960. lua_setmetatable(L, -2);
  2961. *userdataPtr = (PolyBase*)retInst;
  2962. return 1;
  2963. }
  2964. static int Polycode_CoreInput_getMouseButtonState(lua_State *L) {
  2965. luaL_checktype(L, 1, LUA_TUSERDATA);
  2966. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2967. luaL_checktype(L, 2, LUA_TNUMBER);
  2968. int mouseButton = lua_tointeger(L, 2);
  2969. lua_pushboolean(L, inst->getMouseButtonState(mouseButton));
  2970. return 1;
  2971. }
  2972. static int Polycode_CoreInput_getNumJoysticks(lua_State *L) {
  2973. luaL_checktype(L, 1, LUA_TUSERDATA);
  2974. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2975. lua_pushinteger(L, inst->getNumJoysticks());
  2976. return 1;
  2977. }
  2978. static int Polycode_CoreInput_getJoystickInfoByIndex(lua_State *L) {
  2979. luaL_checktype(L, 1, LUA_TUSERDATA);
  2980. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2981. luaL_checktype(L, 2, LUA_TNUMBER);
  2982. int index = lua_tointeger(L, 2);
  2983. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByIndex(index);
  2984. if(ptrRetVal == NULL) {
  2985. lua_pushnil(L);
  2986. } else {
  2987. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2988. *userdataPtr = ptrRetVal;
  2989. }
  2990. return 1;
  2991. }
  2992. static int Polycode_CoreInput_getJoystickInfoByID(lua_State *L) {
  2993. luaL_checktype(L, 1, LUA_TUSERDATA);
  2994. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2995. luaL_checktype(L, 2, LUA_TNUMBER);
  2996. int deviceID = lua_tointeger(L, 2);
  2997. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByID(deviceID);
  2998. if(ptrRetVal == NULL) {
  2999. lua_pushnil(L);
  3000. } else {
  3001. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3002. *userdataPtr = ptrRetVal;
  3003. }
  3004. return 1;
  3005. }
  3006. static int Polycode_CoreInput_addJoystick(lua_State *L) {
  3007. luaL_checktype(L, 1, LUA_TUSERDATA);
  3008. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3009. luaL_checktype(L, 2, LUA_TNUMBER);
  3010. int deviceID = lua_tointeger(L, 2);
  3011. inst->addJoystick(deviceID);
  3012. return 0;
  3013. }
  3014. static int Polycode_CoreInput_removeJoystick(lua_State *L) {
  3015. luaL_checktype(L, 1, LUA_TUSERDATA);
  3016. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3017. luaL_checktype(L, 2, LUA_TNUMBER);
  3018. int deviceID = lua_tointeger(L, 2);
  3019. inst->removeJoystick(deviceID);
  3020. return 0;
  3021. }
  3022. static int Polycode_CoreInput_joystickAxisMoved(lua_State *L) {
  3023. luaL_checktype(L, 1, LUA_TUSERDATA);
  3024. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3025. luaL_checktype(L, 2, LUA_TNUMBER);
  3026. int axisID = lua_tointeger(L, 2);
  3027. luaL_checktype(L, 3, LUA_TNUMBER);
  3028. Number value = lua_tonumber(L, 3);
  3029. luaL_checktype(L, 4, LUA_TNUMBER);
  3030. int deviceID = lua_tointeger(L, 4);
  3031. inst->joystickAxisMoved(axisID, value, deviceID);
  3032. return 0;
  3033. }
  3034. static int Polycode_CoreInput_joystickButtonDown(lua_State *L) {
  3035. luaL_checktype(L, 1, LUA_TUSERDATA);
  3036. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3037. luaL_checktype(L, 2, LUA_TNUMBER);
  3038. int buttonID = lua_tointeger(L, 2);
  3039. luaL_checktype(L, 3, LUA_TNUMBER);
  3040. int deviceID = lua_tointeger(L, 3);
  3041. inst->joystickButtonDown(buttonID, deviceID);
  3042. return 0;
  3043. }
  3044. static int Polycode_CoreInput_joystickButtonUp(lua_State *L) {
  3045. luaL_checktype(L, 1, LUA_TUSERDATA);
  3046. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3047. luaL_checktype(L, 2, LUA_TNUMBER);
  3048. int buttonID = lua_tointeger(L, 2);
  3049. luaL_checktype(L, 3, LUA_TNUMBER);
  3050. int deviceID = lua_tointeger(L, 3);
  3051. inst->joystickButtonUp(buttonID, deviceID);
  3052. return 0;
  3053. }
  3054. static int Polycode_CoreInput_mouseWheelUp(lua_State *L) {
  3055. luaL_checktype(L, 1, LUA_TUSERDATA);
  3056. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3057. luaL_checktype(L, 2, LUA_TNUMBER);
  3058. int ticks = lua_tointeger(L, 2);
  3059. inst->mouseWheelUp(ticks);
  3060. return 0;
  3061. }
  3062. static int Polycode_CoreInput_mouseWheelDown(lua_State *L) {
  3063. luaL_checktype(L, 1, LUA_TUSERDATA);
  3064. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3065. luaL_checktype(L, 2, LUA_TNUMBER);
  3066. int ticks = lua_tointeger(L, 2);
  3067. inst->mouseWheelDown(ticks);
  3068. return 0;
  3069. }
  3070. static int Polycode_CoreInput_setMouseButtonState(lua_State *L) {
  3071. luaL_checktype(L, 1, LUA_TUSERDATA);
  3072. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3073. luaL_checktype(L, 2, LUA_TNUMBER);
  3074. int mouseButton = lua_tointeger(L, 2);
  3075. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3076. bool state = lua_toboolean(L, 3) != 0;
  3077. luaL_checktype(L, 4, LUA_TNUMBER);
  3078. int ticks = lua_tointeger(L, 4);
  3079. inst->setMouseButtonState(mouseButton, state, ticks);
  3080. return 0;
  3081. }
  3082. static int Polycode_CoreInput_setMousePosition(lua_State *L) {
  3083. luaL_checktype(L, 1, LUA_TUSERDATA);
  3084. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3085. luaL_checktype(L, 2, LUA_TNUMBER);
  3086. int x = lua_tointeger(L, 2);
  3087. luaL_checktype(L, 3, LUA_TNUMBER);
  3088. int y = lua_tointeger(L, 3);
  3089. luaL_checktype(L, 4, LUA_TNUMBER);
  3090. int ticks = lua_tointeger(L, 4);
  3091. inst->setMousePosition(x, y, ticks);
  3092. return 0;
  3093. }
  3094. static int Polycode_CoreInput_setKeyState(lua_State *L) {
  3095. luaL_checktype(L, 1, LUA_TUSERDATA);
  3096. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3097. luaL_checktype(L, 2, LUA_TNUMBER);
  3098. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  3099. luaL_checktype(L, 3, LUA_TUSERDATA);
  3100. wchar_t code = *(wchar_t*) *((PolyBase**)lua_touserdata(L, 3));
  3101. luaL_checktype(L, 4, LUA_TBOOLEAN);
  3102. bool newState = lua_toboolean(L, 4) != 0;
  3103. luaL_checktype(L, 5, LUA_TNUMBER);
  3104. int ticks = lua_tointeger(L, 5);
  3105. inst->setKeyState(keyCode, code, newState, ticks);
  3106. return 0;
  3107. }
  3108. static int Polycode_CoreInput_setDeltaPosition(lua_State *L) {
  3109. luaL_checktype(L, 1, LUA_TUSERDATA);
  3110. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3111. luaL_checktype(L, 2, LUA_TNUMBER);
  3112. int x = lua_tointeger(L, 2);
  3113. luaL_checktype(L, 3, LUA_TNUMBER);
  3114. int y = lua_tointeger(L, 3);
  3115. inst->setDeltaPosition(x, y);
  3116. return 0;
  3117. }
  3118. static int Polycode_CoreInput_touchesBegan(lua_State *L) {
  3119. luaL_checktype(L, 1, LUA_TUSERDATA);
  3120. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3121. luaL_checktype(L, 2, LUA_TUSERDATA);
  3122. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3123. luaL_checktype(L, 3, LUA_TUSERDATA);
  3124. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3125. luaL_checktype(L, 4, LUA_TNUMBER);
  3126. int ticks = lua_tointeger(L, 4);
  3127. inst->touchesBegan(touch, touches, ticks);
  3128. return 0;
  3129. }
  3130. static int Polycode_CoreInput_touchesMoved(lua_State *L) {
  3131. luaL_checktype(L, 1, LUA_TUSERDATA);
  3132. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3133. luaL_checktype(L, 2, LUA_TUSERDATA);
  3134. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3135. luaL_checktype(L, 3, LUA_TUSERDATA);
  3136. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3137. luaL_checktype(L, 4, LUA_TNUMBER);
  3138. int ticks = lua_tointeger(L, 4);
  3139. inst->touchesMoved(touch, touches, ticks);
  3140. return 0;
  3141. }
  3142. static int Polycode_CoreInput_touchesEnded(lua_State *L) {
  3143. luaL_checktype(L, 1, LUA_TUSERDATA);
  3144. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3145. luaL_checktype(L, 2, LUA_TUSERDATA);
  3146. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3147. luaL_checktype(L, 3, LUA_TUSERDATA);
  3148. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3149. luaL_checktype(L, 4, LUA_TNUMBER);
  3150. int ticks = lua_tointeger(L, 4);
  3151. inst->touchesEnded(touch, touches, ticks);
  3152. return 0;
  3153. }
  3154. static int Polycode_CoreInput_createEvent(lua_State *L) {
  3155. luaL_checktype(L, 1, LUA_TUSERDATA);
  3156. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3157. PolyBase *ptrRetVal = (PolyBase*)CoreInput::createEvent(event);
  3158. if(ptrRetVal == NULL) {
  3159. lua_pushnil(L);
  3160. } else {
  3161. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3162. *userdataPtr = ptrRetVal;
  3163. }
  3164. return 1;
  3165. }
  3166. static int Polycode_CoreInput_clearInput(lua_State *L) {
  3167. luaL_checktype(L, 1, LUA_TUSERDATA);
  3168. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3169. inst->clearInput();
  3170. return 0;
  3171. }
  3172. static int Polycode_delete_CoreInput(lua_State *L) {
  3173. luaL_checktype(L, 1, LUA_TUSERDATA);
  3174. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3175. delete ((CoreInput*) *inst);
  3176. *inst = NULL;
  3177. return 0;
  3178. }
  3179. static int Polycode_JoystickInfo_get_deviceID(lua_State *L) {
  3180. luaL_checktype(L, 1, LUA_TUSERDATA);
  3181. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3182. lua_pushinteger(L, inst->deviceID);
  3183. return 1;
  3184. }
  3185. static int Polycode_JoystickInfo_get_deviceIndex(lua_State *L) {
  3186. luaL_checktype(L, 1, LUA_TUSERDATA);
  3187. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3188. lua_pushinteger(L, inst->deviceIndex);
  3189. return 1;
  3190. }
  3191. static int Polycode_JoystickInfo_set_deviceID(lua_State *L) {
  3192. luaL_checktype(L, 1, LUA_TUSERDATA);
  3193. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3194. int param = lua_tointeger(L, 2);
  3195. inst->deviceID = param;
  3196. return 0;
  3197. }
  3198. static int Polycode_JoystickInfo_set_deviceIndex(lua_State *L) {
  3199. luaL_checktype(L, 1, LUA_TUSERDATA);
  3200. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3201. int param = lua_tointeger(L, 2);
  3202. inst->deviceIndex = param;
  3203. return 0;
  3204. }
  3205. static int Polycode_JoystickInfo(lua_State *L) {
  3206. JoystickInfo *inst = new JoystickInfo();
  3207. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3208. *userdataPtr = (PolyBase*)inst;
  3209. luaL_getmetatable(L, "Polycode.JoystickInfo");
  3210. lua_setmetatable(L, -2);
  3211. return 1;
  3212. }
  3213. static int Polycode_delete_JoystickInfo(lua_State *L) {
  3214. luaL_checktype(L, 1, LUA_TUSERDATA);
  3215. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3216. delete ((JoystickInfo*) *inst);
  3217. *inst = NULL;
  3218. return 0;
  3219. }
  3220. static int Polycode_CoreServices_getInstance(lua_State *L) {
  3221. PolyBase *ptrRetVal = (PolyBase*)CoreServices::getInstance();
  3222. if(ptrRetVal == NULL) {
  3223. lua_pushnil(L);
  3224. } else {
  3225. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3226. *userdataPtr = ptrRetVal;
  3227. }
  3228. return 1;
  3229. }
  3230. static int Polycode_CoreServices_setInstance(lua_State *L) {
  3231. luaL_checktype(L, 1, LUA_TUSERDATA);
  3232. CoreServices* _instance = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3233. CoreServices::setInstance(_instance);
  3234. return 0;
  3235. }
  3236. static int Polycode_CoreServices_getRenderMutex(lua_State *L) {
  3237. PolyBase *ptrRetVal = (PolyBase*)CoreServices::getRenderMutex();
  3238. if(ptrRetVal == NULL) {
  3239. lua_pushnil(L);
  3240. } else {
  3241. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3242. *userdataPtr = ptrRetVal;
  3243. }
  3244. return 1;
  3245. }
  3246. static int Polycode_CoreServices_createInstance(lua_State *L) {
  3247. CoreServices::createInstance();
  3248. return 0;
  3249. }
  3250. static int Polycode_CoreServices_setRenderer(lua_State *L) {
  3251. luaL_checktype(L, 1, LUA_TUSERDATA);
  3252. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3253. luaL_checktype(L, 2, LUA_TUSERDATA);
  3254. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  3255. inst->setRenderer(renderer);
  3256. return 0;
  3257. }
  3258. static int Polycode_CoreServices_getRenderer(lua_State *L) {
  3259. luaL_checktype(L, 1, LUA_TUSERDATA);
  3260. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3261. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderer();
  3262. if(ptrRetVal == NULL) {
  3263. lua_pushnil(L);
  3264. } else {
  3265. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3266. *userdataPtr = ptrRetVal;
  3267. }
  3268. return 1;
  3269. }
  3270. static int Polycode_CoreServices_Update(lua_State *L) {
  3271. luaL_checktype(L, 1, LUA_TUSERDATA);
  3272. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3273. luaL_checktype(L, 2, LUA_TNUMBER);
  3274. int elapsed = lua_tointeger(L, 2);
  3275. inst->Update(elapsed);
  3276. return 0;
  3277. }
  3278. static int Polycode_CoreServices_fixedUpdate(lua_State *L) {
  3279. luaL_checktype(L, 1, LUA_TUSERDATA);
  3280. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3281. inst->fixedUpdate();
  3282. return 0;
  3283. }
  3284. static int Polycode_CoreServices_Render(lua_State *L) {
  3285. luaL_checktype(L, 1, LUA_TUSERDATA);
  3286. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3287. luaL_checktype(L, 2, LUA_TUSERDATA);
  3288. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  3289. inst->Render(viewport);
  3290. return 0;
  3291. }
  3292. static int Polycode_CoreServices_setCore(lua_State *L) {
  3293. luaL_checktype(L, 1, LUA_TUSERDATA);
  3294. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3295. luaL_checktype(L, 2, LUA_TUSERDATA);
  3296. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  3297. inst->setCore(core);
  3298. return 0;
  3299. }
  3300. static int Polycode_CoreServices_getCore(lua_State *L) {
  3301. luaL_checktype(L, 1, LUA_TUSERDATA);
  3302. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3303. PolyBase *ptrRetVal = (PolyBase*)inst->getCore();
  3304. if(ptrRetVal == NULL) {
  3305. lua_pushnil(L);
  3306. } else {
  3307. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3308. *userdataPtr = ptrRetVal;
  3309. }
  3310. return 1;
  3311. }
  3312. static int Polycode_CoreServices_getInput(lua_State *L) {
  3313. luaL_checktype(L, 1, LUA_TUSERDATA);
  3314. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3315. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  3316. if(ptrRetVal == NULL) {
  3317. lua_pushnil(L);
  3318. } else {
  3319. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3320. *userdataPtr = ptrRetVal;
  3321. }
  3322. return 1;
  3323. }
  3324. static int Polycode_CoreServices_getSceneManager(lua_State *L) {
  3325. luaL_checktype(L, 1, LUA_TUSERDATA);
  3326. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3327. PolyBase *ptrRetVal = (PolyBase*)inst->getSceneManager();
  3328. if(ptrRetVal == NULL) {
  3329. lua_pushnil(L);
  3330. } else {
  3331. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3332. *userdataPtr = ptrRetVal;
  3333. }
  3334. return 1;
  3335. }
  3336. static int Polycode_CoreServices_getTimerManager(lua_State *L) {
  3337. luaL_checktype(L, 1, LUA_TUSERDATA);
  3338. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3339. PolyBase *ptrRetVal = (PolyBase*)inst->getTimerManager();
  3340. if(ptrRetVal == NULL) {
  3341. lua_pushnil(L);
  3342. } else {
  3343. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3344. *userdataPtr = ptrRetVal;
  3345. }
  3346. return 1;
  3347. }
  3348. static int Polycode_CoreServices_getTweenManager(lua_State *L) {
  3349. luaL_checktype(L, 1, LUA_TUSERDATA);
  3350. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3351. PolyBase *ptrRetVal = (PolyBase*)inst->getTweenManager();
  3352. if(ptrRetVal == NULL) {
  3353. lua_pushnil(L);
  3354. } else {
  3355. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3356. *userdataPtr = ptrRetVal;
  3357. }
  3358. return 1;
  3359. }
  3360. static int Polycode_CoreServices_getResourceManager(lua_State *L) {
  3361. luaL_checktype(L, 1, LUA_TUSERDATA);
  3362. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3363. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceManager();
  3364. if(ptrRetVal == NULL) {
  3365. lua_pushnil(L);
  3366. } else {
  3367. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3368. *userdataPtr = ptrRetVal;
  3369. }
  3370. return 1;
  3371. }
  3372. static int Polycode_CoreServices_getSoundManager(lua_State *L) {
  3373. luaL_checktype(L, 1, LUA_TUSERDATA);
  3374. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3375. PolyBase *ptrRetVal = (PolyBase*)inst->getSoundManager();
  3376. if(ptrRetVal == NULL) {
  3377. lua_pushnil(L);
  3378. } else {
  3379. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3380. *userdataPtr = ptrRetVal;
  3381. }
  3382. return 1;
  3383. }
  3384. static int Polycode_CoreServices_getLogger(lua_State *L) {
  3385. luaL_checktype(L, 1, LUA_TUSERDATA);
  3386. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3387. PolyBase *ptrRetVal = (PolyBase*)inst->getLogger();
  3388. if(ptrRetVal == NULL) {
  3389. lua_pushnil(L);
  3390. } else {
  3391. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3392. *userdataPtr = ptrRetVal;
  3393. }
  3394. return 1;
  3395. }
  3396. static int Polycode_CoreServices_getConfig(lua_State *L) {
  3397. luaL_checktype(L, 1, LUA_TUSERDATA);
  3398. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3399. PolyBase *ptrRetVal = (PolyBase*)inst->getConfig();
  3400. if(ptrRetVal == NULL) {
  3401. lua_pushnil(L);
  3402. } else {
  3403. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3404. *userdataPtr = ptrRetVal;
  3405. }
  3406. return 1;
  3407. }
  3408. static int Polycode_delete_CoreServices(lua_State *L) {
  3409. luaL_checktype(L, 1, LUA_TUSERDATA);
  3410. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3411. delete ((CoreServices*) *inst);
  3412. *inst = NULL;
  3413. return 0;
  3414. }
  3415. static int Polycode_Data(lua_State *L) {
  3416. Data *inst = new Data();
  3417. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3418. *userdataPtr = (PolyBase*)inst;
  3419. luaL_getmetatable(L, "Polycode.Data");
  3420. lua_setmetatable(L, -2);
  3421. return 1;
  3422. }
  3423. static int Polycode_Data_loadFromFile(lua_State *L) {
  3424. luaL_checktype(L, 1, LUA_TUSERDATA);
  3425. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3426. luaL_checktype(L, 2, LUA_TSTRING);
  3427. String fileName = String(lua_tostring(L, 2));
  3428. lua_pushboolean(L, inst->loadFromFile(fileName));
  3429. return 1;
  3430. }
  3431. static int Polycode_Data_getAsString(lua_State *L) {
  3432. luaL_checktype(L, 1, LUA_TUSERDATA);
  3433. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3434. luaL_checktype(L, 2, LUA_TNUMBER);
  3435. int encoding = lua_tointeger(L, 2);
  3436. lua_pushstring(L, inst->getAsString(encoding).c_str());
  3437. return 1;
  3438. }
  3439. static int Polycode_Data_setFromString(lua_State *L) {
  3440. luaL_checktype(L, 1, LUA_TUSERDATA);
  3441. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3442. luaL_checktype(L, 2, LUA_TSTRING);
  3443. String str = String(lua_tostring(L, 2));
  3444. luaL_checktype(L, 3, LUA_TNUMBER);
  3445. int encoding = lua_tointeger(L, 3);
  3446. inst->setFromString(str, encoding);
  3447. return 0;
  3448. }
  3449. static int Polycode_Data_saveToFile(lua_State *L) {
  3450. luaL_checktype(L, 1, LUA_TUSERDATA);
  3451. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3452. luaL_checktype(L, 2, LUA_TSTRING);
  3453. String fileName = String(lua_tostring(L, 2));
  3454. lua_pushboolean(L, inst->saveToFile(fileName));
  3455. return 1;
  3456. }
  3457. static int Polycode_Data_getData(lua_State *L) {
  3458. luaL_checktype(L, 1, LUA_TUSERDATA);
  3459. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3460. PolyBase *ptrRetVal = (PolyBase*)inst->getData();
  3461. if(ptrRetVal == NULL) {
  3462. lua_pushnil(L);
  3463. } else {
  3464. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3465. *userdataPtr = ptrRetVal;
  3466. }
  3467. return 1;
  3468. }
  3469. static int Polycode_delete_Data(lua_State *L) {
  3470. luaL_checktype(L, 1, LUA_TUSERDATA);
  3471. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3472. delete ((Data*) *inst);
  3473. *inst = NULL;
  3474. return 0;
  3475. }
  3476. static int Polycode_MouseEventResult_get_hit(lua_State *L) {
  3477. luaL_checktype(L, 1, LUA_TUSERDATA);
  3478. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3479. lua_pushboolean(L, inst->hit);
  3480. return 1;
  3481. }
  3482. static int Polycode_MouseEventResult_get_blocked(lua_State *L) {
  3483. luaL_checktype(L, 1, LUA_TUSERDATA);
  3484. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3485. lua_pushboolean(L, inst->blocked);
  3486. return 1;
  3487. }
  3488. static int Polycode_MouseEventResult_set_hit(lua_State *L) {
  3489. luaL_checktype(L, 1, LUA_TUSERDATA);
  3490. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3491. bool param = lua_toboolean(L, 2) != 0;
  3492. inst->hit = param;
  3493. return 0;
  3494. }
  3495. static int Polycode_MouseEventResult_set_blocked(lua_State *L) {
  3496. luaL_checktype(L, 1, LUA_TUSERDATA);
  3497. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3498. bool param = lua_toboolean(L, 2) != 0;
  3499. inst->blocked = param;
  3500. return 0;
  3501. }
  3502. static int Polycode_delete_MouseEventResult(lua_State *L) {
  3503. luaL_checktype(L, 1, LUA_TUSERDATA);
  3504. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3505. delete ((MouseEventResult*) *inst);
  3506. *inst = NULL;
  3507. return 0;
  3508. }
  3509. static int Polycode_EntityProp_get_propName(lua_State *L) {
  3510. luaL_checktype(L, 1, LUA_TUSERDATA);
  3511. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3512. lua_pushstring(L, inst->propName.c_str());
  3513. return 1;
  3514. }
  3515. static int Polycode_EntityProp_get_propValue(lua_State *L) {
  3516. luaL_checktype(L, 1, LUA_TUSERDATA);
  3517. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3518. lua_pushstring(L, inst->propValue.c_str());
  3519. return 1;
  3520. }
  3521. static int Polycode_EntityProp_set_propName(lua_State *L) {
  3522. luaL_checktype(L, 1, LUA_TUSERDATA);
  3523. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3524. String param = lua_tostring(L, 2);
  3525. inst->propName = param;
  3526. return 0;
  3527. }
  3528. static int Polycode_EntityProp_set_propValue(lua_State *L) {
  3529. luaL_checktype(L, 1, LUA_TUSERDATA);
  3530. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3531. String param = lua_tostring(L, 2);
  3532. inst->propValue = param;
  3533. return 0;
  3534. }
  3535. static int Polycode_delete_EntityProp(lua_State *L) {
  3536. luaL_checktype(L, 1, LUA_TUSERDATA);
  3537. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3538. delete ((EntityProp*) *inst);
  3539. *inst = NULL;
  3540. return 0;
  3541. }
  3542. static int Polycode_AABB_get_min(lua_State *L) {
  3543. luaL_checktype(L, 1, LUA_TUSERDATA);
  3544. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3545. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3546. *userdataPtr = (PolyBase*)&inst->min;
  3547. return 1;
  3548. }
  3549. static int Polycode_AABB_get_max(lua_State *L) {
  3550. luaL_checktype(L, 1, LUA_TUSERDATA);
  3551. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3552. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3553. *userdataPtr = (PolyBase*)&inst->max;
  3554. return 1;
  3555. }
  3556. static int Polycode_AABB_set_min(lua_State *L) {
  3557. luaL_checktype(L, 1, LUA_TUSERDATA);
  3558. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3559. luaL_checktype(L, 2, LUA_TUSERDATA);
  3560. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3561. inst->min = *argInst;
  3562. return 0;
  3563. }
  3564. static int Polycode_AABB_set_max(lua_State *L) {
  3565. luaL_checktype(L, 1, LUA_TUSERDATA);
  3566. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3567. luaL_checktype(L, 2, LUA_TUSERDATA);
  3568. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3569. inst->max = *argInst;
  3570. return 0;
  3571. }
  3572. static int Polycode_delete_AABB(lua_State *L) {
  3573. luaL_checktype(L, 1, LUA_TUSERDATA);
  3574. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3575. delete ((AABB*) *inst);
  3576. *inst = NULL;
  3577. return 0;
  3578. }
  3579. static int Polycode_Rotation_get_pitch(lua_State *L) {
  3580. luaL_checktype(L, 1, LUA_TUSERDATA);
  3581. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3582. lua_pushnumber(L, inst->pitch);
  3583. return 1;
  3584. }
  3585. static int Polycode_Rotation_get_yaw(lua_State *L) {
  3586. luaL_checktype(L, 1, LUA_TUSERDATA);
  3587. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3588. lua_pushnumber(L, inst->yaw);
  3589. return 1;
  3590. }
  3591. static int Polycode_Rotation_get_roll(lua_State *L) {
  3592. luaL_checktype(L, 1, LUA_TUSERDATA);
  3593. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3594. lua_pushnumber(L, inst->roll);
  3595. return 1;
  3596. }
  3597. static int Polycode_Rotation_set_pitch(lua_State *L) {
  3598. luaL_checktype(L, 1, LUA_TUSERDATA);
  3599. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3600. Number param = lua_tonumber(L, 2);
  3601. inst->pitch = param;
  3602. return 0;
  3603. }
  3604. static int Polycode_Rotation_set_yaw(lua_State *L) {
  3605. luaL_checktype(L, 1, LUA_TUSERDATA);
  3606. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3607. Number param = lua_tonumber(L, 2);
  3608. inst->yaw = param;
  3609. return 0;
  3610. }
  3611. static int Polycode_Rotation_set_roll(lua_State *L) {
  3612. luaL_checktype(L, 1, LUA_TUSERDATA);
  3613. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3614. Number param = lua_tonumber(L, 2);
  3615. inst->roll = param;
  3616. return 0;
  3617. }
  3618. static int Polycode_Rotation(lua_State *L) {
  3619. Rotation *inst = new Rotation();
  3620. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3621. *userdataPtr = (PolyBase*)inst;
  3622. luaL_getmetatable(L, "Polycode.Rotation");
  3623. lua_setmetatable(L, -2);
  3624. return 1;
  3625. }
  3626. static int Polycode_delete_Rotation(lua_State *L) {
  3627. luaL_checktype(L, 1, LUA_TUSERDATA);
  3628. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3629. delete ((Rotation*) *inst);
  3630. *inst = NULL;
  3631. return 0;
  3632. }
  3633. static int Polycode_Entity_get_ownsChildren(lua_State *L) {
  3634. luaL_checktype(L, 1, LUA_TUSERDATA);
  3635. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3636. lua_pushboolean(L, inst->ownsChildren);
  3637. return 1;
  3638. }
  3639. static int Polycode_Entity_get_billboardMode(lua_State *L) {
  3640. luaL_checktype(L, 1, LUA_TUSERDATA);
  3641. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3642. lua_pushboolean(L, inst->billboardMode);
  3643. return 1;
  3644. }
  3645. static int Polycode_Entity_get_color(lua_State *L) {
  3646. luaL_checktype(L, 1, LUA_TUSERDATA);
  3647. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3648. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3649. *userdataPtr = (PolyBase*)&inst->color;
  3650. return 1;
  3651. }
  3652. static int Polycode_Entity_get_enabled(lua_State *L) {
  3653. luaL_checktype(L, 1, LUA_TUSERDATA);
  3654. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3655. lua_pushboolean(L, inst->enabled);
  3656. return 1;
  3657. }
  3658. static int Polycode_Entity_get_visible(lua_State *L) {
  3659. luaL_checktype(L, 1, LUA_TUSERDATA);
  3660. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3661. lua_pushboolean(L, inst->visible);
  3662. return 1;
  3663. }
  3664. static int Polycode_Entity_get_depthWrite(lua_State *L) {
  3665. luaL_checktype(L, 1, LUA_TUSERDATA);
  3666. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3667. lua_pushboolean(L, inst->depthWrite);
  3668. return 1;
  3669. }
  3670. static int Polycode_Entity_get_depthTest(lua_State *L) {
  3671. luaL_checktype(L, 1, LUA_TUSERDATA);
  3672. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3673. lua_pushboolean(L, inst->depthTest);
  3674. return 1;
  3675. }
  3676. static int Polycode_Entity_get_colorAffectsChildren(lua_State *L) {
  3677. luaL_checktype(L, 1, LUA_TUSERDATA);
  3678. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3679. lua_pushboolean(L, inst->colorAffectsChildren);
  3680. return 1;
  3681. }
  3682. static int Polycode_Entity_get_visibilityAffectsChildren(lua_State *L) {
  3683. luaL_checktype(L, 1, LUA_TUSERDATA);
  3684. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3685. lua_pushboolean(L, inst->visibilityAffectsChildren);
  3686. return 1;
  3687. }
  3688. static int Polycode_Entity_get_ignoreParentMatrix(lua_State *L) {
  3689. luaL_checktype(L, 1, LUA_TUSERDATA);
  3690. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3691. lua_pushboolean(L, inst->ignoreParentMatrix);
  3692. return 1;
  3693. }
  3694. static int Polycode_Entity_get_enableScissor(lua_State *L) {
  3695. luaL_checktype(L, 1, LUA_TUSERDATA);
  3696. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3697. lua_pushboolean(L, inst->enableScissor);
  3698. return 1;
  3699. }
  3700. static int Polycode_Entity_get_scissorBox(lua_State *L) {
  3701. luaL_checktype(L, 1, LUA_TUSERDATA);
  3702. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3703. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3704. *userdataPtr = (PolyBase*)&inst->scissorBox;
  3705. return 1;
  3706. }
  3707. static int Polycode_Entity_get_editorOnly(lua_State *L) {
  3708. luaL_checktype(L, 1, LUA_TUSERDATA);
  3709. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3710. lua_pushboolean(L, inst->editorOnly);
  3711. return 1;
  3712. }
  3713. static int Polycode_Entity_get_id(lua_State *L) {
  3714. luaL_checktype(L, 1, LUA_TUSERDATA);
  3715. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3716. lua_pushstring(L, inst->id.c_str());
  3717. return 1;
  3718. }
  3719. static int Polycode_Entity_get_collisionShapeType(lua_State *L) {
  3720. luaL_checktype(L, 1, LUA_TUSERDATA);
  3721. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3722. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3723. *userdataPtr = (PolyBase*)&inst->collisionShapeType;
  3724. return 1;
  3725. }
  3726. static int Polycode_Entity_get_processInputEvents(lua_State *L) {
  3727. luaL_checktype(L, 1, LUA_TUSERDATA);
  3728. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3729. lua_pushboolean(L, inst->processInputEvents);
  3730. return 1;
  3731. }
  3732. static int Polycode_Entity_get_blockMouseInput(lua_State *L) {
  3733. luaL_checktype(L, 1, LUA_TUSERDATA);
  3734. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3735. lua_pushboolean(L, inst->blockMouseInput);
  3736. return 1;
  3737. }
  3738. static int Polycode_Entity_get_snapToPixels(lua_State *L) {
  3739. luaL_checktype(L, 1, LUA_TUSERDATA);
  3740. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3741. lua_pushboolean(L, inst->snapToPixels);
  3742. return 1;
  3743. }
  3744. static int Polycode_Entity_get_mouseOver(lua_State *L) {
  3745. luaL_checktype(L, 1, LUA_TUSERDATA);
  3746. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3747. lua_pushboolean(L, inst->mouseOver);
  3748. return 1;
  3749. }
  3750. static int Polycode_Entity_get_rendererVis(lua_State *L) {
  3751. luaL_checktype(L, 1, LUA_TUSERDATA);
  3752. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3753. lua_pushboolean(L, inst->rendererVis);
  3754. return 1;
  3755. }
  3756. static int Polycode_Entity_get_layerID(lua_State *L) {
  3757. luaL_checktype(L, 1, LUA_TUSERDATA);
  3758. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3759. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3760. *userdataPtr = (PolyBase*)&inst->layerID;
  3761. return 1;
  3762. }
  3763. static int Polycode_Entity_set_ownsChildren(lua_State *L) {
  3764. luaL_checktype(L, 1, LUA_TUSERDATA);
  3765. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3766. bool param = lua_toboolean(L, 2) != 0;
  3767. inst->ownsChildren = param;
  3768. return 0;
  3769. }
  3770. static int Polycode_Entity_set_billboardMode(lua_State *L) {
  3771. luaL_checktype(L, 1, LUA_TUSERDATA);
  3772. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3773. bool param = lua_toboolean(L, 2) != 0;
  3774. inst->billboardMode = param;
  3775. return 0;
  3776. }
  3777. static int Polycode_Entity_set_color(lua_State *L) {
  3778. luaL_checktype(L, 1, LUA_TUSERDATA);
  3779. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3780. luaL_checktype(L, 2, LUA_TUSERDATA);
  3781. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  3782. inst->color = *argInst;
  3783. return 0;
  3784. }
  3785. static int Polycode_Entity_set_enabled(lua_State *L) {
  3786. luaL_checktype(L, 1, LUA_TUSERDATA);
  3787. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3788. bool param = lua_toboolean(L, 2) != 0;
  3789. inst->enabled = param;
  3790. return 0;
  3791. }
  3792. static int Polycode_Entity_set_visible(lua_State *L) {
  3793. luaL_checktype(L, 1, LUA_TUSERDATA);
  3794. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3795. bool param = lua_toboolean(L, 2) != 0;
  3796. inst->visible = param;
  3797. return 0;
  3798. }
  3799. static int Polycode_Entity_set_depthWrite(lua_State *L) {
  3800. luaL_checktype(L, 1, LUA_TUSERDATA);
  3801. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3802. bool param = lua_toboolean(L, 2) != 0;
  3803. inst->depthWrite = param;
  3804. return 0;
  3805. }
  3806. static int Polycode_Entity_set_depthTest(lua_State *L) {
  3807. luaL_checktype(L, 1, LUA_TUSERDATA);
  3808. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3809. bool param = lua_toboolean(L, 2) != 0;
  3810. inst->depthTest = param;
  3811. return 0;
  3812. }
  3813. static int Polycode_Entity_set_colorAffectsChildren(lua_State *L) {
  3814. luaL_checktype(L, 1, LUA_TUSERDATA);
  3815. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3816. bool param = lua_toboolean(L, 2) != 0;
  3817. inst->colorAffectsChildren = param;
  3818. return 0;
  3819. }
  3820. static int Polycode_Entity_set_visibilityAffectsChildren(lua_State *L) {
  3821. luaL_checktype(L, 1, LUA_TUSERDATA);
  3822. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3823. bool param = lua_toboolean(L, 2) != 0;
  3824. inst->visibilityAffectsChildren = param;
  3825. return 0;
  3826. }
  3827. static int Polycode_Entity_set_ignoreParentMatrix(lua_State *L) {
  3828. luaL_checktype(L, 1, LUA_TUSERDATA);
  3829. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3830. bool param = lua_toboolean(L, 2) != 0;
  3831. inst->ignoreParentMatrix = param;
  3832. return 0;
  3833. }
  3834. static int Polycode_Entity_set_enableScissor(lua_State *L) {
  3835. luaL_checktype(L, 1, LUA_TUSERDATA);
  3836. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3837. bool param = lua_toboolean(L, 2) != 0;
  3838. inst->enableScissor = param;
  3839. return 0;
  3840. }
  3841. static int Polycode_Entity_set_scissorBox(lua_State *L) {
  3842. luaL_checktype(L, 1, LUA_TUSERDATA);
  3843. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3844. luaL_checktype(L, 2, LUA_TUSERDATA);
  3845. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  3846. inst->scissorBox = *argInst;
  3847. return 0;
  3848. }
  3849. static int Polycode_Entity_set_editorOnly(lua_State *L) {
  3850. luaL_checktype(L, 1, LUA_TUSERDATA);
  3851. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3852. bool param = lua_toboolean(L, 2) != 0;
  3853. inst->editorOnly = param;
  3854. return 0;
  3855. }
  3856. static int Polycode_Entity_set_id(lua_State *L) {
  3857. luaL_checktype(L, 1, LUA_TUSERDATA);
  3858. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3859. String param = lua_tostring(L, 2);
  3860. inst->id = param;
  3861. return 0;
  3862. }
  3863. static int Polycode_Entity_set_collisionShapeType(lua_State *L) {
  3864. luaL_checktype(L, 1, LUA_TUSERDATA);
  3865. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3866. luaL_checktype(L, 2, LUA_TUSERDATA);
  3867. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  3868. inst->collisionShapeType = *argInst;
  3869. return 0;
  3870. }
  3871. static int Polycode_Entity_set_processInputEvents(lua_State *L) {
  3872. luaL_checktype(L, 1, LUA_TUSERDATA);
  3873. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3874. bool param = lua_toboolean(L, 2) != 0;
  3875. inst->processInputEvents = param;
  3876. return 0;
  3877. }
  3878. static int Polycode_Entity_set_blockMouseInput(lua_State *L) {
  3879. luaL_checktype(L, 1, LUA_TUSERDATA);
  3880. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3881. bool param = lua_toboolean(L, 2) != 0;
  3882. inst->blockMouseInput = param;
  3883. return 0;
  3884. }
  3885. static int Polycode_Entity_set_snapToPixels(lua_State *L) {
  3886. luaL_checktype(L, 1, LUA_TUSERDATA);
  3887. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3888. bool param = lua_toboolean(L, 2) != 0;
  3889. inst->snapToPixels = param;
  3890. return 0;
  3891. }
  3892. static int Polycode_Entity_set_mouseOver(lua_State *L) {
  3893. luaL_checktype(L, 1, LUA_TUSERDATA);
  3894. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3895. bool param = lua_toboolean(L, 2) != 0;
  3896. inst->mouseOver = param;
  3897. return 0;
  3898. }
  3899. static int Polycode_Entity_set_rendererVis(lua_State *L) {
  3900. luaL_checktype(L, 1, LUA_TUSERDATA);
  3901. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3902. bool param = lua_toboolean(L, 2) != 0;
  3903. inst->rendererVis = param;
  3904. return 0;
  3905. }
  3906. static int Polycode_Entity_set_layerID(lua_State *L) {
  3907. luaL_checktype(L, 1, LUA_TUSERDATA);
  3908. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3909. luaL_checktype(L, 2, LUA_TUSERDATA);
  3910. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  3911. inst->layerID = *argInst;
  3912. return 0;
  3913. }
  3914. static int Polycode_Entity(lua_State *L) {
  3915. Entity *inst = new Entity();
  3916. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3917. *userdataPtr = (PolyBase*)inst;
  3918. luaL_getmetatable(L, "Polycode.Entity");
  3919. lua_setmetatable(L, -2);
  3920. return 1;
  3921. }
  3922. static int Polycode_Entity_initEntity(lua_State *L) {
  3923. luaL_checktype(L, 1, LUA_TUSERDATA);
  3924. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3925. inst->initEntity();
  3926. return 0;
  3927. }
  3928. static int Polycode_Entity_Render(lua_State *L) {
  3929. luaL_checktype(L, 1, LUA_TUSERDATA);
  3930. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3931. luaL_checktype(L, 2, LUA_TUSERDATA);
  3932. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3933. inst->Render(buffer);
  3934. return 0;
  3935. }
  3936. static int Polycode_Entity_Update(lua_State *L) {
  3937. luaL_checktype(L, 1, LUA_TUSERDATA);
  3938. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3939. inst->Update();
  3940. return 0;
  3941. }
  3942. static int Polycode_Entity_fixedUpdate(lua_State *L) {
  3943. luaL_checktype(L, 1, LUA_TUSERDATA);
  3944. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3945. inst->fixedUpdate();
  3946. return 0;
  3947. }
  3948. static int Polycode_Entity_transformAndRender(lua_State *L) {
  3949. luaL_checktype(L, 1, LUA_TUSERDATA);
  3950. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3951. luaL_checktype(L, 2, LUA_TUSERDATA);
  3952. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3953. luaL_checktype(L, 3, LUA_TUSERDATA);
  3954. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  3955. inst->transformAndRender(drawBuffer, parentScissorBox);
  3956. return 0;
  3957. }
  3958. static int Polycode_Entity_renderChildren(lua_State *L) {
  3959. luaL_checktype(L, 1, LUA_TUSERDATA);
  3960. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3961. luaL_checktype(L, 2, LUA_TUSERDATA);
  3962. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3963. luaL_checktype(L, 3, LUA_TUSERDATA);
  3964. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  3965. inst->renderChildren(buffer, parentScissorBox);
  3966. return 0;
  3967. }
  3968. static int Polycode_Entity_Clone(lua_State *L) {
  3969. luaL_checktype(L, 1, LUA_TUSERDATA);
  3970. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3971. luaL_checktype(L, 2, LUA_TBOOLEAN);
  3972. bool deepClone = lua_toboolean(L, 2) != 0;
  3973. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3974. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  3975. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  3976. if(ptrRetVal == NULL) {
  3977. lua_pushnil(L);
  3978. } else {
  3979. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3980. *userdataPtr = ptrRetVal;
  3981. }
  3982. return 1;
  3983. }
  3984. static int Polycode_Entity_applyClone(lua_State *L) {
  3985. luaL_checktype(L, 1, LUA_TUSERDATA);
  3986. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3987. luaL_checktype(L, 2, LUA_TUSERDATA);
  3988. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  3989. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3990. bool deepClone = lua_toboolean(L, 3) != 0;
  3991. luaL_checktype(L, 4, LUA_TBOOLEAN);
  3992. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  3993. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  3994. return 0;
  3995. }
  3996. static int Polycode_Entity_dirtyMatrix(lua_State *L) {
  3997. luaL_checktype(L, 1, LUA_TUSERDATA);
  3998. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3999. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4000. bool val = lua_toboolean(L, 2) != 0;
  4001. inst->dirtyMatrix(val);
  4002. return 0;
  4003. }
  4004. static int Polycode_Entity_rebuildTransformMatrix(lua_State *L) {
  4005. luaL_checktype(L, 1, LUA_TUSERDATA);
  4006. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4007. inst->rebuildTransformMatrix();
  4008. return 0;
  4009. }
  4010. static int Polycode_Entity_updateEntityMatrix(lua_State *L) {
  4011. luaL_checktype(L, 1, LUA_TUSERDATA);
  4012. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4013. inst->updateEntityMatrix();
  4014. return 0;
  4015. }
  4016. static int Polycode_Entity_getTransformMatrix(lua_State *L) {
  4017. luaL_checktype(L, 1, LUA_TUSERDATA);
  4018. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4019. Matrix4 *retInst = new Matrix4();
  4020. *retInst = inst->getTransformMatrix();
  4021. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4022. luaL_getmetatable(L, "Polycode.Matrix4");
  4023. lua_setmetatable(L, -2);
  4024. *userdataPtr = (PolyBase*)retInst;
  4025. return 1;
  4026. }
  4027. static int Polycode_Entity_getConcatenatedMatrix(lua_State *L) {
  4028. luaL_checktype(L, 1, LUA_TUSERDATA);
  4029. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4030. Matrix4 *retInst = new Matrix4();
  4031. *retInst = inst->getConcatenatedMatrix();
  4032. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4033. luaL_getmetatable(L, "Polycode.Matrix4");
  4034. lua_setmetatable(L, -2);
  4035. *userdataPtr = (PolyBase*)retInst;
  4036. return 1;
  4037. }
  4038. static int Polycode_Entity_getConcatenatedMatrixRelativeTo(lua_State *L) {
  4039. luaL_checktype(L, 1, LUA_TUSERDATA);
  4040. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4041. luaL_checktype(L, 2, LUA_TUSERDATA);
  4042. Entity* relativeEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4043. Matrix4 *retInst = new Matrix4();
  4044. *retInst = inst->getConcatenatedMatrixRelativeTo(relativeEntity);
  4045. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4046. luaL_getmetatable(L, "Polycode.Matrix4");
  4047. lua_setmetatable(L, -2);
  4048. *userdataPtr = (PolyBase*)retInst;
  4049. return 1;
  4050. }
  4051. static int Polycode_Entity_getAnchorAdjustedMatrix(lua_State *L) {
  4052. luaL_checktype(L, 1, LUA_TUSERDATA);
  4053. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4054. Matrix4 *retInst = new Matrix4();
  4055. *retInst = inst->getAnchorAdjustedMatrix();
  4056. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4057. luaL_getmetatable(L, "Polycode.Matrix4");
  4058. lua_setmetatable(L, -2);
  4059. *userdataPtr = (PolyBase*)retInst;
  4060. return 1;
  4061. }
  4062. static int Polycode_Entity_getConcatenatedRollMatrix(lua_State *L) {
  4063. luaL_checktype(L, 1, LUA_TUSERDATA);
  4064. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4065. Matrix4 *retInst = new Matrix4();
  4066. *retInst = inst->getConcatenatedRollMatrix();
  4067. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4068. luaL_getmetatable(L, "Polycode.Matrix4");
  4069. lua_setmetatable(L, -2);
  4070. *userdataPtr = (PolyBase*)retInst;
  4071. return 1;
  4072. }
  4073. static int Polycode_Entity_setTransformByMatrixPure(lua_State *L) {
  4074. luaL_checktype(L, 1, LUA_TUSERDATA);
  4075. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4076. luaL_checktype(L, 2, LUA_TUSERDATA);
  4077. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  4078. inst->setTransformByMatrixPure(matrix);
  4079. return 0;
  4080. }
  4081. static int Polycode_Entity_getLookAtMatrix(lua_State *L) {
  4082. luaL_checktype(L, 1, LUA_TUSERDATA);
  4083. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4084. luaL_checktype(L, 2, LUA_TUSERDATA);
  4085. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4086. luaL_checktype(L, 3, LUA_TUSERDATA);
  4087. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4088. Matrix4 *retInst = new Matrix4();
  4089. *retInst = inst->getLookAtMatrix(loc, upVector);
  4090. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4091. luaL_getmetatable(L, "Polycode.Matrix4");
  4092. lua_setmetatable(L, -2);
  4093. *userdataPtr = (PolyBase*)retInst;
  4094. return 1;
  4095. }
  4096. static int Polycode_Entity_addChild(lua_State *L) {
  4097. luaL_checktype(L, 1, LUA_TUSERDATA);
  4098. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4099. luaL_checktype(L, 2, LUA_TUSERDATA);
  4100. Entity* newChild = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4101. inst->addChild(newChild);
  4102. return 0;
  4103. }
  4104. static int Polycode_Entity_removeChild(lua_State *L) {
  4105. luaL_checktype(L, 1, LUA_TUSERDATA);
  4106. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4107. luaL_checktype(L, 2, LUA_TUSERDATA);
  4108. Entity* entityToRemove = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4109. inst->removeChild(entityToRemove);
  4110. return 0;
  4111. }
  4112. static int Polycode_Entity_moveChildUp(lua_State *L) {
  4113. luaL_checktype(L, 1, LUA_TUSERDATA);
  4114. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4115. luaL_checktype(L, 2, LUA_TUSERDATA);
  4116. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4117. inst->moveChildUp(child);
  4118. return 0;
  4119. }
  4120. static int Polycode_Entity_moveChildDown(lua_State *L) {
  4121. luaL_checktype(L, 1, LUA_TUSERDATA);
  4122. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4123. luaL_checktype(L, 2, LUA_TUSERDATA);
  4124. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4125. inst->moveChildDown(child);
  4126. return 0;
  4127. }
  4128. static int Polycode_Entity_moveChildTop(lua_State *L) {
  4129. luaL_checktype(L, 1, LUA_TUSERDATA);
  4130. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4131. luaL_checktype(L, 2, LUA_TUSERDATA);
  4132. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4133. inst->moveChildTop(child);
  4134. return 0;
  4135. }
  4136. static int Polycode_Entity_moveChildBottom(lua_State *L) {
  4137. luaL_checktype(L, 1, LUA_TUSERDATA);
  4138. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4139. luaL_checktype(L, 2, LUA_TUSERDATA);
  4140. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4141. inst->moveChildBottom(child);
  4142. return 0;
  4143. }
  4144. static int Polycode_Entity_setParentEntity(lua_State *L) {
  4145. luaL_checktype(L, 1, LUA_TUSERDATA);
  4146. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4147. luaL_checktype(L, 2, LUA_TUSERDATA);
  4148. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4149. inst->setParentEntity(entity);
  4150. return 0;
  4151. }
  4152. static int Polycode_Entity_getParentEntity(lua_State *L) {
  4153. luaL_checktype(L, 1, LUA_TUSERDATA);
  4154. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4155. PolyBase *ptrRetVal = (PolyBase*)inst->getParentEntity();
  4156. if(ptrRetVal == NULL) {
  4157. lua_pushnil(L);
  4158. } else {
  4159. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4160. *userdataPtr = ptrRetVal;
  4161. }
  4162. return 1;
  4163. }
  4164. static int Polycode_Entity_getNumChildren(lua_State *L) {
  4165. luaL_checktype(L, 1, LUA_TUSERDATA);
  4166. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4167. lua_pushinteger(L, inst->getNumChildren());
  4168. return 1;
  4169. }
  4170. static int Polycode_Entity_getChildAtIndex(lua_State *L) {
  4171. luaL_checktype(L, 1, LUA_TUSERDATA);
  4172. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4173. luaL_checktype(L, 2, LUA_TNUMBER);
  4174. int index = lua_tointeger(L, 2);
  4175. PolyBase *ptrRetVal = (PolyBase*)inst->getChildAtIndex(index);
  4176. if(ptrRetVal == NULL) {
  4177. lua_pushnil(L);
  4178. } else {
  4179. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4180. *userdataPtr = ptrRetVal;
  4181. }
  4182. return 1;
  4183. }
  4184. static int Polycode_Entity_setOwnsChildrenRecursive(lua_State *L) {
  4185. luaL_checktype(L, 1, LUA_TUSERDATA);
  4186. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4187. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4188. bool val = lua_toboolean(L, 2) != 0;
  4189. inst->setOwnsChildrenRecursive(val);
  4190. return 0;
  4191. }
  4192. static int Polycode_Entity_getPosition(lua_State *L) {
  4193. luaL_checktype(L, 1, LUA_TUSERDATA);
  4194. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4195. Vector3 *retInst = new Vector3();
  4196. *retInst = inst->getPosition();
  4197. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4198. luaL_getmetatable(L, "Polycode.Vector3");
  4199. lua_setmetatable(L, -2);
  4200. *userdataPtr = (PolyBase*)retInst;
  4201. return 1;
  4202. }
  4203. static int Polycode_Entity_getPosition2D(lua_State *L) {
  4204. luaL_checktype(L, 1, LUA_TUSERDATA);
  4205. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4206. Vector2 *retInst = new Vector2();
  4207. *retInst = inst->getPosition2D();
  4208. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4209. luaL_getmetatable(L, "Polycode.Vector2");
  4210. lua_setmetatable(L, -2);
  4211. *userdataPtr = (PolyBase*)retInst;
  4212. return 1;
  4213. }
  4214. static int Polycode_Entity_getCombinedPosition(lua_State *L) {
  4215. luaL_checktype(L, 1, LUA_TUSERDATA);
  4216. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4217. Vector3 *retInst = new Vector3();
  4218. *retInst = inst->getCombinedPosition();
  4219. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4220. luaL_getmetatable(L, "Polycode.Vector3");
  4221. lua_setmetatable(L, -2);
  4222. *userdataPtr = (PolyBase*)retInst;
  4223. return 1;
  4224. }
  4225. static int Polycode_Entity_setPosition(lua_State *L) {
  4226. luaL_checktype(L, 1, LUA_TUSERDATA);
  4227. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4228. luaL_checktype(L, 2, LUA_TNUMBER);
  4229. Number x = lua_tonumber(L, 2);
  4230. luaL_checktype(L, 3, LUA_TNUMBER);
  4231. Number y = lua_tonumber(L, 3);
  4232. Number z;
  4233. if(lua_isnumber(L, 4)) {
  4234. z = lua_tonumber(L, 4);
  4235. } else {
  4236. z = 0.0;
  4237. }
  4238. inst->setPosition(x, y, z);
  4239. return 0;
  4240. }
  4241. static int Polycode_Entity_setPositionX(lua_State *L) {
  4242. luaL_checktype(L, 1, LUA_TUSERDATA);
  4243. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4244. luaL_checktype(L, 2, LUA_TNUMBER);
  4245. Number x = lua_tonumber(L, 2);
  4246. inst->setPositionX(x);
  4247. return 0;
  4248. }
  4249. static int Polycode_Entity_setPositionY(lua_State *L) {
  4250. luaL_checktype(L, 1, LUA_TUSERDATA);
  4251. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4252. luaL_checktype(L, 2, LUA_TNUMBER);
  4253. Number y = lua_tonumber(L, 2);
  4254. inst->setPositionY(y);
  4255. return 0;
  4256. }
  4257. static int Polycode_Entity_Translate(lua_State *L) {
  4258. luaL_checktype(L, 1, LUA_TUSERDATA);
  4259. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4260. luaL_checktype(L, 2, LUA_TNUMBER);
  4261. Number x = lua_tonumber(L, 2);
  4262. luaL_checktype(L, 3, LUA_TNUMBER);
  4263. Number y = lua_tonumber(L, 3);
  4264. Number z;
  4265. if(lua_isnumber(L, 4)) {
  4266. z = lua_tonumber(L, 4);
  4267. } else {
  4268. z = 0.0;
  4269. }
  4270. inst->Translate(x, y, z);
  4271. return 0;
  4272. }
  4273. static int Polycode_Entity_setPositionZ(lua_State *L) {
  4274. luaL_checktype(L, 1, LUA_TUSERDATA);
  4275. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4276. luaL_checktype(L, 2, LUA_TNUMBER);
  4277. Number z = lua_tonumber(L, 2);
  4278. inst->setPositionZ(z);
  4279. return 0;
  4280. }
  4281. static int Polycode_Entity_setScaleX(lua_State *L) {
  4282. luaL_checktype(L, 1, LUA_TUSERDATA);
  4283. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4284. luaL_checktype(L, 2, LUA_TNUMBER);
  4285. Number x = lua_tonumber(L, 2);
  4286. inst->setScaleX(x);
  4287. return 0;
  4288. }
  4289. static int Polycode_Entity_setScaleY(lua_State *L) {
  4290. luaL_checktype(L, 1, LUA_TUSERDATA);
  4291. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4292. luaL_checktype(L, 2, LUA_TNUMBER);
  4293. Number y = lua_tonumber(L, 2);
  4294. inst->setScaleY(y);
  4295. return 0;
  4296. }
  4297. static int Polycode_Entity_setScaleZ(lua_State *L) {
  4298. luaL_checktype(L, 1, LUA_TUSERDATA);
  4299. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4300. luaL_checktype(L, 2, LUA_TNUMBER);
  4301. Number z = lua_tonumber(L, 2);
  4302. inst->setScaleZ(z);
  4303. return 0;
  4304. }
  4305. static int Polycode_Entity_Scale(lua_State *L) {
  4306. luaL_checktype(L, 1, LUA_TUSERDATA);
  4307. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4308. luaL_checktype(L, 2, LUA_TNUMBER);
  4309. Number x = lua_tonumber(L, 2);
  4310. luaL_checktype(L, 3, LUA_TNUMBER);
  4311. Number y = lua_tonumber(L, 3);
  4312. Number z;
  4313. if(lua_isnumber(L, 4)) {
  4314. z = lua_tonumber(L, 4);
  4315. } else {
  4316. z = 0.0;
  4317. }
  4318. inst->Scale(x, y, z);
  4319. return 0;
  4320. }
  4321. static int Polycode_Entity_setScale(lua_State *L) {
  4322. luaL_checktype(L, 1, LUA_TUSERDATA);
  4323. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4324. luaL_checktype(L, 2, LUA_TNUMBER);
  4325. Number x = lua_tonumber(L, 2);
  4326. luaL_checktype(L, 3, LUA_TNUMBER);
  4327. Number y = lua_tonumber(L, 3);
  4328. Number z;
  4329. if(lua_isnumber(L, 4)) {
  4330. z = lua_tonumber(L, 4);
  4331. } else {
  4332. z = 1.0;
  4333. }
  4334. inst->setScale(x, y, z);
  4335. return 0;
  4336. }
  4337. static int Polycode_Entity_getCompoundScale(lua_State *L) {
  4338. luaL_checktype(L, 1, LUA_TUSERDATA);
  4339. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4340. Vector3 *retInst = new Vector3();
  4341. *retInst = inst->getCompoundScale();
  4342. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4343. luaL_getmetatable(L, "Polycode.Vector3");
  4344. lua_setmetatable(L, -2);
  4345. *userdataPtr = (PolyBase*)retInst;
  4346. return 1;
  4347. }
  4348. static int Polycode_Entity_getScale(lua_State *L) {
  4349. luaL_checktype(L, 1, LUA_TUSERDATA);
  4350. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4351. Vector3 *retInst = new Vector3();
  4352. *retInst = inst->getScale();
  4353. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4354. luaL_getmetatable(L, "Polycode.Vector3");
  4355. lua_setmetatable(L, -2);
  4356. *userdataPtr = (PolyBase*)retInst;
  4357. return 1;
  4358. }
  4359. static int Polycode_Entity_getRotationEuler(lua_State *L) {
  4360. luaL_checktype(L, 1, LUA_TUSERDATA);
  4361. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4362. Vector3 *retInst = new Vector3();
  4363. *retInst = inst->getRotationEuler();
  4364. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4365. luaL_getmetatable(L, "Polycode.Vector3");
  4366. lua_setmetatable(L, -2);
  4367. *userdataPtr = (PolyBase*)retInst;
  4368. return 1;
  4369. }
  4370. static int Polycode_Entity_getCombinedPitch(lua_State *L) {
  4371. luaL_checktype(L, 1, LUA_TUSERDATA);
  4372. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4373. lua_pushnumber(L, inst->getCombinedPitch());
  4374. return 1;
  4375. }
  4376. static int Polycode_Entity_getCombinedYaw(lua_State *L) {
  4377. luaL_checktype(L, 1, LUA_TUSERDATA);
  4378. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4379. lua_pushnumber(L, inst->getCombinedYaw());
  4380. return 1;
  4381. }
  4382. static int Polycode_Entity_getCombinedRoll(lua_State *L) {
  4383. luaL_checktype(L, 1, LUA_TUSERDATA);
  4384. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4385. lua_pushnumber(L, inst->getCombinedRoll());
  4386. return 1;
  4387. }
  4388. static int Polycode_Entity_rebuildRotation(lua_State *L) {
  4389. luaL_checktype(L, 1, LUA_TUSERDATA);
  4390. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4391. inst->rebuildRotation();
  4392. return 0;
  4393. }
  4394. static int Polycode_Entity_setRotationEuler(lua_State *L) {
  4395. luaL_checktype(L, 1, LUA_TUSERDATA);
  4396. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4397. luaL_checktype(L, 2, LUA_TUSERDATA);
  4398. Vector3 rotation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4399. inst->setRotationEuler(rotation);
  4400. return 0;
  4401. }
  4402. static int Polycode_Entity_setPitch(lua_State *L) {
  4403. luaL_checktype(L, 1, LUA_TUSERDATA);
  4404. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4405. luaL_checktype(L, 2, LUA_TNUMBER);
  4406. Number pitch = lua_tonumber(L, 2);
  4407. inst->setPitch(pitch);
  4408. return 0;
  4409. }
  4410. static int Polycode_Entity_setYaw(lua_State *L) {
  4411. luaL_checktype(L, 1, LUA_TUSERDATA);
  4412. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4413. luaL_checktype(L, 2, LUA_TNUMBER);
  4414. Number yaw = lua_tonumber(L, 2);
  4415. inst->setYaw(yaw);
  4416. return 0;
  4417. }
  4418. static int Polycode_Entity_setRoll(lua_State *L) {
  4419. luaL_checktype(L, 1, LUA_TUSERDATA);
  4420. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4421. luaL_checktype(L, 2, LUA_TNUMBER);
  4422. Number roll = lua_tonumber(L, 2);
  4423. inst->setRoll(roll);
  4424. return 0;
  4425. }
  4426. static int Polycode_Entity_Roll(lua_State *L) {
  4427. luaL_checktype(L, 1, LUA_TUSERDATA);
  4428. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4429. luaL_checktype(L, 2, LUA_TNUMBER);
  4430. Number roll = lua_tonumber(L, 2);
  4431. inst->Roll(roll);
  4432. return 0;
  4433. }
  4434. static int Polycode_Entity_Yaw(lua_State *L) {
  4435. luaL_checktype(L, 1, LUA_TUSERDATA);
  4436. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4437. luaL_checktype(L, 2, LUA_TNUMBER);
  4438. Number yaw = lua_tonumber(L, 2);
  4439. inst->Yaw(yaw);
  4440. return 0;
  4441. }
  4442. static int Polycode_Entity_Pitch(lua_State *L) {
  4443. luaL_checktype(L, 1, LUA_TUSERDATA);
  4444. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4445. luaL_checktype(L, 2, LUA_TNUMBER);
  4446. Number pitch = lua_tonumber(L, 2);
  4447. inst->Pitch(pitch);
  4448. return 0;
  4449. }
  4450. static int Polycode_Entity_getPitch(lua_State *L) {
  4451. luaL_checktype(L, 1, LUA_TUSERDATA);
  4452. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4453. lua_pushnumber(L, inst->getPitch());
  4454. return 1;
  4455. }
  4456. static int Polycode_Entity_getYaw(lua_State *L) {
  4457. luaL_checktype(L, 1, LUA_TUSERDATA);
  4458. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4459. lua_pushnumber(L, inst->getYaw());
  4460. return 1;
  4461. }
  4462. static int Polycode_Entity_getRoll(lua_State *L) {
  4463. luaL_checktype(L, 1, LUA_TUSERDATA);
  4464. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4465. lua_pushnumber(L, inst->getRoll());
  4466. return 1;
  4467. }
  4468. static int Polycode_Entity_getWidth(lua_State *L) {
  4469. luaL_checktype(L, 1, LUA_TUSERDATA);
  4470. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4471. lua_pushnumber(L, inst->getWidth());
  4472. return 1;
  4473. }
  4474. static int Polycode_Entity_getHeight(lua_State *L) {
  4475. luaL_checktype(L, 1, LUA_TUSERDATA);
  4476. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4477. lua_pushnumber(L, inst->getHeight());
  4478. return 1;
  4479. }
  4480. static int Polycode_Entity_getDepth(lua_State *L) {
  4481. luaL_checktype(L, 1, LUA_TUSERDATA);
  4482. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4483. lua_pushnumber(L, inst->getDepth());
  4484. return 1;
  4485. }
  4486. static int Polycode_Entity_setWidth(lua_State *L) {
  4487. luaL_checktype(L, 1, LUA_TUSERDATA);
  4488. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4489. luaL_checktype(L, 2, LUA_TNUMBER);
  4490. Number width = lua_tonumber(L, 2);
  4491. inst->setWidth(width);
  4492. return 0;
  4493. }
  4494. static int Polycode_Entity_setHeight(lua_State *L) {
  4495. luaL_checktype(L, 1, LUA_TUSERDATA);
  4496. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4497. luaL_checktype(L, 2, LUA_TNUMBER);
  4498. Number height = lua_tonumber(L, 2);
  4499. inst->setHeight(height);
  4500. return 0;
  4501. }
  4502. static int Polycode_Entity_setDepth(lua_State *L) {
  4503. luaL_checktype(L, 1, LUA_TUSERDATA);
  4504. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4505. luaL_checktype(L, 2, LUA_TNUMBER);
  4506. Number depth = lua_tonumber(L, 2);
  4507. inst->setDepth(depth);
  4508. return 0;
  4509. }
  4510. static int Polycode_Entity_setRotationQuat(lua_State *L) {
  4511. luaL_checktype(L, 1, LUA_TUSERDATA);
  4512. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4513. luaL_checktype(L, 2, LUA_TNUMBER);
  4514. Number w = lua_tonumber(L, 2);
  4515. luaL_checktype(L, 3, LUA_TNUMBER);
  4516. Number x = lua_tonumber(L, 3);
  4517. luaL_checktype(L, 4, LUA_TNUMBER);
  4518. Number y = lua_tonumber(L, 4);
  4519. luaL_checktype(L, 5, LUA_TNUMBER);
  4520. Number z = lua_tonumber(L, 5);
  4521. inst->setRotationQuat(w, x, y, z);
  4522. return 0;
  4523. }
  4524. static int Polycode_Entity_setRotationByQuaternion(lua_State *L) {
  4525. luaL_checktype(L, 1, LUA_TUSERDATA);
  4526. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4527. luaL_checktype(L, 2, LUA_TUSERDATA);
  4528. Quaternion quaternion = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  4529. inst->setRotationByQuaternion(quaternion);
  4530. return 0;
  4531. }
  4532. static int Polycode_Entity_getRotationQuat(lua_State *L) {
  4533. luaL_checktype(L, 1, LUA_TUSERDATA);
  4534. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4535. Quaternion *retInst = new Quaternion();
  4536. *retInst = inst->getRotationQuat();
  4537. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4538. luaL_getmetatable(L, "Polycode.Quaternion");
  4539. lua_setmetatable(L, -2);
  4540. *userdataPtr = (PolyBase*)retInst;
  4541. return 1;
  4542. }
  4543. static int Polycode_Entity_getConcatenatedQuat(lua_State *L) {
  4544. luaL_checktype(L, 1, LUA_TUSERDATA);
  4545. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4546. Quaternion *retInst = new Quaternion();
  4547. *retInst = inst->getConcatenatedQuat();
  4548. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4549. luaL_getmetatable(L, "Polycode.Quaternion");
  4550. lua_setmetatable(L, -2);
  4551. *userdataPtr = (PolyBase*)retInst;
  4552. return 1;
  4553. }
  4554. static int Polycode_Entity_lookAt(lua_State *L) {
  4555. luaL_checktype(L, 1, LUA_TUSERDATA);
  4556. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4557. luaL_checktype(L, 2, LUA_TUSERDATA);
  4558. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4559. luaL_checktype(L, 3, LUA_TUSERDATA);
  4560. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4561. inst->lookAt(loc, upVector);
  4562. return 0;
  4563. }
  4564. static int Polycode_Entity_lookAtEntity(lua_State *L) {
  4565. luaL_checktype(L, 1, LUA_TUSERDATA);
  4566. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4567. luaL_checktype(L, 2, LUA_TUSERDATA);
  4568. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4569. luaL_checktype(L, 3, LUA_TUSERDATA);
  4570. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4571. inst->lookAtEntity(entity, upVector);
  4572. return 0;
  4573. }
  4574. static int Polycode_Entity_getCombinedColor(lua_State *L) {
  4575. luaL_checktype(L, 1, LUA_TUSERDATA);
  4576. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4577. Color *retInst = new Color();
  4578. *retInst = inst->getCombinedColor();
  4579. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4580. luaL_getmetatable(L, "Polycode.Color");
  4581. lua_setmetatable(L, -2);
  4582. *userdataPtr = (PolyBase*)retInst;
  4583. return 1;
  4584. }
  4585. static int Polycode_Entity_setColor(lua_State *L) {
  4586. luaL_checktype(L, 1, LUA_TUSERDATA);
  4587. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4588. luaL_checktype(L, 2, LUA_TNUMBER);
  4589. Number r = lua_tonumber(L, 2);
  4590. luaL_checktype(L, 3, LUA_TNUMBER);
  4591. Number g = lua_tonumber(L, 3);
  4592. luaL_checktype(L, 4, LUA_TNUMBER);
  4593. Number b = lua_tonumber(L, 4);
  4594. luaL_checktype(L, 5, LUA_TNUMBER);
  4595. Number a = lua_tonumber(L, 5);
  4596. inst->setColor(r, g, b, a);
  4597. return 0;
  4598. }
  4599. static int Polycode_Entity_setColorInt(lua_State *L) {
  4600. luaL_checktype(L, 1, LUA_TUSERDATA);
  4601. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4602. luaL_checktype(L, 2, LUA_TNUMBER);
  4603. int r = lua_tointeger(L, 2);
  4604. luaL_checktype(L, 3, LUA_TNUMBER);
  4605. int g = lua_tointeger(L, 3);
  4606. luaL_checktype(L, 4, LUA_TNUMBER);
  4607. int b = lua_tointeger(L, 4);
  4608. luaL_checktype(L, 5, LUA_TNUMBER);
  4609. int a = lua_tointeger(L, 5);
  4610. inst->setColorInt(r, g, b, a);
  4611. return 0;
  4612. }
  4613. static int Polycode_Entity_setAnchorPoint(lua_State *L) {
  4614. luaL_checktype(L, 1, LUA_TUSERDATA);
  4615. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4616. luaL_checktype(L, 2, LUA_TUSERDATA);
  4617. Vector3 anchorPoint = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4618. inst->setAnchorPoint(anchorPoint);
  4619. return 0;
  4620. }
  4621. static int Polycode_Entity_getAnchorPoint(lua_State *L) {
  4622. luaL_checktype(L, 1, LUA_TUSERDATA);
  4623. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4624. Vector3 *retInst = new Vector3();
  4625. *retInst = inst->getAnchorPoint();
  4626. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4627. luaL_getmetatable(L, "Polycode.Vector3");
  4628. lua_setmetatable(L, -2);
  4629. *userdataPtr = (PolyBase*)retInst;
  4630. return 1;
  4631. }
  4632. static int Polycode_Entity_onMouseDown(lua_State *L) {
  4633. luaL_checktype(L, 1, LUA_TUSERDATA);
  4634. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4635. luaL_checktype(L, 2, LUA_TUSERDATA);
  4636. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4637. luaL_checktype(L, 3, LUA_TNUMBER);
  4638. int mouseButton = lua_tointeger(L, 3);
  4639. luaL_checktype(L, 4, LUA_TNUMBER);
  4640. int timestamp = lua_tointeger(L, 4);
  4641. MouseEventResult *retInst = new MouseEventResult();
  4642. *retInst = inst->onMouseDown(ray, mouseButton, timestamp);
  4643. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4644. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4645. lua_setmetatable(L, -2);
  4646. *userdataPtr = (PolyBase*)retInst;
  4647. return 1;
  4648. }
  4649. static int Polycode_Entity_onMouseUp(lua_State *L) {
  4650. luaL_checktype(L, 1, LUA_TUSERDATA);
  4651. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4652. luaL_checktype(L, 2, LUA_TUSERDATA);
  4653. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4654. luaL_checktype(L, 3, LUA_TNUMBER);
  4655. int mouseButton = lua_tointeger(L, 3);
  4656. luaL_checktype(L, 4, LUA_TNUMBER);
  4657. int timestamp = lua_tointeger(L, 4);
  4658. MouseEventResult *retInst = new MouseEventResult();
  4659. *retInst = inst->onMouseUp(ray, mouseButton, timestamp);
  4660. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4661. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4662. lua_setmetatable(L, -2);
  4663. *userdataPtr = (PolyBase*)retInst;
  4664. return 1;
  4665. }
  4666. static int Polycode_Entity_onMouseMove(lua_State *L) {
  4667. luaL_checktype(L, 1, LUA_TUSERDATA);
  4668. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4669. luaL_checktype(L, 2, LUA_TUSERDATA);
  4670. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4671. luaL_checktype(L, 3, LUA_TNUMBER);
  4672. int timestamp = lua_tointeger(L, 3);
  4673. MouseEventResult *retInst = new MouseEventResult();
  4674. *retInst = inst->onMouseMove(ray, timestamp);
  4675. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4676. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4677. lua_setmetatable(L, -2);
  4678. *userdataPtr = (PolyBase*)retInst;
  4679. return 1;
  4680. }
  4681. static int Polycode_Entity_onMouseWheelUp(lua_State *L) {
  4682. luaL_checktype(L, 1, LUA_TUSERDATA);
  4683. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4684. luaL_checktype(L, 2, LUA_TUSERDATA);
  4685. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4686. luaL_checktype(L, 3, LUA_TNUMBER);
  4687. int timestamp = lua_tointeger(L, 3);
  4688. MouseEventResult *retInst = new MouseEventResult();
  4689. *retInst = inst->onMouseWheelUp(ray, timestamp);
  4690. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4691. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4692. lua_setmetatable(L, -2);
  4693. *userdataPtr = (PolyBase*)retInst;
  4694. return 1;
  4695. }
  4696. static int Polycode_Entity_onMouseWheelDown(lua_State *L) {
  4697. luaL_checktype(L, 1, LUA_TUSERDATA);
  4698. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4699. luaL_checktype(L, 2, LUA_TUSERDATA);
  4700. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4701. luaL_checktype(L, 3, LUA_TNUMBER);
  4702. int timestamp = lua_tointeger(L, 3);
  4703. MouseEventResult *retInst = new MouseEventResult();
  4704. *retInst = inst->onMouseWheelDown(ray, timestamp);
  4705. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4706. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4707. lua_setmetatable(L, -2);
  4708. *userdataPtr = (PolyBase*)retInst;
  4709. return 1;
  4710. }
  4711. static int Polycode_Entity_setDepthOnly(lua_State *L) {
  4712. luaL_checktype(L, 1, LUA_TUSERDATA);
  4713. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4714. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4715. bool val = lua_toboolean(L, 2) != 0;
  4716. inst->setDepthOnly(val);
  4717. return 0;
  4718. }
  4719. static int Polycode_Entity_getDepthOnly(lua_State *L) {
  4720. luaL_checktype(L, 1, LUA_TUSERDATA);
  4721. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4722. lua_pushboolean(L, inst->getDepthOnly());
  4723. return 1;
  4724. }
  4725. static int Polycode_Entity_setUserData(lua_State *L) {
  4726. luaL_checktype(L, 1, LUA_TUSERDATA);
  4727. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4728. luaL_checktype(L, 2, LUA_TUSERDATA);
  4729. void* userData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  4730. inst->setUserData(userData);
  4731. return 0;
  4732. }
  4733. static int Polycode_Entity_getUserData(lua_State *L) {
  4734. luaL_checktype(L, 1, LUA_TUSERDATA);
  4735. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4736. PolyBase *ptrRetVal = (PolyBase*)inst->getUserData();
  4737. if(ptrRetVal == NULL) {
  4738. lua_pushnil(L);
  4739. } else {
  4740. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4741. *userdataPtr = ptrRetVal;
  4742. }
  4743. return 1;
  4744. }
  4745. static int Polycode_Entity_setBlendingMode(lua_State *L) {
  4746. luaL_checktype(L, 1, LUA_TUSERDATA);
  4747. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4748. luaL_checktype(L, 2, LUA_TNUMBER);
  4749. int newBlendingMode = lua_tointeger(L, 2);
  4750. inst->setBlendingMode(newBlendingMode);
  4751. return 0;
  4752. }
  4753. static int Polycode_Entity_getBlendingMode(lua_State *L) {
  4754. luaL_checktype(L, 1, LUA_TUSERDATA);
  4755. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4756. lua_pushinteger(L, inst->getBlendingMode());
  4757. return 1;
  4758. }
  4759. static int Polycode_Entity_getEntityById(lua_State *L) {
  4760. luaL_checktype(L, 1, LUA_TUSERDATA);
  4761. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4762. luaL_checktype(L, 2, LUA_TSTRING);
  4763. String id = String(lua_tostring(L, 2));
  4764. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4765. bool recursive = lua_toboolean(L, 3) != 0;
  4766. PolyBase *ptrRetVal = (PolyBase*)inst->getEntityById(id, recursive);
  4767. if(ptrRetVal == NULL) {
  4768. lua_pushnil(L);
  4769. } else {
  4770. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4771. *userdataPtr = ptrRetVal;
  4772. }
  4773. return 1;
  4774. }
  4775. static int Polycode_Entity_getEntitiesByTag(lua_State *L) {
  4776. luaL_checktype(L, 1, LUA_TUSERDATA);
  4777. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4778. luaL_checktype(L, 2, LUA_TSTRING);
  4779. String tag = String(lua_tostring(L, 2));
  4780. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4781. bool recursive = lua_toboolean(L, 3) != 0;
  4782. std::vector<Entity*> retVector = inst->getEntitiesByTag(tag, recursive);
  4783. lua_newtable(L);
  4784. for(int i=0; i < retVector.size(); i++) {
  4785. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4786. *userdataPtr = (PolyBase*)retVector[i];
  4787. lua_rawseti(L, -2, i+1);
  4788. }
  4789. return 1;
  4790. }
  4791. static int Polycode_Entity_getEntitiesByLayerID(lua_State *L) {
  4792. luaL_checktype(L, 1, LUA_TUSERDATA);
  4793. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4794. luaL_checktype(L, 2, LUA_TUSERDATA);
  4795. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  4796. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4797. bool recursive = lua_toboolean(L, 3) != 0;
  4798. std::vector<Entity*> retVector = inst->getEntitiesByLayerID(layerID, recursive);
  4799. lua_newtable(L);
  4800. for(int i=0; i < retVector.size(); i++) {
  4801. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4802. *userdataPtr = (PolyBase*)retVector[i];
  4803. lua_rawseti(L, -2, i+1);
  4804. }
  4805. return 1;
  4806. }
  4807. static int Polycode_Entity_getEntityProp(lua_State *L) {
  4808. luaL_checktype(L, 1, LUA_TUSERDATA);
  4809. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4810. luaL_checktype(L, 2, LUA_TSTRING);
  4811. String propName = String(lua_tostring(L, 2));
  4812. lua_pushstring(L, inst->getEntityProp(propName).c_str());
  4813. return 1;
  4814. }
  4815. static int Polycode_Entity_setEntityProp(lua_State *L) {
  4816. luaL_checktype(L, 1, LUA_TUSERDATA);
  4817. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4818. luaL_checktype(L, 2, LUA_TSTRING);
  4819. String propName = String(lua_tostring(L, 2));
  4820. luaL_checktype(L, 3, LUA_TSTRING);
  4821. String propValue = String(lua_tostring(L, 3));
  4822. inst->setEntityProp(propName, propValue);
  4823. return 0;
  4824. }
  4825. static int Polycode_Entity_setInverseY(lua_State *L) {
  4826. luaL_checktype(L, 1, LUA_TUSERDATA);
  4827. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4828. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4829. bool val = lua_toboolean(L, 2) != 0;
  4830. inst->setInverseY(val);
  4831. return 0;
  4832. }
  4833. static int Polycode_Entity_getInverseY(lua_State *L) {
  4834. luaL_checktype(L, 1, LUA_TUSERDATA);
  4835. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4836. lua_pushboolean(L, inst->getInverseY());
  4837. return 1;
  4838. }
  4839. static int Polycode_Entity_doUpdates(lua_State *L) {
  4840. luaL_checktype(L, 1, LUA_TUSERDATA);
  4841. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4842. inst->doUpdates();
  4843. return 0;
  4844. }
  4845. static int Polycode_Entity_doFixedUpdates(lua_State *L) {
  4846. luaL_checktype(L, 1, LUA_TUSERDATA);
  4847. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4848. inst->doFixedUpdates();
  4849. return 0;
  4850. }
  4851. static int Polycode_Entity_buildPositionMatrix(lua_State *L) {
  4852. luaL_checktype(L, 1, LUA_TUSERDATA);
  4853. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4854. Matrix4 *retInst = new Matrix4();
  4855. *retInst = inst->buildPositionMatrix();
  4856. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4857. luaL_getmetatable(L, "Polycode.Matrix4");
  4858. lua_setmetatable(L, -2);
  4859. *userdataPtr = (PolyBase*)retInst;
  4860. return 1;
  4861. }
  4862. static int Polycode_Entity_setRenderer(lua_State *L) {
  4863. luaL_checktype(L, 1, LUA_TUSERDATA);
  4864. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4865. luaL_checktype(L, 2, LUA_TUSERDATA);
  4866. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  4867. inst->setRenderer(renderer);
  4868. return 0;
  4869. }
  4870. static int Polycode_Entity_customHitDetection(lua_State *L) {
  4871. luaL_checktype(L, 1, LUA_TUSERDATA);
  4872. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4873. luaL_checktype(L, 2, LUA_TUSERDATA);
  4874. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4875. lua_pushboolean(L, inst->customHitDetection(ray));
  4876. return 1;
  4877. }
  4878. static int Polycode_Entity_getNumTags(lua_State *L) {
  4879. luaL_checktype(L, 1, LUA_TUSERDATA);
  4880. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4881. lua_pushinteger(L, inst->getNumTags());
  4882. return 1;
  4883. }
  4884. static int Polycode_Entity_getTagAtIndex(lua_State *L) {
  4885. luaL_checktype(L, 1, LUA_TUSERDATA);
  4886. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4887. luaL_checktype(L, 2, LUA_TNUMBER);
  4888. int index = lua_tointeger(L, 2);
  4889. lua_pushstring(L, inst->getTagAtIndex(index).c_str());
  4890. return 1;
  4891. }
  4892. static int Polycode_Entity_hasTag(lua_State *L) {
  4893. luaL_checktype(L, 1, LUA_TUSERDATA);
  4894. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4895. luaL_checktype(L, 2, LUA_TSTRING);
  4896. String tag = String(lua_tostring(L, 2));
  4897. lua_pushboolean(L, inst->hasTag(tag));
  4898. return 1;
  4899. }
  4900. static int Polycode_Entity_clearTags(lua_State *L) {
  4901. luaL_checktype(L, 1, LUA_TUSERDATA);
  4902. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4903. inst->clearTags();
  4904. return 0;
  4905. }
  4906. static int Polycode_Entity_addTag(lua_State *L) {
  4907. luaL_checktype(L, 1, LUA_TUSERDATA);
  4908. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4909. luaL_checktype(L, 2, LUA_TSTRING);
  4910. String tag = String(lua_tostring(L, 2));
  4911. inst->addTag(tag);
  4912. return 0;
  4913. }
  4914. static int Polycode_Entity_getScreenPosition(lua_State *L) {
  4915. luaL_checktype(L, 1, LUA_TUSERDATA);
  4916. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4917. luaL_checktype(L, 2, LUA_TUSERDATA);
  4918. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  4919. luaL_checktype(L, 3, LUA_TUSERDATA);
  4920. Matrix4 cameraMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  4921. luaL_checktype(L, 4, LUA_TUSERDATA);
  4922. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  4923. Vector2 *retInst = new Vector2();
  4924. *retInst = inst->getScreenPosition(projectionMatrix, cameraMatrix, viewport);
  4925. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4926. luaL_getmetatable(L, "Polycode.Vector2");
  4927. lua_setmetatable(L, -2);
  4928. *userdataPtr = (PolyBase*)retInst;
  4929. return 1;
  4930. }
  4931. static int Polycode_Entity_recalculateAABBAllChildren(lua_State *L) {
  4932. luaL_checktype(L, 1, LUA_TUSERDATA);
  4933. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4934. inst->recalculateAABBAllChildren();
  4935. return 0;
  4936. }
  4937. static int Polycode_Entity_recalculateAABB(lua_State *L) {
  4938. luaL_checktype(L, 1, LUA_TUSERDATA);
  4939. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4940. inst->recalculateAABB();
  4941. return 0;
  4942. }
  4943. static int Polycode_Entity_getWorldAABB(lua_State *L) {
  4944. luaL_checktype(L, 1, LUA_TUSERDATA);
  4945. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4946. AABB *retInst = new AABB();
  4947. *retInst = inst->getWorldAABB();
  4948. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4949. luaL_getmetatable(L, "Polycode.AABB");
  4950. lua_setmetatable(L, -2);
  4951. *userdataPtr = (PolyBase*)retInst;
  4952. return 1;
  4953. }
  4954. static int Polycode_Entity_getLocalBoundingBox(lua_State *L) {
  4955. luaL_checktype(L, 1, LUA_TUSERDATA);
  4956. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4957. Vector3 *retInst = new Vector3();
  4958. *retInst = inst->getLocalBoundingBox();
  4959. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4960. luaL_getmetatable(L, "Polycode.Vector3");
  4961. lua_setmetatable(L, -2);
  4962. *userdataPtr = (PolyBase*)retInst;
  4963. return 1;
  4964. }
  4965. static int Polycode_Entity_setLocalBoundingBox(lua_State *L) {
  4966. luaL_checktype(L, 1, LUA_TUSERDATA);
  4967. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4968. luaL_checktype(L, 2, LUA_TUSERDATA);
  4969. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4970. inst->setLocalBoundingBox(box);
  4971. return 0;
  4972. }
  4973. static int Polycode_Entity_setLocalBoundingBoxX(lua_State *L) {
  4974. luaL_checktype(L, 1, LUA_TUSERDATA);
  4975. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4976. luaL_checktype(L, 2, LUA_TNUMBER);
  4977. Number x = lua_tonumber(L, 2);
  4978. inst->setLocalBoundingBoxX(x);
  4979. return 0;
  4980. }
  4981. static int Polycode_Entity_setLocalBoundingBoxY(lua_State *L) {
  4982. luaL_checktype(L, 1, LUA_TUSERDATA);
  4983. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4984. luaL_checktype(L, 2, LUA_TNUMBER);
  4985. Number y = lua_tonumber(L, 2);
  4986. inst->setLocalBoundingBoxY(y);
  4987. return 0;
  4988. }
  4989. static int Polycode_Entity_setLocalBoundingBoxZ(lua_State *L) {
  4990. luaL_checktype(L, 1, LUA_TUSERDATA);
  4991. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4992. luaL_checktype(L, 2, LUA_TNUMBER);
  4993. Number z = lua_tonumber(L, 2);
  4994. inst->setLocalBoundingBoxZ(z);
  4995. return 0;
  4996. }
  4997. static int Polycode_Entity_setContainerScene(lua_State *L) {
  4998. luaL_checktype(L, 1, LUA_TUSERDATA);
  4999. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5000. luaL_checktype(L, 2, LUA_TUSERDATA);
  5001. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  5002. inst->setContainerScene(scene);
  5003. return 0;
  5004. }
  5005. static int Polycode_Entity_getContainerScene(lua_State *L) {
  5006. luaL_checktype(L, 1, LUA_TUSERDATA);
  5007. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5008. PolyBase *ptrRetVal = (PolyBase*)inst->getContainerScene();
  5009. if(ptrRetVal == NULL) {
  5010. lua_pushnil(L);
  5011. } else {
  5012. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5013. *userdataPtr = ptrRetVal;
  5014. }
  5015. return 1;
  5016. }
  5017. static int Polycode_Entity_attachScript(lua_State *L) {
  5018. luaL_checktype(L, 1, LUA_TUSERDATA);
  5019. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5020. luaL_checktype(L, 2, LUA_TUSERDATA);
  5021. shared_ptr<Script> script = *(shared_ptr<Script>*) *((PolyBase**)lua_touserdata(L, 2));
  5022. inst->attachScript(script);
  5023. return 0;
  5024. }
  5025. static int Polycode_Entity_detachScript(lua_State *L) {
  5026. luaL_checktype(L, 1, LUA_TUSERDATA);
  5027. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5028. luaL_checktype(L, 2, LUA_TUSERDATA);
  5029. Script* script = (Script*) *((PolyBase**)lua_touserdata(L, 2));
  5030. inst->detachScript(script);
  5031. return 0;
  5032. }
  5033. static int Polycode_Entity_getNumScripts(lua_State *L) {
  5034. luaL_checktype(L, 1, LUA_TUSERDATA);
  5035. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5036. lua_pushinteger(L, inst->getNumScripts());
  5037. return 1;
  5038. }
  5039. static int Polycode_Entity_getScriptAtIndex(lua_State *L) {
  5040. luaL_checktype(L, 1, LUA_TUSERDATA);
  5041. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5042. luaL_checktype(L, 2, LUA_TNUMBER);
  5043. int index = lua_tointeger(L, 2);
  5044. PolyBase *ptrRetVal = (PolyBase*)inst->getScriptAtIndex(index);
  5045. if(ptrRetVal == NULL) {
  5046. lua_pushnil(L);
  5047. } else {
  5048. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5049. *userdataPtr = ptrRetVal;
  5050. }
  5051. return 1;
  5052. }
  5053. static int Polycode_delete_Entity(lua_State *L) {
  5054. luaL_checktype(L, 1, LUA_TUSERDATA);
  5055. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5056. delete ((Entity*) *inst);
  5057. *inst = NULL;
  5058. return 0;
  5059. }
  5060. static int Polycode_Event_get_deleteOnDispatch(lua_State *L) {
  5061. luaL_checktype(L, 1, LUA_TUSERDATA);
  5062. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5063. lua_pushboolean(L, inst->deleteOnDispatch);
  5064. return 1;
  5065. }
  5066. static int Polycode_Event_get_cancelEventFlag(lua_State *L) {
  5067. luaL_checktype(L, 1, LUA_TUSERDATA);
  5068. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5069. lua_pushboolean(L, inst->cancelEventFlag);
  5070. return 1;
  5071. }
  5072. static int Polycode_Event_set_deleteOnDispatch(lua_State *L) {
  5073. luaL_checktype(L, 1, LUA_TUSERDATA);
  5074. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5075. bool param = lua_toboolean(L, 2) != 0;
  5076. inst->deleteOnDispatch = param;
  5077. return 0;
  5078. }
  5079. static int Polycode_Event_set_cancelEventFlag(lua_State *L) {
  5080. luaL_checktype(L, 1, LUA_TUSERDATA);
  5081. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5082. bool param = lua_toboolean(L, 2) != 0;
  5083. inst->cancelEventFlag = param;
  5084. return 0;
  5085. }
  5086. static int Polycode_Event(lua_State *L) {
  5087. Event *inst = new Event();
  5088. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5089. *userdataPtr = (PolyBase*)inst;
  5090. luaL_getmetatable(L, "Polycode.Event");
  5091. lua_setmetatable(L, -2);
  5092. return 1;
  5093. }
  5094. static int Polycode_Event_getEventCode(lua_State *L) {
  5095. luaL_checktype(L, 1, LUA_TUSERDATA);
  5096. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5097. lua_pushinteger(L, inst->getEventCode());
  5098. return 1;
  5099. }
  5100. static int Polycode_Event_getDispatcher(lua_State *L) {
  5101. luaL_checktype(L, 1, LUA_TUSERDATA);
  5102. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5103. PolyBase *ptrRetVal = (PolyBase*)inst->getDispatcher();
  5104. if(ptrRetVal == NULL) {
  5105. lua_pushnil(L);
  5106. } else {
  5107. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5108. *userdataPtr = ptrRetVal;
  5109. }
  5110. return 1;
  5111. }
  5112. static int Polycode_Event_setEventCode(lua_State *L) {
  5113. luaL_checktype(L, 1, LUA_TUSERDATA);
  5114. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5115. luaL_checktype(L, 2, LUA_TNUMBER);
  5116. int eventCode = lua_tointeger(L, 2);
  5117. inst->setEventCode(eventCode);
  5118. return 0;
  5119. }
  5120. static int Polycode_Event_setDispatcher(lua_State *L) {
  5121. luaL_checktype(L, 1, LUA_TUSERDATA);
  5122. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5123. luaL_checktype(L, 2, LUA_TUSERDATA);
  5124. EventDispatcher* dispatcher = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 2));
  5125. inst->setDispatcher(dispatcher);
  5126. return 0;
  5127. }
  5128. static int Polycode_Event_getEventType(lua_State *L) {
  5129. luaL_checktype(L, 1, LUA_TUSERDATA);
  5130. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5131. lua_pushstring(L, inst->getEventType().c_str());
  5132. return 1;
  5133. }
  5134. static int Polycode_Event_cancelEvent(lua_State *L) {
  5135. luaL_checktype(L, 1, LUA_TUSERDATA);
  5136. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5137. inst->cancelEvent();
  5138. return 0;
  5139. }
  5140. static int Polycode_delete_Event(lua_State *L) {
  5141. luaL_checktype(L, 1, LUA_TUSERDATA);
  5142. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5143. delete ((Event*) *inst);
  5144. *inst = NULL;
  5145. return 0;
  5146. }
  5147. static int Polycode_EventDispatcher(lua_State *L) {
  5148. EventDispatcher *inst = new EventDispatcher();
  5149. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5150. *userdataPtr = (PolyBase*)inst;
  5151. luaL_getmetatable(L, "Polycode.EventDispatcher");
  5152. lua_setmetatable(L, -2);
  5153. return 1;
  5154. }
  5155. static int Polycode_EventDispatcher_removeAllHandlers(lua_State *L) {
  5156. luaL_checktype(L, 1, LUA_TUSERDATA);
  5157. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5158. inst->removeAllHandlers();
  5159. return 0;
  5160. }
  5161. static int Polycode_EventDispatcher_removeAllHandlersForListener(lua_State *L) {
  5162. luaL_checktype(L, 1, LUA_TUSERDATA);
  5163. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5164. luaL_checktype(L, 2, LUA_TUSERDATA);
  5165. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5166. inst->removeAllHandlersForListener(handler);
  5167. return 0;
  5168. }
  5169. static int Polycode_EventDispatcher_addEventListener(lua_State *L) {
  5170. luaL_checktype(L, 1, LUA_TUSERDATA);
  5171. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5172. luaL_checktype(L, 2, LUA_TUSERDATA);
  5173. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5174. luaL_checktype(L, 3, LUA_TNUMBER);
  5175. int eventCode = lua_tointeger(L, 3);
  5176. inst->addEventListener(handler, eventCode);
  5177. return 0;
  5178. }
  5179. static int Polycode_EventDispatcher_addEventListenerUnique(lua_State *L) {
  5180. luaL_checktype(L, 1, LUA_TUSERDATA);
  5181. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5182. luaL_checktype(L, 2, LUA_TUSERDATA);
  5183. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5184. luaL_checktype(L, 3, LUA_TNUMBER);
  5185. int eventCode = lua_tointeger(L, 3);
  5186. inst->addEventListenerUnique(handler, eventCode);
  5187. return 0;
  5188. }
  5189. static int Polycode_EventDispatcher_hasEventListener(lua_State *L) {
  5190. luaL_checktype(L, 1, LUA_TUSERDATA);
  5191. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5192. luaL_checktype(L, 2, LUA_TUSERDATA);
  5193. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5194. luaL_checktype(L, 3, LUA_TNUMBER);
  5195. int eventCode = lua_tointeger(L, 3);
  5196. lua_pushboolean(L, inst->hasEventListener(handler, eventCode));
  5197. return 1;
  5198. }
  5199. static int Polycode_EventDispatcher_removeEventListener(lua_State *L) {
  5200. luaL_checktype(L, 1, LUA_TUSERDATA);
  5201. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5202. luaL_checktype(L, 2, LUA_TUSERDATA);
  5203. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5204. luaL_checktype(L, 3, LUA_TNUMBER);
  5205. int eventCode = lua_tointeger(L, 3);
  5206. inst->removeEventListener(handler, eventCode);
  5207. return 0;
  5208. }
  5209. static int Polycode_EventDispatcher___dispatchEvent(lua_State *L) {
  5210. luaL_checktype(L, 1, LUA_TUSERDATA);
  5211. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5212. luaL_checktype(L, 2, LUA_TUSERDATA);
  5213. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5214. luaL_checktype(L, 3, LUA_TNUMBER);
  5215. int eventCode = lua_tointeger(L, 3);
  5216. inst->__dispatchEvent(event, eventCode);
  5217. return 0;
  5218. }
  5219. static int Polycode_EventDispatcher_dispatchEvent(lua_State *L) {
  5220. luaL_checktype(L, 1, LUA_TUSERDATA);
  5221. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5222. luaL_checktype(L, 2, LUA_TUSERDATA);
  5223. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5224. luaL_checktype(L, 3, LUA_TNUMBER);
  5225. int eventCode = lua_tointeger(L, 3);
  5226. inst->dispatchEvent(event, eventCode);
  5227. return 0;
  5228. }
  5229. static int Polycode_EventDispatcher_dispatchEventNoDelete(lua_State *L) {
  5230. luaL_checktype(L, 1, LUA_TUSERDATA);
  5231. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5232. luaL_checktype(L, 2, LUA_TUSERDATA);
  5233. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5234. luaL_checktype(L, 3, LUA_TNUMBER);
  5235. int eventCode = lua_tointeger(L, 3);
  5236. inst->dispatchEventNoDelete(event, eventCode);
  5237. return 0;
  5238. }
  5239. static int Polycode_delete_EventDispatcher(lua_State *L) {
  5240. luaL_checktype(L, 1, LUA_TUSERDATA);
  5241. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5242. delete ((EventDispatcher*) *inst);
  5243. *inst = NULL;
  5244. return 0;
  5245. }
  5246. static int Polycode_EventHandler(lua_State *L) {
  5247. LuaEventHandler *inst = new LuaEventHandler();
  5248. inst->wrapperIndex = luaL_ref(L, LUA_REGISTRYINDEX );
  5249. inst->L = L;
  5250. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5251. *userdataPtr = (PolyBase*)inst;
  5252. luaL_getmetatable(L, "Polycode.EventHandler");
  5253. lua_setmetatable(L, -2);
  5254. return 1;
  5255. }
  5256. static int Polycode_delete_EventHandler(lua_State *L) {
  5257. luaL_checktype(L, 1, LUA_TUSERDATA);
  5258. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5259. delete ((EventHandler*) *inst);
  5260. *inst = NULL;
  5261. return 0;
  5262. }
  5263. static int Polycode_Font_get_loaded(lua_State *L) {
  5264. luaL_checktype(L, 1, LUA_TUSERDATA);
  5265. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5266. lua_pushboolean(L, inst->loaded);
  5267. return 1;
  5268. }
  5269. static int Polycode_Font_set_loaded(lua_State *L) {
  5270. luaL_checktype(L, 1, LUA_TUSERDATA);
  5271. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5272. bool param = lua_toboolean(L, 2) != 0;
  5273. inst->loaded = param;
  5274. return 0;
  5275. }
  5276. static int Polycode_Font(lua_State *L) {
  5277. luaL_checktype(L, 1, LUA_TSTRING);
  5278. String fileName = String(lua_tostring(L, 1));
  5279. luaL_checktype(L, 2, LUA_TUSERDATA);
  5280. FT_Library FTLibrary = *(FT_Library*) *((PolyBase**)lua_touserdata(L, 2));
  5281. Font *inst = new Font(fileName, FTLibrary);
  5282. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5283. *userdataPtr = (PolyBase*)inst;
  5284. luaL_getmetatable(L, "Polycode.Font");
  5285. lua_setmetatable(L, -2);
  5286. return 1;
  5287. }
  5288. static int Polycode_Font_getFace(lua_State *L) {
  5289. luaL_checktype(L, 1, LUA_TUSERDATA);
  5290. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5291. FT_Face *retInst = new FT_Face();
  5292. *retInst = inst->getFace();
  5293. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5294. luaL_getmetatable(L, "Polycode.FT_Face");
  5295. lua_setmetatable(L, -2);
  5296. *userdataPtr = (PolyBase*)retInst;
  5297. return 1;
  5298. }
  5299. static int Polycode_Font_isValid(lua_State *L) {
  5300. luaL_checktype(L, 1, LUA_TUSERDATA);
  5301. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5302. lua_pushboolean(L, inst->isValid());
  5303. return 1;
  5304. }
  5305. static int Polycode_Font_setFontName(lua_State *L) {
  5306. luaL_checktype(L, 1, LUA_TUSERDATA);
  5307. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5308. luaL_checktype(L, 2, LUA_TSTRING);
  5309. String fontName = String(lua_tostring(L, 2));
  5310. inst->setFontName(fontName);
  5311. return 0;
  5312. }
  5313. static int Polycode_Font_getFontName(lua_State *L) {
  5314. luaL_checktype(L, 1, LUA_TUSERDATA);
  5315. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5316. lua_pushstring(L, inst->getFontName().c_str());
  5317. return 1;
  5318. }
  5319. static int Polycode_Font_getFontPath(lua_State *L) {
  5320. luaL_checktype(L, 1, LUA_TUSERDATA);
  5321. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5322. lua_pushstring(L, inst->getFontPath().c_str());
  5323. return 1;
  5324. }
  5325. static int Polycode_delete_Font(lua_State *L) {
  5326. luaL_checktype(L, 1, LUA_TUSERDATA);
  5327. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5328. delete ((Font*) *inst);
  5329. *inst = NULL;
  5330. return 0;
  5331. }
  5332. static int Polycode_LightInfo_get_importance(lua_State *L) {
  5333. luaL_checktype(L, 1, LUA_TUSERDATA);
  5334. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5335. lua_pushinteger(L, inst->importance);
  5336. return 1;
  5337. }
  5338. static int Polycode_LightInfo_get_position(lua_State *L) {
  5339. luaL_checktype(L, 1, LUA_TUSERDATA);
  5340. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5341. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5342. *userdataPtr = (PolyBase*)&inst->position;
  5343. return 1;
  5344. }
  5345. static int Polycode_LightInfo_get_direction(lua_State *L) {
  5346. luaL_checktype(L, 1, LUA_TUSERDATA);
  5347. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5348. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5349. *userdataPtr = (PolyBase*)&inst->direction;
  5350. return 1;
  5351. }
  5352. static int Polycode_LightInfo_get_type(lua_State *L) {
  5353. luaL_checktype(L, 1, LUA_TUSERDATA);
  5354. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5355. lua_pushinteger(L, inst->type);
  5356. return 1;
  5357. }
  5358. static int Polycode_LightInfo_get_diffuseColor(lua_State *L) {
  5359. luaL_checktype(L, 1, LUA_TUSERDATA);
  5360. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5361. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5362. *userdataPtr = (PolyBase*)&inst->diffuseColor;
  5363. return 1;
  5364. }
  5365. static int Polycode_LightInfo_get_specularColor(lua_State *L) {
  5366. luaL_checktype(L, 1, LUA_TUSERDATA);
  5367. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5368. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5369. *userdataPtr = (PolyBase*)&inst->specularColor;
  5370. return 1;
  5371. }
  5372. static int Polycode_LightInfo_get_constantAttenuation(lua_State *L) {
  5373. luaL_checktype(L, 1, LUA_TUSERDATA);
  5374. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5375. lua_pushnumber(L, inst->constantAttenuation);
  5376. return 1;
  5377. }
  5378. static int Polycode_LightInfo_get_linearAttenuation(lua_State *L) {
  5379. luaL_checktype(L, 1, LUA_TUSERDATA);
  5380. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5381. lua_pushnumber(L, inst->linearAttenuation);
  5382. return 1;
  5383. }
  5384. static int Polycode_LightInfo_get_quadraticAttenuation(lua_State *L) {
  5385. luaL_checktype(L, 1, LUA_TUSERDATA);
  5386. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5387. lua_pushnumber(L, inst->quadraticAttenuation);
  5388. return 1;
  5389. }
  5390. static int Polycode_LightInfo_get_intensity(lua_State *L) {
  5391. luaL_checktype(L, 1, LUA_TUSERDATA);
  5392. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5393. lua_pushnumber(L, inst->intensity);
  5394. return 1;
  5395. }
  5396. static int Polycode_LightInfo_get_spotlightCutoff(lua_State *L) {
  5397. luaL_checktype(L, 1, LUA_TUSERDATA);
  5398. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5399. lua_pushnumber(L, inst->spotlightCutoff);
  5400. return 1;
  5401. }
  5402. static int Polycode_LightInfo_get_spotlightExponent(lua_State *L) {
  5403. luaL_checktype(L, 1, LUA_TUSERDATA);
  5404. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5405. lua_pushnumber(L, inst->spotlightExponent);
  5406. return 1;
  5407. }
  5408. static int Polycode_LightInfo_get_shadowsEnabled(lua_State *L) {
  5409. luaL_checktype(L, 1, LUA_TUSERDATA);
  5410. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5411. lua_pushboolean(L, inst->shadowsEnabled);
  5412. return 1;
  5413. }
  5414. static int Polycode_LightInfo_get_lightViewMatrix(lua_State *L) {
  5415. luaL_checktype(L, 1, LUA_TUSERDATA);
  5416. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5417. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5418. *userdataPtr = (PolyBase*)&inst->lightViewMatrix;
  5419. return 1;
  5420. }
  5421. static int Polycode_LightInfo_set_importance(lua_State *L) {
  5422. luaL_checktype(L, 1, LUA_TUSERDATA);
  5423. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5424. int param = lua_tointeger(L, 2);
  5425. inst->importance = param;
  5426. return 0;
  5427. }
  5428. static int Polycode_LightInfo_set_position(lua_State *L) {
  5429. luaL_checktype(L, 1, LUA_TUSERDATA);
  5430. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5431. luaL_checktype(L, 2, LUA_TUSERDATA);
  5432. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5433. inst->position = *argInst;
  5434. return 0;
  5435. }
  5436. static int Polycode_LightInfo_set_direction(lua_State *L) {
  5437. luaL_checktype(L, 1, LUA_TUSERDATA);
  5438. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5439. luaL_checktype(L, 2, LUA_TUSERDATA);
  5440. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5441. inst->direction = *argInst;
  5442. return 0;
  5443. }
  5444. static int Polycode_LightInfo_set_type(lua_State *L) {
  5445. luaL_checktype(L, 1, LUA_TUSERDATA);
  5446. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5447. int param = lua_tointeger(L, 2);
  5448. inst->type = param;
  5449. return 0;
  5450. }
  5451. static int Polycode_LightInfo_set_diffuseColor(lua_State *L) {
  5452. luaL_checktype(L, 1, LUA_TUSERDATA);
  5453. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5454. luaL_checktype(L, 2, LUA_TUSERDATA);
  5455. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5456. inst->diffuseColor = *argInst;
  5457. return 0;
  5458. }
  5459. static int Polycode_LightInfo_set_specularColor(lua_State *L) {
  5460. luaL_checktype(L, 1, LUA_TUSERDATA);
  5461. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5462. luaL_checktype(L, 2, LUA_TUSERDATA);
  5463. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5464. inst->specularColor = *argInst;
  5465. return 0;
  5466. }
  5467. static int Polycode_LightInfo_set_constantAttenuation(lua_State *L) {
  5468. luaL_checktype(L, 1, LUA_TUSERDATA);
  5469. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5470. Number param = lua_tonumber(L, 2);
  5471. inst->constantAttenuation = param;
  5472. return 0;
  5473. }
  5474. static int Polycode_LightInfo_set_linearAttenuation(lua_State *L) {
  5475. luaL_checktype(L, 1, LUA_TUSERDATA);
  5476. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5477. Number param = lua_tonumber(L, 2);
  5478. inst->linearAttenuation = param;
  5479. return 0;
  5480. }
  5481. static int Polycode_LightInfo_set_quadraticAttenuation(lua_State *L) {
  5482. luaL_checktype(L, 1, LUA_TUSERDATA);
  5483. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5484. Number param = lua_tonumber(L, 2);
  5485. inst->quadraticAttenuation = param;
  5486. return 0;
  5487. }
  5488. static int Polycode_LightInfo_set_intensity(lua_State *L) {
  5489. luaL_checktype(L, 1, LUA_TUSERDATA);
  5490. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5491. Number param = lua_tonumber(L, 2);
  5492. inst->intensity = param;
  5493. return 0;
  5494. }
  5495. static int Polycode_LightInfo_set_spotlightCutoff(lua_State *L) {
  5496. luaL_checktype(L, 1, LUA_TUSERDATA);
  5497. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5498. Number param = lua_tonumber(L, 2);
  5499. inst->spotlightCutoff = param;
  5500. return 0;
  5501. }
  5502. static int Polycode_LightInfo_set_spotlightExponent(lua_State *L) {
  5503. luaL_checktype(L, 1, LUA_TUSERDATA);
  5504. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5505. Number param = lua_tonumber(L, 2);
  5506. inst->spotlightExponent = param;
  5507. return 0;
  5508. }
  5509. static int Polycode_LightInfo_set_shadowsEnabled(lua_State *L) {
  5510. luaL_checktype(L, 1, LUA_TUSERDATA);
  5511. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5512. bool param = lua_toboolean(L, 2) != 0;
  5513. inst->shadowsEnabled = param;
  5514. return 0;
  5515. }
  5516. static int Polycode_LightInfo_set_lightViewMatrix(lua_State *L) {
  5517. luaL_checktype(L, 1, LUA_TUSERDATA);
  5518. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5519. luaL_checktype(L, 2, LUA_TUSERDATA);
  5520. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5521. inst->lightViewMatrix = *argInst;
  5522. return 0;
  5523. }
  5524. static int Polycode_delete_LightInfo(lua_State *L) {
  5525. luaL_checktype(L, 1, LUA_TUSERDATA);
  5526. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5527. delete ((LightInfo*) *inst);
  5528. *inst = NULL;
  5529. return 0;
  5530. }
  5531. static int Polycode_GPUDrawCall_get_options(lua_State *L) {
  5532. luaL_checktype(L, 1, LUA_TUSERDATA);
  5533. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5534. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5535. *userdataPtr = (PolyBase*)&inst->options;
  5536. return 1;
  5537. }
  5538. static int Polycode_GPUDrawCall_get_modelMatrix(lua_State *L) {
  5539. luaL_checktype(L, 1, LUA_TUSERDATA);
  5540. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5541. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5542. *userdataPtr = (PolyBase*)&inst->modelMatrix;
  5543. return 1;
  5544. }
  5545. static int Polycode_GPUDrawCall_set_options(lua_State *L) {
  5546. luaL_checktype(L, 1, LUA_TUSERDATA);
  5547. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5548. luaL_checktype(L, 2, LUA_TUSERDATA);
  5549. GPUDrawOptions *argInst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 2));
  5550. inst->options = *argInst;
  5551. return 0;
  5552. }
  5553. static int Polycode_GPUDrawCall_set_modelMatrix(lua_State *L) {
  5554. luaL_checktype(L, 1, LUA_TUSERDATA);
  5555. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5556. luaL_checktype(L, 2, LUA_TUSERDATA);
  5557. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5558. inst->modelMatrix = *argInst;
  5559. return 0;
  5560. }
  5561. static int Polycode_delete_GPUDrawCall(lua_State *L) {
  5562. luaL_checktype(L, 1, LUA_TUSERDATA);
  5563. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5564. delete ((GPUDrawCall*) *inst);
  5565. *inst = NULL;
  5566. return 0;
  5567. }
  5568. static int Polycode_GPUDrawOptions_get_depthTest(lua_State *L) {
  5569. luaL_checktype(L, 1, LUA_TUSERDATA);
  5570. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5571. lua_pushboolean(L, inst->depthTest);
  5572. return 1;
  5573. }
  5574. static int Polycode_GPUDrawOptions_get_depthWrite(lua_State *L) {
  5575. luaL_checktype(L, 1, LUA_TUSERDATA);
  5576. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5577. lua_pushboolean(L, inst->depthWrite);
  5578. return 1;
  5579. }
  5580. static int Polycode_GPUDrawOptions_get_linePointSize(lua_State *L) {
  5581. luaL_checktype(L, 1, LUA_TUSERDATA);
  5582. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5583. lua_pushnumber(L, inst->linePointSize);
  5584. return 1;
  5585. }
  5586. static int Polycode_GPUDrawOptions_get_alphaTest(lua_State *L) {
  5587. luaL_checktype(L, 1, LUA_TUSERDATA);
  5588. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5589. lua_pushboolean(L, inst->alphaTest);
  5590. return 1;
  5591. }
  5592. static int Polycode_GPUDrawOptions_get_backfaceCull(lua_State *L) {
  5593. luaL_checktype(L, 1, LUA_TUSERDATA);
  5594. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5595. lua_pushboolean(L, inst->backfaceCull);
  5596. return 1;
  5597. }
  5598. static int Polycode_GPUDrawOptions_get_depthOnly(lua_State *L) {
  5599. luaL_checktype(L, 1, LUA_TUSERDATA);
  5600. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5601. lua_pushboolean(L, inst->depthOnly);
  5602. return 1;
  5603. }
  5604. static int Polycode_GPUDrawOptions_get_forceMaterial(lua_State *L) {
  5605. luaL_checktype(L, 1, LUA_TUSERDATA);
  5606. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5607. lua_pushboolean(L, inst->forceMaterial);
  5608. return 1;
  5609. }
  5610. static int Polycode_GPUDrawOptions_get_blendingMode(lua_State *L) {
  5611. luaL_checktype(L, 1, LUA_TUSERDATA);
  5612. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5613. lua_pushinteger(L, inst->blendingMode);
  5614. return 1;
  5615. }
  5616. static int Polycode_GPUDrawOptions_get_scissorBox(lua_State *L) {
  5617. luaL_checktype(L, 1, LUA_TUSERDATA);
  5618. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5619. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5620. *userdataPtr = (PolyBase*)&inst->scissorBox;
  5621. return 1;
  5622. }
  5623. static int Polycode_GPUDrawOptions_get_enableScissor(lua_State *L) {
  5624. luaL_checktype(L, 1, LUA_TUSERDATA);
  5625. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5626. lua_pushboolean(L, inst->enableScissor);
  5627. return 1;
  5628. }
  5629. static int Polycode_GPUDrawOptions_get_drawColor(lua_State *L) {
  5630. luaL_checktype(L, 1, LUA_TUSERDATA);
  5631. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5632. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5633. *userdataPtr = (PolyBase*)&inst->drawColor;
  5634. return 1;
  5635. }
  5636. static int Polycode_GPUDrawOptions_set_depthTest(lua_State *L) {
  5637. luaL_checktype(L, 1, LUA_TUSERDATA);
  5638. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5639. bool param = lua_toboolean(L, 2) != 0;
  5640. inst->depthTest = param;
  5641. return 0;
  5642. }
  5643. static int Polycode_GPUDrawOptions_set_depthWrite(lua_State *L) {
  5644. luaL_checktype(L, 1, LUA_TUSERDATA);
  5645. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5646. bool param = lua_toboolean(L, 2) != 0;
  5647. inst->depthWrite = param;
  5648. return 0;
  5649. }
  5650. static int Polycode_GPUDrawOptions_set_linePointSize(lua_State *L) {
  5651. luaL_checktype(L, 1, LUA_TUSERDATA);
  5652. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5653. Number param = lua_tonumber(L, 2);
  5654. inst->linePointSize = param;
  5655. return 0;
  5656. }
  5657. static int Polycode_GPUDrawOptions_set_alphaTest(lua_State *L) {
  5658. luaL_checktype(L, 1, LUA_TUSERDATA);
  5659. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5660. bool param = lua_toboolean(L, 2) != 0;
  5661. inst->alphaTest = param;
  5662. return 0;
  5663. }
  5664. static int Polycode_GPUDrawOptions_set_backfaceCull(lua_State *L) {
  5665. luaL_checktype(L, 1, LUA_TUSERDATA);
  5666. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5667. bool param = lua_toboolean(L, 2) != 0;
  5668. inst->backfaceCull = param;
  5669. return 0;
  5670. }
  5671. static int Polycode_GPUDrawOptions_set_depthOnly(lua_State *L) {
  5672. luaL_checktype(L, 1, LUA_TUSERDATA);
  5673. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5674. bool param = lua_toboolean(L, 2) != 0;
  5675. inst->depthOnly = param;
  5676. return 0;
  5677. }
  5678. static int Polycode_GPUDrawOptions_set_forceMaterial(lua_State *L) {
  5679. luaL_checktype(L, 1, LUA_TUSERDATA);
  5680. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5681. bool param = lua_toboolean(L, 2) != 0;
  5682. inst->forceMaterial = param;
  5683. return 0;
  5684. }
  5685. static int Polycode_GPUDrawOptions_set_blendingMode(lua_State *L) {
  5686. luaL_checktype(L, 1, LUA_TUSERDATA);
  5687. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5688. int param = lua_tointeger(L, 2);
  5689. inst->blendingMode = param;
  5690. return 0;
  5691. }
  5692. static int Polycode_GPUDrawOptions_set_scissorBox(lua_State *L) {
  5693. luaL_checktype(L, 1, LUA_TUSERDATA);
  5694. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5695. luaL_checktype(L, 2, LUA_TUSERDATA);
  5696. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  5697. inst->scissorBox = *argInst;
  5698. return 0;
  5699. }
  5700. static int Polycode_GPUDrawOptions_set_enableScissor(lua_State *L) {
  5701. luaL_checktype(L, 1, LUA_TUSERDATA);
  5702. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5703. bool param = lua_toboolean(L, 2) != 0;
  5704. inst->enableScissor = param;
  5705. return 0;
  5706. }
  5707. static int Polycode_GPUDrawOptions_set_drawColor(lua_State *L) {
  5708. luaL_checktype(L, 1, LUA_TUSERDATA);
  5709. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5710. luaL_checktype(L, 2, LUA_TUSERDATA);
  5711. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5712. inst->drawColor = *argInst;
  5713. return 0;
  5714. }
  5715. static int Polycode_delete_GPUDrawOptions(lua_State *L) {
  5716. luaL_checktype(L, 1, LUA_TUSERDATA);
  5717. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5718. delete ((GPUDrawOptions*) *inst);
  5719. *inst = NULL;
  5720. return 0;
  5721. }
  5722. static int Polycode_GPUDrawBuffer_get_projectionMatrix(lua_State *L) {
  5723. luaL_checktype(L, 1, LUA_TUSERDATA);
  5724. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5725. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5726. *userdataPtr = (PolyBase*)&inst->projectionMatrix;
  5727. return 1;
  5728. }
  5729. static int Polycode_GPUDrawBuffer_get_viewMatrix(lua_State *L) {
  5730. luaL_checktype(L, 1, LUA_TUSERDATA);
  5731. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5732. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5733. *userdataPtr = (PolyBase*)&inst->viewMatrix;
  5734. return 1;
  5735. }
  5736. static int Polycode_GPUDrawBuffer_get_cameraMatrix(lua_State *L) {
  5737. luaL_checktype(L, 1, LUA_TUSERDATA);
  5738. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5739. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5740. *userdataPtr = (PolyBase*)&inst->cameraMatrix;
  5741. return 1;
  5742. }
  5743. static int Polycode_GPUDrawBuffer_get_clearColor(lua_State *L) {
  5744. luaL_checktype(L, 1, LUA_TUSERDATA);
  5745. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5746. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5747. *userdataPtr = (PolyBase*)&inst->clearColor;
  5748. return 1;
  5749. }
  5750. static int Polycode_GPUDrawBuffer_get_clearDepthBuffer(lua_State *L) {
  5751. luaL_checktype(L, 1, LUA_TUSERDATA);
  5752. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5753. lua_pushboolean(L, inst->clearDepthBuffer);
  5754. return 1;
  5755. }
  5756. static int Polycode_GPUDrawBuffer_get_clearColorBuffer(lua_State *L) {
  5757. luaL_checktype(L, 1, LUA_TUSERDATA);
  5758. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5759. lua_pushboolean(L, inst->clearColorBuffer);
  5760. return 1;
  5761. }
  5762. static int Polycode_GPUDrawBuffer_get_backingResolutionScale(lua_State *L) {
  5763. luaL_checktype(L, 1, LUA_TUSERDATA);
  5764. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5765. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5766. *userdataPtr = (PolyBase*)&inst->backingResolutionScale;
  5767. return 1;
  5768. }
  5769. static int Polycode_GPUDrawBuffer_get_viewport(lua_State *L) {
  5770. luaL_checktype(L, 1, LUA_TUSERDATA);
  5771. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5772. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5773. *userdataPtr = (PolyBase*)&inst->viewport;
  5774. return 1;
  5775. }
  5776. static int Polycode_GPUDrawBuffer_set_projectionMatrix(lua_State *L) {
  5777. luaL_checktype(L, 1, LUA_TUSERDATA);
  5778. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5779. luaL_checktype(L, 2, LUA_TUSERDATA);
  5780. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5781. inst->projectionMatrix = *argInst;
  5782. return 0;
  5783. }
  5784. static int Polycode_GPUDrawBuffer_set_viewMatrix(lua_State *L) {
  5785. luaL_checktype(L, 1, LUA_TUSERDATA);
  5786. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5787. luaL_checktype(L, 2, LUA_TUSERDATA);
  5788. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5789. inst->viewMatrix = *argInst;
  5790. return 0;
  5791. }
  5792. static int Polycode_GPUDrawBuffer_set_cameraMatrix(lua_State *L) {
  5793. luaL_checktype(L, 1, LUA_TUSERDATA);
  5794. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5795. luaL_checktype(L, 2, LUA_TUSERDATA);
  5796. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5797. inst->cameraMatrix = *argInst;
  5798. return 0;
  5799. }
  5800. static int Polycode_GPUDrawBuffer_set_clearColor(lua_State *L) {
  5801. luaL_checktype(L, 1, LUA_TUSERDATA);
  5802. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5803. luaL_checktype(L, 2, LUA_TUSERDATA);
  5804. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5805. inst->clearColor = *argInst;
  5806. return 0;
  5807. }
  5808. static int Polycode_GPUDrawBuffer_set_clearDepthBuffer(lua_State *L) {
  5809. luaL_checktype(L, 1, LUA_TUSERDATA);
  5810. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5811. bool param = lua_toboolean(L, 2) != 0;
  5812. inst->clearDepthBuffer = param;
  5813. return 0;
  5814. }
  5815. static int Polycode_GPUDrawBuffer_set_clearColorBuffer(lua_State *L) {
  5816. luaL_checktype(L, 1, LUA_TUSERDATA);
  5817. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5818. bool param = lua_toboolean(L, 2) != 0;
  5819. inst->clearColorBuffer = param;
  5820. return 0;
  5821. }
  5822. static int Polycode_GPUDrawBuffer_set_backingResolutionScale(lua_State *L) {
  5823. luaL_checktype(L, 1, LUA_TUSERDATA);
  5824. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5825. luaL_checktype(L, 2, LUA_TUSERDATA);
  5826. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  5827. inst->backingResolutionScale = *argInst;
  5828. return 0;
  5829. }
  5830. static int Polycode_GPUDrawBuffer_set_viewport(lua_State *L) {
  5831. luaL_checktype(L, 1, LUA_TUSERDATA);
  5832. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5833. luaL_checktype(L, 2, LUA_TUSERDATA);
  5834. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  5835. inst->viewport = *argInst;
  5836. return 0;
  5837. }
  5838. static int Polycode_GPUDrawBuffer(lua_State *L) {
  5839. GPUDrawBuffer *inst = new GPUDrawBuffer();
  5840. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5841. *userdataPtr = (PolyBase*)inst;
  5842. luaL_getmetatable(L, "Polycode.GPUDrawBuffer");
  5843. lua_setmetatable(L, -2);
  5844. return 1;
  5845. }
  5846. static int Polycode_delete_GPUDrawBuffer(lua_State *L) {
  5847. luaL_checktype(L, 1, LUA_TUSERDATA);
  5848. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5849. delete ((GPUDrawBuffer*) *inst);
  5850. *inst = NULL;
  5851. return 0;
  5852. }
  5853. static int Polycode_Image(lua_State *L) {
  5854. luaL_checktype(L, 1, LUA_TSTRING);
  5855. String fileName = String(lua_tostring(L, 1));
  5856. Image *inst = new Image(fileName);
  5857. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5858. *userdataPtr = (PolyBase*)inst;
  5859. luaL_getmetatable(L, "Polycode.Image");
  5860. lua_setmetatable(L, -2);
  5861. return 1;
  5862. }
  5863. static int Polycode_Image_BlankImage(lua_State *L) {
  5864. luaL_checktype(L, 1, LUA_TNUMBER);
  5865. int width = lua_tointeger(L, 1);
  5866. luaL_checktype(L, 2, LUA_TNUMBER);
  5867. int height = lua_tointeger(L, 2);
  5868. int type;
  5869. if(lua_isnumber(L, 3)) {
  5870. type = lua_tointeger(L, 3);
  5871. } else {
  5872. type = Image :: IMAGE_RGBA;
  5873. }
  5874. PolyBase *ptrRetVal = (PolyBase*)Image::BlankImage(width, height, type);
  5875. if(ptrRetVal == NULL) {
  5876. lua_pushnil(L);
  5877. } else {
  5878. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5879. *userdataPtr = ptrRetVal;
  5880. }
  5881. return 1;
  5882. }
  5883. static int Polycode_Image_loadImage(lua_State *L) {
  5884. luaL_checktype(L, 1, LUA_TUSERDATA);
  5885. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5886. luaL_checktype(L, 2, LUA_TSTRING);
  5887. String fileName = String(lua_tostring(L, 2));
  5888. lua_pushboolean(L, inst->loadImage(fileName));
  5889. return 1;
  5890. }
  5891. static int Polycode_Image_saveImage(lua_State *L) {
  5892. luaL_checktype(L, 1, LUA_TUSERDATA);
  5893. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5894. luaL_checktype(L, 2, LUA_TSTRING);
  5895. String fileName = String(lua_tostring(L, 2));
  5896. lua_pushboolean(L, inst->saveImage(fileName));
  5897. return 1;
  5898. }
  5899. static int Polycode_Image_pasteImage(lua_State *L) {
  5900. luaL_checktype(L, 1, LUA_TUSERDATA);
  5901. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5902. luaL_checktype(L, 2, LUA_TUSERDATA);
  5903. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  5904. luaL_checktype(L, 3, LUA_TNUMBER);
  5905. int x = lua_tointeger(L, 3);
  5906. luaL_checktype(L, 4, LUA_TNUMBER);
  5907. int y = lua_tointeger(L, 4);
  5908. int blendingMode;
  5909. if(lua_isnumber(L, 5)) {
  5910. blendingMode = lua_tointeger(L, 5);
  5911. } else {
  5912. blendingMode = 0;
  5913. }
  5914. Number blendAmount;
  5915. if(lua_isnumber(L, 6)) {
  5916. blendAmount = lua_tonumber(L, 6);
  5917. } else {
  5918. blendAmount = 1.0;
  5919. }
  5920. luaL_checktype(L, 7, LUA_TUSERDATA);
  5921. Color blendColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  5922. inst->pasteImage(image, x, y, blendingMode, blendAmount, blendColor);
  5923. return 0;
  5924. }
  5925. static int Polycode_Image_createEmpty(lua_State *L) {
  5926. luaL_checktype(L, 1, LUA_TUSERDATA);
  5927. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5928. luaL_checktype(L, 2, LUA_TNUMBER);
  5929. int width = lua_tointeger(L, 2);
  5930. luaL_checktype(L, 3, LUA_TNUMBER);
  5931. int height = lua_tointeger(L, 3);
  5932. luaL_checktype(L, 4, LUA_TUSERDATA);
  5933. Color fillColor = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  5934. inst->createEmpty(width, height, fillColor);
  5935. return 0;
  5936. }
  5937. static int Polycode_Image_fill(lua_State *L) {
  5938. luaL_checktype(L, 1, LUA_TUSERDATA);
  5939. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5940. luaL_checktype(L, 2, LUA_TUSERDATA);
  5941. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  5942. inst->fill(color);
  5943. return 0;
  5944. }
  5945. static int Polycode_Image_setPixel(lua_State *L) {
  5946. luaL_checktype(L, 1, LUA_TUSERDATA);
  5947. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5948. luaL_checktype(L, 2, LUA_TNUMBER);
  5949. int x = lua_tointeger(L, 2);
  5950. luaL_checktype(L, 3, LUA_TNUMBER);
  5951. int y = lua_tointeger(L, 3);
  5952. luaL_checktype(L, 4, LUA_TNUMBER);
  5953. Number r = lua_tonumber(L, 4);
  5954. luaL_checktype(L, 5, LUA_TNUMBER);
  5955. Number g = lua_tonumber(L, 5);
  5956. luaL_checktype(L, 6, LUA_TNUMBER);
  5957. Number b = lua_tonumber(L, 6);
  5958. luaL_checktype(L, 7, LUA_TNUMBER);
  5959. Number a = lua_tonumber(L, 7);
  5960. inst->setPixel(x, y, r, g, b, a);
  5961. return 0;
  5962. }
  5963. static int Polycode_Image_getPixel(lua_State *L) {
  5964. luaL_checktype(L, 1, LUA_TUSERDATA);
  5965. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5966. luaL_checktype(L, 2, LUA_TNUMBER);
  5967. int x = lua_tointeger(L, 2);
  5968. luaL_checktype(L, 3, LUA_TNUMBER);
  5969. int y = lua_tointeger(L, 3);
  5970. Color *retInst = new Color();
  5971. *retInst = inst->getPixel(x, y);
  5972. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5973. luaL_getmetatable(L, "Polycode.Color");
  5974. lua_setmetatable(L, -2);
  5975. *userdataPtr = (PolyBase*)retInst;
  5976. return 1;
  5977. }
  5978. static int Polycode_Image_swap(lua_State *L) {
  5979. luaL_checktype(L, 1, LUA_TUSERDATA);
  5980. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5981. luaL_checktype(L, 2, LUA_TUSERDATA);
  5982. int* v1 = (int*) *((PolyBase**)lua_touserdata(L, 2));
  5983. luaL_checktype(L, 3, LUA_TUSERDATA);
  5984. int* v2 = (int*) *((PolyBase**)lua_touserdata(L, 3));
  5985. inst->swap(v1, v2);
  5986. return 0;
  5987. }
  5988. static int Polycode_Image_drawLine(lua_State *L) {
  5989. luaL_checktype(L, 1, LUA_TUSERDATA);
  5990. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  5991. luaL_checktype(L, 2, LUA_TNUMBER);
  5992. int x0 = lua_tointeger(L, 2);
  5993. luaL_checktype(L, 3, LUA_TNUMBER);
  5994. int y0 = lua_tointeger(L, 3);
  5995. luaL_checktype(L, 4, LUA_TNUMBER);
  5996. int x1 = lua_tointeger(L, 4);
  5997. luaL_checktype(L, 5, LUA_TNUMBER);
  5998. int y1 = lua_tointeger(L, 5);
  5999. luaL_checktype(L, 6, LUA_TUSERDATA);
  6000. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6001. inst->drawLine(x0, y0, x1, y1, col);
  6002. return 0;
  6003. }
  6004. static int Polycode_Image_moveBrushTo(lua_State *L) {
  6005. luaL_checktype(L, 1, LUA_TUSERDATA);
  6006. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6007. luaL_checktype(L, 2, LUA_TNUMBER);
  6008. int x = lua_tointeger(L, 2);
  6009. luaL_checktype(L, 3, LUA_TNUMBER);
  6010. int y = lua_tointeger(L, 3);
  6011. inst->moveBrushTo(x, y);
  6012. return 0;
  6013. }
  6014. static int Polycode_Image_moveBrush(lua_State *L) {
  6015. luaL_checktype(L, 1, LUA_TUSERDATA);
  6016. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6017. luaL_checktype(L, 2, LUA_TNUMBER);
  6018. int x = lua_tointeger(L, 2);
  6019. luaL_checktype(L, 3, LUA_TNUMBER);
  6020. int y = lua_tointeger(L, 3);
  6021. inst->moveBrush(x, y);
  6022. return 0;
  6023. }
  6024. static int Polycode_Image_drawLineTo(lua_State *L) {
  6025. luaL_checktype(L, 1, LUA_TUSERDATA);
  6026. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6027. luaL_checktype(L, 2, LUA_TNUMBER);
  6028. int x = lua_tointeger(L, 2);
  6029. luaL_checktype(L, 3, LUA_TNUMBER);
  6030. int y = lua_tointeger(L, 3);
  6031. luaL_checktype(L, 4, LUA_TUSERDATA);
  6032. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  6033. inst->drawLineTo(x, y, col);
  6034. return 0;
  6035. }
  6036. static int Polycode_Image_fillRect(lua_State *L) {
  6037. luaL_checktype(L, 1, LUA_TUSERDATA);
  6038. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6039. luaL_checktype(L, 2, LUA_TNUMBER);
  6040. int x = lua_tointeger(L, 2);
  6041. luaL_checktype(L, 3, LUA_TNUMBER);
  6042. int y = lua_tointeger(L, 3);
  6043. luaL_checktype(L, 4, LUA_TNUMBER);
  6044. int w = lua_tointeger(L, 4);
  6045. luaL_checktype(L, 5, LUA_TNUMBER);
  6046. int h = lua_tointeger(L, 5);
  6047. luaL_checktype(L, 6, LUA_TUSERDATA);
  6048. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6049. inst->fillRect(x, y, w, h, col);
  6050. return 0;
  6051. }
  6052. static int Polycode_Image_perlinNoise(lua_State *L) {
  6053. luaL_checktype(L, 1, LUA_TUSERDATA);
  6054. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6055. luaL_checktype(L, 2, LUA_TNUMBER);
  6056. int seed = lua_tointeger(L, 2);
  6057. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6058. bool alpha = lua_toboolean(L, 3) != 0;
  6059. inst->perlinNoise(seed, alpha);
  6060. return 0;
  6061. }
  6062. static int Polycode_Image_fastBlur(lua_State *L) {
  6063. luaL_checktype(L, 1, LUA_TUSERDATA);
  6064. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6065. luaL_checktype(L, 2, LUA_TNUMBER);
  6066. int blurSize = lua_tointeger(L, 2);
  6067. inst->fastBlur(blurSize);
  6068. return 0;
  6069. }
  6070. static int Polycode_Image_fastBlurVert(lua_State *L) {
  6071. luaL_checktype(L, 1, LUA_TUSERDATA);
  6072. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6073. luaL_checktype(L, 2, LUA_TNUMBER);
  6074. int blurSize = lua_tointeger(L, 2);
  6075. inst->fastBlurVert(blurSize);
  6076. return 0;
  6077. }
  6078. static int Polycode_Image_fastBlurHor(lua_State *L) {
  6079. luaL_checktype(L, 1, LUA_TUSERDATA);
  6080. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6081. luaL_checktype(L, 2, LUA_TNUMBER);
  6082. int blurSize = lua_tointeger(L, 2);
  6083. inst->fastBlurHor(blurSize);
  6084. return 0;
  6085. }
  6086. static int Polycode_Image_getPixelsInRect(lua_State *L) {
  6087. luaL_checktype(L, 1, LUA_TUSERDATA);
  6088. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6089. luaL_checktype(L, 2, LUA_TNUMBER);
  6090. int x = lua_tointeger(L, 2);
  6091. luaL_checktype(L, 3, LUA_TNUMBER);
  6092. int y = lua_tointeger(L, 3);
  6093. luaL_checktype(L, 4, LUA_TNUMBER);
  6094. int width = lua_tointeger(L, 4);
  6095. luaL_checktype(L, 5, LUA_TNUMBER);
  6096. int height = lua_tointeger(L, 5);
  6097. PolyBase *ptrRetVal = (PolyBase*)inst->getPixelsInRect(x, y, width, height);
  6098. if(ptrRetVal == NULL) {
  6099. lua_pushnil(L);
  6100. } else {
  6101. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6102. *userdataPtr = ptrRetVal;
  6103. }
  6104. return 1;
  6105. }
  6106. static int Polycode_Image_getImagePart(lua_State *L) {
  6107. luaL_checktype(L, 1, LUA_TUSERDATA);
  6108. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6109. luaL_checktype(L, 2, LUA_TUSERDATA);
  6110. Polycode::Rectangle subRect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  6111. PolyBase *ptrRetVal = (PolyBase*)inst->getImagePart(subRect);
  6112. if(ptrRetVal == NULL) {
  6113. lua_pushnil(L);
  6114. } else {
  6115. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6116. *userdataPtr = ptrRetVal;
  6117. }
  6118. return 1;
  6119. }
  6120. static int Polycode_Image_getBrushX(lua_State *L) {
  6121. luaL_checktype(L, 1, LUA_TUSERDATA);
  6122. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6123. lua_pushinteger(L, inst->getBrushX());
  6124. return 1;
  6125. }
  6126. static int Polycode_Image_getBrushY(lua_State *L) {
  6127. luaL_checktype(L, 1, LUA_TUSERDATA);
  6128. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6129. lua_pushinteger(L, inst->getBrushY());
  6130. return 1;
  6131. }
  6132. static int Polycode_Image_isLoaded(lua_State *L) {
  6133. luaL_checktype(L, 1, LUA_TUSERDATA);
  6134. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6135. lua_pushboolean(L, inst->isLoaded());
  6136. return 1;
  6137. }
  6138. static int Polycode_Image_getType(lua_State *L) {
  6139. luaL_checktype(L, 1, LUA_TUSERDATA);
  6140. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6141. lua_pushinteger(L, inst->getType());
  6142. return 1;
  6143. }
  6144. static int Polycode_Image_getWidth(lua_State *L) {
  6145. luaL_checktype(L, 1, LUA_TUSERDATA);
  6146. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6147. lua_pushinteger(L, inst->getWidth());
  6148. return 1;
  6149. }
  6150. static int Polycode_Image_getHeight(lua_State *L) {
  6151. luaL_checktype(L, 1, LUA_TUSERDATA);
  6152. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6153. lua_pushinteger(L, inst->getHeight());
  6154. return 1;
  6155. }
  6156. static int Polycode_Image_getPixels(lua_State *L) {
  6157. luaL_checktype(L, 1, LUA_TUSERDATA);
  6158. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6159. PolyBase *ptrRetVal = (PolyBase*)inst->getPixels();
  6160. if(ptrRetVal == NULL) {
  6161. lua_pushnil(L);
  6162. } else {
  6163. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6164. *userdataPtr = ptrRetVal;
  6165. }
  6166. return 1;
  6167. }
  6168. static int Polycode_Image_premultiplyAlpha(lua_State *L) {
  6169. luaL_checktype(L, 1, LUA_TUSERDATA);
  6170. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6171. inst->premultiplyAlpha();
  6172. return 0;
  6173. }
  6174. static int Polycode_Image_savePNG(lua_State *L) {
  6175. luaL_checktype(L, 1, LUA_TUSERDATA);
  6176. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6177. luaL_checktype(L, 2, LUA_TSTRING);
  6178. String fileName = String(lua_tostring(L, 2));
  6179. lua_pushboolean(L, inst->savePNG(fileName));
  6180. return 1;
  6181. }
  6182. static int Polycode_delete_Image(lua_State *L) {
  6183. luaL_checktype(L, 1, LUA_TUSERDATA);
  6184. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6185. delete ((Image*) *inst);
  6186. *inst = NULL;
  6187. return 0;
  6188. }
  6189. static int Polycode_TouchInfo_get_id(lua_State *L) {
  6190. luaL_checktype(L, 1, LUA_TUSERDATA);
  6191. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6192. lua_pushinteger(L, inst->id);
  6193. return 1;
  6194. }
  6195. static int Polycode_TouchInfo_get_position(lua_State *L) {
  6196. luaL_checktype(L, 1, LUA_TUSERDATA);
  6197. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6198. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6199. *userdataPtr = (PolyBase*)&inst->position;
  6200. return 1;
  6201. }
  6202. static int Polycode_TouchInfo_get_type(lua_State *L) {
  6203. luaL_checktype(L, 1, LUA_TUSERDATA);
  6204. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6205. lua_pushinteger(L, inst->type);
  6206. return 1;
  6207. }
  6208. static int Polycode_TouchInfo_set_id(lua_State *L) {
  6209. luaL_checktype(L, 1, LUA_TUSERDATA);
  6210. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6211. int param = lua_tointeger(L, 2);
  6212. inst->id = param;
  6213. return 0;
  6214. }
  6215. static int Polycode_TouchInfo_set_position(lua_State *L) {
  6216. luaL_checktype(L, 1, LUA_TUSERDATA);
  6217. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6218. luaL_checktype(L, 2, LUA_TUSERDATA);
  6219. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  6220. inst->position = *argInst;
  6221. return 0;
  6222. }
  6223. static int Polycode_TouchInfo_set_type(lua_State *L) {
  6224. luaL_checktype(L, 1, LUA_TUSERDATA);
  6225. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6226. int param = lua_tointeger(L, 2);
  6227. inst->type = param;
  6228. return 0;
  6229. }
  6230. static int Polycode_TouchInfo(lua_State *L) {
  6231. TouchInfo *inst = new TouchInfo();
  6232. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6233. *userdataPtr = (PolyBase*)inst;
  6234. luaL_getmetatable(L, "Polycode.TouchInfo");
  6235. lua_setmetatable(L, -2);
  6236. return 1;
  6237. }
  6238. static int Polycode_delete_TouchInfo(lua_State *L) {
  6239. luaL_checktype(L, 1, LUA_TUSERDATA);
  6240. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6241. delete ((TouchInfo*) *inst);
  6242. *inst = NULL;
  6243. return 0;
  6244. }
  6245. static int Polycode_InputEvent_get_mouseButton(lua_State *L) {
  6246. luaL_checktype(L, 1, LUA_TUSERDATA);
  6247. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6248. lua_pushinteger(L, inst->mouseButton);
  6249. return 1;
  6250. }
  6251. static int Polycode_InputEvent_get_mousePosition(lua_State *L) {
  6252. luaL_checktype(L, 1, LUA_TUSERDATA);
  6253. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6254. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6255. *userdataPtr = (PolyBase*)&inst->mousePosition;
  6256. return 1;
  6257. }
  6258. static int Polycode_InputEvent_get_key(lua_State *L) {
  6259. luaL_checktype(L, 1, LUA_TUSERDATA);
  6260. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6261. lua_pushinteger(L, inst->key);
  6262. return 1;
  6263. }
  6264. static int Polycode_InputEvent_get_charCode(lua_State *L) {
  6265. luaL_checktype(L, 1, LUA_TUSERDATA);
  6266. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6267. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6268. *userdataPtr = (PolyBase*)&inst->charCode;
  6269. return 1;
  6270. }
  6271. static int Polycode_InputEvent_get_timestamp(lua_State *L) {
  6272. luaL_checktype(L, 1, LUA_TUSERDATA);
  6273. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6274. lua_pushinteger(L, inst->timestamp);
  6275. return 1;
  6276. }
  6277. static int Polycode_InputEvent_get_touch(lua_State *L) {
  6278. luaL_checktype(L, 1, LUA_TUSERDATA);
  6279. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6280. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6281. *userdataPtr = (PolyBase*)&inst->touch;
  6282. return 1;
  6283. }
  6284. static int Polycode_InputEvent_get_touchType(lua_State *L) {
  6285. luaL_checktype(L, 1, LUA_TUSERDATA);
  6286. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6287. lua_pushinteger(L, inst->touchType);
  6288. return 1;
  6289. }
  6290. static int Polycode_InputEvent_get_joystickDeviceID(lua_State *L) {
  6291. luaL_checktype(L, 1, LUA_TUSERDATA);
  6292. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6293. lua_pushinteger(L, inst->joystickDeviceID);
  6294. return 1;
  6295. }
  6296. static int Polycode_InputEvent_get_joystickAxisValue(lua_State *L) {
  6297. luaL_checktype(L, 1, LUA_TUSERDATA);
  6298. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6299. lua_pushnumber(L, inst->joystickAxisValue);
  6300. return 1;
  6301. }
  6302. static int Polycode_InputEvent_get_joystickButton(lua_State *L) {
  6303. luaL_checktype(L, 1, LUA_TUSERDATA);
  6304. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6305. lua_pushinteger(L, inst->joystickButton);
  6306. return 1;
  6307. }
  6308. static int Polycode_InputEvent_get_joystickAxis(lua_State *L) {
  6309. luaL_checktype(L, 1, LUA_TUSERDATA);
  6310. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6311. lua_pushinteger(L, inst->joystickAxis);
  6312. return 1;
  6313. }
  6314. static int Polycode_InputEvent_get_joystickIndex(lua_State *L) {
  6315. luaL_checktype(L, 1, LUA_TUSERDATA);
  6316. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6317. lua_pushinteger(L, inst->joystickIndex);
  6318. return 1;
  6319. }
  6320. static int Polycode_InputEvent_get_hitDistance(lua_State *L) {
  6321. luaL_checktype(L, 1, LUA_TUSERDATA);
  6322. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6323. lua_pushnumber(L, inst->hitDistance);
  6324. return 1;
  6325. }
  6326. static int Polycode_InputEvent_set_mouseButton(lua_State *L) {
  6327. luaL_checktype(L, 1, LUA_TUSERDATA);
  6328. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6329. int param = lua_tointeger(L, 2);
  6330. inst->mouseButton = param;
  6331. return 0;
  6332. }
  6333. static int Polycode_InputEvent_set_mousePosition(lua_State *L) {
  6334. luaL_checktype(L, 1, LUA_TUSERDATA);
  6335. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6336. luaL_checktype(L, 2, LUA_TUSERDATA);
  6337. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  6338. inst->mousePosition = *argInst;
  6339. return 0;
  6340. }
  6341. static int Polycode_InputEvent_set_key(lua_State *L) {
  6342. luaL_checktype(L, 1, LUA_TUSERDATA);
  6343. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6344. PolyKEY param = (PolyKEY)lua_tointeger(L, 2);
  6345. inst->key = param;
  6346. return 0;
  6347. }
  6348. static int Polycode_InputEvent_set_charCode(lua_State *L) {
  6349. luaL_checktype(L, 1, LUA_TUSERDATA);
  6350. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6351. luaL_checktype(L, 2, LUA_TUSERDATA);
  6352. wchar_t *argInst = (wchar_t*) *((PolyBase**)lua_touserdata(L, 2));
  6353. inst->charCode = *argInst;
  6354. return 0;
  6355. }
  6356. static int Polycode_InputEvent_set_timestamp(lua_State *L) {
  6357. luaL_checktype(L, 1, LUA_TUSERDATA);
  6358. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6359. int param = lua_tointeger(L, 2);
  6360. inst->timestamp = param;
  6361. return 0;
  6362. }
  6363. static int Polycode_InputEvent_set_touch(lua_State *L) {
  6364. luaL_checktype(L, 1, LUA_TUSERDATA);
  6365. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6366. luaL_checktype(L, 2, LUA_TUSERDATA);
  6367. TouchInfo *argInst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  6368. inst->touch = *argInst;
  6369. return 0;
  6370. }
  6371. static int Polycode_InputEvent_set_touchType(lua_State *L) {
  6372. luaL_checktype(L, 1, LUA_TUSERDATA);
  6373. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6374. int param = lua_tointeger(L, 2);
  6375. inst->touchType = param;
  6376. return 0;
  6377. }
  6378. static int Polycode_InputEvent_set_joystickDeviceID(lua_State *L) {
  6379. luaL_checktype(L, 1, LUA_TUSERDATA);
  6380. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6381. int param = lua_tointeger(L, 2);
  6382. inst->joystickDeviceID = param;
  6383. return 0;
  6384. }
  6385. static int Polycode_InputEvent_set_joystickAxisValue(lua_State *L) {
  6386. luaL_checktype(L, 1, LUA_TUSERDATA);
  6387. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6388. Number param = lua_tonumber(L, 2);
  6389. inst->joystickAxisValue = param;
  6390. return 0;
  6391. }
  6392. static int Polycode_InputEvent_set_joystickButton(lua_State *L) {
  6393. luaL_checktype(L, 1, LUA_TUSERDATA);
  6394. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6395. int param = lua_tointeger(L, 2);
  6396. inst->joystickButton = param;
  6397. return 0;
  6398. }
  6399. static int Polycode_InputEvent_set_joystickAxis(lua_State *L) {
  6400. luaL_checktype(L, 1, LUA_TUSERDATA);
  6401. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6402. int param = lua_tointeger(L, 2);
  6403. inst->joystickAxis = param;
  6404. return 0;
  6405. }
  6406. static int Polycode_InputEvent_set_joystickIndex(lua_State *L) {
  6407. luaL_checktype(L, 1, LUA_TUSERDATA);
  6408. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6409. int param = lua_tointeger(L, 2);
  6410. inst->joystickIndex = param;
  6411. return 0;
  6412. }
  6413. static int Polycode_InputEvent_set_hitDistance(lua_State *L) {
  6414. luaL_checktype(L, 1, LUA_TUSERDATA);
  6415. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6416. Number param = lua_tonumber(L, 2);
  6417. inst->hitDistance = param;
  6418. return 0;
  6419. }
  6420. static int Polycode_InputEvent(lua_State *L) {
  6421. InputEvent *inst = new InputEvent();
  6422. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6423. *userdataPtr = (PolyBase*)inst;
  6424. luaL_getmetatable(L, "Polycode.InputEvent");
  6425. lua_setmetatable(L, -2);
  6426. return 1;
  6427. }
  6428. static int Polycode_InputEvent_getMousePosition(lua_State *L) {
  6429. luaL_checktype(L, 1, LUA_TUSERDATA);
  6430. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6431. Vector2 *retInst = new Vector2();
  6432. *retInst = inst->getMousePosition();
  6433. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6434. luaL_getmetatable(L, "Polycode.Vector2");
  6435. lua_setmetatable(L, -2);
  6436. *userdataPtr = (PolyBase*)retInst;
  6437. return 1;
  6438. }
  6439. static int Polycode_InputEvent_getKey(lua_State *L) {
  6440. luaL_checktype(L, 1, LUA_TUSERDATA);
  6441. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6442. lua_pushinteger(L, inst->getKey());
  6443. return 1;
  6444. }
  6445. static int Polycode_InputEvent_getMouseButton(lua_State *L) {
  6446. luaL_checktype(L, 1, LUA_TUSERDATA);
  6447. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6448. lua_pushinteger(L, inst->getMouseButton());
  6449. return 1;
  6450. }
  6451. static int Polycode_InputEvent_getCharCode(lua_State *L) {
  6452. luaL_checktype(L, 1, LUA_TUSERDATA);
  6453. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6454. wchar_t *retInst = new wchar_t();
  6455. *retInst = inst->getCharCode();
  6456. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6457. luaL_getmetatable(L, "Polycode.wchar_t");
  6458. lua_setmetatable(L, -2);
  6459. *userdataPtr = (PolyBase*)retInst;
  6460. return 1;
  6461. }
  6462. static int Polycode_InputEvent_keyCode(lua_State *L) {
  6463. luaL_checktype(L, 1, LUA_TUSERDATA);
  6464. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6465. lua_pushinteger(L, inst->keyCode());
  6466. return 1;
  6467. }
  6468. static int Polycode_delete_InputEvent(lua_State *L) {
  6469. luaL_checktype(L, 1, LUA_TUSERDATA);
  6470. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6471. delete ((InputEvent*) *inst);
  6472. *inst = NULL;
  6473. return 0;
  6474. }
  6475. static int Polycode_GlyphData_get_glyphs(lua_State *L) {
  6476. luaL_checktype(L, 1, LUA_TUSERDATA);
  6477. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6478. if(!inst->glyphs) {
  6479. lua_pushnil(L);
  6480. } else {
  6481. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6482. *userdataPtr = (PolyBase*)inst->glyphs;
  6483. }
  6484. return 1;
  6485. }
  6486. static int Polycode_GlyphData_get_positions(lua_State *L) {
  6487. luaL_checktype(L, 1, LUA_TUSERDATA);
  6488. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6489. if(!inst->positions) {
  6490. lua_pushnil(L);
  6491. } else {
  6492. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6493. *userdataPtr = (PolyBase*)inst->positions;
  6494. }
  6495. return 1;
  6496. }
  6497. static int Polycode_GlyphData_get_num_glyphs(lua_State *L) {
  6498. luaL_checktype(L, 1, LUA_TUSERDATA);
  6499. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6500. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6501. *userdataPtr = (PolyBase*)&inst->num_glyphs;
  6502. return 1;
  6503. }
  6504. static int Polycode_GlyphData_get_trailingAdvance(lua_State *L) {
  6505. luaL_checktype(L, 1, LUA_TUSERDATA);
  6506. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6507. lua_pushinteger(L, inst->trailingAdvance);
  6508. return 1;
  6509. }
  6510. static int Polycode_GlyphData_set_glyphs(lua_State *L) {
  6511. luaL_checktype(L, 1, LUA_TUSERDATA);
  6512. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6513. luaL_checktype(L, 2, LUA_TUSERDATA);
  6514. FT_Glyph* *argInst = (FT_Glyph**) *((PolyBase**)lua_touserdata(L, 2));
  6515. inst->glyphs = *argInst;
  6516. return 0;
  6517. }
  6518. static int Polycode_GlyphData_set_positions(lua_State *L) {
  6519. luaL_checktype(L, 1, LUA_TUSERDATA);
  6520. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6521. luaL_checktype(L, 2, LUA_TUSERDATA);
  6522. FT_Vector* *argInst = (FT_Vector**) *((PolyBase**)lua_touserdata(L, 2));
  6523. inst->positions = *argInst;
  6524. return 0;
  6525. }
  6526. static int Polycode_GlyphData_set_num_glyphs(lua_State *L) {
  6527. luaL_checktype(L, 1, LUA_TUSERDATA);
  6528. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6529. luaL_checktype(L, 2, LUA_TUSERDATA);
  6530. FT_UInt *argInst = (FT_UInt*) *((PolyBase**)lua_touserdata(L, 2));
  6531. inst->num_glyphs = *argInst;
  6532. return 0;
  6533. }
  6534. static int Polycode_GlyphData_set_trailingAdvance(lua_State *L) {
  6535. luaL_checktype(L, 1, LUA_TUSERDATA);
  6536. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6537. int param = lua_tointeger(L, 2);
  6538. inst->trailingAdvance = param;
  6539. return 0;
  6540. }
  6541. static int Polycode_GlyphData(lua_State *L) {
  6542. GlyphData *inst = new GlyphData();
  6543. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6544. *userdataPtr = (PolyBase*)inst;
  6545. luaL_getmetatable(L, "Polycode.GlyphData");
  6546. lua_setmetatable(L, -2);
  6547. return 1;
  6548. }
  6549. static int Polycode_GlyphData_clearData(lua_State *L) {
  6550. luaL_checktype(L, 1, LUA_TUSERDATA);
  6551. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6552. inst->clearData();
  6553. return 0;
  6554. }
  6555. static int Polycode_delete_GlyphData(lua_State *L) {
  6556. luaL_checktype(L, 1, LUA_TUSERDATA);
  6557. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6558. delete ((GlyphData*) *inst);
  6559. *inst = NULL;
  6560. return 0;
  6561. }
  6562. static int Polycode_ColorRange_get_color(lua_State *L) {
  6563. luaL_checktype(L, 1, LUA_TUSERDATA);
  6564. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6565. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6566. *userdataPtr = (PolyBase*)&inst->color;
  6567. return 1;
  6568. }
  6569. static int Polycode_ColorRange_get_rangeStart(lua_State *L) {
  6570. luaL_checktype(L, 1, LUA_TUSERDATA);
  6571. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6572. lua_pushinteger(L, inst->rangeStart);
  6573. return 1;
  6574. }
  6575. static int Polycode_ColorRange_get_rangeEnd(lua_State *L) {
  6576. luaL_checktype(L, 1, LUA_TUSERDATA);
  6577. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6578. lua_pushinteger(L, inst->rangeEnd);
  6579. return 1;
  6580. }
  6581. static int Polycode_ColorRange_set_color(lua_State *L) {
  6582. luaL_checktype(L, 1, LUA_TUSERDATA);
  6583. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6584. luaL_checktype(L, 2, LUA_TUSERDATA);
  6585. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  6586. inst->color = *argInst;
  6587. return 0;
  6588. }
  6589. static int Polycode_ColorRange_set_rangeStart(lua_State *L) {
  6590. luaL_checktype(L, 1, LUA_TUSERDATA);
  6591. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6592. int param = lua_tointeger(L, 2);
  6593. inst->rangeStart = param;
  6594. return 0;
  6595. }
  6596. static int Polycode_ColorRange_set_rangeEnd(lua_State *L) {
  6597. luaL_checktype(L, 1, LUA_TUSERDATA);
  6598. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6599. int param = lua_tointeger(L, 2);
  6600. inst->rangeEnd = param;
  6601. return 0;
  6602. }
  6603. static int Polycode_ColorRange(lua_State *L) {
  6604. luaL_checktype(L, 1, LUA_TUSERDATA);
  6605. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 1));
  6606. luaL_checktype(L, 2, LUA_TNUMBER);
  6607. int rangeStart = lua_tointeger(L, 2);
  6608. luaL_checktype(L, 3, LUA_TNUMBER);
  6609. int rangeEnd = lua_tointeger(L, 3);
  6610. ColorRange *inst = new ColorRange(color, rangeStart, rangeEnd);
  6611. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6612. *userdataPtr = (PolyBase*)inst;
  6613. luaL_getmetatable(L, "Polycode.ColorRange");
  6614. lua_setmetatable(L, -2);
  6615. return 1;
  6616. }
  6617. static int Polycode_delete_ColorRange(lua_State *L) {
  6618. luaL_checktype(L, 1, LUA_TUSERDATA);
  6619. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6620. delete ((ColorRange*) *inst);
  6621. *inst = NULL;
  6622. return 0;
  6623. }
  6624. static int Polycode_Label(lua_State *L) {
  6625. luaL_checktype(L, 1, LUA_TUSERDATA);
  6626. shared_ptr<Font> font = *(shared_ptr<Font>*) *((PolyBase**)lua_touserdata(L, 1));
  6627. luaL_checktype(L, 2, LUA_TSTRING);
  6628. String text = String(lua_tostring(L, 2));
  6629. luaL_checktype(L, 3, LUA_TNUMBER);
  6630. int size = lua_tointeger(L, 3);
  6631. luaL_checktype(L, 4, LUA_TNUMBER);
  6632. int antiAliasMode = lua_tointeger(L, 4);
  6633. bool premultiplyAlpha;
  6634. if(lua_isboolean(L, 5)) {
  6635. premultiplyAlpha = lua_toboolean(L, 5) != 0;
  6636. } else {
  6637. premultiplyAlpha = false;
  6638. }
  6639. luaL_checktype(L, 6, LUA_TUSERDATA);
  6640. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6641. luaL_checktype(L, 7, LUA_TUSERDATA);
  6642. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  6643. Label *inst = new Label(font, text, size, antiAliasMode, premultiplyAlpha, backgroundColor, foregroundColor);
  6644. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6645. *userdataPtr = (PolyBase*)inst;
  6646. luaL_getmetatable(L, "Polycode.Label");
  6647. lua_setmetatable(L, -2);
  6648. return 1;
  6649. }
  6650. static int Polycode_Label_setText(lua_State *L) {
  6651. luaL_checktype(L, 1, LUA_TUSERDATA);
  6652. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6653. luaL_checktype(L, 2, LUA_TSTRING);
  6654. String text = String(lua_tostring(L, 2));
  6655. inst->setText(text);
  6656. return 0;
  6657. }
  6658. static int Polycode_Label_getText(lua_State *L) {
  6659. luaL_checktype(L, 1, LUA_TUSERDATA);
  6660. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6661. lua_pushstring(L, inst->getText().c_str());
  6662. return 1;
  6663. }
  6664. static int Polycode_Label_getTextWidthForString(lua_State *L) {
  6665. luaL_checktype(L, 1, LUA_TUSERDATA);
  6666. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6667. luaL_checktype(L, 2, LUA_TSTRING);
  6668. String text = String(lua_tostring(L, 2));
  6669. lua_pushinteger(L, inst->getTextWidthForString(text));
  6670. return 1;
  6671. }
  6672. static int Polycode_Label_getTextHeightForString(lua_State *L) {
  6673. luaL_checktype(L, 1, LUA_TUSERDATA);
  6674. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6675. luaL_checktype(L, 2, LUA_TSTRING);
  6676. String text = String(lua_tostring(L, 2));
  6677. lua_pushinteger(L, inst->getTextHeightForString(text));
  6678. return 1;
  6679. }
  6680. static int Polycode_Label_getTextWidth(lua_State *L) {
  6681. luaL_checktype(L, 1, LUA_TUSERDATA);
  6682. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6683. lua_pushnumber(L, inst->getTextWidth());
  6684. return 1;
  6685. }
  6686. static int Polycode_Label_getTextHeight(lua_State *L) {
  6687. luaL_checktype(L, 1, LUA_TUSERDATA);
  6688. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6689. lua_pushnumber(L, inst->getTextHeight());
  6690. return 1;
  6691. }
  6692. static int Polycode_Label_setColorForRange(lua_State *L) {
  6693. luaL_checktype(L, 1, LUA_TUSERDATA);
  6694. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6695. luaL_checktype(L, 2, LUA_TUSERDATA);
  6696. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6697. luaL_checktype(L, 3, LUA_TNUMBER);
  6698. int rangeStart = lua_tointeger(L, 3);
  6699. luaL_checktype(L, 4, LUA_TNUMBER);
  6700. int rangeEnd = lua_tointeger(L, 4);
  6701. inst->setColorForRange(color, rangeStart, rangeEnd);
  6702. return 0;
  6703. }
  6704. static int Polycode_Label_clearColors(lua_State *L) {
  6705. luaL_checktype(L, 1, LUA_TUSERDATA);
  6706. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6707. inst->clearColors();
  6708. return 0;
  6709. }
  6710. static int Polycode_Label_getColorForIndex(lua_State *L) {
  6711. luaL_checktype(L, 1, LUA_TUSERDATA);
  6712. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6713. luaL_checktype(L, 2, LUA_TNUMBER);
  6714. int index = lua_tointeger(L, 2);
  6715. Color *retInst = new Color();
  6716. *retInst = inst->getColorForIndex(index);
  6717. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6718. luaL_getmetatable(L, "Polycode.Color");
  6719. lua_setmetatable(L, -2);
  6720. *userdataPtr = (PolyBase*)retInst;
  6721. return 1;
  6722. }
  6723. static int Polycode_Label_getPremultiplyAlpha(lua_State *L) {
  6724. luaL_checktype(L, 1, LUA_TUSERDATA);
  6725. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6726. lua_pushboolean(L, inst->getPremultiplyAlpha());
  6727. return 1;
  6728. }
  6729. static int Polycode_Label_setPremultiplyAlpha(lua_State *L) {
  6730. luaL_checktype(L, 1, LUA_TUSERDATA);
  6731. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6732. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6733. bool val = lua_toboolean(L, 2) != 0;
  6734. inst->setPremultiplyAlpha(val);
  6735. return 0;
  6736. }
  6737. static int Polycode_Label_setFont(lua_State *L) {
  6738. luaL_checktype(L, 1, LUA_TUSERDATA);
  6739. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6740. luaL_checktype(L, 2, LUA_TUSERDATA);
  6741. shared_ptr<Font> newFont = *(shared_ptr<Font>*) *((PolyBase**)lua_touserdata(L, 2));
  6742. inst->setFont(newFont);
  6743. return 0;
  6744. }
  6745. static int Polycode_Label_getFont(lua_State *L) {
  6746. luaL_checktype(L, 1, LUA_TUSERDATA);
  6747. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6748. shared_ptr<Font> *retInst = new shared_ptr<Font>();
  6749. *retInst = inst->getFont();
  6750. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6751. luaL_getmetatable(L, "Polycode.shared_ptr<Font>");
  6752. lua_setmetatable(L, -2);
  6753. *userdataPtr = (PolyBase*)retInst;
  6754. return 1;
  6755. }
  6756. static int Polycode_Label_setSize(lua_State *L) {
  6757. luaL_checktype(L, 1, LUA_TUSERDATA);
  6758. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6759. luaL_checktype(L, 2, LUA_TNUMBER);
  6760. int newSize = lua_tointeger(L, 2);
  6761. inst->setSize(newSize);
  6762. return 0;
  6763. }
  6764. static int Polycode_Label_getSize(lua_State *L) {
  6765. luaL_checktype(L, 1, LUA_TUSERDATA);
  6766. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6767. lua_pushinteger(L, inst->getSize());
  6768. return 1;
  6769. }
  6770. static int Polycode_Label_getAntialiasMode(lua_State *L) {
  6771. luaL_checktype(L, 1, LUA_TUSERDATA);
  6772. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6773. lua_pushinteger(L, inst->getAntialiasMode());
  6774. return 1;
  6775. }
  6776. static int Polycode_Label_setAntialiasMode(lua_State *L) {
  6777. luaL_checktype(L, 1, LUA_TUSERDATA);
  6778. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6779. luaL_checktype(L, 2, LUA_TNUMBER);
  6780. int newMode = lua_tointeger(L, 2);
  6781. inst->setAntialiasMode(newMode);
  6782. return 0;
  6783. }
  6784. static int Polycode_Label_getBaselineAdjust(lua_State *L) {
  6785. luaL_checktype(L, 1, LUA_TUSERDATA);
  6786. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6787. lua_pushinteger(L, inst->getBaselineAdjust());
  6788. return 1;
  6789. }
  6790. static int Polycode_Label_setBackgroundColor(lua_State *L) {
  6791. luaL_checktype(L, 1, LUA_TUSERDATA);
  6792. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6793. luaL_checktype(L, 2, LUA_TUSERDATA);
  6794. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6795. inst->setBackgroundColor(color);
  6796. return 0;
  6797. }
  6798. static int Polycode_Label_setForegroundColor(lua_State *L) {
  6799. luaL_checktype(L, 1, LUA_TUSERDATA);
  6800. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6801. luaL_checktype(L, 2, LUA_TUSERDATA);
  6802. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6803. inst->setForegroundColor(color);
  6804. return 0;
  6805. }
  6806. static int Polycode_Label_setColors(lua_State *L) {
  6807. luaL_checktype(L, 1, LUA_TUSERDATA);
  6808. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6809. luaL_checktype(L, 2, LUA_TUSERDATA);
  6810. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6811. luaL_checktype(L, 3, LUA_TUSERDATA);
  6812. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  6813. inst->setColors(backgroundColor, foregroundColor);
  6814. return 0;
  6815. }
  6816. static int Polycode_Label_getBackgroundColor(lua_State *L) {
  6817. luaL_checktype(L, 1, LUA_TUSERDATA);
  6818. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6819. Color *retInst = new Color();
  6820. *retInst = inst->getBackgroundColor();
  6821. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6822. luaL_getmetatable(L, "Polycode.Color");
  6823. lua_setmetatable(L, -2);
  6824. *userdataPtr = (PolyBase*)retInst;
  6825. return 1;
  6826. }
  6827. static int Polycode_Label_getForegroundColor(lua_State *L) {
  6828. luaL_checktype(L, 1, LUA_TUSERDATA);
  6829. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6830. Color *retInst = new Color();
  6831. *retInst = inst->getForegroundColor();
  6832. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6833. luaL_getmetatable(L, "Polycode.Color");
  6834. lua_setmetatable(L, -2);
  6835. *userdataPtr = (PolyBase*)retInst;
  6836. return 1;
  6837. }
  6838. static int Polycode_Label_optionsChanged(lua_State *L) {
  6839. luaL_checktype(L, 1, LUA_TUSERDATA);
  6840. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6841. lua_pushboolean(L, inst->optionsChanged());
  6842. return 1;
  6843. }
  6844. static int Polycode_delete_Label(lua_State *L) {
  6845. luaL_checktype(L, 1, LUA_TUSERDATA);
  6846. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6847. delete ((Label*) *inst);
  6848. *inst = NULL;
  6849. return 0;
  6850. }
  6851. static int Polycode_Material_get_fp16RenderTargets(lua_State *L) {
  6852. luaL_checktype(L, 1, LUA_TUSERDATA);
  6853. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6854. lua_pushboolean(L, inst->fp16RenderTargets);
  6855. return 1;
  6856. }
  6857. static int Polycode_Material_get_blendingMode(lua_State *L) {
  6858. luaL_checktype(L, 1, LUA_TUSERDATA);
  6859. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6860. lua_pushinteger(L, inst->blendingMode);
  6861. return 1;
  6862. }
  6863. static int Polycode_Material_get_screenMaterial(lua_State *L) {
  6864. luaL_checktype(L, 1, LUA_TUSERDATA);
  6865. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6866. lua_pushboolean(L, inst->screenMaterial);
  6867. return 1;
  6868. }
  6869. static int Polycode_Material_set_fp16RenderTargets(lua_State *L) {
  6870. luaL_checktype(L, 1, LUA_TUSERDATA);
  6871. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6872. bool param = lua_toboolean(L, 2) != 0;
  6873. inst->fp16RenderTargets = param;
  6874. return 0;
  6875. }
  6876. static int Polycode_Material_set_blendingMode(lua_State *L) {
  6877. luaL_checktype(L, 1, LUA_TUSERDATA);
  6878. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6879. int param = lua_tointeger(L, 2);
  6880. inst->blendingMode = param;
  6881. return 0;
  6882. }
  6883. static int Polycode_Material_set_screenMaterial(lua_State *L) {
  6884. luaL_checktype(L, 1, LUA_TUSERDATA);
  6885. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6886. bool param = lua_toboolean(L, 2) != 0;
  6887. inst->screenMaterial = param;
  6888. return 0;
  6889. }
  6890. static int Polycode_Material(lua_State *L) {
  6891. luaL_checktype(L, 1, LUA_TSTRING);
  6892. String name = String(lua_tostring(L, 1));
  6893. Material *inst = new Material(name);
  6894. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6895. *userdataPtr = (PolyBase*)inst;
  6896. luaL_getmetatable(L, "Polycode.Material");
  6897. lua_setmetatable(L, -2);
  6898. return 1;
  6899. }
  6900. static int Polycode_Material_addShaderPass(lua_State *L) {
  6901. luaL_checktype(L, 1, LUA_TUSERDATA);
  6902. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6903. luaL_checktype(L, 2, LUA_TUSERDATA);
  6904. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  6905. inst->addShaderPass(pass);
  6906. return 0;
  6907. }
  6908. static int Polycode_Material_addShaderPassAtIndex(lua_State *L) {
  6909. luaL_checktype(L, 1, LUA_TUSERDATA);
  6910. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6911. luaL_checktype(L, 2, LUA_TUSERDATA);
  6912. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  6913. luaL_checktype(L, 3, LUA_TNUMBER);
  6914. int shaderIndex = lua_tointeger(L, 3);
  6915. inst->addShaderPassAtIndex(pass, shaderIndex);
  6916. return 0;
  6917. }
  6918. static int Polycode_Material_getNumShaderPasses(lua_State *L) {
  6919. luaL_checktype(L, 1, LUA_TUSERDATA);
  6920. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6921. lua_pushinteger(L, inst->getNumShaderPasses());
  6922. return 1;
  6923. }
  6924. static int Polycode_Material_removeShaderPass(lua_State *L) {
  6925. luaL_checktype(L, 1, LUA_TUSERDATA);
  6926. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6927. luaL_checktype(L, 2, LUA_TNUMBER);
  6928. int shaderIndex = lua_tointeger(L, 2);
  6929. inst->removeShaderPass(shaderIndex);
  6930. return 0;
  6931. }
  6932. static int Polycode_Material_addShaderRenderTarget(lua_State *L) {
  6933. luaL_checktype(L, 1, LUA_TUSERDATA);
  6934. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6935. luaL_checktype(L, 2, LUA_TUSERDATA);
  6936. ShaderRenderTarget* newTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  6937. inst->addShaderRenderTarget(newTarget);
  6938. return 0;
  6939. }
  6940. static int Polycode_Material_getNumShaderRenderTargets(lua_State *L) {
  6941. luaL_checktype(L, 1, LUA_TUSERDATA);
  6942. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6943. lua_pushinteger(L, inst->getNumShaderRenderTargets());
  6944. return 1;
  6945. }
  6946. static int Polycode_Material_getShaderRenderTarget(lua_State *L) {
  6947. luaL_checktype(L, 1, LUA_TUSERDATA);
  6948. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6949. luaL_checktype(L, 2, LUA_TNUMBER);
  6950. int index = lua_tointeger(L, 2);
  6951. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderRenderTarget(index);
  6952. if(ptrRetVal == NULL) {
  6953. lua_pushnil(L);
  6954. } else {
  6955. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6956. *userdataPtr = ptrRetVal;
  6957. }
  6958. return 1;
  6959. }
  6960. static int Polycode_Material_removeShaderRenderTarget(lua_State *L) {
  6961. luaL_checktype(L, 1, LUA_TUSERDATA);
  6962. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6963. luaL_checktype(L, 2, LUA_TNUMBER);
  6964. int index = lua_tointeger(L, 2);
  6965. inst->removeShaderRenderTarget(index);
  6966. return 0;
  6967. }
  6968. static int Polycode_Material_recreateRenderTarget(lua_State *L) {
  6969. luaL_checktype(L, 1, LUA_TUSERDATA);
  6970. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6971. luaL_checktype(L, 2, LUA_TUSERDATA);
  6972. ShaderRenderTarget* renderTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  6973. inst->recreateRenderTarget(renderTarget);
  6974. return 0;
  6975. }
  6976. static int Polycode_Material_recreateRenderTargets(lua_State *L) {
  6977. luaL_checktype(L, 1, LUA_TUSERDATA);
  6978. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6979. inst->recreateRenderTargets();
  6980. return 0;
  6981. }
  6982. static int Polycode_Material_getName(lua_State *L) {
  6983. luaL_checktype(L, 1, LUA_TUSERDATA);
  6984. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6985. lua_pushstring(L, inst->getName().c_str());
  6986. return 1;
  6987. }
  6988. static int Polycode_Material_getShaderPass(lua_State *L) {
  6989. luaL_checktype(L, 1, LUA_TUSERDATA);
  6990. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6991. luaL_checktype(L, 2, LUA_TNUMBER);
  6992. int index = lua_tointeger(L, 2);
  6993. ShaderPass *retInst = new ShaderPass();
  6994. *retInst = inst->getShaderPass(index);
  6995. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6996. luaL_getmetatable(L, "Polycode.ShaderPass");
  6997. lua_setmetatable(L, -2);
  6998. *userdataPtr = (PolyBase*)retInst;
  6999. return 1;
  7000. }
  7001. static int Polycode_Material_getShaderBinding(lua_State *L) {
  7002. luaL_checktype(L, 1, LUA_TUSERDATA);
  7003. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7004. luaL_checktype(L, 2, LUA_TNUMBER);
  7005. int index = lua_tointeger(L, 2);
  7006. shared_ptr<ShaderBinding> *retInst = new shared_ptr<ShaderBinding>();
  7007. *retInst = inst->getShaderBinding(index);
  7008. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7009. luaL_getmetatable(L, "Polycode.shared_ptr<ShaderBinding>");
  7010. lua_setmetatable(L, -2);
  7011. *userdataPtr = (PolyBase*)retInst;
  7012. return 1;
  7013. }
  7014. static int Polycode_Material_getShader(lua_State *L) {
  7015. luaL_checktype(L, 1, LUA_TUSERDATA);
  7016. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7017. luaL_checktype(L, 2, LUA_TNUMBER);
  7018. int index = lua_tointeger(L, 2);
  7019. shared_ptr<Shader> *retInst = new shared_ptr<Shader>();
  7020. *retInst = inst->getShader(index);
  7021. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7022. luaL_getmetatable(L, "Polycode.shared_ptr<Shader>");
  7023. lua_setmetatable(L, -2);
  7024. *userdataPtr = (PolyBase*)retInst;
  7025. return 1;
  7026. }
  7027. static int Polycode_Material_loadMaterial(lua_State *L) {
  7028. luaL_checktype(L, 1, LUA_TUSERDATA);
  7029. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7030. luaL_checktype(L, 2, LUA_TSTRING);
  7031. String fileName = String(lua_tostring(L, 2));
  7032. inst->loadMaterial(fileName);
  7033. return 0;
  7034. }
  7035. static int Polycode_Material_setName(lua_State *L) {
  7036. luaL_checktype(L, 1, LUA_TUSERDATA);
  7037. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7038. luaL_checktype(L, 2, LUA_TSTRING);
  7039. String name = String(lua_tostring(L, 2));
  7040. inst->setName(name);
  7041. return 0;
  7042. }
  7043. static int Polycode_Material_clearShaders(lua_State *L) {
  7044. luaL_checktype(L, 1, LUA_TUSERDATA);
  7045. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7046. inst->clearShaders();
  7047. return 0;
  7048. }
  7049. static int Polycode_delete_Material(lua_State *L) {
  7050. luaL_checktype(L, 1, LUA_TUSERDATA);
  7051. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7052. delete ((Material*) *inst);
  7053. *inst = NULL;
  7054. return 0;
  7055. }
  7056. static int Polycode_ShaderPass_get_wireframe(lua_State *L) {
  7057. luaL_checktype(L, 1, LUA_TUSERDATA);
  7058. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7059. lua_pushboolean(L, inst->wireframe);
  7060. return 1;
  7061. }
  7062. static int Polycode_ShaderPass_get_blendingMode(lua_State *L) {
  7063. luaL_checktype(L, 1, LUA_TUSERDATA);
  7064. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7065. lua_pushinteger(L, inst->blendingMode);
  7066. return 1;
  7067. }
  7068. static int Polycode_ShaderPass_set_wireframe(lua_State *L) {
  7069. luaL_checktype(L, 1, LUA_TUSERDATA);
  7070. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7071. bool param = lua_toboolean(L, 2) != 0;
  7072. inst->wireframe = param;
  7073. return 0;
  7074. }
  7075. static int Polycode_ShaderPass_set_blendingMode(lua_State *L) {
  7076. luaL_checktype(L, 1, LUA_TUSERDATA);
  7077. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7078. int param = lua_tointeger(L, 2);
  7079. inst->blendingMode = param;
  7080. return 0;
  7081. }
  7082. static int Polycode_ShaderPass(lua_State *L) {
  7083. ShaderPass *inst = new ShaderPass();
  7084. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7085. *userdataPtr = (PolyBase*)inst;
  7086. luaL_getmetatable(L, "Polycode.ShaderPass");
  7087. lua_setmetatable(L, -2);
  7088. return 1;
  7089. }
  7090. static int Polycode_ShaderPass_getShaderBinding(lua_State *L) {
  7091. luaL_checktype(L, 1, LUA_TUSERDATA);
  7092. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7093. shared_ptr<ShaderBinding> *retInst = new shared_ptr<ShaderBinding>();
  7094. *retInst = inst->getShaderBinding();
  7095. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7096. luaL_getmetatable(L, "Polycode.shared_ptr<ShaderBinding>");
  7097. lua_setmetatable(L, -2);
  7098. *userdataPtr = (PolyBase*)retInst;
  7099. return 1;
  7100. }
  7101. static int Polycode_delete_ShaderPass(lua_State *L) {
  7102. luaL_checktype(L, 1, LUA_TUSERDATA);
  7103. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7104. delete ((ShaderPass*) *inst);
  7105. *inst = NULL;
  7106. return 0;
  7107. }
  7108. static int Polycode_Matrix4(lua_State *L) {
  7109. Matrix4 *inst = new Matrix4();
  7110. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7111. *userdataPtr = (PolyBase*)inst;
  7112. luaL_getmetatable(L, "Polycode.Matrix4");
  7113. lua_setmetatable(L, -2);
  7114. return 1;
  7115. }
  7116. static int Polycode_Matrix4_identity(lua_State *L) {
  7117. luaL_checktype(L, 1, LUA_TUSERDATA);
  7118. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7119. inst->identity();
  7120. return 0;
  7121. }
  7122. static int Polycode_Matrix4_rotateVector(lua_State *L) {
  7123. luaL_checktype(L, 1, LUA_TUSERDATA);
  7124. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7125. luaL_checktype(L, 2, LUA_TUSERDATA);
  7126. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7127. Vector3 *retInst = new Vector3();
  7128. *retInst = inst->rotateVector(v2);
  7129. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7130. luaL_getmetatable(L, "Polycode.Vector3");
  7131. lua_setmetatable(L, -2);
  7132. *userdataPtr = (PolyBase*)retInst;
  7133. return 1;
  7134. }
  7135. static int Polycode_Matrix4_getPosition(lua_State *L) {
  7136. luaL_checktype(L, 1, LUA_TUSERDATA);
  7137. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7138. Vector3 *retInst = new Vector3();
  7139. *retInst = inst->getPosition();
  7140. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7141. luaL_getmetatable(L, "Polycode.Vector3");
  7142. lua_setmetatable(L, -2);
  7143. *userdataPtr = (PolyBase*)retInst;
  7144. return 1;
  7145. }
  7146. static int Polycode_Matrix4_multiplyWithPerspective(lua_State *L) {
  7147. luaL_checktype(L, 1, LUA_TUSERDATA);
  7148. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7149. luaL_checktype(L, 2, LUA_TUSERDATA);
  7150. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7151. Vector3 *retInst = new Vector3();
  7152. *retInst = inst->multiplyWithPerspective(v2);
  7153. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7154. luaL_getmetatable(L, "Polycode.Vector3");
  7155. lua_setmetatable(L, -2);
  7156. *userdataPtr = (PolyBase*)retInst;
  7157. return 1;
  7158. }
  7159. static int Polycode_Matrix4_multVector3(lua_State *L) {
  7160. luaL_checktype(L, 1, LUA_TUSERDATA);
  7161. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7162. luaL_checktype(L, 2, LUA_TUSERDATA);
  7163. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7164. Vector3 *retInst = new Vector3();
  7165. *retInst = inst->multVector3(v2);
  7166. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7167. luaL_getmetatable(L, "Polycode.Vector3");
  7168. lua_setmetatable(L, -2);
  7169. *userdataPtr = (PolyBase*)retInst;
  7170. return 1;
  7171. }
  7172. static int Polycode_Matrix4_multVector4(lua_State *L) {
  7173. luaL_checktype(L, 1, LUA_TUSERDATA);
  7174. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7175. luaL_checktype(L, 2, LUA_TUSERDATA);
  7176. Vector4 v2 = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  7177. Vector4 *retInst = new Vector4();
  7178. *retInst = inst->multVector4(v2);
  7179. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7180. luaL_getmetatable(L, "Polycode.Vector4");
  7181. lua_setmetatable(L, -2);
  7182. *userdataPtr = (PolyBase*)retInst;
  7183. return 1;
  7184. }
  7185. static int Polycode_Matrix4_Translate(lua_State *L) {
  7186. luaL_checktype(L, 1, LUA_TUSERDATA);
  7187. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7188. luaL_checktype(L, 2, LUA_TNUMBER);
  7189. Number x = lua_tonumber(L, 2);
  7190. luaL_checktype(L, 3, LUA_TNUMBER);
  7191. Number y = lua_tonumber(L, 3);
  7192. luaL_checktype(L, 4, LUA_TNUMBER);
  7193. Number z = lua_tonumber(L, 4);
  7194. inst->Translate(x, y, z);
  7195. return 0;
  7196. }
  7197. static int Polycode_Matrix4_setPosition(lua_State *L) {
  7198. luaL_checktype(L, 1, LUA_TUSERDATA);
  7199. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7200. luaL_checktype(L, 2, LUA_TNUMBER);
  7201. Number x = lua_tonumber(L, 2);
  7202. luaL_checktype(L, 3, LUA_TNUMBER);
  7203. Number y = lua_tonumber(L, 3);
  7204. luaL_checktype(L, 4, LUA_TNUMBER);
  7205. Number z = lua_tonumber(L, 4);
  7206. inst->setPosition(x, y, z);
  7207. return 0;
  7208. }
  7209. static int Polycode_Matrix4_setScale(lua_State *L) {
  7210. luaL_checktype(L, 1, LUA_TUSERDATA);
  7211. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7212. luaL_checktype(L, 2, LUA_TUSERDATA);
  7213. Vector3 scale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7214. inst->setScale(scale);
  7215. return 0;
  7216. }
  7217. static int Polycode_Matrix4_getEulerAngles(lua_State *L) {
  7218. luaL_checktype(L, 1, LUA_TUSERDATA);
  7219. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7220. luaL_checktype(L, 2, LUA_TUSERDATA);
  7221. Number* ax = (Number*) *((PolyBase**)lua_touserdata(L, 2));
  7222. luaL_checktype(L, 3, LUA_TUSERDATA);
  7223. Number* ay = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  7224. luaL_checktype(L, 4, LUA_TUSERDATA);
  7225. Number* az = (Number*) *((PolyBase**)lua_touserdata(L, 4));
  7226. inst->getEulerAngles(ax, ay, az);
  7227. return 0;
  7228. }
  7229. static int Polycode_Matrix4_transpose(lua_State *L) {
  7230. luaL_checktype(L, 1, LUA_TUSERDATA);
  7231. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7232. Matrix4 *retInst = new Matrix4();
  7233. *retInst = inst->transpose();
  7234. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7235. luaL_getmetatable(L, "Polycode.Matrix4");
  7236. lua_setmetatable(L, -2);
  7237. *userdataPtr = (PolyBase*)retInst;
  7238. return 1;
  7239. }
  7240. static int Polycode_Matrix4_Inverse(lua_State *L) {
  7241. luaL_checktype(L, 1, LUA_TUSERDATA);
  7242. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7243. Matrix4 *retInst = new Matrix4();
  7244. *retInst = inst->Inverse();
  7245. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7246. luaL_getmetatable(L, "Polycode.Matrix4");
  7247. lua_setmetatable(L, -2);
  7248. *userdataPtr = (PolyBase*)retInst;
  7249. return 1;
  7250. }
  7251. static int Polycode_Matrix4_inverseAffine(lua_State *L) {
  7252. luaL_checktype(L, 1, LUA_TUSERDATA);
  7253. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7254. Matrix4 *retInst = new Matrix4();
  7255. *retInst = inst->inverseAffine();
  7256. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7257. luaL_getmetatable(L, "Polycode.Matrix4");
  7258. lua_setmetatable(L, -2);
  7259. *userdataPtr = (PolyBase*)retInst;
  7260. return 1;
  7261. }
  7262. static int Polycode_Matrix4_determinant(lua_State *L) {
  7263. luaL_checktype(L, 1, LUA_TUSERDATA);
  7264. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7265. lua_pushnumber(L, inst->determinant());
  7266. return 1;
  7267. }
  7268. static int Polycode_Matrix4_generalDeterminant(lua_State *L) {
  7269. luaL_checktype(L, 1, LUA_TUSERDATA);
  7270. Number** a = (Number**) *((PolyBase**)lua_touserdata(L, 1));
  7271. luaL_checktype(L, 2, LUA_TNUMBER);
  7272. int n = lua_tointeger(L, 2);
  7273. lua_pushnumber(L, Matrix4::generalDeterminant(a, n));
  7274. return 1;
  7275. }
  7276. static int Polycode_Matrix4_setOrthoProjection(lua_State *L) {
  7277. luaL_checktype(L, 1, LUA_TUSERDATA);
  7278. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7279. luaL_checktype(L, 2, LUA_TNUMBER);
  7280. Number left = lua_tonumber(L, 2);
  7281. luaL_checktype(L, 3, LUA_TNUMBER);
  7282. Number right = lua_tonumber(L, 3);
  7283. luaL_checktype(L, 4, LUA_TNUMBER);
  7284. Number bottom = lua_tonumber(L, 4);
  7285. luaL_checktype(L, 5, LUA_TNUMBER);
  7286. Number top = lua_tonumber(L, 5);
  7287. luaL_checktype(L, 6, LUA_TNUMBER);
  7288. Number zNear = lua_tonumber(L, 6);
  7289. luaL_checktype(L, 7, LUA_TNUMBER);
  7290. Number zFar = lua_tonumber(L, 7);
  7291. inst->setOrthoProjection(left, right, bottom, top, zNear, zFar);
  7292. return 0;
  7293. }
  7294. static int Polycode_Matrix4_setProjectionFrustum(lua_State *L) {
  7295. luaL_checktype(L, 1, LUA_TUSERDATA);
  7296. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7297. luaL_checktype(L, 2, LUA_TNUMBER);
  7298. Number left = lua_tonumber(L, 2);
  7299. luaL_checktype(L, 3, LUA_TNUMBER);
  7300. Number right = lua_tonumber(L, 3);
  7301. luaL_checktype(L, 4, LUA_TNUMBER);
  7302. Number bottom = lua_tonumber(L, 4);
  7303. luaL_checktype(L, 5, LUA_TNUMBER);
  7304. Number top = lua_tonumber(L, 5);
  7305. luaL_checktype(L, 6, LUA_TNUMBER);
  7306. Number zNear = lua_tonumber(L, 6);
  7307. luaL_checktype(L, 7, LUA_TNUMBER);
  7308. Number zFar = lua_tonumber(L, 7);
  7309. inst->setProjectionFrustum(left, right, bottom, top, zNear, zFar);
  7310. return 0;
  7311. }
  7312. static int Polycode_Matrix4_setProjection(lua_State *L) {
  7313. luaL_checktype(L, 1, LUA_TUSERDATA);
  7314. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7315. luaL_checktype(L, 2, LUA_TNUMBER);
  7316. Number fov = lua_tonumber(L, 2);
  7317. luaL_checktype(L, 3, LUA_TNUMBER);
  7318. Number aspect = lua_tonumber(L, 3);
  7319. luaL_checktype(L, 4, LUA_TNUMBER);
  7320. Number zNear = lua_tonumber(L, 4);
  7321. luaL_checktype(L, 5, LUA_TNUMBER);
  7322. Number zFar = lua_tonumber(L, 5);
  7323. inst->setProjection(fov, aspect, zNear, zFar);
  7324. return 0;
  7325. }
  7326. static int Polycode_delete_Matrix4(lua_State *L) {
  7327. luaL_checktype(L, 1, LUA_TUSERDATA);
  7328. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7329. delete ((Matrix4*) *inst);
  7330. *inst = NULL;
  7331. return 0;
  7332. }
  7333. static int Polycode_Mesh(lua_State *L) {
  7334. Mesh *inst = new Mesh();
  7335. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7336. *userdataPtr = (PolyBase*)inst;
  7337. luaL_getmetatable(L, "Polycode.Mesh");
  7338. lua_setmetatable(L, -2);
  7339. return 1;
  7340. }
  7341. static int Polycode_Mesh_MeshFromFileName(lua_State *L) {
  7342. luaL_checktype(L, 1, LUA_TSTRING);
  7343. String fileName = String(lua_tostring(L, 1));
  7344. PolyBase *ptrRetVal = (PolyBase*)Mesh::MeshFromFileName(fileName);
  7345. if(ptrRetVal == NULL) {
  7346. lua_pushnil(L);
  7347. } else {
  7348. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7349. *userdataPtr = ptrRetVal;
  7350. }
  7351. return 1;
  7352. }
  7353. static int Polycode_Mesh_Copy(lua_State *L) {
  7354. luaL_checktype(L, 1, LUA_TUSERDATA);
  7355. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7356. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  7357. if(ptrRetVal == NULL) {
  7358. lua_pushnil(L);
  7359. } else {
  7360. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7361. *userdataPtr = ptrRetVal;
  7362. }
  7363. return 1;
  7364. }
  7365. static int Polycode_Mesh_loadMesh(lua_State *L) {
  7366. luaL_checktype(L, 1, LUA_TUSERDATA);
  7367. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7368. luaL_checktype(L, 2, LUA_TSTRING);
  7369. String fileName = String(lua_tostring(L, 2));
  7370. inst->loadMesh(fileName);
  7371. return 0;
  7372. }
  7373. static int Polycode_Mesh_saveToFile(lua_State *L) {
  7374. luaL_checktype(L, 1, LUA_TUSERDATA);
  7375. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7376. luaL_checktype(L, 2, LUA_TSTRING);
  7377. String fileName = String(lua_tostring(L, 2));
  7378. bool writeNormals;
  7379. if(lua_isboolean(L, 3)) {
  7380. writeNormals = lua_toboolean(L, 3) != 0;
  7381. } else {
  7382. writeNormals = true;
  7383. }
  7384. bool writeTangents;
  7385. if(lua_isboolean(L, 4)) {
  7386. writeTangents = lua_toboolean(L, 4) != 0;
  7387. } else {
  7388. writeTangents = true;
  7389. }
  7390. bool writeColors;
  7391. if(lua_isboolean(L, 5)) {
  7392. writeColors = lua_toboolean(L, 5) != 0;
  7393. } else {
  7394. writeColors = true;
  7395. }
  7396. bool writeBoneWeights;
  7397. if(lua_isboolean(L, 6)) {
  7398. writeBoneWeights = lua_toboolean(L, 6) != 0;
  7399. } else {
  7400. writeBoneWeights = true;
  7401. }
  7402. bool writeUVs;
  7403. if(lua_isboolean(L, 7)) {
  7404. writeUVs = lua_toboolean(L, 7) != 0;
  7405. } else {
  7406. writeUVs = true;
  7407. }
  7408. bool writeSecondaryUVs;
  7409. if(lua_isboolean(L, 8)) {
  7410. writeSecondaryUVs = lua_toboolean(L, 8) != 0;
  7411. } else {
  7412. writeSecondaryUVs = false;
  7413. }
  7414. inst->saveToFile(fileName, writeNormals, writeTangents, writeColors, writeBoneWeights, writeUVs, writeSecondaryUVs);
  7415. return 0;
  7416. }
  7417. static int Polycode_Mesh_loadFromFile(lua_State *L) {
  7418. luaL_checktype(L, 1, LUA_TUSERDATA);
  7419. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7420. luaL_checktype(L, 2, LUA_TUSERDATA);
  7421. CoreFile* inFile = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  7422. inst->loadFromFile(inFile);
  7423. return 0;
  7424. }
  7425. static int Polycode_Mesh_addSubmesh(lua_State *L) {
  7426. luaL_checktype(L, 1, LUA_TUSERDATA);
  7427. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7428. luaL_checktype(L, 2, LUA_TUSERDATA);
  7429. MeshGeometry newSubmesh = *(MeshGeometry*) *((PolyBase**)lua_touserdata(L, 2));
  7430. inst->addSubmesh(newSubmesh);
  7431. return 0;
  7432. }
  7433. static int Polycode_Mesh_removeSubmeshAtIndex(lua_State *L) {
  7434. luaL_checktype(L, 1, LUA_TUSERDATA);
  7435. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7436. luaL_checktype(L, 2, LUA_TNUMBER);
  7437. int index = lua_tointeger(L, 2);
  7438. inst->removeSubmeshAtIndex(index);
  7439. return 0;
  7440. }
  7441. static int Polycode_Mesh_getNumSubmeshes(lua_State *L) {
  7442. luaL_checktype(L, 1, LUA_TUSERDATA);
  7443. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7444. lua_pushinteger(L, inst->getNumSubmeshes());
  7445. return 1;
  7446. }
  7447. static int Polycode_Mesh_getSubmeshAtIndex(lua_State *L) {
  7448. luaL_checktype(L, 1, LUA_TUSERDATA);
  7449. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7450. luaL_checktype(L, 2, LUA_TNUMBER);
  7451. int index = lua_tointeger(L, 2);
  7452. MeshGeometry *retInst = new MeshGeometry();
  7453. *retInst = inst->getSubmeshAtIndex(index);
  7454. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7455. luaL_getmetatable(L, "Polycode.MeshGeometry");
  7456. lua_setmetatable(L, -2);
  7457. *userdataPtr = (PolyBase*)retInst;
  7458. return 1;
  7459. }
  7460. static int Polycode_Mesh_getSubmeshPointer(lua_State *L) {
  7461. luaL_checktype(L, 1, LUA_TUSERDATA);
  7462. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7463. luaL_checktype(L, 2, LUA_TNUMBER);
  7464. int index = lua_tointeger(L, 2);
  7465. shared_ptr<MeshGeometry> *retInst = new shared_ptr<MeshGeometry>();
  7466. *retInst = inst->getSubmeshPointer(index);
  7467. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7468. luaL_getmetatable(L, "Polycode.shared_ptr<MeshGeometry>");
  7469. lua_setmetatable(L, -2);
  7470. *userdataPtr = (PolyBase*)retInst;
  7471. return 1;
  7472. }
  7473. static int Polycode_Mesh_clearMesh(lua_State *L) {
  7474. luaL_checktype(L, 1, LUA_TUSERDATA);
  7475. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7476. inst->clearMesh();
  7477. return 0;
  7478. }
  7479. static int Polycode_Mesh_calculateBBox(lua_State *L) {
  7480. luaL_checktype(L, 1, LUA_TUSERDATA);
  7481. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7482. Vector3 *retInst = new Vector3();
  7483. *retInst = inst->calculateBBox();
  7484. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7485. luaL_getmetatable(L, "Polycode.Vector3");
  7486. lua_setmetatable(L, -2);
  7487. *userdataPtr = (PolyBase*)retInst;
  7488. return 1;
  7489. }
  7490. static int Polycode_Mesh_getRadius(lua_State *L) {
  7491. luaL_checktype(L, 1, LUA_TUSERDATA);
  7492. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  7493. lua_pushnumber(L, inst->getRadius());
  7494. return 1;
  7495. }
  7496. static int Polycode_delete_Mesh(lua_State *L) {
  7497. luaL_checktype(L, 1, LUA_TUSERDATA);
  7498. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7499. delete ((Mesh*) *inst);
  7500. *inst = NULL;
  7501. return 0;
  7502. }
  7503. static int Polycode_MeshGeometry_get_meshType(lua_State *L) {
  7504. luaL_checktype(L, 1, LUA_TUSERDATA);
  7505. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7506. lua_pushinteger(L, inst->meshType);
  7507. return 1;
  7508. }
  7509. static int Polycode_MeshGeometry_get_dataChanged(lua_State *L) {
  7510. luaL_checktype(L, 1, LUA_TUSERDATA);
  7511. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7512. lua_pushboolean(L, inst->dataChanged);
  7513. return 1;
  7514. }
  7515. static int Polycode_MeshGeometry_get_indexedMesh(lua_State *L) {
  7516. luaL_checktype(L, 1, LUA_TUSERDATA);
  7517. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7518. lua_pushboolean(L, inst->indexedMesh);
  7519. return 1;
  7520. }
  7521. static int Polycode_MeshGeometry_set_meshType(lua_State *L) {
  7522. luaL_checktype(L, 1, LUA_TUSERDATA);
  7523. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7524. int param = lua_tointeger(L, 2);
  7525. inst->meshType = param;
  7526. return 0;
  7527. }
  7528. static int Polycode_MeshGeometry_set_dataChanged(lua_State *L) {
  7529. luaL_checktype(L, 1, LUA_TUSERDATA);
  7530. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7531. bool param = lua_toboolean(L, 2) != 0;
  7532. inst->dataChanged = param;
  7533. return 0;
  7534. }
  7535. static int Polycode_MeshGeometry_set_indexedMesh(lua_State *L) {
  7536. luaL_checktype(L, 1, LUA_TUSERDATA);
  7537. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7538. bool param = lua_toboolean(L, 2) != 0;
  7539. inst->indexedMesh = param;
  7540. return 0;
  7541. }
  7542. static int Polycode_MeshGeometry(lua_State *L) {
  7543. MeshGeometry *inst = new MeshGeometry();
  7544. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7545. *userdataPtr = (PolyBase*)inst;
  7546. luaL_getmetatable(L, "Polycode.MeshGeometry");
  7547. lua_setmetatable(L, -2);
  7548. return 1;
  7549. }
  7550. static int Polycode_MeshGeometry_clearMesh(lua_State *L) {
  7551. luaL_checktype(L, 1, LUA_TUSERDATA);
  7552. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7553. inst->clearMesh();
  7554. return 0;
  7555. }
  7556. static int Polycode_MeshGeometry_getVertexCount(lua_State *L) {
  7557. luaL_checktype(L, 1, LUA_TUSERDATA);
  7558. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7559. lua_pushinteger(L, inst->getVertexCount());
  7560. return 1;
  7561. }
  7562. static int Polycode_MeshGeometry_createPlane(lua_State *L) {
  7563. luaL_checktype(L, 1, LUA_TUSERDATA);
  7564. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7565. luaL_checktype(L, 2, LUA_TNUMBER);
  7566. Number w = lua_tonumber(L, 2);
  7567. luaL_checktype(L, 3, LUA_TNUMBER);
  7568. Number h = lua_tonumber(L, 3);
  7569. Number tilingValue;
  7570. if(lua_isnumber(L, 4)) {
  7571. tilingValue = lua_tonumber(L, 4);
  7572. } else {
  7573. tilingValue = 1.0;
  7574. }
  7575. inst->createPlane(w, h, tilingValue);
  7576. return 0;
  7577. }
  7578. static int Polycode_MeshGeometry_createVPlane(lua_State *L) {
  7579. luaL_checktype(L, 1, LUA_TUSERDATA);
  7580. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7581. luaL_checktype(L, 2, LUA_TNUMBER);
  7582. Number w = lua_tonumber(L, 2);
  7583. luaL_checktype(L, 3, LUA_TNUMBER);
  7584. Number h = lua_tonumber(L, 3);
  7585. Number tilingValue;
  7586. if(lua_isnumber(L, 4)) {
  7587. tilingValue = lua_tonumber(L, 4);
  7588. } else {
  7589. tilingValue = 1.0;
  7590. }
  7591. inst->createVPlane(w, h, tilingValue);
  7592. return 0;
  7593. }
  7594. static int Polycode_MeshGeometry_createCircle(lua_State *L) {
  7595. luaL_checktype(L, 1, LUA_TUSERDATA);
  7596. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7597. luaL_checktype(L, 2, LUA_TNUMBER);
  7598. Number w = lua_tonumber(L, 2);
  7599. luaL_checktype(L, 3, LUA_TNUMBER);
  7600. Number h = lua_tonumber(L, 3);
  7601. luaL_checktype(L, 4, LUA_TNUMBER);
  7602. int numSegments = lua_tointeger(L, 4);
  7603. Number tilingValue;
  7604. if(lua_isnumber(L, 5)) {
  7605. tilingValue = lua_tonumber(L, 5);
  7606. } else {
  7607. tilingValue = 1.0;
  7608. }
  7609. inst->createCircle(w, h, numSegments, tilingValue);
  7610. return 0;
  7611. }
  7612. static int Polycode_MeshGeometry_createLineCircle(lua_State *L) {
  7613. luaL_checktype(L, 1, LUA_TUSERDATA);
  7614. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7615. luaL_checktype(L, 2, LUA_TNUMBER);
  7616. Number w = lua_tonumber(L, 2);
  7617. luaL_checktype(L, 3, LUA_TNUMBER);
  7618. Number h = lua_tonumber(L, 3);
  7619. luaL_checktype(L, 4, LUA_TNUMBER);
  7620. int numSegments = lua_tointeger(L, 4);
  7621. Number tilingValue;
  7622. if(lua_isnumber(L, 5)) {
  7623. tilingValue = lua_tonumber(L, 5);
  7624. } else {
  7625. tilingValue = 1.0;
  7626. }
  7627. inst->createLineCircle(w, h, numSegments, tilingValue);
  7628. return 0;
  7629. }
  7630. static int Polycode_MeshGeometry_createTorus(lua_State *L) {
  7631. luaL_checktype(L, 1, LUA_TUSERDATA);
  7632. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7633. luaL_checktype(L, 2, LUA_TNUMBER);
  7634. Number radius = lua_tonumber(L, 2);
  7635. luaL_checktype(L, 3, LUA_TNUMBER);
  7636. Number tubeRadius = lua_tonumber(L, 3);
  7637. luaL_checktype(L, 4, LUA_TNUMBER);
  7638. int segmentsW = lua_tointeger(L, 4);
  7639. luaL_checktype(L, 5, LUA_TNUMBER);
  7640. int segmentsH = lua_tointeger(L, 5);
  7641. Number tilingValue;
  7642. if(lua_isnumber(L, 6)) {
  7643. tilingValue = lua_tonumber(L, 6);
  7644. } else {
  7645. tilingValue = 1.0;
  7646. }
  7647. inst->createTorus(radius, tubeRadius, segmentsW, segmentsH, tilingValue);
  7648. return 0;
  7649. }
  7650. static int Polycode_MeshGeometry_createBox(lua_State *L) {
  7651. luaL_checktype(L, 1, LUA_TUSERDATA);
  7652. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7653. luaL_checktype(L, 2, LUA_TNUMBER);
  7654. Number w = lua_tonumber(L, 2);
  7655. luaL_checktype(L, 3, LUA_TNUMBER);
  7656. Number d = lua_tonumber(L, 3);
  7657. luaL_checktype(L, 4, LUA_TNUMBER);
  7658. Number h = lua_tonumber(L, 4);
  7659. Number tilingValue;
  7660. if(lua_isnumber(L, 5)) {
  7661. tilingValue = lua_tonumber(L, 5);
  7662. } else {
  7663. tilingValue = 1.0;
  7664. }
  7665. inst->createBox(w, d, h, tilingValue);
  7666. return 0;
  7667. }
  7668. static int Polycode_MeshGeometry_createSphere(lua_State *L) {
  7669. luaL_checktype(L, 1, LUA_TUSERDATA);
  7670. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7671. luaL_checktype(L, 2, LUA_TNUMBER);
  7672. Number radius = lua_tonumber(L, 2);
  7673. luaL_checktype(L, 3, LUA_TNUMBER);
  7674. int numRings = lua_tointeger(L, 3);
  7675. luaL_checktype(L, 4, LUA_TNUMBER);
  7676. int numSegments = lua_tointeger(L, 4);
  7677. Number tilingValue;
  7678. if(lua_isnumber(L, 5)) {
  7679. tilingValue = lua_tonumber(L, 5);
  7680. } else {
  7681. tilingValue = 1.0;
  7682. }
  7683. inst->createSphere(radius, numRings, numSegments, tilingValue);
  7684. return 0;
  7685. }
  7686. static int Polycode_MeshGeometry_createIcosphere(lua_State *L) {
  7687. luaL_checktype(L, 1, LUA_TUSERDATA);
  7688. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7689. luaL_checktype(L, 2, LUA_TNUMBER);
  7690. Number radius = lua_tonumber(L, 2);
  7691. luaL_checktype(L, 3, LUA_TNUMBER);
  7692. int subdivisions = lua_tointeger(L, 3);
  7693. inst->createIcosphere(radius, subdivisions);
  7694. return 0;
  7695. }
  7696. static int Polycode_MeshGeometry_createOctosphere(lua_State *L) {
  7697. luaL_checktype(L, 1, LUA_TUSERDATA);
  7698. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7699. luaL_checktype(L, 2, LUA_TNUMBER);
  7700. Number radius = lua_tonumber(L, 2);
  7701. luaL_checktype(L, 3, LUA_TNUMBER);
  7702. int subdivisions = lua_tointeger(L, 3);
  7703. inst->createOctosphere(radius, subdivisions);
  7704. return 0;
  7705. }
  7706. static int Polycode_MeshGeometry_createCylinder(lua_State *L) {
  7707. luaL_checktype(L, 1, LUA_TUSERDATA);
  7708. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7709. luaL_checktype(L, 2, LUA_TNUMBER);
  7710. Number height = lua_tonumber(L, 2);
  7711. luaL_checktype(L, 3, LUA_TNUMBER);
  7712. Number radius = lua_tonumber(L, 3);
  7713. luaL_checktype(L, 4, LUA_TNUMBER);
  7714. int numSegments = lua_tointeger(L, 4);
  7715. bool capped;
  7716. if(lua_isboolean(L, 5)) {
  7717. capped = lua_toboolean(L, 5) != 0;
  7718. } else {
  7719. capped = true;
  7720. }
  7721. Number tilingValue;
  7722. if(lua_isnumber(L, 6)) {
  7723. tilingValue = lua_tonumber(L, 6);
  7724. } else {
  7725. tilingValue = 1.0;
  7726. }
  7727. inst->createCylinder(height, radius, numSegments, capped, tilingValue);
  7728. return 0;
  7729. }
  7730. static int Polycode_MeshGeometry_createCone(lua_State *L) {
  7731. luaL_checktype(L, 1, LUA_TUSERDATA);
  7732. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7733. luaL_checktype(L, 2, LUA_TNUMBER);
  7734. Number height = lua_tonumber(L, 2);
  7735. luaL_checktype(L, 3, LUA_TNUMBER);
  7736. Number radius = lua_tonumber(L, 3);
  7737. luaL_checktype(L, 4, LUA_TNUMBER);
  7738. int numSegments = lua_tointeger(L, 4);
  7739. Number tilingValue;
  7740. if(lua_isnumber(L, 5)) {
  7741. tilingValue = lua_tonumber(L, 5);
  7742. } else {
  7743. tilingValue = 1.0;
  7744. }
  7745. inst->createCone(height, radius, numSegments, tilingValue);
  7746. return 0;
  7747. }
  7748. static int Polycode_MeshGeometry_recenterMesh(lua_State *L) {
  7749. luaL_checktype(L, 1, LUA_TUSERDATA);
  7750. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7751. Vector3 *retInst = new Vector3();
  7752. *retInst = inst->recenterMesh();
  7753. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7754. luaL_getmetatable(L, "Polycode.Vector3");
  7755. lua_setmetatable(L, -2);
  7756. *userdataPtr = (PolyBase*)retInst;
  7757. return 1;
  7758. }
  7759. static int Polycode_MeshGeometry_setVertexAtOffset(lua_State *L) {
  7760. luaL_checktype(L, 1, LUA_TUSERDATA);
  7761. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7762. luaL_checktype(L, 2, LUA_TNUMBER);
  7763. int offset = lua_tointeger(L, 2);
  7764. luaL_checktype(L, 3, LUA_TNUMBER);
  7765. Number x = lua_tonumber(L, 3);
  7766. luaL_checktype(L, 4, LUA_TNUMBER);
  7767. Number y = lua_tonumber(L, 4);
  7768. luaL_checktype(L, 5, LUA_TNUMBER);
  7769. Number z = lua_tonumber(L, 5);
  7770. inst->setVertexAtOffset(offset, x, y, z);
  7771. return 0;
  7772. }
  7773. static int Polycode_MeshGeometry_addVertexWithUVAndNormal(lua_State *L) {
  7774. luaL_checktype(L, 1, LUA_TUSERDATA);
  7775. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7776. luaL_checktype(L, 2, LUA_TNUMBER);
  7777. Number x = lua_tonumber(L, 2);
  7778. luaL_checktype(L, 3, LUA_TNUMBER);
  7779. Number y = lua_tonumber(L, 3);
  7780. luaL_checktype(L, 4, LUA_TNUMBER);
  7781. Number z = lua_tonumber(L, 4);
  7782. luaL_checktype(L, 5, LUA_TNUMBER);
  7783. Number u = lua_tonumber(L, 5);
  7784. luaL_checktype(L, 6, LUA_TNUMBER);
  7785. Number v = lua_tonumber(L, 6);
  7786. luaL_checktype(L, 7, LUA_TNUMBER);
  7787. Number nx = lua_tonumber(L, 7);
  7788. luaL_checktype(L, 8, LUA_TNUMBER);
  7789. Number ny = lua_tonumber(L, 8);
  7790. luaL_checktype(L, 9, LUA_TNUMBER);
  7791. Number nz = lua_tonumber(L, 9);
  7792. inst->addVertexWithUVAndNormal(x, y, z, u, v, nx, ny, nz);
  7793. return 0;
  7794. }
  7795. static int Polycode_MeshGeometry_addTexCoord(lua_State *L) {
  7796. luaL_checktype(L, 1, LUA_TUSERDATA);
  7797. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7798. luaL_checktype(L, 2, LUA_TNUMBER);
  7799. Number u = lua_tonumber(L, 2);
  7800. luaL_checktype(L, 3, LUA_TNUMBER);
  7801. Number v = lua_tonumber(L, 3);
  7802. inst->addTexCoord(u, v);
  7803. return 0;
  7804. }
  7805. static int Polycode_MeshGeometry_addTexCoord2(lua_State *L) {
  7806. luaL_checktype(L, 1, LUA_TUSERDATA);
  7807. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7808. luaL_checktype(L, 2, LUA_TNUMBER);
  7809. Number u = lua_tonumber(L, 2);
  7810. luaL_checktype(L, 3, LUA_TNUMBER);
  7811. Number v = lua_tonumber(L, 3);
  7812. inst->addTexCoord2(u, v);
  7813. return 0;
  7814. }
  7815. static int Polycode_MeshGeometry_addTangent(lua_State *L) {
  7816. luaL_checktype(L, 1, LUA_TUSERDATA);
  7817. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7818. luaL_checktype(L, 2, LUA_TNUMBER);
  7819. Number x = lua_tonumber(L, 2);
  7820. luaL_checktype(L, 3, LUA_TNUMBER);
  7821. Number y = lua_tonumber(L, 3);
  7822. luaL_checktype(L, 4, LUA_TNUMBER);
  7823. Number z = lua_tonumber(L, 4);
  7824. inst->addTangent(x, y, z);
  7825. return 0;
  7826. }
  7827. static int Polycode_MeshGeometry_addVertexWithUV(lua_State *L) {
  7828. luaL_checktype(L, 1, LUA_TUSERDATA);
  7829. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7830. luaL_checktype(L, 2, LUA_TNUMBER);
  7831. Number x = lua_tonumber(L, 2);
  7832. luaL_checktype(L, 3, LUA_TNUMBER);
  7833. Number y = lua_tonumber(L, 3);
  7834. luaL_checktype(L, 4, LUA_TNUMBER);
  7835. Number z = lua_tonumber(L, 4);
  7836. luaL_checktype(L, 5, LUA_TNUMBER);
  7837. Number u = lua_tonumber(L, 5);
  7838. luaL_checktype(L, 6, LUA_TNUMBER);
  7839. Number v = lua_tonumber(L, 6);
  7840. inst->addVertexWithUV(x, y, z, u, v);
  7841. return 0;
  7842. }
  7843. static int Polycode_MeshGeometry_addVertex(lua_State *L) {
  7844. luaL_checktype(L, 1, LUA_TUSERDATA);
  7845. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7846. luaL_checktype(L, 2, LUA_TNUMBER);
  7847. Number x = lua_tonumber(L, 2);
  7848. luaL_checktype(L, 3, LUA_TNUMBER);
  7849. Number y = lua_tonumber(L, 3);
  7850. luaL_checktype(L, 4, LUA_TNUMBER);
  7851. Number z = lua_tonumber(L, 4);
  7852. inst->addVertex(x, y, z);
  7853. return 0;
  7854. }
  7855. static int Polycode_MeshGeometry_addNormal(lua_State *L) {
  7856. luaL_checktype(L, 1, LUA_TUSERDATA);
  7857. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7858. luaL_checktype(L, 2, LUA_TNUMBER);
  7859. Number nx = lua_tonumber(L, 2);
  7860. luaL_checktype(L, 3, LUA_TNUMBER);
  7861. Number ny = lua_tonumber(L, 3);
  7862. luaL_checktype(L, 4, LUA_TNUMBER);
  7863. Number nz = lua_tonumber(L, 4);
  7864. inst->addNormal(nx, ny, nz);
  7865. return 0;
  7866. }
  7867. static int Polycode_MeshGeometry_addBoneAssignments(lua_State *L) {
  7868. luaL_checktype(L, 1, LUA_TUSERDATA);
  7869. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7870. luaL_checktype(L, 2, LUA_TNUMBER);
  7871. Number b1Weight = lua_tonumber(L, 2);
  7872. luaL_checktype(L, 3, LUA_TNUMBER);
  7873. int b1Index = lua_tointeger(L, 3);
  7874. luaL_checktype(L, 4, LUA_TNUMBER);
  7875. Number b2Weight = lua_tonumber(L, 4);
  7876. luaL_checktype(L, 5, LUA_TNUMBER);
  7877. int b2Index = lua_tointeger(L, 5);
  7878. luaL_checktype(L, 6, LUA_TNUMBER);
  7879. Number b3Weight = lua_tonumber(L, 6);
  7880. luaL_checktype(L, 7, LUA_TNUMBER);
  7881. int b3Index = lua_tointeger(L, 7);
  7882. luaL_checktype(L, 8, LUA_TNUMBER);
  7883. Number b4Weight = lua_tonumber(L, 8);
  7884. luaL_checktype(L, 9, LUA_TNUMBER);
  7885. int b4Index = lua_tointeger(L, 9);
  7886. inst->addBoneAssignments(b1Weight, b1Index, b2Weight, b2Index, b3Weight, b3Index, b4Weight, b4Index);
  7887. return 0;
  7888. }
  7889. static int Polycode_MeshGeometry_addColor(lua_State *L) {
  7890. luaL_checktype(L, 1, LUA_TUSERDATA);
  7891. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7892. luaL_checktype(L, 2, LUA_TNUMBER);
  7893. Number r = lua_tonumber(L, 2);
  7894. luaL_checktype(L, 3, LUA_TNUMBER);
  7895. Number g = lua_tonumber(L, 3);
  7896. luaL_checktype(L, 4, LUA_TNUMBER);
  7897. Number b = lua_tonumber(L, 4);
  7898. luaL_checktype(L, 5, LUA_TNUMBER);
  7899. Number a = lua_tonumber(L, 5);
  7900. inst->addColor(r, g, b, a);
  7901. return 0;
  7902. }
  7903. static int Polycode_MeshGeometry_getVertexPosition(lua_State *L) {
  7904. luaL_checktype(L, 1, LUA_TUSERDATA);
  7905. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7906. luaL_checktype(L, 2, LUA_TNUMBER);
  7907. int vertexOffset = lua_tointeger(L, 2);
  7908. Vector3 *retInst = new Vector3();
  7909. *retInst = inst->getVertexPosition(vertexOffset);
  7910. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7911. luaL_getmetatable(L, "Polycode.Vector3");
  7912. lua_setmetatable(L, -2);
  7913. *userdataPtr = (PolyBase*)retInst;
  7914. return 1;
  7915. }
  7916. static int Polycode_MeshGeometry_getVertexPositionAtIndex(lua_State *L) {
  7917. luaL_checktype(L, 1, LUA_TUSERDATA);
  7918. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7919. luaL_checktype(L, 2, LUA_TNUMBER);
  7920. int index = lua_tointeger(L, 2);
  7921. Vector3 *retInst = new Vector3();
  7922. *retInst = inst->getVertexPositionAtIndex(index);
  7923. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7924. luaL_getmetatable(L, "Polycode.Vector3");
  7925. lua_setmetatable(L, -2);
  7926. *userdataPtr = (PolyBase*)retInst;
  7927. return 1;
  7928. }
  7929. static int Polycode_MeshGeometry_getVertexTexCoord(lua_State *L) {
  7930. luaL_checktype(L, 1, LUA_TUSERDATA);
  7931. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7932. luaL_checktype(L, 2, LUA_TNUMBER);
  7933. int vertexOffset = lua_tointeger(L, 2);
  7934. Vector2 *retInst = new Vector2();
  7935. *retInst = inst->getVertexTexCoord(vertexOffset);
  7936. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7937. luaL_getmetatable(L, "Polycode.Vector2");
  7938. lua_setmetatable(L, -2);
  7939. *userdataPtr = (PolyBase*)retInst;
  7940. return 1;
  7941. }
  7942. static int Polycode_MeshGeometry_getVertexTexCoordAtIndex(lua_State *L) {
  7943. luaL_checktype(L, 1, LUA_TUSERDATA);
  7944. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7945. luaL_checktype(L, 2, LUA_TNUMBER);
  7946. int index = lua_tointeger(L, 2);
  7947. Vector2 *retInst = new Vector2();
  7948. *retInst = inst->getVertexTexCoordAtIndex(index);
  7949. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7950. luaL_getmetatable(L, "Polycode.Vector2");
  7951. lua_setmetatable(L, -2);
  7952. *userdataPtr = (PolyBase*)retInst;
  7953. return 1;
  7954. }
  7955. static int Polycode_MeshGeometry_Copy(lua_State *L) {
  7956. luaL_checktype(L, 1, LUA_TUSERDATA);
  7957. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7958. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  7959. if(ptrRetVal == NULL) {
  7960. lua_pushnil(L);
  7961. } else {
  7962. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7963. *userdataPtr = ptrRetVal;
  7964. }
  7965. return 1;
  7966. }
  7967. static int Polycode_MeshGeometry_getRadius(lua_State *L) {
  7968. luaL_checktype(L, 1, LUA_TUSERDATA);
  7969. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7970. lua_pushnumber(L, inst->getRadius());
  7971. return 1;
  7972. }
  7973. static int Polycode_MeshGeometry_calculateNormals(lua_State *L) {
  7974. luaL_checktype(L, 1, LUA_TUSERDATA);
  7975. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7976. inst->calculateNormals();
  7977. return 0;
  7978. }
  7979. static int Polycode_MeshGeometry_calculateTangents(lua_State *L) {
  7980. luaL_checktype(L, 1, LUA_TUSERDATA);
  7981. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7982. inst->calculateTangents();
  7983. return 0;
  7984. }
  7985. static int Polycode_MeshGeometry_getMeshType(lua_State *L) {
  7986. luaL_checktype(L, 1, LUA_TUSERDATA);
  7987. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7988. lua_pushinteger(L, inst->getMeshType());
  7989. return 1;
  7990. }
  7991. static int Polycode_MeshGeometry_setMeshType(lua_State *L) {
  7992. luaL_checktype(L, 1, LUA_TUSERDATA);
  7993. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  7994. luaL_checktype(L, 2, LUA_TNUMBER);
  7995. int newType = lua_tointeger(L, 2);
  7996. inst->setMeshType(newType);
  7997. return 0;
  7998. }
  7999. static int Polycode_MeshGeometry_getIndexGroupSize(lua_State *L) {
  8000. luaL_checktype(L, 1, LUA_TUSERDATA);
  8001. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8002. lua_pushinteger(L, inst->getIndexGroupSize());
  8003. return 1;
  8004. }
  8005. static int Polycode_MeshGeometry_calculateBBox(lua_State *L) {
  8006. luaL_checktype(L, 1, LUA_TUSERDATA);
  8007. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8008. Vector3 *retInst = new Vector3();
  8009. *retInst = inst->calculateBBox();
  8010. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8011. luaL_getmetatable(L, "Polycode.Vector3");
  8012. lua_setmetatable(L, -2);
  8013. *userdataPtr = (PolyBase*)retInst;
  8014. return 1;
  8015. }
  8016. static int Polycode_MeshGeometry_addIndexedFace(lua_State *L) {
  8017. luaL_checktype(L, 1, LUA_TUSERDATA);
  8018. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8019. luaL_checktype(L, 2, LUA_TNUMBER);
  8020. int i1 = lua_tointeger(L, 2);
  8021. luaL_checktype(L, 3, LUA_TNUMBER);
  8022. int i2 = lua_tointeger(L, 3);
  8023. inst->addIndexedFace(i1, i2);
  8024. return 0;
  8025. }
  8026. static int Polycode_MeshGeometry_addIndex(lua_State *L) {
  8027. luaL_checktype(L, 1, LUA_TUSERDATA);
  8028. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8029. luaL_checktype(L, 2, LUA_TNUMBER);
  8030. int index = lua_tointeger(L, 2);
  8031. inst->addIndex(index);
  8032. return 0;
  8033. }
  8034. static int Polycode_MeshGeometry_removeVertexRange(lua_State *L) {
  8035. luaL_checktype(L, 1, LUA_TUSERDATA);
  8036. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8037. luaL_checktype(L, 2, LUA_TNUMBER);
  8038. int beginRemoveVertex = lua_tointeger(L, 2);
  8039. int vertexRemovalCount;
  8040. if(lua_isnumber(L, 3)) {
  8041. vertexRemovalCount = lua_tointeger(L, 3);
  8042. } else {
  8043. vertexRemovalCount = 3;
  8044. }
  8045. inst->removeVertexRange(beginRemoveVertex, vertexRemovalCount);
  8046. return 0;
  8047. }
  8048. static int Polycode_MeshGeometry_removeFace(lua_State *L) {
  8049. luaL_checktype(L, 1, LUA_TUSERDATA);
  8050. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8051. luaL_checktype(L, 2, LUA_TNUMBER);
  8052. int faceIndex = lua_tointeger(L, 2);
  8053. inst->removeFace(faceIndex);
  8054. return 0;
  8055. }
  8056. static int Polycode_MeshGeometry_removeUnusedVertices(lua_State *L) {
  8057. luaL_checktype(L, 1, LUA_TUSERDATA);
  8058. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8059. lua_pushinteger(L, inst->removeUnusedVertices());
  8060. return 1;
  8061. }
  8062. static int Polycode_MeshGeometry_getIndexCount(lua_State *L) {
  8063. luaL_checktype(L, 1, LUA_TUSERDATA);
  8064. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8065. lua_pushinteger(L, inst->getIndexCount());
  8066. return 1;
  8067. }
  8068. static int Polycode_MeshGeometry_subdivideToRadius(lua_State *L) {
  8069. luaL_checktype(L, 1, LUA_TUSERDATA);
  8070. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8071. luaL_checktype(L, 2, LUA_TNUMBER);
  8072. Number radius = lua_tonumber(L, 2);
  8073. luaL_checktype(L, 3, LUA_TNUMBER);
  8074. int subdivisions = lua_tointeger(L, 3);
  8075. inst->subdivideToRadius(radius, subdivisions);
  8076. return 0;
  8077. }
  8078. static int Polycode_MeshGeometry_calculateFaceTangent(lua_State *L) {
  8079. luaL_checktype(L, 1, LUA_TUSERDATA);
  8080. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  8081. luaL_checktype(L, 2, LUA_TUSERDATA);
  8082. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8083. luaL_checktype(L, 3, LUA_TUSERDATA);
  8084. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  8085. luaL_checktype(L, 4, LUA_TUSERDATA);
  8086. Vector2 texCoord1 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 4));
  8087. luaL_checktype(L, 5, LUA_TUSERDATA);
  8088. Vector2 texCoord2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 5));
  8089. luaL_checktype(L, 6, LUA_TUSERDATA);
  8090. Vector2 texCoord3 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 6));
  8091. Vector3 *retInst = new Vector3();
  8092. *retInst = MeshGeometry::calculateFaceTangent(v1, v2, v3, texCoord1, texCoord2, texCoord3);
  8093. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8094. luaL_getmetatable(L, "Polycode.Vector3");
  8095. lua_setmetatable(L, -2);
  8096. *userdataPtr = (PolyBase*)retInst;
  8097. return 1;
  8098. }
  8099. static int Polycode_MeshGeometry_saveAsOBJ(lua_State *L) {
  8100. luaL_checktype(L, 1, LUA_TUSERDATA);
  8101. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8102. luaL_checktype(L, 2, LUA_TSTRING);
  8103. String fileName = String(lua_tostring(L, 2));
  8104. inst->saveAsOBJ(fileName);
  8105. return 0;
  8106. }
  8107. static int Polycode_MeshGeometry_normalizeBoneWeights(lua_State *L) {
  8108. luaL_checktype(L, 1, LUA_TUSERDATA);
  8109. MeshGeometry *inst = (MeshGeometry*) *((PolyBase**)lua_touserdata(L, 1));
  8110. inst->normalizeBoneWeights();
  8111. return 0;
  8112. }
  8113. static int Polycode_delete_MeshGeometry(lua_State *L) {
  8114. luaL_checktype(L, 1, LUA_TUSERDATA);
  8115. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8116. delete ((MeshGeometry*) *inst);
  8117. *inst = NULL;
  8118. return 0;
  8119. }
  8120. static int Polycode_ObjectEntry_get_type(lua_State *L) {
  8121. luaL_checktype(L, 1, LUA_TUSERDATA);
  8122. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8123. lua_pushinteger(L, inst->type);
  8124. return 1;
  8125. }
  8126. static int Polycode_ObjectEntry_get_name(lua_State *L) {
  8127. luaL_checktype(L, 1, LUA_TUSERDATA);
  8128. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8129. lua_pushstring(L, inst->name.c_str());
  8130. return 1;
  8131. }
  8132. static int Polycode_ObjectEntry_get_NumberVal(lua_State *L) {
  8133. luaL_checktype(L, 1, LUA_TUSERDATA);
  8134. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8135. lua_pushnumber(L, inst->NumberVal);
  8136. return 1;
  8137. }
  8138. static int Polycode_ObjectEntry_get_intVal(lua_State *L) {
  8139. luaL_checktype(L, 1, LUA_TUSERDATA);
  8140. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8141. lua_pushinteger(L, inst->intVal);
  8142. return 1;
  8143. }
  8144. static int Polycode_ObjectEntry_get_stringVal(lua_State *L) {
  8145. luaL_checktype(L, 1, LUA_TUSERDATA);
  8146. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8147. lua_pushstring(L, inst->stringVal.c_str());
  8148. return 1;
  8149. }
  8150. static int Polycode_ObjectEntry_get_boolVal(lua_State *L) {
  8151. luaL_checktype(L, 1, LUA_TUSERDATA);
  8152. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8153. lua_pushboolean(L, inst->boolVal);
  8154. return 1;
  8155. }
  8156. static int Polycode_ObjectEntry_get_length(lua_State *L) {
  8157. luaL_checktype(L, 1, LUA_TUSERDATA);
  8158. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8159. lua_pushinteger(L, inst->length);
  8160. return 1;
  8161. }
  8162. static int Polycode_ObjectEntry_set_type(lua_State *L) {
  8163. luaL_checktype(L, 1, LUA_TUSERDATA);
  8164. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8165. int param = lua_tointeger(L, 2);
  8166. inst->type = param;
  8167. return 0;
  8168. }
  8169. static int Polycode_ObjectEntry_set_name(lua_State *L) {
  8170. luaL_checktype(L, 1, LUA_TUSERDATA);
  8171. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8172. String param = lua_tostring(L, 2);
  8173. inst->name = param;
  8174. return 0;
  8175. }
  8176. static int Polycode_ObjectEntry_set_NumberVal(lua_State *L) {
  8177. luaL_checktype(L, 1, LUA_TUSERDATA);
  8178. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8179. Number param = lua_tonumber(L, 2);
  8180. inst->NumberVal = param;
  8181. return 0;
  8182. }
  8183. static int Polycode_ObjectEntry_set_intVal(lua_State *L) {
  8184. luaL_checktype(L, 1, LUA_TUSERDATA);
  8185. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8186. int param = lua_tointeger(L, 2);
  8187. inst->intVal = param;
  8188. return 0;
  8189. }
  8190. static int Polycode_ObjectEntry_set_stringVal(lua_State *L) {
  8191. luaL_checktype(L, 1, LUA_TUSERDATA);
  8192. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8193. String param = lua_tostring(L, 2);
  8194. inst->stringVal = param;
  8195. return 0;
  8196. }
  8197. static int Polycode_ObjectEntry_set_boolVal(lua_State *L) {
  8198. luaL_checktype(L, 1, LUA_TUSERDATA);
  8199. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8200. bool param = lua_toboolean(L, 2) != 0;
  8201. inst->boolVal = param;
  8202. return 0;
  8203. }
  8204. static int Polycode_ObjectEntry_set_length(lua_State *L) {
  8205. luaL_checktype(L, 1, LUA_TUSERDATA);
  8206. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8207. int param = lua_tointeger(L, 2);
  8208. inst->length = param;
  8209. return 0;
  8210. }
  8211. static int Polycode_ObjectEntry(lua_State *L) {
  8212. ObjectEntry *inst = new ObjectEntry();
  8213. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8214. *userdataPtr = (PolyBase*)inst;
  8215. luaL_getmetatable(L, "Polycode.ObjectEntry");
  8216. lua_setmetatable(L, -2);
  8217. return 1;
  8218. }
  8219. static int Polycode_ObjectEntry_readNumber(lua_State *L) {
  8220. luaL_checktype(L, 1, LUA_TUSERDATA);
  8221. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8222. luaL_checktype(L, 2, LUA_TSTRING);
  8223. String key = String(lua_tostring(L, 2));
  8224. luaL_checktype(L, 3, LUA_TUSERDATA);
  8225. Number* out = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  8226. lua_pushboolean(L, inst->readNumber(key, out));
  8227. return 1;
  8228. }
  8229. static int Polycode_ObjectEntry_readString(lua_State *L) {
  8230. luaL_checktype(L, 1, LUA_TUSERDATA);
  8231. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8232. luaL_checktype(L, 2, LUA_TSTRING);
  8233. String key = String(lua_tostring(L, 2));
  8234. luaL_checktype(L, 3, LUA_TUSERDATA);
  8235. String* out = (String*) *((PolyBase**)lua_touserdata(L, 3));
  8236. lua_pushboolean(L, inst->readString(key, out));
  8237. return 1;
  8238. }
  8239. static int Polycode_ObjectEntry_readBool(lua_State *L) {
  8240. luaL_checktype(L, 1, LUA_TUSERDATA);
  8241. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8242. luaL_checktype(L, 2, LUA_TSTRING);
  8243. String key = String(lua_tostring(L, 2));
  8244. luaL_checktype(L, 3, LUA_TUSERDATA);
  8245. bool* out = (bool*) *((PolyBase**)lua_touserdata(L, 3));
  8246. lua_pushboolean(L, inst->readBool(key, out));
  8247. return 1;
  8248. }
  8249. static int Polycode_ObjectEntry_addChild(lua_State *L) {
  8250. luaL_checktype(L, 1, LUA_TUSERDATA);
  8251. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8252. luaL_checktype(L, 2, LUA_TSTRING);
  8253. String name = String(lua_tostring(L, 2));
  8254. PolyBase *ptrRetVal = (PolyBase*)inst->addChild(name);
  8255. if(ptrRetVal == NULL) {
  8256. lua_pushnil(L);
  8257. } else {
  8258. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8259. *userdataPtr = ptrRetVal;
  8260. }
  8261. return 1;
  8262. }
  8263. static int Polycode_ObjectEntry_getTypedName(lua_State *L) {
  8264. luaL_checktype(L, 1, LUA_TUSERDATA);
  8265. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8266. lua_pushstring(L, inst->getTypedName().c_str());
  8267. return 1;
  8268. }
  8269. static int Polycode_ObjectEntry_setTypedName(lua_State *L) {
  8270. luaL_checktype(L, 1, LUA_TUSERDATA);
  8271. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8272. luaL_checktype(L, 2, LUA_TSTRING);
  8273. String str = String(lua_tostring(L, 2));
  8274. inst->setTypedName(str);
  8275. return 0;
  8276. }
  8277. static int Polycode_ObjectEntry_Clear(lua_State *L) {
  8278. luaL_checktype(L, 1, LUA_TUSERDATA);
  8279. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8280. inst->Clear();
  8281. return 0;
  8282. }
  8283. static int Polycode_delete_ObjectEntry(lua_State *L) {
  8284. luaL_checktype(L, 1, LUA_TUSERDATA);
  8285. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8286. delete ((ObjectEntry*) *inst);
  8287. *inst = NULL;
  8288. return 0;
  8289. }
  8290. static int Polycode_BinaryObjectReader_get_success(lua_State *L) {
  8291. luaL_checktype(L, 1, LUA_TUSERDATA);
  8292. BinaryObjectReader *inst = (BinaryObjectReader*) *((PolyBase**)lua_touserdata(L, 1));
  8293. lua_pushboolean(L, inst->success);
  8294. return 1;
  8295. }
  8296. static int Polycode_BinaryObjectReader_set_success(lua_State *L) {
  8297. luaL_checktype(L, 1, LUA_TUSERDATA);
  8298. BinaryObjectReader *inst = (BinaryObjectReader*) *((PolyBase**)lua_touserdata(L, 1));
  8299. bool param = lua_toboolean(L, 2) != 0;
  8300. inst->success = param;
  8301. return 0;
  8302. }
  8303. static int Polycode_BinaryObjectReader(lua_State *L) {
  8304. luaL_checktype(L, 1, LUA_TSTRING);
  8305. String fileName = String(lua_tostring(L, 1));
  8306. luaL_checktype(L, 2, LUA_TUSERDATA);
  8307. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 2));
  8308. BinaryObjectReader *inst = new BinaryObjectReader(fileName, object);
  8309. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8310. *userdataPtr = (PolyBase*)inst;
  8311. luaL_getmetatable(L, "Polycode.BinaryObjectReader");
  8312. lua_setmetatable(L, -2);
  8313. return 1;
  8314. }
  8315. static int Polycode_delete_BinaryObjectReader(lua_State *L) {
  8316. luaL_checktype(L, 1, LUA_TUSERDATA);
  8317. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8318. delete ((BinaryObjectReader*) *inst);
  8319. *inst = NULL;
  8320. return 0;
  8321. }
  8322. static int Polycode_BinaryObjectWriter(lua_State *L) {
  8323. luaL_checktype(L, 1, LUA_TUSERDATA);
  8324. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 1));
  8325. BinaryObjectWriter *inst = new BinaryObjectWriter(object);
  8326. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8327. *userdataPtr = (PolyBase*)inst;
  8328. luaL_getmetatable(L, "Polycode.BinaryObjectWriter");
  8329. lua_setmetatable(L, -2);
  8330. return 1;
  8331. }
  8332. static int Polycode_BinaryObjectWriter_parseKeysFromObjectEntry(lua_State *L) {
  8333. luaL_checktype(L, 1, LUA_TUSERDATA);
  8334. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8335. luaL_checktype(L, 2, LUA_TUSERDATA);
  8336. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8337. inst->parseKeysFromObjectEntry(entry);
  8338. return 0;
  8339. }
  8340. static int Polycode_BinaryObjectWriter_writeEntryToFile(lua_State *L) {
  8341. luaL_checktype(L, 1, LUA_TUSERDATA);
  8342. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8343. luaL_checktype(L, 2, LUA_TUSERDATA);
  8344. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8345. inst->writeEntryToFile(entry);
  8346. return 0;
  8347. }
  8348. static int Polycode_BinaryObjectWriter_addKey(lua_State *L) {
  8349. luaL_checktype(L, 1, LUA_TUSERDATA);
  8350. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8351. luaL_checktype(L, 2, LUA_TSTRING);
  8352. String key = String(lua_tostring(L, 2));
  8353. lua_pushinteger(L, inst->addKey(key));
  8354. return 1;
  8355. }
  8356. static int Polycode_BinaryObjectWriter_getKeyIndex(lua_State *L) {
  8357. luaL_checktype(L, 1, LUA_TUSERDATA);
  8358. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8359. luaL_checktype(L, 2, LUA_TSTRING);
  8360. String key = String(lua_tostring(L, 2));
  8361. lua_pushinteger(L, inst->getKeyIndex(key));
  8362. return 1;
  8363. }
  8364. static int Polycode_BinaryObjectWriter_writeToFile(lua_State *L) {
  8365. luaL_checktype(L, 1, LUA_TUSERDATA);
  8366. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8367. luaL_checktype(L, 2, LUA_TSTRING);
  8368. String fileName = String(lua_tostring(L, 2));
  8369. lua_pushboolean(L, inst->writeToFile(fileName));
  8370. return 1;
  8371. }
  8372. static int Polycode_delete_BinaryObjectWriter(lua_State *L) {
  8373. luaL_checktype(L, 1, LUA_TUSERDATA);
  8374. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8375. delete ((BinaryObjectWriter*) *inst);
  8376. *inst = NULL;
  8377. return 0;
  8378. }
  8379. static int Polycode_ShaderPlatformData_get_shaderID(lua_State *L) {
  8380. luaL_checktype(L, 1, LUA_TUSERDATA);
  8381. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8382. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8383. *userdataPtr = (PolyBase*)&inst->shaderID;
  8384. return 1;
  8385. }
  8386. static int Polycode_ShaderPlatformData_get_vertexProgramID(lua_State *L) {
  8387. luaL_checktype(L, 1, LUA_TUSERDATA);
  8388. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8389. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8390. *userdataPtr = (PolyBase*)&inst->vertexProgramID;
  8391. return 1;
  8392. }
  8393. static int Polycode_ShaderPlatformData_get_fragmentProgramID(lua_State *L) {
  8394. luaL_checktype(L, 1, LUA_TUSERDATA);
  8395. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8396. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8397. *userdataPtr = (PolyBase*)&inst->fragmentProgramID;
  8398. return 1;
  8399. }
  8400. static int Polycode_ShaderPlatformData_set_shaderID(lua_State *L) {
  8401. luaL_checktype(L, 1, LUA_TUSERDATA);
  8402. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8403. luaL_checktype(L, 2, LUA_TUSERDATA);
  8404. GLuint *argInst = (GLuint*) *((PolyBase**)lua_touserdata(L, 2));
  8405. inst->shaderID = *argInst;
  8406. return 0;
  8407. }
  8408. static int Polycode_ShaderPlatformData_set_vertexProgramID(lua_State *L) {
  8409. luaL_checktype(L, 1, LUA_TUSERDATA);
  8410. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8411. luaL_checktype(L, 2, LUA_TUSERDATA);
  8412. GLuint *argInst = (GLuint*) *((PolyBase**)lua_touserdata(L, 2));
  8413. inst->vertexProgramID = *argInst;
  8414. return 0;
  8415. }
  8416. static int Polycode_ShaderPlatformData_set_fragmentProgramID(lua_State *L) {
  8417. luaL_checktype(L, 1, LUA_TUSERDATA);
  8418. ShaderPlatformData *inst = (ShaderPlatformData*) *((PolyBase**)lua_touserdata(L, 1));
  8419. luaL_checktype(L, 2, LUA_TUSERDATA);
  8420. GLuint *argInst = (GLuint*) *((PolyBase**)lua_touserdata(L, 2));
  8421. inst->fragmentProgramID = *argInst;
  8422. return 0;
  8423. }
  8424. static int Polycode_delete_ShaderPlatformData(lua_State *L) {
  8425. luaL_checktype(L, 1, LUA_TUSERDATA);
  8426. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8427. delete ((ShaderPlatformData*) *inst);
  8428. *inst = NULL;
  8429. return 0;
  8430. }
  8431. static int Polycode_SceneParticle_get_lifetime(lua_State *L) {
  8432. luaL_checktype(L, 1, LUA_TUSERDATA);
  8433. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8434. lua_pushnumber(L, inst->lifetime);
  8435. return 1;
  8436. }
  8437. static int Polycode_SceneParticle_get_position(lua_State *L) {
  8438. luaL_checktype(L, 1, LUA_TUSERDATA);
  8439. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8440. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8441. *userdataPtr = (PolyBase*)&inst->position;
  8442. return 1;
  8443. }
  8444. static int Polycode_SceneParticle_get_velocity(lua_State *L) {
  8445. luaL_checktype(L, 1, LUA_TUSERDATA);
  8446. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8447. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8448. *userdataPtr = (PolyBase*)&inst->velocity;
  8449. return 1;
  8450. }
  8451. static int Polycode_SceneParticle_get_perlinPos(lua_State *L) {
  8452. luaL_checktype(L, 1, LUA_TUSERDATA);
  8453. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8454. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8455. *userdataPtr = (PolyBase*)&inst->perlinPos;
  8456. return 1;
  8457. }
  8458. static int Polycode_SceneParticle_get_rotation(lua_State *L) {
  8459. luaL_checktype(L, 1, LUA_TUSERDATA);
  8460. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8461. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8462. *userdataPtr = (PolyBase*)&inst->rotation;
  8463. return 1;
  8464. }
  8465. static int Polycode_SceneParticle_get_brightnessDeviation(lua_State *L) {
  8466. luaL_checktype(L, 1, LUA_TUSERDATA);
  8467. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8468. lua_pushnumber(L, inst->brightnessDeviation);
  8469. return 1;
  8470. }
  8471. static int Polycode_SceneParticle_get_scale(lua_State *L) {
  8472. luaL_checktype(L, 1, LUA_TUSERDATA);
  8473. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8474. lua_pushnumber(L, inst->scale);
  8475. return 1;
  8476. }
  8477. static int Polycode_SceneParticle_get_color(lua_State *L) {
  8478. luaL_checktype(L, 1, LUA_TUSERDATA);
  8479. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8480. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8481. *userdataPtr = (PolyBase*)&inst->color;
  8482. return 1;
  8483. }
  8484. static int Polycode_SceneParticle_get_varianceIndex(lua_State *L) {
  8485. luaL_checktype(L, 1, LUA_TUSERDATA);
  8486. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8487. lua_pushinteger(L, inst->varianceIndex);
  8488. return 1;
  8489. }
  8490. static int Polycode_SceneParticle_set_lifetime(lua_State *L) {
  8491. luaL_checktype(L, 1, LUA_TUSERDATA);
  8492. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8493. Number param = lua_tonumber(L, 2);
  8494. inst->lifetime = param;
  8495. return 0;
  8496. }
  8497. static int Polycode_SceneParticle_set_position(lua_State *L) {
  8498. luaL_checktype(L, 1, LUA_TUSERDATA);
  8499. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8500. luaL_checktype(L, 2, LUA_TUSERDATA);
  8501. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8502. inst->position = *argInst;
  8503. return 0;
  8504. }
  8505. static int Polycode_SceneParticle_set_velocity(lua_State *L) {
  8506. luaL_checktype(L, 1, LUA_TUSERDATA);
  8507. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8508. luaL_checktype(L, 2, LUA_TUSERDATA);
  8509. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8510. inst->velocity = *argInst;
  8511. return 0;
  8512. }
  8513. static int Polycode_SceneParticle_set_perlinPos(lua_State *L) {
  8514. luaL_checktype(L, 1, LUA_TUSERDATA);
  8515. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8516. luaL_checktype(L, 2, LUA_TUSERDATA);
  8517. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8518. inst->perlinPos = *argInst;
  8519. return 0;
  8520. }
  8521. static int Polycode_SceneParticle_set_rotation(lua_State *L) {
  8522. luaL_checktype(L, 1, LUA_TUSERDATA);
  8523. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8524. luaL_checktype(L, 2, LUA_TUSERDATA);
  8525. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8526. inst->rotation = *argInst;
  8527. return 0;
  8528. }
  8529. static int Polycode_SceneParticle_set_brightnessDeviation(lua_State *L) {
  8530. luaL_checktype(L, 1, LUA_TUSERDATA);
  8531. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8532. Number param = lua_tonumber(L, 2);
  8533. inst->brightnessDeviation = param;
  8534. return 0;
  8535. }
  8536. static int Polycode_SceneParticle_set_scale(lua_State *L) {
  8537. luaL_checktype(L, 1, LUA_TUSERDATA);
  8538. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8539. Number param = lua_tonumber(L, 2);
  8540. inst->scale = param;
  8541. return 0;
  8542. }
  8543. static int Polycode_SceneParticle_set_color(lua_State *L) {
  8544. luaL_checktype(L, 1, LUA_TUSERDATA);
  8545. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8546. luaL_checktype(L, 2, LUA_TUSERDATA);
  8547. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  8548. inst->color = *argInst;
  8549. return 0;
  8550. }
  8551. static int Polycode_SceneParticle_set_varianceIndex(lua_State *L) {
  8552. luaL_checktype(L, 1, LUA_TUSERDATA);
  8553. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8554. int param = lua_tointeger(L, 2);
  8555. inst->varianceIndex = param;
  8556. return 0;
  8557. }
  8558. static int Polycode_delete_SceneParticle(lua_State *L) {
  8559. luaL_checktype(L, 1, LUA_TUSERDATA);
  8560. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8561. delete ((SceneParticle*) *inst);
  8562. *inst = NULL;
  8563. return 0;
  8564. }
  8565. static int Polycode_SceneParticleEmitter_get_useScaleCurve(lua_State *L) {
  8566. luaL_checktype(L, 1, LUA_TUSERDATA);
  8567. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8568. lua_pushboolean(L, inst->useScaleCurve);
  8569. return 1;
  8570. }
  8571. static int Polycode_SceneParticleEmitter_get_scaleCurve(lua_State *L) {
  8572. luaL_checktype(L, 1, LUA_TUSERDATA);
  8573. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8574. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8575. *userdataPtr = (PolyBase*)&inst->scaleCurve;
  8576. return 1;
  8577. }
  8578. static int Polycode_SceneParticleEmitter_get_useColorCurves(lua_State *L) {
  8579. luaL_checktype(L, 1, LUA_TUSERDATA);
  8580. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8581. lua_pushboolean(L, inst->useColorCurves);
  8582. return 1;
  8583. }
  8584. static int Polycode_SceneParticleEmitter_get_colorCurveR(lua_State *L) {
  8585. luaL_checktype(L, 1, LUA_TUSERDATA);
  8586. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8587. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8588. *userdataPtr = (PolyBase*)&inst->colorCurveR;
  8589. return 1;
  8590. }
  8591. static int Polycode_SceneParticleEmitter_get_colorCurveG(lua_State *L) {
  8592. luaL_checktype(L, 1, LUA_TUSERDATA);
  8593. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8594. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8595. *userdataPtr = (PolyBase*)&inst->colorCurveG;
  8596. return 1;
  8597. }
  8598. static int Polycode_SceneParticleEmitter_get_colorCurveB(lua_State *L) {
  8599. luaL_checktype(L, 1, LUA_TUSERDATA);
  8600. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8601. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8602. *userdataPtr = (PolyBase*)&inst->colorCurveB;
  8603. return 1;
  8604. }
  8605. static int Polycode_SceneParticleEmitter_get_colorCurveA(lua_State *L) {
  8606. luaL_checktype(L, 1, LUA_TUSERDATA);
  8607. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8608. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8609. *userdataPtr = (PolyBase*)&inst->colorCurveA;
  8610. return 1;
  8611. }
  8612. static int Polycode_SceneParticleEmitter_get_colorDeviation(lua_State *L) {
  8613. luaL_checktype(L, 1, LUA_TUSERDATA);
  8614. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8615. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8616. *userdataPtr = (PolyBase*)&inst->colorDeviation;
  8617. return 1;
  8618. }
  8619. static int Polycode_SceneParticleEmitter_set_useScaleCurve(lua_State *L) {
  8620. luaL_checktype(L, 1, LUA_TUSERDATA);
  8621. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8622. bool param = lua_toboolean(L, 2) != 0;
  8623. inst->useScaleCurve = param;
  8624. return 0;
  8625. }
  8626. static int Polycode_SceneParticleEmitter_set_scaleCurve(lua_State *L) {
  8627. luaL_checktype(L, 1, LUA_TUSERDATA);
  8628. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8629. luaL_checktype(L, 2, LUA_TUSERDATA);
  8630. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  8631. inst->scaleCurve = *argInst;
  8632. return 0;
  8633. }
  8634. static int Polycode_SceneParticleEmitter_set_useColorCurves(lua_State *L) {
  8635. luaL_checktype(L, 1, LUA_TUSERDATA);
  8636. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8637. bool param = lua_toboolean(L, 2) != 0;
  8638. inst->useColorCurves = param;
  8639. return 0;
  8640. }
  8641. static int Polycode_SceneParticleEmitter_set_colorCurveR(lua_State *L) {
  8642. luaL_checktype(L, 1, LUA_TUSERDATA);
  8643. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8644. luaL_checktype(L, 2, LUA_TUSERDATA);
  8645. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  8646. inst->colorCurveR = *argInst;
  8647. return 0;
  8648. }
  8649. static int Polycode_SceneParticleEmitter_set_colorCurveG(lua_State *L) {
  8650. luaL_checktype(L, 1, LUA_TUSERDATA);
  8651. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8652. luaL_checktype(L, 2, LUA_TUSERDATA);
  8653. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  8654. inst->colorCurveG = *argInst;
  8655. return 0;
  8656. }
  8657. static int Polycode_SceneParticleEmitter_set_colorCurveB(lua_State *L) {
  8658. luaL_checktype(L, 1, LUA_TUSERDATA);
  8659. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8660. luaL_checktype(L, 2, LUA_TUSERDATA);
  8661. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  8662. inst->colorCurveB = *argInst;
  8663. return 0;
  8664. }
  8665. static int Polycode_SceneParticleEmitter_set_colorCurveA(lua_State *L) {
  8666. luaL_checktype(L, 1, LUA_TUSERDATA);
  8667. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8668. luaL_checktype(L, 2, LUA_TUSERDATA);
  8669. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  8670. inst->colorCurveA = *argInst;
  8671. return 0;
  8672. }
  8673. static int Polycode_SceneParticleEmitter_set_colorDeviation(lua_State *L) {
  8674. luaL_checktype(L, 1, LUA_TUSERDATA);
  8675. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8676. luaL_checktype(L, 2, LUA_TUSERDATA);
  8677. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  8678. inst->colorDeviation = *argInst;
  8679. return 0;
  8680. }
  8681. static int Polycode_SceneParticleEmitter(lua_State *L) {
  8682. luaL_checktype(L, 1, LUA_TNUMBER);
  8683. int particleCount = lua_tointeger(L, 1);
  8684. luaL_checktype(L, 2, LUA_TNUMBER);
  8685. Number lifetime = lua_tonumber(L, 2);
  8686. luaL_checktype(L, 3, LUA_TNUMBER);
  8687. Number speed = lua_tonumber(L, 3);
  8688. SceneParticleEmitter *inst = new SceneParticleEmitter(particleCount, lifetime, speed);
  8689. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8690. *userdataPtr = (PolyBase*)inst;
  8691. luaL_getmetatable(L, "Polycode.SceneParticleEmitter");
  8692. lua_setmetatable(L, -2);
  8693. return 1;
  8694. }
  8695. static int Polycode_SceneParticleEmitter_setParticleCount(lua_State *L) {
  8696. luaL_checktype(L, 1, LUA_TUSERDATA);
  8697. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8698. luaL_checktype(L, 2, LUA_TNUMBER);
  8699. int newParticleCount = lua_tointeger(L, 2);
  8700. inst->setParticleCount(newParticleCount);
  8701. return 0;
  8702. }
  8703. static int Polycode_SceneParticleEmitter_getParticleCount(lua_State *L) {
  8704. luaL_checktype(L, 1, LUA_TUSERDATA);
  8705. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8706. lua_pushinteger(L, inst->getParticleCount());
  8707. return 1;
  8708. }
  8709. static int Polycode_SceneParticleEmitter_setParticleLifetime(lua_State *L) {
  8710. luaL_checktype(L, 1, LUA_TUSERDATA);
  8711. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8712. luaL_checktype(L, 2, LUA_TNUMBER);
  8713. Number lifetime = lua_tonumber(L, 2);
  8714. inst->setParticleLifetime(lifetime);
  8715. return 0;
  8716. }
  8717. static int Polycode_SceneParticleEmitter_getParticleLifetime(lua_State *L) {
  8718. luaL_checktype(L, 1, LUA_TUSERDATA);
  8719. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8720. lua_pushnumber(L, inst->getParticleLifetime());
  8721. return 1;
  8722. }
  8723. static int Polycode_SceneParticleEmitter_setDirectionDeviation(lua_State *L) {
  8724. luaL_checktype(L, 1, LUA_TUSERDATA);
  8725. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8726. luaL_checktype(L, 2, LUA_TUSERDATA);
  8727. Vector3 newDeviation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8728. inst->setDirectionDeviation(newDeviation);
  8729. return 0;
  8730. }
  8731. static int Polycode_SceneParticleEmitter_getDirectionDeviation(lua_State *L) {
  8732. luaL_checktype(L, 1, LUA_TUSERDATA);
  8733. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8734. Vector3 *retInst = new Vector3();
  8735. *retInst = inst->getDirectionDeviation();
  8736. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8737. luaL_getmetatable(L, "Polycode.Vector3");
  8738. lua_setmetatable(L, -2);
  8739. *userdataPtr = (PolyBase*)retInst;
  8740. return 1;
  8741. }
  8742. static int Polycode_SceneParticleEmitter_setEmitterSize(lua_State *L) {
  8743. luaL_checktype(L, 1, LUA_TUSERDATA);
  8744. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8745. luaL_checktype(L, 2, LUA_TUSERDATA);
  8746. Vector3 newSize = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8747. inst->setEmitterSize(newSize);
  8748. return 0;
  8749. }
  8750. static int Polycode_SceneParticleEmitter_getEmitterSize(lua_State *L) {
  8751. luaL_checktype(L, 1, LUA_TUSERDATA);
  8752. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8753. Vector3 *retInst = new Vector3();
  8754. *retInst = inst->getEmitterSize();
  8755. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8756. luaL_getmetatable(L, "Polycode.Vector3");
  8757. lua_setmetatable(L, -2);
  8758. *userdataPtr = (PolyBase*)retInst;
  8759. return 1;
  8760. }
  8761. static int Polycode_SceneParticleEmitter_setGravity(lua_State *L) {
  8762. luaL_checktype(L, 1, LUA_TUSERDATA);
  8763. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8764. luaL_checktype(L, 2, LUA_TUSERDATA);
  8765. Vector3 newGravity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8766. inst->setGravity(newGravity);
  8767. return 0;
  8768. }
  8769. static int Polycode_SceneParticleEmitter_getGravity(lua_State *L) {
  8770. luaL_checktype(L, 1, LUA_TUSERDATA);
  8771. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8772. Vector3 *retInst = new Vector3();
  8773. *retInst = inst->getGravity();
  8774. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8775. luaL_getmetatable(L, "Polycode.Vector3");
  8776. lua_setmetatable(L, -2);
  8777. *userdataPtr = (PolyBase*)retInst;
  8778. return 1;
  8779. }
  8780. static int Polycode_SceneParticleEmitter_fixedUpdate(lua_State *L) {
  8781. luaL_checktype(L, 1, LUA_TUSERDATA);
  8782. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8783. inst->fixedUpdate();
  8784. return 0;
  8785. }
  8786. static int Polycode_SceneParticleEmitter_Render(lua_State *L) {
  8787. luaL_checktype(L, 1, LUA_TUSERDATA);
  8788. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8789. luaL_checktype(L, 2, LUA_TUSERDATA);
  8790. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  8791. inst->Render(buffer);
  8792. return 0;
  8793. }
  8794. static int Polycode_SceneParticleEmitter_updateParticles(lua_State *L) {
  8795. luaL_checktype(L, 1, LUA_TUSERDATA);
  8796. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8797. inst->updateParticles();
  8798. return 0;
  8799. }
  8800. static int Polycode_SceneParticleEmitter_rebuildParticles(lua_State *L) {
  8801. luaL_checktype(L, 1, LUA_TUSERDATA);
  8802. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8803. luaL_checktype(L, 2, LUA_TUSERDATA);
  8804. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  8805. inst->rebuildParticles(buffer);
  8806. return 0;
  8807. }
  8808. static int Polycode_SceneParticleEmitter_triggerParticles(lua_State *L) {
  8809. luaL_checktype(L, 1, LUA_TUSERDATA);
  8810. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8811. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8812. bool allAtOnce = lua_toboolean(L, 2) != 0;
  8813. inst->triggerParticles(allAtOnce);
  8814. return 0;
  8815. }
  8816. static int Polycode_SceneParticleEmitter_enableParticleSystem(lua_State *L) {
  8817. luaL_checktype(L, 1, LUA_TUSERDATA);
  8818. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8819. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8820. bool val = lua_toboolean(L, 2) != 0;
  8821. inst->enableParticleSystem(val);
  8822. return 0;
  8823. }
  8824. static int Polycode_SceneParticleEmitter_setUseFloorPlane(lua_State *L) {
  8825. luaL_checktype(L, 1, LUA_TUSERDATA);
  8826. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8827. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8828. bool val = lua_toboolean(L, 2) != 0;
  8829. inst->setUseFloorPlane(val);
  8830. return 0;
  8831. }
  8832. static int Polycode_SceneParticleEmitter_setFloorPlaneOffset(lua_State *L) {
  8833. luaL_checktype(L, 1, LUA_TUSERDATA);
  8834. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8835. luaL_checktype(L, 2, LUA_TNUMBER);
  8836. Number floorPlaneOffset = lua_tonumber(L, 2);
  8837. inst->setFloorPlaneOffset(floorPlaneOffset);
  8838. return 0;
  8839. }
  8840. static int Polycode_SceneParticleEmitter_setFloorDamping(lua_State *L) {
  8841. luaL_checktype(L, 1, LUA_TUSERDATA);
  8842. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8843. luaL_checktype(L, 2, LUA_TNUMBER);
  8844. Number floorDamping = lua_tonumber(L, 2);
  8845. inst->setFloorDamping(floorDamping);
  8846. return 0;
  8847. }
  8848. static int Polycode_SceneParticleEmitter_setParticlesInWorldSpace(lua_State *L) {
  8849. luaL_checktype(L, 1, LUA_TUSERDATA);
  8850. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8851. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8852. bool val = lua_toboolean(L, 2) != 0;
  8853. inst->setParticlesInWorldSpace(val);
  8854. return 0;
  8855. }
  8856. static int Polycode_SceneParticleEmitter_getParticlesInWorldSpace(lua_State *L) {
  8857. luaL_checktype(L, 1, LUA_TUSERDATA);
  8858. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8859. lua_pushboolean(L, inst->getParticlesInWorldSpace());
  8860. return 1;
  8861. }
  8862. static int Polycode_SceneParticleEmitter_setPerlinEnabled(lua_State *L) {
  8863. luaL_checktype(L, 1, LUA_TUSERDATA);
  8864. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8865. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8866. bool val = lua_toboolean(L, 2) != 0;
  8867. inst->setPerlinEnabled(val);
  8868. return 0;
  8869. }
  8870. static int Polycode_SceneParticleEmitter_getPerlinEnabled(lua_State *L) {
  8871. luaL_checktype(L, 1, LUA_TUSERDATA);
  8872. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8873. lua_pushboolean(L, inst->getPerlinEnabled());
  8874. return 1;
  8875. }
  8876. static int Polycode_SceneParticleEmitter_getParticleSpeed(lua_State *L) {
  8877. luaL_checktype(L, 1, LUA_TUSERDATA);
  8878. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8879. lua_pushnumber(L, inst->getParticleSpeed());
  8880. return 1;
  8881. }
  8882. static int Polycode_SceneParticleEmitter_setParticleSpeed(lua_State *L) {
  8883. luaL_checktype(L, 1, LUA_TUSERDATA);
  8884. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8885. luaL_checktype(L, 2, LUA_TNUMBER);
  8886. Number speed = lua_tonumber(L, 2);
  8887. inst->setParticleSpeed(speed);
  8888. return 0;
  8889. }
  8890. static int Polycode_SceneParticleEmitter_setPerlinValue(lua_State *L) {
  8891. luaL_checktype(L, 1, LUA_TUSERDATA);
  8892. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8893. luaL_checktype(L, 2, LUA_TUSERDATA);
  8894. Vector3 perlinValue = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8895. inst->setPerlinValue(perlinValue);
  8896. return 0;
  8897. }
  8898. static int Polycode_SceneParticleEmitter_getPerlinValue(lua_State *L) {
  8899. luaL_checktype(L, 1, LUA_TUSERDATA);
  8900. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8901. Vector3 *retInst = new Vector3();
  8902. *retInst = inst->getPerlinValue();
  8903. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8904. luaL_getmetatable(L, "Polycode.Vector3");
  8905. lua_setmetatable(L, -2);
  8906. *userdataPtr = (PolyBase*)retInst;
  8907. return 1;
  8908. }
  8909. static int Polycode_SceneParticleEmitter_setParticleType(lua_State *L) {
  8910. luaL_checktype(L, 1, LUA_TUSERDATA);
  8911. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8912. luaL_checktype(L, 2, LUA_TNUMBER);
  8913. int particleType = lua_tointeger(L, 2);
  8914. inst->setParticleType(particleType);
  8915. return 0;
  8916. }
  8917. static int Polycode_SceneParticleEmitter_getParticleType(lua_State *L) {
  8918. luaL_checktype(L, 1, LUA_TUSERDATA);
  8919. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8920. lua_pushinteger(L, inst->getParticleType());
  8921. return 1;
  8922. }
  8923. static int Polycode_SceneParticleEmitter_setParticleSize(lua_State *L) {
  8924. luaL_checktype(L, 1, LUA_TUSERDATA);
  8925. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8926. luaL_checktype(L, 2, LUA_TNUMBER);
  8927. Number particleSize = lua_tonumber(L, 2);
  8928. inst->setParticleSize(particleSize);
  8929. return 0;
  8930. }
  8931. static int Polycode_SceneParticleEmitter_getParticleSize(lua_State *L) {
  8932. luaL_checktype(L, 1, LUA_TUSERDATA);
  8933. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8934. lua_pushnumber(L, inst->getParticleSize());
  8935. return 1;
  8936. }
  8937. static int Polycode_SceneParticleEmitter_setParticleRotationSpeed(lua_State *L) {
  8938. luaL_checktype(L, 1, LUA_TUSERDATA);
  8939. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8940. luaL_checktype(L, 2, LUA_TUSERDATA);
  8941. Vector3 rotationSpeed = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8942. inst->setParticleRotationSpeed(rotationSpeed);
  8943. return 0;
  8944. }
  8945. static int Polycode_SceneParticleEmitter_getParticleRotationSpeed(lua_State *L) {
  8946. luaL_checktype(L, 1, LUA_TUSERDATA);
  8947. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8948. Vector3 *retInst = new Vector3();
  8949. *retInst = inst->getParticleRotationSpeed();
  8950. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8951. luaL_getmetatable(L, "Polycode.Vector3");
  8952. lua_setmetatable(L, -2);
  8953. *userdataPtr = (PolyBase*)retInst;
  8954. return 1;
  8955. }
  8956. static int Polycode_SceneParticleEmitter_setParticleDirection(lua_State *L) {
  8957. luaL_checktype(L, 1, LUA_TUSERDATA);
  8958. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8959. luaL_checktype(L, 2, LUA_TUSERDATA);
  8960. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8961. inst->setParticleDirection(direction);
  8962. return 0;
  8963. }
  8964. static int Polycode_SceneParticleEmitter_getParticleDirection(lua_State *L) {
  8965. luaL_checktype(L, 1, LUA_TUSERDATA);
  8966. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8967. Vector3 *retInst = new Vector3();
  8968. *retInst = inst->getParticleDirection();
  8969. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8970. luaL_getmetatable(L, "Polycode.Vector3");
  8971. lua_setmetatable(L, -2);
  8972. *userdataPtr = (PolyBase*)retInst;
  8973. return 1;
  8974. }
  8975. static int Polycode_SceneParticleEmitter_setLoopParticles(lua_State *L) {
  8976. luaL_checktype(L, 1, LUA_TUSERDATA);
  8977. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8978. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8979. bool val = lua_toboolean(L, 2) != 0;
  8980. inst->setLoopParticles(val);
  8981. return 0;
  8982. }
  8983. static int Polycode_SceneParticleEmitter_getLoopParticles(lua_State *L) {
  8984. luaL_checktype(L, 1, LUA_TUSERDATA);
  8985. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8986. lua_pushboolean(L, inst->getLoopParticles());
  8987. return 1;
  8988. }
  8989. static int Polycode_SceneParticleEmitter_addSourceMesh(lua_State *L) {
  8990. luaL_checktype(L, 1, LUA_TUSERDATA);
  8991. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  8992. luaL_checktype(L, 2, LUA_TUSERDATA);
  8993. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  8994. inst->addSourceMesh(mesh);
  8995. return 0;
  8996. }
  8997. static int Polycode_SceneParticleEmitter_getNumSourceMeshes(lua_State *L) {
  8998. luaL_checktype(L, 1, LUA_TUSERDATA);
  8999. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9000. lua_pushinteger(L, inst->getNumSourceMeshes());
  9001. return 1;
  9002. }
  9003. static int Polycode_SceneParticleEmitter_getSourcesMeshAtIndex(lua_State *L) {
  9004. luaL_checktype(L, 1, LUA_TUSERDATA);
  9005. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9006. luaL_checktype(L, 2, LUA_TNUMBER);
  9007. int index = lua_tointeger(L, 2);
  9008. PolyBase *ptrRetVal = (PolyBase*)inst->getSourcesMeshAtIndex(index);
  9009. if(ptrRetVal == NULL) {
  9010. lua_pushnil(L);
  9011. } else {
  9012. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9013. *userdataPtr = ptrRetVal;
  9014. }
  9015. return 1;
  9016. }
  9017. static int Polycode_SceneParticleEmitter_removeSourceMeshAtIndex(lua_State *L) {
  9018. luaL_checktype(L, 1, LUA_TUSERDATA);
  9019. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9020. luaL_checktype(L, 2, LUA_TNUMBER);
  9021. int index = lua_tointeger(L, 2);
  9022. inst->removeSourceMeshAtIndex(index);
  9023. return 0;
  9024. }
  9025. static int Polycode_SceneParticleEmitter_positionParticle(lua_State *L) {
  9026. luaL_checktype(L, 1, LUA_TUSERDATA);
  9027. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9028. luaL_checktype(L, 2, LUA_TNUMBER);
  9029. int index = lua_tointeger(L, 2);
  9030. inst->positionParticle(index);
  9031. return 0;
  9032. }
  9033. static int Polycode_SceneParticleEmitter_Clone(lua_State *L) {
  9034. luaL_checktype(L, 1, LUA_TUSERDATA);
  9035. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9036. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9037. bool deepClone = lua_toboolean(L, 2) != 0;
  9038. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9039. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9040. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9041. if(ptrRetVal == NULL) {
  9042. lua_pushnil(L);
  9043. } else {
  9044. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9045. *userdataPtr = ptrRetVal;
  9046. }
  9047. return 1;
  9048. }
  9049. static int Polycode_SceneParticleEmitter_applyClone(lua_State *L) {
  9050. luaL_checktype(L, 1, LUA_TUSERDATA);
  9051. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9052. luaL_checktype(L, 2, LUA_TUSERDATA);
  9053. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9054. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9055. bool deepClone = lua_toboolean(L, 3) != 0;
  9056. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9057. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9058. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9059. return 0;
  9060. }
  9061. static int Polycode_delete_SceneParticleEmitter(lua_State *L) {
  9062. luaL_checktype(L, 1, LUA_TUSERDATA);
  9063. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9064. delete ((SceneParticleEmitter*) *inst);
  9065. *inst = NULL;
  9066. return 0;
  9067. }
  9068. static int Polycode_Perlin(lua_State *L) {
  9069. luaL_checktype(L, 1, LUA_TNUMBER);
  9070. int octaves = lua_tointeger(L, 1);
  9071. luaL_checktype(L, 2, LUA_TNUMBER);
  9072. Number freq = lua_tonumber(L, 2);
  9073. luaL_checktype(L, 3, LUA_TNUMBER);
  9074. Number amp = lua_tonumber(L, 3);
  9075. luaL_checktype(L, 4, LUA_TNUMBER);
  9076. int seed = lua_tointeger(L, 4);
  9077. Perlin *inst = new Perlin(octaves, freq, amp, seed);
  9078. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9079. *userdataPtr = (PolyBase*)inst;
  9080. luaL_getmetatable(L, "Polycode.Perlin");
  9081. lua_setmetatable(L, -2);
  9082. return 1;
  9083. }
  9084. static int Polycode_Perlin_Get2DTiledX(lua_State *L) {
  9085. luaL_checktype(L, 1, LUA_TUSERDATA);
  9086. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9087. luaL_checktype(L, 2, LUA_TNUMBER);
  9088. Number x = lua_tonumber(L, 2);
  9089. luaL_checktype(L, 3, LUA_TNUMBER);
  9090. Number y = lua_tonumber(L, 3);
  9091. luaL_checktype(L, 4, LUA_TNUMBER);
  9092. Number t = lua_tonumber(L, 4);
  9093. lua_pushnumber(L, inst->Get2DTiledX(x, y, t));
  9094. return 1;
  9095. }
  9096. static int Polycode_Perlin_Get(lua_State *L) {
  9097. luaL_checktype(L, 1, LUA_TUSERDATA);
  9098. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9099. luaL_checktype(L, 2, LUA_TNUMBER);
  9100. Number x = lua_tonumber(L, 2);
  9101. luaL_checktype(L, 3, LUA_TNUMBER);
  9102. Number y = lua_tonumber(L, 3);
  9103. lua_pushnumber(L, inst->Get(x, y));
  9104. return 1;
  9105. }
  9106. static int Polycode_Perlin_Get2D(lua_State *L) {
  9107. luaL_checktype(L, 1, LUA_TUSERDATA);
  9108. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9109. luaL_checktype(L, 2, LUA_TNUMBER);
  9110. Number x = lua_tonumber(L, 2);
  9111. luaL_checktype(L, 3, LUA_TNUMBER);
  9112. Number y = lua_tonumber(L, 3);
  9113. lua_pushnumber(L, inst->Get2D(x, y));
  9114. return 1;
  9115. }
  9116. static int Polycode_Perlin_Get3D(lua_State *L) {
  9117. luaL_checktype(L, 1, LUA_TUSERDATA);
  9118. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9119. luaL_checktype(L, 2, LUA_TNUMBER);
  9120. Number x = lua_tonumber(L, 2);
  9121. luaL_checktype(L, 3, LUA_TNUMBER);
  9122. Number y = lua_tonumber(L, 3);
  9123. luaL_checktype(L, 4, LUA_TNUMBER);
  9124. Number z = lua_tonumber(L, 4);
  9125. lua_pushnumber(L, inst->Get3D(x, y, z));
  9126. return 1;
  9127. }
  9128. static int Polycode_delete_Perlin(lua_State *L) {
  9129. luaL_checktype(L, 1, LUA_TUSERDATA);
  9130. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9131. delete ((Perlin*) *inst);
  9132. *inst = NULL;
  9133. return 0;
  9134. }
  9135. static int Polycode_Quaternion_get_x(lua_State *L) {
  9136. luaL_checktype(L, 1, LUA_TUSERDATA);
  9137. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9138. lua_pushnumber(L, inst->x);
  9139. return 1;
  9140. }
  9141. static int Polycode_Quaternion_get_y(lua_State *L) {
  9142. luaL_checktype(L, 1, LUA_TUSERDATA);
  9143. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9144. lua_pushnumber(L, inst->y);
  9145. return 1;
  9146. }
  9147. static int Polycode_Quaternion_get_z(lua_State *L) {
  9148. luaL_checktype(L, 1, LUA_TUSERDATA);
  9149. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9150. lua_pushnumber(L, inst->z);
  9151. return 1;
  9152. }
  9153. static int Polycode_Quaternion_get_w(lua_State *L) {
  9154. luaL_checktype(L, 1, LUA_TUSERDATA);
  9155. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9156. lua_pushnumber(L, inst->w);
  9157. return 1;
  9158. }
  9159. static int Polycode_Quaternion_set_x(lua_State *L) {
  9160. luaL_checktype(L, 1, LUA_TUSERDATA);
  9161. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9162. Number param = lua_tonumber(L, 2);
  9163. inst->x = param;
  9164. return 0;
  9165. }
  9166. static int Polycode_Quaternion_set_y(lua_State *L) {
  9167. luaL_checktype(L, 1, LUA_TUSERDATA);
  9168. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9169. Number param = lua_tonumber(L, 2);
  9170. inst->y = param;
  9171. return 0;
  9172. }
  9173. static int Polycode_Quaternion_set_z(lua_State *L) {
  9174. luaL_checktype(L, 1, LUA_TUSERDATA);
  9175. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9176. Number param = lua_tonumber(L, 2);
  9177. inst->z = param;
  9178. return 0;
  9179. }
  9180. static int Polycode_Quaternion_set_w(lua_State *L) {
  9181. luaL_checktype(L, 1, LUA_TUSERDATA);
  9182. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9183. Number param = lua_tonumber(L, 2);
  9184. inst->w = param;
  9185. return 0;
  9186. }
  9187. static int Polycode_Quaternion(lua_State *L) {
  9188. luaL_checktype(L, 1, LUA_TNUMBER);
  9189. Number w = lua_tonumber(L, 1);
  9190. luaL_checktype(L, 2, LUA_TNUMBER);
  9191. Number x = lua_tonumber(L, 2);
  9192. luaL_checktype(L, 3, LUA_TNUMBER);
  9193. Number y = lua_tonumber(L, 3);
  9194. luaL_checktype(L, 4, LUA_TNUMBER);
  9195. Number z = lua_tonumber(L, 4);
  9196. Quaternion *inst = new Quaternion(w, x, y, z);
  9197. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9198. *userdataPtr = (PolyBase*)inst;
  9199. luaL_getmetatable(L, "Polycode.Quaternion");
  9200. lua_setmetatable(L, -2);
  9201. return 1;
  9202. }
  9203. static int Polycode_Quaternion_setFromMatrix(lua_State *L) {
  9204. luaL_checktype(L, 1, LUA_TUSERDATA);
  9205. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9206. luaL_checktype(L, 2, LUA_TUSERDATA);
  9207. Matrix4 _mat = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  9208. inst->setFromMatrix(_mat);
  9209. return 0;
  9210. }
  9211. static int Polycode_Quaternion_Slerp(lua_State *L) {
  9212. luaL_checktype(L, 1, LUA_TNUMBER);
  9213. Number fT = lua_tonumber(L, 1);
  9214. luaL_checktype(L, 2, LUA_TUSERDATA);
  9215. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9216. luaL_checktype(L, 3, LUA_TUSERDATA);
  9217. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  9218. bool shortestPath;
  9219. if(lua_isboolean(L, 4)) {
  9220. shortestPath = lua_toboolean(L, 4) != 0;
  9221. } else {
  9222. shortestPath = false;
  9223. }
  9224. Quaternion *retInst = new Quaternion();
  9225. *retInst = Quaternion::Slerp(fT, rkP, rkQ, shortestPath);
  9226. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9227. luaL_getmetatable(L, "Polycode.Quaternion");
  9228. lua_setmetatable(L, -2);
  9229. *userdataPtr = (PolyBase*)retInst;
  9230. return 1;
  9231. }
  9232. static int Polycode_Quaternion_Dot(lua_State *L) {
  9233. luaL_checktype(L, 1, LUA_TUSERDATA);
  9234. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9235. luaL_checktype(L, 2, LUA_TUSERDATA);
  9236. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9237. lua_pushnumber(L, inst->Dot(rkQ));
  9238. return 1;
  9239. }
  9240. static int Polycode_Quaternion_Log(lua_State *L) {
  9241. luaL_checktype(L, 1, LUA_TUSERDATA);
  9242. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9243. Quaternion *retInst = new Quaternion();
  9244. *retInst = inst->Log();
  9245. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9246. luaL_getmetatable(L, "Polycode.Quaternion");
  9247. lua_setmetatable(L, -2);
  9248. *userdataPtr = (PolyBase*)retInst;
  9249. return 1;
  9250. }
  9251. static int Polycode_Quaternion_Exp(lua_State *L) {
  9252. luaL_checktype(L, 1, LUA_TUSERDATA);
  9253. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9254. Quaternion *retInst = new Quaternion();
  9255. *retInst = inst->Exp();
  9256. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9257. luaL_getmetatable(L, "Polycode.Quaternion");
  9258. lua_setmetatable(L, -2);
  9259. *userdataPtr = (PolyBase*)retInst;
  9260. return 1;
  9261. }
  9262. static int Polycode_Quaternion_Norm(lua_State *L) {
  9263. luaL_checktype(L, 1, LUA_TUSERDATA);
  9264. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9265. lua_pushnumber(L, inst->Norm());
  9266. return 1;
  9267. }
  9268. static int Polycode_Quaternion_Normalize(lua_State *L) {
  9269. luaL_checktype(L, 1, LUA_TUSERDATA);
  9270. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9271. lua_pushnumber(L, inst->Normalize());
  9272. return 1;
  9273. }
  9274. static int Polycode_Quaternion_lookAt(lua_State *L) {
  9275. luaL_checktype(L, 1, LUA_TUSERDATA);
  9276. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9277. luaL_checktype(L, 2, LUA_TUSERDATA);
  9278. Vector3 D = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9279. luaL_checktype(L, 3, LUA_TUSERDATA);
  9280. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9281. inst->lookAt(D, upVector);
  9282. return 0;
  9283. }
  9284. static int Polycode_Quaternion_createFromMatrix(lua_State *L) {
  9285. luaL_checktype(L, 1, LUA_TUSERDATA);
  9286. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9287. luaL_checktype(L, 2, LUA_TUSERDATA);
  9288. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  9289. inst->createFromMatrix(matrix);
  9290. return 0;
  9291. }
  9292. static int Polycode_Quaternion_Squad(lua_State *L) {
  9293. luaL_checktype(L, 1, LUA_TNUMBER);
  9294. Number fT = lua_tonumber(L, 1);
  9295. luaL_checktype(L, 2, LUA_TUSERDATA);
  9296. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9297. luaL_checktype(L, 3, LUA_TUSERDATA);
  9298. Quaternion rkA = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  9299. luaL_checktype(L, 4, LUA_TUSERDATA);
  9300. Quaternion rkB = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  9301. luaL_checktype(L, 5, LUA_TUSERDATA);
  9302. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 5));
  9303. luaL_checktype(L, 6, LUA_TBOOLEAN);
  9304. bool shortestPath = lua_toboolean(L, 6) != 0;
  9305. Quaternion *retInst = new Quaternion();
  9306. *retInst = Quaternion::Squad(fT, rkP, rkA, rkB, rkQ, shortestPath);
  9307. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9308. luaL_getmetatable(L, "Polycode.Quaternion");
  9309. lua_setmetatable(L, -2);
  9310. *userdataPtr = (PolyBase*)retInst;
  9311. return 1;
  9312. }
  9313. static int Polycode_Quaternion_Inverse(lua_State *L) {
  9314. luaL_checktype(L, 1, LUA_TUSERDATA);
  9315. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9316. Quaternion *retInst = new Quaternion();
  9317. *retInst = inst->Inverse();
  9318. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9319. luaL_getmetatable(L, "Polycode.Quaternion");
  9320. lua_setmetatable(L, -2);
  9321. *userdataPtr = (PolyBase*)retInst;
  9322. return 1;
  9323. }
  9324. static int Polycode_Quaternion_set(lua_State *L) {
  9325. luaL_checktype(L, 1, LUA_TUSERDATA);
  9326. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9327. luaL_checktype(L, 2, LUA_TNUMBER);
  9328. Number w = lua_tonumber(L, 2);
  9329. luaL_checktype(L, 3, LUA_TNUMBER);
  9330. Number x = lua_tonumber(L, 3);
  9331. luaL_checktype(L, 4, LUA_TNUMBER);
  9332. Number y = lua_tonumber(L, 4);
  9333. luaL_checktype(L, 5, LUA_TNUMBER);
  9334. Number z = lua_tonumber(L, 5);
  9335. inst->set(w, x, y, z);
  9336. return 0;
  9337. }
  9338. static int Polycode_Quaternion_InvSqrt(lua_State *L) {
  9339. luaL_checktype(L, 1, LUA_TUSERDATA);
  9340. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9341. luaL_checktype(L, 2, LUA_TNUMBER);
  9342. Number x = lua_tonumber(L, 2);
  9343. lua_pushnumber(L, inst->InvSqrt(x));
  9344. return 1;
  9345. }
  9346. static int Polycode_Quaternion_fromAxes(lua_State *L) {
  9347. luaL_checktype(L, 1, LUA_TUSERDATA);
  9348. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9349. luaL_checktype(L, 2, LUA_TNUMBER);
  9350. Number az = lua_tonumber(L, 2);
  9351. luaL_checktype(L, 3, LUA_TNUMBER);
  9352. Number ay = lua_tonumber(L, 3);
  9353. luaL_checktype(L, 4, LUA_TNUMBER);
  9354. Number ax = lua_tonumber(L, 4);
  9355. inst->fromAxes(az, ay, ax);
  9356. return 0;
  9357. }
  9358. static int Polycode_Quaternion_fromAngleAxis(lua_State *L) {
  9359. luaL_checktype(L, 1, LUA_TUSERDATA);
  9360. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9361. luaL_checktype(L, 2, LUA_TNUMBER);
  9362. Number rfAngle = lua_tonumber(L, 2);
  9363. luaL_checktype(L, 3, LUA_TUSERDATA);
  9364. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9365. inst->fromAngleAxis(rfAngle, rkAxis);
  9366. return 0;
  9367. }
  9368. static int Polycode_Quaternion_toEulerAngles(lua_State *L) {
  9369. luaL_checktype(L, 1, LUA_TUSERDATA);
  9370. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9371. Vector3 *retInst = new Vector3();
  9372. *retInst = inst->toEulerAngles();
  9373. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9374. luaL_getmetatable(L, "Polycode.Vector3");
  9375. lua_setmetatable(L, -2);
  9376. *userdataPtr = (PolyBase*)retInst;
  9377. return 1;
  9378. }
  9379. static int Polycode_Quaternion_toAngleAxis(lua_State *L) {
  9380. luaL_checktype(L, 1, LUA_TUSERDATA);
  9381. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9382. luaL_checktype(L, 2, LUA_TNUMBER);
  9383. Number rfAngle = lua_tonumber(L, 2);
  9384. luaL_checktype(L, 3, LUA_TUSERDATA);
  9385. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9386. inst->toAngleAxis(rfAngle, rkAxis);
  9387. return 0;
  9388. }
  9389. static int Polycode_Quaternion_createFromAxisAngle(lua_State *L) {
  9390. luaL_checktype(L, 1, LUA_TUSERDATA);
  9391. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9392. luaL_checktype(L, 2, LUA_TNUMBER);
  9393. Number x = lua_tonumber(L, 2);
  9394. luaL_checktype(L, 3, LUA_TNUMBER);
  9395. Number y = lua_tonumber(L, 3);
  9396. luaL_checktype(L, 4, LUA_TNUMBER);
  9397. Number z = lua_tonumber(L, 4);
  9398. luaL_checktype(L, 5, LUA_TNUMBER);
  9399. Number degrees = lua_tonumber(L, 5);
  9400. inst->createFromAxisAngle(x, y, z, degrees);
  9401. return 0;
  9402. }
  9403. static int Polycode_Quaternion_createMatrix(lua_State *L) {
  9404. luaL_checktype(L, 1, LUA_TUSERDATA);
  9405. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9406. Matrix4 *retInst = new Matrix4();
  9407. *retInst = inst->createMatrix();
  9408. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9409. luaL_getmetatable(L, "Polycode.Matrix4");
  9410. lua_setmetatable(L, -2);
  9411. *userdataPtr = (PolyBase*)retInst;
  9412. return 1;
  9413. }
  9414. static int Polycode_Quaternion_applyTo(lua_State *L) {
  9415. luaL_checktype(L, 1, LUA_TUSERDATA);
  9416. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9417. luaL_checktype(L, 2, LUA_TUSERDATA);
  9418. Vector3 v = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9419. Vector3 *retInst = new Vector3();
  9420. *retInst = inst->applyTo(v);
  9421. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9422. luaL_getmetatable(L, "Polycode.Vector3");
  9423. lua_setmetatable(L, -2);
  9424. *userdataPtr = (PolyBase*)retInst;
  9425. return 1;
  9426. }
  9427. static int Polycode_delete_Quaternion(lua_State *L) {
  9428. luaL_checktype(L, 1, LUA_TUSERDATA);
  9429. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9430. delete ((Quaternion*) *inst);
  9431. *inst = NULL;
  9432. return 0;
  9433. }
  9434. static int Polycode_QuatTriple_get_q1(lua_State *L) {
  9435. luaL_checktype(L, 1, LUA_TUSERDATA);
  9436. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9437. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9438. *userdataPtr = (PolyBase*)&inst->q1;
  9439. return 1;
  9440. }
  9441. static int Polycode_QuatTriple_get_q2(lua_State *L) {
  9442. luaL_checktype(L, 1, LUA_TUSERDATA);
  9443. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9444. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9445. *userdataPtr = (PolyBase*)&inst->q2;
  9446. return 1;
  9447. }
  9448. static int Polycode_QuatTriple_get_q3(lua_State *L) {
  9449. luaL_checktype(L, 1, LUA_TUSERDATA);
  9450. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9451. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9452. *userdataPtr = (PolyBase*)&inst->q3;
  9453. return 1;
  9454. }
  9455. static int Polycode_QuatTriple_get_time(lua_State *L) {
  9456. luaL_checktype(L, 1, LUA_TUSERDATA);
  9457. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9458. lua_pushnumber(L, inst->time);
  9459. return 1;
  9460. }
  9461. static int Polycode_QuatTriple_set_q1(lua_State *L) {
  9462. luaL_checktype(L, 1, LUA_TUSERDATA);
  9463. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9464. luaL_checktype(L, 2, LUA_TUSERDATA);
  9465. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9466. inst->q1 = *argInst;
  9467. return 0;
  9468. }
  9469. static int Polycode_QuatTriple_set_q2(lua_State *L) {
  9470. luaL_checktype(L, 1, LUA_TUSERDATA);
  9471. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9472. luaL_checktype(L, 2, LUA_TUSERDATA);
  9473. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9474. inst->q2 = *argInst;
  9475. return 0;
  9476. }
  9477. static int Polycode_QuatTriple_set_q3(lua_State *L) {
  9478. luaL_checktype(L, 1, LUA_TUSERDATA);
  9479. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9480. luaL_checktype(L, 2, LUA_TUSERDATA);
  9481. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9482. inst->q3 = *argInst;
  9483. return 0;
  9484. }
  9485. static int Polycode_QuatTriple_set_time(lua_State *L) {
  9486. luaL_checktype(L, 1, LUA_TUSERDATA);
  9487. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9488. Number param = lua_tonumber(L, 2);
  9489. inst->time = param;
  9490. return 0;
  9491. }
  9492. static int Polycode_delete_QuatTriple(lua_State *L) {
  9493. luaL_checktype(L, 1, LUA_TUSERDATA);
  9494. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9495. delete ((QuatTriple*) *inst);
  9496. *inst = NULL;
  9497. return 0;
  9498. }
  9499. static int Polycode_QuaternionCurve(lua_State *L) {
  9500. luaL_checktype(L, 1, LUA_TUSERDATA);
  9501. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9502. luaL_checktype(L, 2, LUA_TUSERDATA);
  9503. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9504. luaL_checktype(L, 3, LUA_TUSERDATA);
  9505. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  9506. luaL_checktype(L, 4, LUA_TUSERDATA);
  9507. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  9508. QuaternionCurve *inst = new QuaternionCurve(wCurve, xCurve, yCurve, zCurve);
  9509. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9510. *userdataPtr = (PolyBase*)inst;
  9511. luaL_getmetatable(L, "Polycode.QuaternionCurve");
  9512. lua_setmetatable(L, -2);
  9513. return 1;
  9514. }
  9515. static int Polycode_QuaternionCurve_interpolate(lua_State *L) {
  9516. luaL_checktype(L, 1, LUA_TUSERDATA);
  9517. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9518. luaL_checktype(L, 2, LUA_TNUMBER);
  9519. Number t = lua_tonumber(L, 2);
  9520. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9521. bool useShortestPath = lua_toboolean(L, 3) != 0;
  9522. Quaternion *retInst = new Quaternion();
  9523. *retInst = inst->interpolate(t, useShortestPath);
  9524. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9525. luaL_getmetatable(L, "Polycode.Quaternion");
  9526. lua_setmetatable(L, -2);
  9527. *userdataPtr = (PolyBase*)retInst;
  9528. return 1;
  9529. }
  9530. static int Polycode_QuaternionCurve_generatePointsFromCurves(lua_State *L) {
  9531. luaL_checktype(L, 1, LUA_TUSERDATA);
  9532. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9533. luaL_checktype(L, 2, LUA_TUSERDATA);
  9534. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9535. luaL_checktype(L, 3, LUA_TUSERDATA);
  9536. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  9537. luaL_checktype(L, 4, LUA_TUSERDATA);
  9538. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  9539. luaL_checktype(L, 5, LUA_TUSERDATA);
  9540. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 5));
  9541. inst->generatePointsFromCurves(wCurve, xCurve, yCurve, zCurve);
  9542. return 0;
  9543. }
  9544. static int Polycode_delete_QuaternionCurve(lua_State *L) {
  9545. luaL_checktype(L, 1, LUA_TUSERDATA);
  9546. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9547. delete ((QuaternionCurve*) *inst);
  9548. *inst = NULL;
  9549. return 0;
  9550. }
  9551. static int Polycode_Ray_get_origin(lua_State *L) {
  9552. luaL_checktype(L, 1, LUA_TUSERDATA);
  9553. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9554. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9555. *userdataPtr = (PolyBase*)&inst->origin;
  9556. return 1;
  9557. }
  9558. static int Polycode_Ray_get_direction(lua_State *L) {
  9559. luaL_checktype(L, 1, LUA_TUSERDATA);
  9560. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9561. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9562. *userdataPtr = (PolyBase*)&inst->direction;
  9563. return 1;
  9564. }
  9565. static int Polycode_Ray_get_inv_direction(lua_State *L) {
  9566. luaL_checktype(L, 1, LUA_TUSERDATA);
  9567. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9568. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9569. *userdataPtr = (PolyBase*)&inst->inv_direction;
  9570. return 1;
  9571. }
  9572. static int Polycode_Ray_set_origin(lua_State *L) {
  9573. luaL_checktype(L, 1, LUA_TUSERDATA);
  9574. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9575. luaL_checktype(L, 2, LUA_TUSERDATA);
  9576. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9577. inst->origin = *argInst;
  9578. return 0;
  9579. }
  9580. static int Polycode_Ray_set_direction(lua_State *L) {
  9581. luaL_checktype(L, 1, LUA_TUSERDATA);
  9582. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9583. luaL_checktype(L, 2, LUA_TUSERDATA);
  9584. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9585. inst->direction = *argInst;
  9586. return 0;
  9587. }
  9588. static int Polycode_Ray_set_inv_direction(lua_State *L) {
  9589. luaL_checktype(L, 1, LUA_TUSERDATA);
  9590. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9591. luaL_checktype(L, 2, LUA_TUSERDATA);
  9592. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9593. inst->inv_direction = *argInst;
  9594. return 0;
  9595. }
  9596. static int Polycode_Ray(lua_State *L) {
  9597. Ray *inst = new Ray();
  9598. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9599. *userdataPtr = (PolyBase*)inst;
  9600. luaL_getmetatable(L, "Polycode.Ray");
  9601. lua_setmetatable(L, -2);
  9602. return 1;
  9603. }
  9604. static int Polycode_Ray_boxIntersect(lua_State *L) {
  9605. luaL_checktype(L, 1, LUA_TUSERDATA);
  9606. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9607. luaL_checktype(L, 2, LUA_TUSERDATA);
  9608. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9609. luaL_checktype(L, 3, LUA_TUSERDATA);
  9610. Matrix4 transformMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  9611. Number vnear;
  9612. if(lua_isnumber(L, 4)) {
  9613. vnear = lua_tonumber(L, 4);
  9614. } else {
  9615. vnear = 0.0;
  9616. }
  9617. Number vfar;
  9618. if(lua_isnumber(L, 5)) {
  9619. vfar = lua_tonumber(L, 5);
  9620. } else {
  9621. vfar = 9999.0;
  9622. }
  9623. lua_pushnumber(L, inst->boxIntersect(box, transformMatrix, vnear, vfar));
  9624. return 1;
  9625. }
  9626. static int Polycode_Ray_planeIntersectPoint(lua_State *L) {
  9627. luaL_checktype(L, 1, LUA_TUSERDATA);
  9628. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9629. luaL_checktype(L, 2, LUA_TUSERDATA);
  9630. Vector3 planeNormal = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9631. luaL_checktype(L, 3, LUA_TNUMBER);
  9632. Number planeDistance = lua_tonumber(L, 3);
  9633. Vector3 *retInst = new Vector3();
  9634. *retInst = inst->planeIntersectPoint(planeNormal, planeDistance);
  9635. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9636. luaL_getmetatable(L, "Polycode.Vector3");
  9637. lua_setmetatable(L, -2);
  9638. *userdataPtr = (PolyBase*)retInst;
  9639. return 1;
  9640. }
  9641. static int Polycode_Ray_tranformByMatrix(lua_State *L) {
  9642. luaL_checktype(L, 1, LUA_TUSERDATA);
  9643. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9644. luaL_checktype(L, 2, LUA_TUSERDATA);
  9645. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  9646. Ray *retInst = new Ray();
  9647. *retInst = inst->tranformByMatrix(matrix);
  9648. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9649. luaL_getmetatable(L, "Polycode.Ray");
  9650. lua_setmetatable(L, -2);
  9651. *userdataPtr = (PolyBase*)retInst;
  9652. return 1;
  9653. }
  9654. static int Polycode_Ray_closestPointOnRay(lua_State *L) {
  9655. luaL_checktype(L, 1, LUA_TUSERDATA);
  9656. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9657. luaL_checktype(L, 2, LUA_TUSERDATA);
  9658. Vector3 point = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9659. Vector3 *retInst = new Vector3();
  9660. *retInst = inst->closestPointOnRay(point);
  9661. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9662. luaL_getmetatable(L, "Polycode.Vector3");
  9663. lua_setmetatable(L, -2);
  9664. *userdataPtr = (PolyBase*)retInst;
  9665. return 1;
  9666. }
  9667. static int Polycode_Ray_closestPointsBetween(lua_State *L) {
  9668. luaL_checktype(L, 1, LUA_TUSERDATA);
  9669. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9670. luaL_checktype(L, 2, LUA_TUSERDATA);
  9671. Ray ray2 = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  9672. luaL_checktype(L, 3, LUA_TUSERDATA);
  9673. Vector3* point1 = (Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9674. luaL_checktype(L, 4, LUA_TUSERDATA);
  9675. Vector3* point2 = (Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  9676. lua_pushboolean(L, inst->closestPointsBetween(ray2, point1, point2));
  9677. return 1;
  9678. }
  9679. static int Polycode_Ray_polygonIntersect(lua_State *L) {
  9680. luaL_checktype(L, 1, LUA_TUSERDATA);
  9681. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  9682. luaL_checktype(L, 2, LUA_TUSERDATA);
  9683. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9684. luaL_checktype(L, 3, LUA_TUSERDATA);
  9685. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9686. luaL_checktype(L, 4, LUA_TUSERDATA);
  9687. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  9688. lua_pushboolean(L, inst->polygonIntersect(v1, v2, v3));
  9689. return 1;
  9690. }
  9691. static int Polycode_delete_Ray(lua_State *L) {
  9692. luaL_checktype(L, 1, LUA_TUSERDATA);
  9693. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9694. delete ((Ray*) *inst);
  9695. *inst = NULL;
  9696. return 0;
  9697. }
  9698. static int Polycode_Rectangle_get_x(lua_State *L) {
  9699. luaL_checktype(L, 1, LUA_TUSERDATA);
  9700. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9701. lua_pushnumber(L, inst->x);
  9702. return 1;
  9703. }
  9704. static int Polycode_Rectangle_get_y(lua_State *L) {
  9705. luaL_checktype(L, 1, LUA_TUSERDATA);
  9706. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9707. lua_pushnumber(L, inst->y);
  9708. return 1;
  9709. }
  9710. static int Polycode_Rectangle_get_w(lua_State *L) {
  9711. luaL_checktype(L, 1, LUA_TUSERDATA);
  9712. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9713. lua_pushnumber(L, inst->w);
  9714. return 1;
  9715. }
  9716. static int Polycode_Rectangle_get_h(lua_State *L) {
  9717. luaL_checktype(L, 1, LUA_TUSERDATA);
  9718. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9719. lua_pushnumber(L, inst->h);
  9720. return 1;
  9721. }
  9722. static int Polycode_Rectangle_set_x(lua_State *L) {
  9723. luaL_checktype(L, 1, LUA_TUSERDATA);
  9724. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9725. Number param = lua_tonumber(L, 2);
  9726. inst->x = param;
  9727. return 0;
  9728. }
  9729. static int Polycode_Rectangle_set_y(lua_State *L) {
  9730. luaL_checktype(L, 1, LUA_TUSERDATA);
  9731. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9732. Number param = lua_tonumber(L, 2);
  9733. inst->y = param;
  9734. return 0;
  9735. }
  9736. static int Polycode_Rectangle_set_w(lua_State *L) {
  9737. luaL_checktype(L, 1, LUA_TUSERDATA);
  9738. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9739. Number param = lua_tonumber(L, 2);
  9740. inst->w = param;
  9741. return 0;
  9742. }
  9743. static int Polycode_Rectangle_set_h(lua_State *L) {
  9744. luaL_checktype(L, 1, LUA_TUSERDATA);
  9745. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9746. Number param = lua_tonumber(L, 2);
  9747. inst->h = param;
  9748. return 0;
  9749. }
  9750. static int Polycode_Rectangle(lua_State *L) {
  9751. Rectangle *inst = new Rectangle();
  9752. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9753. *userdataPtr = (PolyBase*)inst;
  9754. luaL_getmetatable(L, "Polycode.Rectangle");
  9755. lua_setmetatable(L, -2);
  9756. return 1;
  9757. }
  9758. static int Polycode_Rectangle_setRect(lua_State *L) {
  9759. luaL_checktype(L, 1, LUA_TUSERDATA);
  9760. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9761. luaL_checktype(L, 2, LUA_TNUMBER);
  9762. Number x = lua_tonumber(L, 2);
  9763. luaL_checktype(L, 3, LUA_TNUMBER);
  9764. Number y = lua_tonumber(L, 3);
  9765. luaL_checktype(L, 4, LUA_TNUMBER);
  9766. Number w = lua_tonumber(L, 4);
  9767. luaL_checktype(L, 5, LUA_TNUMBER);
  9768. Number h = lua_tonumber(L, 5);
  9769. inst->setRect(x, y, w, h);
  9770. return 0;
  9771. }
  9772. static int Polycode_Rectangle_Clipped(lua_State *L) {
  9773. luaL_checktype(L, 1, LUA_TUSERDATA);
  9774. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9775. luaL_checktype(L, 2, LUA_TUSERDATA);
  9776. Polycode::Rectangle rect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  9777. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  9778. *retInst = inst->Clipped(rect);
  9779. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9780. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  9781. lua_setmetatable(L, -2);
  9782. *userdataPtr = (PolyBase*)retInst;
  9783. return 1;
  9784. }
  9785. static int Polycode_Rectangle_minX(lua_State *L) {
  9786. luaL_checktype(L, 1, LUA_TUSERDATA);
  9787. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9788. lua_pushnumber(L, inst->minX());
  9789. return 1;
  9790. }
  9791. static int Polycode_Rectangle_maxX(lua_State *L) {
  9792. luaL_checktype(L, 1, LUA_TUSERDATA);
  9793. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9794. lua_pushnumber(L, inst->maxX());
  9795. return 1;
  9796. }
  9797. static int Polycode_Rectangle_minY(lua_State *L) {
  9798. luaL_checktype(L, 1, LUA_TUSERDATA);
  9799. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9800. lua_pushnumber(L, inst->minY());
  9801. return 1;
  9802. }
  9803. static int Polycode_Rectangle_maxY(lua_State *L) {
  9804. luaL_checktype(L, 1, LUA_TUSERDATA);
  9805. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  9806. lua_pushnumber(L, inst->maxY());
  9807. return 1;
  9808. }
  9809. static int Polycode_delete_Rectangle(lua_State *L) {
  9810. luaL_checktype(L, 1, LUA_TUSERDATA);
  9811. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9812. delete ((Rectangle*) *inst);
  9813. *inst = NULL;
  9814. return 0;
  9815. }
  9816. static int Polycode_RenderDataArray_get_type(lua_State *L) {
  9817. luaL_checktype(L, 1, LUA_TUSERDATA);
  9818. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9819. lua_pushinteger(L, inst->type);
  9820. return 1;
  9821. }
  9822. static int Polycode_RenderDataArray_get_customArrayName(lua_State *L) {
  9823. luaL_checktype(L, 1, LUA_TUSERDATA);
  9824. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9825. lua_pushstring(L, inst->customArrayName.c_str());
  9826. return 1;
  9827. }
  9828. static int Polycode_RenderDataArray_set_type(lua_State *L) {
  9829. luaL_checktype(L, 1, LUA_TUSERDATA);
  9830. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9831. int param = lua_tointeger(L, 2);
  9832. inst->type = param;
  9833. return 0;
  9834. }
  9835. static int Polycode_RenderDataArray_set_customArrayName(lua_State *L) {
  9836. luaL_checktype(L, 1, LUA_TUSERDATA);
  9837. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9838. String param = lua_tostring(L, 2);
  9839. inst->customArrayName = param;
  9840. return 0;
  9841. }
  9842. static int Polycode_RenderDataArray(lua_State *L) {
  9843. luaL_checktype(L, 1, LUA_TNUMBER);
  9844. int type = lua_tointeger(L, 1);
  9845. RenderDataArray *inst = new RenderDataArray(type);
  9846. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9847. *userdataPtr = (PolyBase*)inst;
  9848. luaL_getmetatable(L, "Polycode.RenderDataArray");
  9849. lua_setmetatable(L, -2);
  9850. return 1;
  9851. }
  9852. static int Polycode_RenderDataArray_getArrayData(lua_State *L) {
  9853. luaL_checktype(L, 1, LUA_TUSERDATA);
  9854. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9855. PolyBase *ptrRetVal = (PolyBase*)inst->getArrayData();
  9856. if(ptrRetVal == NULL) {
  9857. lua_pushnil(L);
  9858. } else {
  9859. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9860. *userdataPtr = ptrRetVal;
  9861. }
  9862. return 1;
  9863. }
  9864. static int Polycode_RenderDataArray_getDataSize(lua_State *L) {
  9865. luaL_checktype(L, 1, LUA_TUSERDATA);
  9866. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  9867. lua_pushinteger(L, inst->getDataSize());
  9868. return 1;
  9869. }
  9870. static int Polycode_delete_RenderDataArray(lua_State *L) {
  9871. luaL_checktype(L, 1, LUA_TUSERDATA);
  9872. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9873. delete ((RenderDataArray*) *inst);
  9874. *inst = NULL;
  9875. return 0;
  9876. }
  9877. static int Polycode_delete_LightShadowInfoBinding(lua_State *L) {
  9878. luaL_checktype(L, 1, LUA_TUSERDATA);
  9879. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9880. delete ((LightShadowInfoBinding*) *inst);
  9881. *inst = NULL;
  9882. return 0;
  9883. }
  9884. static int Polycode_delete_LightInfoBinding(lua_State *L) {
  9885. luaL_checktype(L, 1, LUA_TUSERDATA);
  9886. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9887. delete ((LightInfoBinding*) *inst);
  9888. *inst = NULL;
  9889. return 0;
  9890. }
  9891. static int Polycode_RenderFrame(lua_State *L) {
  9892. RenderFrame *inst = new RenderFrame();
  9893. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9894. *userdataPtr = (PolyBase*)inst;
  9895. luaL_getmetatable(L, "Polycode.RenderFrame");
  9896. lua_setmetatable(L, -2);
  9897. return 1;
  9898. }
  9899. static int Polycode_delete_RenderFrame(lua_State *L) {
  9900. luaL_checktype(L, 1, LUA_TUSERDATA);
  9901. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9902. delete ((RenderFrame*) *inst);
  9903. *inst = NULL;
  9904. return 0;
  9905. }
  9906. static int Polycode_RendererThreadJob_get_jobType(lua_State *L) {
  9907. luaL_checktype(L, 1, LUA_TUSERDATA);
  9908. RendererThreadJob *inst = (RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 1));
  9909. lua_pushinteger(L, inst->jobType);
  9910. return 1;
  9911. }
  9912. static int Polycode_RendererThreadJob_set_jobType(lua_State *L) {
  9913. luaL_checktype(L, 1, LUA_TUSERDATA);
  9914. RendererThreadJob *inst = (RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 1));
  9915. int param = lua_tointeger(L, 2);
  9916. inst->jobType = param;
  9917. return 0;
  9918. }
  9919. static int Polycode_delete_RendererThreadJob(lua_State *L) {
  9920. luaL_checktype(L, 1, LUA_TUSERDATA);
  9921. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9922. delete ((RendererThreadJob*) *inst);
  9923. *inst = NULL;
  9924. return 0;
  9925. }
  9926. static int Polycode_RenderThread(lua_State *L) {
  9927. RenderThread *inst = new RenderThread();
  9928. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9929. *userdataPtr = (PolyBase*)inst;
  9930. luaL_getmetatable(L, "Polycode.RenderThread");
  9931. lua_setmetatable(L, -2);
  9932. return 1;
  9933. }
  9934. static int Polycode_RenderThread_setGraphicsInterface(lua_State *L) {
  9935. luaL_checktype(L, 1, LUA_TUSERDATA);
  9936. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9937. luaL_checktype(L, 2, LUA_TUSERDATA);
  9938. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  9939. luaL_checktype(L, 3, LUA_TUSERDATA);
  9940. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  9941. inst->setGraphicsInterface(core, graphicsInterface);
  9942. return 0;
  9943. }
  9944. static int Polycode_RenderThread_runThread(lua_State *L) {
  9945. luaL_checktype(L, 1, LUA_TUSERDATA);
  9946. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9947. inst->runThread();
  9948. return 0;
  9949. }
  9950. static int Polycode_RenderThread_updateRenderThread(lua_State *L) {
  9951. luaL_checktype(L, 1, LUA_TUSERDATA);
  9952. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9953. inst->updateRenderThread();
  9954. return 0;
  9955. }
  9956. static int Polycode_RenderThread_enqueueFrame(lua_State *L) {
  9957. luaL_checktype(L, 1, LUA_TUSERDATA);
  9958. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9959. luaL_checktype(L, 2, LUA_TUSERDATA);
  9960. RenderFrame* frame = (RenderFrame*) *((PolyBase**)lua_touserdata(L, 2));
  9961. inst->enqueueFrame(frame);
  9962. return 0;
  9963. }
  9964. static int Polycode_RenderThread_enqueueJob(lua_State *L) {
  9965. luaL_checktype(L, 1, LUA_TUSERDATA);
  9966. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9967. luaL_checktype(L, 2, LUA_TNUMBER);
  9968. int jobType = lua_tointeger(L, 2);
  9969. luaL_checktype(L, 3, LUA_TUSERDATA);
  9970. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  9971. void* data2;
  9972. if(lua_isuserdata(L, 4)) {
  9973. data2 = (void*) *((PolyBase**)lua_touserdata(L, 4));
  9974. } else {
  9975. data2 = NULL;
  9976. }
  9977. inst->enqueueJob(jobType, data, data2);
  9978. return 0;
  9979. }
  9980. static int Polycode_RenderThread_processJob(lua_State *L) {
  9981. luaL_checktype(L, 1, LUA_TUSERDATA);
  9982. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9983. luaL_checktype(L, 2, LUA_TUSERDATA);
  9984. RendererThreadJob job = *(RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 2));
  9985. inst->processJob(job);
  9986. return 0;
  9987. }
  9988. static int Polycode_RenderThread_clearFrameQueue(lua_State *L) {
  9989. luaL_checktype(L, 1, LUA_TUSERDATA);
  9990. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9991. inst->clearFrameQueue();
  9992. return 0;
  9993. }
  9994. static int Polycode_RenderThread_getShaderBinding(lua_State *L) {
  9995. luaL_checktype(L, 1, LUA_TUSERDATA);
  9996. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  9997. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderBinding();
  9998. if(ptrRetVal == NULL) {
  9999. lua_pushnil(L);
  10000. } else {
  10001. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10002. *userdataPtr = ptrRetVal;
  10003. }
  10004. return 1;
  10005. }
  10006. static int Polycode_RenderThread_processDrawBufferLights(lua_State *L) {
  10007. luaL_checktype(L, 1, LUA_TUSERDATA);
  10008. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10009. luaL_checktype(L, 2, LUA_TUSERDATA);
  10010. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10011. inst->processDrawBufferLights(buffer);
  10012. return 0;
  10013. }
  10014. static int Polycode_RenderThread_processDrawBuffer(lua_State *L) {
  10015. luaL_checktype(L, 1, LUA_TUSERDATA);
  10016. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10017. luaL_checktype(L, 2, LUA_TUSERDATA);
  10018. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10019. inst->processDrawBuffer(buffer);
  10020. return 0;
  10021. }
  10022. static int Polycode_RenderThread_getFrameInfo(lua_State *L) {
  10023. luaL_checktype(L, 1, LUA_TUSERDATA);
  10024. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10025. RenderThreadDebugInfo *retInst = new RenderThreadDebugInfo();
  10026. *retInst = inst->getFrameInfo();
  10027. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10028. luaL_getmetatable(L, "Polycode.RenderThreadDebugInfo");
  10029. lua_setmetatable(L, -2);
  10030. *userdataPtr = (PolyBase*)retInst;
  10031. return 1;
  10032. }
  10033. static int Polycode_RenderThread_initGlobals(lua_State *L) {
  10034. luaL_checktype(L, 1, LUA_TUSERDATA);
  10035. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10036. inst->initGlobals();
  10037. return 0;
  10038. }
  10039. static int Polycode_RenderThread_lockRenderMutex(lua_State *L) {
  10040. luaL_checktype(L, 1, LUA_TUSERDATA);
  10041. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10042. inst->lockRenderMutex();
  10043. return 0;
  10044. }
  10045. static int Polycode_RenderThread_unlockRenderMutex(lua_State *L) {
  10046. luaL_checktype(L, 1, LUA_TUSERDATA);
  10047. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10048. inst->unlockRenderMutex();
  10049. return 0;
  10050. }
  10051. static int Polycode_delete_RenderThread(lua_State *L) {
  10052. luaL_checktype(L, 1, LUA_TUSERDATA);
  10053. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10054. delete ((RenderThread*) *inst);
  10055. *inst = NULL;
  10056. return 0;
  10057. }
  10058. static int Polycode_RenderThreadDebugInfo_get_buffersProcessed(lua_State *L) {
  10059. luaL_checktype(L, 1, LUA_TUSERDATA);
  10060. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10061. lua_pushinteger(L, inst->buffersProcessed);
  10062. return 1;
  10063. }
  10064. static int Polycode_RenderThreadDebugInfo_get_drawCallsProcessed(lua_State *L) {
  10065. luaL_checktype(L, 1, LUA_TUSERDATA);
  10066. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10067. lua_pushinteger(L, inst->drawCallsProcessed);
  10068. return 1;
  10069. }
  10070. static int Polycode_RenderThreadDebugInfo_get_timeTaken(lua_State *L) {
  10071. luaL_checktype(L, 1, LUA_TUSERDATA);
  10072. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10073. lua_pushinteger(L, inst->timeTaken);
  10074. return 1;
  10075. }
  10076. static int Polycode_RenderThreadDebugInfo_set_buffersProcessed(lua_State *L) {
  10077. luaL_checktype(L, 1, LUA_TUSERDATA);
  10078. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10079. int param = lua_tointeger(L, 2);
  10080. inst->buffersProcessed = param;
  10081. return 0;
  10082. }
  10083. static int Polycode_RenderThreadDebugInfo_set_drawCallsProcessed(lua_State *L) {
  10084. luaL_checktype(L, 1, LUA_TUSERDATA);
  10085. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10086. int param = lua_tointeger(L, 2);
  10087. inst->drawCallsProcessed = param;
  10088. return 0;
  10089. }
  10090. static int Polycode_RenderThreadDebugInfo_set_timeTaken(lua_State *L) {
  10091. luaL_checktype(L, 1, LUA_TUSERDATA);
  10092. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10093. int param = lua_tointeger(L, 2);
  10094. inst->timeTaken = param;
  10095. return 0;
  10096. }
  10097. static int Polycode_delete_RenderThreadDebugInfo(lua_State *L) {
  10098. luaL_checktype(L, 1, LUA_TUSERDATA);
  10099. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10100. delete ((RenderThreadDebugInfo*) *inst);
  10101. *inst = NULL;
  10102. return 0;
  10103. }
  10104. static int Polycode_Renderer_setGraphicsInterface(lua_State *L) {
  10105. luaL_checktype(L, 1, LUA_TUSERDATA);
  10106. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10107. luaL_checktype(L, 2, LUA_TUSERDATA);
  10108. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  10109. luaL_checktype(L, 3, LUA_TUSERDATA);
  10110. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  10111. inst->setGraphicsInterface(core, graphicsInterface);
  10112. return 0;
  10113. }
  10114. static int Polycode_Renderer_getRenderThread(lua_State *L) {
  10115. luaL_checktype(L, 1, LUA_TUSERDATA);
  10116. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10117. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderThread();
  10118. if(ptrRetVal == NULL) {
  10119. lua_pushnil(L);
  10120. } else {
  10121. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10122. *userdataPtr = ptrRetVal;
  10123. }
  10124. return 1;
  10125. }
  10126. static int Polycode_Renderer_processDrawBuffer(lua_State *L) {
  10127. luaL_checktype(L, 1, LUA_TUSERDATA);
  10128. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10129. luaL_checktype(L, 2, LUA_TUSERDATA);
  10130. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10131. inst->processDrawBuffer(buffer);
  10132. return 0;
  10133. }
  10134. static int Polycode_Renderer_setBackingResolutionScale(lua_State *L) {
  10135. luaL_checktype(L, 1, LUA_TUSERDATA);
  10136. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10137. luaL_checktype(L, 2, LUA_TNUMBER);
  10138. Number xScale = lua_tonumber(L, 2);
  10139. luaL_checktype(L, 3, LUA_TNUMBER);
  10140. Number yScale = lua_tonumber(L, 3);
  10141. inst->setBackingResolutionScale(xScale, yScale);
  10142. return 0;
  10143. }
  10144. static int Polycode_Renderer_getBackingResolutionScaleX(lua_State *L) {
  10145. luaL_checktype(L, 1, LUA_TUSERDATA);
  10146. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10147. lua_pushnumber(L, inst->getBackingResolutionScaleX());
  10148. return 1;
  10149. }
  10150. static int Polycode_Renderer_getBackingResolutionScaleY(lua_State *L) {
  10151. luaL_checktype(L, 1, LUA_TUSERDATA);
  10152. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10153. lua_pushnumber(L, inst->getBackingResolutionScaleY());
  10154. return 1;
  10155. }
  10156. static int Polycode_Renderer_enqueueFrameJob(lua_State *L) {
  10157. luaL_checktype(L, 1, LUA_TUSERDATA);
  10158. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10159. luaL_checktype(L, 2, LUA_TNUMBER);
  10160. int jobType = lua_tointeger(L, 2);
  10161. luaL_checktype(L, 3, LUA_TUSERDATA);
  10162. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  10163. inst->enqueueFrameJob(jobType, data);
  10164. return 0;
  10165. }
  10166. static int Polycode_Renderer_destroyRenderBufferPlatformData(lua_State *L) {
  10167. luaL_checktype(L, 1, LUA_TUSERDATA);
  10168. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10169. luaL_checktype(L, 2, LUA_TUSERDATA);
  10170. void* platformData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  10171. inst->destroyRenderBufferPlatformData(platformData);
  10172. return 0;
  10173. }
  10174. static int Polycode_Renderer_destroyTexturePlatformData(lua_State *L) {
  10175. luaL_checktype(L, 1, LUA_TUSERDATA);
  10176. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10177. luaL_checktype(L, 2, LUA_TUSERDATA);
  10178. void* platformData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  10179. inst->destroyTexturePlatformData(platformData);
  10180. return 0;
  10181. }
  10182. static int Polycode_Renderer_destroyProgramPlatformData(lua_State *L) {
  10183. luaL_checktype(L, 1, LUA_TUSERDATA);
  10184. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10185. luaL_checktype(L, 2, LUA_TUSERDATA);
  10186. void* platformData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  10187. inst->destroyProgramPlatformData(platformData);
  10188. return 0;
  10189. }
  10190. static int Polycode_Renderer_destroyShaderPlatformData(lua_State *L) {
  10191. luaL_checktype(L, 1, LUA_TUSERDATA);
  10192. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10193. luaL_checktype(L, 2, LUA_TUSERDATA);
  10194. void* platformData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  10195. inst->destroyShaderPlatformData(platformData);
  10196. return 0;
  10197. }
  10198. static int Polycode_Renderer_destroySubmeshPlatformData(lua_State *L) {
  10199. luaL_checktype(L, 1, LUA_TUSERDATA);
  10200. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10201. luaL_checktype(L, 2, LUA_TUSERDATA);
  10202. void* platformData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  10203. inst->destroySubmeshPlatformData(platformData);
  10204. return 0;
  10205. }
  10206. static int Polycode_Renderer_setTextureParam(lua_State *L) {
  10207. luaL_checktype(L, 1, LUA_TUSERDATA);
  10208. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10209. luaL_checktype(L, 2, LUA_TUSERDATA);
  10210. LocalShaderParam* param = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 2));
  10211. luaL_checktype(L, 3, LUA_TUSERDATA);
  10212. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  10213. inst->setTextureParam(param, texture);
  10214. return 0;
  10215. }
  10216. static int Polycode_Renderer_setAnisotropyAmount(lua_State *L) {
  10217. luaL_checktype(L, 1, LUA_TUSERDATA);
  10218. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10219. luaL_checktype(L, 2, LUA_TNUMBER);
  10220. Number amount = lua_tonumber(L, 2);
  10221. inst->setAnisotropyAmount(amount);
  10222. return 0;
  10223. }
  10224. static int Polycode_Renderer_getAnisotropyAmount(lua_State *L) {
  10225. luaL_checktype(L, 1, LUA_TUSERDATA);
  10226. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10227. lua_pushnumber(L, inst->getAnisotropyAmount());
  10228. return 1;
  10229. }
  10230. static int Polycode_Renderer_unProject(lua_State *L) {
  10231. luaL_checktype(L, 1, LUA_TUSERDATA);
  10232. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  10233. luaL_checktype(L, 2, LUA_TUSERDATA);
  10234. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  10235. luaL_checktype(L, 3, LUA_TUSERDATA);
  10236. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  10237. luaL_checktype(L, 4, LUA_TUSERDATA);
  10238. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  10239. Vector3 *retInst = new Vector3();
  10240. *retInst = Renderer::unProject(position, modelMatrix, projectionMatrix, viewport);
  10241. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10242. luaL_getmetatable(L, "Polycode.Vector3");
  10243. lua_setmetatable(L, -2);
  10244. *userdataPtr = (PolyBase*)retInst;
  10245. return 1;
  10246. }
  10247. static int Polycode_Renderer_project(lua_State *L) {
  10248. luaL_checktype(L, 1, LUA_TUSERDATA);
  10249. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  10250. luaL_checktype(L, 2, LUA_TUSERDATA);
  10251. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  10252. luaL_checktype(L, 3, LUA_TUSERDATA);
  10253. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  10254. luaL_checktype(L, 4, LUA_TUSERDATA);
  10255. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  10256. Vector3 *retInst = new Vector3();
  10257. *retInst = Renderer::project(position, modelMatrix, projectionMatrix, viewport);
  10258. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10259. luaL_getmetatable(L, "Polycode.Vector3");
  10260. lua_setmetatable(L, -2);
  10261. *userdataPtr = (PolyBase*)retInst;
  10262. return 1;
  10263. }
  10264. static int Polycode_Renderer_beginFrame(lua_State *L) {
  10265. luaL_checktype(L, 1, LUA_TUSERDATA);
  10266. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10267. inst->beginFrame();
  10268. return 0;
  10269. }
  10270. static int Polycode_Renderer_endFrame(lua_State *L) {
  10271. luaL_checktype(L, 1, LUA_TUSERDATA);
  10272. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10273. inst->endFrame();
  10274. return 0;
  10275. }
  10276. static int Polycode_delete_Renderer(lua_State *L) {
  10277. luaL_checktype(L, 1, LUA_TUSERDATA);
  10278. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10279. delete ((Renderer*) *inst);
  10280. *inst = NULL;
  10281. return 0;
  10282. }
  10283. static int Polycode_Resource_get_reloadOnFileModify(lua_State *L) {
  10284. luaL_checktype(L, 1, LUA_TUSERDATA);
  10285. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10286. lua_pushboolean(L, inst->reloadOnFileModify);
  10287. return 1;
  10288. }
  10289. static int Polycode_Resource_get_resourceFileTime(lua_State *L) {
  10290. luaL_checktype(L, 1, LUA_TUSERDATA);
  10291. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10292. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10293. *userdataPtr = (PolyBase*)&inst->resourceFileTime;
  10294. return 1;
  10295. }
  10296. static int Polycode_Resource_set_reloadOnFileModify(lua_State *L) {
  10297. luaL_checktype(L, 1, LUA_TUSERDATA);
  10298. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10299. bool param = lua_toboolean(L, 2) != 0;
  10300. inst->reloadOnFileModify = param;
  10301. return 0;
  10302. }
  10303. static int Polycode_Resource_set_resourceFileTime(lua_State *L) {
  10304. luaL_checktype(L, 1, LUA_TUSERDATA);
  10305. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10306. luaL_checktype(L, 2, LUA_TUSERDATA);
  10307. size_t *argInst = (size_t*) *((PolyBase**)lua_touserdata(L, 2));
  10308. inst->resourceFileTime = *argInst;
  10309. return 0;
  10310. }
  10311. static int Polycode_Resource(lua_State *L) {
  10312. luaL_checktype(L, 1, LUA_TNUMBER);
  10313. int type = lua_tointeger(L, 1);
  10314. Resource *inst = new Resource(type);
  10315. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10316. *userdataPtr = (PolyBase*)inst;
  10317. luaL_getmetatable(L, "Polycode.Resource");
  10318. lua_setmetatable(L, -2);
  10319. return 1;
  10320. }
  10321. static int Polycode_Resource_reloadResource(lua_State *L) {
  10322. luaL_checktype(L, 1, LUA_TUSERDATA);
  10323. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10324. inst->reloadResource();
  10325. return 0;
  10326. }
  10327. static int Polycode_Resource_getResourceName(lua_State *L) {
  10328. luaL_checktype(L, 1, LUA_TUSERDATA);
  10329. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10330. lua_pushstring(L, inst->getResourceName().c_str());
  10331. return 1;
  10332. }
  10333. static int Polycode_Resource_getResourceType(lua_State *L) {
  10334. luaL_checktype(L, 1, LUA_TUSERDATA);
  10335. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10336. lua_pushinteger(L, inst->getResourceType());
  10337. return 1;
  10338. }
  10339. static int Polycode_Resource_setResourceName(lua_State *L) {
  10340. luaL_checktype(L, 1, LUA_TUSERDATA);
  10341. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10342. luaL_checktype(L, 2, LUA_TSTRING);
  10343. String newName = String(lua_tostring(L, 2));
  10344. inst->setResourceName(newName);
  10345. return 0;
  10346. }
  10347. static int Polycode_Resource_setResourcePath(lua_State *L) {
  10348. luaL_checktype(L, 1, LUA_TUSERDATA);
  10349. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10350. luaL_checktype(L, 2, LUA_TSTRING);
  10351. String path = String(lua_tostring(L, 2));
  10352. inst->setResourcePath(path);
  10353. return 0;
  10354. }
  10355. static int Polycode_Resource_getResourcePath(lua_State *L) {
  10356. luaL_checktype(L, 1, LUA_TUSERDATA);
  10357. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  10358. lua_pushstring(L, inst->getResourcePath().c_str());
  10359. return 1;
  10360. }
  10361. static int Polycode_delete_Resource(lua_State *L) {
  10362. luaL_checktype(L, 1, LUA_TUSERDATA);
  10363. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10364. delete ((Resource*) *inst);
  10365. *inst = NULL;
  10366. return 0;
  10367. }
  10368. static int Polycode_ScriptResourceLoader(lua_State *L) {
  10369. ScriptResourceLoader *inst = new ScriptResourceLoader();
  10370. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10371. *userdataPtr = (PolyBase*)inst;
  10372. luaL_getmetatable(L, "Polycode.ScriptResourceLoader");
  10373. lua_setmetatable(L, -2);
  10374. return 1;
  10375. }
  10376. static int Polycode_ScriptResourceLoader_loadResource(lua_State *L) {
  10377. luaL_checktype(L, 1, LUA_TUSERDATA);
  10378. ScriptResourceLoader *inst = (ScriptResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10379. luaL_checktype(L, 2, LUA_TSTRING);
  10380. String path = String(lua_tostring(L, 2));
  10381. luaL_checktype(L, 3, LUA_TUSERDATA);
  10382. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10383. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10384. *retInst = inst->loadResource(path, targetPool);
  10385. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10386. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10387. lua_setmetatable(L, -2);
  10388. *userdataPtr = (PolyBase*)retInst;
  10389. return 1;
  10390. }
  10391. static int Polycode_delete_ScriptResourceLoader(lua_State *L) {
  10392. luaL_checktype(L, 1, LUA_TUSERDATA);
  10393. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10394. delete ((ScriptResourceLoader*) *inst);
  10395. *inst = NULL;
  10396. return 0;
  10397. }
  10398. static int Polycode_ResourcePool_get_reloadResourcesOnModify(lua_State *L) {
  10399. luaL_checktype(L, 1, LUA_TUSERDATA);
  10400. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10401. lua_pushboolean(L, inst->reloadResourcesOnModify);
  10402. return 1;
  10403. }
  10404. static int Polycode_ResourcePool_get_dispatchChangeEvents(lua_State *L) {
  10405. luaL_checktype(L, 1, LUA_TUSERDATA);
  10406. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10407. lua_pushboolean(L, inst->dispatchChangeEvents);
  10408. return 1;
  10409. }
  10410. static int Polycode_ResourcePool_get_resourceSubscribers(lua_State *L) {
  10411. luaL_checktype(L, 1, LUA_TUSERDATA);
  10412. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10413. lua_pushinteger(L, inst->resourceSubscribers);
  10414. return 1;
  10415. }
  10416. static int Polycode_ResourcePool_get_deleteOnUnsubscribe(lua_State *L) {
  10417. luaL_checktype(L, 1, LUA_TUSERDATA);
  10418. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10419. lua_pushboolean(L, inst->deleteOnUnsubscribe);
  10420. return 1;
  10421. }
  10422. static int Polycode_ResourcePool_set_reloadResourcesOnModify(lua_State *L) {
  10423. luaL_checktype(L, 1, LUA_TUSERDATA);
  10424. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10425. bool param = lua_toboolean(L, 2) != 0;
  10426. inst->reloadResourcesOnModify = param;
  10427. return 0;
  10428. }
  10429. static int Polycode_ResourcePool_set_dispatchChangeEvents(lua_State *L) {
  10430. luaL_checktype(L, 1, LUA_TUSERDATA);
  10431. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10432. bool param = lua_toboolean(L, 2) != 0;
  10433. inst->dispatchChangeEvents = param;
  10434. return 0;
  10435. }
  10436. static int Polycode_ResourcePool_set_resourceSubscribers(lua_State *L) {
  10437. luaL_checktype(L, 1, LUA_TUSERDATA);
  10438. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10439. int param = lua_tointeger(L, 2);
  10440. inst->resourceSubscribers = param;
  10441. return 0;
  10442. }
  10443. static int Polycode_ResourcePool_set_deleteOnUnsubscribe(lua_State *L) {
  10444. luaL_checktype(L, 1, LUA_TUSERDATA);
  10445. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10446. bool param = lua_toboolean(L, 2) != 0;
  10447. inst->deleteOnUnsubscribe = param;
  10448. return 0;
  10449. }
  10450. static int Polycode_ResourcePool(lua_State *L) {
  10451. luaL_checktype(L, 1, LUA_TSTRING);
  10452. String name = String(lua_tostring(L, 1));
  10453. luaL_checktype(L, 2, LUA_TUSERDATA);
  10454. ResourcePool* fallbackPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10455. ResourcePool *inst = new ResourcePool(name, fallbackPool);
  10456. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10457. *userdataPtr = (PolyBase*)inst;
  10458. luaL_getmetatable(L, "Polycode.ResourcePool");
  10459. lua_setmetatable(L, -2);
  10460. return 1;
  10461. }
  10462. static int Polycode_ResourcePool_setFallbackPool(lua_State *L) {
  10463. luaL_checktype(L, 1, LUA_TUSERDATA);
  10464. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10465. luaL_checktype(L, 2, LUA_TUSERDATA);
  10466. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10467. inst->setFallbackPool(pool);
  10468. return 0;
  10469. }
  10470. static int Polycode_ResourcePool_addResource(lua_State *L) {
  10471. luaL_checktype(L, 1, LUA_TUSERDATA);
  10472. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10473. luaL_checktype(L, 2, LUA_TUSERDATA);
  10474. shared_ptr<Resource> resource = *(shared_ptr<Resource>*) *((PolyBase**)lua_touserdata(L, 2));
  10475. inst->addResource(resource);
  10476. return 0;
  10477. }
  10478. static int Polycode_ResourcePool_removeResource(lua_State *L) {
  10479. luaL_checktype(L, 1, LUA_TUSERDATA);
  10480. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10481. luaL_checktype(L, 2, LUA_TUSERDATA);
  10482. shared_ptr<Resource> resource = *(shared_ptr<Resource>*) *((PolyBase**)lua_touserdata(L, 2));
  10483. inst->removeResource(resource);
  10484. return 0;
  10485. }
  10486. static int Polycode_ResourcePool_hasResource(lua_State *L) {
  10487. luaL_checktype(L, 1, LUA_TUSERDATA);
  10488. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10489. luaL_checktype(L, 2, LUA_TUSERDATA);
  10490. shared_ptr<Resource> resource = *(shared_ptr<Resource>*) *((PolyBase**)lua_touserdata(L, 2));
  10491. lua_pushboolean(L, inst->hasResource(resource));
  10492. return 1;
  10493. }
  10494. static int Polycode_ResourcePool_loadResourcesFromFolder(lua_State *L) {
  10495. luaL_checktype(L, 1, LUA_TUSERDATA);
  10496. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10497. luaL_checktype(L, 2, LUA_TSTRING);
  10498. String folder = String(lua_tostring(L, 2));
  10499. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10500. bool recursive = lua_toboolean(L, 3) != 0;
  10501. inst->loadResourcesFromFolder(folder, recursive);
  10502. return 0;
  10503. }
  10504. static int Polycode_ResourcePool_loadResourcesFromMaterialFile(lua_State *L) {
  10505. luaL_checktype(L, 1, LUA_TUSERDATA);
  10506. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10507. luaL_checktype(L, 2, LUA_TSTRING);
  10508. String path = String(lua_tostring(L, 2));
  10509. inst->loadResourcesFromMaterialFile(path);
  10510. return 0;
  10511. }
  10512. static int Polycode_ResourcePool_loadResource(lua_State *L) {
  10513. luaL_checktype(L, 1, LUA_TUSERDATA);
  10514. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10515. luaL_checktype(L, 2, LUA_TSTRING);
  10516. String path = String(lua_tostring(L, 2));
  10517. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10518. *retInst = inst->loadResource(path);
  10519. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10520. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10521. lua_setmetatable(L, -2);
  10522. *userdataPtr = (PolyBase*)retInst;
  10523. return 1;
  10524. }
  10525. static int Polycode_ResourcePool_loadResourceWithName(lua_State *L) {
  10526. luaL_checktype(L, 1, LUA_TUSERDATA);
  10527. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10528. luaL_checktype(L, 2, LUA_TSTRING);
  10529. String path = String(lua_tostring(L, 2));
  10530. luaL_checktype(L, 3, LUA_TSTRING);
  10531. String name = String(lua_tostring(L, 3));
  10532. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10533. *retInst = inst->loadResourceWithName(path, name);
  10534. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10535. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10536. lua_setmetatable(L, -2);
  10537. *userdataPtr = (PolyBase*)retInst;
  10538. return 1;
  10539. }
  10540. static int Polycode_ResourcePool_getResource(lua_State *L) {
  10541. luaL_checktype(L, 1, LUA_TUSERDATA);
  10542. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10543. luaL_checktype(L, 2, LUA_TNUMBER);
  10544. int resourceType = lua_tointeger(L, 2);
  10545. luaL_checktype(L, 3, LUA_TSTRING);
  10546. String resourceName = String(lua_tostring(L, 3));
  10547. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10548. *retInst = inst->getResource(resourceType, resourceName);
  10549. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10550. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10551. lua_setmetatable(L, -2);
  10552. *userdataPtr = (PolyBase*)retInst;
  10553. return 1;
  10554. }
  10555. static int Polycode_ResourcePool_getName(lua_State *L) {
  10556. luaL_checktype(L, 1, LUA_TUSERDATA);
  10557. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10558. lua_pushstring(L, inst->getName().c_str());
  10559. return 1;
  10560. }
  10561. static int Polycode_ResourcePool_setName(lua_State *L) {
  10562. luaL_checktype(L, 1, LUA_TUSERDATA);
  10563. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10564. luaL_checktype(L, 2, LUA_TSTRING);
  10565. String name = String(lua_tostring(L, 2));
  10566. inst->setName(name);
  10567. return 0;
  10568. }
  10569. static int Polycode_ResourcePool_getResourceByPath(lua_State *L) {
  10570. luaL_checktype(L, 1, LUA_TUSERDATA);
  10571. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10572. luaL_checktype(L, 2, LUA_TSTRING);
  10573. String resourcePath = String(lua_tostring(L, 2));
  10574. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10575. *retInst = inst->getResourceByPath(resourcePath);
  10576. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10577. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10578. lua_setmetatable(L, -2);
  10579. *userdataPtr = (PolyBase*)retInst;
  10580. return 1;
  10581. }
  10582. static int Polycode_ResourcePool_Update(lua_State *L) {
  10583. luaL_checktype(L, 1, LUA_TUSERDATA);
  10584. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10585. luaL_checktype(L, 2, LUA_TNUMBER);
  10586. int elapsed = lua_tointeger(L, 2);
  10587. inst->Update(elapsed);
  10588. return 0;
  10589. }
  10590. static int Polycode_ResourcePool_getResources(lua_State *L) {
  10591. luaL_checktype(L, 1, LUA_TUSERDATA);
  10592. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10593. luaL_checktype(L, 2, LUA_TNUMBER);
  10594. int resourceType = lua_tointeger(L, 2);
  10595. return 0;
  10596. }
  10597. static int Polycode_ResourcePool_checkForChangedFiles(lua_State *L) {
  10598. luaL_checktype(L, 1, LUA_TUSERDATA);
  10599. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  10600. inst->checkForChangedFiles();
  10601. return 0;
  10602. }
  10603. static int Polycode_delete_ResourcePool(lua_State *L) {
  10604. luaL_checktype(L, 1, LUA_TUSERDATA);
  10605. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10606. delete ((ResourcePool*) *inst);
  10607. *inst = NULL;
  10608. return 0;
  10609. }
  10610. static int Polycode_ResourceManager(lua_State *L) {
  10611. ResourceManager *inst = new ResourceManager();
  10612. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10613. *userdataPtr = (PolyBase*)inst;
  10614. luaL_getmetatable(L, "Polycode.ResourceManager");
  10615. lua_setmetatable(L, -2);
  10616. return 1;
  10617. }
  10618. static int Polycode_ResourceManager_getGlobalPool(lua_State *L) {
  10619. luaL_checktype(L, 1, LUA_TUSERDATA);
  10620. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10621. PolyBase *ptrRetVal = (PolyBase*)inst->getGlobalPool();
  10622. if(ptrRetVal == NULL) {
  10623. lua_pushnil(L);
  10624. } else {
  10625. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10626. *userdataPtr = ptrRetVal;
  10627. }
  10628. return 1;
  10629. }
  10630. static int Polycode_ResourceManager_getResourcePoolByName(lua_State *L) {
  10631. luaL_checktype(L, 1, LUA_TUSERDATA);
  10632. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10633. luaL_checktype(L, 2, LUA_TSTRING);
  10634. String name = String(lua_tostring(L, 2));
  10635. PolyBase *ptrRetVal = (PolyBase*)inst->getResourcePoolByName(name);
  10636. if(ptrRetVal == NULL) {
  10637. lua_pushnil(L);
  10638. } else {
  10639. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10640. *userdataPtr = ptrRetVal;
  10641. }
  10642. return 1;
  10643. }
  10644. static int Polycode_ResourceManager_addResourceLoader(lua_State *L) {
  10645. luaL_checktype(L, 1, LUA_TUSERDATA);
  10646. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10647. luaL_checktype(L, 2, LUA_TUSERDATA);
  10648. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  10649. inst->addResourceLoader(loader);
  10650. return 0;
  10651. }
  10652. static int Polycode_ResourceManager_getResourceLoaderForExtension(lua_State *L) {
  10653. luaL_checktype(L, 1, LUA_TUSERDATA);
  10654. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10655. luaL_checktype(L, 2, LUA_TSTRING);
  10656. String extension = String(lua_tostring(L, 2));
  10657. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderForExtension(extension);
  10658. if(ptrRetVal == NULL) {
  10659. lua_pushnil(L);
  10660. } else {
  10661. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10662. *userdataPtr = ptrRetVal;
  10663. }
  10664. return 1;
  10665. }
  10666. static int Polycode_ResourceManager_removeResourceLoader(lua_State *L) {
  10667. luaL_checktype(L, 1, LUA_TUSERDATA);
  10668. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10669. luaL_checktype(L, 2, LUA_TUSERDATA);
  10670. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  10671. inst->removeResourceLoader(loader);
  10672. return 0;
  10673. }
  10674. static int Polycode_ResourceManager_getNumResourceLoaders(lua_State *L) {
  10675. luaL_checktype(L, 1, LUA_TUSERDATA);
  10676. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10677. lua_pushinteger(L, inst->getNumResourceLoaders());
  10678. return 1;
  10679. }
  10680. static int Polycode_ResourceManager_getResourceLoaderAtIndex(lua_State *L) {
  10681. luaL_checktype(L, 1, LUA_TUSERDATA);
  10682. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10683. luaL_checktype(L, 2, LUA_TNUMBER);
  10684. int index = lua_tointeger(L, 2);
  10685. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderAtIndex(index);
  10686. if(ptrRetVal == NULL) {
  10687. lua_pushnil(L);
  10688. } else {
  10689. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10690. *userdataPtr = ptrRetVal;
  10691. }
  10692. return 1;
  10693. }
  10694. static int Polycode_ResourceManager_addResourcePool(lua_State *L) {
  10695. luaL_checktype(L, 1, LUA_TUSERDATA);
  10696. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10697. luaL_checktype(L, 2, LUA_TUSERDATA);
  10698. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10699. inst->addResourcePool(pool);
  10700. return 0;
  10701. }
  10702. static int Polycode_ResourceManager_removeResourcePool(lua_State *L) {
  10703. luaL_checktype(L, 1, LUA_TUSERDATA);
  10704. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10705. luaL_checktype(L, 2, LUA_TUSERDATA);
  10706. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10707. inst->removeResourcePool(pool);
  10708. return 0;
  10709. }
  10710. static int Polycode_ResourceManager_getResources(lua_State *L) {
  10711. luaL_checktype(L, 1, LUA_TUSERDATA);
  10712. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10713. luaL_checktype(L, 2, LUA_TNUMBER);
  10714. int resourceType = lua_tointeger(L, 2);
  10715. return 0;
  10716. }
  10717. static int Polycode_ResourceManager_removeResource(lua_State *L) {
  10718. luaL_checktype(L, 1, LUA_TUSERDATA);
  10719. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10720. luaL_checktype(L, 2, LUA_TUSERDATA);
  10721. shared_ptr<Resource> resource = *(shared_ptr<Resource>*) *((PolyBase**)lua_touserdata(L, 2));
  10722. inst->removeResource(resource);
  10723. return 0;
  10724. }
  10725. static int Polycode_ResourceManager_subscribeToResourcePool(lua_State *L) {
  10726. luaL_checktype(L, 1, LUA_TUSERDATA);
  10727. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10728. luaL_checktype(L, 2, LUA_TUSERDATA);
  10729. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10730. inst->subscribeToResourcePool(pool);
  10731. return 0;
  10732. }
  10733. static int Polycode_ResourceManager_unsubscibeFromResourcePool(lua_State *L) {
  10734. luaL_checktype(L, 1, LUA_TUSERDATA);
  10735. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10736. luaL_checktype(L, 2, LUA_TUSERDATA);
  10737. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10738. inst->unsubscibeFromResourcePool(pool);
  10739. return 0;
  10740. }
  10741. static int Polycode_ResourceManager_Update(lua_State *L) {
  10742. luaL_checktype(L, 1, LUA_TUSERDATA);
  10743. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  10744. luaL_checktype(L, 2, LUA_TNUMBER);
  10745. int elapsed = lua_tointeger(L, 2);
  10746. inst->Update(elapsed);
  10747. return 0;
  10748. }
  10749. static int Polycode_delete_ResourceManager(lua_State *L) {
  10750. luaL_checktype(L, 1, LUA_TUSERDATA);
  10751. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10752. delete ((ResourceManager*) *inst);
  10753. *inst = NULL;
  10754. return 0;
  10755. }
  10756. static int Polycode_FontResourceLoader(lua_State *L) {
  10757. FontResourceLoader *inst = new FontResourceLoader();
  10758. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10759. *userdataPtr = (PolyBase*)inst;
  10760. luaL_getmetatable(L, "Polycode.FontResourceLoader");
  10761. lua_setmetatable(L, -2);
  10762. return 1;
  10763. }
  10764. static int Polycode_FontResourceLoader_loadResource(lua_State *L) {
  10765. luaL_checktype(L, 1, LUA_TUSERDATA);
  10766. FontResourceLoader *inst = (FontResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10767. luaL_checktype(L, 2, LUA_TSTRING);
  10768. String path = String(lua_tostring(L, 2));
  10769. luaL_checktype(L, 3, LUA_TUSERDATA);
  10770. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10771. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10772. *retInst = inst->loadResource(path, targetPool);
  10773. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10774. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10775. lua_setmetatable(L, -2);
  10776. *userdataPtr = (PolyBase*)retInst;
  10777. return 1;
  10778. }
  10779. static int Polycode_delete_FontResourceLoader(lua_State *L) {
  10780. luaL_checktype(L, 1, LUA_TUSERDATA);
  10781. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10782. delete ((FontResourceLoader*) *inst);
  10783. *inst = NULL;
  10784. return 0;
  10785. }
  10786. static int Polycode_ProgramResourceLoader(lua_State *L) {
  10787. ProgramResourceLoader *inst = new ProgramResourceLoader();
  10788. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10789. *userdataPtr = (PolyBase*)inst;
  10790. luaL_getmetatable(L, "Polycode.ProgramResourceLoader");
  10791. lua_setmetatable(L, -2);
  10792. return 1;
  10793. }
  10794. static int Polycode_ProgramResourceLoader_loadResource(lua_State *L) {
  10795. luaL_checktype(L, 1, LUA_TUSERDATA);
  10796. ProgramResourceLoader *inst = (ProgramResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10797. luaL_checktype(L, 2, LUA_TSTRING);
  10798. String path = String(lua_tostring(L, 2));
  10799. luaL_checktype(L, 3, LUA_TUSERDATA);
  10800. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10801. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10802. *retInst = inst->loadResource(path, targetPool);
  10803. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10804. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10805. lua_setmetatable(L, -2);
  10806. *userdataPtr = (PolyBase*)retInst;
  10807. return 1;
  10808. }
  10809. static int Polycode_delete_ProgramResourceLoader(lua_State *L) {
  10810. luaL_checktype(L, 1, LUA_TUSERDATA);
  10811. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10812. delete ((ProgramResourceLoader*) *inst);
  10813. *inst = NULL;
  10814. return 0;
  10815. }
  10816. static int Polycode_DebugBackTraceEntry_get_fileName(lua_State *L) {
  10817. luaL_checktype(L, 1, LUA_TUSERDATA);
  10818. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  10819. lua_pushstring(L, inst->fileName.c_str());
  10820. return 1;
  10821. }
  10822. static int Polycode_DebugBackTraceEntry_get_lineNumber(lua_State *L) {
  10823. luaL_checktype(L, 1, LUA_TUSERDATA);
  10824. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  10825. lua_pushinteger(L, inst->lineNumber);
  10826. return 1;
  10827. }
  10828. static int Polycode_DebugBackTraceEntry_set_fileName(lua_State *L) {
  10829. luaL_checktype(L, 1, LUA_TUSERDATA);
  10830. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  10831. String param = lua_tostring(L, 2);
  10832. inst->fileName = param;
  10833. return 0;
  10834. }
  10835. static int Polycode_DebugBackTraceEntry_set_lineNumber(lua_State *L) {
  10836. luaL_checktype(L, 1, LUA_TUSERDATA);
  10837. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  10838. int param = lua_tointeger(L, 2);
  10839. inst->lineNumber = param;
  10840. return 0;
  10841. }
  10842. static int Polycode_delete_DebugBackTraceEntry(lua_State *L) {
  10843. luaL_checktype(L, 1, LUA_TUSERDATA);
  10844. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10845. delete ((DebugBackTraceEntry*) *inst);
  10846. *inst = NULL;
  10847. return 0;
  10848. }
  10849. static int Polycode_MeshResourceLoader(lua_State *L) {
  10850. MeshResourceLoader *inst = new MeshResourceLoader();
  10851. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10852. *userdataPtr = (PolyBase*)inst;
  10853. luaL_getmetatable(L, "Polycode.MeshResourceLoader");
  10854. lua_setmetatable(L, -2);
  10855. return 1;
  10856. }
  10857. static int Polycode_MeshResourceLoader_loadResource(lua_State *L) {
  10858. luaL_checktype(L, 1, LUA_TUSERDATA);
  10859. MeshResourceLoader *inst = (MeshResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10860. luaL_checktype(L, 2, LUA_TSTRING);
  10861. String path = String(lua_tostring(L, 2));
  10862. luaL_checktype(L, 3, LUA_TUSERDATA);
  10863. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10864. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10865. *retInst = inst->loadResource(path, targetPool);
  10866. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10867. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10868. lua_setmetatable(L, -2);
  10869. *userdataPtr = (PolyBase*)retInst;
  10870. return 1;
  10871. }
  10872. static int Polycode_delete_MeshResourceLoader(lua_State *L) {
  10873. luaL_checktype(L, 1, LUA_TUSERDATA);
  10874. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10875. delete ((MeshResourceLoader*) *inst);
  10876. *inst = NULL;
  10877. return 0;
  10878. }
  10879. static int Polycode_MaterialResourceLoader(lua_State *L) {
  10880. MaterialResourceLoader *inst = new MaterialResourceLoader();
  10881. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10882. *userdataPtr = (PolyBase*)inst;
  10883. luaL_getmetatable(L, "Polycode.MaterialResourceLoader");
  10884. lua_setmetatable(L, -2);
  10885. return 1;
  10886. }
  10887. static int Polycode_MaterialResourceLoader_loadResource(lua_State *L) {
  10888. luaL_checktype(L, 1, LUA_TUSERDATA);
  10889. MaterialResourceLoader *inst = (MaterialResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10890. luaL_checktype(L, 2, LUA_TSTRING);
  10891. String path = String(lua_tostring(L, 2));
  10892. luaL_checktype(L, 3, LUA_TUSERDATA);
  10893. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10894. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10895. *retInst = inst->loadResource(path, targetPool);
  10896. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10897. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10898. lua_setmetatable(L, -2);
  10899. *userdataPtr = (PolyBase*)retInst;
  10900. return 1;
  10901. }
  10902. static int Polycode_delete_MaterialResourceLoader(lua_State *L) {
  10903. luaL_checktype(L, 1, LUA_TUSERDATA);
  10904. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10905. delete ((MaterialResourceLoader*) *inst);
  10906. *inst = NULL;
  10907. return 0;
  10908. }
  10909. static int Polycode_TextureResourceLoader(lua_State *L) {
  10910. TextureResourceLoader *inst = new TextureResourceLoader();
  10911. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10912. *userdataPtr = (PolyBase*)inst;
  10913. luaL_getmetatable(L, "Polycode.TextureResourceLoader");
  10914. lua_setmetatable(L, -2);
  10915. return 1;
  10916. }
  10917. static int Polycode_TextureResourceLoader_loadResource(lua_State *L) {
  10918. luaL_checktype(L, 1, LUA_TUSERDATA);
  10919. TextureResourceLoader *inst = (TextureResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  10920. luaL_checktype(L, 2, LUA_TSTRING);
  10921. String path = String(lua_tostring(L, 2));
  10922. luaL_checktype(L, 3, LUA_TUSERDATA);
  10923. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  10924. shared_ptr<Resource> *retInst = new shared_ptr<Resource>();
  10925. *retInst = inst->loadResource(path, targetPool);
  10926. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10927. luaL_getmetatable(L, "Polycode.shared_ptr<Resource>");
  10928. lua_setmetatable(L, -2);
  10929. *userdataPtr = (PolyBase*)retInst;
  10930. return 1;
  10931. }
  10932. static int Polycode_delete_TextureResourceLoader(lua_State *L) {
  10933. luaL_checktype(L, 1, LUA_TUSERDATA);
  10934. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10935. delete ((TextureResourceLoader*) *inst);
  10936. *inst = NULL;
  10937. return 0;
  10938. }
  10939. static int Polycode_Scene_get_clearColor(lua_State *L) {
  10940. luaL_checktype(L, 1, LUA_TUSERDATA);
  10941. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10942. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10943. *userdataPtr = (PolyBase*)&inst->clearColor;
  10944. return 1;
  10945. }
  10946. static int Polycode_Scene_get_useClearColor(lua_State *L) {
  10947. luaL_checktype(L, 1, LUA_TUSERDATA);
  10948. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10949. lua_pushboolean(L, inst->useClearColor);
  10950. return 1;
  10951. }
  10952. static int Polycode_Scene_get_useClearDepth(lua_State *L) {
  10953. luaL_checktype(L, 1, LUA_TUSERDATA);
  10954. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10955. lua_pushboolean(L, inst->useClearDepth);
  10956. return 1;
  10957. }
  10958. static int Polycode_Scene_get_ambientColor(lua_State *L) {
  10959. luaL_checktype(L, 1, LUA_TUSERDATA);
  10960. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10961. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10962. *userdataPtr = (PolyBase*)&inst->ambientColor;
  10963. return 1;
  10964. }
  10965. static int Polycode_Scene_get_fogColor(lua_State *L) {
  10966. luaL_checktype(L, 1, LUA_TUSERDATA);
  10967. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10968. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10969. *userdataPtr = (PolyBase*)&inst->fogColor;
  10970. return 1;
  10971. }
  10972. static int Polycode_Scene_get_enabled(lua_State *L) {
  10973. luaL_checktype(L, 1, LUA_TUSERDATA);
  10974. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10975. lua_pushboolean(L, inst->enabled);
  10976. return 1;
  10977. }
  10978. static int Polycode_Scene_get_ownsChildren(lua_State *L) {
  10979. luaL_checktype(L, 1, LUA_TUSERDATA);
  10980. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10981. lua_pushboolean(L, inst->ownsChildren);
  10982. return 1;
  10983. }
  10984. static int Polycode_Scene_get_rootEntity(lua_State *L) {
  10985. luaL_checktype(L, 1, LUA_TUSERDATA);
  10986. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10987. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10988. *userdataPtr = (PolyBase*)&inst->rootEntity;
  10989. return 1;
  10990. }
  10991. static int Polycode_Scene_get_sceneMouseRect(lua_State *L) {
  10992. luaL_checktype(L, 1, LUA_TUSERDATA);
  10993. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  10994. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10995. *userdataPtr = (PolyBase*)&inst->sceneMouseRect;
  10996. return 1;
  10997. }
  10998. static int Polycode_Scene_get_remapMouse(lua_State *L) {
  10999. luaL_checktype(L, 1, LUA_TUSERDATA);
  11000. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11001. lua_pushboolean(L, inst->remapMouse);
  11002. return 1;
  11003. }
  11004. static int Polycode_Scene_get_constrainPickingToViewport(lua_State *L) {
  11005. luaL_checktype(L, 1, LUA_TUSERDATA);
  11006. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11007. lua_pushboolean(L, inst->constrainPickingToViewport);
  11008. return 1;
  11009. }
  11010. static int Polycode_Scene_set_clearColor(lua_State *L) {
  11011. luaL_checktype(L, 1, LUA_TUSERDATA);
  11012. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11013. luaL_checktype(L, 2, LUA_TUSERDATA);
  11014. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11015. inst->clearColor = *argInst;
  11016. return 0;
  11017. }
  11018. static int Polycode_Scene_set_useClearColor(lua_State *L) {
  11019. luaL_checktype(L, 1, LUA_TUSERDATA);
  11020. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11021. bool param = lua_toboolean(L, 2) != 0;
  11022. inst->useClearColor = param;
  11023. return 0;
  11024. }
  11025. static int Polycode_Scene_set_useClearDepth(lua_State *L) {
  11026. luaL_checktype(L, 1, LUA_TUSERDATA);
  11027. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11028. bool param = lua_toboolean(L, 2) != 0;
  11029. inst->useClearDepth = param;
  11030. return 0;
  11031. }
  11032. static int Polycode_Scene_set_ambientColor(lua_State *L) {
  11033. luaL_checktype(L, 1, LUA_TUSERDATA);
  11034. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11035. luaL_checktype(L, 2, LUA_TUSERDATA);
  11036. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11037. inst->ambientColor = *argInst;
  11038. return 0;
  11039. }
  11040. static int Polycode_Scene_set_fogColor(lua_State *L) {
  11041. luaL_checktype(L, 1, LUA_TUSERDATA);
  11042. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11043. luaL_checktype(L, 2, LUA_TUSERDATA);
  11044. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11045. inst->fogColor = *argInst;
  11046. return 0;
  11047. }
  11048. static int Polycode_Scene_set_enabled(lua_State *L) {
  11049. luaL_checktype(L, 1, LUA_TUSERDATA);
  11050. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11051. bool param = lua_toboolean(L, 2) != 0;
  11052. inst->enabled = param;
  11053. return 0;
  11054. }
  11055. static int Polycode_Scene_set_ownsChildren(lua_State *L) {
  11056. luaL_checktype(L, 1, LUA_TUSERDATA);
  11057. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11058. bool param = lua_toboolean(L, 2) != 0;
  11059. inst->ownsChildren = param;
  11060. return 0;
  11061. }
  11062. static int Polycode_Scene_set_rootEntity(lua_State *L) {
  11063. luaL_checktype(L, 1, LUA_TUSERDATA);
  11064. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11065. luaL_checktype(L, 2, LUA_TUSERDATA);
  11066. Entity *argInst = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11067. inst->rootEntity = *argInst;
  11068. return 0;
  11069. }
  11070. static int Polycode_Scene_set_sceneMouseRect(lua_State *L) {
  11071. luaL_checktype(L, 1, LUA_TUSERDATA);
  11072. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11073. luaL_checktype(L, 2, LUA_TUSERDATA);
  11074. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  11075. inst->sceneMouseRect = *argInst;
  11076. return 0;
  11077. }
  11078. static int Polycode_Scene_set_remapMouse(lua_State *L) {
  11079. luaL_checktype(L, 1, LUA_TUSERDATA);
  11080. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11081. bool param = lua_toboolean(L, 2) != 0;
  11082. inst->remapMouse = param;
  11083. return 0;
  11084. }
  11085. static int Polycode_Scene_set_constrainPickingToViewport(lua_State *L) {
  11086. luaL_checktype(L, 1, LUA_TUSERDATA);
  11087. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11088. bool param = lua_toboolean(L, 2) != 0;
  11089. inst->constrainPickingToViewport = param;
  11090. return 0;
  11091. }
  11092. static int Polycode_Scene(lua_State *L) {
  11093. luaL_checktype(L, 1, LUA_TNUMBER);
  11094. int sceneType = lua_tointeger(L, 1);
  11095. bool virtualScene;
  11096. if(lua_isboolean(L, 2)) {
  11097. virtualScene = lua_toboolean(L, 2) != 0;
  11098. } else {
  11099. virtualScene = false;
  11100. }
  11101. Scene *inst = new Scene(sceneType, virtualScene);
  11102. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11103. *userdataPtr = (PolyBase*)inst;
  11104. luaL_getmetatable(L, "Polycode.Scene");
  11105. lua_setmetatable(L, -2);
  11106. return 1;
  11107. }
  11108. static int Polycode_Scene_addEntity(lua_State *L) {
  11109. luaL_checktype(L, 1, LUA_TUSERDATA);
  11110. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11111. luaL_checktype(L, 2, LUA_TUSERDATA);
  11112. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11113. inst->addEntity(entity);
  11114. return 0;
  11115. }
  11116. static int Polycode_Scene_addChild(lua_State *L) {
  11117. luaL_checktype(L, 1, LUA_TUSERDATA);
  11118. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11119. luaL_checktype(L, 2, LUA_TUSERDATA);
  11120. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11121. inst->addChild(entity);
  11122. return 0;
  11123. }
  11124. static int Polycode_Scene_removeEntity(lua_State *L) {
  11125. luaL_checktype(L, 1, LUA_TUSERDATA);
  11126. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11127. luaL_checktype(L, 2, LUA_TUSERDATA);
  11128. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11129. inst->removeEntity(entity);
  11130. return 0;
  11131. }
  11132. static int Polycode_Scene_getDefaultCamera(lua_State *L) {
  11133. luaL_checktype(L, 1, LUA_TUSERDATA);
  11134. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11135. PolyBase *ptrRetVal = (PolyBase*)inst->getDefaultCamera();
  11136. if(ptrRetVal == NULL) {
  11137. lua_pushnil(L);
  11138. } else {
  11139. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11140. *userdataPtr = ptrRetVal;
  11141. }
  11142. return 1;
  11143. }
  11144. static int Polycode_Scene_getActiveCamera(lua_State *L) {
  11145. luaL_checktype(L, 1, LUA_TUSERDATA);
  11146. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11147. PolyBase *ptrRetVal = (PolyBase*)inst->getActiveCamera();
  11148. if(ptrRetVal == NULL) {
  11149. lua_pushnil(L);
  11150. } else {
  11151. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11152. *userdataPtr = ptrRetVal;
  11153. }
  11154. return 1;
  11155. }
  11156. static int Polycode_Scene_setActiveCamera(lua_State *L) {
  11157. luaL_checktype(L, 1, LUA_TUSERDATA);
  11158. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11159. luaL_checktype(L, 2, LUA_TUSERDATA);
  11160. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  11161. inst->setActiveCamera(camera);
  11162. return 0;
  11163. }
  11164. static int Polycode_Scene_enableFog(lua_State *L) {
  11165. luaL_checktype(L, 1, LUA_TUSERDATA);
  11166. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11167. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11168. bool enable = lua_toboolean(L, 2) != 0;
  11169. inst->enableFog(enable);
  11170. return 0;
  11171. }
  11172. static int Polycode_Scene_setFogProperties(lua_State *L) {
  11173. luaL_checktype(L, 1, LUA_TUSERDATA);
  11174. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11175. luaL_checktype(L, 2, LUA_TNUMBER);
  11176. int fogMode = lua_tointeger(L, 2);
  11177. luaL_checktype(L, 3, LUA_TUSERDATA);
  11178. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  11179. luaL_checktype(L, 4, LUA_TNUMBER);
  11180. Number density = lua_tonumber(L, 4);
  11181. luaL_checktype(L, 5, LUA_TNUMBER);
  11182. Number startDepth = lua_tonumber(L, 5);
  11183. luaL_checktype(L, 6, LUA_TNUMBER);
  11184. Number endDepth = lua_tonumber(L, 6);
  11185. inst->setFogProperties(fogMode, color, density, startDepth, endDepth);
  11186. return 0;
  11187. }
  11188. static int Polycode_Scene_setSceneType(lua_State *L) {
  11189. luaL_checktype(L, 1, LUA_TUSERDATA);
  11190. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11191. luaL_checktype(L, 2, LUA_TNUMBER);
  11192. int newType = lua_tointeger(L, 2);
  11193. inst->setSceneType(newType);
  11194. return 0;
  11195. }
  11196. static int Polycode_Scene_fixedUpdate(lua_State *L) {
  11197. luaL_checktype(L, 1, LUA_TUSERDATA);
  11198. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11199. inst->fixedUpdate();
  11200. return 0;
  11201. }
  11202. static int Polycode_Scene_Update(lua_State *L) {
  11203. luaL_checktype(L, 1, LUA_TUSERDATA);
  11204. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11205. inst->Update();
  11206. return 0;
  11207. }
  11208. static int Polycode_Scene_setVirtual(lua_State *L) {
  11209. luaL_checktype(L, 1, LUA_TUSERDATA);
  11210. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11211. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11212. bool val = lua_toboolean(L, 2) != 0;
  11213. inst->setVirtual(val);
  11214. return 0;
  11215. }
  11216. static int Polycode_Scene_isVirtual(lua_State *L) {
  11217. luaL_checktype(L, 1, LUA_TUSERDATA);
  11218. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11219. lua_pushboolean(L, inst->isVirtual());
  11220. return 1;
  11221. }
  11222. static int Polycode_Scene_isEnabled(lua_State *L) {
  11223. luaL_checktype(L, 1, LUA_TUSERDATA);
  11224. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11225. lua_pushboolean(L, inst->isEnabled());
  11226. return 1;
  11227. }
  11228. static int Polycode_Scene_setEnabled(lua_State *L) {
  11229. luaL_checktype(L, 1, LUA_TUSERDATA);
  11230. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11231. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11232. bool enabled = lua_toboolean(L, 2) != 0;
  11233. inst->setEnabled(enabled);
  11234. return 0;
  11235. }
  11236. static int Polycode_Scene_Render(lua_State *L) {
  11237. luaL_checktype(L, 1, LUA_TUSERDATA);
  11238. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11239. luaL_checktype(L, 2, LUA_TUSERDATA);
  11240. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  11241. luaL_checktype(L, 3, LUA_TUSERDATA);
  11242. shared_ptr<RenderBuffer> targetFramebuffer = *(shared_ptr<RenderBuffer>*) *((PolyBase**)lua_touserdata(L, 3));
  11243. luaL_checktype(L, 4, LUA_TUSERDATA);
  11244. shared_ptr<Material> overrideMaterial = *(shared_ptr<Material>*) *((PolyBase**)lua_touserdata(L, 4));
  11245. luaL_checktype(L, 5, LUA_TBOOLEAN);
  11246. bool sendLights = lua_toboolean(L, 5) != 0;
  11247. inst->Render(targetCamera, targetFramebuffer, overrideMaterial, sendLights);
  11248. return 0;
  11249. }
  11250. static int Polycode_Scene_setOverrideMaterial(lua_State *L) {
  11251. luaL_checktype(L, 1, LUA_TUSERDATA);
  11252. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11253. luaL_checktype(L, 2, LUA_TUSERDATA);
  11254. shared_ptr<Material> material = *(shared_ptr<Material>*) *((PolyBase**)lua_touserdata(L, 2));
  11255. inst->setOverrideMaterial(material);
  11256. return 0;
  11257. }
  11258. static int Polycode_Scene_projectRayFromCameraAndViewportCoordinate(lua_State *L) {
  11259. luaL_checktype(L, 1, LUA_TUSERDATA);
  11260. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11261. luaL_checktype(L, 2, LUA_TUSERDATA);
  11262. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  11263. luaL_checktype(L, 3, LUA_TUSERDATA);
  11264. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  11265. Ray *retInst = new Ray();
  11266. *retInst = inst->projectRayFromCameraAndViewportCoordinate(camera, coordinate);
  11267. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11268. luaL_getmetatable(L, "Polycode.Ray");
  11269. lua_setmetatable(L, -2);
  11270. *userdataPtr = (PolyBase*)retInst;
  11271. return 1;
  11272. }
  11273. static int Polycode_Scene_addLight(lua_State *L) {
  11274. luaL_checktype(L, 1, LUA_TUSERDATA);
  11275. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11276. luaL_checktype(L, 2, LUA_TUSERDATA);
  11277. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  11278. inst->addLight(light);
  11279. return 0;
  11280. }
  11281. static int Polycode_Scene_removeLight(lua_State *L) {
  11282. luaL_checktype(L, 1, LUA_TUSERDATA);
  11283. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11284. luaL_checktype(L, 2, LUA_TUSERDATA);
  11285. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  11286. inst->removeLight(light);
  11287. return 0;
  11288. }
  11289. static int Polycode_Scene_getNumLights(lua_State *L) {
  11290. luaL_checktype(L, 1, LUA_TUSERDATA);
  11291. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11292. lua_pushinteger(L, inst->getNumLights());
  11293. return 1;
  11294. }
  11295. static int Polycode_Scene_getLight(lua_State *L) {
  11296. luaL_checktype(L, 1, LUA_TUSERDATA);
  11297. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11298. luaL_checktype(L, 2, LUA_TNUMBER);
  11299. int index = lua_tointeger(L, 2);
  11300. PolyBase *ptrRetVal = (PolyBase*)inst->getLight(index);
  11301. if(ptrRetVal == NULL) {
  11302. lua_pushnil(L);
  11303. } else {
  11304. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11305. *userdataPtr = ptrRetVal;
  11306. }
  11307. return 1;
  11308. }
  11309. static int Polycode_Scene_doVisibilityChecking(lua_State *L) {
  11310. luaL_checktype(L, 1, LUA_TUSERDATA);
  11311. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11312. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11313. bool val = lua_toboolean(L, 2) != 0;
  11314. inst->doVisibilityChecking(val);
  11315. return 0;
  11316. }
  11317. static int Polycode_Scene_doesVisibilityChecking(lua_State *L) {
  11318. luaL_checktype(L, 1, LUA_TUSERDATA);
  11319. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11320. lua_pushboolean(L, inst->doesVisibilityChecking());
  11321. return 1;
  11322. }
  11323. static int Polycode_delete_Scene(lua_State *L) {
  11324. luaL_checktype(L, 1, LUA_TUSERDATA);
  11325. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11326. delete ((Scene*) *inst);
  11327. *inst = NULL;
  11328. return 0;
  11329. }
  11330. static int Polycode_SceneEntityInstanceResourceEntry(lua_State *L) {
  11331. luaL_checktype(L, 1, LUA_TUSERDATA);
  11332. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11333. SceneEntityInstanceResourceEntry *inst = new SceneEntityInstanceResourceEntry(instance);
  11334. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11335. *userdataPtr = (PolyBase*)inst;
  11336. luaL_getmetatable(L, "Polycode.SceneEntityInstanceResourceEntry");
  11337. lua_setmetatable(L, -2);
  11338. return 1;
  11339. }
  11340. static int Polycode_SceneEntityInstanceResourceEntry_getInstance(lua_State *L) {
  11341. luaL_checktype(L, 1, LUA_TUSERDATA);
  11342. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11343. PolyBase *ptrRetVal = (PolyBase*)inst->getInstance();
  11344. if(ptrRetVal == NULL) {
  11345. lua_pushnil(L);
  11346. } else {
  11347. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11348. *userdataPtr = ptrRetVal;
  11349. }
  11350. return 1;
  11351. }
  11352. static int Polycode_SceneEntityInstanceResourceEntry_reloadResource(lua_State *L) {
  11353. luaL_checktype(L, 1, LUA_TUSERDATA);
  11354. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11355. inst->reloadResource();
  11356. return 0;
  11357. }
  11358. static int Polycode_delete_SceneEntityInstanceResourceEntry(lua_State *L) {
  11359. luaL_checktype(L, 1, LUA_TUSERDATA);
  11360. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11361. delete ((SceneEntityInstanceResourceEntry*) *inst);
  11362. *inst = NULL;
  11363. return 0;
  11364. }
  11365. static int Polycode_SceneEntityInstance_get_cloneUsingReload(lua_State *L) {
  11366. luaL_checktype(L, 1, LUA_TUSERDATA);
  11367. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11368. lua_pushboolean(L, inst->cloneUsingReload);
  11369. return 1;
  11370. }
  11371. static int Polycode_SceneEntityInstance_get_fileName(lua_State *L) {
  11372. luaL_checktype(L, 1, LUA_TUSERDATA);
  11373. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11374. lua_pushstring(L, inst->fileName.c_str());
  11375. return 1;
  11376. }
  11377. static int Polycode_SceneEntityInstance_set_cloneUsingReload(lua_State *L) {
  11378. luaL_checktype(L, 1, LUA_TUSERDATA);
  11379. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11380. bool param = lua_toboolean(L, 2) != 0;
  11381. inst->cloneUsingReload = param;
  11382. return 0;
  11383. }
  11384. static int Polycode_SceneEntityInstance_set_fileName(lua_State *L) {
  11385. luaL_checktype(L, 1, LUA_TUSERDATA);
  11386. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11387. String param = lua_tostring(L, 2);
  11388. inst->fileName = param;
  11389. return 0;
  11390. }
  11391. static int Polycode_SceneEntityInstance(lua_State *L) {
  11392. luaL_checktype(L, 1, LUA_TUSERDATA);
  11393. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11394. luaL_checktype(L, 2, LUA_TSTRING);
  11395. String fileName = String(lua_tostring(L, 2));
  11396. SceneEntityInstance *inst = new SceneEntityInstance(parentScene, fileName);
  11397. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11398. *userdataPtr = (PolyBase*)inst;
  11399. luaL_getmetatable(L, "Polycode.SceneEntityInstance");
  11400. lua_setmetatable(L, -2);
  11401. return 1;
  11402. }
  11403. static int Polycode_SceneEntityInstance_BlankSceneEntityInstance(lua_State *L) {
  11404. luaL_checktype(L, 1, LUA_TUSERDATA);
  11405. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11406. PolyBase *ptrRetVal = (PolyBase*)SceneEntityInstance::BlankSceneEntityInstance(parentScene);
  11407. if(ptrRetVal == NULL) {
  11408. lua_pushnil(L);
  11409. } else {
  11410. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11411. *userdataPtr = ptrRetVal;
  11412. }
  11413. return 1;
  11414. }
  11415. static int Polycode_SceneEntityInstance_Clone(lua_State *L) {
  11416. luaL_checktype(L, 1, LUA_TUSERDATA);
  11417. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11418. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11419. bool deepClone = lua_toboolean(L, 2) != 0;
  11420. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11421. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  11422. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  11423. if(ptrRetVal == NULL) {
  11424. lua_pushnil(L);
  11425. } else {
  11426. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11427. *userdataPtr = ptrRetVal;
  11428. }
  11429. return 1;
  11430. }
  11431. static int Polycode_SceneEntityInstance_applyClone(lua_State *L) {
  11432. luaL_checktype(L, 1, LUA_TUSERDATA);
  11433. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11434. luaL_checktype(L, 2, LUA_TUSERDATA);
  11435. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11436. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11437. bool deepClone = lua_toboolean(L, 3) != 0;
  11438. luaL_checktype(L, 4, LUA_TBOOLEAN);
  11439. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  11440. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  11441. return 0;
  11442. }
  11443. static int Polycode_SceneEntityInstance_reloadEntityInstance(lua_State *L) {
  11444. luaL_checktype(L, 1, LUA_TUSERDATA);
  11445. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11446. inst->reloadEntityInstance();
  11447. return 0;
  11448. }
  11449. static int Polycode_SceneEntityInstance_clearInstance(lua_State *L) {
  11450. luaL_checktype(L, 1, LUA_TUSERDATA);
  11451. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11452. inst->clearInstance();
  11453. return 0;
  11454. }
  11455. static int Polycode_SceneEntityInstance_parseObjectIntoCurve(lua_State *L) {
  11456. luaL_checktype(L, 1, LUA_TUSERDATA);
  11457. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11458. luaL_checktype(L, 2, LUA_TUSERDATA);
  11459. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  11460. luaL_checktype(L, 3, LUA_TUSERDATA);
  11461. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  11462. inst->parseObjectIntoCurve(entry, curve);
  11463. return 0;
  11464. }
  11465. static int Polycode_SceneEntityInstance_loadObjectEntryIntoEntity(lua_State *L) {
  11466. luaL_checktype(L, 1, LUA_TUSERDATA);
  11467. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11468. luaL_checktype(L, 2, LUA_TUSERDATA);
  11469. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  11470. Entity* targetEntity;
  11471. if(lua_isuserdata(L, 3)) {
  11472. targetEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 3));
  11473. } else {
  11474. targetEntity = NULL;
  11475. }
  11476. int entityFileVersion;
  11477. if(lua_isnumber(L, 4)) {
  11478. entityFileVersion = lua_tointeger(L, 4);
  11479. } else {
  11480. entityFileVersion = 1;
  11481. }
  11482. PolyBase *ptrRetVal = (PolyBase*)inst->loadObjectEntryIntoEntity(entry, targetEntity, entityFileVersion);
  11483. if(ptrRetVal == NULL) {
  11484. lua_pushnil(L);
  11485. } else {
  11486. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11487. *userdataPtr = ptrRetVal;
  11488. }
  11489. return 1;
  11490. }
  11491. static int Polycode_SceneEntityInstance_loadFromFile(lua_State *L) {
  11492. luaL_checktype(L, 1, LUA_TUSERDATA);
  11493. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11494. luaL_checktype(L, 2, LUA_TSTRING);
  11495. String fileName = String(lua_tostring(L, 2));
  11496. lua_pushboolean(L, inst->loadFromFile(fileName));
  11497. return 1;
  11498. }
  11499. static int Polycode_SceneEntityInstance_applySceneMesh(lua_State *L) {
  11500. luaL_checktype(L, 1, LUA_TUSERDATA);
  11501. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11502. luaL_checktype(L, 2, LUA_TUSERDATA);
  11503. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  11504. luaL_checktype(L, 3, LUA_TUSERDATA);
  11505. SceneMesh* sceneMesh = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 3));
  11506. inst->applySceneMesh(entry, sceneMesh);
  11507. return 0;
  11508. }
  11509. static int Polycode_SceneEntityInstance_linkResourcePool(lua_State *L) {
  11510. luaL_checktype(L, 1, LUA_TUSERDATA);
  11511. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11512. luaL_checktype(L, 2, LUA_TUSERDATA);
  11513. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11514. inst->linkResourcePool(pool);
  11515. return 0;
  11516. }
  11517. static int Polycode_SceneEntityInstance_getNumLinkedResourePools(lua_State *L) {
  11518. luaL_checktype(L, 1, LUA_TUSERDATA);
  11519. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11520. lua_pushinteger(L, inst->getNumLinkedResourePools());
  11521. return 1;
  11522. }
  11523. static int Polycode_SceneEntityInstance_getLinkedResourcePoolAtIndex(lua_State *L) {
  11524. luaL_checktype(L, 1, LUA_TUSERDATA);
  11525. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11526. luaL_checktype(L, 2, LUA_TNUMBER);
  11527. int index = lua_tointeger(L, 2);
  11528. PolyBase *ptrRetVal = (PolyBase*)inst->getLinkedResourcePoolAtIndex(index);
  11529. if(ptrRetVal == NULL) {
  11530. lua_pushnil(L);
  11531. } else {
  11532. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11533. *userdataPtr = ptrRetVal;
  11534. }
  11535. return 1;
  11536. }
  11537. static int Polycode_SceneEntityInstance_unlinkResourcePool(lua_State *L) {
  11538. luaL_checktype(L, 1, LUA_TUSERDATA);
  11539. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11540. luaL_checktype(L, 2, LUA_TUSERDATA);
  11541. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11542. inst->unlinkResourcePool(pool);
  11543. return 0;
  11544. }
  11545. static int Polycode_SceneEntityInstance_getResourceEntry(lua_State *L) {
  11546. luaL_checktype(L, 1, LUA_TUSERDATA);
  11547. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11548. shared_ptr<SceneEntityInstanceResourceEntry> *retInst = new shared_ptr<SceneEntityInstanceResourceEntry>();
  11549. *retInst = inst->getResourceEntry();
  11550. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11551. luaL_getmetatable(L, "Polycode.shared_ptr<SceneEntityInstanceResourceEntry>");
  11552. lua_setmetatable(L, -2);
  11553. *userdataPtr = (PolyBase*)retInst;
  11554. return 1;
  11555. }
  11556. static int Polycode_SceneEntityInstance_getTopLevelResourcePool(lua_State *L) {
  11557. luaL_checktype(L, 1, LUA_TUSERDATA);
  11558. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11559. PolyBase *ptrRetVal = (PolyBase*)inst->getTopLevelResourcePool();
  11560. if(ptrRetVal == NULL) {
  11561. lua_pushnil(L);
  11562. } else {
  11563. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11564. *userdataPtr = ptrRetVal;
  11565. }
  11566. return 1;
  11567. }
  11568. static int Polycode_SceneEntityInstance_hasLayerID(lua_State *L) {
  11569. luaL_checktype(L, 1, LUA_TUSERDATA);
  11570. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11571. luaL_checktype(L, 2, LUA_TUSERDATA);
  11572. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  11573. lua_pushboolean(L, inst->hasLayerID(layerID));
  11574. return 1;
  11575. }
  11576. static int Polycode_SceneEntityInstance_getNumLayers(lua_State *L) {
  11577. luaL_checktype(L, 1, LUA_TUSERDATA);
  11578. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11579. lua_pushinteger(L, inst->getNumLayers());
  11580. return 1;
  11581. }
  11582. static int Polycode_SceneEntityInstance_getLayerAtIndex(lua_State *L) {
  11583. luaL_checktype(L, 1, LUA_TUSERDATA);
  11584. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11585. luaL_checktype(L, 2, LUA_TNUMBER);
  11586. int index = lua_tointeger(L, 2);
  11587. PolyBase *ptrRetVal = (PolyBase*)inst->getLayerAtIndex(index);
  11588. if(ptrRetVal == NULL) {
  11589. lua_pushnil(L);
  11590. } else {
  11591. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11592. *userdataPtr = ptrRetVal;
  11593. }
  11594. return 1;
  11595. }
  11596. static int Polycode_SceneEntityInstance_removeLayer(lua_State *L) {
  11597. luaL_checktype(L, 1, LUA_TUSERDATA);
  11598. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11599. luaL_checktype(L, 2, LUA_TUSERDATA);
  11600. SceneEntityInstanceLayer* layer = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 2));
  11601. inst->removeLayer(layer);
  11602. return 0;
  11603. }
  11604. static int Polycode_SceneEntityInstance_createNewLayer(lua_State *L) {
  11605. luaL_checktype(L, 1, LUA_TUSERDATA);
  11606. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11607. luaL_checktype(L, 2, LUA_TSTRING);
  11608. String name = String(lua_tostring(L, 2));
  11609. PolyBase *ptrRetVal = (PolyBase*)inst->createNewLayer(name);
  11610. if(ptrRetVal == NULL) {
  11611. lua_pushnil(L);
  11612. } else {
  11613. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11614. *userdataPtr = ptrRetVal;
  11615. }
  11616. return 1;
  11617. }
  11618. static int Polycode_SceneEntityInstance_getFileName(lua_State *L) {
  11619. luaL_checktype(L, 1, LUA_TUSERDATA);
  11620. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11621. lua_pushstring(L, inst->getFileName().c_str());
  11622. return 1;
  11623. }
  11624. static int Polycode_delete_SceneEntityInstance(lua_State *L) {
  11625. luaL_checktype(L, 1, LUA_TUSERDATA);
  11626. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11627. delete ((SceneEntityInstance*) *inst);
  11628. *inst = NULL;
  11629. return 0;
  11630. }
  11631. static int Polycode_SceneEntityInstanceLayer_get_name(lua_State *L) {
  11632. luaL_checktype(L, 1, LUA_TUSERDATA);
  11633. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11634. lua_pushstring(L, inst->name.c_str());
  11635. return 1;
  11636. }
  11637. static int Polycode_SceneEntityInstanceLayer_get_layerID(lua_State *L) {
  11638. luaL_checktype(L, 1, LUA_TUSERDATA);
  11639. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11640. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11641. *userdataPtr = (PolyBase*)&inst->layerID;
  11642. return 1;
  11643. }
  11644. static int Polycode_SceneEntityInstanceLayer_get_visible(lua_State *L) {
  11645. luaL_checktype(L, 1, LUA_TUSERDATA);
  11646. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11647. lua_pushboolean(L, inst->visible);
  11648. return 1;
  11649. }
  11650. static int Polycode_SceneEntityInstanceLayer_get_instance(lua_State *L) {
  11651. luaL_checktype(L, 1, LUA_TUSERDATA);
  11652. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11653. if(!inst->instance) {
  11654. lua_pushnil(L);
  11655. } else {
  11656. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11657. *userdataPtr = (PolyBase*)inst->instance;
  11658. }
  11659. return 1;
  11660. }
  11661. static int Polycode_SceneEntityInstanceLayer_set_name(lua_State *L) {
  11662. luaL_checktype(L, 1, LUA_TUSERDATA);
  11663. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11664. String param = lua_tostring(L, 2);
  11665. inst->name = param;
  11666. return 0;
  11667. }
  11668. static int Polycode_SceneEntityInstanceLayer_set_layerID(lua_State *L) {
  11669. luaL_checktype(L, 1, LUA_TUSERDATA);
  11670. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11671. luaL_checktype(L, 2, LUA_TUSERDATA);
  11672. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  11673. inst->layerID = *argInst;
  11674. return 0;
  11675. }
  11676. static int Polycode_SceneEntityInstanceLayer_set_visible(lua_State *L) {
  11677. luaL_checktype(L, 1, LUA_TUSERDATA);
  11678. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11679. bool param = lua_toboolean(L, 2) != 0;
  11680. inst->visible = param;
  11681. return 0;
  11682. }
  11683. static int Polycode_SceneEntityInstanceLayer_set_instance(lua_State *L) {
  11684. luaL_checktype(L, 1, LUA_TUSERDATA);
  11685. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11686. luaL_checktype(L, 2, LUA_TUSERDATA);
  11687. SceneEntityInstance* *argInst = (SceneEntityInstance**) *((PolyBase**)lua_touserdata(L, 2));
  11688. inst->instance = *argInst;
  11689. return 0;
  11690. }
  11691. static int Polycode_SceneEntityInstanceLayer(lua_State *L) {
  11692. luaL_checktype(L, 1, LUA_TUSERDATA);
  11693. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  11694. luaL_checktype(L, 2, LUA_TSTRING);
  11695. String name = String(lua_tostring(L, 2));
  11696. SceneEntityInstanceLayer *inst = new SceneEntityInstanceLayer(instance, name);
  11697. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11698. *userdataPtr = (PolyBase*)inst;
  11699. luaL_getmetatable(L, "Polycode.SceneEntityInstanceLayer");
  11700. lua_setmetatable(L, -2);
  11701. return 1;
  11702. }
  11703. static int Polycode_SceneEntityInstanceLayer_setLayerVisibility(lua_State *L) {
  11704. luaL_checktype(L, 1, LUA_TUSERDATA);
  11705. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  11706. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11707. bool val = lua_toboolean(L, 2) != 0;
  11708. inst->setLayerVisibility(val);
  11709. return 0;
  11710. }
  11711. static int Polycode_delete_SceneEntityInstanceLayer(lua_State *L) {
  11712. luaL_checktype(L, 1, LUA_TUSERDATA);
  11713. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11714. delete ((SceneEntityInstanceLayer*) *inst);
  11715. *inst = NULL;
  11716. return 0;
  11717. }
  11718. static int Polycode_SceneLabel_get_positionAtBaseline(lua_State *L) {
  11719. luaL_checktype(L, 1, LUA_TUSERDATA);
  11720. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11721. lua_pushboolean(L, inst->positionAtBaseline);
  11722. return 1;
  11723. }
  11724. static int Polycode_SceneLabel_set_positionAtBaseline(lua_State *L) {
  11725. luaL_checktype(L, 1, LUA_TUSERDATA);
  11726. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11727. bool param = lua_toboolean(L, 2) != 0;
  11728. inst->positionAtBaseline = param;
  11729. return 0;
  11730. }
  11731. static int Polycode_SceneLabel(lua_State *L) {
  11732. luaL_checktype(L, 1, LUA_TSTRING);
  11733. String text = String(lua_tostring(L, 1));
  11734. luaL_checktype(L, 2, LUA_TNUMBER);
  11735. int size = lua_tointeger(L, 2);
  11736. String fontName;
  11737. if(lua_isstring(L, 3)) {
  11738. fontName = lua_tostring(L, 3);
  11739. } else {
  11740. fontName = "sans";
  11741. }
  11742. int amode;
  11743. if(lua_isnumber(L, 4)) {
  11744. amode = lua_tointeger(L, 4);
  11745. } else {
  11746. amode = 0;
  11747. }
  11748. Number actualHeight;
  11749. if(lua_isnumber(L, 5)) {
  11750. actualHeight = lua_tonumber(L, 5);
  11751. } else {
  11752. actualHeight = 0.0;
  11753. }
  11754. SceneLabel *inst = new SceneLabel(text, size, fontName, amode, actualHeight);
  11755. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11756. *userdataPtr = (PolyBase*)inst;
  11757. luaL_getmetatable(L, "Polycode.SceneLabel");
  11758. lua_setmetatable(L, -2);
  11759. return 1;
  11760. }
  11761. static int Polycode_SceneLabel_getText(lua_State *L) {
  11762. luaL_checktype(L, 1, LUA_TUSERDATA);
  11763. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11764. lua_pushstring(L, inst->getText().c_str());
  11765. return 1;
  11766. }
  11767. static int Polycode_SceneLabel_setLabelActualHeight(lua_State *L) {
  11768. luaL_checktype(L, 1, LUA_TUSERDATA);
  11769. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11770. luaL_checktype(L, 2, LUA_TNUMBER);
  11771. Number actualHeight = lua_tonumber(L, 2);
  11772. inst->setLabelActualHeight(actualHeight);
  11773. return 0;
  11774. }
  11775. static int Polycode_SceneLabel_getLabelActualHeight(lua_State *L) {
  11776. luaL_checktype(L, 1, LUA_TUSERDATA);
  11777. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11778. lua_pushnumber(L, inst->getLabelActualHeight());
  11779. return 1;
  11780. }
  11781. static int Polycode_SceneLabel_Render(lua_State *L) {
  11782. luaL_checktype(L, 1, LUA_TUSERDATA);
  11783. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11784. luaL_checktype(L, 2, LUA_TUSERDATA);
  11785. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  11786. inst->Render(buffer);
  11787. return 0;
  11788. }
  11789. static int Polycode_SceneLabel_getTextWidthForString(lua_State *L) {
  11790. luaL_checktype(L, 1, LUA_TUSERDATA);
  11791. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11792. luaL_checktype(L, 2, LUA_TSTRING);
  11793. String text = String(lua_tostring(L, 2));
  11794. lua_pushinteger(L, inst->getTextWidthForString(text));
  11795. return 1;
  11796. }
  11797. static int Polycode_SceneLabel_setText(lua_State *L) {
  11798. luaL_checktype(L, 1, LUA_TUSERDATA);
  11799. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11800. luaL_checktype(L, 2, LUA_TSTRING);
  11801. String newText = String(lua_tostring(L, 2));
  11802. inst->setText(newText);
  11803. return 0;
  11804. }
  11805. static int Polycode_SceneLabel_Clone(lua_State *L) {
  11806. luaL_checktype(L, 1, LUA_TUSERDATA);
  11807. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11808. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11809. bool deepClone = lua_toboolean(L, 2) != 0;
  11810. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11811. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  11812. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  11813. if(ptrRetVal == NULL) {
  11814. lua_pushnil(L);
  11815. } else {
  11816. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11817. *userdataPtr = ptrRetVal;
  11818. }
  11819. return 1;
  11820. }
  11821. static int Polycode_SceneLabel_applyClone(lua_State *L) {
  11822. luaL_checktype(L, 1, LUA_TUSERDATA);
  11823. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11824. luaL_checktype(L, 2, LUA_TUSERDATA);
  11825. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11826. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11827. bool deepClone = lua_toboolean(L, 3) != 0;
  11828. luaL_checktype(L, 4, LUA_TBOOLEAN);
  11829. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  11830. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  11831. return 0;
  11832. }
  11833. static int Polycode_SceneLabel_updateFromLabel(lua_State *L) {
  11834. luaL_checktype(L, 1, LUA_TUSERDATA);
  11835. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11836. inst->updateFromLabel();
  11837. return 0;
  11838. }
  11839. static int Polycode_SceneLabel_getLabel(lua_State *L) {
  11840. luaL_checktype(L, 1, LUA_TUSERDATA);
  11841. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  11842. PolyBase *ptrRetVal = (PolyBase*)inst->getLabel();
  11843. if(ptrRetVal == NULL) {
  11844. lua_pushnil(L);
  11845. } else {
  11846. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11847. *userdataPtr = ptrRetVal;
  11848. }
  11849. return 1;
  11850. }
  11851. static int Polycode_delete_SceneLabel(lua_State *L) {
  11852. luaL_checktype(L, 1, LUA_TUSERDATA);
  11853. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11854. delete ((SceneLabel*) *inst);
  11855. *inst = NULL;
  11856. return 0;
  11857. }
  11858. static int Polycode_SceneLight(lua_State *L) {
  11859. luaL_checktype(L, 1, LUA_TNUMBER);
  11860. int type = lua_tointeger(L, 1);
  11861. luaL_checktype(L, 2, LUA_TUSERDATA);
  11862. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  11863. luaL_checktype(L, 3, LUA_TNUMBER);
  11864. Number intensity = lua_tonumber(L, 3);
  11865. Number constantAttenuation;
  11866. if(lua_isnumber(L, 4)) {
  11867. constantAttenuation = lua_tonumber(L, 4);
  11868. } else {
  11869. constantAttenuation = 1;
  11870. }
  11871. Number linearAttenuation;
  11872. if(lua_isnumber(L, 5)) {
  11873. linearAttenuation = lua_tonumber(L, 5);
  11874. } else {
  11875. linearAttenuation = 1;
  11876. }
  11877. Number quadraticAttenuation;
  11878. if(lua_isnumber(L, 6)) {
  11879. quadraticAttenuation = lua_tonumber(L, 6);
  11880. } else {
  11881. quadraticAttenuation = 1;
  11882. }
  11883. SceneLight *inst = new SceneLight(type, parentScene, intensity, constantAttenuation, linearAttenuation, quadraticAttenuation);
  11884. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11885. *userdataPtr = (PolyBase*)inst;
  11886. luaL_getmetatable(L, "Polycode.SceneLight");
  11887. lua_setmetatable(L, -2);
  11888. return 1;
  11889. }
  11890. static int Polycode_SceneLight_getIntensity(lua_State *L) {
  11891. luaL_checktype(L, 1, LUA_TUSERDATA);
  11892. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11893. lua_pushnumber(L, inst->getIntensity());
  11894. return 1;
  11895. }
  11896. static int Polycode_SceneLight_setIntensity(lua_State *L) {
  11897. luaL_checktype(L, 1, LUA_TUSERDATA);
  11898. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11899. luaL_checktype(L, 2, LUA_TNUMBER);
  11900. Number newIntensity = lua_tonumber(L, 2);
  11901. inst->setIntensity(newIntensity);
  11902. return 0;
  11903. }
  11904. static int Polycode_SceneLight_setAttenuation(lua_State *L) {
  11905. luaL_checktype(L, 1, LUA_TUSERDATA);
  11906. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11907. luaL_checktype(L, 2, LUA_TNUMBER);
  11908. Number constantAttenuation = lua_tonumber(L, 2);
  11909. luaL_checktype(L, 3, LUA_TNUMBER);
  11910. Number linearAttenuation = lua_tonumber(L, 3);
  11911. luaL_checktype(L, 4, LUA_TNUMBER);
  11912. Number quadraticAttenuation = lua_tonumber(L, 4);
  11913. inst->setAttenuation(constantAttenuation, linearAttenuation, quadraticAttenuation);
  11914. return 0;
  11915. }
  11916. static int Polycode_SceneLight_getConstantAttenuation(lua_State *L) {
  11917. luaL_checktype(L, 1, LUA_TUSERDATA);
  11918. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11919. lua_pushnumber(L, inst->getConstantAttenuation());
  11920. return 1;
  11921. }
  11922. static int Polycode_SceneLight_getLinearAttenuation(lua_State *L) {
  11923. luaL_checktype(L, 1, LUA_TUSERDATA);
  11924. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11925. lua_pushnumber(L, inst->getLinearAttenuation());
  11926. return 1;
  11927. }
  11928. static int Polycode_SceneLight_getQuadraticAttenuation(lua_State *L) {
  11929. luaL_checktype(L, 1, LUA_TUSERDATA);
  11930. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11931. lua_pushnumber(L, inst->getQuadraticAttenuation());
  11932. return 1;
  11933. }
  11934. static int Polycode_SceneLight_getType(lua_State *L) {
  11935. luaL_checktype(L, 1, LUA_TUSERDATA);
  11936. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11937. lua_pushinteger(L, inst->getType());
  11938. return 1;
  11939. }
  11940. static int Polycode_SceneLight_renderDepthMap(lua_State *L) {
  11941. luaL_checktype(L, 1, LUA_TUSERDATA);
  11942. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11943. luaL_checktype(L, 2, LUA_TUSERDATA);
  11944. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  11945. inst->renderDepthMap(scene);
  11946. return 0;
  11947. }
  11948. static int Polycode_SceneLight_getZBufferTexture(lua_State *L) {
  11949. luaL_checktype(L, 1, LUA_TUSERDATA);
  11950. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11951. shared_ptr<Texture> *retInst = new shared_ptr<Texture>();
  11952. *retInst = inst->getZBufferTexture();
  11953. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11954. luaL_getmetatable(L, "Polycode.shared_ptr<Texture>");
  11955. lua_setmetatable(L, -2);
  11956. *userdataPtr = (PolyBase*)retInst;
  11957. return 1;
  11958. }
  11959. static int Polycode_SceneLight_setSpecularLightColor(lua_State *L) {
  11960. luaL_checktype(L, 1, LUA_TUSERDATA);
  11961. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11962. luaL_checktype(L, 2, LUA_TNUMBER);
  11963. Number r = lua_tonumber(L, 2);
  11964. luaL_checktype(L, 3, LUA_TNUMBER);
  11965. Number g = lua_tonumber(L, 3);
  11966. luaL_checktype(L, 4, LUA_TNUMBER);
  11967. Number b = lua_tonumber(L, 4);
  11968. luaL_checktype(L, 5, LUA_TNUMBER);
  11969. Number a = lua_tonumber(L, 5);
  11970. inst->setSpecularLightColor(r, g, b, a);
  11971. return 0;
  11972. }
  11973. static int Polycode_SceneLight_setDiffuseLightColor(lua_State *L) {
  11974. luaL_checktype(L, 1, LUA_TUSERDATA);
  11975. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11976. luaL_checktype(L, 2, LUA_TNUMBER);
  11977. Number r = lua_tonumber(L, 2);
  11978. luaL_checktype(L, 3, LUA_TNUMBER);
  11979. Number g = lua_tonumber(L, 3);
  11980. luaL_checktype(L, 4, LUA_TNUMBER);
  11981. Number b = lua_tonumber(L, 4);
  11982. Number a;
  11983. if(lua_isnumber(L, 5)) {
  11984. a = lua_tonumber(L, 5);
  11985. } else {
  11986. a = 1.0;
  11987. }
  11988. inst->setDiffuseLightColor(r, g, b, a);
  11989. return 0;
  11990. }
  11991. static int Polycode_SceneLight_setLightColor(lua_State *L) {
  11992. luaL_checktype(L, 1, LUA_TUSERDATA);
  11993. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  11994. luaL_checktype(L, 2, LUA_TNUMBER);
  11995. Number r = lua_tonumber(L, 2);
  11996. luaL_checktype(L, 3, LUA_TNUMBER);
  11997. Number g = lua_tonumber(L, 3);
  11998. luaL_checktype(L, 4, LUA_TNUMBER);
  11999. Number b = lua_tonumber(L, 4);
  12000. Number a;
  12001. if(lua_isnumber(L, 5)) {
  12002. a = lua_tonumber(L, 5);
  12003. } else {
  12004. a = 1.0;
  12005. }
  12006. inst->setLightColor(r, g, b, a);
  12007. return 0;
  12008. }
  12009. static int Polycode_SceneLight_setSpotlightProperties(lua_State *L) {
  12010. luaL_checktype(L, 1, LUA_TUSERDATA);
  12011. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12012. luaL_checktype(L, 2, LUA_TNUMBER);
  12013. Number spotlightCutoff = lua_tonumber(L, 2);
  12014. luaL_checktype(L, 3, LUA_TNUMBER);
  12015. Number spotlightExponent = lua_tonumber(L, 3);
  12016. inst->setSpotlightProperties(spotlightCutoff, spotlightExponent);
  12017. return 0;
  12018. }
  12019. static int Polycode_SceneLight_getSpotlightCutoff(lua_State *L) {
  12020. luaL_checktype(L, 1, LUA_TUSERDATA);
  12021. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12022. lua_pushnumber(L, inst->getSpotlightCutoff());
  12023. return 1;
  12024. }
  12025. static int Polycode_SceneLight_getSpotlightExponent(lua_State *L) {
  12026. luaL_checktype(L, 1, LUA_TUSERDATA);
  12027. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12028. lua_pushnumber(L, inst->getSpotlightExponent());
  12029. return 1;
  12030. }
  12031. static int Polycode_SceneLight_enableShadows(lua_State *L) {
  12032. luaL_checktype(L, 1, LUA_TUSERDATA);
  12033. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12034. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12035. bool val = lua_toboolean(L, 2) != 0;
  12036. int resolution;
  12037. if(lua_isnumber(L, 3)) {
  12038. resolution = lua_tointeger(L, 3);
  12039. } else {
  12040. resolution = 256;
  12041. }
  12042. inst->enableShadows(val, resolution);
  12043. return 0;
  12044. }
  12045. static int Polycode_SceneLight_setShadowMapFOV(lua_State *L) {
  12046. luaL_checktype(L, 1, LUA_TUSERDATA);
  12047. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12048. luaL_checktype(L, 2, LUA_TNUMBER);
  12049. Number fov = lua_tonumber(L, 2);
  12050. inst->setShadowMapFOV(fov);
  12051. return 0;
  12052. }
  12053. static int Polycode_SceneLight_getShadowMapFOV(lua_State *L) {
  12054. luaL_checktype(L, 1, LUA_TUSERDATA);
  12055. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12056. lua_pushnumber(L, inst->getShadowMapFOV());
  12057. return 1;
  12058. }
  12059. static int Polycode_SceneLight_getShadowMapResolution(lua_State *L) {
  12060. luaL_checktype(L, 1, LUA_TUSERDATA);
  12061. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12062. lua_pushinteger(L, inst->getShadowMapResolution());
  12063. return 1;
  12064. }
  12065. static int Polycode_SceneLight_areShadowsEnabled(lua_State *L) {
  12066. luaL_checktype(L, 1, LUA_TUSERDATA);
  12067. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12068. lua_pushboolean(L, inst->areShadowsEnabled());
  12069. return 1;
  12070. }
  12071. static int Polycode_SceneLight_getLightType(lua_State *L) {
  12072. luaL_checktype(L, 1, LUA_TUSERDATA);
  12073. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12074. lua_pushinteger(L, inst->getLightType());
  12075. return 1;
  12076. }
  12077. static int Polycode_SceneLight_setLightImportance(lua_State *L) {
  12078. luaL_checktype(L, 1, LUA_TUSERDATA);
  12079. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12080. luaL_checktype(L, 2, LUA_TNUMBER);
  12081. int newImportance = lua_tointeger(L, 2);
  12082. inst->setLightImportance(newImportance);
  12083. return 0;
  12084. }
  12085. static int Polycode_SceneLight_getLightImportance(lua_State *L) {
  12086. luaL_checktype(L, 1, LUA_TUSERDATA);
  12087. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12088. lua_pushinteger(L, inst->getLightImportance());
  12089. return 1;
  12090. }
  12091. static int Polycode_SceneLight_setLightType(lua_State *L) {
  12092. luaL_checktype(L, 1, LUA_TUSERDATA);
  12093. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12094. luaL_checktype(L, 2, LUA_TNUMBER);
  12095. int lightType = lua_tointeger(L, 2);
  12096. inst->setLightType(lightType);
  12097. return 0;
  12098. }
  12099. static int Polycode_SceneLight_Clone(lua_State *L) {
  12100. luaL_checktype(L, 1, LUA_TUSERDATA);
  12101. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12102. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12103. bool deepClone = lua_toboolean(L, 2) != 0;
  12104. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12105. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12106. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12107. if(ptrRetVal == NULL) {
  12108. lua_pushnil(L);
  12109. } else {
  12110. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12111. *userdataPtr = ptrRetVal;
  12112. }
  12113. return 1;
  12114. }
  12115. static int Polycode_SceneLight_applyClone(lua_State *L) {
  12116. luaL_checktype(L, 1, LUA_TUSERDATA);
  12117. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12118. luaL_checktype(L, 2, LUA_TUSERDATA);
  12119. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12120. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12121. bool deepClone = lua_toboolean(L, 3) != 0;
  12122. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12123. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12124. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12125. return 0;
  12126. }
  12127. static int Polycode_SceneLight_getParentScene(lua_State *L) {
  12128. luaL_checktype(L, 1, LUA_TUSERDATA);
  12129. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12130. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  12131. if(ptrRetVal == NULL) {
  12132. lua_pushnil(L);
  12133. } else {
  12134. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12135. *userdataPtr = ptrRetVal;
  12136. }
  12137. return 1;
  12138. }
  12139. static int Polycode_SceneLight_setParentScene(lua_State *L) {
  12140. luaL_checktype(L, 1, LUA_TUSERDATA);
  12141. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12142. luaL_checktype(L, 2, LUA_TUSERDATA);
  12143. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  12144. inst->setParentScene(scene);
  12145. return 0;
  12146. }
  12147. static int Polycode_SceneLight_getSpotlightCamera(lua_State *L) {
  12148. luaL_checktype(L, 1, LUA_TUSERDATA);
  12149. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12150. PolyBase *ptrRetVal = (PolyBase*)inst->getSpotlightCamera();
  12151. if(ptrRetVal == NULL) {
  12152. lua_pushnil(L);
  12153. } else {
  12154. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12155. *userdataPtr = ptrRetVal;
  12156. }
  12157. return 1;
  12158. }
  12159. static int Polycode_SceneLight_getLightInfo(lua_State *L) {
  12160. luaL_checktype(L, 1, LUA_TUSERDATA);
  12161. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12162. LightInfo *retInst = new LightInfo();
  12163. *retInst = inst->getLightInfo();
  12164. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12165. luaL_getmetatable(L, "Polycode.LightInfo");
  12166. lua_setmetatable(L, -2);
  12167. *userdataPtr = (PolyBase*)retInst;
  12168. return 1;
  12169. }
  12170. static int Polycode_delete_SceneLight(lua_State *L) {
  12171. luaL_checktype(L, 1, LUA_TUSERDATA);
  12172. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12173. delete ((SceneLight*) *inst);
  12174. *inst = NULL;
  12175. return 0;
  12176. }
  12177. static int Polycode_SceneCurve_get_renderCurve(lua_State *L) {
  12178. luaL_checktype(L, 1, LUA_TUSERDATA);
  12179. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12180. lua_pushboolean(L, inst->renderCurve);
  12181. return 1;
  12182. }
  12183. static int Polycode_SceneCurve_get_curveResolution(lua_State *L) {
  12184. luaL_checktype(L, 1, LUA_TUSERDATA);
  12185. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12186. lua_pushinteger(L, inst->curveResolution);
  12187. return 1;
  12188. }
  12189. static int Polycode_SceneCurve_set_renderCurve(lua_State *L) {
  12190. luaL_checktype(L, 1, LUA_TUSERDATA);
  12191. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12192. bool param = lua_toboolean(L, 2) != 0;
  12193. inst->renderCurve = param;
  12194. return 0;
  12195. }
  12196. static int Polycode_SceneCurve_set_curveResolution(lua_State *L) {
  12197. luaL_checktype(L, 1, LUA_TUSERDATA);
  12198. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12199. int param = lua_tointeger(L, 2);
  12200. inst->curveResolution = param;
  12201. return 0;
  12202. }
  12203. static int Polycode_SceneCurve(lua_State *L) {
  12204. SceneCurve *inst = new SceneCurve();
  12205. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12206. *userdataPtr = (PolyBase*)inst;
  12207. luaL_getmetatable(L, "Polycode.SceneCurve");
  12208. lua_setmetatable(L, -2);
  12209. return 1;
  12210. }
  12211. static int Polycode_SceneCurve_SceneCurveWithCurve(lua_State *L) {
  12212. luaL_checktype(L, 1, LUA_TUSERDATA);
  12213. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12214. PolyBase *ptrRetVal = (PolyBase*)SceneCurve::SceneCurveWithCurve(curve);
  12215. if(ptrRetVal == NULL) {
  12216. lua_pushnil(L);
  12217. } else {
  12218. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12219. *userdataPtr = ptrRetVal;
  12220. }
  12221. return 1;
  12222. }
  12223. static int Polycode_SceneCurve_getWorldPointAt(lua_State *L) {
  12224. luaL_checktype(L, 1, LUA_TUSERDATA);
  12225. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12226. luaL_checktype(L, 2, LUA_TNUMBER);
  12227. Number t = lua_tonumber(L, 2);
  12228. Vector3 *retInst = new Vector3();
  12229. *retInst = inst->getWorldPointAt(t);
  12230. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12231. luaL_getmetatable(L, "Polycode.Vector3");
  12232. lua_setmetatable(L, -2);
  12233. *userdataPtr = (PolyBase*)retInst;
  12234. return 1;
  12235. }
  12236. static int Polycode_SceneCurve_Update(lua_State *L) {
  12237. luaL_checktype(L, 1, LUA_TUSERDATA);
  12238. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12239. inst->Update();
  12240. return 0;
  12241. }
  12242. static int Polycode_SceneCurve_Clone(lua_State *L) {
  12243. luaL_checktype(L, 1, LUA_TUSERDATA);
  12244. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12245. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12246. bool deepClone = lua_toboolean(L, 2) != 0;
  12247. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12248. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12249. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12250. if(ptrRetVal == NULL) {
  12251. lua_pushnil(L);
  12252. } else {
  12253. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12254. *userdataPtr = ptrRetVal;
  12255. }
  12256. return 1;
  12257. }
  12258. static int Polycode_SceneCurve_applyClone(lua_State *L) {
  12259. luaL_checktype(L, 1, LUA_TUSERDATA);
  12260. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12261. luaL_checktype(L, 2, LUA_TUSERDATA);
  12262. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12263. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12264. bool deepClone = lua_toboolean(L, 3) != 0;
  12265. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12266. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12267. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12268. return 0;
  12269. }
  12270. static int Polycode_SceneCurve_getCurve(lua_State *L) {
  12271. luaL_checktype(L, 1, LUA_TUSERDATA);
  12272. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  12273. PolyBase *ptrRetVal = (PolyBase*)inst->getCurve();
  12274. if(ptrRetVal == NULL) {
  12275. lua_pushnil(L);
  12276. } else {
  12277. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12278. *userdataPtr = ptrRetVal;
  12279. }
  12280. return 1;
  12281. }
  12282. static int Polycode_delete_SceneCurve(lua_State *L) {
  12283. luaL_checktype(L, 1, LUA_TUSERDATA);
  12284. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12285. delete ((SceneCurve*) *inst);
  12286. *inst = NULL;
  12287. return 0;
  12288. }
  12289. static int Polycode_SceneLine(lua_State *L) {
  12290. luaL_checktype(L, 1, LUA_TUSERDATA);
  12291. Entity* ent1 = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  12292. luaL_checktype(L, 2, LUA_TUSERDATA);
  12293. Entity* ent2 = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12294. SceneLine *inst = new SceneLine(ent1, ent2);
  12295. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12296. *userdataPtr = (PolyBase*)inst;
  12297. luaL_getmetatable(L, "Polycode.SceneLine");
  12298. lua_setmetatable(L, -2);
  12299. return 1;
  12300. }
  12301. static int Polycode_SceneLine_SceneLineWithPositions(lua_State *L) {
  12302. luaL_checktype(L, 1, LUA_TUSERDATA);
  12303. Vector3 startp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12304. luaL_checktype(L, 2, LUA_TUSERDATA);
  12305. Vector3 endp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12306. PolyBase *ptrRetVal = (PolyBase*)SceneLine::SceneLineWithPositions(startp, endp);
  12307. if(ptrRetVal == NULL) {
  12308. lua_pushnil(L);
  12309. } else {
  12310. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12311. *userdataPtr = ptrRetVal;
  12312. }
  12313. return 1;
  12314. }
  12315. static int Polycode_SceneLine_setStart(lua_State *L) {
  12316. luaL_checktype(L, 1, LUA_TUSERDATA);
  12317. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  12318. luaL_checktype(L, 2, LUA_TUSERDATA);
  12319. Vector3 startp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12320. inst->setStart(startp);
  12321. return 0;
  12322. }
  12323. static int Polycode_SceneLine_setEnd(lua_State *L) {
  12324. luaL_checktype(L, 1, LUA_TUSERDATA);
  12325. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  12326. luaL_checktype(L, 2, LUA_TUSERDATA);
  12327. Vector3 endp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12328. inst->setEnd(endp);
  12329. return 0;
  12330. }
  12331. static int Polycode_SceneLine_Update(lua_State *L) {
  12332. luaL_checktype(L, 1, LUA_TUSERDATA);
  12333. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  12334. inst->Update();
  12335. return 0;
  12336. }
  12337. static int Polycode_delete_SceneLine(lua_State *L) {
  12338. luaL_checktype(L, 1, LUA_TUSERDATA);
  12339. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12340. delete ((SceneLine*) *inst);
  12341. *inst = NULL;
  12342. return 0;
  12343. }
  12344. static int Polycode_SceneManager(lua_State *L) {
  12345. SceneManager *inst = new SceneManager();
  12346. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12347. *userdataPtr = (PolyBase*)inst;
  12348. luaL_getmetatable(L, "Polycode.SceneManager");
  12349. lua_setmetatable(L, -2);
  12350. return 1;
  12351. }
  12352. static int Polycode_SceneManager_addScene(lua_State *L) {
  12353. luaL_checktype(L, 1, LUA_TUSERDATA);
  12354. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12355. luaL_checktype(L, 2, LUA_TUSERDATA);
  12356. Scene* newScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  12357. inst->addScene(newScene);
  12358. return 0;
  12359. }
  12360. static int Polycode_SceneManager_removeScene(lua_State *L) {
  12361. luaL_checktype(L, 1, LUA_TUSERDATA);
  12362. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12363. luaL_checktype(L, 2, LUA_TUSERDATA);
  12364. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  12365. inst->removeScene(scene);
  12366. return 0;
  12367. }
  12368. static int Polycode_SceneManager_Update(lua_State *L) {
  12369. luaL_checktype(L, 1, LUA_TUSERDATA);
  12370. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12371. inst->Update();
  12372. return 0;
  12373. }
  12374. static int Polycode_SceneManager_fixedUpdate(lua_State *L) {
  12375. luaL_checktype(L, 1, LUA_TUSERDATA);
  12376. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12377. inst->fixedUpdate();
  12378. return 0;
  12379. }
  12380. static int Polycode_SceneManager_Render(lua_State *L) {
  12381. luaL_checktype(L, 1, LUA_TUSERDATA);
  12382. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12383. luaL_checktype(L, 2, LUA_TUSERDATA);
  12384. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  12385. inst->Render(viewport);
  12386. return 0;
  12387. }
  12388. static int Polycode_SceneManager_renderVirtual(lua_State *L) {
  12389. luaL_checktype(L, 1, LUA_TUSERDATA);
  12390. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12391. inst->renderVirtual();
  12392. return 0;
  12393. }
  12394. static int Polycode_SceneManager_registerRenderTexture(lua_State *L) {
  12395. luaL_checktype(L, 1, LUA_TUSERDATA);
  12396. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12397. luaL_checktype(L, 2, LUA_TUSERDATA);
  12398. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  12399. inst->registerRenderTexture(renderTexture);
  12400. return 0;
  12401. }
  12402. static int Polycode_SceneManager_unregisterRenderTexture(lua_State *L) {
  12403. luaL_checktype(L, 1, LUA_TUSERDATA);
  12404. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12405. luaL_checktype(L, 2, LUA_TUSERDATA);
  12406. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  12407. inst->unregisterRenderTexture(renderTexture);
  12408. return 0;
  12409. }
  12410. static int Polycode_SceneManager_setRenderer(lua_State *L) {
  12411. luaL_checktype(L, 1, LUA_TUSERDATA);
  12412. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  12413. luaL_checktype(L, 2, LUA_TUSERDATA);
  12414. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  12415. inst->setRenderer(renderer);
  12416. return 0;
  12417. }
  12418. static int Polycode_delete_SceneManager(lua_State *L) {
  12419. luaL_checktype(L, 1, LUA_TUSERDATA);
  12420. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12421. delete ((SceneManager*) *inst);
  12422. *inst = NULL;
  12423. return 0;
  12424. }
  12425. static int Polycode_SceneMesh_get_lineWidth(lua_State *L) {
  12426. luaL_checktype(L, 1, LUA_TUSERDATA);
  12427. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12428. lua_pushnumber(L, inst->lineWidth);
  12429. return 1;
  12430. }
  12431. static int Polycode_SceneMesh_get_lineSmooth(lua_State *L) {
  12432. luaL_checktype(L, 1, LUA_TUSERDATA);
  12433. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12434. lua_pushboolean(L, inst->lineSmooth);
  12435. return 1;
  12436. }
  12437. static int Polycode_SceneMesh_get_pointSmooth(lua_State *L) {
  12438. luaL_checktype(L, 1, LUA_TUSERDATA);
  12439. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12440. lua_pushboolean(L, inst->pointSmooth);
  12441. return 1;
  12442. }
  12443. static int Polycode_SceneMesh_get_useGeometryHitDetection(lua_State *L) {
  12444. luaL_checktype(L, 1, LUA_TUSERDATA);
  12445. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12446. lua_pushboolean(L, inst->useGeometryHitDetection);
  12447. return 1;
  12448. }
  12449. static int Polycode_SceneMesh_get_alphaTest(lua_State *L) {
  12450. luaL_checktype(L, 1, LUA_TUSERDATA);
  12451. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12452. lua_pushboolean(L, inst->alphaTest);
  12453. return 1;
  12454. }
  12455. static int Polycode_SceneMesh_get_backfaceCulled(lua_State *L) {
  12456. luaL_checktype(L, 1, LUA_TUSERDATA);
  12457. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12458. lua_pushboolean(L, inst->backfaceCulled);
  12459. return 1;
  12460. }
  12461. static int Polycode_SceneMesh_get_sendBoneMatricesToMaterial(lua_State *L) {
  12462. luaL_checktype(L, 1, LUA_TUSERDATA);
  12463. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12464. lua_pushboolean(L, inst->sendBoneMatricesToMaterial);
  12465. return 1;
  12466. }
  12467. static int Polycode_SceneMesh_set_lineWidth(lua_State *L) {
  12468. luaL_checktype(L, 1, LUA_TUSERDATA);
  12469. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12470. Number param = lua_tonumber(L, 2);
  12471. inst->lineWidth = param;
  12472. return 0;
  12473. }
  12474. static int Polycode_SceneMesh_set_lineSmooth(lua_State *L) {
  12475. luaL_checktype(L, 1, LUA_TUSERDATA);
  12476. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12477. bool param = lua_toboolean(L, 2) != 0;
  12478. inst->lineSmooth = param;
  12479. return 0;
  12480. }
  12481. static int Polycode_SceneMesh_set_pointSmooth(lua_State *L) {
  12482. luaL_checktype(L, 1, LUA_TUSERDATA);
  12483. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12484. bool param = lua_toboolean(L, 2) != 0;
  12485. inst->pointSmooth = param;
  12486. return 0;
  12487. }
  12488. static int Polycode_SceneMesh_set_useGeometryHitDetection(lua_State *L) {
  12489. luaL_checktype(L, 1, LUA_TUSERDATA);
  12490. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12491. bool param = lua_toboolean(L, 2) != 0;
  12492. inst->useGeometryHitDetection = param;
  12493. return 0;
  12494. }
  12495. static int Polycode_SceneMesh_set_alphaTest(lua_State *L) {
  12496. luaL_checktype(L, 1, LUA_TUSERDATA);
  12497. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12498. bool param = lua_toboolean(L, 2) != 0;
  12499. inst->alphaTest = param;
  12500. return 0;
  12501. }
  12502. static int Polycode_SceneMesh_set_backfaceCulled(lua_State *L) {
  12503. luaL_checktype(L, 1, LUA_TUSERDATA);
  12504. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12505. bool param = lua_toboolean(L, 2) != 0;
  12506. inst->backfaceCulled = param;
  12507. return 0;
  12508. }
  12509. static int Polycode_SceneMesh_set_sendBoneMatricesToMaterial(lua_State *L) {
  12510. luaL_checktype(L, 1, LUA_TUSERDATA);
  12511. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12512. bool param = lua_toboolean(L, 2) != 0;
  12513. inst->sendBoneMatricesToMaterial = param;
  12514. return 0;
  12515. }
  12516. static int Polycode_SceneMesh(lua_State *L) {
  12517. luaL_checktype(L, 1, LUA_TSTRING);
  12518. String fileName = String(lua_tostring(L, 1));
  12519. SceneMesh *inst = new SceneMesh(fileName);
  12520. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12521. *userdataPtr = (PolyBase*)inst;
  12522. luaL_getmetatable(L, "Polycode.SceneMesh");
  12523. lua_setmetatable(L, -2);
  12524. return 1;
  12525. }
  12526. static int Polycode_SceneMesh_SceneMeshFromMesh(lua_State *L) {
  12527. luaL_checktype(L, 1, LUA_TUSERDATA);
  12528. shared_ptr<Mesh> mesh = *(shared_ptr<Mesh>*) *((PolyBase**)lua_touserdata(L, 1));
  12529. PolyBase *ptrRetVal = (PolyBase*)SceneMesh::SceneMeshFromMesh(mesh);
  12530. if(ptrRetVal == NULL) {
  12531. lua_pushnil(L);
  12532. } else {
  12533. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12534. *userdataPtr = ptrRetVal;
  12535. }
  12536. return 1;
  12537. }
  12538. static int Polycode_SceneMesh_Render(lua_State *L) {
  12539. luaL_checktype(L, 1, LUA_TUSERDATA);
  12540. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12541. luaL_checktype(L, 2, LUA_TUSERDATA);
  12542. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  12543. inst->Render(buffer);
  12544. return 0;
  12545. }
  12546. static int Polycode_SceneMesh_getShaderPass(lua_State *L) {
  12547. luaL_checktype(L, 1, LUA_TUSERDATA);
  12548. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12549. luaL_checktype(L, 2, LUA_TNUMBER);
  12550. int index = lua_tointeger(L, 2);
  12551. ShaderPass *retInst = new ShaderPass();
  12552. *retInst = inst->getShaderPass(index);
  12553. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12554. luaL_getmetatable(L, "Polycode.ShaderPass");
  12555. lua_setmetatable(L, -2);
  12556. *userdataPtr = (PolyBase*)retInst;
  12557. return 1;
  12558. }
  12559. static int Polycode_SceneMesh_getNumShaderPasses(lua_State *L) {
  12560. luaL_checktype(L, 1, LUA_TUSERDATA);
  12561. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12562. lua_pushinteger(L, inst->getNumShaderPasses());
  12563. return 1;
  12564. }
  12565. static int Polycode_SceneMesh_addShaderPass(lua_State *L) {
  12566. luaL_checktype(L, 1, LUA_TUSERDATA);
  12567. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12568. luaL_checktype(L, 2, LUA_TUSERDATA);
  12569. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  12570. inst->addShaderPass(pass);
  12571. return 0;
  12572. }
  12573. static int Polycode_SceneMesh_removeShaderPass(lua_State *L) {
  12574. luaL_checktype(L, 1, LUA_TUSERDATA);
  12575. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12576. luaL_checktype(L, 2, LUA_TNUMBER);
  12577. int shaderIndex = lua_tointeger(L, 2);
  12578. inst->removeShaderPass(shaderIndex);
  12579. return 0;
  12580. }
  12581. static int Polycode_SceneMesh_getMesh(lua_State *L) {
  12582. luaL_checktype(L, 1, LUA_TUSERDATA);
  12583. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12584. shared_ptr<Mesh> *retInst = new shared_ptr<Mesh>();
  12585. *retInst = inst->getMesh();
  12586. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12587. luaL_getmetatable(L, "Polycode.shared_ptr<Mesh>");
  12588. lua_setmetatable(L, -2);
  12589. *userdataPtr = (PolyBase*)retInst;
  12590. return 1;
  12591. }
  12592. static int Polycode_SceneMesh_getMaterial(lua_State *L) {
  12593. luaL_checktype(L, 1, LUA_TUSERDATA);
  12594. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12595. shared_ptr<Material> *retInst = new shared_ptr<Material>();
  12596. *retInst = inst->getMaterial();
  12597. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12598. luaL_getmetatable(L, "Polycode.shared_ptr<Material>");
  12599. lua_setmetatable(L, -2);
  12600. *userdataPtr = (PolyBase*)retInst;
  12601. return 1;
  12602. }
  12603. static int Polycode_SceneMesh_loadSkeleton(lua_State *L) {
  12604. luaL_checktype(L, 1, LUA_TUSERDATA);
  12605. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12606. luaL_checktype(L, 2, LUA_TSTRING);
  12607. String fileName = String(lua_tostring(L, 2));
  12608. shared_ptr<Skeleton> *retInst = new shared_ptr<Skeleton>();
  12609. *retInst = inst->loadSkeleton(fileName);
  12610. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12611. luaL_getmetatable(L, "Polycode.shared_ptr<Skeleton>");
  12612. lua_setmetatable(L, -2);
  12613. *userdataPtr = (PolyBase*)retInst;
  12614. return 1;
  12615. }
  12616. static int Polycode_SceneMesh_clearMaterial(lua_State *L) {
  12617. luaL_checktype(L, 1, LUA_TUSERDATA);
  12618. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12619. inst->clearMaterial();
  12620. return 0;
  12621. }
  12622. static int Polycode_SceneMesh_setMaterial(lua_State *L) {
  12623. luaL_checktype(L, 1, LUA_TUSERDATA);
  12624. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12625. luaL_checktype(L, 2, LUA_TUSERDATA);
  12626. shared_ptr<Material> material = *(shared_ptr<Material>*) *((PolyBase**)lua_touserdata(L, 2));
  12627. inst->setMaterial(material);
  12628. return 0;
  12629. }
  12630. static int Polycode_SceneMesh_setMaterialByName(lua_State *L) {
  12631. luaL_checktype(L, 1, LUA_TUSERDATA);
  12632. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12633. luaL_checktype(L, 2, LUA_TSTRING);
  12634. String materialName = String(lua_tostring(L, 2));
  12635. ResourcePool* resourcePool;
  12636. if(lua_isuserdata(L, 3)) {
  12637. resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  12638. } else {
  12639. resourcePool = NULL;
  12640. }
  12641. inst->setMaterialByName(materialName, resourcePool);
  12642. return 0;
  12643. }
  12644. static int Polycode_SceneMesh_setMesh(lua_State *L) {
  12645. luaL_checktype(L, 1, LUA_TUSERDATA);
  12646. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12647. luaL_checktype(L, 2, LUA_TUSERDATA);
  12648. shared_ptr<Mesh> mesh = *(shared_ptr<Mesh>*) *((PolyBase**)lua_touserdata(L, 2));
  12649. inst->setMesh(mesh);
  12650. return 0;
  12651. }
  12652. static int Polycode_SceneMesh_setSkeleton(lua_State *L) {
  12653. luaL_checktype(L, 1, LUA_TUSERDATA);
  12654. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12655. luaL_checktype(L, 2, LUA_TUSERDATA);
  12656. shared_ptr<Skeleton> skeleton = *(shared_ptr<Skeleton>*) *((PolyBase**)lua_touserdata(L, 2));
  12657. inst->setSkeleton(skeleton);
  12658. return 0;
  12659. }
  12660. static int Polycode_SceneMesh_getSkeleton(lua_State *L) {
  12661. luaL_checktype(L, 1, LUA_TUSERDATA);
  12662. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12663. shared_ptr<Skeleton> *retInst = new shared_ptr<Skeleton>();
  12664. *retInst = inst->getSkeleton();
  12665. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12666. luaL_getmetatable(L, "Polycode.shared_ptr<Skeleton>");
  12667. lua_setmetatable(L, -2);
  12668. *userdataPtr = (PolyBase*)retInst;
  12669. return 1;
  12670. }
  12671. static int Polycode_SceneMesh_applySkeletonLocally(lua_State *L) {
  12672. luaL_checktype(L, 1, LUA_TUSERDATA);
  12673. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12674. inst->applySkeletonLocally();
  12675. return 0;
  12676. }
  12677. static int Polycode_SceneMesh_setLineWidth(lua_State *L) {
  12678. luaL_checktype(L, 1, LUA_TUSERDATA);
  12679. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12680. luaL_checktype(L, 2, LUA_TNUMBER);
  12681. Number newWidth = lua_tonumber(L, 2);
  12682. inst->setLineWidth(newWidth);
  12683. return 0;
  12684. }
  12685. static int Polycode_SceneMesh_getFilename(lua_State *L) {
  12686. luaL_checktype(L, 1, LUA_TUSERDATA);
  12687. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12688. lua_pushstring(L, inst->getFilename().c_str());
  12689. return 1;
  12690. }
  12691. static int Polycode_SceneMesh_setFilename(lua_State *L) {
  12692. luaL_checktype(L, 1, LUA_TUSERDATA);
  12693. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12694. luaL_checktype(L, 2, LUA_TSTRING);
  12695. String fileName = String(lua_tostring(L, 2));
  12696. inst->setFilename(fileName);
  12697. return 0;
  12698. }
  12699. static int Polycode_SceneMesh_loadFromFile(lua_State *L) {
  12700. luaL_checktype(L, 1, LUA_TUSERDATA);
  12701. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12702. luaL_checktype(L, 2, LUA_TSTRING);
  12703. String fileName = String(lua_tostring(L, 2));
  12704. inst->loadFromFile(fileName);
  12705. return 0;
  12706. }
  12707. static int Polycode_SceneMesh_customHitDetection(lua_State *L) {
  12708. luaL_checktype(L, 1, LUA_TUSERDATA);
  12709. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12710. luaL_checktype(L, 2, LUA_TUSERDATA);
  12711. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  12712. lua_pushboolean(L, inst->customHitDetection(ray));
  12713. return 1;
  12714. }
  12715. static int Polycode_SceneMesh_setForceMaterial(lua_State *L) {
  12716. luaL_checktype(L, 1, LUA_TUSERDATA);
  12717. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12718. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12719. bool forceMaterial = lua_toboolean(L, 2) != 0;
  12720. inst->setForceMaterial(forceMaterial);
  12721. return 0;
  12722. }
  12723. static int Polycode_SceneMesh_getForceMaterial(lua_State *L) {
  12724. luaL_checktype(L, 1, LUA_TUSERDATA);
  12725. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12726. lua_pushboolean(L, inst->getForceMaterial());
  12727. return 1;
  12728. }
  12729. static int Polycode_SceneMesh_Clone(lua_State *L) {
  12730. luaL_checktype(L, 1, LUA_TUSERDATA);
  12731. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12732. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12733. bool deepClone = lua_toboolean(L, 2) != 0;
  12734. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12735. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12736. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12737. if(ptrRetVal == NULL) {
  12738. lua_pushnil(L);
  12739. } else {
  12740. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12741. *userdataPtr = ptrRetVal;
  12742. }
  12743. return 1;
  12744. }
  12745. static int Polycode_SceneMesh_applyClone(lua_State *L) {
  12746. luaL_checktype(L, 1, LUA_TUSERDATA);
  12747. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  12748. luaL_checktype(L, 2, LUA_TUSERDATA);
  12749. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12750. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12751. bool deepClone = lua_toboolean(L, 3) != 0;
  12752. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12753. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12754. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12755. return 0;
  12756. }
  12757. static int Polycode_delete_SceneMesh(lua_State *L) {
  12758. luaL_checktype(L, 1, LUA_TUSERDATA);
  12759. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12760. delete ((SceneMesh*) *inst);
  12761. *inst = NULL;
  12762. return 0;
  12763. }
  12764. static int Polycode_ScenePrimitive(lua_State *L) {
  12765. luaL_checktype(L, 1, LUA_TNUMBER);
  12766. int type = lua_tointeger(L, 1);
  12767. Number v1;
  12768. if(lua_isnumber(L, 2)) {
  12769. v1 = lua_tonumber(L, 2);
  12770. } else {
  12771. v1 = 1.0f;
  12772. }
  12773. Number v2;
  12774. if(lua_isnumber(L, 3)) {
  12775. v2 = lua_tonumber(L, 3);
  12776. } else {
  12777. v2 = 1.0f;
  12778. }
  12779. Number v3;
  12780. if(lua_isnumber(L, 4)) {
  12781. v3 = lua_tonumber(L, 4);
  12782. } else {
  12783. v3 = 1.0f;
  12784. }
  12785. Number v4;
  12786. if(lua_isnumber(L, 5)) {
  12787. v4 = lua_tonumber(L, 5);
  12788. } else {
  12789. v4 = 1.0f;
  12790. }
  12791. Number v5;
  12792. if(lua_isnumber(L, 6)) {
  12793. v5 = lua_tonumber(L, 6);
  12794. } else {
  12795. v5 = 1.0f;
  12796. }
  12797. ScenePrimitive *inst = new ScenePrimitive(type, v1, v2, v3, v4, v5);
  12798. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12799. *userdataPtr = (PolyBase*)inst;
  12800. luaL_getmetatable(L, "Polycode.ScenePrimitive");
  12801. lua_setmetatable(L, -2);
  12802. return 1;
  12803. }
  12804. static int Polycode_ScenePrimitive_setPrimitiveOptions(lua_State *L) {
  12805. luaL_checktype(L, 1, LUA_TUSERDATA);
  12806. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12807. luaL_checktype(L, 2, LUA_TNUMBER);
  12808. int type = lua_tointeger(L, 2);
  12809. Number v1;
  12810. if(lua_isnumber(L, 3)) {
  12811. v1 = lua_tonumber(L, 3);
  12812. } else {
  12813. v1 = 1.0f;
  12814. }
  12815. Number v2;
  12816. if(lua_isnumber(L, 4)) {
  12817. v2 = lua_tonumber(L, 4);
  12818. } else {
  12819. v2 = 1.0f;
  12820. }
  12821. Number v3;
  12822. if(lua_isnumber(L, 5)) {
  12823. v3 = lua_tonumber(L, 5);
  12824. } else {
  12825. v3 = 1.0f;
  12826. }
  12827. Number v4;
  12828. if(lua_isnumber(L, 6)) {
  12829. v4 = lua_tonumber(L, 6);
  12830. } else {
  12831. v4 = 1.0f;
  12832. }
  12833. Number v5;
  12834. if(lua_isnumber(L, 7)) {
  12835. v5 = lua_tonumber(L, 7);
  12836. } else {
  12837. v5 = 1.0f;
  12838. }
  12839. inst->setPrimitiveOptions(type, v1, v2, v3, v4, v5);
  12840. return 0;
  12841. }
  12842. static int Polycode_ScenePrimitive_recreatePrimitive(lua_State *L) {
  12843. luaL_checktype(L, 1, LUA_TUSERDATA);
  12844. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12845. inst->recreatePrimitive();
  12846. return 0;
  12847. }
  12848. static int Polycode_ScenePrimitive_getPrimitiveType(lua_State *L) {
  12849. luaL_checktype(L, 1, LUA_TUSERDATA);
  12850. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12851. lua_pushinteger(L, inst->getPrimitiveType());
  12852. return 1;
  12853. }
  12854. static int Polycode_ScenePrimitive_getPrimitiveParameter1(lua_State *L) {
  12855. luaL_checktype(L, 1, LUA_TUSERDATA);
  12856. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12857. lua_pushnumber(L, inst->getPrimitiveParameter1());
  12858. return 1;
  12859. }
  12860. static int Polycode_ScenePrimitive_getPrimitiveParameter2(lua_State *L) {
  12861. luaL_checktype(L, 1, LUA_TUSERDATA);
  12862. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12863. lua_pushnumber(L, inst->getPrimitiveParameter2());
  12864. return 1;
  12865. }
  12866. static int Polycode_ScenePrimitive_getPrimitiveParameter3(lua_State *L) {
  12867. luaL_checktype(L, 1, LUA_TUSERDATA);
  12868. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12869. lua_pushnumber(L, inst->getPrimitiveParameter3());
  12870. return 1;
  12871. }
  12872. static int Polycode_ScenePrimitive_getPrimitiveParameter4(lua_State *L) {
  12873. luaL_checktype(L, 1, LUA_TUSERDATA);
  12874. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12875. lua_pushnumber(L, inst->getPrimitiveParameter4());
  12876. return 1;
  12877. }
  12878. static int Polycode_ScenePrimitive_getPrimitiveParameter5(lua_State *L) {
  12879. luaL_checktype(L, 1, LUA_TUSERDATA);
  12880. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12881. lua_pushnumber(L, inst->getPrimitiveParameter5());
  12882. return 1;
  12883. }
  12884. static int Polycode_ScenePrimitive_Clone(lua_State *L) {
  12885. luaL_checktype(L, 1, LUA_TUSERDATA);
  12886. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12887. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12888. bool deepClone = lua_toboolean(L, 2) != 0;
  12889. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12890. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12891. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12892. if(ptrRetVal == NULL) {
  12893. lua_pushnil(L);
  12894. } else {
  12895. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12896. *userdataPtr = ptrRetVal;
  12897. }
  12898. return 1;
  12899. }
  12900. static int Polycode_ScenePrimitive_applyClone(lua_State *L) {
  12901. luaL_checktype(L, 1, LUA_TUSERDATA);
  12902. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  12903. luaL_checktype(L, 2, LUA_TUSERDATA);
  12904. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12905. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12906. bool deepClone = lua_toboolean(L, 3) != 0;
  12907. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12908. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12909. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12910. return 0;
  12911. }
  12912. static int Polycode_delete_ScenePrimitive(lua_State *L) {
  12913. luaL_checktype(L, 1, LUA_TUSERDATA);
  12914. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12915. delete ((ScenePrimitive*) *inst);
  12916. *inst = NULL;
  12917. return 0;
  12918. }
  12919. static int Polycode_SceneRenderTexture_get_enabled(lua_State *L) {
  12920. luaL_checktype(L, 1, LUA_TUSERDATA);
  12921. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12922. lua_pushboolean(L, inst->enabled);
  12923. return 1;
  12924. }
  12925. static int Polycode_SceneRenderTexture_set_enabled(lua_State *L) {
  12926. luaL_checktype(L, 1, LUA_TUSERDATA);
  12927. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12928. bool param = lua_toboolean(L, 2) != 0;
  12929. inst->enabled = param;
  12930. return 0;
  12931. }
  12932. static int Polycode_SceneRenderTexture(lua_State *L) {
  12933. luaL_checktype(L, 1, LUA_TUSERDATA);
  12934. Scene* targetScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12935. luaL_checktype(L, 2, LUA_TUSERDATA);
  12936. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  12937. luaL_checktype(L, 3, LUA_TNUMBER);
  12938. int renderWidth = lua_tointeger(L, 3);
  12939. luaL_checktype(L, 4, LUA_TNUMBER);
  12940. int renderHeight = lua_tointeger(L, 4);
  12941. luaL_checktype(L, 5, LUA_TBOOLEAN);
  12942. bool floatingPoint = lua_toboolean(L, 5) != 0;
  12943. SceneRenderTexture *inst = new SceneRenderTexture(targetScene, targetCamera, renderWidth, renderHeight, floatingPoint);
  12944. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12945. *userdataPtr = (PolyBase*)inst;
  12946. luaL_getmetatable(L, "Polycode.SceneRenderTexture");
  12947. lua_setmetatable(L, -2);
  12948. return 1;
  12949. }
  12950. static int Polycode_SceneRenderTexture_getTargetTexture(lua_State *L) {
  12951. luaL_checktype(L, 1, LUA_TUSERDATA);
  12952. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12953. shared_ptr<Texture> *retInst = new shared_ptr<Texture>();
  12954. *retInst = inst->getTargetTexture();
  12955. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12956. luaL_getmetatable(L, "Polycode.shared_ptr<Texture>");
  12957. lua_setmetatable(L, -2);
  12958. *userdataPtr = (PolyBase*)retInst;
  12959. return 1;
  12960. }
  12961. static int Polycode_SceneRenderTexture_Render(lua_State *L) {
  12962. luaL_checktype(L, 1, LUA_TUSERDATA);
  12963. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12964. inst->Render();
  12965. return 0;
  12966. }
  12967. static int Polycode_SceneRenderTexture_saveToImage(lua_State *L) {
  12968. luaL_checktype(L, 1, LUA_TUSERDATA);
  12969. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12970. PolyBase *ptrRetVal = (PolyBase*)inst->saveToImage();
  12971. if(ptrRetVal == NULL) {
  12972. lua_pushnil(L);
  12973. } else {
  12974. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12975. *userdataPtr = ptrRetVal;
  12976. }
  12977. return 1;
  12978. }
  12979. static int Polycode_SceneRenderTexture_resizeRenderTexture(lua_State *L) {
  12980. luaL_checktype(L, 1, LUA_TUSERDATA);
  12981. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12982. luaL_checktype(L, 2, LUA_TNUMBER);
  12983. int newWidth = lua_tointeger(L, 2);
  12984. luaL_checktype(L, 3, LUA_TNUMBER);
  12985. int newHeight = lua_tointeger(L, 3);
  12986. inst->resizeRenderTexture(newWidth, newHeight);
  12987. return 0;
  12988. }
  12989. static int Polycode_SceneRenderTexture_getTargetScene(lua_State *L) {
  12990. luaL_checktype(L, 1, LUA_TUSERDATA);
  12991. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  12992. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetScene();
  12993. if(ptrRetVal == NULL) {
  12994. lua_pushnil(L);
  12995. } else {
  12996. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12997. *userdataPtr = ptrRetVal;
  12998. }
  12999. return 1;
  13000. }
  13001. static int Polycode_SceneRenderTexture_getTargetCamera(lua_State *L) {
  13002. luaL_checktype(L, 1, LUA_TUSERDATA);
  13003. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  13004. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetCamera();
  13005. if(ptrRetVal == NULL) {
  13006. lua_pushnil(L);
  13007. } else {
  13008. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13009. *userdataPtr = ptrRetVal;
  13010. }
  13011. return 1;
  13012. }
  13013. static int Polycode_delete_SceneRenderTexture(lua_State *L) {
  13014. luaL_checktype(L, 1, LUA_TUSERDATA);
  13015. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13016. delete ((SceneRenderTexture*) *inst);
  13017. *inst = NULL;
  13018. return 0;
  13019. }
  13020. static int Polycode_SceneSound(lua_State *L) {
  13021. luaL_checktype(L, 1, LUA_TSTRING);
  13022. String fileName = String(lua_tostring(L, 1));
  13023. luaL_checktype(L, 2, LUA_TNUMBER);
  13024. Number referenceDistance = lua_tonumber(L, 2);
  13025. luaL_checktype(L, 3, LUA_TNUMBER);
  13026. Number maxDistance = lua_tonumber(L, 3);
  13027. bool directionalSound;
  13028. if(lua_isboolean(L, 4)) {
  13029. directionalSound = lua_toboolean(L, 4) != 0;
  13030. } else {
  13031. directionalSound = false;
  13032. }
  13033. SceneSound *inst = new SceneSound(fileName, referenceDistance, maxDistance, directionalSound);
  13034. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13035. *userdataPtr = (PolyBase*)inst;
  13036. luaL_getmetatable(L, "Polycode.SceneSound");
  13037. lua_setmetatable(L, -2);
  13038. return 1;
  13039. }
  13040. static int Polycode_SceneSound_Update(lua_State *L) {
  13041. luaL_checktype(L, 1, LUA_TUSERDATA);
  13042. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13043. inst->Update();
  13044. return 0;
  13045. }
  13046. static int Polycode_SceneSound_Clone(lua_State *L) {
  13047. luaL_checktype(L, 1, LUA_TUSERDATA);
  13048. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13049. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13050. bool deepClone = lua_toboolean(L, 2) != 0;
  13051. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13052. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13053. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13054. if(ptrRetVal == NULL) {
  13055. lua_pushnil(L);
  13056. } else {
  13057. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13058. *userdataPtr = ptrRetVal;
  13059. }
  13060. return 1;
  13061. }
  13062. static int Polycode_SceneSound_applyClone(lua_State *L) {
  13063. luaL_checktype(L, 1, LUA_TUSERDATA);
  13064. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13065. luaL_checktype(L, 2, LUA_TUSERDATA);
  13066. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13067. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13068. bool deepClone = lua_toboolean(L, 3) != 0;
  13069. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13070. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13071. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13072. return 0;
  13073. }
  13074. static int Polycode_SceneSound_isDirectionalSound(lua_State *L) {
  13075. luaL_checktype(L, 1, LUA_TUSERDATA);
  13076. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13077. lua_pushboolean(L, inst->isDirectionalSound());
  13078. return 1;
  13079. }
  13080. static int Polycode_SceneSound_setDirectionalSound(lua_State *L) {
  13081. luaL_checktype(L, 1, LUA_TUSERDATA);
  13082. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13083. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13084. bool val = lua_toboolean(L, 2) != 0;
  13085. inst->setDirectionalSound(val);
  13086. return 0;
  13087. }
  13088. static int Polycode_SceneSound_getSound(lua_State *L) {
  13089. luaL_checktype(L, 1, LUA_TUSERDATA);
  13090. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13091. PolyBase *ptrRetVal = (PolyBase*)inst->getSound();
  13092. if(ptrRetVal == NULL) {
  13093. lua_pushnil(L);
  13094. } else {
  13095. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13096. *userdataPtr = ptrRetVal;
  13097. }
  13098. return 1;
  13099. }
  13100. static int Polycode_SceneSound_setLoopOnLoad(lua_State *L) {
  13101. luaL_checktype(L, 1, LUA_TUSERDATA);
  13102. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13103. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13104. bool val = lua_toboolean(L, 2) != 0;
  13105. inst->setLoopOnLoad(val);
  13106. return 0;
  13107. }
  13108. static int Polycode_SceneSound_getLoopOnLoad(lua_State *L) {
  13109. luaL_checktype(L, 1, LUA_TUSERDATA);
  13110. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  13111. lua_pushboolean(L, inst->getLoopOnLoad());
  13112. return 1;
  13113. }
  13114. static int Polycode_delete_SceneSound(lua_State *L) {
  13115. luaL_checktype(L, 1, LUA_TUSERDATA);
  13116. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13117. delete ((SceneSound*) *inst);
  13118. *inst = NULL;
  13119. return 0;
  13120. }
  13121. static int Polycode_SceneSoundListener(lua_State *L) {
  13122. SceneSoundListener *inst = new SceneSoundListener();
  13123. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13124. *userdataPtr = (PolyBase*)inst;
  13125. luaL_getmetatable(L, "Polycode.SceneSoundListener");
  13126. lua_setmetatable(L, -2);
  13127. return 1;
  13128. }
  13129. static int Polycode_SceneSoundListener_Update(lua_State *L) {
  13130. luaL_checktype(L, 1, LUA_TUSERDATA);
  13131. SceneSoundListener *inst = (SceneSoundListener*) *((PolyBase**)lua_touserdata(L, 1));
  13132. inst->Update();
  13133. return 0;
  13134. }
  13135. static int Polycode_delete_SceneSoundListener(lua_State *L) {
  13136. luaL_checktype(L, 1, LUA_TUSERDATA);
  13137. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13138. delete ((SceneSoundListener*) *inst);
  13139. *inst = NULL;
  13140. return 0;
  13141. }
  13142. static int Polycode_SceneSprite(lua_State *L) {
  13143. luaL_checktype(L, 1, LUA_TUSERDATA);
  13144. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13145. SceneSprite *inst = new SceneSprite(spriteSet);
  13146. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13147. *userdataPtr = (PolyBase*)inst;
  13148. luaL_getmetatable(L, "Polycode.SceneSprite");
  13149. lua_setmetatable(L, -2);
  13150. return 1;
  13151. }
  13152. static int Polycode_SceneSprite_Clone(lua_State *L) {
  13153. luaL_checktype(L, 1, LUA_TUSERDATA);
  13154. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13155. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13156. bool deepClone = lua_toboolean(L, 2) != 0;
  13157. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13158. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13159. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13160. if(ptrRetVal == NULL) {
  13161. lua_pushnil(L);
  13162. } else {
  13163. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13164. *userdataPtr = ptrRetVal;
  13165. }
  13166. return 1;
  13167. }
  13168. static int Polycode_SceneSprite_applyClone(lua_State *L) {
  13169. luaL_checktype(L, 1, LUA_TUSERDATA);
  13170. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13171. luaL_checktype(L, 2, LUA_TUSERDATA);
  13172. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13173. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13174. bool deepClone = lua_toboolean(L, 3) != 0;
  13175. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13176. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13177. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13178. return 0;
  13179. }
  13180. static int Polycode_SceneSprite_getSpriteSet(lua_State *L) {
  13181. luaL_checktype(L, 1, LUA_TUSERDATA);
  13182. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13183. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteSet();
  13184. if(ptrRetVal == NULL) {
  13185. lua_pushnil(L);
  13186. } else {
  13187. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13188. *userdataPtr = ptrRetVal;
  13189. }
  13190. return 1;
  13191. }
  13192. static int Polycode_SceneSprite_getCurrentSprite(lua_State *L) {
  13193. luaL_checktype(L, 1, LUA_TUSERDATA);
  13194. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13195. shared_ptr<Sprite> *retInst = new shared_ptr<Sprite>();
  13196. *retInst = inst->getCurrentSprite();
  13197. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13198. luaL_getmetatable(L, "Polycode.shared_ptr<Sprite>");
  13199. lua_setmetatable(L, -2);
  13200. *userdataPtr = (PolyBase*)retInst;
  13201. return 1;
  13202. }
  13203. static int Polycode_SceneSprite_setSpriteSet(lua_State *L) {
  13204. luaL_checktype(L, 1, LUA_TUSERDATA);
  13205. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13206. luaL_checktype(L, 2, LUA_TUSERDATA);
  13207. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  13208. inst->setSpriteSet(spriteSet);
  13209. return 0;
  13210. }
  13211. static int Polycode_SceneSprite_setSpriteByName(lua_State *L) {
  13212. luaL_checktype(L, 1, LUA_TUSERDATA);
  13213. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13214. luaL_checktype(L, 2, LUA_TSTRING);
  13215. String spriteName = String(lua_tostring(L, 2));
  13216. inst->setSpriteByName(spriteName);
  13217. return 0;
  13218. }
  13219. static int Polycode_SceneSprite_setCurrentFrame(lua_State *L) {
  13220. luaL_checktype(L, 1, LUA_TUSERDATA);
  13221. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13222. luaL_checktype(L, 2, LUA_TNUMBER);
  13223. int frameIndex = lua_tointeger(L, 2);
  13224. inst->setCurrentFrame(frameIndex);
  13225. return 0;
  13226. }
  13227. static int Polycode_SceneSprite_getCurrentFrame(lua_State *L) {
  13228. luaL_checktype(L, 1, LUA_TUSERDATA);
  13229. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13230. lua_pushinteger(L, inst->getCurrentFrame());
  13231. return 1;
  13232. }
  13233. static int Polycode_SceneSprite_Update(lua_State *L) {
  13234. luaL_checktype(L, 1, LUA_TUSERDATA);
  13235. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13236. inst->Update();
  13237. return 0;
  13238. }
  13239. static int Polycode_SceneSprite_Render(lua_State *L) {
  13240. luaL_checktype(L, 1, LUA_TUSERDATA);
  13241. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13242. luaL_checktype(L, 2, LUA_TUSERDATA);
  13243. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  13244. inst->Render(buffer);
  13245. return 0;
  13246. }
  13247. static int Polycode_SceneSprite_getSpriteBoundingBox(lua_State *L) {
  13248. luaL_checktype(L, 1, LUA_TUSERDATA);
  13249. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13250. Vector3 *retInst = new Vector3();
  13251. *retInst = inst->getSpriteBoundingBox();
  13252. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13253. luaL_getmetatable(L, "Polycode.Vector3");
  13254. lua_setmetatable(L, -2);
  13255. *userdataPtr = (PolyBase*)retInst;
  13256. return 1;
  13257. }
  13258. static int Polycode_SceneSprite_setPaused(lua_State *L) {
  13259. luaL_checktype(L, 1, LUA_TUSERDATA);
  13260. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13261. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13262. bool val = lua_toboolean(L, 2) != 0;
  13263. inst->setPaused(val);
  13264. return 0;
  13265. }
  13266. static int Polycode_SceneSprite_isPaused(lua_State *L) {
  13267. luaL_checktype(L, 1, LUA_TUSERDATA);
  13268. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13269. lua_pushboolean(L, inst->isPaused());
  13270. return 1;
  13271. }
  13272. static int Polycode_SceneSprite_setSprite(lua_State *L) {
  13273. luaL_checktype(L, 1, LUA_TUSERDATA);
  13274. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13275. luaL_checktype(L, 2, LUA_TUSERDATA);
  13276. shared_ptr<Sprite> spriteEntry = *(shared_ptr<Sprite>*) *((PolyBase**)lua_touserdata(L, 2));
  13277. inst->setSprite(spriteEntry);
  13278. return 0;
  13279. }
  13280. static int Polycode_SceneSprite_setSpriteState(lua_State *L) {
  13281. luaL_checktype(L, 1, LUA_TUSERDATA);
  13282. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13283. luaL_checktype(L, 2, LUA_TUSERDATA);
  13284. SpriteState* spriteState = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  13285. luaL_checktype(L, 3, LUA_TNUMBER);
  13286. int startingFrame = lua_tointeger(L, 3);
  13287. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13288. bool playOnce = lua_toboolean(L, 4) != 0;
  13289. inst->setSpriteState(spriteState, startingFrame, playOnce);
  13290. return 0;
  13291. }
  13292. static int Polycode_SceneSprite_setSpriteStateByName(lua_State *L) {
  13293. luaL_checktype(L, 1, LUA_TUSERDATA);
  13294. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13295. luaL_checktype(L, 2, LUA_TSTRING);
  13296. String name = String(lua_tostring(L, 2));
  13297. luaL_checktype(L, 3, LUA_TNUMBER);
  13298. int startingFrame = lua_tointeger(L, 3);
  13299. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13300. bool playOnce = lua_toboolean(L, 4) != 0;
  13301. inst->setSpriteStateByName(name, startingFrame, playOnce);
  13302. return 0;
  13303. }
  13304. static int Polycode_SceneSprite_getCurrentSpriteState(lua_State *L) {
  13305. luaL_checktype(L, 1, LUA_TUSERDATA);
  13306. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13307. PolyBase *ptrRetVal = (PolyBase*)inst->getCurrentSpriteState();
  13308. if(ptrRetVal == NULL) {
  13309. lua_pushnil(L);
  13310. } else {
  13311. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13312. *userdataPtr = ptrRetVal;
  13313. }
  13314. return 1;
  13315. }
  13316. static int Polycode_SceneSprite_getStartOnRandomFrame(lua_State *L) {
  13317. luaL_checktype(L, 1, LUA_TUSERDATA);
  13318. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13319. lua_pushboolean(L, inst->getStartOnRandomFrame());
  13320. return 1;
  13321. }
  13322. static int Polycode_SceneSprite_setStartOnRandomFrame(lua_State *L) {
  13323. luaL_checktype(L, 1, LUA_TUSERDATA);
  13324. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  13325. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13326. bool val = lua_toboolean(L, 2) != 0;
  13327. inst->setStartOnRandomFrame(val);
  13328. return 0;
  13329. }
  13330. static int Polycode_delete_SceneSprite(lua_State *L) {
  13331. luaL_checktype(L, 1, LUA_TUSERDATA);
  13332. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13333. delete ((SceneSprite*) *inst);
  13334. *inst = NULL;
  13335. return 0;
  13336. }
  13337. static int Polycode_Sprite(lua_State *L) {
  13338. luaL_checktype(L, 1, LUA_TSTRING);
  13339. String name = String(lua_tostring(L, 1));
  13340. Sprite *inst = new Sprite(name);
  13341. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13342. *userdataPtr = (PolyBase*)inst;
  13343. luaL_getmetatable(L, "Polycode.Sprite");
  13344. lua_setmetatable(L, -2);
  13345. return 1;
  13346. }
  13347. static int Polycode_Sprite_getName(lua_State *L) {
  13348. luaL_checktype(L, 1, LUA_TUSERDATA);
  13349. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13350. lua_pushstring(L, inst->getName().c_str());
  13351. return 1;
  13352. }
  13353. static int Polycode_Sprite_setName(lua_State *L) {
  13354. luaL_checktype(L, 1, LUA_TUSERDATA);
  13355. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13356. luaL_checktype(L, 2, LUA_TSTRING);
  13357. String name = String(lua_tostring(L, 2));
  13358. inst->setName(name);
  13359. return 0;
  13360. }
  13361. static int Polycode_Sprite_addSpriteState(lua_State *L) {
  13362. luaL_checktype(L, 1, LUA_TUSERDATA);
  13363. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13364. luaL_checktype(L, 2, LUA_TUSERDATA);
  13365. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  13366. inst->addSpriteState(state);
  13367. return 0;
  13368. }
  13369. static int Polycode_Sprite_removeSpriteState(lua_State *L) {
  13370. luaL_checktype(L, 1, LUA_TUSERDATA);
  13371. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13372. luaL_checktype(L, 2, LUA_TUSERDATA);
  13373. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  13374. inst->removeSpriteState(state);
  13375. return 0;
  13376. }
  13377. static int Polycode_Sprite_getNumStates(lua_State *L) {
  13378. luaL_checktype(L, 1, LUA_TUSERDATA);
  13379. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13380. lua_pushinteger(L, inst->getNumStates());
  13381. return 1;
  13382. }
  13383. static int Polycode_Sprite_getState(lua_State *L) {
  13384. luaL_checktype(L, 1, LUA_TUSERDATA);
  13385. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13386. luaL_checktype(L, 2, LUA_TNUMBER);
  13387. int index = lua_tointeger(L, 2);
  13388. PolyBase *ptrRetVal = (PolyBase*)inst->getState(index);
  13389. if(ptrRetVal == NULL) {
  13390. lua_pushnil(L);
  13391. } else {
  13392. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13393. *userdataPtr = ptrRetVal;
  13394. }
  13395. return 1;
  13396. }
  13397. static int Polycode_Sprite_getStateByName(lua_State *L) {
  13398. luaL_checktype(L, 1, LUA_TUSERDATA);
  13399. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13400. luaL_checktype(L, 2, LUA_TSTRING);
  13401. String name = String(lua_tostring(L, 2));
  13402. PolyBase *ptrRetVal = (PolyBase*)inst->getStateByName(name);
  13403. if(ptrRetVal == NULL) {
  13404. lua_pushnil(L);
  13405. } else {
  13406. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13407. *userdataPtr = ptrRetVal;
  13408. }
  13409. return 1;
  13410. }
  13411. static int Polycode_Sprite_setParentSpritSet(lua_State *L) {
  13412. luaL_checktype(L, 1, LUA_TUSERDATA);
  13413. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13414. luaL_checktype(L, 2, LUA_TUSERDATA);
  13415. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  13416. inst->setParentSpritSet(spriteSet);
  13417. return 0;
  13418. }
  13419. static int Polycode_Sprite_getParentSpriteSet(lua_State *L) {
  13420. luaL_checktype(L, 1, LUA_TUSERDATA);
  13421. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  13422. PolyBase *ptrRetVal = (PolyBase*)inst->getParentSpriteSet();
  13423. if(ptrRetVal == NULL) {
  13424. lua_pushnil(L);
  13425. } else {
  13426. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13427. *userdataPtr = ptrRetVal;
  13428. }
  13429. return 1;
  13430. }
  13431. static int Polycode_delete_Sprite(lua_State *L) {
  13432. luaL_checktype(L, 1, LUA_TUSERDATA);
  13433. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13434. delete ((Sprite*) *inst);
  13435. *inst = NULL;
  13436. return 0;
  13437. }
  13438. static int Polycode_SpriteSet(lua_State *L) {
  13439. luaL_checktype(L, 1, LUA_TSTRING);
  13440. String fileName = String(lua_tostring(L, 1));
  13441. luaL_checktype(L, 2, LUA_TUSERDATA);
  13442. ResourcePool* parentPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  13443. SpriteSet *inst = new SpriteSet(fileName, parentPool);
  13444. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13445. *userdataPtr = (PolyBase*)inst;
  13446. luaL_getmetatable(L, "Polycode.SpriteSet");
  13447. lua_setmetatable(L, -2);
  13448. return 1;
  13449. }
  13450. static int Polycode_SpriteSet_setTexture(lua_State *L) {
  13451. luaL_checktype(L, 1, LUA_TUSERDATA);
  13452. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13453. luaL_checktype(L, 2, LUA_TUSERDATA);
  13454. shared_ptr<Texture> texture = *(shared_ptr<Texture>*) *((PolyBase**)lua_touserdata(L, 2));
  13455. inst->setTexture(texture);
  13456. return 0;
  13457. }
  13458. static int Polycode_SpriteSet_getTexture(lua_State *L) {
  13459. luaL_checktype(L, 1, LUA_TUSERDATA);
  13460. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13461. shared_ptr<Texture> *retInst = new shared_ptr<Texture>();
  13462. *retInst = inst->getTexture();
  13463. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13464. luaL_getmetatable(L, "Polycode.shared_ptr<Texture>");
  13465. lua_setmetatable(L, -2);
  13466. *userdataPtr = (PolyBase*)retInst;
  13467. return 1;
  13468. }
  13469. static int Polycode_SpriteSet_addSpriteEntry(lua_State *L) {
  13470. luaL_checktype(L, 1, LUA_TUSERDATA);
  13471. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13472. luaL_checktype(L, 2, LUA_TUSERDATA);
  13473. shared_ptr<Sprite> newEntry = *(shared_ptr<Sprite>*) *((PolyBase**)lua_touserdata(L, 2));
  13474. inst->addSpriteEntry(newEntry);
  13475. return 0;
  13476. }
  13477. static int Polycode_SpriteSet_getNumSpriteEntries(lua_State *L) {
  13478. luaL_checktype(L, 1, LUA_TUSERDATA);
  13479. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13480. lua_pushinteger(L, inst->getNumSpriteEntries());
  13481. return 1;
  13482. }
  13483. static int Polycode_SpriteSet_getSpriteEntry(lua_State *L) {
  13484. luaL_checktype(L, 1, LUA_TUSERDATA);
  13485. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13486. luaL_checktype(L, 2, LUA_TNUMBER);
  13487. int index = lua_tointeger(L, 2);
  13488. shared_ptr<Sprite> *retInst = new shared_ptr<Sprite>();
  13489. *retInst = inst->getSpriteEntry(index);
  13490. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13491. luaL_getmetatable(L, "Polycode.shared_ptr<Sprite>");
  13492. lua_setmetatable(L, -2);
  13493. *userdataPtr = (PolyBase*)retInst;
  13494. return 1;
  13495. }
  13496. static int Polycode_SpriteSet_removeSprite(lua_State *L) {
  13497. luaL_checktype(L, 1, LUA_TUSERDATA);
  13498. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13499. luaL_checktype(L, 2, LUA_TUSERDATA);
  13500. shared_ptr<Sprite> sprite = *(shared_ptr<Sprite>*) *((PolyBase**)lua_touserdata(L, 2));
  13501. inst->removeSprite(sprite);
  13502. return 0;
  13503. }
  13504. static int Polycode_SpriteSet_loadSpriteSet(lua_State *L) {
  13505. luaL_checktype(L, 1, LUA_TUSERDATA);
  13506. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13507. luaL_checktype(L, 2, LUA_TSTRING);
  13508. String fileName = String(lua_tostring(L, 2));
  13509. inst->loadSpriteSet(fileName);
  13510. return 0;
  13511. }
  13512. static int Polycode_SpriteSet_addSpriteFrame(lua_State *L) {
  13513. luaL_checktype(L, 1, LUA_TUSERDATA);
  13514. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13515. luaL_checktype(L, 2, LUA_TUSERDATA);
  13516. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  13517. bool assignID;
  13518. if(lua_isboolean(L, 3)) {
  13519. assignID = lua_toboolean(L, 3) != 0;
  13520. } else {
  13521. assignID = true;
  13522. }
  13523. inst->addSpriteFrame(frame, assignID);
  13524. return 0;
  13525. }
  13526. static int Polycode_SpriteSet_getNumFrames(lua_State *L) {
  13527. luaL_checktype(L, 1, LUA_TUSERDATA);
  13528. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13529. lua_pushinteger(L, inst->getNumFrames());
  13530. return 1;
  13531. }
  13532. static int Polycode_SpriteSet_getSpriteFrame(lua_State *L) {
  13533. luaL_checktype(L, 1, LUA_TUSERDATA);
  13534. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13535. luaL_checktype(L, 2, LUA_TNUMBER);
  13536. int index = lua_tointeger(L, 2);
  13537. SpriteFrame *retInst = new SpriteFrame();
  13538. *retInst = inst->getSpriteFrame(index);
  13539. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13540. luaL_getmetatable(L, "Polycode.SpriteFrame");
  13541. lua_setmetatable(L, -2);
  13542. *userdataPtr = (PolyBase*)retInst;
  13543. return 1;
  13544. }
  13545. static int Polycode_SpriteSet_getSpriteFrameByID(lua_State *L) {
  13546. luaL_checktype(L, 1, LUA_TUSERDATA);
  13547. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13548. luaL_checktype(L, 2, LUA_TNUMBER);
  13549. int frameID = lua_tointeger(L, 2);
  13550. SpriteFrame *retInst = new SpriteFrame();
  13551. *retInst = inst->getSpriteFrameByID(frameID);
  13552. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13553. luaL_getmetatable(L, "Polycode.SpriteFrame");
  13554. lua_setmetatable(L, -2);
  13555. *userdataPtr = (PolyBase*)retInst;
  13556. return 1;
  13557. }
  13558. static int Polycode_SpriteSet_removeFrameByID(lua_State *L) {
  13559. luaL_checktype(L, 1, LUA_TUSERDATA);
  13560. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13561. luaL_checktype(L, 2, LUA_TNUMBER);
  13562. int frameID = lua_tointeger(L, 2);
  13563. inst->removeFrameByID(frameID);
  13564. return 0;
  13565. }
  13566. static int Polycode_SpriteSet_setSpriteFrame(lua_State *L) {
  13567. luaL_checktype(L, 1, LUA_TUSERDATA);
  13568. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13569. luaL_checktype(L, 2, LUA_TUSERDATA);
  13570. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  13571. inst->setSpriteFrame(frame);
  13572. return 0;
  13573. }
  13574. static int Polycode_SpriteSet_clearFrames(lua_State *L) {
  13575. luaL_checktype(L, 1, LUA_TUSERDATA);
  13576. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13577. inst->clearFrames();
  13578. return 0;
  13579. }
  13580. static int Polycode_SpriteSet_createGridFrames(lua_State *L) {
  13581. luaL_checktype(L, 1, LUA_TUSERDATA);
  13582. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13583. luaL_checktype(L, 2, LUA_TNUMBER);
  13584. int xCount = lua_tointeger(L, 2);
  13585. luaL_checktype(L, 3, LUA_TNUMBER);
  13586. int yCount = lua_tointeger(L, 3);
  13587. luaL_checktype(L, 4, LUA_TUSERDATA);
  13588. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 4));
  13589. inst->createGridFrames(xCount, yCount, defaultAnchor);
  13590. return 0;
  13591. }
  13592. static int Polycode_SpriteSet_createFramesFromIslands(lua_State *L) {
  13593. luaL_checktype(L, 1, LUA_TUSERDATA);
  13594. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13595. luaL_checktype(L, 2, LUA_TNUMBER);
  13596. int minDistance = lua_tointeger(L, 2);
  13597. luaL_checktype(L, 3, LUA_TUSERDATA);
  13598. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  13599. inst->createFramesFromIslands(minDistance, defaultAnchor);
  13600. return 0;
  13601. }
  13602. static int Polycode_SpriteSet_getSpriteByName(lua_State *L) {
  13603. luaL_checktype(L, 1, LUA_TUSERDATA);
  13604. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13605. luaL_checktype(L, 2, LUA_TSTRING);
  13606. String spriteName = String(lua_tostring(L, 2));
  13607. shared_ptr<Sprite> *retInst = new shared_ptr<Sprite>();
  13608. *retInst = inst->getSpriteByName(spriteName);
  13609. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13610. luaL_getmetatable(L, "Polycode.shared_ptr<Sprite>");
  13611. lua_setmetatable(L, -2);
  13612. *userdataPtr = (PolyBase*)retInst;
  13613. return 1;
  13614. }
  13615. static int Polycode_delete_SpriteSet(lua_State *L) {
  13616. luaL_checktype(L, 1, LUA_TUSERDATA);
  13617. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13618. delete ((SpriteSet*) *inst);
  13619. *inst = NULL;
  13620. return 0;
  13621. }
  13622. static int Polycode_SpriteFrame_get_coordinates(lua_State *L) {
  13623. luaL_checktype(L, 1, LUA_TUSERDATA);
  13624. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13625. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13626. *userdataPtr = (PolyBase*)&inst->coordinates;
  13627. return 1;
  13628. }
  13629. static int Polycode_SpriteFrame_get_anchorPoint(lua_State *L) {
  13630. luaL_checktype(L, 1, LUA_TUSERDATA);
  13631. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13632. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13633. *userdataPtr = (PolyBase*)&inst->anchorPoint;
  13634. return 1;
  13635. }
  13636. static int Polycode_SpriteFrame_get_frameID(lua_State *L) {
  13637. luaL_checktype(L, 1, LUA_TUSERDATA);
  13638. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13639. lua_pushinteger(L, inst->frameID);
  13640. return 1;
  13641. }
  13642. static int Polycode_SpriteFrame_set_coordinates(lua_State *L) {
  13643. luaL_checktype(L, 1, LUA_TUSERDATA);
  13644. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13645. luaL_checktype(L, 2, LUA_TUSERDATA);
  13646. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  13647. inst->coordinates = *argInst;
  13648. return 0;
  13649. }
  13650. static int Polycode_SpriteFrame_set_anchorPoint(lua_State *L) {
  13651. luaL_checktype(L, 1, LUA_TUSERDATA);
  13652. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13653. luaL_checktype(L, 2, LUA_TUSERDATA);
  13654. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  13655. inst->anchorPoint = *argInst;
  13656. return 0;
  13657. }
  13658. static int Polycode_SpriteFrame_set_frameID(lua_State *L) {
  13659. luaL_checktype(L, 1, LUA_TUSERDATA);
  13660. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  13661. int param = lua_tointeger(L, 2);
  13662. inst->frameID = param;
  13663. return 0;
  13664. }
  13665. static int Polycode_delete_SpriteFrame(lua_State *L) {
  13666. luaL_checktype(L, 1, LUA_TUSERDATA);
  13667. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13668. delete ((SpriteFrame*) *inst);
  13669. *inst = NULL;
  13670. return 0;
  13671. }
  13672. static int Polycode_SpriteState(lua_State *L) {
  13673. luaL_checktype(L, 1, LUA_TUSERDATA);
  13674. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  13675. luaL_checktype(L, 2, LUA_TSTRING);
  13676. String name = String(lua_tostring(L, 2));
  13677. SpriteState *inst = new SpriteState(spriteSet, name);
  13678. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13679. *userdataPtr = (PolyBase*)inst;
  13680. luaL_getmetatable(L, "Polycode.SpriteState");
  13681. lua_setmetatable(L, -2);
  13682. return 1;
  13683. }
  13684. static int Polycode_SpriteState_setName(lua_State *L) {
  13685. luaL_checktype(L, 1, LUA_TUSERDATA);
  13686. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13687. luaL_checktype(L, 2, LUA_TSTRING);
  13688. String name = String(lua_tostring(L, 2));
  13689. inst->setName(name);
  13690. return 0;
  13691. }
  13692. static int Polycode_SpriteState_getName(lua_State *L) {
  13693. luaL_checktype(L, 1, LUA_TUSERDATA);
  13694. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13695. lua_pushstring(L, inst->getName().c_str());
  13696. return 1;
  13697. }
  13698. static int Polycode_SpriteState_getNumFrameIDs(lua_State *L) {
  13699. luaL_checktype(L, 1, LUA_TUSERDATA);
  13700. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13701. lua_pushinteger(L, inst->getNumFrameIDs());
  13702. return 1;
  13703. }
  13704. static int Polycode_SpriteState_getFrameIDAtIndex(lua_State *L) {
  13705. luaL_checktype(L, 1, LUA_TUSERDATA);
  13706. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13707. luaL_checktype(L, 2, LUA_TNUMBER);
  13708. int index = lua_tointeger(L, 2);
  13709. lua_pushinteger(L, inst->getFrameIDAtIndex(index));
  13710. return 1;
  13711. }
  13712. static int Polycode_SpriteState_getMeshForFrameIndex(lua_State *L) {
  13713. luaL_checktype(L, 1, LUA_TUSERDATA);
  13714. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13715. luaL_checktype(L, 2, LUA_TNUMBER);
  13716. int index = lua_tointeger(L, 2);
  13717. shared_ptr<Mesh> *retInst = new shared_ptr<Mesh>();
  13718. *retInst = inst->getMeshForFrameIndex(index);
  13719. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13720. luaL_getmetatable(L, "Polycode.shared_ptr<Mesh>");
  13721. lua_setmetatable(L, -2);
  13722. *userdataPtr = (PolyBase*)retInst;
  13723. return 1;
  13724. }
  13725. static int Polycode_SpriteState_insertFrame(lua_State *L) {
  13726. luaL_checktype(L, 1, LUA_TUSERDATA);
  13727. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13728. luaL_checktype(L, 2, LUA_TNUMBER);
  13729. int index = lua_tointeger(L, 2);
  13730. luaL_checktype(L, 3, LUA_TNUMBER);
  13731. int frameID = lua_tointeger(L, 3);
  13732. inst->insertFrame(index, frameID);
  13733. return 0;
  13734. }
  13735. static int Polycode_SpriteState_removeFrameByIndex(lua_State *L) {
  13736. luaL_checktype(L, 1, LUA_TUSERDATA);
  13737. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13738. luaL_checktype(L, 2, LUA_TNUMBER);
  13739. int frameIndex = lua_tointeger(L, 2);
  13740. inst->removeFrameByIndex(frameIndex);
  13741. return 0;
  13742. }
  13743. static int Polycode_SpriteState_clearFrames(lua_State *L) {
  13744. luaL_checktype(L, 1, LUA_TUSERDATA);
  13745. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13746. inst->clearFrames();
  13747. return 0;
  13748. }
  13749. static int Polycode_SpriteState_setPixelsPerUnit(lua_State *L) {
  13750. luaL_checktype(L, 1, LUA_TUSERDATA);
  13751. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13752. luaL_checktype(L, 2, LUA_TNUMBER);
  13753. Number ppu = lua_tonumber(L, 2);
  13754. inst->setPixelsPerUnit(ppu);
  13755. return 0;
  13756. }
  13757. static int Polycode_SpriteState_getPixelsPerUnit(lua_State *L) {
  13758. luaL_checktype(L, 1, LUA_TUSERDATA);
  13759. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13760. lua_pushnumber(L, inst->getPixelsPerUnit());
  13761. return 1;
  13762. }
  13763. static int Polycode_SpriteState_rebuildStateMeshes(lua_State *L) {
  13764. luaL_checktype(L, 1, LUA_TUSERDATA);
  13765. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13766. inst->rebuildStateMeshes();
  13767. return 0;
  13768. }
  13769. static int Polycode_SpriteState_setStateFPS(lua_State *L) {
  13770. luaL_checktype(L, 1, LUA_TUSERDATA);
  13771. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13772. luaL_checktype(L, 2, LUA_TNUMBER);
  13773. Number fps = lua_tonumber(L, 2);
  13774. inst->setStateFPS(fps);
  13775. return 0;
  13776. }
  13777. static int Polycode_SpriteState_getStateFPS(lua_State *L) {
  13778. luaL_checktype(L, 1, LUA_TUSERDATA);
  13779. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13780. lua_pushnumber(L, inst->getStateFPS());
  13781. return 1;
  13782. }
  13783. static int Polycode_SpriteState_getLargestFrameBoundingBox(lua_State *L) {
  13784. luaL_checktype(L, 1, LUA_TUSERDATA);
  13785. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13786. Vector3 *retInst = new Vector3();
  13787. *retInst = inst->getLargestFrameBoundingBox();
  13788. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13789. luaL_getmetatable(L, "Polycode.Vector3");
  13790. lua_setmetatable(L, -2);
  13791. *userdataPtr = (PolyBase*)retInst;
  13792. return 1;
  13793. }
  13794. static int Polycode_SpriteState_setBoundingBox(lua_State *L) {
  13795. luaL_checktype(L, 1, LUA_TUSERDATA);
  13796. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13797. luaL_checktype(L, 2, LUA_TUSERDATA);
  13798. Vector2 boundingBox = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  13799. inst->setBoundingBox(boundingBox);
  13800. return 0;
  13801. }
  13802. static int Polycode_SpriteState_getBoundingBox(lua_State *L) {
  13803. luaL_checktype(L, 1, LUA_TUSERDATA);
  13804. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13805. Vector2 *retInst = new Vector2();
  13806. *retInst = inst->getBoundingBox();
  13807. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13808. luaL_getmetatable(L, "Polycode.Vector2");
  13809. lua_setmetatable(L, -2);
  13810. *userdataPtr = (PolyBase*)retInst;
  13811. return 1;
  13812. }
  13813. static int Polycode_SpriteState_getSpriteOffset(lua_State *L) {
  13814. luaL_checktype(L, 1, LUA_TUSERDATA);
  13815. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13816. Vector2 *retInst = new Vector2();
  13817. *retInst = inst->getSpriteOffset();
  13818. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13819. luaL_getmetatable(L, "Polycode.Vector2");
  13820. lua_setmetatable(L, -2);
  13821. *userdataPtr = (PolyBase*)retInst;
  13822. return 1;
  13823. }
  13824. static int Polycode_SpriteState_setSpriteOffset(lua_State *L) {
  13825. luaL_checktype(L, 1, LUA_TUSERDATA);
  13826. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  13827. luaL_checktype(L, 2, LUA_TUSERDATA);
  13828. Vector2 offset = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  13829. inst->setSpriteOffset(offset);
  13830. return 0;
  13831. }
  13832. static int Polycode_delete_SpriteState(lua_State *L) {
  13833. luaL_checktype(L, 1, LUA_TUSERDATA);
  13834. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13835. delete ((SpriteState*) *inst);
  13836. *inst = NULL;
  13837. return 0;
  13838. }
  13839. static int Polycode_ScriptInstance_get_script(lua_State *L) {
  13840. luaL_checktype(L, 1, LUA_TUSERDATA);
  13841. ScriptInstance *inst = (ScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  13842. if(!inst->script) {
  13843. lua_pushnil(L);
  13844. } else {
  13845. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13846. *userdataPtr = (PolyBase*)inst->script;
  13847. }
  13848. return 1;
  13849. }
  13850. static int Polycode_ScriptInstance_set_script(lua_State *L) {
  13851. luaL_checktype(L, 1, LUA_TUSERDATA);
  13852. ScriptInstance *inst = (ScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  13853. luaL_checktype(L, 2, LUA_TUSERDATA);
  13854. Script* *argInst = (Script**) *((PolyBase**)lua_touserdata(L, 2));
  13855. inst->script = *argInst;
  13856. return 0;
  13857. }
  13858. static int Polycode_delete_ScriptInstance(lua_State *L) {
  13859. luaL_checktype(L, 1, LUA_TUSERDATA);
  13860. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13861. delete ((ScriptInstance*) *inst);
  13862. *inst = NULL;
  13863. return 0;
  13864. }
  13865. static int Polycode_ProgramParam_get_name(lua_State *L) {
  13866. luaL_checktype(L, 1, LUA_TUSERDATA);
  13867. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13868. lua_pushstring(L, inst->name.c_str());
  13869. return 1;
  13870. }
  13871. static int Polycode_ProgramParam_get_type(lua_State *L) {
  13872. luaL_checktype(L, 1, LUA_TUSERDATA);
  13873. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13874. lua_pushinteger(L, inst->type);
  13875. return 1;
  13876. }
  13877. static int Polycode_ProgramParam_get_globalParam(lua_State *L) {
  13878. luaL_checktype(L, 1, LUA_TUSERDATA);
  13879. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13880. if(!inst->globalParam) {
  13881. lua_pushnil(L);
  13882. } else {
  13883. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13884. *userdataPtr = (PolyBase*)inst->globalParam;
  13885. }
  13886. return 1;
  13887. }
  13888. static int Polycode_ProgramParam_set_name(lua_State *L) {
  13889. luaL_checktype(L, 1, LUA_TUSERDATA);
  13890. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13891. String param = lua_tostring(L, 2);
  13892. inst->name = param;
  13893. return 0;
  13894. }
  13895. static int Polycode_ProgramParam_set_type(lua_State *L) {
  13896. luaL_checktype(L, 1, LUA_TUSERDATA);
  13897. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13898. int param = lua_tointeger(L, 2);
  13899. inst->type = param;
  13900. return 0;
  13901. }
  13902. static int Polycode_ProgramParam_set_globalParam(lua_State *L) {
  13903. luaL_checktype(L, 1, LUA_TUSERDATA);
  13904. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  13905. luaL_checktype(L, 2, LUA_TUSERDATA);
  13906. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  13907. inst->globalParam = *argInst;
  13908. return 0;
  13909. }
  13910. static int Polycode_ProgramParam(lua_State *L) {
  13911. ProgramParam *inst = new ProgramParam();
  13912. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13913. *userdataPtr = (PolyBase*)inst;
  13914. luaL_getmetatable(L, "Polycode.ProgramParam");
  13915. lua_setmetatable(L, -2);
  13916. return 1;
  13917. }
  13918. static int Polycode_ProgramParam_createParamData(lua_State *L) {
  13919. luaL_checktype(L, 1, LUA_TNUMBER);
  13920. int type = lua_tointeger(L, 1);
  13921. PolyBase *ptrRetVal = (PolyBase*)ProgramParam::createParamData(type);
  13922. if(ptrRetVal == NULL) {
  13923. lua_pushnil(L);
  13924. } else {
  13925. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13926. *userdataPtr = ptrRetVal;
  13927. }
  13928. return 1;
  13929. }
  13930. static int Polycode_delete_ProgramParam(lua_State *L) {
  13931. luaL_checktype(L, 1, LUA_TUSERDATA);
  13932. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13933. delete ((ProgramParam*) *inst);
  13934. *inst = NULL;
  13935. return 0;
  13936. }
  13937. static int Polycode_ProgramAttribute_get_size(lua_State *L) {
  13938. luaL_checktype(L, 1, LUA_TUSERDATA);
  13939. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13940. lua_pushinteger(L, inst->size);
  13941. return 1;
  13942. }
  13943. static int Polycode_ProgramAttribute_get_name(lua_State *L) {
  13944. luaL_checktype(L, 1, LUA_TUSERDATA);
  13945. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13946. lua_pushstring(L, inst->name.c_str());
  13947. return 1;
  13948. }
  13949. static int Polycode_ProgramAttribute_get_arrayType(lua_State *L) {
  13950. luaL_checktype(L, 1, LUA_TUSERDATA);
  13951. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13952. lua_pushinteger(L, inst->arrayType);
  13953. return 1;
  13954. }
  13955. static int Polycode_ProgramAttribute_set_size(lua_State *L) {
  13956. luaL_checktype(L, 1, LUA_TUSERDATA);
  13957. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13958. int param = lua_tointeger(L, 2);
  13959. inst->size = param;
  13960. return 0;
  13961. }
  13962. static int Polycode_ProgramAttribute_set_name(lua_State *L) {
  13963. luaL_checktype(L, 1, LUA_TUSERDATA);
  13964. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13965. String param = lua_tostring(L, 2);
  13966. inst->name = param;
  13967. return 0;
  13968. }
  13969. static int Polycode_ProgramAttribute_set_arrayType(lua_State *L) {
  13970. luaL_checktype(L, 1, LUA_TUSERDATA);
  13971. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  13972. int param = lua_tointeger(L, 2);
  13973. inst->arrayType = param;
  13974. return 0;
  13975. }
  13976. static int Polycode_ProgramAttribute(lua_State *L) {
  13977. ProgramAttribute *inst = new ProgramAttribute();
  13978. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13979. *userdataPtr = (PolyBase*)inst;
  13980. luaL_getmetatable(L, "Polycode.ProgramAttribute");
  13981. lua_setmetatable(L, -2);
  13982. return 1;
  13983. }
  13984. static int Polycode_delete_ProgramAttribute(lua_State *L) {
  13985. luaL_checktype(L, 1, LUA_TUSERDATA);
  13986. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13987. delete ((ProgramAttribute*) *inst);
  13988. *inst = NULL;
  13989. return 0;
  13990. }
  13991. static int Polycode_ShaderRenderTarget_get_id(lua_State *L) {
  13992. luaL_checktype(L, 1, LUA_TUSERDATA);
  13993. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  13994. lua_pushstring(L, inst->id.c_str());
  13995. return 1;
  13996. }
  13997. static int Polycode_ShaderRenderTarget_get_width(lua_State *L) {
  13998. luaL_checktype(L, 1, LUA_TUSERDATA);
  13999. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14000. lua_pushnumber(L, inst->width);
  14001. return 1;
  14002. }
  14003. static int Polycode_ShaderRenderTarget_get_height(lua_State *L) {
  14004. luaL_checktype(L, 1, LUA_TUSERDATA);
  14005. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14006. lua_pushnumber(L, inst->height);
  14007. return 1;
  14008. }
  14009. static int Polycode_ShaderRenderTarget_get_sizeMode(lua_State *L) {
  14010. luaL_checktype(L, 1, LUA_TUSERDATA);
  14011. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14012. lua_pushinteger(L, inst->sizeMode);
  14013. return 1;
  14014. }
  14015. static int Polycode_ShaderRenderTarget_get_normalizedWidth(lua_State *L) {
  14016. luaL_checktype(L, 1, LUA_TUSERDATA);
  14017. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14018. lua_pushnumber(L, inst->normalizedWidth);
  14019. return 1;
  14020. }
  14021. static int Polycode_ShaderRenderTarget_get_normalizedHeight(lua_State *L) {
  14022. luaL_checktype(L, 1, LUA_TUSERDATA);
  14023. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14024. lua_pushnumber(L, inst->normalizedHeight);
  14025. return 1;
  14026. }
  14027. static int Polycode_ShaderRenderTarget_set_id(lua_State *L) {
  14028. luaL_checktype(L, 1, LUA_TUSERDATA);
  14029. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14030. String param = lua_tostring(L, 2);
  14031. inst->id = param;
  14032. return 0;
  14033. }
  14034. static int Polycode_ShaderRenderTarget_set_width(lua_State *L) {
  14035. luaL_checktype(L, 1, LUA_TUSERDATA);
  14036. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14037. Number param = lua_tonumber(L, 2);
  14038. inst->width = param;
  14039. return 0;
  14040. }
  14041. static int Polycode_ShaderRenderTarget_set_height(lua_State *L) {
  14042. luaL_checktype(L, 1, LUA_TUSERDATA);
  14043. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14044. Number param = lua_tonumber(L, 2);
  14045. inst->height = param;
  14046. return 0;
  14047. }
  14048. static int Polycode_ShaderRenderTarget_set_sizeMode(lua_State *L) {
  14049. luaL_checktype(L, 1, LUA_TUSERDATA);
  14050. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14051. int param = lua_tointeger(L, 2);
  14052. inst->sizeMode = param;
  14053. return 0;
  14054. }
  14055. static int Polycode_ShaderRenderTarget_set_normalizedWidth(lua_State *L) {
  14056. luaL_checktype(L, 1, LUA_TUSERDATA);
  14057. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14058. Number param = lua_tonumber(L, 2);
  14059. inst->normalizedWidth = param;
  14060. return 0;
  14061. }
  14062. static int Polycode_ShaderRenderTarget_set_normalizedHeight(lua_State *L) {
  14063. luaL_checktype(L, 1, LUA_TUSERDATA);
  14064. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  14065. Number param = lua_tonumber(L, 2);
  14066. inst->normalizedHeight = param;
  14067. return 0;
  14068. }
  14069. static int Polycode_ShaderRenderTarget(lua_State *L) {
  14070. ShaderRenderTarget *inst = new ShaderRenderTarget();
  14071. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14072. *userdataPtr = (PolyBase*)inst;
  14073. luaL_getmetatable(L, "Polycode.ShaderRenderTarget");
  14074. lua_setmetatable(L, -2);
  14075. return 1;
  14076. }
  14077. static int Polycode_delete_ShaderRenderTarget(lua_State *L) {
  14078. luaL_checktype(L, 1, LUA_TUSERDATA);
  14079. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14080. delete ((ShaderRenderTarget*) *inst);
  14081. *inst = NULL;
  14082. return 0;
  14083. }
  14084. static int Polycode_RenderTargetBinding_get_id(lua_State *L) {
  14085. luaL_checktype(L, 1, LUA_TUSERDATA);
  14086. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14087. lua_pushstring(L, inst->id.c_str());
  14088. return 1;
  14089. }
  14090. static int Polycode_RenderTargetBinding_get_name(lua_State *L) {
  14091. luaL_checktype(L, 1, LUA_TUSERDATA);
  14092. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14093. lua_pushstring(L, inst->name.c_str());
  14094. return 1;
  14095. }
  14096. static int Polycode_RenderTargetBinding_get_mode(lua_State *L) {
  14097. luaL_checktype(L, 1, LUA_TUSERDATA);
  14098. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14099. lua_pushinteger(L, inst->mode);
  14100. return 1;
  14101. }
  14102. static int Polycode_RenderTargetBinding_set_id(lua_State *L) {
  14103. luaL_checktype(L, 1, LUA_TUSERDATA);
  14104. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14105. String param = lua_tostring(L, 2);
  14106. inst->id = param;
  14107. return 0;
  14108. }
  14109. static int Polycode_RenderTargetBinding_set_name(lua_State *L) {
  14110. luaL_checktype(L, 1, LUA_TUSERDATA);
  14111. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14112. String param = lua_tostring(L, 2);
  14113. inst->name = param;
  14114. return 0;
  14115. }
  14116. static int Polycode_RenderTargetBinding_set_mode(lua_State *L) {
  14117. luaL_checktype(L, 1, LUA_TUSERDATA);
  14118. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14119. int param = lua_tointeger(L, 2);
  14120. inst->mode = param;
  14121. return 0;
  14122. }
  14123. static int Polycode_delete_RenderTargetBinding(lua_State *L) {
  14124. luaL_checktype(L, 1, LUA_TUSERDATA);
  14125. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14126. delete ((RenderTargetBinding*) *inst);
  14127. *inst = NULL;
  14128. return 0;
  14129. }
  14130. static int Polycode_Shader_get_numSpotLights(lua_State *L) {
  14131. luaL_checktype(L, 1, LUA_TUSERDATA);
  14132. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14133. lua_pushinteger(L, inst->numSpotLights);
  14134. return 1;
  14135. }
  14136. static int Polycode_Shader_get_numPointLights(lua_State *L) {
  14137. luaL_checktype(L, 1, LUA_TUSERDATA);
  14138. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14139. lua_pushinteger(L, inst->numPointLights);
  14140. return 1;
  14141. }
  14142. static int Polycode_Shader_get_screenShader(lua_State *L) {
  14143. luaL_checktype(L, 1, LUA_TUSERDATA);
  14144. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14145. lua_pushboolean(L, inst->screenShader);
  14146. return 1;
  14147. }
  14148. static int Polycode_Shader_get_name(lua_State *L) {
  14149. luaL_checktype(L, 1, LUA_TUSERDATA);
  14150. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14151. lua_pushstring(L, inst->name.c_str());
  14152. return 1;
  14153. }
  14154. static int Polycode_Shader_set_numSpotLights(lua_State *L) {
  14155. luaL_checktype(L, 1, LUA_TUSERDATA);
  14156. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14157. int param = lua_tointeger(L, 2);
  14158. inst->numSpotLights = param;
  14159. return 0;
  14160. }
  14161. static int Polycode_Shader_set_numPointLights(lua_State *L) {
  14162. luaL_checktype(L, 1, LUA_TUSERDATA);
  14163. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14164. int param = lua_tointeger(L, 2);
  14165. inst->numPointLights = param;
  14166. return 0;
  14167. }
  14168. static int Polycode_Shader_set_screenShader(lua_State *L) {
  14169. luaL_checktype(L, 1, LUA_TUSERDATA);
  14170. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14171. bool param = lua_toboolean(L, 2) != 0;
  14172. inst->screenShader = param;
  14173. return 0;
  14174. }
  14175. static int Polycode_Shader_set_name(lua_State *L) {
  14176. luaL_checktype(L, 1, LUA_TUSERDATA);
  14177. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14178. String param = lua_tostring(L, 2);
  14179. inst->name = param;
  14180. return 0;
  14181. }
  14182. static int Polycode_Shader_getType(lua_State *L) {
  14183. luaL_checktype(L, 1, LUA_TUSERDATA);
  14184. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14185. lua_pushinteger(L, inst->getType());
  14186. return 1;
  14187. }
  14188. static int Polycode_Shader_setName(lua_State *L) {
  14189. luaL_checktype(L, 1, LUA_TUSERDATA);
  14190. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14191. luaL_checktype(L, 2, LUA_TSTRING);
  14192. String name = String(lua_tostring(L, 2));
  14193. inst->setName(name);
  14194. return 0;
  14195. }
  14196. static int Polycode_Shader_getName(lua_State *L) {
  14197. luaL_checktype(L, 1, LUA_TUSERDATA);
  14198. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14199. lua_pushstring(L, inst->getName().c_str());
  14200. return 1;
  14201. }
  14202. static int Polycode_Shader_getParamPointer(lua_State *L) {
  14203. luaL_checktype(L, 1, LUA_TUSERDATA);
  14204. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14205. luaL_checktype(L, 2, LUA_TSTRING);
  14206. String name = String(lua_tostring(L, 2));
  14207. PolyBase *ptrRetVal = (PolyBase*)inst->getParamPointer(name);
  14208. if(ptrRetVal == NULL) {
  14209. lua_pushnil(L);
  14210. } else {
  14211. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14212. *userdataPtr = ptrRetVal;
  14213. }
  14214. return 1;
  14215. }
  14216. static int Polycode_Shader_getAttribPointer(lua_State *L) {
  14217. luaL_checktype(L, 1, LUA_TUSERDATA);
  14218. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14219. luaL_checktype(L, 2, LUA_TSTRING);
  14220. String name = String(lua_tostring(L, 2));
  14221. PolyBase *ptrRetVal = (PolyBase*)inst->getAttribPointer(name);
  14222. if(ptrRetVal == NULL) {
  14223. lua_pushnil(L);
  14224. } else {
  14225. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14226. *userdataPtr = ptrRetVal;
  14227. }
  14228. return 1;
  14229. }
  14230. static int Polycode_Shader_reload(lua_State *L) {
  14231. luaL_checktype(L, 1, LUA_TUSERDATA);
  14232. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14233. inst->reload();
  14234. return 0;
  14235. }
  14236. static int Polycode_Shader_getExpectedParamType(lua_State *L) {
  14237. luaL_checktype(L, 1, LUA_TUSERDATA);
  14238. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  14239. luaL_checktype(L, 2, LUA_TSTRING);
  14240. String name = String(lua_tostring(L, 2));
  14241. lua_pushinteger(L, inst->getExpectedParamType(name));
  14242. return 1;
  14243. }
  14244. static int Polycode_delete_Shader(lua_State *L) {
  14245. luaL_checktype(L, 1, LUA_TUSERDATA);
  14246. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14247. delete ((Shader*) *inst);
  14248. *inst = NULL;
  14249. return 0;
  14250. }
  14251. static int Polycode_LocalShaderParam_get_name(lua_State *L) {
  14252. luaL_checktype(L, 1, LUA_TUSERDATA);
  14253. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14254. lua_pushstring(L, inst->name.c_str());
  14255. return 1;
  14256. }
  14257. static int Polycode_LocalShaderParam_get_type(lua_State *L) {
  14258. luaL_checktype(L, 1, LUA_TUSERDATA);
  14259. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14260. lua_pushinteger(L, inst->type);
  14261. return 1;
  14262. }
  14263. static int Polycode_LocalShaderParam_get_ownsPointer(lua_State *L) {
  14264. luaL_checktype(L, 1, LUA_TUSERDATA);
  14265. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14266. lua_pushboolean(L, inst->ownsPointer);
  14267. return 1;
  14268. }
  14269. static int Polycode_LocalShaderParam_get_arraySize(lua_State *L) {
  14270. luaL_checktype(L, 1, LUA_TUSERDATA);
  14271. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14272. lua_pushinteger(L, inst->arraySize);
  14273. return 1;
  14274. }
  14275. static int Polycode_LocalShaderParam_get_param(lua_State *L) {
  14276. luaL_checktype(L, 1, LUA_TUSERDATA);
  14277. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14278. if(!inst->param) {
  14279. lua_pushnil(L);
  14280. } else {
  14281. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14282. *userdataPtr = (PolyBase*)inst->param;
  14283. }
  14284. return 1;
  14285. }
  14286. static int Polycode_LocalShaderParam_set_name(lua_State *L) {
  14287. luaL_checktype(L, 1, LUA_TUSERDATA);
  14288. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14289. String param = lua_tostring(L, 2);
  14290. inst->name = param;
  14291. return 0;
  14292. }
  14293. static int Polycode_LocalShaderParam_set_type(lua_State *L) {
  14294. luaL_checktype(L, 1, LUA_TUSERDATA);
  14295. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14296. int param = lua_tointeger(L, 2);
  14297. inst->type = param;
  14298. return 0;
  14299. }
  14300. static int Polycode_LocalShaderParam_set_ownsPointer(lua_State *L) {
  14301. luaL_checktype(L, 1, LUA_TUSERDATA);
  14302. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14303. bool param = lua_toboolean(L, 2) != 0;
  14304. inst->ownsPointer = param;
  14305. return 0;
  14306. }
  14307. static int Polycode_LocalShaderParam_set_arraySize(lua_State *L) {
  14308. luaL_checktype(L, 1, LUA_TUSERDATA);
  14309. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14310. int param = lua_tointeger(L, 2);
  14311. inst->arraySize = param;
  14312. return 0;
  14313. }
  14314. static int Polycode_LocalShaderParam_set_param(lua_State *L) {
  14315. luaL_checktype(L, 1, LUA_TUSERDATA);
  14316. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14317. luaL_checktype(L, 2, LUA_TUSERDATA);
  14318. ProgramParam* *argInst = (ProgramParam**) *((PolyBase**)lua_touserdata(L, 2));
  14319. inst->param = *argInst;
  14320. return 0;
  14321. }
  14322. static int Polycode_LocalShaderParam(lua_State *L) {
  14323. LocalShaderParam *inst = new LocalShaderParam();
  14324. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14325. *userdataPtr = (PolyBase*)inst;
  14326. luaL_getmetatable(L, "Polycode.LocalShaderParam");
  14327. lua_setmetatable(L, -2);
  14328. return 1;
  14329. }
  14330. static int Polycode_LocalShaderParam_Copy(lua_State *L) {
  14331. luaL_checktype(L, 1, LUA_TUSERDATA);
  14332. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14333. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14334. *retInst = inst->Copy();
  14335. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14336. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14337. lua_setmetatable(L, -2);
  14338. *userdataPtr = (PolyBase*)retInst;
  14339. return 1;
  14340. }
  14341. static int Polycode_LocalShaderParam_getNumber(lua_State *L) {
  14342. luaL_checktype(L, 1, LUA_TUSERDATA);
  14343. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14344. lua_pushnumber(L, inst->getNumber());
  14345. return 1;
  14346. }
  14347. static int Polycode_LocalShaderParam_getVector2(lua_State *L) {
  14348. luaL_checktype(L, 1, LUA_TUSERDATA);
  14349. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14350. Vector2 *retInst = new Vector2();
  14351. *retInst = inst->getVector2();
  14352. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14353. luaL_getmetatable(L, "Polycode.Vector2");
  14354. lua_setmetatable(L, -2);
  14355. *userdataPtr = (PolyBase*)retInst;
  14356. return 1;
  14357. }
  14358. static int Polycode_LocalShaderParam_getVector3(lua_State *L) {
  14359. luaL_checktype(L, 1, LUA_TUSERDATA);
  14360. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14361. Vector3 *retInst = new Vector3();
  14362. *retInst = inst->getVector3();
  14363. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14364. luaL_getmetatable(L, "Polycode.Vector3");
  14365. lua_setmetatable(L, -2);
  14366. *userdataPtr = (PolyBase*)retInst;
  14367. return 1;
  14368. }
  14369. static int Polycode_LocalShaderParam_getMatrix4(lua_State *L) {
  14370. luaL_checktype(L, 1, LUA_TUSERDATA);
  14371. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14372. Matrix4 *retInst = new Matrix4();
  14373. *retInst = inst->getMatrix4();
  14374. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14375. luaL_getmetatable(L, "Polycode.Matrix4");
  14376. lua_setmetatable(L, -2);
  14377. *userdataPtr = (PolyBase*)retInst;
  14378. return 1;
  14379. }
  14380. static int Polycode_LocalShaderParam_getColor(lua_State *L) {
  14381. luaL_checktype(L, 1, LUA_TUSERDATA);
  14382. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14383. Color *retInst = new Color();
  14384. *retInst = inst->getColor();
  14385. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14386. luaL_getmetatable(L, "Polycode.Color");
  14387. lua_setmetatable(L, -2);
  14388. *userdataPtr = (PolyBase*)retInst;
  14389. return 1;
  14390. }
  14391. static int Polycode_LocalShaderParam_setNumber(lua_State *L) {
  14392. luaL_checktype(L, 1, LUA_TUSERDATA);
  14393. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14394. luaL_checktype(L, 2, LUA_TNUMBER);
  14395. Number x = lua_tonumber(L, 2);
  14396. inst->setNumber(x);
  14397. return 0;
  14398. }
  14399. static int Polycode_LocalShaderParam_setVector2(lua_State *L) {
  14400. luaL_checktype(L, 1, LUA_TUSERDATA);
  14401. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14402. luaL_checktype(L, 2, LUA_TUSERDATA);
  14403. Vector2 x = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  14404. inst->setVector2(x);
  14405. return 0;
  14406. }
  14407. static int Polycode_LocalShaderParam_setVector3(lua_State *L) {
  14408. luaL_checktype(L, 1, LUA_TUSERDATA);
  14409. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14410. luaL_checktype(L, 2, LUA_TUSERDATA);
  14411. Vector3 x = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  14412. inst->setVector3(x);
  14413. return 0;
  14414. }
  14415. static int Polycode_LocalShaderParam_setMatrix4(lua_State *L) {
  14416. luaL_checktype(L, 1, LUA_TUSERDATA);
  14417. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14418. luaL_checktype(L, 2, LUA_TUSERDATA);
  14419. Matrix4 x = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  14420. inst->setMatrix4(x);
  14421. return 0;
  14422. }
  14423. static int Polycode_LocalShaderParam_setColor(lua_State *L) {
  14424. luaL_checktype(L, 1, LUA_TUSERDATA);
  14425. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14426. luaL_checktype(L, 2, LUA_TUSERDATA);
  14427. Color x = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  14428. inst->setColor(x);
  14429. return 0;
  14430. }
  14431. static int Polycode_LocalShaderParam_setTexture(lua_State *L) {
  14432. luaL_checktype(L, 1, LUA_TUSERDATA);
  14433. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14434. luaL_checktype(L, 2, LUA_TUSERDATA);
  14435. shared_ptr<Texture> texture = *(shared_ptr<Texture>*) *((PolyBase**)lua_touserdata(L, 2));
  14436. inst->setTexture(texture);
  14437. return 0;
  14438. }
  14439. static int Polycode_LocalShaderParam_getTexture(lua_State *L) {
  14440. luaL_checktype(L, 1, LUA_TUSERDATA);
  14441. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14442. shared_ptr<Texture> *retInst = new shared_ptr<Texture>();
  14443. *retInst = inst->getTexture();
  14444. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14445. luaL_getmetatable(L, "Polycode.shared_ptr<Texture>");
  14446. lua_setmetatable(L, -2);
  14447. *userdataPtr = (PolyBase*)retInst;
  14448. return 1;
  14449. }
  14450. static int Polycode_LocalShaderParam_setCubemap(lua_State *L) {
  14451. luaL_checktype(L, 1, LUA_TUSERDATA);
  14452. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14453. luaL_checktype(L, 2, LUA_TUSERDATA);
  14454. shared_ptr<Cubemap> cubemap = *(shared_ptr<Cubemap>*) *((PolyBase**)lua_touserdata(L, 2));
  14455. inst->setCubemap(cubemap);
  14456. return 0;
  14457. }
  14458. static int Polycode_LocalShaderParam_getCubemap(lua_State *L) {
  14459. luaL_checktype(L, 1, LUA_TUSERDATA);
  14460. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14461. shared_ptr<Cubemap> *retInst = new shared_ptr<Cubemap>();
  14462. *retInst = inst->getCubemap();
  14463. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14464. luaL_getmetatable(L, "Polycode.shared_ptr<Cubemap>");
  14465. lua_setmetatable(L, -2);
  14466. *userdataPtr = (PolyBase*)retInst;
  14467. return 1;
  14468. }
  14469. static int Polycode_LocalShaderParam_setParamValueFromString(lua_State *L) {
  14470. luaL_checktype(L, 1, LUA_TUSERDATA);
  14471. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  14472. luaL_checktype(L, 2, LUA_TNUMBER);
  14473. int type = lua_tointeger(L, 2);
  14474. luaL_checktype(L, 3, LUA_TSTRING);
  14475. String pvalue = String(lua_tostring(L, 3));
  14476. inst->setParamValueFromString(type, pvalue);
  14477. return 0;
  14478. }
  14479. static int Polycode_delete_LocalShaderParam(lua_State *L) {
  14480. luaL_checktype(L, 1, LUA_TUSERDATA);
  14481. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14482. delete ((LocalShaderParam*) *inst);
  14483. *inst = NULL;
  14484. return 0;
  14485. }
  14486. static int Polycode_ShaderProgram_get_type(lua_State *L) {
  14487. luaL_checktype(L, 1, LUA_TUSERDATA);
  14488. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  14489. lua_pushinteger(L, inst->type);
  14490. return 1;
  14491. }
  14492. static int Polycode_ShaderProgram_set_type(lua_State *L) {
  14493. luaL_checktype(L, 1, LUA_TUSERDATA);
  14494. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  14495. int param = lua_tointeger(L, 2);
  14496. inst->type = param;
  14497. return 0;
  14498. }
  14499. static int Polycode_ShaderProgram(lua_State *L) {
  14500. luaL_checktype(L, 1, LUA_TSTRING);
  14501. String fileName = String(lua_tostring(L, 1));
  14502. ShaderProgram *inst = new ShaderProgram(fileName);
  14503. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14504. *userdataPtr = (PolyBase*)inst;
  14505. luaL_getmetatable(L, "Polycode.ShaderProgram");
  14506. lua_setmetatable(L, -2);
  14507. return 1;
  14508. }
  14509. static int Polycode_ShaderProgram_reloadProgram(lua_State *L) {
  14510. luaL_checktype(L, 1, LUA_TUSERDATA);
  14511. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  14512. inst->reloadProgram();
  14513. return 0;
  14514. }
  14515. static int Polycode_ShaderProgram_reloadResource(lua_State *L) {
  14516. luaL_checktype(L, 1, LUA_TUSERDATA);
  14517. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  14518. inst->reloadResource();
  14519. return 0;
  14520. }
  14521. static int Polycode_delete_ShaderProgram(lua_State *L) {
  14522. luaL_checktype(L, 1, LUA_TUSERDATA);
  14523. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14524. delete ((ShaderProgram*) *inst);
  14525. *inst = NULL;
  14526. return 0;
  14527. }
  14528. static int Polycode_AttributeBinding_get_name(lua_State *L) {
  14529. luaL_checktype(L, 1, LUA_TUSERDATA);
  14530. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14531. lua_pushstring(L, inst->name.c_str());
  14532. return 1;
  14533. }
  14534. static int Polycode_AttributeBinding_get_vertexData(lua_State *L) {
  14535. luaL_checktype(L, 1, LUA_TUSERDATA);
  14536. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14537. if(!inst->vertexData) {
  14538. lua_pushnil(L);
  14539. } else {
  14540. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14541. *userdataPtr = (PolyBase*)inst->vertexData;
  14542. }
  14543. return 1;
  14544. }
  14545. static int Polycode_AttributeBinding_get_attribute(lua_State *L) {
  14546. luaL_checktype(L, 1, LUA_TUSERDATA);
  14547. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14548. if(!inst->attribute) {
  14549. lua_pushnil(L);
  14550. } else {
  14551. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14552. *userdataPtr = (PolyBase*)inst->attribute;
  14553. }
  14554. return 1;
  14555. }
  14556. static int Polycode_AttributeBinding_get_enabled(lua_State *L) {
  14557. luaL_checktype(L, 1, LUA_TUSERDATA);
  14558. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14559. lua_pushboolean(L, inst->enabled);
  14560. return 1;
  14561. }
  14562. static int Polycode_AttributeBinding_set_name(lua_State *L) {
  14563. luaL_checktype(L, 1, LUA_TUSERDATA);
  14564. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14565. String param = lua_tostring(L, 2);
  14566. inst->name = param;
  14567. return 0;
  14568. }
  14569. static int Polycode_AttributeBinding_set_vertexData(lua_State *L) {
  14570. luaL_checktype(L, 1, LUA_TUSERDATA);
  14571. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14572. luaL_checktype(L, 2, LUA_TUSERDATA);
  14573. VertexDataArray* *argInst = (VertexDataArray**) *((PolyBase**)lua_touserdata(L, 2));
  14574. inst->vertexData = *argInst;
  14575. return 0;
  14576. }
  14577. static int Polycode_AttributeBinding_set_attribute(lua_State *L) {
  14578. luaL_checktype(L, 1, LUA_TUSERDATA);
  14579. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14580. luaL_checktype(L, 2, LUA_TUSERDATA);
  14581. ProgramAttribute* *argInst = (ProgramAttribute**) *((PolyBase**)lua_touserdata(L, 2));
  14582. inst->attribute = *argInst;
  14583. return 0;
  14584. }
  14585. static int Polycode_AttributeBinding_set_enabled(lua_State *L) {
  14586. luaL_checktype(L, 1, LUA_TUSERDATA);
  14587. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14588. bool param = lua_toboolean(L, 2) != 0;
  14589. inst->enabled = param;
  14590. return 0;
  14591. }
  14592. static int Polycode_AttributeBinding(lua_State *L) {
  14593. AttributeBinding *inst = new AttributeBinding();
  14594. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14595. *userdataPtr = (PolyBase*)inst;
  14596. luaL_getmetatable(L, "Polycode.AttributeBinding");
  14597. lua_setmetatable(L, -2);
  14598. return 1;
  14599. }
  14600. static int Polycode_delete_AttributeBinding(lua_State *L) {
  14601. luaL_checktype(L, 1, LUA_TUSERDATA);
  14602. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14603. delete ((AttributeBinding*) *inst);
  14604. *inst = NULL;
  14605. return 0;
  14606. }
  14607. static int Polycode_ShaderBinding_get_accessMutex(lua_State *L) {
  14608. luaL_checktype(L, 1, LUA_TUSERDATA);
  14609. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14610. if(!inst->accessMutex) {
  14611. lua_pushnil(L);
  14612. } else {
  14613. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14614. *userdataPtr = (PolyBase*)inst->accessMutex;
  14615. }
  14616. return 1;
  14617. }
  14618. static int Polycode_ShaderBinding_set_accessMutex(lua_State *L) {
  14619. luaL_checktype(L, 1, LUA_TUSERDATA);
  14620. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14621. luaL_checktype(L, 2, LUA_TUSERDATA);
  14622. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  14623. inst->accessMutex = *argInst;
  14624. return 0;
  14625. }
  14626. static int Polycode_ShaderBinding(lua_State *L) {
  14627. ShaderBinding *inst = new ShaderBinding();
  14628. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14629. *userdataPtr = (PolyBase*)inst;
  14630. luaL_getmetatable(L, "Polycode.ShaderBinding");
  14631. lua_setmetatable(L, -2);
  14632. return 1;
  14633. }
  14634. static int Polycode_ShaderBinding_copyTo(lua_State *L) {
  14635. luaL_checktype(L, 1, LUA_TUSERDATA);
  14636. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14637. luaL_checktype(L, 2, LUA_TUSERDATA);
  14638. ShaderBinding* targetBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 2));
  14639. inst->copyTo(targetBinding);
  14640. return 0;
  14641. }
  14642. static int Polycode_ShaderBinding_addParam(lua_State *L) {
  14643. luaL_checktype(L, 1, LUA_TUSERDATA);
  14644. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14645. luaL_checktype(L, 2, LUA_TNUMBER);
  14646. int type = lua_tointeger(L, 2);
  14647. luaL_checktype(L, 3, LUA_TSTRING);
  14648. String name = String(lua_tostring(L, 3));
  14649. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14650. *retInst = inst->addParam(type, name);
  14651. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14652. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14653. lua_setmetatable(L, -2);
  14654. *userdataPtr = (PolyBase*)retInst;
  14655. return 1;
  14656. }
  14657. static int Polycode_ShaderBinding_addParamPointer(lua_State *L) {
  14658. luaL_checktype(L, 1, LUA_TUSERDATA);
  14659. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14660. luaL_checktype(L, 2, LUA_TNUMBER);
  14661. int type = lua_tointeger(L, 2);
  14662. luaL_checktype(L, 3, LUA_TSTRING);
  14663. String name = String(lua_tostring(L, 3));
  14664. luaL_checktype(L, 4, LUA_TUSERDATA);
  14665. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 4));
  14666. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14667. *retInst = inst->addParamPointer(type, name, ptr);
  14668. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14669. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14670. lua_setmetatable(L, -2);
  14671. *userdataPtr = (PolyBase*)retInst;
  14672. return 1;
  14673. }
  14674. static int Polycode_ShaderBinding_addParamFromData(lua_State *L) {
  14675. luaL_checktype(L, 1, LUA_TUSERDATA);
  14676. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14677. luaL_checktype(L, 2, LUA_TSTRING);
  14678. String name = String(lua_tostring(L, 2));
  14679. luaL_checktype(L, 3, LUA_TSTRING);
  14680. String data = String(lua_tostring(L, 3));
  14681. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14682. *retInst = inst->addParamFromData(name, data);
  14683. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14684. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14685. lua_setmetatable(L, -2);
  14686. *userdataPtr = (PolyBase*)retInst;
  14687. return 1;
  14688. }
  14689. static int Polycode_ShaderBinding_getNumLocalParams(lua_State *L) {
  14690. luaL_checktype(L, 1, LUA_TUSERDATA);
  14691. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14692. lua_pushinteger(L, inst->getNumLocalParams());
  14693. return 1;
  14694. }
  14695. static int Polycode_ShaderBinding_getLocalParam(lua_State *L) {
  14696. luaL_checktype(L, 1, LUA_TUSERDATA);
  14697. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14698. luaL_checktype(L, 2, LUA_TNUMBER);
  14699. int index = lua_tointeger(L, 2);
  14700. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14701. *retInst = inst->getLocalParam(index);
  14702. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14703. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14704. lua_setmetatable(L, -2);
  14705. *userdataPtr = (PolyBase*)retInst;
  14706. return 1;
  14707. }
  14708. static int Polycode_ShaderBinding_getLocalParamByName(lua_State *L) {
  14709. luaL_checktype(L, 1, LUA_TUSERDATA);
  14710. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14711. luaL_checktype(L, 2, LUA_TSTRING);
  14712. String name = String(lua_tostring(L, 2));
  14713. shared_ptr<LocalShaderParam> *retInst = new shared_ptr<LocalShaderParam>();
  14714. *retInst = inst->getLocalParamByName(name);
  14715. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14716. luaL_getmetatable(L, "Polycode.shared_ptr<LocalShaderParam>");
  14717. lua_setmetatable(L, -2);
  14718. *userdataPtr = (PolyBase*)retInst;
  14719. return 1;
  14720. }
  14721. static int Polycode_ShaderBinding_removeParam(lua_State *L) {
  14722. luaL_checktype(L, 1, LUA_TUSERDATA);
  14723. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14724. luaL_checktype(L, 2, LUA_TSTRING);
  14725. String name = String(lua_tostring(L, 2));
  14726. inst->removeParam(name);
  14727. return 0;
  14728. }
  14729. static int Polycode_ShaderBinding_loadTextureForParam(lua_State *L) {
  14730. luaL_checktype(L, 1, LUA_TUSERDATA);
  14731. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14732. luaL_checktype(L, 2, LUA_TSTRING);
  14733. String paramName = String(lua_tostring(L, 2));
  14734. luaL_checktype(L, 3, LUA_TSTRING);
  14735. String fileName = String(lua_tostring(L, 3));
  14736. shared_ptr<Texture> *retInst = new shared_ptr<Texture>();
  14737. *retInst = inst->loadTextureForParam(paramName, fileName);
  14738. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14739. luaL_getmetatable(L, "Polycode.shared_ptr<Texture>");
  14740. lua_setmetatable(L, -2);
  14741. *userdataPtr = (PolyBase*)retInst;
  14742. return 1;
  14743. }
  14744. static int Polycode_ShaderBinding_setTextureForParam(lua_State *L) {
  14745. luaL_checktype(L, 1, LUA_TUSERDATA);
  14746. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14747. luaL_checktype(L, 2, LUA_TSTRING);
  14748. String paramName = String(lua_tostring(L, 2));
  14749. luaL_checktype(L, 3, LUA_TUSERDATA);
  14750. shared_ptr<Texture> texture = *(shared_ptr<Texture>*) *((PolyBase**)lua_touserdata(L, 3));
  14751. inst->setTextureForParam(paramName, texture);
  14752. return 0;
  14753. }
  14754. static int Polycode_ShaderBinding_setCubemapForParam(lua_State *L) {
  14755. luaL_checktype(L, 1, LUA_TUSERDATA);
  14756. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14757. luaL_checktype(L, 2, LUA_TSTRING);
  14758. String paramName = String(lua_tostring(L, 2));
  14759. luaL_checktype(L, 3, LUA_TUSERDATA);
  14760. shared_ptr<Cubemap> cubemap = *(shared_ptr<Cubemap>*) *((PolyBase**)lua_touserdata(L, 3));
  14761. inst->setCubemapForParam(paramName, cubemap);
  14762. return 0;
  14763. }
  14764. static int Polycode_ShaderBinding_getNumAttributeBindings(lua_State *L) {
  14765. luaL_checktype(L, 1, LUA_TUSERDATA);
  14766. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14767. lua_pushinteger(L, inst->getNumAttributeBindings());
  14768. return 1;
  14769. }
  14770. static int Polycode_ShaderBinding_getAttributeBinding(lua_State *L) {
  14771. luaL_checktype(L, 1, LUA_TUSERDATA);
  14772. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14773. luaL_checktype(L, 2, LUA_TNUMBER);
  14774. int index = lua_tointeger(L, 2);
  14775. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBinding(index);
  14776. if(ptrRetVal == NULL) {
  14777. lua_pushnil(L);
  14778. } else {
  14779. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14780. *userdataPtr = ptrRetVal;
  14781. }
  14782. return 1;
  14783. }
  14784. static int Polycode_ShaderBinding_addAttributeBinding(lua_State *L) {
  14785. luaL_checktype(L, 1, LUA_TUSERDATA);
  14786. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14787. luaL_checktype(L, 2, LUA_TSTRING);
  14788. String name = String(lua_tostring(L, 2));
  14789. luaL_checktype(L, 3, LUA_TUSERDATA);
  14790. VertexDataArray* dataArray = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 3));
  14791. PolyBase *ptrRetVal = (PolyBase*)inst->addAttributeBinding(name, dataArray);
  14792. if(ptrRetVal == NULL) {
  14793. lua_pushnil(L);
  14794. } else {
  14795. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14796. *userdataPtr = ptrRetVal;
  14797. }
  14798. return 1;
  14799. }
  14800. static int Polycode_ShaderBinding_getAttributeBindingByName(lua_State *L) {
  14801. luaL_checktype(L, 1, LUA_TUSERDATA);
  14802. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14803. luaL_checktype(L, 2, LUA_TSTRING);
  14804. String name = String(lua_tostring(L, 2));
  14805. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBindingByName(name);
  14806. if(ptrRetVal == NULL) {
  14807. lua_pushnil(L);
  14808. } else {
  14809. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14810. *userdataPtr = ptrRetVal;
  14811. }
  14812. return 1;
  14813. }
  14814. static int Polycode_ShaderBinding_addRenderTargetBinding(lua_State *L) {
  14815. luaL_checktype(L, 1, LUA_TUSERDATA);
  14816. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14817. luaL_checktype(L, 2, LUA_TUSERDATA);
  14818. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  14819. inst->addRenderTargetBinding(binding);
  14820. return 0;
  14821. }
  14822. static int Polycode_ShaderBinding_removeRenderTargetBinding(lua_State *L) {
  14823. luaL_checktype(L, 1, LUA_TUSERDATA);
  14824. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14825. luaL_checktype(L, 2, LUA_TUSERDATA);
  14826. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  14827. inst->removeRenderTargetBinding(binding);
  14828. return 0;
  14829. }
  14830. static int Polycode_ShaderBinding_getNumRenderTargetBindings(lua_State *L) {
  14831. luaL_checktype(L, 1, LUA_TUSERDATA);
  14832. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14833. lua_pushinteger(L, inst->getNumRenderTargetBindings());
  14834. return 1;
  14835. }
  14836. static int Polycode_ShaderBinding_getRenderTargetBinding(lua_State *L) {
  14837. luaL_checktype(L, 1, LUA_TUSERDATA);
  14838. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14839. luaL_checktype(L, 2, LUA_TNUMBER);
  14840. int index = lua_tointeger(L, 2);
  14841. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderTargetBinding(index);
  14842. if(ptrRetVal == NULL) {
  14843. lua_pushnil(L);
  14844. } else {
  14845. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14846. *userdataPtr = ptrRetVal;
  14847. }
  14848. return 1;
  14849. }
  14850. static int Polycode_ShaderBinding_getNumInTargetBindings(lua_State *L) {
  14851. luaL_checktype(L, 1, LUA_TUSERDATA);
  14852. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14853. lua_pushinteger(L, inst->getNumInTargetBindings());
  14854. return 1;
  14855. }
  14856. static int Polycode_ShaderBinding_getInTargetBinding(lua_State *L) {
  14857. luaL_checktype(L, 1, LUA_TUSERDATA);
  14858. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14859. luaL_checktype(L, 2, LUA_TNUMBER);
  14860. int index = lua_tointeger(L, 2);
  14861. PolyBase *ptrRetVal = (PolyBase*)inst->getInTargetBinding(index);
  14862. if(ptrRetVal == NULL) {
  14863. lua_pushnil(L);
  14864. } else {
  14865. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14866. *userdataPtr = ptrRetVal;
  14867. }
  14868. return 1;
  14869. }
  14870. static int Polycode_ShaderBinding_getNumColorTargetBindings(lua_State *L) {
  14871. luaL_checktype(L, 1, LUA_TUSERDATA);
  14872. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14873. lua_pushinteger(L, inst->getNumColorTargetBindings());
  14874. return 1;
  14875. }
  14876. static int Polycode_ShaderBinding_getColorTargetBinding(lua_State *L) {
  14877. luaL_checktype(L, 1, LUA_TUSERDATA);
  14878. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14879. luaL_checktype(L, 2, LUA_TNUMBER);
  14880. int index = lua_tointeger(L, 2);
  14881. PolyBase *ptrRetVal = (PolyBase*)inst->getColorTargetBinding(index);
  14882. if(ptrRetVal == NULL) {
  14883. lua_pushnil(L);
  14884. } else {
  14885. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14886. *userdataPtr = ptrRetVal;
  14887. }
  14888. return 1;
  14889. }
  14890. static int Polycode_ShaderBinding_getNumDepthTargetBindings(lua_State *L) {
  14891. luaL_checktype(L, 1, LUA_TUSERDATA);
  14892. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14893. lua_pushinteger(L, inst->getNumDepthTargetBindings());
  14894. return 1;
  14895. }
  14896. static int Polycode_ShaderBinding_getDepthTargetBinding(lua_State *L) {
  14897. luaL_checktype(L, 1, LUA_TUSERDATA);
  14898. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14899. luaL_checktype(L, 2, LUA_TNUMBER);
  14900. int index = lua_tointeger(L, 2);
  14901. PolyBase *ptrRetVal = (PolyBase*)inst->getDepthTargetBinding(index);
  14902. if(ptrRetVal == NULL) {
  14903. lua_pushnil(L);
  14904. } else {
  14905. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14906. *userdataPtr = ptrRetVal;
  14907. }
  14908. return 1;
  14909. }
  14910. static int Polycode_ShaderBinding_getNumOutTargetBindings(lua_State *L) {
  14911. luaL_checktype(L, 1, LUA_TUSERDATA);
  14912. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14913. lua_pushinteger(L, inst->getNumOutTargetBindings());
  14914. return 1;
  14915. }
  14916. static int Polycode_ShaderBinding_getOutTargetBinding(lua_State *L) {
  14917. luaL_checktype(L, 1, LUA_TUSERDATA);
  14918. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  14919. luaL_checktype(L, 2, LUA_TNUMBER);
  14920. int index = lua_tointeger(L, 2);
  14921. PolyBase *ptrRetVal = (PolyBase*)inst->getOutTargetBinding(index);
  14922. if(ptrRetVal == NULL) {
  14923. lua_pushnil(L);
  14924. } else {
  14925. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14926. *userdataPtr = ptrRetVal;
  14927. }
  14928. return 1;
  14929. }
  14930. static int Polycode_delete_ShaderBinding(lua_State *L) {
  14931. luaL_checktype(L, 1, LUA_TUSERDATA);
  14932. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14933. delete ((ShaderBinding*) *inst);
  14934. *inst = NULL;
  14935. return 0;
  14936. }
  14937. static int Polycode_SkeletonAnimation(lua_State *L) {
  14938. luaL_checktype(L, 1, LUA_TSTRING);
  14939. String name = String(lua_tostring(L, 1));
  14940. luaL_checktype(L, 2, LUA_TNUMBER);
  14941. Number duration = lua_tonumber(L, 2);
  14942. SkeletonAnimation *inst = new SkeletonAnimation(name, duration);
  14943. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14944. *userdataPtr = (PolyBase*)inst;
  14945. luaL_getmetatable(L, "Polycode.SkeletonAnimation");
  14946. lua_setmetatable(L, -2);
  14947. return 1;
  14948. }
  14949. static int Polycode_SkeletonAnimation_addBoneTrack(lua_State *L) {
  14950. luaL_checktype(L, 1, LUA_TUSERDATA);
  14951. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14952. luaL_checktype(L, 2, LUA_TUSERDATA);
  14953. BoneTrack* boneTrack = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 2));
  14954. inst->addBoneTrack(boneTrack);
  14955. return 0;
  14956. }
  14957. static int Polycode_SkeletonAnimation_getName(lua_State *L) {
  14958. luaL_checktype(L, 1, LUA_TUSERDATA);
  14959. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14960. lua_pushstring(L, inst->getName().c_str());
  14961. return 1;
  14962. }
  14963. static int Polycode_SkeletonAnimation_Play(lua_State *L) {
  14964. luaL_checktype(L, 1, LUA_TUSERDATA);
  14965. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14966. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14967. bool once = lua_toboolean(L, 2) != 0;
  14968. inst->Play(once);
  14969. return 0;
  14970. }
  14971. static int Polycode_SkeletonAnimation_Stop(lua_State *L) {
  14972. luaL_checktype(L, 1, LUA_TUSERDATA);
  14973. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14974. inst->Stop();
  14975. return 0;
  14976. }
  14977. static int Polycode_SkeletonAnimation_Reset(lua_State *L) {
  14978. luaL_checktype(L, 1, LUA_TUSERDATA);
  14979. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14980. inst->Reset();
  14981. return 0;
  14982. }
  14983. static int Polycode_SkeletonAnimation_Update(lua_State *L) {
  14984. luaL_checktype(L, 1, LUA_TUSERDATA);
  14985. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14986. inst->Update();
  14987. return 0;
  14988. }
  14989. static int Polycode_SkeletonAnimation_setSpeed(lua_State *L) {
  14990. luaL_checktype(L, 1, LUA_TUSERDATA);
  14991. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  14992. luaL_checktype(L, 2, LUA_TNUMBER);
  14993. Number speed = lua_tonumber(L, 2);
  14994. inst->setSpeed(speed);
  14995. return 0;
  14996. }
  14997. static int Polycode_SkeletonAnimation_setWeight(lua_State *L) {
  14998. luaL_checktype(L, 1, LUA_TUSERDATA);
  14999. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  15000. luaL_checktype(L, 2, LUA_TNUMBER);
  15001. Number newWeight = lua_tonumber(L, 2);
  15002. inst->setWeight(newWeight);
  15003. return 0;
  15004. }
  15005. static int Polycode_SkeletonAnimation_getWeight(lua_State *L) {
  15006. luaL_checktype(L, 1, LUA_TUSERDATA);
  15007. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  15008. lua_pushnumber(L, inst->getWeight());
  15009. return 1;
  15010. }
  15011. static int Polycode_SkeletonAnimation_isPlaying(lua_State *L) {
  15012. luaL_checktype(L, 1, LUA_TUSERDATA);
  15013. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  15014. lua_pushboolean(L, inst->isPlaying());
  15015. return 1;
  15016. }
  15017. static int Polycode_delete_SkeletonAnimation(lua_State *L) {
  15018. luaL_checktype(L, 1, LUA_TUSERDATA);
  15019. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15020. delete ((SkeletonAnimation*) *inst);
  15021. *inst = NULL;
  15022. return 0;
  15023. }
  15024. static int Polycode_Skeleton(lua_State *L) {
  15025. luaL_checktype(L, 1, LUA_TSTRING);
  15026. String fileName = String(lua_tostring(L, 1));
  15027. Skeleton *inst = new Skeleton(fileName);
  15028. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15029. *userdataPtr = (PolyBase*)inst;
  15030. luaL_getmetatable(L, "Polycode.Skeleton");
  15031. lua_setmetatable(L, -2);
  15032. return 1;
  15033. }
  15034. static int Polycode_Skeleton_BlankSkeleton(lua_State *L) {
  15035. PolyBase *ptrRetVal = (PolyBase*)Skeleton::BlankSkeleton();
  15036. if(ptrRetVal == NULL) {
  15037. lua_pushnil(L);
  15038. } else {
  15039. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15040. *userdataPtr = ptrRetVal;
  15041. }
  15042. return 1;
  15043. }
  15044. static int Polycode_Skeleton_loadSkeleton(lua_State *L) {
  15045. luaL_checktype(L, 1, LUA_TUSERDATA);
  15046. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15047. luaL_checktype(L, 2, LUA_TSTRING);
  15048. String fileName = String(lua_tostring(L, 2));
  15049. inst->loadSkeleton(fileName);
  15050. return 0;
  15051. }
  15052. static int Polycode_Skeleton_playAnimationByName(lua_State *L) {
  15053. luaL_checktype(L, 1, LUA_TUSERDATA);
  15054. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15055. luaL_checktype(L, 2, LUA_TSTRING);
  15056. String animName = String(lua_tostring(L, 2));
  15057. Number weight;
  15058. if(lua_isnumber(L, 3)) {
  15059. weight = lua_tonumber(L, 3);
  15060. } else {
  15061. weight = 1.0;
  15062. }
  15063. bool once;
  15064. if(lua_isboolean(L, 4)) {
  15065. once = lua_toboolean(L, 4) != 0;
  15066. } else {
  15067. once = false;
  15068. }
  15069. bool restartIfPlaying;
  15070. if(lua_isboolean(L, 5)) {
  15071. restartIfPlaying = lua_toboolean(L, 5) != 0;
  15072. } else {
  15073. restartIfPlaying = false;
  15074. }
  15075. inst->playAnimationByName(animName, weight, once, restartIfPlaying);
  15076. return 0;
  15077. }
  15078. static int Polycode_Skeleton_playAnimation(lua_State *L) {
  15079. luaL_checktype(L, 1, LUA_TUSERDATA);
  15080. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15081. luaL_checktype(L, 2, LUA_TUSERDATA);
  15082. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  15083. Number weight;
  15084. if(lua_isnumber(L, 3)) {
  15085. weight = lua_tonumber(L, 3);
  15086. } else {
  15087. weight = 1.0;
  15088. }
  15089. bool once;
  15090. if(lua_isboolean(L, 4)) {
  15091. once = lua_toboolean(L, 4) != 0;
  15092. } else {
  15093. once = false;
  15094. }
  15095. bool restartIfPlaying;
  15096. if(lua_isboolean(L, 5)) {
  15097. restartIfPlaying = lua_toboolean(L, 5) != 0;
  15098. } else {
  15099. restartIfPlaying = false;
  15100. }
  15101. inst->playAnimation(animation, weight, once, restartIfPlaying);
  15102. return 0;
  15103. }
  15104. static int Polycode_Skeleton_setBaseAnimationByName(lua_State *L) {
  15105. luaL_checktype(L, 1, LUA_TUSERDATA);
  15106. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15107. luaL_checktype(L, 2, LUA_TSTRING);
  15108. String animName = String(lua_tostring(L, 2));
  15109. inst->setBaseAnimationByName(animName);
  15110. return 0;
  15111. }
  15112. static int Polycode_Skeleton_setBaseAnimation(lua_State *L) {
  15113. luaL_checktype(L, 1, LUA_TUSERDATA);
  15114. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15115. luaL_checktype(L, 2, LUA_TUSERDATA);
  15116. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  15117. inst->setBaseAnimation(animation);
  15118. return 0;
  15119. }
  15120. static int Polycode_Skeleton_stopAllAnimations(lua_State *L) {
  15121. luaL_checktype(L, 1, LUA_TUSERDATA);
  15122. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15123. inst->stopAllAnimations();
  15124. return 0;
  15125. }
  15126. static int Polycode_Skeleton_getBaseAnimation(lua_State *L) {
  15127. luaL_checktype(L, 1, LUA_TUSERDATA);
  15128. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15129. PolyBase *ptrRetVal = (PolyBase*)inst->getBaseAnimation();
  15130. if(ptrRetVal == NULL) {
  15131. lua_pushnil(L);
  15132. } else {
  15133. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15134. *userdataPtr = ptrRetVal;
  15135. }
  15136. return 1;
  15137. }
  15138. static int Polycode_Skeleton_addAnimation(lua_State *L) {
  15139. luaL_checktype(L, 1, LUA_TUSERDATA);
  15140. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15141. luaL_checktype(L, 2, LUA_TSTRING);
  15142. String name = String(lua_tostring(L, 2));
  15143. luaL_checktype(L, 3, LUA_TSTRING);
  15144. String fileName = String(lua_tostring(L, 3));
  15145. inst->addAnimation(name, fileName);
  15146. return 0;
  15147. }
  15148. static int Polycode_Skeleton_getAnimation(lua_State *L) {
  15149. luaL_checktype(L, 1, LUA_TUSERDATA);
  15150. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15151. luaL_checktype(L, 2, LUA_TSTRING);
  15152. String name = String(lua_tostring(L, 2));
  15153. PolyBase *ptrRetVal = (PolyBase*)inst->getAnimation(name);
  15154. if(ptrRetVal == NULL) {
  15155. lua_pushnil(L);
  15156. } else {
  15157. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15158. *userdataPtr = ptrRetVal;
  15159. }
  15160. return 1;
  15161. }
  15162. static int Polycode_Skeleton_stopAnimationByName(lua_State *L) {
  15163. luaL_checktype(L, 1, LUA_TUSERDATA);
  15164. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15165. luaL_checktype(L, 2, LUA_TSTRING);
  15166. String name = String(lua_tostring(L, 2));
  15167. inst->stopAnimationByName(name);
  15168. return 0;
  15169. }
  15170. static int Polycode_Skeleton_stopAnimation(lua_State *L) {
  15171. luaL_checktype(L, 1, LUA_TUSERDATA);
  15172. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15173. luaL_checktype(L, 2, LUA_TUSERDATA);
  15174. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  15175. inst->stopAnimation(animation);
  15176. return 0;
  15177. }
  15178. static int Polycode_Skeleton_Update(lua_State *L) {
  15179. luaL_checktype(L, 1, LUA_TUSERDATA);
  15180. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15181. inst->Update();
  15182. return 0;
  15183. }
  15184. static int Polycode_Skeleton_getBoneByName(lua_State *L) {
  15185. luaL_checktype(L, 1, LUA_TUSERDATA);
  15186. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15187. luaL_checktype(L, 2, LUA_TSTRING);
  15188. String name = String(lua_tostring(L, 2));
  15189. PolyBase *ptrRetVal = (PolyBase*)inst->getBoneByName(name);
  15190. if(ptrRetVal == NULL) {
  15191. lua_pushnil(L);
  15192. } else {
  15193. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15194. *userdataPtr = ptrRetVal;
  15195. }
  15196. return 1;
  15197. }
  15198. static int Polycode_Skeleton_bonesVisible(lua_State *L) {
  15199. luaL_checktype(L, 1, LUA_TUSERDATA);
  15200. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15201. luaL_checktype(L, 2, LUA_TBOOLEAN);
  15202. bool val = lua_toboolean(L, 2) != 0;
  15203. inst->bonesVisible(val);
  15204. return 0;
  15205. }
  15206. static int Polycode_Skeleton_getNumBones(lua_State *L) {
  15207. luaL_checktype(L, 1, LUA_TUSERDATA);
  15208. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15209. lua_pushinteger(L, inst->getNumBones());
  15210. return 1;
  15211. }
  15212. static int Polycode_Skeleton_getBone(lua_State *L) {
  15213. luaL_checktype(L, 1, LUA_TUSERDATA);
  15214. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15215. luaL_checktype(L, 2, LUA_TNUMBER);
  15216. int index = lua_tointeger(L, 2);
  15217. PolyBase *ptrRetVal = (PolyBase*)inst->getBone(index);
  15218. if(ptrRetVal == NULL) {
  15219. lua_pushnil(L);
  15220. } else {
  15221. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15222. *userdataPtr = ptrRetVal;
  15223. }
  15224. return 1;
  15225. }
  15226. static int Polycode_Skeleton_addBone(lua_State *L) {
  15227. luaL_checktype(L, 1, LUA_TUSERDATA);
  15228. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15229. luaL_checktype(L, 2, LUA_TUSERDATA);
  15230. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  15231. inst->addBone(bone);
  15232. return 0;
  15233. }
  15234. static int Polycode_Skeleton_removeBone(lua_State *L) {
  15235. luaL_checktype(L, 1, LUA_TUSERDATA);
  15236. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15237. luaL_checktype(L, 2, LUA_TUSERDATA);
  15238. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  15239. inst->removeBone(bone);
  15240. return 0;
  15241. }
  15242. static int Polycode_Skeleton_getBoneIndexByBone(lua_State *L) {
  15243. luaL_checktype(L, 1, LUA_TUSERDATA);
  15244. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  15245. luaL_checktype(L, 2, LUA_TUSERDATA);
  15246. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  15247. lua_pushinteger(L, inst->getBoneIndexByBone(bone));
  15248. return 1;
  15249. }
  15250. static int Polycode_delete_Skeleton(lua_State *L) {
  15251. luaL_checktype(L, 1, LUA_TUSERDATA);
  15252. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15253. delete ((Skeleton*) *inst);
  15254. *inst = NULL;
  15255. return 0;
  15256. }
  15257. static int Polycode_BoneTrack_get_scaleX(lua_State *L) {
  15258. luaL_checktype(L, 1, LUA_TUSERDATA);
  15259. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15260. if(!inst->scaleX) {
  15261. lua_pushnil(L);
  15262. } else {
  15263. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15264. *userdataPtr = (PolyBase*)inst->scaleX;
  15265. }
  15266. return 1;
  15267. }
  15268. static int Polycode_BoneTrack_get_scaleY(lua_State *L) {
  15269. luaL_checktype(L, 1, LUA_TUSERDATA);
  15270. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15271. if(!inst->scaleY) {
  15272. lua_pushnil(L);
  15273. } else {
  15274. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15275. *userdataPtr = (PolyBase*)inst->scaleY;
  15276. }
  15277. return 1;
  15278. }
  15279. static int Polycode_BoneTrack_get_scaleZ(lua_State *L) {
  15280. luaL_checktype(L, 1, LUA_TUSERDATA);
  15281. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15282. if(!inst->scaleZ) {
  15283. lua_pushnil(L);
  15284. } else {
  15285. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15286. *userdataPtr = (PolyBase*)inst->scaleZ;
  15287. }
  15288. return 1;
  15289. }
  15290. static int Polycode_BoneTrack_get_QuatW(lua_State *L) {
  15291. luaL_checktype(L, 1, LUA_TUSERDATA);
  15292. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15293. if(!inst->QuatW) {
  15294. lua_pushnil(L);
  15295. } else {
  15296. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15297. *userdataPtr = (PolyBase*)inst->QuatW;
  15298. }
  15299. return 1;
  15300. }
  15301. static int Polycode_BoneTrack_get_QuatX(lua_State *L) {
  15302. luaL_checktype(L, 1, LUA_TUSERDATA);
  15303. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15304. if(!inst->QuatX) {
  15305. lua_pushnil(L);
  15306. } else {
  15307. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15308. *userdataPtr = (PolyBase*)inst->QuatX;
  15309. }
  15310. return 1;
  15311. }
  15312. static int Polycode_BoneTrack_get_QuatY(lua_State *L) {
  15313. luaL_checktype(L, 1, LUA_TUSERDATA);
  15314. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15315. if(!inst->QuatY) {
  15316. lua_pushnil(L);
  15317. } else {
  15318. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15319. *userdataPtr = (PolyBase*)inst->QuatY;
  15320. }
  15321. return 1;
  15322. }
  15323. static int Polycode_BoneTrack_get_QuatZ(lua_State *L) {
  15324. luaL_checktype(L, 1, LUA_TUSERDATA);
  15325. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15326. if(!inst->QuatZ) {
  15327. lua_pushnil(L);
  15328. } else {
  15329. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15330. *userdataPtr = (PolyBase*)inst->QuatZ;
  15331. }
  15332. return 1;
  15333. }
  15334. static int Polycode_BoneTrack_get_LocX(lua_State *L) {
  15335. luaL_checktype(L, 1, LUA_TUSERDATA);
  15336. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15337. if(!inst->LocX) {
  15338. lua_pushnil(L);
  15339. } else {
  15340. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15341. *userdataPtr = (PolyBase*)inst->LocX;
  15342. }
  15343. return 1;
  15344. }
  15345. static int Polycode_BoneTrack_get_LocY(lua_State *L) {
  15346. luaL_checktype(L, 1, LUA_TUSERDATA);
  15347. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15348. if(!inst->LocY) {
  15349. lua_pushnil(L);
  15350. } else {
  15351. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15352. *userdataPtr = (PolyBase*)inst->LocY;
  15353. }
  15354. return 1;
  15355. }
  15356. static int Polycode_BoneTrack_get_LocZ(lua_State *L) {
  15357. luaL_checktype(L, 1, LUA_TUSERDATA);
  15358. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15359. if(!inst->LocZ) {
  15360. lua_pushnil(L);
  15361. } else {
  15362. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15363. *userdataPtr = (PolyBase*)inst->LocZ;
  15364. }
  15365. return 1;
  15366. }
  15367. static int Polycode_BoneTrack_get_position(lua_State *L) {
  15368. luaL_checktype(L, 1, LUA_TUSERDATA);
  15369. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15370. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15371. *userdataPtr = (PolyBase*)&inst->position;
  15372. return 1;
  15373. }
  15374. static int Polycode_BoneTrack_get_scale(lua_State *L) {
  15375. luaL_checktype(L, 1, LUA_TUSERDATA);
  15376. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15377. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15378. *userdataPtr = (PolyBase*)&inst->scale;
  15379. return 1;
  15380. }
  15381. static int Polycode_BoneTrack_get_boneQuat(lua_State *L) {
  15382. luaL_checktype(L, 1, LUA_TUSERDATA);
  15383. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15384. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15385. *userdataPtr = (PolyBase*)&inst->boneQuat;
  15386. return 1;
  15387. }
  15388. static int Polycode_BoneTrack_get_quatCurve(lua_State *L) {
  15389. luaL_checktype(L, 1, LUA_TUSERDATA);
  15390. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15391. if(!inst->quatCurve) {
  15392. lua_pushnil(L);
  15393. } else {
  15394. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15395. *userdataPtr = (PolyBase*)inst->quatCurve;
  15396. }
  15397. return 1;
  15398. }
  15399. static int Polycode_BoneTrack_get_weight(lua_State *L) {
  15400. luaL_checktype(L, 1, LUA_TUSERDATA);
  15401. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15402. lua_pushnumber(L, inst->weight);
  15403. return 1;
  15404. }
  15405. static int Polycode_BoneTrack_set_scaleX(lua_State *L) {
  15406. luaL_checktype(L, 1, LUA_TUSERDATA);
  15407. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15408. luaL_checktype(L, 2, LUA_TUSERDATA);
  15409. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15410. inst->scaleX = *argInst;
  15411. return 0;
  15412. }
  15413. static int Polycode_BoneTrack_set_scaleY(lua_State *L) {
  15414. luaL_checktype(L, 1, LUA_TUSERDATA);
  15415. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15416. luaL_checktype(L, 2, LUA_TUSERDATA);
  15417. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15418. inst->scaleY = *argInst;
  15419. return 0;
  15420. }
  15421. static int Polycode_BoneTrack_set_scaleZ(lua_State *L) {
  15422. luaL_checktype(L, 1, LUA_TUSERDATA);
  15423. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15424. luaL_checktype(L, 2, LUA_TUSERDATA);
  15425. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15426. inst->scaleZ = *argInst;
  15427. return 0;
  15428. }
  15429. static int Polycode_BoneTrack_set_QuatW(lua_State *L) {
  15430. luaL_checktype(L, 1, LUA_TUSERDATA);
  15431. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15432. luaL_checktype(L, 2, LUA_TUSERDATA);
  15433. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15434. inst->QuatW = *argInst;
  15435. return 0;
  15436. }
  15437. static int Polycode_BoneTrack_set_QuatX(lua_State *L) {
  15438. luaL_checktype(L, 1, LUA_TUSERDATA);
  15439. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15440. luaL_checktype(L, 2, LUA_TUSERDATA);
  15441. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15442. inst->QuatX = *argInst;
  15443. return 0;
  15444. }
  15445. static int Polycode_BoneTrack_set_QuatY(lua_State *L) {
  15446. luaL_checktype(L, 1, LUA_TUSERDATA);
  15447. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15448. luaL_checktype(L, 2, LUA_TUSERDATA);
  15449. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15450. inst->QuatY = *argInst;
  15451. return 0;
  15452. }
  15453. static int Polycode_BoneTrack_set_QuatZ(lua_State *L) {
  15454. luaL_checktype(L, 1, LUA_TUSERDATA);
  15455. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15456. luaL_checktype(L, 2, LUA_TUSERDATA);
  15457. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15458. inst->QuatZ = *argInst;
  15459. return 0;
  15460. }
  15461. static int Polycode_BoneTrack_set_LocX(lua_State *L) {
  15462. luaL_checktype(L, 1, LUA_TUSERDATA);
  15463. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15464. luaL_checktype(L, 2, LUA_TUSERDATA);
  15465. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15466. inst->LocX = *argInst;
  15467. return 0;
  15468. }
  15469. static int Polycode_BoneTrack_set_LocY(lua_State *L) {
  15470. luaL_checktype(L, 1, LUA_TUSERDATA);
  15471. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15472. luaL_checktype(L, 2, LUA_TUSERDATA);
  15473. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15474. inst->LocY = *argInst;
  15475. return 0;
  15476. }
  15477. static int Polycode_BoneTrack_set_LocZ(lua_State *L) {
  15478. luaL_checktype(L, 1, LUA_TUSERDATA);
  15479. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15480. luaL_checktype(L, 2, LUA_TUSERDATA);
  15481. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15482. inst->LocZ = *argInst;
  15483. return 0;
  15484. }
  15485. static int Polycode_BoneTrack_set_position(lua_State *L) {
  15486. luaL_checktype(L, 1, LUA_TUSERDATA);
  15487. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15488. luaL_checktype(L, 2, LUA_TUSERDATA);
  15489. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15490. inst->position = *argInst;
  15491. return 0;
  15492. }
  15493. static int Polycode_BoneTrack_set_scale(lua_State *L) {
  15494. luaL_checktype(L, 1, LUA_TUSERDATA);
  15495. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15496. luaL_checktype(L, 2, LUA_TUSERDATA);
  15497. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15498. inst->scale = *argInst;
  15499. return 0;
  15500. }
  15501. static int Polycode_BoneTrack_set_boneQuat(lua_State *L) {
  15502. luaL_checktype(L, 1, LUA_TUSERDATA);
  15503. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15504. luaL_checktype(L, 2, LUA_TUSERDATA);
  15505. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  15506. inst->boneQuat = *argInst;
  15507. return 0;
  15508. }
  15509. static int Polycode_BoneTrack_set_quatCurve(lua_State *L) {
  15510. luaL_checktype(L, 1, LUA_TUSERDATA);
  15511. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15512. luaL_checktype(L, 2, LUA_TUSERDATA);
  15513. QuaternionCurve* *argInst = (QuaternionCurve**) *((PolyBase**)lua_touserdata(L, 2));
  15514. inst->quatCurve = *argInst;
  15515. return 0;
  15516. }
  15517. static int Polycode_BoneTrack_set_weight(lua_State *L) {
  15518. luaL_checktype(L, 1, LUA_TUSERDATA);
  15519. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15520. Number param = lua_tonumber(L, 2);
  15521. inst->weight = param;
  15522. return 0;
  15523. }
  15524. static int Polycode_BoneTrack(lua_State *L) {
  15525. luaL_checktype(L, 1, LUA_TUSERDATA);
  15526. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  15527. luaL_checktype(L, 2, LUA_TNUMBER);
  15528. Number length = lua_tonumber(L, 2);
  15529. BoneTrack *inst = new BoneTrack(bone, length);
  15530. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15531. *userdataPtr = (PolyBase*)inst;
  15532. luaL_getmetatable(L, "Polycode.BoneTrack");
  15533. lua_setmetatable(L, -2);
  15534. return 1;
  15535. }
  15536. static int Polycode_BoneTrack_Play(lua_State *L) {
  15537. luaL_checktype(L, 1, LUA_TUSERDATA);
  15538. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15539. bool once;
  15540. if(lua_isboolean(L, 2)) {
  15541. once = lua_toboolean(L, 2) != 0;
  15542. } else {
  15543. once = false;
  15544. }
  15545. inst->Play(once);
  15546. return 0;
  15547. }
  15548. static int Polycode_BoneTrack_Stop(lua_State *L) {
  15549. luaL_checktype(L, 1, LUA_TUSERDATA);
  15550. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15551. inst->Stop();
  15552. return 0;
  15553. }
  15554. static int Polycode_BoneTrack_Update(lua_State *L) {
  15555. luaL_checktype(L, 1, LUA_TUSERDATA);
  15556. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15557. luaL_checktype(L, 2, LUA_TNUMBER);
  15558. Number elapsed = lua_tonumber(L, 2);
  15559. inst->Update(elapsed);
  15560. return 0;
  15561. }
  15562. static int Polycode_BoneTrack_Reset(lua_State *L) {
  15563. luaL_checktype(L, 1, LUA_TUSERDATA);
  15564. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15565. inst->Reset();
  15566. return 0;
  15567. }
  15568. static int Polycode_BoneTrack_setSpeed(lua_State *L) {
  15569. luaL_checktype(L, 1, LUA_TUSERDATA);
  15570. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  15571. luaL_checktype(L, 2, LUA_TNUMBER);
  15572. Number speed = lua_tonumber(L, 2);
  15573. inst->setSpeed(speed);
  15574. return 0;
  15575. }
  15576. static int Polycode_delete_BoneTrack(lua_State *L) {
  15577. luaL_checktype(L, 1, LUA_TUSERDATA);
  15578. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15579. delete ((BoneTrack*) *inst);
  15580. *inst = NULL;
  15581. return 0;
  15582. }
  15583. static int Polycode_Sound(lua_State *L) {
  15584. luaL_checktype(L, 1, LUA_TSTRING);
  15585. String fileName = String(lua_tostring(L, 1));
  15586. Sound *inst = new Sound(fileName);
  15587. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15588. *userdataPtr = (PolyBase*)inst;
  15589. luaL_getmetatable(L, "Polycode.Sound");
  15590. lua_setmetatable(L, -2);
  15591. return 1;
  15592. }
  15593. static int Polycode_Sound_getSampleAsNumber(lua_State *L) {
  15594. luaL_checktype(L, 1, LUA_TUSERDATA);
  15595. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15596. luaL_checktype(L, 2, LUA_TNUMBER);
  15597. int offset = lua_tointeger(L, 2);
  15598. luaL_checktype(L, 3, LUA_TNUMBER);
  15599. int channel = lua_tointeger(L, 3);
  15600. luaL_checktype(L, 4, LUA_TUSERDATA);
  15601. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  15602. luaL_checktype(L, 5, LUA_TUSERDATA);
  15603. Quaternion orientation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 5));
  15604. lua_pushnumber(L, inst->getSampleAsNumber(offset, channel, position, orientation));
  15605. return 1;
  15606. }
  15607. static int Polycode_Sound_loadFile(lua_State *L) {
  15608. luaL_checktype(L, 1, LUA_TUSERDATA);
  15609. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15610. luaL_checktype(L, 2, LUA_TSTRING);
  15611. String fileName = String(lua_tostring(L, 2));
  15612. inst->loadFile(fileName);
  15613. return 0;
  15614. }
  15615. static int Polycode_Sound_Play(lua_State *L) {
  15616. luaL_checktype(L, 1, LUA_TUSERDATA);
  15617. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15618. bool loop;
  15619. if(lua_isboolean(L, 2)) {
  15620. loop = lua_toboolean(L, 2) != 0;
  15621. } else {
  15622. loop = false;
  15623. }
  15624. bool restartSound;
  15625. if(lua_isboolean(L, 3)) {
  15626. restartSound = lua_toboolean(L, 3) != 0;
  15627. } else {
  15628. restartSound = true;
  15629. }
  15630. inst->Play(loop, restartSound);
  15631. return 0;
  15632. }
  15633. static int Polycode_Sound_Stop(lua_State *L) {
  15634. luaL_checktype(L, 1, LUA_TUSERDATA);
  15635. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15636. inst->Stop();
  15637. return 0;
  15638. }
  15639. static int Polycode_Sound_setVolume(lua_State *L) {
  15640. luaL_checktype(L, 1, LUA_TUSERDATA);
  15641. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15642. luaL_checktype(L, 2, LUA_TNUMBER);
  15643. Number newVolume = lua_tonumber(L, 2);
  15644. inst->setVolume(newVolume);
  15645. return 0;
  15646. }
  15647. static int Polycode_Sound_getVolume(lua_State *L) {
  15648. luaL_checktype(L, 1, LUA_TUSERDATA);
  15649. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15650. lua_pushnumber(L, inst->getVolume());
  15651. return 1;
  15652. }
  15653. static int Polycode_Sound_setPitch(lua_State *L) {
  15654. luaL_checktype(L, 1, LUA_TUSERDATA);
  15655. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15656. luaL_checktype(L, 2, LUA_TNUMBER);
  15657. Number newPitch = lua_tonumber(L, 2);
  15658. inst->setPitch(newPitch);
  15659. return 0;
  15660. }
  15661. static int Polycode_Sound_getPitch(lua_State *L) {
  15662. luaL_checktype(L, 1, LUA_TUSERDATA);
  15663. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15664. lua_pushnumber(L, inst->getPitch());
  15665. return 1;
  15666. }
  15667. static int Polycode_Sound_isPlaying(lua_State *L) {
  15668. luaL_checktype(L, 1, LUA_TUSERDATA);
  15669. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15670. lua_pushboolean(L, inst->isPlaying());
  15671. return 1;
  15672. }
  15673. static int Polycode_Sound_isLooped(lua_State *L) {
  15674. luaL_checktype(L, 1, LUA_TUSERDATA);
  15675. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15676. lua_pushboolean(L, inst->isLooped());
  15677. return 1;
  15678. }
  15679. static int Polycode_Sound_setIsPositional(lua_State *L) {
  15680. luaL_checktype(L, 1, LUA_TUSERDATA);
  15681. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15682. luaL_checktype(L, 2, LUA_TBOOLEAN);
  15683. bool isPositional = lua_toboolean(L, 2) != 0;
  15684. inst->setIsPositional(isPositional);
  15685. return 0;
  15686. }
  15687. static int Polycode_Sound_setSoundPosition(lua_State *L) {
  15688. luaL_checktype(L, 1, LUA_TUSERDATA);
  15689. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15690. luaL_checktype(L, 2, LUA_TUSERDATA);
  15691. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15692. inst->setSoundPosition(position);
  15693. return 0;
  15694. }
  15695. static int Polycode_Sound_setSoundVelocity(lua_State *L) {
  15696. luaL_checktype(L, 1, LUA_TUSERDATA);
  15697. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15698. luaL_checktype(L, 2, LUA_TUSERDATA);
  15699. Vector3 velocity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15700. inst->setSoundVelocity(velocity);
  15701. return 0;
  15702. }
  15703. static int Polycode_Sound_setSoundDirection(lua_State *L) {
  15704. luaL_checktype(L, 1, LUA_TUSERDATA);
  15705. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15706. luaL_checktype(L, 2, LUA_TUSERDATA);
  15707. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15708. inst->setSoundDirection(direction);
  15709. return 0;
  15710. }
  15711. static int Polycode_Sound_setOffset(lua_State *L) {
  15712. luaL_checktype(L, 1, LUA_TUSERDATA);
  15713. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15714. luaL_checktype(L, 2, LUA_TNUMBER);
  15715. int offset = lua_tointeger(L, 2);
  15716. inst->setOffset(offset);
  15717. return 0;
  15718. }
  15719. static int Polycode_Sound_getFileName(lua_State *L) {
  15720. luaL_checktype(L, 1, LUA_TUSERDATA);
  15721. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15722. lua_pushstring(L, inst->getFileName().c_str());
  15723. return 1;
  15724. }
  15725. static int Polycode_Sound_getPlaybackDuration(lua_State *L) {
  15726. luaL_checktype(L, 1, LUA_TUSERDATA);
  15727. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15728. lua_pushnumber(L, inst->getPlaybackDuration());
  15729. return 1;
  15730. }
  15731. static int Polycode_Sound_getPlaybackTime(lua_State *L) {
  15732. luaL_checktype(L, 1, LUA_TUSERDATA);
  15733. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15734. lua_pushnumber(L, inst->getPlaybackTime());
  15735. return 1;
  15736. }
  15737. static int Polycode_Sound_seekTo(lua_State *L) {
  15738. luaL_checktype(L, 1, LUA_TUSERDATA);
  15739. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15740. luaL_checktype(L, 2, LUA_TNUMBER);
  15741. Number time = lua_tonumber(L, 2);
  15742. inst->seekTo(time);
  15743. return 0;
  15744. }
  15745. static int Polycode_Sound_getOffset(lua_State *L) {
  15746. luaL_checktype(L, 1, LUA_TUSERDATA);
  15747. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15748. lua_pushinteger(L, inst->getOffset());
  15749. return 1;
  15750. }
  15751. static int Polycode_Sound_getSampleLength(lua_State *L) {
  15752. luaL_checktype(L, 1, LUA_TUSERDATA);
  15753. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15754. lua_pushinteger(L, inst->getSampleLength());
  15755. return 1;
  15756. }
  15757. static int Polycode_Sound_getFrequency(lua_State *L) {
  15758. luaL_checktype(L, 1, LUA_TUSERDATA);
  15759. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15760. lua_pushinteger(L, inst->getFrequency());
  15761. return 1;
  15762. }
  15763. static int Polycode_Sound_setPositionalProperties(lua_State *L) {
  15764. luaL_checktype(L, 1, LUA_TUSERDATA);
  15765. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15766. luaL_checktype(L, 2, LUA_TNUMBER);
  15767. Number referenceDistance = lua_tonumber(L, 2);
  15768. luaL_checktype(L, 3, LUA_TNUMBER);
  15769. Number maxDistance = lua_tonumber(L, 3);
  15770. inst->setPositionalProperties(referenceDistance, maxDistance);
  15771. return 0;
  15772. }
  15773. static int Polycode_Sound_setReferenceDistance(lua_State *L) {
  15774. luaL_checktype(L, 1, LUA_TUSERDATA);
  15775. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15776. luaL_checktype(L, 2, LUA_TNUMBER);
  15777. Number referenceDistance = lua_tonumber(L, 2);
  15778. inst->setReferenceDistance(referenceDistance);
  15779. return 0;
  15780. }
  15781. static int Polycode_Sound_setMaxDistance(lua_State *L) {
  15782. luaL_checktype(L, 1, LUA_TUSERDATA);
  15783. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15784. luaL_checktype(L, 2, LUA_TNUMBER);
  15785. Number maxDistance = lua_tonumber(L, 2);
  15786. inst->setMaxDistance(maxDistance);
  15787. return 0;
  15788. }
  15789. static int Polycode_Sound_getReferenceDistance(lua_State *L) {
  15790. luaL_checktype(L, 1, LUA_TUSERDATA);
  15791. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15792. lua_pushnumber(L, inst->getReferenceDistance());
  15793. return 1;
  15794. }
  15795. static int Polycode_Sound_getMaxDistance(lua_State *L) {
  15796. luaL_checktype(L, 1, LUA_TUSERDATA);
  15797. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15798. lua_pushnumber(L, inst->getMaxDistance());
  15799. return 1;
  15800. }
  15801. static int Polycode_Sound_loadBytes(lua_State *L) {
  15802. luaL_checktype(L, 1, LUA_TUSERDATA);
  15803. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15804. luaL_checktype(L, 2, LUA_TUSERDATA);
  15805. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  15806. luaL_checktype(L, 3, LUA_TNUMBER);
  15807. int size = lua_tointeger(L, 3);
  15808. luaL_checktype(L, 4, LUA_TNUMBER);
  15809. int channels = lua_tointeger(L, 4);
  15810. luaL_checktype(L, 5, LUA_TNUMBER);
  15811. int freq = lua_tointeger(L, 5);
  15812. luaL_checktype(L, 6, LUA_TUSERDATA);
  15813. SoundFormat format = *(SoundFormat*) *((PolyBase**)lua_touserdata(L, 6));
  15814. lua_pushboolean(L, inst->loadBytes(data, size, channels, freq, format));
  15815. return 1;
  15816. }
  15817. static int Polycode_Sound_loadWAV(lua_State *L) {
  15818. luaL_checktype(L, 1, LUA_TUSERDATA);
  15819. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15820. luaL_checktype(L, 2, LUA_TSTRING);
  15821. String fileName = String(lua_tostring(L, 2));
  15822. lua_pushboolean(L, inst->loadWAV(fileName));
  15823. return 1;
  15824. }
  15825. static int Polycode_Sound_loadOGG(lua_State *L) {
  15826. luaL_checktype(L, 1, LUA_TUSERDATA);
  15827. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15828. luaL_checktype(L, 2, LUA_TSTRING);
  15829. String fileName = String(lua_tostring(L, 2));
  15830. lua_pushboolean(L, inst->loadOGG(fileName));
  15831. return 1;
  15832. }
  15833. static int Polycode_Sound_soundCheck(lua_State *L) {
  15834. luaL_checktype(L, 1, LUA_TUSERDATA);
  15835. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15836. luaL_checktype(L, 2, LUA_TBOOLEAN);
  15837. bool result = lua_toboolean(L, 2) != 0;
  15838. luaL_checktype(L, 3, LUA_TSTRING);
  15839. String err = String(lua_tostring(L, 3));
  15840. inst->soundCheck(result, err);
  15841. return 0;
  15842. }
  15843. static int Polycode_Sound_updateStream(lua_State *L) {
  15844. luaL_checktype(L, 1, LUA_TUSERDATA);
  15845. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  15846. luaL_checktype(L, 2, LUA_TNUMBER);
  15847. int streamCount = lua_tointeger(L, 2);
  15848. inst->updateStream(streamCount);
  15849. return 0;
  15850. }
  15851. static int Polycode_delete_Sound(lua_State *L) {
  15852. luaL_checktype(L, 1, LUA_TUSERDATA);
  15853. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15854. delete ((Sound*) *inst);
  15855. *inst = NULL;
  15856. return 0;
  15857. }
  15858. static int Polycode_AudioStreamingSource(lua_State *L) {
  15859. luaL_checktype(L, 1, LUA_TNUMBER);
  15860. int channels = lua_tointeger(L, 1);
  15861. luaL_checktype(L, 2, LUA_TNUMBER);
  15862. int freq = lua_tointeger(L, 2);
  15863. AudioStreamingSource *inst = new AudioStreamingSource(channels, freq);
  15864. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15865. *userdataPtr = (PolyBase*)inst;
  15866. luaL_getmetatable(L, "Polycode.AudioStreamingSource");
  15867. lua_setmetatable(L, -2);
  15868. return 1;
  15869. }
  15870. static int Polycode_AudioStreamingSource_getNumChannels(lua_State *L) {
  15871. luaL_checktype(L, 1, LUA_TUSERDATA);
  15872. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  15873. lua_pushinteger(L, inst->getNumChannels());
  15874. return 1;
  15875. }
  15876. static int Polycode_AudioStreamingSource_getFrequency(lua_State *L) {
  15877. luaL_checktype(L, 1, LUA_TUSERDATA);
  15878. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  15879. lua_pushinteger(L, inst->getFrequency());
  15880. return 1;
  15881. }
  15882. static int Polycode_delete_AudioStreamingSource(lua_State *L) {
  15883. luaL_checktype(L, 1, LUA_TUSERDATA);
  15884. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15885. delete ((AudioStreamingSource*) *inst);
  15886. *inst = NULL;
  15887. return 0;
  15888. }
  15889. static int Polycode_AudioMixer_get_globalVolume(lua_State *L) {
  15890. luaL_checktype(L, 1, LUA_TUSERDATA);
  15891. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15892. lua_pushnumber(L, inst->globalVolume);
  15893. return 1;
  15894. }
  15895. static int Polycode_AudioMixer_get_listenerPosition(lua_State *L) {
  15896. luaL_checktype(L, 1, LUA_TUSERDATA);
  15897. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15898. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15899. *userdataPtr = (PolyBase*)&inst->listenerPosition;
  15900. return 1;
  15901. }
  15902. static int Polycode_AudioMixer_get_listenerOrientation(lua_State *L) {
  15903. luaL_checktype(L, 1, LUA_TUSERDATA);
  15904. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15905. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15906. *userdataPtr = (PolyBase*)&inst->listenerOrientation;
  15907. return 1;
  15908. }
  15909. static int Polycode_AudioMixer_get_mixerMutex(lua_State *L) {
  15910. luaL_checktype(L, 1, LUA_TUSERDATA);
  15911. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15912. if(!inst->mixerMutex) {
  15913. lua_pushnil(L);
  15914. } else {
  15915. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15916. *userdataPtr = (PolyBase*)inst->mixerMutex;
  15917. }
  15918. return 1;
  15919. }
  15920. static int Polycode_AudioMixer_set_globalVolume(lua_State *L) {
  15921. luaL_checktype(L, 1, LUA_TUSERDATA);
  15922. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15923. Number param = lua_tonumber(L, 2);
  15924. inst->globalVolume = param;
  15925. return 0;
  15926. }
  15927. static int Polycode_AudioMixer_set_listenerPosition(lua_State *L) {
  15928. luaL_checktype(L, 1, LUA_TUSERDATA);
  15929. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15930. luaL_checktype(L, 2, LUA_TUSERDATA);
  15931. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15932. inst->listenerPosition = *argInst;
  15933. return 0;
  15934. }
  15935. static int Polycode_AudioMixer_set_listenerOrientation(lua_State *L) {
  15936. luaL_checktype(L, 1, LUA_TUSERDATA);
  15937. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15938. luaL_checktype(L, 2, LUA_TUSERDATA);
  15939. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  15940. inst->listenerOrientation = *argInst;
  15941. return 0;
  15942. }
  15943. static int Polycode_AudioMixer_set_mixerMutex(lua_State *L) {
  15944. luaL_checktype(L, 1, LUA_TUSERDATA);
  15945. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15946. luaL_checktype(L, 2, LUA_TUSERDATA);
  15947. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  15948. inst->mixerMutex = *argInst;
  15949. return 0;
  15950. }
  15951. static int Polycode_AudioMixer(lua_State *L) {
  15952. AudioMixer *inst = new AudioMixer();
  15953. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15954. *userdataPtr = (PolyBase*)inst;
  15955. luaL_getmetatable(L, "Polycode.AudioMixer");
  15956. lua_setmetatable(L, -2);
  15957. return 1;
  15958. }
  15959. static int Polycode_AudioMixer_mixIntoBuffer(lua_State *L) {
  15960. luaL_checktype(L, 1, LUA_TUSERDATA);
  15961. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  15962. luaL_checktype(L, 2, LUA_TUSERDATA);
  15963. int16_t* buffer = (int16_t*) *((PolyBase**)lua_touserdata(L, 2));
  15964. luaL_checktype(L, 3, LUA_TNUMBER);
  15965. int numSamples = lua_tointeger(L, 3);
  15966. inst->mixIntoBuffer(buffer, numSamples);
  15967. return 0;
  15968. }
  15969. static int Polycode_delete_AudioMixer(lua_State *L) {
  15970. luaL_checktype(L, 1, LUA_TUSERDATA);
  15971. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15972. delete ((AudioMixer*) *inst);
  15973. *inst = NULL;
  15974. return 0;
  15975. }
  15976. static int Polycode_SoundManager(lua_State *L) {
  15977. SoundManager *inst = new SoundManager();
  15978. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15979. *userdataPtr = (PolyBase*)inst;
  15980. luaL_getmetatable(L, "Polycode.SoundManager");
  15981. lua_setmetatable(L, -2);
  15982. return 1;
  15983. }
  15984. static int Polycode_SoundManager_setListenerPosition(lua_State *L) {
  15985. luaL_checktype(L, 1, LUA_TUSERDATA);
  15986. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  15987. luaL_checktype(L, 2, LUA_TUSERDATA);
  15988. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15989. inst->setListenerPosition(position);
  15990. return 0;
  15991. }
  15992. static int Polycode_SoundManager_setListenerOrientation(lua_State *L) {
  15993. luaL_checktype(L, 1, LUA_TUSERDATA);
  15994. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  15995. luaL_checktype(L, 2, LUA_TUSERDATA);
  15996. Quaternion orientation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  15997. inst->setListenerOrientation(orientation);
  15998. return 0;
  15999. }
  16000. static int Polycode_SoundManager_recordSound(lua_State *L) {
  16001. luaL_checktype(L, 1, LUA_TUSERDATA);
  16002. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16003. luaL_checktype(L, 2, LUA_TNUMBER);
  16004. int rate = lua_tointeger(L, 2);
  16005. luaL_checktype(L, 3, LUA_TNUMBER);
  16006. int sampleSize = lua_tointeger(L, 3);
  16007. lua_pushboolean(L, inst->recordSound(rate, sampleSize));
  16008. return 1;
  16009. }
  16010. static int Polycode_SoundManager_stopRecording(lua_State *L) {
  16011. luaL_checktype(L, 1, LUA_TUSERDATA);
  16012. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16013. bool generateFloatBuffer;
  16014. if(lua_isboolean(L, 2)) {
  16015. generateFloatBuffer = lua_toboolean(L, 2) != 0;
  16016. } else {
  16017. generateFloatBuffer = false;
  16018. }
  16019. PolyBase *ptrRetVal = (PolyBase*)inst->stopRecording(generateFloatBuffer);
  16020. if(ptrRetVal == NULL) {
  16021. lua_pushnil(L);
  16022. } else {
  16023. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16024. *userdataPtr = ptrRetVal;
  16025. }
  16026. return 1;
  16027. }
  16028. static int Polycode_SoundManager_setAudioInterface(lua_State *L) {
  16029. luaL_checktype(L, 1, LUA_TUSERDATA);
  16030. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16031. luaL_checktype(L, 2, LUA_TUSERDATA);
  16032. AudioInterface* audioInterface = (AudioInterface*) *((PolyBase**)lua_touserdata(L, 2));
  16033. inst->setAudioInterface(audioInterface);
  16034. return 0;
  16035. }
  16036. static int Polycode_SoundManager_Update(lua_State *L) {
  16037. luaL_checktype(L, 1, LUA_TUSERDATA);
  16038. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16039. inst->Update();
  16040. return 0;
  16041. }
  16042. static int Polycode_SoundManager_setGlobalVolume(lua_State *L) {
  16043. luaL_checktype(L, 1, LUA_TUSERDATA);
  16044. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16045. luaL_checktype(L, 2, LUA_TNUMBER);
  16046. Number globalVolume = lua_tonumber(L, 2);
  16047. inst->setGlobalVolume(globalVolume);
  16048. return 0;
  16049. }
  16050. static int Polycode_SoundManager_registerSound(lua_State *L) {
  16051. luaL_checktype(L, 1, LUA_TUSERDATA);
  16052. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16053. luaL_checktype(L, 2, LUA_TUSERDATA);
  16054. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  16055. inst->registerSound(sound);
  16056. return 0;
  16057. }
  16058. static int Polycode_SoundManager_unregisterSound(lua_State *L) {
  16059. luaL_checktype(L, 1, LUA_TUSERDATA);
  16060. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  16061. luaL_checktype(L, 2, LUA_TUSERDATA);
  16062. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  16063. inst->unregisterSound(sound);
  16064. return 0;
  16065. }
  16066. static int Polycode_delete_SoundManager(lua_State *L) {
  16067. luaL_checktype(L, 1, LUA_TUSERDATA);
  16068. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16069. delete ((SoundManager*) *inst);
  16070. *inst = NULL;
  16071. return 0;
  16072. }
  16073. static int Polycode_String_get_contents(lua_State *L) {
  16074. luaL_checktype(L, 1, LUA_TUSERDATA);
  16075. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16076. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16077. *userdataPtr = (PolyBase*)&inst->contents;
  16078. return 1;
  16079. }
  16080. static int Polycode_String_get_w_contents(lua_State *L) {
  16081. luaL_checktype(L, 1, LUA_TUSERDATA);
  16082. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16083. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16084. *userdataPtr = (PolyBase*)&inst->w_contents;
  16085. return 1;
  16086. }
  16087. static int Polycode_String_set_contents(lua_State *L) {
  16088. luaL_checktype(L, 1, LUA_TUSERDATA);
  16089. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16090. luaL_checktype(L, 2, LUA_TUSERDATA);
  16091. string *argInst = (string*) *((PolyBase**)lua_touserdata(L, 2));
  16092. inst->contents = *argInst;
  16093. return 0;
  16094. }
  16095. static int Polycode_String_set_w_contents(lua_State *L) {
  16096. luaL_checktype(L, 1, LUA_TUSERDATA);
  16097. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16098. luaL_checktype(L, 2, LUA_TUSERDATA);
  16099. wstring *argInst = (wstring*) *((PolyBase**)lua_touserdata(L, 2));
  16100. inst->w_contents = *argInst;
  16101. return 0;
  16102. }
  16103. static int Polycode_String(lua_State *L) {
  16104. String *inst = new String();
  16105. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16106. *userdataPtr = (PolyBase*)inst;
  16107. luaL_getmetatable(L, "Polycode.String");
  16108. lua_setmetatable(L, -2);
  16109. return 1;
  16110. }
  16111. static int Polycode_String_size(lua_State *L) {
  16112. luaL_checktype(L, 1, LUA_TUSERDATA);
  16113. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16114. size_t *retInst = new size_t();
  16115. *retInst = inst->size();
  16116. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16117. luaL_getmetatable(L, "Polycode.size_t");
  16118. lua_setmetatable(L, -2);
  16119. *userdataPtr = (PolyBase*)retInst;
  16120. return 1;
  16121. }
  16122. static int Polycode_String_length(lua_State *L) {
  16123. luaL_checktype(L, 1, LUA_TUSERDATA);
  16124. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16125. size_t *retInst = new size_t();
  16126. *retInst = inst->length();
  16127. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16128. luaL_getmetatable(L, "Polycode.size_t");
  16129. lua_setmetatable(L, -2);
  16130. *userdataPtr = (PolyBase*)retInst;
  16131. return 1;
  16132. }
  16133. static int Polycode_String_substr(lua_State *L) {
  16134. luaL_checktype(L, 1, LUA_TUSERDATA);
  16135. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16136. luaL_checktype(L, 2, LUA_TUSERDATA);
  16137. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 2));
  16138. luaL_checktype(L, 3, LUA_TUSERDATA);
  16139. size_t n = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  16140. lua_pushstring(L, inst->substr(pos, n).c_str());
  16141. return 1;
  16142. }
  16143. static int Polycode_String_rfind(lua_State *L) {
  16144. luaL_checktype(L, 1, LUA_TUSERDATA);
  16145. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16146. luaL_checktype(L, 2, LUA_TSTRING);
  16147. String str = String(lua_tostring(L, 2));
  16148. luaL_checktype(L, 3, LUA_TUSERDATA);
  16149. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  16150. size_t *retInst = new size_t();
  16151. *retInst = inst->rfind(str, pos);
  16152. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16153. luaL_getmetatable(L, "Polycode.size_t");
  16154. lua_setmetatable(L, -2);
  16155. *userdataPtr = (PolyBase*)retInst;
  16156. return 1;
  16157. }
  16158. static int Polycode_String_find(lua_State *L) {
  16159. luaL_checktype(L, 1, LUA_TUSERDATA);
  16160. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16161. luaL_checktype(L, 2, LUA_TSTRING);
  16162. String str = String(lua_tostring(L, 2));
  16163. luaL_checktype(L, 3, LUA_TUSERDATA);
  16164. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  16165. size_t *retInst = new size_t();
  16166. *retInst = inst->find(str, pos);
  16167. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16168. luaL_getmetatable(L, "Polycode.size_t");
  16169. lua_setmetatable(L, -2);
  16170. *userdataPtr = (PolyBase*)retInst;
  16171. return 1;
  16172. }
  16173. static int Polycode_String_find_last_of(lua_State *L) {
  16174. luaL_checktype(L, 1, LUA_TUSERDATA);
  16175. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16176. luaL_checktype(L, 2, LUA_TSTRING);
  16177. String str = String(lua_tostring(L, 2));
  16178. luaL_checktype(L, 3, LUA_TUSERDATA);
  16179. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  16180. size_t *retInst = new size_t();
  16181. *retInst = inst->find_last_of(str, pos);
  16182. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16183. luaL_getmetatable(L, "Polycode.size_t");
  16184. lua_setmetatable(L, -2);
  16185. *userdataPtr = (PolyBase*)retInst;
  16186. return 1;
  16187. }
  16188. static int Polycode_String_find_first_of(lua_State *L) {
  16189. luaL_checktype(L, 1, LUA_TUSERDATA);
  16190. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16191. luaL_checktype(L, 2, LUA_TSTRING);
  16192. String str = String(lua_tostring(L, 2));
  16193. luaL_checktype(L, 3, LUA_TUSERDATA);
  16194. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  16195. size_t *retInst = new size_t();
  16196. *retInst = inst->find_first_of(str, pos);
  16197. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16198. luaL_getmetatable(L, "Polycode.size_t");
  16199. lua_setmetatable(L, -2);
  16200. *userdataPtr = (PolyBase*)retInst;
  16201. return 1;
  16202. }
  16203. static int Polycode_String_toLowerCase(lua_State *L) {
  16204. luaL_checktype(L, 1, LUA_TUSERDATA);
  16205. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16206. lua_pushstring(L, inst->toLowerCase().c_str());
  16207. return 1;
  16208. }
  16209. static int Polycode_String_toUpperCase(lua_State *L) {
  16210. luaL_checktype(L, 1, LUA_TUSERDATA);
  16211. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16212. lua_pushstring(L, inst->toUpperCase().c_str());
  16213. return 1;
  16214. }
  16215. static int Polycode_String_split(lua_State *L) {
  16216. luaL_checktype(L, 1, LUA_TUSERDATA);
  16217. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16218. luaL_checktype(L, 2, LUA_TSTRING);
  16219. String delim = String(lua_tostring(L, 2));
  16220. return 0;
  16221. }
  16222. static int Polycode_String_replace(lua_State *L) {
  16223. luaL_checktype(L, 1, LUA_TUSERDATA);
  16224. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16225. luaL_checktype(L, 2, LUA_TSTRING);
  16226. String what = String(lua_tostring(L, 2));
  16227. luaL_checktype(L, 3, LUA_TSTRING);
  16228. String withWhat = String(lua_tostring(L, 3));
  16229. lua_pushstring(L, inst->replace(what, withWhat).c_str());
  16230. return 1;
  16231. }
  16232. static int Polycode_String_NumberToString(lua_State *L) {
  16233. luaL_checktype(L, 1, LUA_TNUMBER);
  16234. Number value = lua_tonumber(L, 1);
  16235. int precision;
  16236. if(lua_isnumber(L, 2)) {
  16237. precision = lua_tointeger(L, 2);
  16238. } else {
  16239. precision = 2;
  16240. }
  16241. lua_pushstring(L, String::NumberToString(value, precision).c_str());
  16242. return 1;
  16243. }
  16244. static int Polycode_String_toNumber(lua_State *L) {
  16245. luaL_checktype(L, 1, LUA_TUSERDATA);
  16246. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16247. lua_pushnumber(L, inst->toNumber());
  16248. return 1;
  16249. }
  16250. static int Polycode_String_toInteger(lua_State *L) {
  16251. luaL_checktype(L, 1, LUA_TUSERDATA);
  16252. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16253. lua_pushinteger(L, inst->toInteger());
  16254. return 1;
  16255. }
  16256. static int Polycode_String_IntToString(lua_State *L) {
  16257. luaL_checktype(L, 1, LUA_TNUMBER);
  16258. int value = lua_tointeger(L, 1);
  16259. lua_pushstring(L, String::IntToString(value).c_str());
  16260. return 1;
  16261. }
  16262. static int Polycode_String_c_str(lua_State *L) {
  16263. luaL_checktype(L, 1, LUA_TUSERDATA);
  16264. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16265. PolyBase *ptrRetVal = (PolyBase*)inst->c_str();
  16266. if(ptrRetVal == NULL) {
  16267. lua_pushnil(L);
  16268. } else {
  16269. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16270. *userdataPtr = ptrRetVal;
  16271. }
  16272. return 1;
  16273. }
  16274. static int Polycode_String_getDataWithEncoding(lua_State *L) {
  16275. luaL_checktype(L, 1, LUA_TUSERDATA);
  16276. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16277. luaL_checktype(L, 2, LUA_TNUMBER);
  16278. int encoding = lua_tointeger(L, 2);
  16279. PolyBase *ptrRetVal = (PolyBase*)inst->getDataWithEncoding(encoding);
  16280. if(ptrRetVal == NULL) {
  16281. lua_pushnil(L);
  16282. } else {
  16283. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16284. *userdataPtr = ptrRetVal;
  16285. }
  16286. return 1;
  16287. }
  16288. static int Polycode_String_getWDataWithEncoding(lua_State *L) {
  16289. luaL_checktype(L, 1, LUA_TUSERDATA);
  16290. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16291. luaL_checktype(L, 2, LUA_TNUMBER);
  16292. int encoding = lua_tointeger(L, 2);
  16293. PolyBase *ptrRetVal = (PolyBase*)inst->getWDataWithEncoding(encoding);
  16294. if(ptrRetVal == NULL) {
  16295. lua_pushnil(L);
  16296. } else {
  16297. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16298. *userdataPtr = ptrRetVal;
  16299. }
  16300. return 1;
  16301. }
  16302. static int Polycode_String_append(lua_State *L) {
  16303. luaL_checktype(L, 1, LUA_TUSERDATA);
  16304. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16305. luaL_checktype(L, 2, LUA_TUSERDATA);
  16306. char c = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  16307. inst->append(c);
  16308. return 0;
  16309. }
  16310. static int Polycode_String_getDataSizeWithEncoding(lua_State *L) {
  16311. luaL_checktype(L, 1, LUA_TUSERDATA);
  16312. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16313. luaL_checktype(L, 2, LUA_TNUMBER);
  16314. int encoding = lua_tointeger(L, 2);
  16315. size_t *retInst = new size_t();
  16316. *retInst = inst->getDataSizeWithEncoding(encoding);
  16317. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16318. luaL_getmetatable(L, "Polycode.size_t");
  16319. lua_setmetatable(L, -2);
  16320. *userdataPtr = (PolyBase*)retInst;
  16321. return 1;
  16322. }
  16323. static int Polycode_String_setDataWithEncoding(lua_State *L) {
  16324. luaL_checktype(L, 1, LUA_TUSERDATA);
  16325. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16326. luaL_checktype(L, 2, LUA_TUSERDATA);
  16327. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  16328. luaL_checktype(L, 3, LUA_TNUMBER);
  16329. int encoding = lua_tointeger(L, 3);
  16330. inst->setDataWithEncoding(data, encoding);
  16331. return 0;
  16332. }
  16333. static int Polycode_String_isNumber(lua_State *L) {
  16334. luaL_checktype(L, 1, LUA_TUSERDATA);
  16335. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  16336. lua_pushboolean(L, inst->isNumber());
  16337. return 1;
  16338. }
  16339. static int Polycode_delete_String(lua_State *L) {
  16340. luaL_checktype(L, 1, LUA_TUSERDATA);
  16341. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16342. delete ((String*) *inst);
  16343. *inst = NULL;
  16344. return 0;
  16345. }
  16346. static int Polycode_RenderBuffer(lua_State *L) {
  16347. luaL_checktype(L, 1, LUA_TNUMBER);
  16348. int width = lua_tointeger(L, 1);
  16349. luaL_checktype(L, 2, LUA_TNUMBER);
  16350. int height = lua_tointeger(L, 2);
  16351. luaL_checktype(L, 3, LUA_TBOOLEAN);
  16352. bool attachDepthBuffer = lua_toboolean(L, 3) != 0;
  16353. luaL_checktype(L, 4, LUA_TBOOLEAN);
  16354. bool floatingPoint = lua_toboolean(L, 4) != 0;
  16355. RenderBuffer *inst = new RenderBuffer(width, height, attachDepthBuffer, floatingPoint);
  16356. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16357. *userdataPtr = (PolyBase*)inst;
  16358. luaL_getmetatable(L, "Polycode.RenderBuffer");
  16359. lua_setmetatable(L, -2);
  16360. return 1;
  16361. }
  16362. static int Polycode_RenderBuffer_getWidth(lua_State *L) {
  16363. luaL_checktype(L, 1, LUA_TUSERDATA);
  16364. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  16365. lua_pushinteger(L, inst->getWidth());
  16366. return 1;
  16367. }
  16368. static int Polycode_RenderBuffer_getHeight(lua_State *L) {
  16369. luaL_checktype(L, 1, LUA_TUSERDATA);
  16370. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  16371. lua_pushinteger(L, inst->getHeight());
  16372. return 1;
  16373. }
  16374. static int Polycode_delete_RenderBuffer(lua_State *L) {
  16375. luaL_checktype(L, 1, LUA_TUSERDATA);
  16376. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16377. delete ((RenderBuffer*) *inst);
  16378. *inst = NULL;
  16379. return 0;
  16380. }
  16381. static int Polycode_Texture_get_clamp(lua_State *L) {
  16382. luaL_checktype(L, 1, LUA_TUSERDATA);
  16383. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16384. lua_pushboolean(L, inst->clamp);
  16385. return 1;
  16386. }
  16387. static int Polycode_Texture_get_textureData(lua_State *L) {
  16388. luaL_checktype(L, 1, LUA_TUSERDATA);
  16389. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16390. if(!inst->textureData) {
  16391. lua_pushnil(L);
  16392. } else {
  16393. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16394. *userdataPtr = (PolyBase*)inst->textureData;
  16395. }
  16396. return 1;
  16397. }
  16398. static int Polycode_Texture_get_type(lua_State *L) {
  16399. luaL_checktype(L, 1, LUA_TUSERDATA);
  16400. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16401. lua_pushinteger(L, inst->type);
  16402. return 1;
  16403. }
  16404. static int Polycode_Texture_get_filteringMode(lua_State *L) {
  16405. luaL_checktype(L, 1, LUA_TUSERDATA);
  16406. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16407. lua_pushinteger(L, inst->filteringMode);
  16408. return 1;
  16409. }
  16410. static int Polycode_Texture_get_createMipmaps(lua_State *L) {
  16411. luaL_checktype(L, 1, LUA_TUSERDATA);
  16412. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16413. lua_pushboolean(L, inst->createMipmaps);
  16414. return 1;
  16415. }
  16416. static int Polycode_Texture_get_anisotropy(lua_State *L) {
  16417. luaL_checktype(L, 1, LUA_TUSERDATA);
  16418. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16419. lua_pushinteger(L, inst->anisotropy);
  16420. return 1;
  16421. }
  16422. static int Polycode_Texture_get_framebufferTexture(lua_State *L) {
  16423. luaL_checktype(L, 1, LUA_TUSERDATA);
  16424. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16425. lua_pushboolean(L, inst->framebufferTexture);
  16426. return 1;
  16427. }
  16428. static int Polycode_Texture_get_depthTexture(lua_State *L) {
  16429. luaL_checktype(L, 1, LUA_TUSERDATA);
  16430. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16431. lua_pushboolean(L, inst->depthTexture);
  16432. return 1;
  16433. }
  16434. static int Polycode_Texture_set_clamp(lua_State *L) {
  16435. luaL_checktype(L, 1, LUA_TUSERDATA);
  16436. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16437. bool param = lua_toboolean(L, 2) != 0;
  16438. inst->clamp = param;
  16439. return 0;
  16440. }
  16441. static int Polycode_Texture_set_textureData(lua_State *L) {
  16442. luaL_checktype(L, 1, LUA_TUSERDATA);
  16443. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16444. luaL_checktype(L, 2, LUA_TUSERDATA);
  16445. char* *argInst = (char**) *((PolyBase**)lua_touserdata(L, 2));
  16446. inst->textureData = *argInst;
  16447. return 0;
  16448. }
  16449. static int Polycode_Texture_set_type(lua_State *L) {
  16450. luaL_checktype(L, 1, LUA_TUSERDATA);
  16451. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16452. int param = lua_tointeger(L, 2);
  16453. inst->type = param;
  16454. return 0;
  16455. }
  16456. static int Polycode_Texture_set_filteringMode(lua_State *L) {
  16457. luaL_checktype(L, 1, LUA_TUSERDATA);
  16458. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16459. int param = lua_tointeger(L, 2);
  16460. inst->filteringMode = param;
  16461. return 0;
  16462. }
  16463. static int Polycode_Texture_set_createMipmaps(lua_State *L) {
  16464. luaL_checktype(L, 1, LUA_TUSERDATA);
  16465. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16466. bool param = lua_toboolean(L, 2) != 0;
  16467. inst->createMipmaps = param;
  16468. return 0;
  16469. }
  16470. static int Polycode_Texture_set_anisotropy(lua_State *L) {
  16471. luaL_checktype(L, 1, LUA_TUSERDATA);
  16472. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16473. int param = lua_tointeger(L, 2);
  16474. inst->anisotropy = param;
  16475. return 0;
  16476. }
  16477. static int Polycode_Texture_set_framebufferTexture(lua_State *L) {
  16478. luaL_checktype(L, 1, LUA_TUSERDATA);
  16479. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16480. bool param = lua_toboolean(L, 2) != 0;
  16481. inst->framebufferTexture = param;
  16482. return 0;
  16483. }
  16484. static int Polycode_Texture_set_depthTexture(lua_State *L) {
  16485. luaL_checktype(L, 1, LUA_TUSERDATA);
  16486. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16487. bool param = lua_toboolean(L, 2) != 0;
  16488. inst->depthTexture = param;
  16489. return 0;
  16490. }
  16491. static int Polycode_Texture_reloadResource(lua_State *L) {
  16492. luaL_checktype(L, 1, LUA_TUSERDATA);
  16493. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16494. inst->reloadResource();
  16495. return 0;
  16496. }
  16497. static int Polycode_Texture_setImageData(lua_State *L) {
  16498. luaL_checktype(L, 1, LUA_TUSERDATA);
  16499. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16500. luaL_checktype(L, 2, LUA_TUSERDATA);
  16501. Image* data = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  16502. inst->setImageData(data);
  16503. return 0;
  16504. }
  16505. static int Polycode_Texture_getTextureData(lua_State *L) {
  16506. luaL_checktype(L, 1, LUA_TUSERDATA);
  16507. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16508. PolyBase *ptrRetVal = (PolyBase*)inst->getTextureData();
  16509. if(ptrRetVal == NULL) {
  16510. lua_pushnil(L);
  16511. } else {
  16512. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16513. *userdataPtr = ptrRetVal;
  16514. }
  16515. return 1;
  16516. }
  16517. static int Polycode_Texture_getWidth(lua_State *L) {
  16518. luaL_checktype(L, 1, LUA_TUSERDATA);
  16519. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16520. lua_pushinteger(L, inst->getWidth());
  16521. return 1;
  16522. }
  16523. static int Polycode_Texture_getHeight(lua_State *L) {
  16524. luaL_checktype(L, 1, LUA_TUSERDATA);
  16525. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16526. lua_pushinteger(L, inst->getHeight());
  16527. return 1;
  16528. }
  16529. static int Polycode_Texture_setCreateMipmaps(lua_State *L) {
  16530. luaL_checktype(L, 1, LUA_TUSERDATA);
  16531. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16532. luaL_checktype(L, 2, LUA_TBOOLEAN);
  16533. bool createMipmapsIn = lua_toboolean(L, 2) != 0;
  16534. inst->setCreateMipmaps(createMipmapsIn);
  16535. return 0;
  16536. }
  16537. static int Polycode_Texture_getCreateMipmaps(lua_State *L) {
  16538. luaL_checktype(L, 1, LUA_TUSERDATA);
  16539. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  16540. lua_pushboolean(L, inst->getCreateMipmaps());
  16541. return 1;
  16542. }
  16543. static int Polycode_delete_Texture(lua_State *L) {
  16544. luaL_checktype(L, 1, LUA_TUSERDATA);
  16545. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16546. delete ((Texture*) *inst);
  16547. *inst = NULL;
  16548. return 0;
  16549. }
  16550. static int Polycode_Timer(lua_State *L) {
  16551. luaL_checktype(L, 1, LUA_TBOOLEAN);
  16552. bool triggerMode = lua_toboolean(L, 1) != 0;
  16553. luaL_checktype(L, 2, LUA_TNUMBER);
  16554. int msecs = lua_tointeger(L, 2);
  16555. Timer *inst = new Timer(triggerMode, msecs);
  16556. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16557. *userdataPtr = (PolyBase*)inst;
  16558. luaL_getmetatable(L, "Polycode.Timer");
  16559. lua_setmetatable(L, -2);
  16560. return 1;
  16561. }
  16562. static int Polycode_Timer_Pause(lua_State *L) {
  16563. luaL_checktype(L, 1, LUA_TUSERDATA);
  16564. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16565. luaL_checktype(L, 2, LUA_TBOOLEAN);
  16566. bool paused = lua_toboolean(L, 2) != 0;
  16567. inst->Pause(paused);
  16568. return 0;
  16569. }
  16570. static int Polycode_Timer_isPaused(lua_State *L) {
  16571. luaL_checktype(L, 1, LUA_TUSERDATA);
  16572. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16573. lua_pushboolean(L, inst->isPaused());
  16574. return 1;
  16575. }
  16576. static int Polycode_Timer_getTicks(lua_State *L) {
  16577. luaL_checktype(L, 1, LUA_TUSERDATA);
  16578. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16579. lua_pushinteger(L, inst->getTicks());
  16580. return 1;
  16581. }
  16582. static int Polycode_Timer_Update(lua_State *L) {
  16583. luaL_checktype(L, 1, LUA_TUSERDATA);
  16584. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16585. luaL_checktype(L, 2, LUA_TNUMBER);
  16586. int ticks = lua_tointeger(L, 2);
  16587. inst->Update(ticks);
  16588. return 0;
  16589. }
  16590. static int Polycode_Timer_Reset(lua_State *L) {
  16591. luaL_checktype(L, 1, LUA_TUSERDATA);
  16592. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16593. inst->Reset();
  16594. return 0;
  16595. }
  16596. static int Polycode_Timer_hasElapsed(lua_State *L) {
  16597. luaL_checktype(L, 1, LUA_TUSERDATA);
  16598. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16599. lua_pushboolean(L, inst->hasElapsed());
  16600. return 1;
  16601. }
  16602. static int Polycode_Timer_getElapsedf(lua_State *L) {
  16603. luaL_checktype(L, 1, LUA_TUSERDATA);
  16604. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16605. lua_pushnumber(L, inst->getElapsedf());
  16606. return 1;
  16607. }
  16608. static int Polycode_Timer_setTimerInterval(lua_State *L) {
  16609. luaL_checktype(L, 1, LUA_TUSERDATA);
  16610. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  16611. luaL_checktype(L, 2, LUA_TNUMBER);
  16612. int msecs = lua_tointeger(L, 2);
  16613. inst->setTimerInterval(msecs);
  16614. return 0;
  16615. }
  16616. static int Polycode_delete_Timer(lua_State *L) {
  16617. luaL_checktype(L, 1, LUA_TUSERDATA);
  16618. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16619. delete ((Timer*) *inst);
  16620. *inst = NULL;
  16621. return 0;
  16622. }
  16623. static int Polycode_Vector2_get_x(lua_State *L) {
  16624. luaL_checktype(L, 1, LUA_TUSERDATA);
  16625. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16626. lua_pushnumber(L, inst->x);
  16627. return 1;
  16628. }
  16629. static int Polycode_Vector2_get_y(lua_State *L) {
  16630. luaL_checktype(L, 1, LUA_TUSERDATA);
  16631. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16632. lua_pushnumber(L, inst->y);
  16633. return 1;
  16634. }
  16635. static int Polycode_Vector2_set_x(lua_State *L) {
  16636. luaL_checktype(L, 1, LUA_TUSERDATA);
  16637. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16638. Number param = lua_tonumber(L, 2);
  16639. inst->x = param;
  16640. return 0;
  16641. }
  16642. static int Polycode_Vector2_set_y(lua_State *L) {
  16643. luaL_checktype(L, 1, LUA_TUSERDATA);
  16644. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16645. Number param = lua_tonumber(L, 2);
  16646. inst->y = param;
  16647. return 0;
  16648. }
  16649. static int Polycode_Vector2(lua_State *L) {
  16650. luaL_checktype(L, 1, LUA_TNUMBER);
  16651. Number x = lua_tonumber(L, 1);
  16652. luaL_checktype(L, 2, LUA_TNUMBER);
  16653. Number y = lua_tonumber(L, 2);
  16654. Vector2 *inst = new Vector2(x, y);
  16655. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16656. *userdataPtr = (PolyBase*)inst;
  16657. luaL_getmetatable(L, "Polycode.Vector2");
  16658. lua_setmetatable(L, -2);
  16659. return 1;
  16660. }
  16661. static int Polycode_Vector2_set(lua_State *L) {
  16662. luaL_checktype(L, 1, LUA_TUSERDATA);
  16663. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16664. luaL_checktype(L, 2, LUA_TNUMBER);
  16665. Number x = lua_tonumber(L, 2);
  16666. luaL_checktype(L, 3, LUA_TNUMBER);
  16667. Number y = lua_tonumber(L, 3);
  16668. inst->set(x, y);
  16669. return 0;
  16670. }
  16671. static int Polycode_Vector2_distance(lua_State *L) {
  16672. luaL_checktype(L, 1, LUA_TUSERDATA);
  16673. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16674. luaL_checktype(L, 2, LUA_TUSERDATA);
  16675. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  16676. lua_pushnumber(L, inst->distance(vec2));
  16677. return 1;
  16678. }
  16679. static int Polycode_Vector2_length(lua_State *L) {
  16680. luaL_checktype(L, 1, LUA_TUSERDATA);
  16681. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16682. lua_pushnumber(L, inst->length());
  16683. return 1;
  16684. }
  16685. static int Polycode_Vector2_dot(lua_State *L) {
  16686. luaL_checktype(L, 1, LUA_TUSERDATA);
  16687. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16688. luaL_checktype(L, 2, LUA_TUSERDATA);
  16689. Vector2 u = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  16690. lua_pushnumber(L, inst->dot(u));
  16691. return 1;
  16692. }
  16693. static int Polycode_Vector2_crossProduct(lua_State *L) {
  16694. luaL_checktype(L, 1, LUA_TUSERDATA);
  16695. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16696. luaL_checktype(L, 2, LUA_TUSERDATA);
  16697. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  16698. lua_pushnumber(L, inst->crossProduct(vec2));
  16699. return 1;
  16700. }
  16701. static int Polycode_Vector2_angle(lua_State *L) {
  16702. luaL_checktype(L, 1, LUA_TUSERDATA);
  16703. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16704. luaL_checktype(L, 2, LUA_TUSERDATA);
  16705. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  16706. lua_pushnumber(L, inst->angle(vec2));
  16707. return 1;
  16708. }
  16709. static int Polycode_Vector2_Normalize(lua_State *L) {
  16710. luaL_checktype(L, 1, LUA_TUSERDATA);
  16711. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  16712. inst->Normalize();
  16713. return 0;
  16714. }
  16715. static int Polycode_delete_Vector2(lua_State *L) {
  16716. luaL_checktype(L, 1, LUA_TUSERDATA);
  16717. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16718. delete ((Vector2*) *inst);
  16719. *inst = NULL;
  16720. return 0;
  16721. }
  16722. static int Polycode_Vector3_get_x(lua_State *L) {
  16723. luaL_checktype(L, 1, LUA_TUSERDATA);
  16724. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16725. lua_pushnumber(L, inst->x);
  16726. return 1;
  16727. }
  16728. static int Polycode_Vector3_get_y(lua_State *L) {
  16729. luaL_checktype(L, 1, LUA_TUSERDATA);
  16730. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16731. lua_pushnumber(L, inst->y);
  16732. return 1;
  16733. }
  16734. static int Polycode_Vector3_get_z(lua_State *L) {
  16735. luaL_checktype(L, 1, LUA_TUSERDATA);
  16736. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16737. lua_pushnumber(L, inst->z);
  16738. return 1;
  16739. }
  16740. static int Polycode_Vector3_set_x(lua_State *L) {
  16741. luaL_checktype(L, 1, LUA_TUSERDATA);
  16742. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16743. Number param = lua_tonumber(L, 2);
  16744. inst->x = param;
  16745. return 0;
  16746. }
  16747. static int Polycode_Vector3_set_y(lua_State *L) {
  16748. luaL_checktype(L, 1, LUA_TUSERDATA);
  16749. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16750. Number param = lua_tonumber(L, 2);
  16751. inst->y = param;
  16752. return 0;
  16753. }
  16754. static int Polycode_Vector3_set_z(lua_State *L) {
  16755. luaL_checktype(L, 1, LUA_TUSERDATA);
  16756. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16757. Number param = lua_tonumber(L, 2);
  16758. inst->z = param;
  16759. return 0;
  16760. }
  16761. static int Polycode_Vector3(lua_State *L) {
  16762. luaL_checktype(L, 1, LUA_TNUMBER);
  16763. Number x = lua_tonumber(L, 1);
  16764. luaL_checktype(L, 2, LUA_TNUMBER);
  16765. Number y = lua_tonumber(L, 2);
  16766. luaL_checktype(L, 3, LUA_TNUMBER);
  16767. Number z = lua_tonumber(L, 3);
  16768. Vector3 *inst = new Vector3(x, y, z);
  16769. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16770. *userdataPtr = (PolyBase*)inst;
  16771. luaL_getmetatable(L, "Polycode.Vector3");
  16772. lua_setmetatable(L, -2);
  16773. return 1;
  16774. }
  16775. static int Polycode_Vector3_set(lua_State *L) {
  16776. luaL_checktype(L, 1, LUA_TUSERDATA);
  16777. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16778. luaL_checktype(L, 2, LUA_TNUMBER);
  16779. Number x = lua_tonumber(L, 2);
  16780. luaL_checktype(L, 3, LUA_TNUMBER);
  16781. Number y = lua_tonumber(L, 3);
  16782. luaL_checktype(L, 4, LUA_TNUMBER);
  16783. Number z = lua_tonumber(L, 4);
  16784. inst->set(x, y, z);
  16785. return 0;
  16786. }
  16787. static int Polycode_Vector3_distance(lua_State *L) {
  16788. luaL_checktype(L, 1, LUA_TUSERDATA);
  16789. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16790. luaL_checktype(L, 2, LUA_TUSERDATA);
  16791. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16792. lua_pushnumber(L, inst->distance(vec2));
  16793. return 1;
  16794. }
  16795. static int Polycode_Vector3_angleBetween(lua_State *L) {
  16796. luaL_checktype(L, 1, LUA_TUSERDATA);
  16797. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16798. luaL_checktype(L, 2, LUA_TUSERDATA);
  16799. Vector3 dest = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16800. lua_pushnumber(L, inst->angleBetween(dest));
  16801. return 1;
  16802. }
  16803. static int Polycode_Vector3_length(lua_State *L) {
  16804. luaL_checktype(L, 1, LUA_TUSERDATA);
  16805. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16806. lua_pushnumber(L, inst->length());
  16807. return 1;
  16808. }
  16809. static int Polycode_Vector3_lengthSquared(lua_State *L) {
  16810. luaL_checktype(L, 1, LUA_TUSERDATA);
  16811. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16812. lua_pushnumber(L, inst->lengthSquared());
  16813. return 1;
  16814. }
  16815. static int Polycode_Vector3_setLength(lua_State *L) {
  16816. luaL_checktype(L, 1, LUA_TUSERDATA);
  16817. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16818. luaL_checktype(L, 2, LUA_TNUMBER);
  16819. Number newLength = lua_tonumber(L, 2);
  16820. Vector3 *retInst = new Vector3();
  16821. *retInst = inst->setLength(newLength);
  16822. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16823. luaL_getmetatable(L, "Polycode.Vector3");
  16824. lua_setmetatable(L, -2);
  16825. *userdataPtr = (PolyBase*)retInst;
  16826. return 1;
  16827. }
  16828. static int Polycode_Vector3_dot(lua_State *L) {
  16829. luaL_checktype(L, 1, LUA_TUSERDATA);
  16830. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16831. luaL_checktype(L, 2, LUA_TUSERDATA);
  16832. Vector3 u = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16833. lua_pushnumber(L, inst->dot(u));
  16834. return 1;
  16835. }
  16836. static int Polycode_Vector3_crossProduct(lua_State *L) {
  16837. luaL_checktype(L, 1, LUA_TUSERDATA);
  16838. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16839. luaL_checktype(L, 2, LUA_TUSERDATA);
  16840. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16841. Vector3 *retInst = new Vector3();
  16842. *retInst = inst->crossProduct(vec2);
  16843. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16844. luaL_getmetatable(L, "Polycode.Vector3");
  16845. lua_setmetatable(L, -2);
  16846. *userdataPtr = (PolyBase*)retInst;
  16847. return 1;
  16848. }
  16849. static int Polycode_Vector3_Normalize(lua_State *L) {
  16850. luaL_checktype(L, 1, LUA_TUSERDATA);
  16851. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  16852. inst->Normalize();
  16853. return 0;
  16854. }
  16855. static int Polycode_delete_Vector3(lua_State *L) {
  16856. luaL_checktype(L, 1, LUA_TUSERDATA);
  16857. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16858. delete ((Vector3*) *inst);
  16859. *inst = NULL;
  16860. return 0;
  16861. }
  16862. static int Polycode_Vector4_get_x(lua_State *L) {
  16863. luaL_checktype(L, 1, LUA_TUSERDATA);
  16864. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16865. lua_pushnumber(L, inst->x);
  16866. return 1;
  16867. }
  16868. static int Polycode_Vector4_get_y(lua_State *L) {
  16869. luaL_checktype(L, 1, LUA_TUSERDATA);
  16870. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16871. lua_pushnumber(L, inst->y);
  16872. return 1;
  16873. }
  16874. static int Polycode_Vector4_get_z(lua_State *L) {
  16875. luaL_checktype(L, 1, LUA_TUSERDATA);
  16876. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16877. lua_pushnumber(L, inst->z);
  16878. return 1;
  16879. }
  16880. static int Polycode_Vector4_get_w(lua_State *L) {
  16881. luaL_checktype(L, 1, LUA_TUSERDATA);
  16882. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16883. lua_pushnumber(L, inst->w);
  16884. return 1;
  16885. }
  16886. static int Polycode_Vector4_set_x(lua_State *L) {
  16887. luaL_checktype(L, 1, LUA_TUSERDATA);
  16888. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16889. Number param = lua_tonumber(L, 2);
  16890. inst->x = param;
  16891. return 0;
  16892. }
  16893. static int Polycode_Vector4_set_y(lua_State *L) {
  16894. luaL_checktype(L, 1, LUA_TUSERDATA);
  16895. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16896. Number param = lua_tonumber(L, 2);
  16897. inst->y = param;
  16898. return 0;
  16899. }
  16900. static int Polycode_Vector4_set_z(lua_State *L) {
  16901. luaL_checktype(L, 1, LUA_TUSERDATA);
  16902. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16903. Number param = lua_tonumber(L, 2);
  16904. inst->z = param;
  16905. return 0;
  16906. }
  16907. static int Polycode_Vector4_set_w(lua_State *L) {
  16908. luaL_checktype(L, 1, LUA_TUSERDATA);
  16909. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16910. Number param = lua_tonumber(L, 2);
  16911. inst->w = param;
  16912. return 0;
  16913. }
  16914. static int Polycode_Vector4(lua_State *L) {
  16915. luaL_checktype(L, 1, LUA_TNUMBER);
  16916. Number x = lua_tonumber(L, 1);
  16917. luaL_checktype(L, 2, LUA_TNUMBER);
  16918. Number y = lua_tonumber(L, 2);
  16919. luaL_checktype(L, 3, LUA_TNUMBER);
  16920. Number z = lua_tonumber(L, 3);
  16921. luaL_checktype(L, 4, LUA_TNUMBER);
  16922. Number w = lua_tonumber(L, 4);
  16923. Vector4 *inst = new Vector4(x, y, z, w);
  16924. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16925. *userdataPtr = (PolyBase*)inst;
  16926. luaL_getmetatable(L, "Polycode.Vector4");
  16927. lua_setmetatable(L, -2);
  16928. return 1;
  16929. }
  16930. static int Polycode_Vector4_set(lua_State *L) {
  16931. luaL_checktype(L, 1, LUA_TUSERDATA);
  16932. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16933. luaL_checktype(L, 2, LUA_TNUMBER);
  16934. Number x = lua_tonumber(L, 2);
  16935. luaL_checktype(L, 3, LUA_TNUMBER);
  16936. Number y = lua_tonumber(L, 3);
  16937. luaL_checktype(L, 4, LUA_TNUMBER);
  16938. Number z = lua_tonumber(L, 4);
  16939. luaL_checktype(L, 5, LUA_TNUMBER);
  16940. Number w = lua_tonumber(L, 5);
  16941. inst->set(x, y, z, w);
  16942. return 0;
  16943. }
  16944. static int Polycode_Vector4_dot(lua_State *L) {
  16945. luaL_checktype(L, 1, LUA_TUSERDATA);
  16946. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  16947. luaL_checktype(L, 2, LUA_TUSERDATA);
  16948. Vector4 u = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  16949. lua_pushnumber(L, inst->dot(u));
  16950. return 1;
  16951. }
  16952. static int Polycode_delete_Vector4(lua_State *L) {
  16953. luaL_checktype(L, 1, LUA_TUSERDATA);
  16954. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16955. delete ((Vector4*) *inst);
  16956. *inst = NULL;
  16957. return 0;
  16958. }
  16959. }