PolycodeLuaWrappers.h 482 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641
  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/PolyMaterialManager.h"
  33. #include "polycode/core/PolyMatrix4.h"
  34. #include "polycode/core/PolyMesh.h"
  35. #include "polycode/core/PolyObject.h"
  36. #include "polycode/core/PolyOpenGLGraphicsInterface.h"
  37. #include "polycode/core/PolyPAAudioInterface.h"
  38. #include "polycode/core/PolyParticleEmitter.h"
  39. #include "polycode/core/PolyPerlin.h"
  40. #include "polycode/core/PolyPhysFSFileProvider.h"
  41. #include "polycode/core/PolyQuaternion.h"
  42. #include "polycode/core/PolyQuaternionCurve.h"
  43. #include "polycode/core/PolyRay.h"
  44. #include "polycode/core/PolyRectangle.h"
  45. #include "polycode/core/PolyRenderDataArray.h"
  46. #include "polycode/core/PolyRenderer.h"
  47. #include "polycode/core/PolyResource.h"
  48. #include "polycode/core/PolyResourceManager.h"
  49. #include "polycode/core/PolyScene.h"
  50. #include "polycode/core/PolySceneEntityInstance.h"
  51. #include "polycode/core/PolySceneImage.h"
  52. #include "polycode/core/PolySceneLabel.h"
  53. #include "polycode/core/PolySceneLight.h"
  54. #include "polycode/core/PolySceneLine.h"
  55. #include "polycode/core/PolySceneManager.h"
  56. #include "polycode/core/PolySceneMesh.h"
  57. #include "polycode/core/PolyScenePrimitive.h"
  58. #include "polycode/core/PolySceneRenderTexture.h"
  59. #include "polycode/core/PolySceneSound.h"
  60. #include "polycode/core/PolySceneSprite.h"
  61. #include "polycode/core/PolyScript.h"
  62. #include "polycode/core/PolyShader.h"
  63. #include "polycode/core/PolySkeleton.h"
  64. #include "polycode/core/PolySound.h"
  65. #include "polycode/core/PolySoundManager.h"
  66. #include "polycode/core/PolyString.h"
  67. #include "polycode/core/PolyTexture.h"
  68. #include "polycode/core/PolyTimer.h"
  69. #include "polycode/core/PolyTimerManager.h"
  70. #include "polycode/core/PolyVector2.h"
  71. #include "polycode/core/PolyVector3.h"
  72. #include "polycode/core/PolyVector4.h"
  73. using namespace std;
  74. namespace Polycode {
  75. class LuaEventHandler : public EventHandler {
  76. public:
  77. LuaEventHandler() : EventHandler() {}
  78. void handleEvent(Event *e) {
  79. lua_getglobal(L, "__customError");
  80. int errH = lua_gettop(L);
  81. lua_getglobal(L, "__handleEvent");
  82. lua_rawgeti( L, LUA_REGISTRYINDEX, wrapperIndex );
  83. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  84. *userdataPtr = (PolyBase*)e;
  85. lua_pcall(L, 2, 0, errH);
  86. lua_settop(L, 0);
  87. }
  88. int wrapperIndex;
  89. lua_State *L;
  90. };
  91. static int Polycode_BasicFile_read(lua_State *L) {
  92. luaL_checktype(L, 1, LUA_TUSERDATA);
  93. BasicFile *inst = (BasicFile*) *((PolyBase**)lua_touserdata(L, 1));
  94. luaL_checktype(L, 2, LUA_TUSERDATA);
  95. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  96. luaL_checktype(L, 3, LUA_TUSERDATA);
  97. size_t size = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  98. luaL_checktype(L, 4, LUA_TUSERDATA);
  99. size_t count = *(size_t*) *((PolyBase**)lua_touserdata(L, 4));
  100. lua_pushinteger(L, inst->read(ptr, size, count));
  101. return 1;
  102. }
  103. static int Polycode_BasicFile_write(lua_State *L) {
  104. luaL_checktype(L, 1, LUA_TUSERDATA);
  105. BasicFile *inst = (BasicFile*) *((PolyBase**)lua_touserdata(L, 1));
  106. luaL_checktype(L, 2, LUA_TUSERDATA);
  107. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  108. luaL_checktype(L, 3, LUA_TUSERDATA);
  109. size_t size = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  110. luaL_checktype(L, 4, LUA_TUSERDATA);
  111. size_t count = *(size_t*) *((PolyBase**)lua_touserdata(L, 4));
  112. lua_pushinteger(L, inst->write(ptr, size, count));
  113. return 1;
  114. }
  115. static int Polycode_BasicFile_seek(lua_State *L) {
  116. luaL_checktype(L, 1, LUA_TUSERDATA);
  117. BasicFile *inst = (BasicFile*) *((PolyBase**)lua_touserdata(L, 1));
  118. luaL_checktype(L, 2, LUA_TNUMBER);
  119. int offset = lua_tointeger(L, 2);
  120. luaL_checktype(L, 3, LUA_TNUMBER);
  121. int origin = lua_tointeger(L, 3);
  122. lua_pushinteger(L, inst->seek(offset, origin));
  123. return 1;
  124. }
  125. static int Polycode_BasicFile_tell(lua_State *L) {
  126. luaL_checktype(L, 1, LUA_TUSERDATA);
  127. BasicFile *inst = (BasicFile*) *((PolyBase**)lua_touserdata(L, 1));
  128. lua_pushinteger(L, inst->tell());
  129. return 1;
  130. }
  131. static int Polycode_BasicFileProvider(lua_State *L) {
  132. BasicFileProvider *inst = new BasicFileProvider();
  133. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  134. *userdataPtr = (PolyBase*)inst;
  135. luaL_getmetatable(L, "Polycode.BasicFileProvider");
  136. lua_setmetatable(L, -2);
  137. return 1;
  138. }
  139. static int Polycode_BasicFileProvider_openFile(lua_State *L) {
  140. luaL_checktype(L, 1, LUA_TUSERDATA);
  141. BasicFileProvider *inst = (BasicFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  142. luaL_checktype(L, 2, LUA_TSTRING);
  143. String fileName = String(lua_tostring(L, 2));
  144. luaL_checktype(L, 3, LUA_TSTRING);
  145. String opts = String(lua_tostring(L, 3));
  146. PolyBase *ptrRetVal = (PolyBase*)inst->openFile(fileName, opts);
  147. if(ptrRetVal == NULL) {
  148. lua_pushnil(L);
  149. } else {
  150. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  151. *userdataPtr = ptrRetVal;
  152. }
  153. return 1;
  154. }
  155. static int Polycode_BasicFileProvider_closeFile(lua_State *L) {
  156. luaL_checktype(L, 1, LUA_TUSERDATA);
  157. BasicFileProvider *inst = (BasicFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  158. luaL_checktype(L, 2, LUA_TUSERDATA);
  159. CoreFile* file = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  160. inst->closeFile(file);
  161. return 0;
  162. }
  163. static int Polycode_BasicFileProvider_addSource(lua_State *L) {
  164. luaL_checktype(L, 1, LUA_TUSERDATA);
  165. BasicFileProvider *inst = (BasicFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  166. luaL_checktype(L, 2, LUA_TSTRING);
  167. String source = String(lua_tostring(L, 2));
  168. inst->addSource(source);
  169. return 0;
  170. }
  171. static int Polycode_BasicFileProvider_removeSource(lua_State *L) {
  172. luaL_checktype(L, 1, LUA_TUSERDATA);
  173. BasicFileProvider *inst = (BasicFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  174. luaL_checktype(L, 2, LUA_TSTRING);
  175. String source = String(lua_tostring(L, 2));
  176. inst->removeSource(source);
  177. return 0;
  178. }
  179. static int Polycode_BezierCurve(lua_State *L) {
  180. BezierCurve *inst = new BezierCurve();
  181. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  182. *userdataPtr = (PolyBase*)inst;
  183. luaL_getmetatable(L, "Polycode.BezierCurve");
  184. lua_setmetatable(L, -2);
  185. return 1;
  186. }
  187. static int Polycode_BezierCurve_getControlPoint(lua_State *L) {
  188. luaL_checktype(L, 1, LUA_TUSERDATA);
  189. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  190. luaL_checktype(L, 2, LUA_TNUMBER);
  191. int index = lua_tointeger(L, 2);
  192. PolyBase *ptrRetVal = (PolyBase*)inst->getControlPoint(index);
  193. if(ptrRetVal == NULL) {
  194. lua_pushnil(L);
  195. } else {
  196. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  197. *userdataPtr = ptrRetVal;
  198. }
  199. return 1;
  200. }
  201. static int Polycode_BezierCurve_getNumControlPoints(lua_State *L) {
  202. luaL_checktype(L, 1, LUA_TUSERDATA);
  203. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  204. lua_pushinteger(L, inst->getNumControlPoints());
  205. return 1;
  206. }
  207. static int Polycode_BezierCurve_addControlPoint(lua_State *L) {
  208. luaL_checktype(L, 1, LUA_TUSERDATA);
  209. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  210. luaL_checktype(L, 2, LUA_TNUMBER);
  211. Number p1x = lua_tonumber(L, 2);
  212. luaL_checktype(L, 3, LUA_TNUMBER);
  213. Number p1y = lua_tonumber(L, 3);
  214. luaL_checktype(L, 4, LUA_TNUMBER);
  215. Number p1z = lua_tonumber(L, 4);
  216. luaL_checktype(L, 5, LUA_TNUMBER);
  217. Number p2x = lua_tonumber(L, 5);
  218. luaL_checktype(L, 6, LUA_TNUMBER);
  219. Number p2y = lua_tonumber(L, 6);
  220. luaL_checktype(L, 7, LUA_TNUMBER);
  221. Number p2z = lua_tonumber(L, 7);
  222. luaL_checktype(L, 8, LUA_TNUMBER);
  223. Number p3x = lua_tonumber(L, 8);
  224. luaL_checktype(L, 9, LUA_TNUMBER);
  225. Number p3y = lua_tonumber(L, 9);
  226. luaL_checktype(L, 10, LUA_TNUMBER);
  227. Number p3z = lua_tonumber(L, 10);
  228. inst->addControlPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  229. return 0;
  230. }
  231. static int Polycode_BezierCurve_addControlPoint3dWithHandles(lua_State *L) {
  232. luaL_checktype(L, 1, LUA_TUSERDATA);
  233. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  234. luaL_checktype(L, 2, LUA_TNUMBER);
  235. Number p1x = lua_tonumber(L, 2);
  236. luaL_checktype(L, 3, LUA_TNUMBER);
  237. Number p1y = lua_tonumber(L, 3);
  238. luaL_checktype(L, 4, LUA_TNUMBER);
  239. Number p1z = lua_tonumber(L, 4);
  240. luaL_checktype(L, 5, LUA_TNUMBER);
  241. Number p2x = lua_tonumber(L, 5);
  242. luaL_checktype(L, 6, LUA_TNUMBER);
  243. Number p2y = lua_tonumber(L, 6);
  244. luaL_checktype(L, 7, LUA_TNUMBER);
  245. Number p2z = lua_tonumber(L, 7);
  246. luaL_checktype(L, 8, LUA_TNUMBER);
  247. Number p3x = lua_tonumber(L, 8);
  248. luaL_checktype(L, 9, LUA_TNUMBER);
  249. Number p3y = lua_tonumber(L, 9);
  250. luaL_checktype(L, 10, LUA_TNUMBER);
  251. Number p3z = lua_tonumber(L, 10);
  252. inst->addControlPoint3dWithHandles(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  253. return 0;
  254. }
  255. static int Polycode_BezierCurve_addControlPoint3d(lua_State *L) {
  256. luaL_checktype(L, 1, LUA_TUSERDATA);
  257. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  258. luaL_checktype(L, 2, LUA_TNUMBER);
  259. Number x = lua_tonumber(L, 2);
  260. luaL_checktype(L, 3, LUA_TNUMBER);
  261. Number y = lua_tonumber(L, 3);
  262. luaL_checktype(L, 4, LUA_TNUMBER);
  263. Number z = lua_tonumber(L, 4);
  264. inst->addControlPoint3d(x, y, z);
  265. return 0;
  266. }
  267. static int Polycode_BezierCurve_addControlPoint2dWithHandles(lua_State *L) {
  268. luaL_checktype(L, 1, LUA_TUSERDATA);
  269. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  270. luaL_checktype(L, 2, LUA_TNUMBER);
  271. Number p1x = lua_tonumber(L, 2);
  272. luaL_checktype(L, 3, LUA_TNUMBER);
  273. Number p1y = lua_tonumber(L, 3);
  274. luaL_checktype(L, 4, LUA_TNUMBER);
  275. Number p2x = lua_tonumber(L, 4);
  276. luaL_checktype(L, 5, LUA_TNUMBER);
  277. Number p2y = lua_tonumber(L, 5);
  278. luaL_checktype(L, 6, LUA_TNUMBER);
  279. Number p3x = lua_tonumber(L, 6);
  280. luaL_checktype(L, 7, LUA_TNUMBER);
  281. Number p3y = lua_tonumber(L, 7);
  282. inst->addControlPoint2dWithHandles(p1x, p1y, p2x, p2y, p3x, p3y);
  283. return 0;
  284. }
  285. static int Polycode_BezierCurve_addControlPoint2d(lua_State *L) {
  286. luaL_checktype(L, 1, LUA_TUSERDATA);
  287. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  288. luaL_checktype(L, 2, LUA_TNUMBER);
  289. Number x = lua_tonumber(L, 2);
  290. luaL_checktype(L, 3, LUA_TNUMBER);
  291. Number y = lua_tonumber(L, 3);
  292. inst->addControlPoint2d(x, y);
  293. return 0;
  294. }
  295. static int Polycode_BezierCurve_getPointAt(lua_State *L) {
  296. luaL_checktype(L, 1, LUA_TUSERDATA);
  297. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  298. luaL_checktype(L, 2, LUA_TNUMBER);
  299. Number a = lua_tonumber(L, 2);
  300. Vector3 *retInst = new Vector3();
  301. *retInst = inst->getPointAt(a);
  302. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  303. luaL_getmetatable(L, "Polycode.Vector3");
  304. lua_setmetatable(L, -2);
  305. *userdataPtr = (PolyBase*)retInst;
  306. return 1;
  307. }
  308. static int Polycode_BezierCurve_getPointBetween(lua_State *L) {
  309. luaL_checktype(L, 1, LUA_TUSERDATA);
  310. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  311. luaL_checktype(L, 2, LUA_TNUMBER);
  312. Number a = lua_tonumber(L, 2);
  313. luaL_checktype(L, 3, LUA_TUSERDATA);
  314. BezierPoint* bp1 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 3));
  315. luaL_checktype(L, 4, LUA_TUSERDATA);
  316. BezierPoint* bp2 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 4));
  317. Vector3 *retInst = new Vector3();
  318. *retInst = inst->getPointBetween(a, bp1, bp2);
  319. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  320. luaL_getmetatable(L, "Polycode.Vector3");
  321. lua_setmetatable(L, -2);
  322. *userdataPtr = (PolyBase*)retInst;
  323. return 1;
  324. }
  325. static int Polycode_BezierCurve_clearControlPoints(lua_State *L) {
  326. luaL_checktype(L, 1, LUA_TUSERDATA);
  327. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  328. inst->clearControlPoints();
  329. return 0;
  330. }
  331. static int Polycode_BezierCurve_getYValueAtX(lua_State *L) {
  332. luaL_checktype(L, 1, LUA_TUSERDATA);
  333. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  334. luaL_checktype(L, 2, LUA_TNUMBER);
  335. Number x = lua_tonumber(L, 2);
  336. lua_pushnumber(L, inst->getYValueAtX(x));
  337. return 1;
  338. }
  339. static int Polycode_BezierCurve_getTValueAtX(lua_State *L) {
  340. luaL_checktype(L, 1, LUA_TUSERDATA);
  341. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  342. luaL_checktype(L, 2, LUA_TNUMBER);
  343. Number x = lua_tonumber(L, 2);
  344. lua_pushnumber(L, inst->getTValueAtX(x));
  345. return 1;
  346. }
  347. static int Polycode_BezierCurve_removePoint(lua_State *L) {
  348. luaL_checktype(L, 1, LUA_TUSERDATA);
  349. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  350. luaL_checktype(L, 2, LUA_TUSERDATA);
  351. BezierPoint* point = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 2));
  352. inst->removePoint(point);
  353. return 0;
  354. }
  355. static int Polycode_BezierCurve_setHeightCacheResolution(lua_State *L) {
  356. luaL_checktype(L, 1, LUA_TUSERDATA);
  357. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  358. luaL_checktype(L, 2, LUA_TNUMBER);
  359. Number resolution = lua_tonumber(L, 2);
  360. inst->setHeightCacheResolution(resolution);
  361. return 0;
  362. }
  363. static int Polycode_BezierCurve_rebuildHeightCache(lua_State *L) {
  364. luaL_checktype(L, 1, LUA_TUSERDATA);
  365. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  366. inst->rebuildHeightCache();
  367. return 0;
  368. }
  369. static int Polycode_BezierCurve_recalculateDistances(lua_State *L) {
  370. luaL_checktype(L, 1, LUA_TUSERDATA);
  371. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  372. inst->recalculateDistances();
  373. return 0;
  374. }
  375. static int Polycode_BezierPoint(lua_State *L) {
  376. luaL_checktype(L, 1, LUA_TNUMBER);
  377. Number p1x = lua_tonumber(L, 1);
  378. luaL_checktype(L, 2, LUA_TNUMBER);
  379. Number p1y = lua_tonumber(L, 2);
  380. luaL_checktype(L, 3, LUA_TNUMBER);
  381. Number p1z = lua_tonumber(L, 3);
  382. luaL_checktype(L, 4, LUA_TNUMBER);
  383. Number p2x = lua_tonumber(L, 4);
  384. luaL_checktype(L, 5, LUA_TNUMBER);
  385. Number p2y = lua_tonumber(L, 5);
  386. luaL_checktype(L, 6, LUA_TNUMBER);
  387. Number p2z = lua_tonumber(L, 6);
  388. luaL_checktype(L, 7, LUA_TNUMBER);
  389. Number p3x = lua_tonumber(L, 7);
  390. luaL_checktype(L, 8, LUA_TNUMBER);
  391. Number p3y = lua_tonumber(L, 8);
  392. luaL_checktype(L, 9, LUA_TNUMBER);
  393. Number p3z = lua_tonumber(L, 9);
  394. BezierPoint *inst = new BezierPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  395. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  396. *userdataPtr = (PolyBase*)inst;
  397. luaL_getmetatable(L, "Polycode.BezierPoint");
  398. lua_setmetatable(L, -2);
  399. return 1;
  400. }
  401. static int Polycode_Bone(lua_State *L) {
  402. luaL_checktype(L, 1, LUA_TSTRING);
  403. String boneName = String(lua_tostring(L, 1));
  404. Bone *inst = new Bone(boneName);
  405. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  406. *userdataPtr = (PolyBase*)inst;
  407. luaL_getmetatable(L, "Polycode.Bone");
  408. lua_setmetatable(L, -2);
  409. return 1;
  410. }
  411. static int Polycode_Bone_getName(lua_State *L) {
  412. luaL_checktype(L, 1, LUA_TUSERDATA);
  413. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  414. lua_pushstring(L, inst->getName().c_str());
  415. return 1;
  416. }
  417. static int Polycode_Bone_setParentBone(lua_State *L) {
  418. luaL_checktype(L, 1, LUA_TUSERDATA);
  419. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  420. luaL_checktype(L, 2, LUA_TUSERDATA);
  421. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  422. inst->setParentBone(bone);
  423. return 0;
  424. }
  425. static int Polycode_Bone_addChildBone(lua_State *L) {
  426. luaL_checktype(L, 1, LUA_TUSERDATA);
  427. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  428. luaL_checktype(L, 2, LUA_TUSERDATA);
  429. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  430. inst->addChildBone(bone);
  431. return 0;
  432. }
  433. static int Polycode_Bone_getParentBone(lua_State *L) {
  434. luaL_checktype(L, 1, LUA_TUSERDATA);
  435. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  436. PolyBase *ptrRetVal = (PolyBase*)inst->getParentBone();
  437. if(ptrRetVal == NULL) {
  438. lua_pushnil(L);
  439. } else {
  440. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  441. *userdataPtr = ptrRetVal;
  442. }
  443. return 1;
  444. }
  445. static int Polycode_Bone_getNumChildBones(lua_State *L) {
  446. luaL_checktype(L, 1, LUA_TUSERDATA);
  447. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  448. lua_pushinteger(L, inst->getNumChildBones());
  449. return 1;
  450. }
  451. static int Polycode_Bone_getChildBone(lua_State *L) {
  452. luaL_checktype(L, 1, LUA_TUSERDATA);
  453. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  454. luaL_checktype(L, 2, LUA_TNUMBER);
  455. int index = lua_tointeger(L, 2);
  456. PolyBase *ptrRetVal = (PolyBase*)inst->getChildBone(index);
  457. if(ptrRetVal == NULL) {
  458. lua_pushnil(L);
  459. } else {
  460. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  461. *userdataPtr = ptrRetVal;
  462. }
  463. return 1;
  464. }
  465. static int Polycode_Bone_getBoneMatrix(lua_State *L) {
  466. luaL_checktype(L, 1, LUA_TUSERDATA);
  467. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  468. Matrix4 *retInst = new Matrix4();
  469. *retInst = inst->getBoneMatrix();
  470. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  471. luaL_getmetatable(L, "Polycode.Matrix4");
  472. lua_setmetatable(L, -2);
  473. *userdataPtr = (PolyBase*)retInst;
  474. return 1;
  475. }
  476. static int Polycode_Bone_setBoneMatrix(lua_State *L) {
  477. luaL_checktype(L, 1, LUA_TUSERDATA);
  478. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  479. luaL_checktype(L, 2, LUA_TUSERDATA);
  480. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  481. inst->setBoneMatrix(matrix);
  482. return 0;
  483. }
  484. static int Polycode_Bone_getRestMatrix(lua_State *L) {
  485. luaL_checktype(L, 1, LUA_TUSERDATA);
  486. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  487. Matrix4 *retInst = new Matrix4();
  488. *retInst = inst->getRestMatrix();
  489. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  490. luaL_getmetatable(L, "Polycode.Matrix4");
  491. lua_setmetatable(L, -2);
  492. *userdataPtr = (PolyBase*)retInst;
  493. return 1;
  494. }
  495. static int Polycode_Bone_getFullRestMatrix(lua_State *L) {
  496. luaL_checktype(L, 1, LUA_TUSERDATA);
  497. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  498. Matrix4 *retInst = new Matrix4();
  499. *retInst = inst->getFullRestMatrix();
  500. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  501. luaL_getmetatable(L, "Polycode.Matrix4");
  502. lua_setmetatable(L, -2);
  503. *userdataPtr = (PolyBase*)retInst;
  504. return 1;
  505. }
  506. static int Polycode_Bone_getParentRestMatrix(lua_State *L) {
  507. luaL_checktype(L, 1, LUA_TUSERDATA);
  508. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  509. Matrix4 *retInst = new Matrix4();
  510. *retInst = inst->getParentRestMatrix();
  511. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  512. luaL_getmetatable(L, "Polycode.Matrix4");
  513. lua_setmetatable(L, -2);
  514. *userdataPtr = (PolyBase*)retInst;
  515. return 1;
  516. }
  517. static int Polycode_Bone_getFinalMatrix(lua_State *L) {
  518. luaL_checktype(L, 1, LUA_TUSERDATA);
  519. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  520. Matrix4 *retInst = new Matrix4();
  521. *retInst = inst->getFinalMatrix();
  522. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  523. luaL_getmetatable(L, "Polycode.Matrix4");
  524. lua_setmetatable(L, -2);
  525. *userdataPtr = (PolyBase*)retInst;
  526. return 1;
  527. }
  528. static int Polycode_Bone_setRestMatrix(lua_State *L) {
  529. luaL_checktype(L, 1, LUA_TUSERDATA);
  530. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  531. luaL_checktype(L, 2, LUA_TUSERDATA);
  532. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  533. inst->setRestMatrix(matrix);
  534. return 0;
  535. }
  536. static int Polycode_Bone_setBaseMatrix(lua_State *L) {
  537. luaL_checktype(L, 1, LUA_TUSERDATA);
  538. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  539. luaL_checktype(L, 2, LUA_TUSERDATA);
  540. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  541. inst->setBaseMatrix(matrix);
  542. return 0;
  543. }
  544. static int Polycode_Bone_getBaseMatrix(lua_State *L) {
  545. luaL_checktype(L, 1, LUA_TUSERDATA);
  546. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  547. Matrix4 *retInst = new Matrix4();
  548. *retInst = inst->getBaseMatrix();
  549. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  550. luaL_getmetatable(L, "Polycode.Matrix4");
  551. lua_setmetatable(L, -2);
  552. *userdataPtr = (PolyBase*)retInst;
  553. return 1;
  554. }
  555. static int Polycode_Bone_getFullBaseMatrix(lua_State *L) {
  556. luaL_checktype(L, 1, LUA_TUSERDATA);
  557. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  558. Matrix4 *retInst = new Matrix4();
  559. *retInst = inst->getFullBaseMatrix();
  560. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  561. luaL_getmetatable(L, "Polycode.Matrix4");
  562. lua_setmetatable(L, -2);
  563. *userdataPtr = (PolyBase*)retInst;
  564. return 1;
  565. }
  566. static int Polycode_Bone_rebuildFinalMatrix(lua_State *L) {
  567. luaL_checktype(L, 1, LUA_TUSERDATA);
  568. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  569. inst->rebuildFinalMatrix();
  570. return 0;
  571. }
  572. static int Polycode_Bone_buildFinalMatrix(lua_State *L) {
  573. luaL_checktype(L, 1, LUA_TUSERDATA);
  574. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  575. Matrix4 *retInst = new Matrix4();
  576. *retInst = inst->buildFinalMatrix();
  577. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  578. luaL_getmetatable(L, "Polycode.Matrix4");
  579. lua_setmetatable(L, -2);
  580. *userdataPtr = (PolyBase*)retInst;
  581. return 1;
  582. }
  583. static int Polycode_Bone_intializeBone(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_TUSERDATA);
  587. Vector3 basePosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  588. luaL_checktype(L, 3, LUA_TUSERDATA);
  589. Vector3 baseScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  590. luaL_checktype(L, 4, LUA_TUSERDATA);
  591. Quaternion baseRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  592. luaL_checktype(L, 5, LUA_TUSERDATA);
  593. Vector3 restPosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 5));
  594. luaL_checktype(L, 6, LUA_TUSERDATA);
  595. Vector3 restScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 6));
  596. luaL_checktype(L, 7, LUA_TUSERDATA);
  597. Quaternion restRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 7));
  598. inst->intializeBone(basePosition, baseScale, baseRotation, restPosition, restScale, restRotation);
  599. return 0;
  600. }
  601. static int Polycode_Camera(lua_State *L) {
  602. luaL_checktype(L, 1, LUA_TUSERDATA);
  603. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  604. Camera *inst = new Camera(parentScene);
  605. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  606. *userdataPtr = (PolyBase*)inst;
  607. luaL_getmetatable(L, "Polycode.Camera");
  608. lua_setmetatable(L, -2);
  609. return 1;
  610. }
  611. static int Polycode_Camera_buildFrustumPlanes(lua_State *L) {
  612. luaL_checktype(L, 1, LUA_TUSERDATA);
  613. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  614. inst->buildFrustumPlanes();
  615. return 0;
  616. }
  617. static int Polycode_Camera_isSphereInFrustum(lua_State *L) {
  618. luaL_checktype(L, 1, LUA_TUSERDATA);
  619. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  620. luaL_checktype(L, 2, LUA_TUSERDATA);
  621. Vector3 pos = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  622. luaL_checktype(L, 3, LUA_TNUMBER);
  623. Number fRadius = lua_tonumber(L, 3);
  624. lua_pushboolean(L, inst->isSphereInFrustum(pos, fRadius));
  625. return 1;
  626. }
  627. static int Polycode_Camera_isAABBInFrustum(lua_State *L) {
  628. luaL_checktype(L, 1, LUA_TUSERDATA);
  629. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  630. luaL_checktype(L, 2, LUA_TUSERDATA);
  631. AABB aabb = *(AABB*) *((PolyBase**)lua_touserdata(L, 2));
  632. lua_pushboolean(L, inst->isAABBInFrustum(aabb));
  633. return 1;
  634. }
  635. static int Polycode_Camera_setOrthoMode(lua_State *L) {
  636. luaL_checktype(L, 1, LUA_TUSERDATA);
  637. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  638. luaL_checktype(L, 2, LUA_TBOOLEAN);
  639. bool mode = lua_toboolean(L, 2) != 0;
  640. inst->setOrthoMode(mode);
  641. return 0;
  642. }
  643. static int Polycode_Camera_setOrthoSize(lua_State *L) {
  644. luaL_checktype(L, 1, LUA_TUSERDATA);
  645. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  646. luaL_checktype(L, 2, LUA_TNUMBER);
  647. Number orthoSizeX = lua_tonumber(L, 2);
  648. luaL_checktype(L, 3, LUA_TNUMBER);
  649. Number orthoSizeY = lua_tonumber(L, 3);
  650. inst->setOrthoSize(orthoSizeX, orthoSizeY);
  651. return 0;
  652. }
  653. static int Polycode_Camera_setFrustumMode(lua_State *L) {
  654. luaL_checktype(L, 1, LUA_TUSERDATA);
  655. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  656. luaL_checktype(L, 2, LUA_TNUMBER);
  657. Number left = lua_tonumber(L, 2);
  658. luaL_checktype(L, 3, LUA_TNUMBER);
  659. Number right = lua_tonumber(L, 3);
  660. luaL_checktype(L, 4, LUA_TNUMBER);
  661. Number bottom = lua_tonumber(L, 4);
  662. luaL_checktype(L, 5, LUA_TNUMBER);
  663. Number top = lua_tonumber(L, 5);
  664. luaL_checktype(L, 6, LUA_TNUMBER);
  665. Number front = lua_tonumber(L, 6);
  666. luaL_checktype(L, 7, LUA_TNUMBER);
  667. Number back = lua_tonumber(L, 7);
  668. inst->setFrustumMode(left, right, bottom, top, front, back);
  669. return 0;
  670. }
  671. static int Polycode_Camera_getOrthoMode(lua_State *L) {
  672. luaL_checktype(L, 1, LUA_TUSERDATA);
  673. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  674. lua_pushboolean(L, inst->getOrthoMode());
  675. return 1;
  676. }
  677. static int Polycode_Camera_getOrthoSizeX(lua_State *L) {
  678. luaL_checktype(L, 1, LUA_TUSERDATA);
  679. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  680. lua_pushnumber(L, inst->getOrthoSizeX());
  681. return 1;
  682. }
  683. static int Polycode_Camera_getOrthoSizeY(lua_State *L) {
  684. luaL_checktype(L, 1, LUA_TUSERDATA);
  685. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  686. lua_pushnumber(L, inst->getOrthoSizeY());
  687. return 1;
  688. }
  689. static int Polycode_Camera_setFOV(lua_State *L) {
  690. luaL_checktype(L, 1, LUA_TUSERDATA);
  691. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  692. luaL_checktype(L, 2, LUA_TNUMBER);
  693. Number fov = lua_tonumber(L, 2);
  694. inst->setFOV(fov);
  695. return 0;
  696. }
  697. static int Polycode_Camera_getFOV(lua_State *L) {
  698. luaL_checktype(L, 1, LUA_TUSERDATA);
  699. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  700. lua_pushnumber(L, inst->getFOV());
  701. return 1;
  702. }
  703. static int Polycode_Camera_setClippingPlanes(lua_State *L) {
  704. luaL_checktype(L, 1, LUA_TUSERDATA);
  705. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  706. luaL_checktype(L, 2, LUA_TNUMBER);
  707. Number nearClipPlane = lua_tonumber(L, 2);
  708. luaL_checktype(L, 3, LUA_TNUMBER);
  709. Number farClipPlane = lua_tonumber(L, 3);
  710. inst->setClippingPlanes(nearClipPlane, farClipPlane);
  711. return 0;
  712. }
  713. static int Polycode_Camera_getNearClippingPlane(lua_State *L) {
  714. luaL_checktype(L, 1, LUA_TUSERDATA);
  715. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  716. lua_pushnumber(L, inst->getNearClippingPlane());
  717. return 1;
  718. }
  719. static int Polycode_Camera_getFarClippingPlane(lua_State *L) {
  720. luaL_checktype(L, 1, LUA_TUSERDATA);
  721. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  722. lua_pushnumber(L, inst->getFarClippingPlane());
  723. return 1;
  724. }
  725. static int Polycode_Camera_setParentScene(lua_State *L) {
  726. luaL_checktype(L, 1, LUA_TUSERDATA);
  727. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  728. luaL_checktype(L, 2, LUA_TUSERDATA);
  729. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  730. inst->setParentScene(parentScene);
  731. return 0;
  732. }
  733. static int Polycode_Camera_getParentScene(lua_State *L) {
  734. luaL_checktype(L, 1, LUA_TUSERDATA);
  735. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  736. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  737. if(ptrRetVal == NULL) {
  738. lua_pushnil(L);
  739. } else {
  740. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  741. *userdataPtr = ptrRetVal;
  742. }
  743. return 1;
  744. }
  745. static int Polycode_Camera_createProjectionMatrix(lua_State *L) {
  746. luaL_checktype(L, 1, LUA_TUSERDATA);
  747. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  748. Matrix4 *retInst = new Matrix4();
  749. *retInst = inst->createProjectionMatrix();
  750. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  751. luaL_getmetatable(L, "Polycode.Matrix4");
  752. lua_setmetatable(L, -2);
  753. *userdataPtr = (PolyBase*)retInst;
  754. return 1;
  755. }
  756. static int Polycode_Camera_hasFilterShader(lua_State *L) {
  757. luaL_checktype(L, 1, LUA_TUSERDATA);
  758. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  759. lua_pushboolean(L, inst->hasFilterShader());
  760. return 1;
  761. }
  762. static int Polycode_Camera_drawFilter(lua_State *L) {
  763. luaL_checktype(L, 1, LUA_TUSERDATA);
  764. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  765. luaL_checktype(L, 2, LUA_TUSERDATA);
  766. RenderBuffer* targetBuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  767. inst->drawFilter(targetBuffer);
  768. return 0;
  769. }
  770. static int Polycode_Camera_setPostFilter(lua_State *L) {
  771. luaL_checktype(L, 1, LUA_TUSERDATA);
  772. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  773. luaL_checktype(L, 2, LUA_TUSERDATA);
  774. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  775. inst->setPostFilter(material);
  776. return 0;
  777. }
  778. static int Polycode_Camera_setPostFilterByName(lua_State *L) {
  779. luaL_checktype(L, 1, LUA_TUSERDATA);
  780. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  781. luaL_checktype(L, 2, LUA_TSTRING);
  782. String shaderName = String(lua_tostring(L, 2));
  783. inst->setPostFilterByName(shaderName);
  784. return 0;
  785. }
  786. static int Polycode_Camera_removePostFilter(lua_State *L) {
  787. luaL_checktype(L, 1, LUA_TUSERDATA);
  788. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  789. inst->removePostFilter();
  790. return 0;
  791. }
  792. static int Polycode_Camera_getScreenShaderMaterial(lua_State *L) {
  793. luaL_checktype(L, 1, LUA_TUSERDATA);
  794. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  795. PolyBase *ptrRetVal = (PolyBase*)inst->getScreenShaderMaterial();
  796. if(ptrRetVal == NULL) {
  797. lua_pushnil(L);
  798. } else {
  799. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  800. *userdataPtr = ptrRetVal;
  801. }
  802. return 1;
  803. }
  804. static int Polycode_Camera_Clone(lua_State *L) {
  805. luaL_checktype(L, 1, LUA_TUSERDATA);
  806. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  807. luaL_checktype(L, 2, LUA_TBOOLEAN);
  808. bool deepClone = lua_toboolean(L, 2) != 0;
  809. luaL_checktype(L, 3, LUA_TBOOLEAN);
  810. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  811. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  812. if(ptrRetVal == NULL) {
  813. lua_pushnil(L);
  814. } else {
  815. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  816. *userdataPtr = ptrRetVal;
  817. }
  818. return 1;
  819. }
  820. static int Polycode_Camera_applyClone(lua_State *L) {
  821. luaL_checktype(L, 1, LUA_TUSERDATA);
  822. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  823. luaL_checktype(L, 2, LUA_TUSERDATA);
  824. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  825. luaL_checktype(L, 3, LUA_TBOOLEAN);
  826. bool deepClone = lua_toboolean(L, 3) != 0;
  827. luaL_checktype(L, 4, LUA_TBOOLEAN);
  828. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  829. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  830. return 0;
  831. }
  832. static int Polycode_Camera_getProjectionMatrix(lua_State *L) {
  833. luaL_checktype(L, 1, LUA_TUSERDATA);
  834. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  835. Matrix4 *retInst = new Matrix4();
  836. *retInst = inst->getProjectionMatrix();
  837. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  838. luaL_getmetatable(L, "Polycode.Matrix4");
  839. lua_setmetatable(L, -2);
  840. *userdataPtr = (PolyBase*)retInst;
  841. return 1;
  842. }
  843. static int Polycode_Camera_setCustomProjectionMatrix(lua_State *L) {
  844. luaL_checktype(L, 1, LUA_TUSERDATA);
  845. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  846. luaL_checktype(L, 2, LUA_TUSERDATA);
  847. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  848. inst->setCustomProjectionMatrix(matrix);
  849. return 0;
  850. }
  851. static int Polycode_Camera_getViewport(lua_State *L) {
  852. luaL_checktype(L, 1, LUA_TUSERDATA);
  853. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  854. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  855. *retInst = inst->getViewport();
  856. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  857. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  858. lua_setmetatable(L, -2);
  859. *userdataPtr = (PolyBase*)retInst;
  860. return 1;
  861. }
  862. static int Polycode_Camera_setViewport(lua_State *L) {
  863. luaL_checktype(L, 1, LUA_TUSERDATA);
  864. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  865. luaL_checktype(L, 2, LUA_TUSERDATA);
  866. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  867. inst->setViewport(viewport);
  868. return 0;
  869. }
  870. static int Polycode_Camera_setOrthoSizeMode(lua_State *L) {
  871. luaL_checktype(L, 1, LUA_TUSERDATA);
  872. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  873. luaL_checktype(L, 2, LUA_TNUMBER);
  874. int orthoSizeMode = lua_tointeger(L, 2);
  875. inst->setOrthoSizeMode(orthoSizeMode);
  876. return 0;
  877. }
  878. static int Polycode_Camera_getOrthoSizeMode(lua_State *L) {
  879. luaL_checktype(L, 1, LUA_TUSERDATA);
  880. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  881. lua_pushinteger(L, inst->getOrthoSizeMode());
  882. return 1;
  883. }
  884. static int Polycode_Camera_setProjectionMode(lua_State *L) {
  885. luaL_checktype(L, 1, LUA_TUSERDATA);
  886. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  887. luaL_checktype(L, 2, LUA_TNUMBER);
  888. int mode = lua_tointeger(L, 2);
  889. inst->setProjectionMode(mode);
  890. return 0;
  891. }
  892. static int Polycode_Camera_getProjectionMode(lua_State *L) {
  893. luaL_checktype(L, 1, LUA_TUSERDATA);
  894. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  895. lua_pushinteger(L, inst->getProjectionMode());
  896. return 1;
  897. }
  898. static int Polycode_Camera_projectRayFrom2DCoordinate(lua_State *L) {
  899. luaL_checktype(L, 1, LUA_TUSERDATA);
  900. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  901. luaL_checktype(L, 2, LUA_TUSERDATA);
  902. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  903. luaL_checktype(L, 3, LUA_TUSERDATA);
  904. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  905. Vector3 *retInst = new Vector3();
  906. *retInst = inst->projectRayFrom2DCoordinate(coordinate, viewport);
  907. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  908. luaL_getmetatable(L, "Polycode.Vector3");
  909. lua_setmetatable(L, -2);
  910. *userdataPtr = (PolyBase*)retInst;
  911. return 1;
  912. }
  913. static int Polycode_Camera_renderFullScreenQuad(lua_State *L) {
  914. luaL_checktype(L, 1, LUA_TUSERDATA);
  915. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  916. luaL_checktype(L, 2, LUA_TUSERDATA);
  917. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  918. luaL_checktype(L, 3, LUA_TNUMBER);
  919. int shaderPass = lua_tointeger(L, 3);
  920. inst->renderFullScreenQuad(drawBuffer, shaderPass);
  921. return 0;
  922. }
  923. static int Polycode_Camera_getShaderPass(lua_State *L) {
  924. luaL_checktype(L, 1, LUA_TUSERDATA);
  925. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  926. luaL_checktype(L, 2, LUA_TNUMBER);
  927. int index = lua_tointeger(L, 2);
  928. ShaderPass *retInst = new ShaderPass();
  929. *retInst = inst->getShaderPass(index);
  930. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  931. luaL_getmetatable(L, "Polycode.ShaderPass");
  932. lua_setmetatable(L, -2);
  933. *userdataPtr = (PolyBase*)retInst;
  934. return 1;
  935. }
  936. static int Polycode_Camera_getNumShaderPasses(lua_State *L) {
  937. luaL_checktype(L, 1, LUA_TUSERDATA);
  938. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  939. lua_pushinteger(L, inst->getNumShaderPasses());
  940. return 1;
  941. }
  942. static int Polycode_Color(lua_State *L) {
  943. luaL_checktype(L, 1, LUA_TNUMBER);
  944. Number r = lua_tonumber(L, 1);
  945. luaL_checktype(L, 2, LUA_TNUMBER);
  946. Number g = lua_tonumber(L, 2);
  947. luaL_checktype(L, 3, LUA_TNUMBER);
  948. Number b = lua_tonumber(L, 3);
  949. luaL_checktype(L, 4, LUA_TNUMBER);
  950. Number a = lua_tonumber(L, 4);
  951. Color *inst = new Color(r, g, b, a);
  952. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  953. *userdataPtr = (PolyBase*)inst;
  954. luaL_getmetatable(L, "Polycode.Color");
  955. lua_setmetatable(L, -2);
  956. return 1;
  957. }
  958. static int Polycode_Color_ColorWithInts(lua_State *L) {
  959. luaL_checktype(L, 1, LUA_TUSERDATA);
  960. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  961. luaL_checktype(L, 2, LUA_TNUMBER);
  962. int r = lua_tointeger(L, 2);
  963. luaL_checktype(L, 3, LUA_TNUMBER);
  964. int g = lua_tointeger(L, 3);
  965. luaL_checktype(L, 4, LUA_TNUMBER);
  966. int b = lua_tointeger(L, 4);
  967. luaL_checktype(L, 5, LUA_TNUMBER);
  968. int a = lua_tointeger(L, 5);
  969. Color *retInst = new Color();
  970. *retInst = inst->ColorWithInts(r, g, b, a);
  971. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  972. luaL_getmetatable(L, "Polycode.Color");
  973. lua_setmetatable(L, -2);
  974. *userdataPtr = (PolyBase*)retInst;
  975. return 1;
  976. }
  977. static int Polycode_Color_ColorWithHex(lua_State *L) {
  978. luaL_checktype(L, 1, LUA_TUSERDATA);
  979. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  980. luaL_checktype(L, 2, LUA_TNUMBER);
  981. int hex = lua_tointeger(L, 2);
  982. Color *retInst = new Color();
  983. *retInst = inst->ColorWithHex(hex);
  984. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  985. luaL_getmetatable(L, "Polycode.Color");
  986. lua_setmetatable(L, -2);
  987. *userdataPtr = (PolyBase*)retInst;
  988. return 1;
  989. }
  990. static int Polycode_Color_setColorHex(lua_State *L) {
  991. luaL_checktype(L, 1, LUA_TUSERDATA);
  992. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  993. luaL_checktype(L, 2, LUA_TNUMBER);
  994. int hex = lua_tointeger(L, 2);
  995. inst->setColorHex(hex);
  996. return 0;
  997. }
  998. static int Polycode_Color_setColorHexRGB(lua_State *L) {
  999. luaL_checktype(L, 1, LUA_TUSERDATA);
  1000. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1001. luaL_checktype(L, 2, LUA_TNUMBER);
  1002. int hex = lua_tointeger(L, 2);
  1003. inst->setColorHexRGB(hex);
  1004. return 0;
  1005. }
  1006. static int Polycode_Color_setColorHexFromString(lua_State *L) {
  1007. luaL_checktype(L, 1, LUA_TUSERDATA);
  1008. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1009. luaL_checktype(L, 2, LUA_TSTRING);
  1010. String hex = String(lua_tostring(L, 2));
  1011. inst->setColorHexFromString(hex);
  1012. return 0;
  1013. }
  1014. static int Polycode_Color_setColorHexRGBFromString(lua_State *L) {
  1015. luaL_checktype(L, 1, LUA_TUSERDATA);
  1016. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1017. luaL_checktype(L, 2, LUA_TSTRING);
  1018. String hex = String(lua_tostring(L, 2));
  1019. inst->setColorHexRGBFromString(hex);
  1020. return 0;
  1021. }
  1022. static int Polycode_Color_setColorHSV(lua_State *L) {
  1023. luaL_checktype(L, 1, LUA_TUSERDATA);
  1024. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1025. luaL_checktype(L, 2, LUA_TNUMBER);
  1026. Number h = lua_tonumber(L, 2);
  1027. luaL_checktype(L, 3, LUA_TNUMBER);
  1028. Number s = lua_tonumber(L, 3);
  1029. luaL_checktype(L, 4, LUA_TNUMBER);
  1030. Number v = lua_tonumber(L, 4);
  1031. inst->setColorHSV(h, s, v);
  1032. return 0;
  1033. }
  1034. static int Polycode_Color_setColorRGBA(lua_State *L) {
  1035. luaL_checktype(L, 1, LUA_TUSERDATA);
  1036. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1037. luaL_checktype(L, 2, LUA_TNUMBER);
  1038. int r = lua_tointeger(L, 2);
  1039. luaL_checktype(L, 3, LUA_TNUMBER);
  1040. int g = lua_tointeger(L, 3);
  1041. luaL_checktype(L, 4, LUA_TNUMBER);
  1042. int b = lua_tointeger(L, 4);
  1043. luaL_checktype(L, 5, LUA_TNUMBER);
  1044. int a = lua_tointeger(L, 5);
  1045. inst->setColorRGBA(r, g, b, a);
  1046. return 0;
  1047. }
  1048. static int Polycode_Color_setColorRGB(lua_State *L) {
  1049. luaL_checktype(L, 1, LUA_TUSERDATA);
  1050. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1051. luaL_checktype(L, 2, LUA_TNUMBER);
  1052. int r = lua_tointeger(L, 2);
  1053. luaL_checktype(L, 3, LUA_TNUMBER);
  1054. int g = lua_tointeger(L, 3);
  1055. luaL_checktype(L, 4, LUA_TNUMBER);
  1056. int b = lua_tointeger(L, 4);
  1057. inst->setColorRGB(r, g, b);
  1058. return 0;
  1059. }
  1060. static int Polycode_Color_setColor(lua_State *L) {
  1061. luaL_checktype(L, 1, LUA_TUSERDATA);
  1062. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1063. luaL_checktype(L, 2, LUA_TNUMBER);
  1064. Number r = lua_tonumber(L, 2);
  1065. luaL_checktype(L, 3, LUA_TNUMBER);
  1066. Number g = lua_tonumber(L, 3);
  1067. luaL_checktype(L, 4, LUA_TNUMBER);
  1068. Number b = lua_tonumber(L, 4);
  1069. luaL_checktype(L, 5, LUA_TNUMBER);
  1070. Number a = lua_tonumber(L, 5);
  1071. inst->setColor(r, g, b, a);
  1072. return 0;
  1073. }
  1074. static int Polycode_Color_blendColor(lua_State *L) {
  1075. luaL_checktype(L, 1, LUA_TUSERDATA);
  1076. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1077. luaL_checktype(L, 2, LUA_TUSERDATA);
  1078. Color c2 = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  1079. luaL_checktype(L, 3, LUA_TNUMBER);
  1080. int mode = lua_tointeger(L, 3);
  1081. luaL_checktype(L, 4, LUA_TNUMBER);
  1082. Number amount = lua_tonumber(L, 4);
  1083. luaL_checktype(L, 5, LUA_TUSERDATA);
  1084. Color c3 = *(Color*) *((PolyBase**)lua_touserdata(L, 5));
  1085. Color *retInst = new Color();
  1086. *retInst = inst->blendColor(c2, mode, amount, c3);
  1087. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1088. luaL_getmetatable(L, "Polycode.Color");
  1089. lua_setmetatable(L, -2);
  1090. *userdataPtr = (PolyBase*)retInst;
  1091. return 1;
  1092. }
  1093. static int Polycode_Color_Random(lua_State *L) {
  1094. luaL_checktype(L, 1, LUA_TUSERDATA);
  1095. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1096. inst->Random();
  1097. return 0;
  1098. }
  1099. static int Polycode_Color_getBrightness(lua_State *L) {
  1100. luaL_checktype(L, 1, LUA_TUSERDATA);
  1101. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1102. lua_pushnumber(L, inst->getBrightness());
  1103. return 1;
  1104. }
  1105. static int Polycode_Color_RGBtoHSV(lua_State *L) {
  1106. luaL_checktype(L, 1, LUA_TUSERDATA);
  1107. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1108. luaL_checktype(L, 2, LUA_TNUMBER);
  1109. Number r = lua_tonumber(L, 2);
  1110. luaL_checktype(L, 3, LUA_TNUMBER);
  1111. Number g = lua_tonumber(L, 3);
  1112. luaL_checktype(L, 4, LUA_TNUMBER);
  1113. Number b = lua_tonumber(L, 4);
  1114. luaL_checktype(L, 5, LUA_TNUMBER);
  1115. Number h = lua_tonumber(L, 5);
  1116. luaL_checktype(L, 6, LUA_TNUMBER);
  1117. Number s = lua_tonumber(L, 6);
  1118. luaL_checktype(L, 7, LUA_TNUMBER);
  1119. Number v = lua_tonumber(L, 7);
  1120. inst->RGBtoHSV(r, g, b, h, s, v);
  1121. return 0;
  1122. }
  1123. static int Polycode_Color_getHue(lua_State *L) {
  1124. luaL_checktype(L, 1, LUA_TUSERDATA);
  1125. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1126. lua_pushnumber(L, inst->getHue());
  1127. return 1;
  1128. }
  1129. static int Polycode_Color_getSaturation(lua_State *L) {
  1130. luaL_checktype(L, 1, LUA_TUSERDATA);
  1131. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1132. lua_pushnumber(L, inst->getSaturation());
  1133. return 1;
  1134. }
  1135. static int Polycode_Color_getValue(lua_State *L) {
  1136. luaL_checktype(L, 1, LUA_TUSERDATA);
  1137. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1138. lua_pushnumber(L, inst->getValue());
  1139. return 1;
  1140. }
  1141. static int Polycode_Color_getUint(lua_State *L) {
  1142. luaL_checktype(L, 1, LUA_TUSERDATA);
  1143. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1144. lua_pushinteger(L, inst->getUint());
  1145. return 1;
  1146. }
  1147. static int Polycode_Config(lua_State *L) {
  1148. Config *inst = new Config();
  1149. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1150. *userdataPtr = (PolyBase*)inst;
  1151. luaL_getmetatable(L, "Polycode.Config");
  1152. lua_setmetatable(L, -2);
  1153. return 1;
  1154. }
  1155. static int Polycode_Config_loadConfig(lua_State *L) {
  1156. luaL_checktype(L, 1, LUA_TUSERDATA);
  1157. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1158. luaL_checktype(L, 2, LUA_TSTRING);
  1159. String configNamespace = String(lua_tostring(L, 2));
  1160. luaL_checktype(L, 3, LUA_TSTRING);
  1161. String fileName = String(lua_tostring(L, 3));
  1162. inst->loadConfig(configNamespace, fileName);
  1163. return 0;
  1164. }
  1165. static int Polycode_Config_saveConfig(lua_State *L) {
  1166. luaL_checktype(L, 1, LUA_TUSERDATA);
  1167. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1168. luaL_checktype(L, 2, LUA_TSTRING);
  1169. String configNamespace = String(lua_tostring(L, 2));
  1170. luaL_checktype(L, 3, LUA_TSTRING);
  1171. String fileName = String(lua_tostring(L, 3));
  1172. inst->saveConfig(configNamespace, fileName);
  1173. return 0;
  1174. }
  1175. static int Polycode_Config_getEntry(lua_State *L) {
  1176. luaL_checktype(L, 1, LUA_TUSERDATA);
  1177. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1178. luaL_checktype(L, 2, LUA_TSTRING);
  1179. String configNamespace = String(lua_tostring(L, 2));
  1180. luaL_checktype(L, 3, LUA_TSTRING);
  1181. String key = String(lua_tostring(L, 3));
  1182. PolyBase *ptrRetVal = (PolyBase*)inst->getEntry(configNamespace, key);
  1183. if(ptrRetVal == NULL) {
  1184. lua_pushnil(L);
  1185. } else {
  1186. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1187. *userdataPtr = ptrRetVal;
  1188. }
  1189. return 1;
  1190. }
  1191. static int Polycode_Config_setStringValue(lua_State *L) {
  1192. luaL_checktype(L, 1, LUA_TUSERDATA);
  1193. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1194. luaL_checktype(L, 2, LUA_TSTRING);
  1195. String configNamespace = String(lua_tostring(L, 2));
  1196. luaL_checktype(L, 3, LUA_TSTRING);
  1197. String key = String(lua_tostring(L, 3));
  1198. luaL_checktype(L, 4, LUA_TSTRING);
  1199. String value = String(lua_tostring(L, 4));
  1200. inst->setStringValue(configNamespace, key, value);
  1201. return 0;
  1202. }
  1203. static int Polycode_Config_setNumericValue(lua_State *L) {
  1204. luaL_checktype(L, 1, LUA_TUSERDATA);
  1205. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1206. luaL_checktype(L, 2, LUA_TSTRING);
  1207. String configNamespace = String(lua_tostring(L, 2));
  1208. luaL_checktype(L, 3, LUA_TSTRING);
  1209. String key = String(lua_tostring(L, 3));
  1210. luaL_checktype(L, 4, LUA_TNUMBER);
  1211. Number value = lua_tonumber(L, 4);
  1212. inst->setNumericValue(configNamespace, key, value);
  1213. return 0;
  1214. }
  1215. static int Polycode_Config_getNumericValue(lua_State *L) {
  1216. luaL_checktype(L, 1, LUA_TUSERDATA);
  1217. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1218. luaL_checktype(L, 2, LUA_TSTRING);
  1219. String configNamespace = String(lua_tostring(L, 2));
  1220. luaL_checktype(L, 3, LUA_TSTRING);
  1221. String key = String(lua_tostring(L, 3));
  1222. lua_pushnumber(L, inst->getNumericValue(configNamespace, key));
  1223. return 1;
  1224. }
  1225. static int Polycode_Config_getStringValue(lua_State *L) {
  1226. luaL_checktype(L, 1, LUA_TUSERDATA);
  1227. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1228. luaL_checktype(L, 2, LUA_TSTRING);
  1229. String configNamespace = String(lua_tostring(L, 2));
  1230. luaL_checktype(L, 3, LUA_TSTRING);
  1231. String key = String(lua_tostring(L, 3));
  1232. lua_pushstring(L, inst->getStringValue(configNamespace, key).c_str());
  1233. return 1;
  1234. }
  1235. static int Polycode_Config_setBoolValue(lua_State *L) {
  1236. luaL_checktype(L, 1, LUA_TUSERDATA);
  1237. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1238. luaL_checktype(L, 2, LUA_TSTRING);
  1239. String configNamespace = String(lua_tostring(L, 2));
  1240. luaL_checktype(L, 3, LUA_TSTRING);
  1241. String key = String(lua_tostring(L, 3));
  1242. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1243. bool value = lua_toboolean(L, 4) != 0;
  1244. inst->setBoolValue(configNamespace, key, value);
  1245. return 0;
  1246. }
  1247. static int Polycode_Config_getBoolValue(lua_State *L) {
  1248. luaL_checktype(L, 1, LUA_TUSERDATA);
  1249. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1250. luaL_checktype(L, 2, LUA_TSTRING);
  1251. String configNamespace = String(lua_tostring(L, 2));
  1252. luaL_checktype(L, 3, LUA_TSTRING);
  1253. String key = String(lua_tostring(L, 3));
  1254. lua_pushboolean(L, inst->getBoolValue(configNamespace, key));
  1255. return 1;
  1256. }
  1257. static int Polycode_Core_Update(lua_State *L) {
  1258. luaL_checktype(L, 1, LUA_TUSERDATA);
  1259. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1260. lua_pushboolean(L, inst->Update());
  1261. return 1;
  1262. }
  1263. static int Polycode_Core_Render(lua_State *L) {
  1264. luaL_checktype(L, 1, LUA_TUSERDATA);
  1265. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1266. inst->Render();
  1267. return 0;
  1268. }
  1269. static int Polycode_Core_fixedUpdate(lua_State *L) {
  1270. luaL_checktype(L, 1, LUA_TUSERDATA);
  1271. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1272. lua_pushboolean(L, inst->fixedUpdate());
  1273. return 1;
  1274. }
  1275. static int Polycode_Core_systemUpdate(lua_State *L) {
  1276. luaL_checktype(L, 1, LUA_TUSERDATA);
  1277. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1278. lua_pushboolean(L, inst->systemUpdate());
  1279. return 1;
  1280. }
  1281. static int Polycode_Core_updateAndRender(lua_State *L) {
  1282. luaL_checktype(L, 1, LUA_TUSERDATA);
  1283. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1284. lua_pushboolean(L, inst->updateAndRender());
  1285. return 1;
  1286. }
  1287. static int Polycode_Core_enableMouse(lua_State *L) {
  1288. luaL_checktype(L, 1, LUA_TUSERDATA);
  1289. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1290. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1291. bool newval = lua_toboolean(L, 2) != 0;
  1292. inst->enableMouse(newval);
  1293. return 0;
  1294. }
  1295. static int Polycode_Core_captureMouse(lua_State *L) {
  1296. luaL_checktype(L, 1, LUA_TUSERDATA);
  1297. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1298. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1299. bool newval = lua_toboolean(L, 2) != 0;
  1300. inst->captureMouse(newval);
  1301. return 0;
  1302. }
  1303. static int Polycode_Core_setCursor(lua_State *L) {
  1304. luaL_checktype(L, 1, LUA_TUSERDATA);
  1305. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1306. luaL_checktype(L, 2, LUA_TNUMBER);
  1307. int cursorType = lua_tointeger(L, 2);
  1308. inst->setCursor(cursorType);
  1309. return 0;
  1310. }
  1311. static int Polycode_Core_warpCursor(lua_State *L) {
  1312. luaL_checktype(L, 1, LUA_TUSERDATA);
  1313. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1314. luaL_checktype(L, 2, LUA_TNUMBER);
  1315. int x = lua_tointeger(L, 2);
  1316. luaL_checktype(L, 3, LUA_TNUMBER);
  1317. int y = lua_tointeger(L, 3);
  1318. inst->warpCursor(x, y);
  1319. return 0;
  1320. }
  1321. static int Polycode_Core_createThread(lua_State *L) {
  1322. luaL_checktype(L, 1, LUA_TUSERDATA);
  1323. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1324. luaL_checktype(L, 2, LUA_TUSERDATA);
  1325. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  1326. inst->createThread(target);
  1327. return 0;
  1328. }
  1329. static int Polycode_Core_lockMutex(lua_State *L) {
  1330. luaL_checktype(L, 1, LUA_TUSERDATA);
  1331. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1332. luaL_checktype(L, 2, LUA_TUSERDATA);
  1333. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1334. inst->lockMutex(mutex);
  1335. return 0;
  1336. }
  1337. static int Polycode_Core_unlockMutex(lua_State *L) {
  1338. luaL_checktype(L, 1, LUA_TUSERDATA);
  1339. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1340. luaL_checktype(L, 2, LUA_TUSERDATA);
  1341. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1342. inst->unlockMutex(mutex);
  1343. return 0;
  1344. }
  1345. static int Polycode_Core_createMutex(lua_State *L) {
  1346. luaL_checktype(L, 1, LUA_TUSERDATA);
  1347. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1348. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  1349. if(ptrRetVal == NULL) {
  1350. lua_pushnil(L);
  1351. } else {
  1352. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1353. *userdataPtr = ptrRetVal;
  1354. }
  1355. return 1;
  1356. }
  1357. static int Polycode_Core_copyStringToClipboard(lua_State *L) {
  1358. luaL_checktype(L, 1, LUA_TUSERDATA);
  1359. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1360. luaL_checktype(L, 2, LUA_TSTRING);
  1361. String str = String(lua_tostring(L, 2));
  1362. inst->copyStringToClipboard(str);
  1363. return 0;
  1364. }
  1365. static int Polycode_Core_getClipboardString(lua_State *L) {
  1366. luaL_checktype(L, 1, LUA_TUSERDATA);
  1367. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1368. lua_pushstring(L, inst->getClipboardString().c_str());
  1369. return 1;
  1370. }
  1371. static int Polycode_Core_getServices(lua_State *L) {
  1372. luaL_checktype(L, 1, LUA_TUSERDATA);
  1373. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1374. PolyBase *ptrRetVal = (PolyBase*)inst->getServices();
  1375. if(ptrRetVal == NULL) {
  1376. lua_pushnil(L);
  1377. } else {
  1378. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1379. *userdataPtr = ptrRetVal;
  1380. }
  1381. return 1;
  1382. }
  1383. static int Polycode_Core_getFPS(lua_State *L) {
  1384. luaL_checktype(L, 1, LUA_TUSERDATA);
  1385. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1386. lua_pushnumber(L, inst->getFPS());
  1387. return 1;
  1388. }
  1389. static int Polycode_Core_Shutdown(lua_State *L) {
  1390. luaL_checktype(L, 1, LUA_TUSERDATA);
  1391. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1392. inst->Shutdown();
  1393. return 0;
  1394. }
  1395. static int Polycode_Core_isFullscreen(lua_State *L) {
  1396. luaL_checktype(L, 1, LUA_TUSERDATA);
  1397. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1398. lua_pushboolean(L, inst->isFullscreen());
  1399. return 1;
  1400. }
  1401. static int Polycode_Core_getAALevel(lua_State *L) {
  1402. luaL_checktype(L, 1, LUA_TUSERDATA);
  1403. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1404. lua_pushinteger(L, inst->getAALevel());
  1405. return 1;
  1406. }
  1407. static int Polycode_Core_getInput(lua_State *L) {
  1408. luaL_checktype(L, 1, LUA_TUSERDATA);
  1409. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1410. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  1411. if(ptrRetVal == NULL) {
  1412. lua_pushnil(L);
  1413. } else {
  1414. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1415. *userdataPtr = ptrRetVal;
  1416. }
  1417. return 1;
  1418. }
  1419. static int Polycode_Core_getXRes(lua_State *L) {
  1420. luaL_checktype(L, 1, LUA_TUSERDATA);
  1421. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1422. lua_pushnumber(L, inst->getXRes());
  1423. return 1;
  1424. }
  1425. static int Polycode_Core_getYRes(lua_State *L) {
  1426. luaL_checktype(L, 1, LUA_TUSERDATA);
  1427. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1428. lua_pushnumber(L, inst->getYRes());
  1429. return 1;
  1430. }
  1431. static int Polycode_Core_getBackingXRes(lua_State *L) {
  1432. luaL_checktype(L, 1, LUA_TUSERDATA);
  1433. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1434. lua_pushnumber(L, inst->getBackingXRes());
  1435. return 1;
  1436. }
  1437. static int Polycode_Core_getBackingYRes(lua_State *L) {
  1438. luaL_checktype(L, 1, LUA_TUSERDATA);
  1439. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1440. lua_pushnumber(L, inst->getBackingYRes());
  1441. return 1;
  1442. }
  1443. static int Polycode_Core_getScreenInfo(lua_State *L) {
  1444. luaL_checktype(L, 1, LUA_TUSERDATA);
  1445. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1446. luaL_checktype(L, 2, LUA_TUSERDATA);
  1447. int* width = (int*) *((PolyBase**)lua_touserdata(L, 2));
  1448. luaL_checktype(L, 3, LUA_TUSERDATA);
  1449. int* height = (int*) *((PolyBase**)lua_touserdata(L, 3));
  1450. luaL_checktype(L, 4, LUA_TUSERDATA);
  1451. int* hz = (int*) *((PolyBase**)lua_touserdata(L, 4));
  1452. inst->getScreenInfo(width, height, hz);
  1453. return 0;
  1454. }
  1455. static int Polycode_Core_getScreenWidth(lua_State *L) {
  1456. luaL_checktype(L, 1, LUA_TUSERDATA);
  1457. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1458. lua_pushinteger(L, inst->getScreenWidth());
  1459. return 1;
  1460. }
  1461. static int Polycode_Core_getScreenHeight(lua_State *L) {
  1462. luaL_checktype(L, 1, LUA_TUSERDATA);
  1463. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1464. lua_pushinteger(L, inst->getScreenHeight());
  1465. return 1;
  1466. }
  1467. static int Polycode_Core_createFolder(lua_State *L) {
  1468. luaL_checktype(L, 1, LUA_TUSERDATA);
  1469. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1470. luaL_checktype(L, 2, LUA_TSTRING);
  1471. String folderPath = String(lua_tostring(L, 2));
  1472. inst->createFolder(folderPath);
  1473. return 0;
  1474. }
  1475. static int Polycode_Core_copyDiskItem(lua_State *L) {
  1476. luaL_checktype(L, 1, LUA_TUSERDATA);
  1477. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1478. luaL_checktype(L, 2, LUA_TSTRING);
  1479. String itemPath = String(lua_tostring(L, 2));
  1480. luaL_checktype(L, 3, LUA_TSTRING);
  1481. String destItemPath = String(lua_tostring(L, 3));
  1482. inst->copyDiskItem(itemPath, destItemPath);
  1483. return 0;
  1484. }
  1485. static int Polycode_Core_moveDiskItem(lua_State *L) {
  1486. luaL_checktype(L, 1, LUA_TUSERDATA);
  1487. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1488. luaL_checktype(L, 2, LUA_TSTRING);
  1489. String itemPath = String(lua_tostring(L, 2));
  1490. luaL_checktype(L, 3, LUA_TSTRING);
  1491. String destItemPath = String(lua_tostring(L, 3));
  1492. inst->moveDiskItem(itemPath, destItemPath);
  1493. return 0;
  1494. }
  1495. static int Polycode_Core_removeDiskItem(lua_State *L) {
  1496. luaL_checktype(L, 1, LUA_TUSERDATA);
  1497. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1498. luaL_checktype(L, 2, LUA_TSTRING);
  1499. String itemPath = String(lua_tostring(L, 2));
  1500. inst->removeDiskItem(itemPath);
  1501. return 0;
  1502. }
  1503. static int Polycode_Core_openFolderPicker(lua_State *L) {
  1504. luaL_checktype(L, 1, LUA_TUSERDATA);
  1505. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1506. lua_pushstring(L, inst->openFolderPicker().c_str());
  1507. return 1;
  1508. }
  1509. static int Polycode_Core_setFramerate(lua_State *L) {
  1510. luaL_checktype(L, 1, LUA_TUSERDATA);
  1511. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1512. luaL_checktype(L, 2, LUA_TNUMBER);
  1513. int frameRate = lua_tointeger(L, 2);
  1514. luaL_checktype(L, 3, LUA_TNUMBER);
  1515. int maxFixedCycles = lua_tointeger(L, 3);
  1516. inst->setFramerate(frameRate, maxFixedCycles);
  1517. return 0;
  1518. }
  1519. static int Polycode_Core_openFilePicker(lua_State *L) {
  1520. luaL_checktype(L, 1, LUA_TUSERDATA);
  1521. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1522. luaL_checktype(L, 2, LUA_TUSERDATA);
  1523. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1524. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1525. bool allowMultiple = lua_toboolean(L, 3) != 0;
  1526. }
  1527. static int Polycode_Core_saveFilePicker(lua_State *L) {
  1528. luaL_checktype(L, 1, LUA_TUSERDATA);
  1529. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1530. luaL_checktype(L, 2, LUA_TUSERDATA);
  1531. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1532. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  1533. return 1;
  1534. }
  1535. static int Polycode_Core_handleVideoModeChange(lua_State *L) {
  1536. luaL_checktype(L, 1, LUA_TUSERDATA);
  1537. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1538. luaL_checktype(L, 2, LUA_TUSERDATA);
  1539. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  1540. inst->handleVideoModeChange(modeInfo);
  1541. return 0;
  1542. }
  1543. static int Polycode_Core_flushRenderContext(lua_State *L) {
  1544. luaL_checktype(L, 1, LUA_TUSERDATA);
  1545. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1546. inst->flushRenderContext();
  1547. return 0;
  1548. }
  1549. static int Polycode_Core_prepareRenderContext(lua_State *L) {
  1550. luaL_checktype(L, 1, LUA_TUSERDATA);
  1551. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1552. inst->prepareRenderContext();
  1553. return 0;
  1554. }
  1555. static int Polycode_Core_openFile(lua_State *L) {
  1556. luaL_checktype(L, 1, LUA_TUSERDATA);
  1557. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1558. luaL_checktype(L, 2, LUA_TSTRING);
  1559. String fileName = String(lua_tostring(L, 2));
  1560. luaL_checktype(L, 3, LUA_TSTRING);
  1561. String opts = String(lua_tostring(L, 3));
  1562. PolyBase *ptrRetVal = (PolyBase*)inst->openFile(fileName, opts);
  1563. if(ptrRetVal == NULL) {
  1564. lua_pushnil(L);
  1565. } else {
  1566. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1567. *userdataPtr = ptrRetVal;
  1568. }
  1569. return 1;
  1570. }
  1571. static int Polycode_Core_closeFile(lua_State *L) {
  1572. luaL_checktype(L, 1, LUA_TUSERDATA);
  1573. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1574. luaL_checktype(L, 2, LUA_TUSERDATA);
  1575. CoreFile* file = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  1576. inst->closeFile(file);
  1577. return 0;
  1578. }
  1579. static int Polycode_Core_addFileSource(lua_State *L) {
  1580. luaL_checktype(L, 1, LUA_TUSERDATA);
  1581. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1582. luaL_checktype(L, 2, LUA_TSTRING);
  1583. String type = String(lua_tostring(L, 2));
  1584. luaL_checktype(L, 3, LUA_TSTRING);
  1585. String source = String(lua_tostring(L, 3));
  1586. inst->addFileSource(type, source);
  1587. return 0;
  1588. }
  1589. static int Polycode_Core_removeFileSource(lua_State *L) {
  1590. luaL_checktype(L, 1, LUA_TUSERDATA);
  1591. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1592. luaL_checktype(L, 2, LUA_TSTRING);
  1593. String type = String(lua_tostring(L, 2));
  1594. luaL_checktype(L, 3, LUA_TSTRING);
  1595. String source = String(lua_tostring(L, 3));
  1596. inst->removeFileSource(type, source);
  1597. return 0;
  1598. }
  1599. static int Polycode_Core_parseFolder(lua_State *L) {
  1600. luaL_checktype(L, 1, LUA_TUSERDATA);
  1601. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1602. luaL_checktype(L, 2, LUA_TSTRING);
  1603. String pathString = String(lua_tostring(L, 2));
  1604. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1605. bool showHidden = lua_toboolean(L, 3) != 0;
  1606. }
  1607. static int Polycode_Core_systemParseFolder(lua_State *L) {
  1608. luaL_checktype(L, 1, LUA_TUSERDATA);
  1609. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1610. luaL_checktype(L, 2, LUA_TSTRING);
  1611. String pathString = String(lua_tostring(L, 2));
  1612. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1613. bool showHidden = lua_toboolean(L, 3) != 0;
  1614. luaL_checktype(L, 4, LUA_TUSERDATA);
  1615. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  1616. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  1617. return 1;
  1618. }
  1619. static int Polycode_Core_getResourcePathForFile(lua_State *L) {
  1620. luaL_checktype(L, 1, LUA_TUSERDATA);
  1621. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1622. luaL_checktype(L, 2, LUA_TSTRING);
  1623. String fileName = String(lua_tostring(L, 2));
  1624. lua_pushstring(L, inst->getResourcePathForFile(fileName).c_str());
  1625. return 1;
  1626. }
  1627. static int Polycode_Core_setVideoMode(lua_State *L) {
  1628. luaL_checktype(L, 1, LUA_TUSERDATA);
  1629. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1630. luaL_checktype(L, 2, LUA_TNUMBER);
  1631. int xRes = lua_tointeger(L, 2);
  1632. luaL_checktype(L, 3, LUA_TNUMBER);
  1633. int yRes = lua_tointeger(L, 3);
  1634. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1635. bool fullScreen = lua_toboolean(L, 4) != 0;
  1636. luaL_checktype(L, 5, LUA_TBOOLEAN);
  1637. bool vSync = lua_toboolean(L, 5) != 0;
  1638. luaL_checktype(L, 6, LUA_TNUMBER);
  1639. int aaLevel = lua_tointeger(L, 6);
  1640. luaL_checktype(L, 7, LUA_TNUMBER);
  1641. int anisotropyLevel = lua_tointeger(L, 7);
  1642. luaL_checktype(L, 8, LUA_TBOOLEAN);
  1643. bool retinaSupport = lua_toboolean(L, 8) != 0;
  1644. inst->setVideoMode(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, retinaSupport);
  1645. return 0;
  1646. }
  1647. static int Polycode_Core_resizeTo(lua_State *L) {
  1648. luaL_checktype(L, 1, LUA_TUSERDATA);
  1649. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1650. luaL_checktype(L, 2, LUA_TNUMBER);
  1651. int xRes = lua_tointeger(L, 2);
  1652. luaL_checktype(L, 3, LUA_TNUMBER);
  1653. int yRes = lua_tointeger(L, 3);
  1654. inst->resizeTo(xRes, yRes);
  1655. return 0;
  1656. }
  1657. static int Polycode_Core_doSleep(lua_State *L) {
  1658. luaL_checktype(L, 1, LUA_TUSERDATA);
  1659. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1660. inst->doSleep();
  1661. return 0;
  1662. }
  1663. static int Polycode_Core_openURL(lua_State *L) {
  1664. luaL_checktype(L, 1, LUA_TUSERDATA);
  1665. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1666. luaL_checktype(L, 2, LUA_TSTRING);
  1667. String url = String(lua_tostring(L, 2));
  1668. inst->openURL(url);
  1669. return 0;
  1670. }
  1671. static int Polycode_Core_getElapsed(lua_State *L) {
  1672. luaL_checktype(L, 1, LUA_TUSERDATA);
  1673. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1674. lua_pushnumber(L, inst->getElapsed());
  1675. return 1;
  1676. }
  1677. static int Polycode_Core_getTicks(lua_State *L) {
  1678. luaL_checktype(L, 1, LUA_TUSERDATA);
  1679. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1680. lua_pushinteger(L, inst->getTicks());
  1681. return 1;
  1682. }
  1683. static int Polycode_Core_getRefreshIntervalMs(lua_State *L) {
  1684. luaL_checktype(L, 1, LUA_TUSERDATA);
  1685. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1686. lua_pushinteger(L, inst->getRefreshIntervalMs());
  1687. return 1;
  1688. }
  1689. static int Polycode_Core_getTimeSleptMs(lua_State *L) {
  1690. luaL_checktype(L, 1, LUA_TUSERDATA);
  1691. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1692. lua_pushinteger(L, inst->getTimeSleptMs());
  1693. return 1;
  1694. }
  1695. static int Polycode_Core_getFixedTimestep(lua_State *L) {
  1696. luaL_checktype(L, 1, LUA_TUSERDATA);
  1697. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1698. lua_pushnumber(L, inst->getFixedTimestep());
  1699. return 1;
  1700. }
  1701. static int Polycode_Core_getTicksFloat(lua_State *L) {
  1702. luaL_checktype(L, 1, LUA_TUSERDATA);
  1703. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1704. lua_pushnumber(L, inst->getTicksFloat());
  1705. return 1;
  1706. }
  1707. static int Polycode_Core_setUserPointer(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_TUSERDATA);
  1711. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  1712. inst->setUserPointer(ptr);
  1713. return 0;
  1714. }
  1715. static int Polycode_Core_getUserPointer(lua_State *L) {
  1716. luaL_checktype(L, 1, LUA_TUSERDATA);
  1717. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1718. PolyBase *ptrRetVal = (PolyBase*)inst->getUserPointer();
  1719. if(ptrRetVal == NULL) {
  1720. lua_pushnil(L);
  1721. } else {
  1722. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1723. *userdataPtr = ptrRetVal;
  1724. }
  1725. return 1;
  1726. }
  1727. static int Polycode_Core_executeExternalCommand(lua_State *L) {
  1728. luaL_checktype(L, 1, LUA_TUSERDATA);
  1729. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1730. luaL_checktype(L, 2, LUA_TSTRING);
  1731. String command = String(lua_tostring(L, 2));
  1732. luaL_checktype(L, 3, LUA_TSTRING);
  1733. String args = String(lua_tostring(L, 3));
  1734. luaL_checktype(L, 4, LUA_TSTRING);
  1735. String inDirectory = String(lua_tostring(L, 4));
  1736. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  1737. return 1;
  1738. }
  1739. static int Polycode_Core_getDefaultWorkingDirectory(lua_State *L) {
  1740. luaL_checktype(L, 1, LUA_TUSERDATA);
  1741. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1742. lua_pushstring(L, inst->getDefaultWorkingDirectory().c_str());
  1743. return 1;
  1744. }
  1745. static int Polycode_Core_getUserHomeDirectory(lua_State *L) {
  1746. luaL_checktype(L, 1, LUA_TUSERDATA);
  1747. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1748. lua_pushstring(L, inst->getUserHomeDirectory().c_str());
  1749. return 1;
  1750. }
  1751. static int Polycode_Core_makeApplicationMain(lua_State *L) {
  1752. luaL_checktype(L, 1, LUA_TUSERDATA);
  1753. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1754. inst->makeApplicationMain();
  1755. return 0;
  1756. }
  1757. static int Polycode_Core_getEventMutex(lua_State *L) {
  1758. luaL_checktype(L, 1, LUA_TUSERDATA);
  1759. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1760. PolyBase *ptrRetVal = (PolyBase*)inst->getEventMutex();
  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_removeThread(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_TUSERDATA);
  1773. Threaded* thread = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  1774. inst->removeThread(thread);
  1775. return 0;
  1776. }
  1777. static int Polycode_PolycodeViewBase(lua_State *L) {
  1778. PolycodeViewBase *inst = new PolycodeViewBase();
  1779. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1780. *userdataPtr = (PolyBase*)inst;
  1781. luaL_getmetatable(L, "Polycode.PolycodeViewBase");
  1782. lua_setmetatable(L, -2);
  1783. return 1;
  1784. }
  1785. static int Polycode_DummyCore(lua_State *L) {
  1786. DummyCore *inst = new DummyCore();
  1787. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1788. *userdataPtr = (PolyBase*)inst;
  1789. luaL_getmetatable(L, "Polycode.DummyCore");
  1790. lua_setmetatable(L, -2);
  1791. return 1;
  1792. }
  1793. static int Polycode_DummyCore_Render(lua_State *L) {
  1794. luaL_checktype(L, 1, LUA_TUSERDATA);
  1795. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1796. inst->Render();
  1797. return 0;
  1798. }
  1799. static int Polycode_DummyCore_systemUpdate(lua_State *L) {
  1800. luaL_checktype(L, 1, LUA_TUSERDATA);
  1801. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1802. lua_pushboolean(L, inst->systemUpdate());
  1803. return 1;
  1804. }
  1805. static int Polycode_DummyCore_setCursor(lua_State *L) {
  1806. luaL_checktype(L, 1, LUA_TUSERDATA);
  1807. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1808. luaL_checktype(L, 2, LUA_TNUMBER);
  1809. int cursorType = lua_tointeger(L, 2);
  1810. inst->setCursor(cursorType);
  1811. return 0;
  1812. }
  1813. static int Polycode_DummyCore_createThread(lua_State *L) {
  1814. luaL_checktype(L, 1, LUA_TUSERDATA);
  1815. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1816. luaL_checktype(L, 2, LUA_TUSERDATA);
  1817. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  1818. inst->createThread(target);
  1819. return 0;
  1820. }
  1821. static int Polycode_DummyCore_createMutex(lua_State *L) {
  1822. luaL_checktype(L, 1, LUA_TUSERDATA);
  1823. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1824. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  1825. if(ptrRetVal == NULL) {
  1826. lua_pushnil(L);
  1827. } else {
  1828. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1829. *userdataPtr = ptrRetVal;
  1830. }
  1831. return 1;
  1832. }
  1833. static int Polycode_DummyCore_copyStringToClipboard(lua_State *L) {
  1834. luaL_checktype(L, 1, LUA_TUSERDATA);
  1835. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1836. luaL_checktype(L, 2, LUA_TSTRING);
  1837. String str = String(lua_tostring(L, 2));
  1838. inst->copyStringToClipboard(str);
  1839. return 0;
  1840. }
  1841. static int Polycode_DummyCore_getClipboardString(lua_State *L) {
  1842. luaL_checktype(L, 1, LUA_TUSERDATA);
  1843. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1844. lua_pushstring(L, inst->getClipboardString().c_str());
  1845. return 1;
  1846. }
  1847. static int Polycode_DummyCore_createFolder(lua_State *L) {
  1848. luaL_checktype(L, 1, LUA_TUSERDATA);
  1849. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1850. luaL_checktype(L, 2, LUA_TSTRING);
  1851. String folderPath = String(lua_tostring(L, 2));
  1852. inst->createFolder(folderPath);
  1853. return 0;
  1854. }
  1855. static int Polycode_DummyCore_copyDiskItem(lua_State *L) {
  1856. luaL_checktype(L, 1, LUA_TUSERDATA);
  1857. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1858. luaL_checktype(L, 2, LUA_TSTRING);
  1859. String itemPath = String(lua_tostring(L, 2));
  1860. luaL_checktype(L, 3, LUA_TSTRING);
  1861. String destItemPath = String(lua_tostring(L, 3));
  1862. inst->copyDiskItem(itemPath, destItemPath);
  1863. return 0;
  1864. }
  1865. static int Polycode_DummyCore_moveDiskItem(lua_State *L) {
  1866. luaL_checktype(L, 1, LUA_TUSERDATA);
  1867. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1868. luaL_checktype(L, 2, LUA_TSTRING);
  1869. String itemPath = String(lua_tostring(L, 2));
  1870. luaL_checktype(L, 3, LUA_TSTRING);
  1871. String destItemPath = String(lua_tostring(L, 3));
  1872. inst->moveDiskItem(itemPath, destItemPath);
  1873. return 0;
  1874. }
  1875. static int Polycode_DummyCore_removeDiskItem(lua_State *L) {
  1876. luaL_checktype(L, 1, LUA_TUSERDATA);
  1877. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1878. luaL_checktype(L, 2, LUA_TSTRING);
  1879. String itemPath = String(lua_tostring(L, 2));
  1880. inst->removeDiskItem(itemPath);
  1881. return 0;
  1882. }
  1883. static int Polycode_DummyCore_openFolderPicker(lua_State *L) {
  1884. luaL_checktype(L, 1, LUA_TUSERDATA);
  1885. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1886. lua_pushstring(L, inst->openFolderPicker().c_str());
  1887. return 1;
  1888. }
  1889. static int Polycode_DummyCore_openFilePicker(lua_State *L) {
  1890. luaL_checktype(L, 1, LUA_TUSERDATA);
  1891. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1892. luaL_checktype(L, 2, LUA_TUSERDATA);
  1893. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1894. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1895. bool allowMultiple = lua_toboolean(L, 3) != 0;
  1896. }
  1897. static int Polycode_DummyCore_saveFilePicker(lua_State *L) {
  1898. luaL_checktype(L, 1, LUA_TUSERDATA);
  1899. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1900. luaL_checktype(L, 2, LUA_TUSERDATA);
  1901. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1902. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  1903. return 1;
  1904. }
  1905. static int Polycode_DummyCore_handleVideoModeChange(lua_State *L) {
  1906. luaL_checktype(L, 1, LUA_TUSERDATA);
  1907. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1908. luaL_checktype(L, 2, LUA_TUSERDATA);
  1909. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  1910. inst->handleVideoModeChange(modeInfo);
  1911. return 0;
  1912. }
  1913. static int Polycode_DummyCore_flushRenderContext(lua_State *L) {
  1914. luaL_checktype(L, 1, LUA_TUSERDATA);
  1915. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1916. inst->flushRenderContext();
  1917. return 0;
  1918. }
  1919. static int Polycode_DummyCore_openURL(lua_State *L) {
  1920. luaL_checktype(L, 1, LUA_TUSERDATA);
  1921. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1922. luaL_checktype(L, 2, LUA_TSTRING);
  1923. String url = String(lua_tostring(L, 2));
  1924. inst->openURL(url);
  1925. return 0;
  1926. }
  1927. static int Polycode_DummyCore_getTicks(lua_State *L) {
  1928. luaL_checktype(L, 1, LUA_TUSERDATA);
  1929. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1930. lua_pushinteger(L, inst->getTicks());
  1931. return 1;
  1932. }
  1933. static int Polycode_DummyCore_executeExternalCommand(lua_State *L) {
  1934. luaL_checktype(L, 1, LUA_TUSERDATA);
  1935. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1936. luaL_checktype(L, 2, LUA_TSTRING);
  1937. String command = String(lua_tostring(L, 2));
  1938. luaL_checktype(L, 3, LUA_TSTRING);
  1939. String args = String(lua_tostring(L, 3));
  1940. luaL_checktype(L, 4, LUA_TSTRING);
  1941. String inDirectory = String(lua_tostring(L, 4));
  1942. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  1943. return 1;
  1944. }
  1945. static int Polycode_DummyCore_systemParseFolder(lua_State *L) {
  1946. luaL_checktype(L, 1, LUA_TUSERDATA);
  1947. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  1948. luaL_checktype(L, 2, LUA_TSTRING);
  1949. String pathString = String(lua_tostring(L, 2));
  1950. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1951. bool showHidden = lua_toboolean(L, 3) != 0;
  1952. luaL_checktype(L, 4, LUA_TUSERDATA);
  1953. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  1954. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  1955. return 1;
  1956. }
  1957. static int Polycode_TimeInfo(lua_State *L) {
  1958. TimeInfo *inst = new TimeInfo();
  1959. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1960. *userdataPtr = (PolyBase*)inst;
  1961. luaL_getmetatable(L, "Polycode.TimeInfo");
  1962. lua_setmetatable(L, -2);
  1963. return 1;
  1964. }
  1965. static int Polycode_CoreMutex_lock(lua_State *L) {
  1966. luaL_checktype(L, 1, LUA_TUSERDATA);
  1967. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  1968. inst->lock();
  1969. return 0;
  1970. }
  1971. static int Polycode_CoreMutex_unlock(lua_State *L) {
  1972. luaL_checktype(L, 1, LUA_TUSERDATA);
  1973. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  1974. inst->unlock();
  1975. return 0;
  1976. }
  1977. static int Polycode_CoreFileExtension(lua_State *L) {
  1978. CoreFileExtension *inst = new CoreFileExtension();
  1979. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1980. *userdataPtr = (PolyBase*)inst;
  1981. luaL_getmetatable(L, "Polycode.CoreFileExtension");
  1982. lua_setmetatable(L, -2);
  1983. return 1;
  1984. }
  1985. static int Polycode_OSFileEntry(lua_State *L) {
  1986. OSFileEntry *inst = new OSFileEntry();
  1987. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1988. *userdataPtr = (PolyBase*)inst;
  1989. luaL_getmetatable(L, "Polycode.OSFileEntry");
  1990. lua_setmetatable(L, -2);
  1991. return 1;
  1992. }
  1993. static int Polycode_OSFileEntry_init(lua_State *L) {
  1994. luaL_checktype(L, 1, LUA_TUSERDATA);
  1995. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1996. luaL_checktype(L, 2, LUA_TSTRING);
  1997. String path = String(lua_tostring(L, 2));
  1998. luaL_checktype(L, 3, LUA_TSTRING);
  1999. String name = String(lua_tostring(L, 3));
  2000. luaL_checktype(L, 4, LUA_TNUMBER);
  2001. int type = lua_tointeger(L, 4);
  2002. inst->init(path, name, type);
  2003. return 0;
  2004. }
  2005. static int Polycode_CoreInput(lua_State *L) {
  2006. CoreInput *inst = new CoreInput();
  2007. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2008. *userdataPtr = (PolyBase*)inst;
  2009. luaL_getmetatable(L, "Polycode.CoreInput");
  2010. lua_setmetatable(L, -2);
  2011. return 1;
  2012. }
  2013. static int Polycode_CoreInput_getMousePosition(lua_State *L) {
  2014. luaL_checktype(L, 1, LUA_TUSERDATA);
  2015. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2016. Vector2 *retInst = new Vector2();
  2017. *retInst = inst->getMousePosition();
  2018. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2019. luaL_getmetatable(L, "Polycode.Vector2");
  2020. lua_setmetatable(L, -2);
  2021. *userdataPtr = (PolyBase*)retInst;
  2022. return 1;
  2023. }
  2024. static int Polycode_CoreInput_getKeyState(lua_State *L) {
  2025. luaL_checktype(L, 1, LUA_TUSERDATA);
  2026. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2027. luaL_checktype(L, 2, LUA_TNUMBER);
  2028. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  2029. lua_pushboolean(L, inst->getKeyState(keyCode));
  2030. return 1;
  2031. }
  2032. static int Polycode_CoreInput_getJoystickButtonState(lua_State *L) {
  2033. luaL_checktype(L, 1, LUA_TUSERDATA);
  2034. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2035. luaL_checktype(L, 2, LUA_TNUMBER);
  2036. int joystickIndex = lua_tointeger(L, 2);
  2037. luaL_checktype(L, 3, LUA_TNUMBER);
  2038. int button = lua_tointeger(L, 3);
  2039. lua_pushboolean(L, inst->getJoystickButtonState(joystickIndex, button));
  2040. return 1;
  2041. }
  2042. static int Polycode_CoreInput_getJoystickAxisValue(lua_State *L) {
  2043. luaL_checktype(L, 1, LUA_TUSERDATA);
  2044. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2045. luaL_checktype(L, 2, LUA_TNUMBER);
  2046. int joystickIndex = lua_tointeger(L, 2);
  2047. luaL_checktype(L, 3, LUA_TNUMBER);
  2048. int axis = lua_tointeger(L, 3);
  2049. lua_pushnumber(L, inst->getJoystickAxisValue(joystickIndex, axis));
  2050. return 1;
  2051. }
  2052. static int Polycode_CoreInput_getMouseDelta(lua_State *L) {
  2053. luaL_checktype(L, 1, LUA_TUSERDATA);
  2054. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2055. Vector2 *retInst = new Vector2();
  2056. *retInst = inst->getMouseDelta();
  2057. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2058. luaL_getmetatable(L, "Polycode.Vector2");
  2059. lua_setmetatable(L, -2);
  2060. *userdataPtr = (PolyBase*)retInst;
  2061. return 1;
  2062. }
  2063. static int Polycode_CoreInput_getMouseButtonState(lua_State *L) {
  2064. luaL_checktype(L, 1, LUA_TUSERDATA);
  2065. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2066. luaL_checktype(L, 2, LUA_TNUMBER);
  2067. int mouseButton = lua_tointeger(L, 2);
  2068. lua_pushboolean(L, inst->getMouseButtonState(mouseButton));
  2069. return 1;
  2070. }
  2071. static int Polycode_CoreInput_getNumJoysticks(lua_State *L) {
  2072. luaL_checktype(L, 1, LUA_TUSERDATA);
  2073. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2074. lua_pushinteger(L, inst->getNumJoysticks());
  2075. return 1;
  2076. }
  2077. static int Polycode_CoreInput_getJoystickInfoByIndex(lua_State *L) {
  2078. luaL_checktype(L, 1, LUA_TUSERDATA);
  2079. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2080. luaL_checktype(L, 2, LUA_TNUMBER);
  2081. int index = lua_tointeger(L, 2);
  2082. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByIndex(index);
  2083. if(ptrRetVal == NULL) {
  2084. lua_pushnil(L);
  2085. } else {
  2086. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2087. *userdataPtr = ptrRetVal;
  2088. }
  2089. return 1;
  2090. }
  2091. static int Polycode_CoreInput_getJoystickInfoByID(lua_State *L) {
  2092. luaL_checktype(L, 1, LUA_TUSERDATA);
  2093. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2094. luaL_checktype(L, 2, LUA_TNUMBER);
  2095. int deviceID = lua_tointeger(L, 2);
  2096. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByID(deviceID);
  2097. if(ptrRetVal == NULL) {
  2098. lua_pushnil(L);
  2099. } else {
  2100. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2101. *userdataPtr = ptrRetVal;
  2102. }
  2103. return 1;
  2104. }
  2105. static int Polycode_CoreInput_addJoystick(lua_State *L) {
  2106. luaL_checktype(L, 1, LUA_TUSERDATA);
  2107. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2108. luaL_checktype(L, 2, LUA_TNUMBER);
  2109. int deviceID = lua_tointeger(L, 2);
  2110. inst->addJoystick(deviceID);
  2111. return 0;
  2112. }
  2113. static int Polycode_CoreInput_removeJoystick(lua_State *L) {
  2114. luaL_checktype(L, 1, LUA_TUSERDATA);
  2115. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2116. luaL_checktype(L, 2, LUA_TNUMBER);
  2117. int deviceID = lua_tointeger(L, 2);
  2118. inst->removeJoystick(deviceID);
  2119. return 0;
  2120. }
  2121. static int Polycode_CoreInput_joystickAxisMoved(lua_State *L) {
  2122. luaL_checktype(L, 1, LUA_TUSERDATA);
  2123. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2124. luaL_checktype(L, 2, LUA_TNUMBER);
  2125. int axisID = lua_tointeger(L, 2);
  2126. luaL_checktype(L, 3, LUA_TNUMBER);
  2127. Number value = lua_tonumber(L, 3);
  2128. luaL_checktype(L, 4, LUA_TNUMBER);
  2129. int deviceID = lua_tointeger(L, 4);
  2130. inst->joystickAxisMoved(axisID, value, deviceID);
  2131. return 0;
  2132. }
  2133. static int Polycode_CoreInput_joystickButtonDown(lua_State *L) {
  2134. luaL_checktype(L, 1, LUA_TUSERDATA);
  2135. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2136. luaL_checktype(L, 2, LUA_TNUMBER);
  2137. int buttonID = lua_tointeger(L, 2);
  2138. luaL_checktype(L, 3, LUA_TNUMBER);
  2139. int deviceID = lua_tointeger(L, 3);
  2140. inst->joystickButtonDown(buttonID, deviceID);
  2141. return 0;
  2142. }
  2143. static int Polycode_CoreInput_joystickButtonUp(lua_State *L) {
  2144. luaL_checktype(L, 1, LUA_TUSERDATA);
  2145. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2146. luaL_checktype(L, 2, LUA_TNUMBER);
  2147. int buttonID = lua_tointeger(L, 2);
  2148. luaL_checktype(L, 3, LUA_TNUMBER);
  2149. int deviceID = lua_tointeger(L, 3);
  2150. inst->joystickButtonUp(buttonID, deviceID);
  2151. return 0;
  2152. }
  2153. static int Polycode_CoreInput_mouseWheelUp(lua_State *L) {
  2154. luaL_checktype(L, 1, LUA_TUSERDATA);
  2155. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2156. luaL_checktype(L, 2, LUA_TNUMBER);
  2157. int ticks = lua_tointeger(L, 2);
  2158. inst->mouseWheelUp(ticks);
  2159. return 0;
  2160. }
  2161. static int Polycode_CoreInput_mouseWheelDown(lua_State *L) {
  2162. luaL_checktype(L, 1, LUA_TUSERDATA);
  2163. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2164. luaL_checktype(L, 2, LUA_TNUMBER);
  2165. int ticks = lua_tointeger(L, 2);
  2166. inst->mouseWheelDown(ticks);
  2167. return 0;
  2168. }
  2169. static int Polycode_CoreInput_setMouseButtonState(lua_State *L) {
  2170. luaL_checktype(L, 1, LUA_TUSERDATA);
  2171. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2172. luaL_checktype(L, 2, LUA_TNUMBER);
  2173. int mouseButton = lua_tointeger(L, 2);
  2174. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2175. bool state = lua_toboolean(L, 3) != 0;
  2176. luaL_checktype(L, 4, LUA_TNUMBER);
  2177. int ticks = lua_tointeger(L, 4);
  2178. inst->setMouseButtonState(mouseButton, state, ticks);
  2179. return 0;
  2180. }
  2181. static int Polycode_CoreInput_setMousePosition(lua_State *L) {
  2182. luaL_checktype(L, 1, LUA_TUSERDATA);
  2183. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2184. luaL_checktype(L, 2, LUA_TNUMBER);
  2185. int x = lua_tointeger(L, 2);
  2186. luaL_checktype(L, 3, LUA_TNUMBER);
  2187. int y = lua_tointeger(L, 3);
  2188. luaL_checktype(L, 4, LUA_TNUMBER);
  2189. int ticks = lua_tointeger(L, 4);
  2190. inst->setMousePosition(x, y, ticks);
  2191. return 0;
  2192. }
  2193. static int Polycode_CoreInput_setKeyState(lua_State *L) {
  2194. luaL_checktype(L, 1, LUA_TUSERDATA);
  2195. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2196. luaL_checktype(L, 2, LUA_TNUMBER);
  2197. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  2198. luaL_checktype(L, 3, LUA_TUSERDATA);
  2199. wchar_t code = *(wchar_t*) *((PolyBase**)lua_touserdata(L, 3));
  2200. luaL_checktype(L, 4, LUA_TBOOLEAN);
  2201. bool newState = lua_toboolean(L, 4) != 0;
  2202. luaL_checktype(L, 5, LUA_TNUMBER);
  2203. int ticks = lua_tointeger(L, 5);
  2204. inst->setKeyState(keyCode, code, newState, ticks);
  2205. return 0;
  2206. }
  2207. static int Polycode_CoreInput_setDeltaPosition(lua_State *L) {
  2208. luaL_checktype(L, 1, LUA_TUSERDATA);
  2209. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2210. luaL_checktype(L, 2, LUA_TNUMBER);
  2211. int x = lua_tointeger(L, 2);
  2212. luaL_checktype(L, 3, LUA_TNUMBER);
  2213. int y = lua_tointeger(L, 3);
  2214. inst->setDeltaPosition(x, y);
  2215. return 0;
  2216. }
  2217. static int Polycode_CoreInput_touchesBegan(lua_State *L) {
  2218. luaL_checktype(L, 1, LUA_TUSERDATA);
  2219. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2220. luaL_checktype(L, 2, LUA_TUSERDATA);
  2221. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  2222. luaL_checktype(L, 3, LUA_TUSERDATA);
  2223. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  2224. luaL_checktype(L, 4, LUA_TNUMBER);
  2225. int ticks = lua_tointeger(L, 4);
  2226. inst->touchesBegan(touch, touches, ticks);
  2227. return 0;
  2228. }
  2229. static int Polycode_CoreInput_touchesMoved(lua_State *L) {
  2230. luaL_checktype(L, 1, LUA_TUSERDATA);
  2231. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2232. luaL_checktype(L, 2, LUA_TUSERDATA);
  2233. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  2234. luaL_checktype(L, 3, LUA_TUSERDATA);
  2235. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  2236. luaL_checktype(L, 4, LUA_TNUMBER);
  2237. int ticks = lua_tointeger(L, 4);
  2238. inst->touchesMoved(touch, touches, ticks);
  2239. return 0;
  2240. }
  2241. static int Polycode_CoreInput_touchesEnded(lua_State *L) {
  2242. luaL_checktype(L, 1, LUA_TUSERDATA);
  2243. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2244. luaL_checktype(L, 2, LUA_TUSERDATA);
  2245. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  2246. luaL_checktype(L, 3, LUA_TUSERDATA);
  2247. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  2248. luaL_checktype(L, 4, LUA_TNUMBER);
  2249. int ticks = lua_tointeger(L, 4);
  2250. inst->touchesEnded(touch, touches, ticks);
  2251. return 0;
  2252. }
  2253. static int Polycode_CoreInput_createEvent(lua_State *L) {
  2254. luaL_checktype(L, 1, LUA_TUSERDATA);
  2255. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2256. luaL_checktype(L, 2, LUA_TUSERDATA);
  2257. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  2258. PolyBase *ptrRetVal = (PolyBase*)inst->createEvent(event);
  2259. if(ptrRetVal == NULL) {
  2260. lua_pushnil(L);
  2261. } else {
  2262. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2263. *userdataPtr = ptrRetVal;
  2264. }
  2265. return 1;
  2266. }
  2267. static int Polycode_CoreInput_clearInput(lua_State *L) {
  2268. luaL_checktype(L, 1, LUA_TUSERDATA);
  2269. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2270. inst->clearInput();
  2271. return 0;
  2272. }
  2273. static int Polycode_JoystickInfo(lua_State *L) {
  2274. JoystickInfo *inst = new JoystickInfo();
  2275. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2276. *userdataPtr = (PolyBase*)inst;
  2277. luaL_getmetatable(L, "Polycode.JoystickInfo");
  2278. lua_setmetatable(L, -2);
  2279. return 1;
  2280. }
  2281. static int Polycode_CoreServices_getInstance(lua_State *L) {
  2282. luaL_checktype(L, 1, LUA_TUSERDATA);
  2283. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2284. PolyBase *ptrRetVal = (PolyBase*)inst->getInstance();
  2285. if(ptrRetVal == NULL) {
  2286. lua_pushnil(L);
  2287. } else {
  2288. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2289. *userdataPtr = ptrRetVal;
  2290. }
  2291. return 1;
  2292. }
  2293. static int Polycode_CoreServices_setInstance(lua_State *L) {
  2294. luaL_checktype(L, 1, LUA_TUSERDATA);
  2295. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2296. luaL_checktype(L, 2, LUA_TUSERDATA);
  2297. CoreServices* _instance = (CoreServices*) *((PolyBase**)lua_touserdata(L, 2));
  2298. inst->setInstance(_instance);
  2299. return 0;
  2300. }
  2301. static int Polycode_CoreServices_getRenderMutex(lua_State *L) {
  2302. luaL_checktype(L, 1, LUA_TUSERDATA);
  2303. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2304. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderMutex();
  2305. if(ptrRetVal == NULL) {
  2306. lua_pushnil(L);
  2307. } else {
  2308. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2309. *userdataPtr = ptrRetVal;
  2310. }
  2311. return 1;
  2312. }
  2313. static int Polycode_CoreServices_createInstance(lua_State *L) {
  2314. luaL_checktype(L, 1, LUA_TUSERDATA);
  2315. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2316. inst->createInstance();
  2317. return 0;
  2318. }
  2319. static int Polycode_CoreServices_setRenderer(lua_State *L) {
  2320. luaL_checktype(L, 1, LUA_TUSERDATA);
  2321. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2322. luaL_checktype(L, 2, LUA_TUSERDATA);
  2323. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  2324. inst->setRenderer(renderer);
  2325. return 0;
  2326. }
  2327. static int Polycode_CoreServices_getRenderer(lua_State *L) {
  2328. luaL_checktype(L, 1, LUA_TUSERDATA);
  2329. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2330. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderer();
  2331. if(ptrRetVal == NULL) {
  2332. lua_pushnil(L);
  2333. } else {
  2334. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2335. *userdataPtr = ptrRetVal;
  2336. }
  2337. return 1;
  2338. }
  2339. static int Polycode_CoreServices_Update(lua_State *L) {
  2340. luaL_checktype(L, 1, LUA_TUSERDATA);
  2341. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2342. luaL_checktype(L, 2, LUA_TNUMBER);
  2343. int elapsed = lua_tointeger(L, 2);
  2344. inst->Update(elapsed);
  2345. return 0;
  2346. }
  2347. static int Polycode_CoreServices_fixedUpdate(lua_State *L) {
  2348. luaL_checktype(L, 1, LUA_TUSERDATA);
  2349. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2350. inst->fixedUpdate();
  2351. return 0;
  2352. }
  2353. static int Polycode_CoreServices_Render(lua_State *L) {
  2354. luaL_checktype(L, 1, LUA_TUSERDATA);
  2355. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2356. luaL_checktype(L, 2, LUA_TUSERDATA);
  2357. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  2358. inst->Render(viewport);
  2359. return 0;
  2360. }
  2361. static int Polycode_CoreServices_setCore(lua_State *L) {
  2362. luaL_checktype(L, 1, LUA_TUSERDATA);
  2363. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2364. luaL_checktype(L, 2, LUA_TUSERDATA);
  2365. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  2366. inst->setCore(core);
  2367. return 0;
  2368. }
  2369. static int Polycode_CoreServices_getCore(lua_State *L) {
  2370. luaL_checktype(L, 1, LUA_TUSERDATA);
  2371. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2372. PolyBase *ptrRetVal = (PolyBase*)inst->getCore();
  2373. if(ptrRetVal == NULL) {
  2374. lua_pushnil(L);
  2375. } else {
  2376. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2377. *userdataPtr = ptrRetVal;
  2378. }
  2379. return 1;
  2380. }
  2381. static int Polycode_CoreServices_getInput(lua_State *L) {
  2382. luaL_checktype(L, 1, LUA_TUSERDATA);
  2383. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2384. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  2385. if(ptrRetVal == NULL) {
  2386. lua_pushnil(L);
  2387. } else {
  2388. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2389. *userdataPtr = ptrRetVal;
  2390. }
  2391. return 1;
  2392. }
  2393. static int Polycode_CoreServices_getMaterialManager(lua_State *L) {
  2394. luaL_checktype(L, 1, LUA_TUSERDATA);
  2395. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2396. PolyBase *ptrRetVal = (PolyBase*)inst->getMaterialManager();
  2397. if(ptrRetVal == NULL) {
  2398. lua_pushnil(L);
  2399. } else {
  2400. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2401. *userdataPtr = ptrRetVal;
  2402. }
  2403. return 1;
  2404. }
  2405. static int Polycode_CoreServices_getSceneManager(lua_State *L) {
  2406. luaL_checktype(L, 1, LUA_TUSERDATA);
  2407. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2408. PolyBase *ptrRetVal = (PolyBase*)inst->getSceneManager();
  2409. if(ptrRetVal == NULL) {
  2410. lua_pushnil(L);
  2411. } else {
  2412. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2413. *userdataPtr = ptrRetVal;
  2414. }
  2415. return 1;
  2416. }
  2417. static int Polycode_CoreServices_getTimerManager(lua_State *L) {
  2418. luaL_checktype(L, 1, LUA_TUSERDATA);
  2419. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2420. PolyBase *ptrRetVal = (PolyBase*)inst->getTimerManager();
  2421. if(ptrRetVal == NULL) {
  2422. lua_pushnil(L);
  2423. } else {
  2424. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2425. *userdataPtr = ptrRetVal;
  2426. }
  2427. return 1;
  2428. }
  2429. static int Polycode_CoreServices_getTweenManager(lua_State *L) {
  2430. luaL_checktype(L, 1, LUA_TUSERDATA);
  2431. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2432. PolyBase *ptrRetVal = (PolyBase*)inst->getTweenManager();
  2433. if(ptrRetVal == NULL) {
  2434. lua_pushnil(L);
  2435. } else {
  2436. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2437. *userdataPtr = ptrRetVal;
  2438. }
  2439. return 1;
  2440. }
  2441. static int Polycode_CoreServices_getResourceManager(lua_State *L) {
  2442. luaL_checktype(L, 1, LUA_TUSERDATA);
  2443. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2444. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceManager();
  2445. if(ptrRetVal == NULL) {
  2446. lua_pushnil(L);
  2447. } else {
  2448. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2449. *userdataPtr = ptrRetVal;
  2450. }
  2451. return 1;
  2452. }
  2453. static int Polycode_CoreServices_getSoundManager(lua_State *L) {
  2454. luaL_checktype(L, 1, LUA_TUSERDATA);
  2455. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2456. PolyBase *ptrRetVal = (PolyBase*)inst->getSoundManager();
  2457. if(ptrRetVal == NULL) {
  2458. lua_pushnil(L);
  2459. } else {
  2460. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2461. *userdataPtr = ptrRetVal;
  2462. }
  2463. return 1;
  2464. }
  2465. static int Polycode_CoreServices_getLogger(lua_State *L) {
  2466. luaL_checktype(L, 1, LUA_TUSERDATA);
  2467. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2468. PolyBase *ptrRetVal = (PolyBase*)inst->getLogger();
  2469. if(ptrRetVal == NULL) {
  2470. lua_pushnil(L);
  2471. } else {
  2472. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2473. *userdataPtr = ptrRetVal;
  2474. }
  2475. return 1;
  2476. }
  2477. static int Polycode_CoreServices_getConfig(lua_State *L) {
  2478. luaL_checktype(L, 1, LUA_TUSERDATA);
  2479. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  2480. PolyBase *ptrRetVal = (PolyBase*)inst->getConfig();
  2481. if(ptrRetVal == NULL) {
  2482. lua_pushnil(L);
  2483. } else {
  2484. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2485. *userdataPtr = ptrRetVal;
  2486. }
  2487. return 1;
  2488. }
  2489. static int Polycode_Cubemap(lua_State *L) {
  2490. luaL_checktype(L, 1, LUA_TUSERDATA);
  2491. Texture* t0 = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  2492. luaL_checktype(L, 2, LUA_TUSERDATA);
  2493. Texture* t1 = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  2494. luaL_checktype(L, 3, LUA_TUSERDATA);
  2495. Texture* t2 = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  2496. luaL_checktype(L, 4, LUA_TUSERDATA);
  2497. Texture* t3 = (Texture*) *((PolyBase**)lua_touserdata(L, 4));
  2498. luaL_checktype(L, 5, LUA_TUSERDATA);
  2499. Texture* t4 = (Texture*) *((PolyBase**)lua_touserdata(L, 5));
  2500. luaL_checktype(L, 6, LUA_TUSERDATA);
  2501. Texture* t5 = (Texture*) *((PolyBase**)lua_touserdata(L, 6));
  2502. Cubemap *inst = new Cubemap(t0, t1, t2, t3, t4, t5);
  2503. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2504. *userdataPtr = (PolyBase*)inst;
  2505. luaL_getmetatable(L, "Polycode.Cubemap");
  2506. lua_setmetatable(L, -2);
  2507. return 1;
  2508. }
  2509. static int Polycode_Cubemap_getTexture(lua_State *L) {
  2510. luaL_checktype(L, 1, LUA_TUSERDATA);
  2511. Cubemap *inst = (Cubemap*) *((PolyBase**)lua_touserdata(L, 1));
  2512. luaL_checktype(L, 2, LUA_TNUMBER);
  2513. int index = lua_tointeger(L, 2);
  2514. PolyBase *ptrRetVal = (PolyBase*)inst->getTexture(index);
  2515. if(ptrRetVal == NULL) {
  2516. lua_pushnil(L);
  2517. } else {
  2518. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2519. *userdataPtr = ptrRetVal;
  2520. }
  2521. return 1;
  2522. }
  2523. static int Polycode_Cubemap_setTexture(lua_State *L) {
  2524. luaL_checktype(L, 1, LUA_TUSERDATA);
  2525. Cubemap *inst = (Cubemap*) *((PolyBase**)lua_touserdata(L, 1));
  2526. luaL_checktype(L, 2, LUA_TUSERDATA);
  2527. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  2528. luaL_checktype(L, 3, LUA_TNUMBER);
  2529. int index = lua_tointeger(L, 3);
  2530. inst->setTexture(texture, index);
  2531. return 0;
  2532. }
  2533. static int Polycode_Cubemap_recreateFromTextures(lua_State *L) {
  2534. luaL_checktype(L, 1, LUA_TUSERDATA);
  2535. Cubemap *inst = (Cubemap*) *((PolyBase**)lua_touserdata(L, 1));
  2536. inst->recreateFromTextures();
  2537. return 0;
  2538. }
  2539. static int Polycode_Data(lua_State *L) {
  2540. Data *inst = new Data();
  2541. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2542. *userdataPtr = (PolyBase*)inst;
  2543. luaL_getmetatable(L, "Polycode.Data");
  2544. lua_setmetatable(L, -2);
  2545. return 1;
  2546. }
  2547. static int Polycode_Data_loadFromFile(lua_State *L) {
  2548. luaL_checktype(L, 1, LUA_TUSERDATA);
  2549. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  2550. luaL_checktype(L, 2, LUA_TSTRING);
  2551. String fileName = String(lua_tostring(L, 2));
  2552. lua_pushboolean(L, inst->loadFromFile(fileName));
  2553. return 1;
  2554. }
  2555. static int Polycode_Data_getAsString(lua_State *L) {
  2556. luaL_checktype(L, 1, LUA_TUSERDATA);
  2557. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  2558. luaL_checktype(L, 2, LUA_TNUMBER);
  2559. int encoding = lua_tointeger(L, 2);
  2560. lua_pushstring(L, inst->getAsString(encoding).c_str());
  2561. return 1;
  2562. }
  2563. static int Polycode_Data_setFromString(lua_State *L) {
  2564. luaL_checktype(L, 1, LUA_TUSERDATA);
  2565. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  2566. luaL_checktype(L, 2, LUA_TSTRING);
  2567. String str = String(lua_tostring(L, 2));
  2568. luaL_checktype(L, 3, LUA_TNUMBER);
  2569. int encoding = lua_tointeger(L, 3);
  2570. inst->setFromString(str, encoding);
  2571. return 0;
  2572. }
  2573. static int Polycode_Data_saveToFile(lua_State *L) {
  2574. luaL_checktype(L, 1, LUA_TUSERDATA);
  2575. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  2576. luaL_checktype(L, 2, LUA_TSTRING);
  2577. String fileName = String(lua_tostring(L, 2));
  2578. lua_pushboolean(L, inst->saveToFile(fileName));
  2579. return 1;
  2580. }
  2581. static int Polycode_Data_getData(lua_State *L) {
  2582. luaL_checktype(L, 1, LUA_TUSERDATA);
  2583. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  2584. PolyBase *ptrRetVal = (PolyBase*)inst->getData();
  2585. if(ptrRetVal == NULL) {
  2586. lua_pushnil(L);
  2587. } else {
  2588. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2589. *userdataPtr = ptrRetVal;
  2590. }
  2591. return 1;
  2592. }
  2593. static int Polycode_Rotation(lua_State *L) {
  2594. Rotation *inst = new Rotation();
  2595. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2596. *userdataPtr = (PolyBase*)inst;
  2597. luaL_getmetatable(L, "Polycode.Rotation");
  2598. lua_setmetatable(L, -2);
  2599. return 1;
  2600. }
  2601. static int Polycode_Entity(lua_State *L) {
  2602. Entity *inst = new Entity();
  2603. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2604. *userdataPtr = (PolyBase*)inst;
  2605. luaL_getmetatable(L, "Polycode.Entity");
  2606. lua_setmetatable(L, -2);
  2607. return 1;
  2608. }
  2609. static int Polycode_Entity_initEntity(lua_State *L) {
  2610. luaL_checktype(L, 1, LUA_TUSERDATA);
  2611. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2612. inst->initEntity();
  2613. return 0;
  2614. }
  2615. static int Polycode_Entity_Render(lua_State *L) {
  2616. luaL_checktype(L, 1, LUA_TUSERDATA);
  2617. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2618. luaL_checktype(L, 2, LUA_TUSERDATA);
  2619. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  2620. inst->Render(buffer);
  2621. return 0;
  2622. }
  2623. static int Polycode_Entity_Update(lua_State *L) {
  2624. luaL_checktype(L, 1, LUA_TUSERDATA);
  2625. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2626. inst->Update();
  2627. return 0;
  2628. }
  2629. static int Polycode_Entity_fixedUpdate(lua_State *L) {
  2630. luaL_checktype(L, 1, LUA_TUSERDATA);
  2631. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2632. inst->fixedUpdate();
  2633. return 0;
  2634. }
  2635. static int Polycode_Entity_transformAndRender(lua_State *L) {
  2636. luaL_checktype(L, 1, LUA_TUSERDATA);
  2637. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2638. luaL_checktype(L, 2, LUA_TUSERDATA);
  2639. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  2640. luaL_checktype(L, 3, LUA_TUSERDATA);
  2641. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  2642. inst->transformAndRender(drawBuffer, parentScissorBox);
  2643. return 0;
  2644. }
  2645. static int Polycode_Entity_renderChildren(lua_State *L) {
  2646. luaL_checktype(L, 1, LUA_TUSERDATA);
  2647. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2648. luaL_checktype(L, 2, LUA_TUSERDATA);
  2649. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  2650. luaL_checktype(L, 3, LUA_TUSERDATA);
  2651. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  2652. inst->renderChildren(buffer, parentScissorBox);
  2653. return 0;
  2654. }
  2655. static int Polycode_Entity_Clone(lua_State *L) {
  2656. luaL_checktype(L, 1, LUA_TUSERDATA);
  2657. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2658. luaL_checktype(L, 2, LUA_TBOOLEAN);
  2659. bool deepClone = lua_toboolean(L, 2) != 0;
  2660. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2661. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  2662. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  2663. if(ptrRetVal == NULL) {
  2664. lua_pushnil(L);
  2665. } else {
  2666. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2667. *userdataPtr = ptrRetVal;
  2668. }
  2669. return 1;
  2670. }
  2671. static int Polycode_Entity_applyClone(lua_State *L) {
  2672. luaL_checktype(L, 1, LUA_TUSERDATA);
  2673. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2674. luaL_checktype(L, 2, LUA_TUSERDATA);
  2675. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2676. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2677. bool deepClone = lua_toboolean(L, 3) != 0;
  2678. luaL_checktype(L, 4, LUA_TBOOLEAN);
  2679. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  2680. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  2681. return 0;
  2682. }
  2683. static int Polycode_Entity_dirtyMatrix(lua_State *L) {
  2684. luaL_checktype(L, 1, LUA_TUSERDATA);
  2685. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2686. luaL_checktype(L, 2, LUA_TBOOLEAN);
  2687. bool val = lua_toboolean(L, 2) != 0;
  2688. inst->dirtyMatrix(val);
  2689. return 0;
  2690. }
  2691. static int Polycode_Entity_rebuildTransformMatrix(lua_State *L) {
  2692. luaL_checktype(L, 1, LUA_TUSERDATA);
  2693. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2694. inst->rebuildTransformMatrix();
  2695. return 0;
  2696. }
  2697. static int Polycode_Entity_updateEntityMatrix(lua_State *L) {
  2698. luaL_checktype(L, 1, LUA_TUSERDATA);
  2699. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2700. inst->updateEntityMatrix();
  2701. return 0;
  2702. }
  2703. static int Polycode_Entity_getTransformMatrix(lua_State *L) {
  2704. luaL_checktype(L, 1, LUA_TUSERDATA);
  2705. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2706. Matrix4 *retInst = new Matrix4();
  2707. *retInst = inst->getTransformMatrix();
  2708. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2709. luaL_getmetatable(L, "Polycode.Matrix4");
  2710. lua_setmetatable(L, -2);
  2711. *userdataPtr = (PolyBase*)retInst;
  2712. return 1;
  2713. }
  2714. static int Polycode_Entity_getConcatenatedMatrix(lua_State *L) {
  2715. luaL_checktype(L, 1, LUA_TUSERDATA);
  2716. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2717. Matrix4 *retInst = new Matrix4();
  2718. *retInst = inst->getConcatenatedMatrix();
  2719. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2720. luaL_getmetatable(L, "Polycode.Matrix4");
  2721. lua_setmetatable(L, -2);
  2722. *userdataPtr = (PolyBase*)retInst;
  2723. return 1;
  2724. }
  2725. static int Polycode_Entity_getConcatenatedMatrixRelativeTo(lua_State *L) {
  2726. luaL_checktype(L, 1, LUA_TUSERDATA);
  2727. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2728. luaL_checktype(L, 2, LUA_TUSERDATA);
  2729. Entity* relativeEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2730. Matrix4 *retInst = new Matrix4();
  2731. *retInst = inst->getConcatenatedMatrixRelativeTo(relativeEntity);
  2732. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2733. luaL_getmetatable(L, "Polycode.Matrix4");
  2734. lua_setmetatable(L, -2);
  2735. *userdataPtr = (PolyBase*)retInst;
  2736. return 1;
  2737. }
  2738. static int Polycode_Entity_getAnchorAdjustedMatrix(lua_State *L) {
  2739. luaL_checktype(L, 1, LUA_TUSERDATA);
  2740. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2741. Matrix4 *retInst = new Matrix4();
  2742. *retInst = inst->getAnchorAdjustedMatrix();
  2743. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2744. luaL_getmetatable(L, "Polycode.Matrix4");
  2745. lua_setmetatable(L, -2);
  2746. *userdataPtr = (PolyBase*)retInst;
  2747. return 1;
  2748. }
  2749. static int Polycode_Entity_getConcatenatedRollMatrix(lua_State *L) {
  2750. luaL_checktype(L, 1, LUA_TUSERDATA);
  2751. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2752. Matrix4 *retInst = new Matrix4();
  2753. *retInst = inst->getConcatenatedRollMatrix();
  2754. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2755. luaL_getmetatable(L, "Polycode.Matrix4");
  2756. lua_setmetatable(L, -2);
  2757. *userdataPtr = (PolyBase*)retInst;
  2758. return 1;
  2759. }
  2760. static int Polycode_Entity_setTransformByMatrixPure(lua_State *L) {
  2761. luaL_checktype(L, 1, LUA_TUSERDATA);
  2762. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2763. luaL_checktype(L, 2, LUA_TUSERDATA);
  2764. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  2765. inst->setTransformByMatrixPure(matrix);
  2766. return 0;
  2767. }
  2768. static int Polycode_Entity_getLookAtMatrix(lua_State *L) {
  2769. luaL_checktype(L, 1, LUA_TUSERDATA);
  2770. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2771. luaL_checktype(L, 2, LUA_TUSERDATA);
  2772. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  2773. luaL_checktype(L, 3, LUA_TUSERDATA);
  2774. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  2775. Matrix4 *retInst = new Matrix4();
  2776. *retInst = inst->getLookAtMatrix(loc, upVector);
  2777. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2778. luaL_getmetatable(L, "Polycode.Matrix4");
  2779. lua_setmetatable(L, -2);
  2780. *userdataPtr = (PolyBase*)retInst;
  2781. return 1;
  2782. }
  2783. static int Polycode_Entity_addChild(lua_State *L) {
  2784. luaL_checktype(L, 1, LUA_TUSERDATA);
  2785. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2786. luaL_checktype(L, 2, LUA_TUSERDATA);
  2787. Entity* newChild = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2788. inst->addChild(newChild);
  2789. return 0;
  2790. }
  2791. static int Polycode_Entity_removeChild(lua_State *L) {
  2792. luaL_checktype(L, 1, LUA_TUSERDATA);
  2793. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2794. luaL_checktype(L, 2, LUA_TUSERDATA);
  2795. Entity* entityToRemove = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2796. inst->removeChild(entityToRemove);
  2797. return 0;
  2798. }
  2799. static int Polycode_Entity_moveChildUp(lua_State *L) {
  2800. luaL_checktype(L, 1, LUA_TUSERDATA);
  2801. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2802. luaL_checktype(L, 2, LUA_TUSERDATA);
  2803. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2804. inst->moveChildUp(child);
  2805. return 0;
  2806. }
  2807. static int Polycode_Entity_moveChildDown(lua_State *L) {
  2808. luaL_checktype(L, 1, LUA_TUSERDATA);
  2809. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2810. luaL_checktype(L, 2, LUA_TUSERDATA);
  2811. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2812. inst->moveChildDown(child);
  2813. return 0;
  2814. }
  2815. static int Polycode_Entity_moveChildTop(lua_State *L) {
  2816. luaL_checktype(L, 1, LUA_TUSERDATA);
  2817. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2818. luaL_checktype(L, 2, LUA_TUSERDATA);
  2819. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2820. inst->moveChildTop(child);
  2821. return 0;
  2822. }
  2823. static int Polycode_Entity_moveChildBottom(lua_State *L) {
  2824. luaL_checktype(L, 1, LUA_TUSERDATA);
  2825. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2826. luaL_checktype(L, 2, LUA_TUSERDATA);
  2827. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2828. inst->moveChildBottom(child);
  2829. return 0;
  2830. }
  2831. static int Polycode_Entity_setParentEntity(lua_State *L) {
  2832. luaL_checktype(L, 1, LUA_TUSERDATA);
  2833. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2834. luaL_checktype(L, 2, LUA_TUSERDATA);
  2835. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  2836. inst->setParentEntity(entity);
  2837. return 0;
  2838. }
  2839. static int Polycode_Entity_getParentEntity(lua_State *L) {
  2840. luaL_checktype(L, 1, LUA_TUSERDATA);
  2841. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2842. PolyBase *ptrRetVal = (PolyBase*)inst->getParentEntity();
  2843. if(ptrRetVal == NULL) {
  2844. lua_pushnil(L);
  2845. } else {
  2846. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2847. *userdataPtr = ptrRetVal;
  2848. }
  2849. return 1;
  2850. }
  2851. static int Polycode_Entity_getNumChildren(lua_State *L) {
  2852. luaL_checktype(L, 1, LUA_TUSERDATA);
  2853. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2854. lua_pushinteger(L, inst->getNumChildren());
  2855. return 1;
  2856. }
  2857. static int Polycode_Entity_getChildAtIndex(lua_State *L) {
  2858. luaL_checktype(L, 1, LUA_TUSERDATA);
  2859. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2860. luaL_checktype(L, 2, LUA_TNUMBER);
  2861. int index = lua_tointeger(L, 2);
  2862. PolyBase *ptrRetVal = (PolyBase*)inst->getChildAtIndex(index);
  2863. if(ptrRetVal == NULL) {
  2864. lua_pushnil(L);
  2865. } else {
  2866. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2867. *userdataPtr = ptrRetVal;
  2868. }
  2869. return 1;
  2870. }
  2871. static int Polycode_Entity_setOwnsChildrenRecursive(lua_State *L) {
  2872. luaL_checktype(L, 1, LUA_TUSERDATA);
  2873. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2874. luaL_checktype(L, 2, LUA_TBOOLEAN);
  2875. bool val = lua_toboolean(L, 2) != 0;
  2876. inst->setOwnsChildrenRecursive(val);
  2877. return 0;
  2878. }
  2879. static int Polycode_Entity_getPosition(lua_State *L) {
  2880. luaL_checktype(L, 1, LUA_TUSERDATA);
  2881. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2882. Vector3 *retInst = new Vector3();
  2883. *retInst = inst->getPosition();
  2884. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2885. luaL_getmetatable(L, "Polycode.Vector3");
  2886. lua_setmetatable(L, -2);
  2887. *userdataPtr = (PolyBase*)retInst;
  2888. return 1;
  2889. }
  2890. static int Polycode_Entity_getPosition2D(lua_State *L) {
  2891. luaL_checktype(L, 1, LUA_TUSERDATA);
  2892. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2893. Vector2 *retInst = new Vector2();
  2894. *retInst = inst->getPosition2D();
  2895. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2896. luaL_getmetatable(L, "Polycode.Vector2");
  2897. lua_setmetatable(L, -2);
  2898. *userdataPtr = (PolyBase*)retInst;
  2899. return 1;
  2900. }
  2901. static int Polycode_Entity_getCombinedPosition(lua_State *L) {
  2902. luaL_checktype(L, 1, LUA_TUSERDATA);
  2903. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2904. Vector3 *retInst = new Vector3();
  2905. *retInst = inst->getCombinedPosition();
  2906. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2907. luaL_getmetatable(L, "Polycode.Vector3");
  2908. lua_setmetatable(L, -2);
  2909. *userdataPtr = (PolyBase*)retInst;
  2910. return 1;
  2911. }
  2912. static int Polycode_Entity_setPosition(lua_State *L) {
  2913. luaL_checktype(L, 1, LUA_TUSERDATA);
  2914. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2915. luaL_checktype(L, 2, LUA_TNUMBER);
  2916. Number x = lua_tonumber(L, 2);
  2917. luaL_checktype(L, 3, LUA_TNUMBER);
  2918. Number y = lua_tonumber(L, 3);
  2919. luaL_checktype(L, 4, LUA_TNUMBER);
  2920. Number z = lua_tonumber(L, 4);
  2921. inst->setPosition(x, y, z);
  2922. return 0;
  2923. }
  2924. static int Polycode_Entity_setPositionX(lua_State *L) {
  2925. luaL_checktype(L, 1, LUA_TUSERDATA);
  2926. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2927. luaL_checktype(L, 2, LUA_TNUMBER);
  2928. Number x = lua_tonumber(L, 2);
  2929. inst->setPositionX(x);
  2930. return 0;
  2931. }
  2932. static int Polycode_Entity_setPositionY(lua_State *L) {
  2933. luaL_checktype(L, 1, LUA_TUSERDATA);
  2934. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2935. luaL_checktype(L, 2, LUA_TNUMBER);
  2936. Number y = lua_tonumber(L, 2);
  2937. inst->setPositionY(y);
  2938. return 0;
  2939. }
  2940. static int Polycode_Entity_Translate(lua_State *L) {
  2941. luaL_checktype(L, 1, LUA_TUSERDATA);
  2942. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2943. luaL_checktype(L, 2, LUA_TNUMBER);
  2944. Number x = lua_tonumber(L, 2);
  2945. luaL_checktype(L, 3, LUA_TNUMBER);
  2946. Number y = lua_tonumber(L, 3);
  2947. luaL_checktype(L, 4, LUA_TNUMBER);
  2948. Number z = lua_tonumber(L, 4);
  2949. inst->Translate(x, y, z);
  2950. return 0;
  2951. }
  2952. static int Polycode_Entity_setPositionZ(lua_State *L) {
  2953. luaL_checktype(L, 1, LUA_TUSERDATA);
  2954. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2955. luaL_checktype(L, 2, LUA_TNUMBER);
  2956. Number z = lua_tonumber(L, 2);
  2957. inst->setPositionZ(z);
  2958. return 0;
  2959. }
  2960. static int Polycode_Entity_setScaleX(lua_State *L) {
  2961. luaL_checktype(L, 1, LUA_TUSERDATA);
  2962. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2963. luaL_checktype(L, 2, LUA_TNUMBER);
  2964. Number x = lua_tonumber(L, 2);
  2965. inst->setScaleX(x);
  2966. return 0;
  2967. }
  2968. static int Polycode_Entity_setScaleY(lua_State *L) {
  2969. luaL_checktype(L, 1, LUA_TUSERDATA);
  2970. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2971. luaL_checktype(L, 2, LUA_TNUMBER);
  2972. Number y = lua_tonumber(L, 2);
  2973. inst->setScaleY(y);
  2974. return 0;
  2975. }
  2976. static int Polycode_Entity_setScaleZ(lua_State *L) {
  2977. luaL_checktype(L, 1, LUA_TUSERDATA);
  2978. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2979. luaL_checktype(L, 2, LUA_TNUMBER);
  2980. Number z = lua_tonumber(L, 2);
  2981. inst->setScaleZ(z);
  2982. return 0;
  2983. }
  2984. static int Polycode_Entity_Scale(lua_State *L) {
  2985. luaL_checktype(L, 1, LUA_TUSERDATA);
  2986. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2987. luaL_checktype(L, 2, LUA_TNUMBER);
  2988. Number x = lua_tonumber(L, 2);
  2989. luaL_checktype(L, 3, LUA_TNUMBER);
  2990. Number y = lua_tonumber(L, 3);
  2991. luaL_checktype(L, 4, LUA_TNUMBER);
  2992. Number z = lua_tonumber(L, 4);
  2993. inst->Scale(x, y, z);
  2994. return 0;
  2995. }
  2996. static int Polycode_Entity_setScale(lua_State *L) {
  2997. luaL_checktype(L, 1, LUA_TUSERDATA);
  2998. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  2999. luaL_checktype(L, 2, LUA_TNUMBER);
  3000. Number x = lua_tonumber(L, 2);
  3001. luaL_checktype(L, 3, LUA_TNUMBER);
  3002. Number y = lua_tonumber(L, 3);
  3003. luaL_checktype(L, 4, LUA_TNUMBER);
  3004. Number z = lua_tonumber(L, 4);
  3005. inst->setScale(x, y, z);
  3006. return 0;
  3007. }
  3008. static int Polycode_Entity_getCompoundScale(lua_State *L) {
  3009. luaL_checktype(L, 1, LUA_TUSERDATA);
  3010. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3011. Vector3 *retInst = new Vector3();
  3012. *retInst = inst->getCompoundScale();
  3013. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3014. luaL_getmetatable(L, "Polycode.Vector3");
  3015. lua_setmetatable(L, -2);
  3016. *userdataPtr = (PolyBase*)retInst;
  3017. return 1;
  3018. }
  3019. static int Polycode_Entity_getScale(lua_State *L) {
  3020. luaL_checktype(L, 1, LUA_TUSERDATA);
  3021. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3022. Vector3 *retInst = new Vector3();
  3023. *retInst = inst->getScale();
  3024. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3025. luaL_getmetatable(L, "Polycode.Vector3");
  3026. lua_setmetatable(L, -2);
  3027. *userdataPtr = (PolyBase*)retInst;
  3028. return 1;
  3029. }
  3030. static int Polycode_Entity_getRotationEuler(lua_State *L) {
  3031. luaL_checktype(L, 1, LUA_TUSERDATA);
  3032. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3033. Vector3 *retInst = new Vector3();
  3034. *retInst = inst->getRotationEuler();
  3035. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3036. luaL_getmetatable(L, "Polycode.Vector3");
  3037. lua_setmetatable(L, -2);
  3038. *userdataPtr = (PolyBase*)retInst;
  3039. return 1;
  3040. }
  3041. static int Polycode_Entity_getCombinedPitch(lua_State *L) {
  3042. luaL_checktype(L, 1, LUA_TUSERDATA);
  3043. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3044. lua_pushnumber(L, inst->getCombinedPitch());
  3045. return 1;
  3046. }
  3047. static int Polycode_Entity_getCombinedYaw(lua_State *L) {
  3048. luaL_checktype(L, 1, LUA_TUSERDATA);
  3049. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3050. lua_pushnumber(L, inst->getCombinedYaw());
  3051. return 1;
  3052. }
  3053. static int Polycode_Entity_getCombinedRoll(lua_State *L) {
  3054. luaL_checktype(L, 1, LUA_TUSERDATA);
  3055. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3056. lua_pushnumber(L, inst->getCombinedRoll());
  3057. return 1;
  3058. }
  3059. static int Polycode_Entity_rebuildRotation(lua_State *L) {
  3060. luaL_checktype(L, 1, LUA_TUSERDATA);
  3061. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3062. inst->rebuildRotation();
  3063. return 0;
  3064. }
  3065. static int Polycode_Entity_setRotationEuler(lua_State *L) {
  3066. luaL_checktype(L, 1, LUA_TUSERDATA);
  3067. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3068. luaL_checktype(L, 2, LUA_TUSERDATA);
  3069. Vector3 rotation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3070. inst->setRotationEuler(rotation);
  3071. return 0;
  3072. }
  3073. static int Polycode_Entity_setPitch(lua_State *L) {
  3074. luaL_checktype(L, 1, LUA_TUSERDATA);
  3075. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3076. luaL_checktype(L, 2, LUA_TNUMBER);
  3077. Number pitch = lua_tonumber(L, 2);
  3078. inst->setPitch(pitch);
  3079. return 0;
  3080. }
  3081. static int Polycode_Entity_setYaw(lua_State *L) {
  3082. luaL_checktype(L, 1, LUA_TUSERDATA);
  3083. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3084. luaL_checktype(L, 2, LUA_TNUMBER);
  3085. Number yaw = lua_tonumber(L, 2);
  3086. inst->setYaw(yaw);
  3087. return 0;
  3088. }
  3089. static int Polycode_Entity_setRoll(lua_State *L) {
  3090. luaL_checktype(L, 1, LUA_TUSERDATA);
  3091. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3092. luaL_checktype(L, 2, LUA_TNUMBER);
  3093. Number roll = lua_tonumber(L, 2);
  3094. inst->setRoll(roll);
  3095. return 0;
  3096. }
  3097. static int Polycode_Entity_Roll(lua_State *L) {
  3098. luaL_checktype(L, 1, LUA_TUSERDATA);
  3099. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3100. luaL_checktype(L, 2, LUA_TNUMBER);
  3101. Number roll = lua_tonumber(L, 2);
  3102. inst->Roll(roll);
  3103. return 0;
  3104. }
  3105. static int Polycode_Entity_Yaw(lua_State *L) {
  3106. luaL_checktype(L, 1, LUA_TUSERDATA);
  3107. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3108. luaL_checktype(L, 2, LUA_TNUMBER);
  3109. Number yaw = lua_tonumber(L, 2);
  3110. inst->Yaw(yaw);
  3111. return 0;
  3112. }
  3113. static int Polycode_Entity_Pitch(lua_State *L) {
  3114. luaL_checktype(L, 1, LUA_TUSERDATA);
  3115. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3116. luaL_checktype(L, 2, LUA_TNUMBER);
  3117. Number pitch = lua_tonumber(L, 2);
  3118. inst->Pitch(pitch);
  3119. return 0;
  3120. }
  3121. static int Polycode_Entity_getPitch(lua_State *L) {
  3122. luaL_checktype(L, 1, LUA_TUSERDATA);
  3123. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3124. lua_pushnumber(L, inst->getPitch());
  3125. return 1;
  3126. }
  3127. static int Polycode_Entity_getYaw(lua_State *L) {
  3128. luaL_checktype(L, 1, LUA_TUSERDATA);
  3129. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3130. lua_pushnumber(L, inst->getYaw());
  3131. return 1;
  3132. }
  3133. static int Polycode_Entity_getRoll(lua_State *L) {
  3134. luaL_checktype(L, 1, LUA_TUSERDATA);
  3135. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3136. lua_pushnumber(L, inst->getRoll());
  3137. return 1;
  3138. }
  3139. static int Polycode_Entity_getWidth(lua_State *L) {
  3140. luaL_checktype(L, 1, LUA_TUSERDATA);
  3141. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3142. lua_pushnumber(L, inst->getWidth());
  3143. return 1;
  3144. }
  3145. static int Polycode_Entity_getHeight(lua_State *L) {
  3146. luaL_checktype(L, 1, LUA_TUSERDATA);
  3147. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3148. lua_pushnumber(L, inst->getHeight());
  3149. return 1;
  3150. }
  3151. static int Polycode_Entity_getDepth(lua_State *L) {
  3152. luaL_checktype(L, 1, LUA_TUSERDATA);
  3153. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3154. lua_pushnumber(L, inst->getDepth());
  3155. return 1;
  3156. }
  3157. static int Polycode_Entity_setWidth(lua_State *L) {
  3158. luaL_checktype(L, 1, LUA_TUSERDATA);
  3159. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3160. luaL_checktype(L, 2, LUA_TNUMBER);
  3161. Number width = lua_tonumber(L, 2);
  3162. inst->setWidth(width);
  3163. return 0;
  3164. }
  3165. static int Polycode_Entity_setHeight(lua_State *L) {
  3166. luaL_checktype(L, 1, LUA_TUSERDATA);
  3167. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3168. luaL_checktype(L, 2, LUA_TNUMBER);
  3169. Number height = lua_tonumber(L, 2);
  3170. inst->setHeight(height);
  3171. return 0;
  3172. }
  3173. static int Polycode_Entity_setDepth(lua_State *L) {
  3174. luaL_checktype(L, 1, LUA_TUSERDATA);
  3175. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3176. luaL_checktype(L, 2, LUA_TNUMBER);
  3177. Number depth = lua_tonumber(L, 2);
  3178. inst->setDepth(depth);
  3179. return 0;
  3180. }
  3181. static int Polycode_Entity_setRotationQuat(lua_State *L) {
  3182. luaL_checktype(L, 1, LUA_TUSERDATA);
  3183. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3184. luaL_checktype(L, 2, LUA_TNUMBER);
  3185. Number w = lua_tonumber(L, 2);
  3186. luaL_checktype(L, 3, LUA_TNUMBER);
  3187. Number x = lua_tonumber(L, 3);
  3188. luaL_checktype(L, 4, LUA_TNUMBER);
  3189. Number y = lua_tonumber(L, 4);
  3190. luaL_checktype(L, 5, LUA_TNUMBER);
  3191. Number z = lua_tonumber(L, 5);
  3192. inst->setRotationQuat(w, x, y, z);
  3193. return 0;
  3194. }
  3195. static int Polycode_Entity_setRotationByQuaternion(lua_State *L) {
  3196. luaL_checktype(L, 1, LUA_TUSERDATA);
  3197. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3198. luaL_checktype(L, 2, LUA_TUSERDATA);
  3199. Quaternion quaternion = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  3200. inst->setRotationByQuaternion(quaternion);
  3201. return 0;
  3202. }
  3203. static int Polycode_Entity_getRotationQuat(lua_State *L) {
  3204. luaL_checktype(L, 1, LUA_TUSERDATA);
  3205. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3206. Quaternion *retInst = new Quaternion();
  3207. *retInst = inst->getRotationQuat();
  3208. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3209. luaL_getmetatable(L, "Polycode.Quaternion");
  3210. lua_setmetatable(L, -2);
  3211. *userdataPtr = (PolyBase*)retInst;
  3212. return 1;
  3213. }
  3214. static int Polycode_Entity_getConcatenatedQuat(lua_State *L) {
  3215. luaL_checktype(L, 1, LUA_TUSERDATA);
  3216. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3217. Quaternion *retInst = new Quaternion();
  3218. *retInst = inst->getConcatenatedQuat();
  3219. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3220. luaL_getmetatable(L, "Polycode.Quaternion");
  3221. lua_setmetatable(L, -2);
  3222. *userdataPtr = (PolyBase*)retInst;
  3223. return 1;
  3224. }
  3225. static int Polycode_Entity_lookAt(lua_State *L) {
  3226. luaL_checktype(L, 1, LUA_TUSERDATA);
  3227. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3228. luaL_checktype(L, 2, LUA_TUSERDATA);
  3229. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3230. luaL_checktype(L, 3, LUA_TUSERDATA);
  3231. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  3232. inst->lookAt(loc, upVector);
  3233. return 0;
  3234. }
  3235. static int Polycode_Entity_lookAtEntity(lua_State *L) {
  3236. luaL_checktype(L, 1, LUA_TUSERDATA);
  3237. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3238. luaL_checktype(L, 2, LUA_TUSERDATA);
  3239. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  3240. luaL_checktype(L, 3, LUA_TUSERDATA);
  3241. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  3242. inst->lookAtEntity(entity, upVector);
  3243. return 0;
  3244. }
  3245. static int Polycode_Entity_getCombinedColor(lua_State *L) {
  3246. luaL_checktype(L, 1, LUA_TUSERDATA);
  3247. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3248. Color *retInst = new Color();
  3249. *retInst = inst->getCombinedColor();
  3250. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3251. luaL_getmetatable(L, "Polycode.Color");
  3252. lua_setmetatable(L, -2);
  3253. *userdataPtr = (PolyBase*)retInst;
  3254. return 1;
  3255. }
  3256. static int Polycode_Entity_setColor(lua_State *L) {
  3257. luaL_checktype(L, 1, LUA_TUSERDATA);
  3258. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3259. luaL_checktype(L, 2, LUA_TNUMBER);
  3260. Number r = lua_tonumber(L, 2);
  3261. luaL_checktype(L, 3, LUA_TNUMBER);
  3262. Number g = lua_tonumber(L, 3);
  3263. luaL_checktype(L, 4, LUA_TNUMBER);
  3264. Number b = lua_tonumber(L, 4);
  3265. luaL_checktype(L, 5, LUA_TNUMBER);
  3266. Number a = lua_tonumber(L, 5);
  3267. inst->setColor(r, g, b, a);
  3268. return 0;
  3269. }
  3270. static int Polycode_Entity_setColorInt(lua_State *L) {
  3271. luaL_checktype(L, 1, LUA_TUSERDATA);
  3272. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3273. luaL_checktype(L, 2, LUA_TNUMBER);
  3274. int r = lua_tointeger(L, 2);
  3275. luaL_checktype(L, 3, LUA_TNUMBER);
  3276. int g = lua_tointeger(L, 3);
  3277. luaL_checktype(L, 4, LUA_TNUMBER);
  3278. int b = lua_tointeger(L, 4);
  3279. luaL_checktype(L, 5, LUA_TNUMBER);
  3280. int a = lua_tointeger(L, 5);
  3281. inst->setColorInt(r, g, b, a);
  3282. return 0;
  3283. }
  3284. static int Polycode_Entity_setAnchorPoint(lua_State *L) {
  3285. luaL_checktype(L, 1, LUA_TUSERDATA);
  3286. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3287. luaL_checktype(L, 2, LUA_TUSERDATA);
  3288. Vector3 anchorPoint = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3289. inst->setAnchorPoint(anchorPoint);
  3290. return 0;
  3291. }
  3292. static int Polycode_Entity_getAnchorPoint(lua_State *L) {
  3293. luaL_checktype(L, 1, LUA_TUSERDATA);
  3294. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3295. Vector3 *retInst = new Vector3();
  3296. *retInst = inst->getAnchorPoint();
  3297. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3298. luaL_getmetatable(L, "Polycode.Vector3");
  3299. lua_setmetatable(L, -2);
  3300. *userdataPtr = (PolyBase*)retInst;
  3301. return 1;
  3302. }
  3303. static int Polycode_Entity_onMouseDown(lua_State *L) {
  3304. luaL_checktype(L, 1, LUA_TUSERDATA);
  3305. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3306. luaL_checktype(L, 2, LUA_TUSERDATA);
  3307. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3308. luaL_checktype(L, 3, LUA_TNUMBER);
  3309. int mouseButton = lua_tointeger(L, 3);
  3310. luaL_checktype(L, 4, LUA_TNUMBER);
  3311. int timestamp = lua_tointeger(L, 4);
  3312. MouseEventResult *retInst = new MouseEventResult();
  3313. *retInst = inst->onMouseDown(ray, mouseButton, timestamp);
  3314. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3315. luaL_getmetatable(L, "Polycode.MouseEventResult");
  3316. lua_setmetatable(L, -2);
  3317. *userdataPtr = (PolyBase*)retInst;
  3318. return 1;
  3319. }
  3320. static int Polycode_Entity_onMouseUp(lua_State *L) {
  3321. luaL_checktype(L, 1, LUA_TUSERDATA);
  3322. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3323. luaL_checktype(L, 2, LUA_TUSERDATA);
  3324. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3325. luaL_checktype(L, 3, LUA_TNUMBER);
  3326. int mouseButton = lua_tointeger(L, 3);
  3327. luaL_checktype(L, 4, LUA_TNUMBER);
  3328. int timestamp = lua_tointeger(L, 4);
  3329. MouseEventResult *retInst = new MouseEventResult();
  3330. *retInst = inst->onMouseUp(ray, mouseButton, timestamp);
  3331. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3332. luaL_getmetatable(L, "Polycode.MouseEventResult");
  3333. lua_setmetatable(L, -2);
  3334. *userdataPtr = (PolyBase*)retInst;
  3335. return 1;
  3336. }
  3337. static int Polycode_Entity_onMouseMove(lua_State *L) {
  3338. luaL_checktype(L, 1, LUA_TUSERDATA);
  3339. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3340. luaL_checktype(L, 2, LUA_TUSERDATA);
  3341. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3342. luaL_checktype(L, 3, LUA_TNUMBER);
  3343. int timestamp = lua_tointeger(L, 3);
  3344. MouseEventResult *retInst = new MouseEventResult();
  3345. *retInst = inst->onMouseMove(ray, timestamp);
  3346. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3347. luaL_getmetatable(L, "Polycode.MouseEventResult");
  3348. lua_setmetatable(L, -2);
  3349. *userdataPtr = (PolyBase*)retInst;
  3350. return 1;
  3351. }
  3352. static int Polycode_Entity_onMouseWheelUp(lua_State *L) {
  3353. luaL_checktype(L, 1, LUA_TUSERDATA);
  3354. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3355. luaL_checktype(L, 2, LUA_TUSERDATA);
  3356. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3357. luaL_checktype(L, 3, LUA_TNUMBER);
  3358. int timestamp = lua_tointeger(L, 3);
  3359. MouseEventResult *retInst = new MouseEventResult();
  3360. *retInst = inst->onMouseWheelUp(ray, timestamp);
  3361. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3362. luaL_getmetatable(L, "Polycode.MouseEventResult");
  3363. lua_setmetatable(L, -2);
  3364. *userdataPtr = (PolyBase*)retInst;
  3365. return 1;
  3366. }
  3367. static int Polycode_Entity_onMouseWheelDown(lua_State *L) {
  3368. luaL_checktype(L, 1, LUA_TUSERDATA);
  3369. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3370. luaL_checktype(L, 2, LUA_TUSERDATA);
  3371. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3372. luaL_checktype(L, 3, LUA_TNUMBER);
  3373. int timestamp = lua_tointeger(L, 3);
  3374. MouseEventResult *retInst = new MouseEventResult();
  3375. *retInst = inst->onMouseWheelDown(ray, timestamp);
  3376. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3377. luaL_getmetatable(L, "Polycode.MouseEventResult");
  3378. lua_setmetatable(L, -2);
  3379. *userdataPtr = (PolyBase*)retInst;
  3380. return 1;
  3381. }
  3382. static int Polycode_Entity_setDepthOnly(lua_State *L) {
  3383. luaL_checktype(L, 1, LUA_TUSERDATA);
  3384. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3385. luaL_checktype(L, 2, LUA_TBOOLEAN);
  3386. bool val = lua_toboolean(L, 2) != 0;
  3387. inst->setDepthOnly(val);
  3388. return 0;
  3389. }
  3390. static int Polycode_Entity_getDepthOnly(lua_State *L) {
  3391. luaL_checktype(L, 1, LUA_TUSERDATA);
  3392. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3393. lua_pushboolean(L, inst->getDepthOnly());
  3394. return 1;
  3395. }
  3396. static int Polycode_Entity_setUserData(lua_State *L) {
  3397. luaL_checktype(L, 1, LUA_TUSERDATA);
  3398. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3399. luaL_checktype(L, 2, LUA_TUSERDATA);
  3400. void* userData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  3401. inst->setUserData(userData);
  3402. return 0;
  3403. }
  3404. static int Polycode_Entity_getUserData(lua_State *L) {
  3405. luaL_checktype(L, 1, LUA_TUSERDATA);
  3406. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3407. PolyBase *ptrRetVal = (PolyBase*)inst->getUserData();
  3408. if(ptrRetVal == NULL) {
  3409. lua_pushnil(L);
  3410. } else {
  3411. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3412. *userdataPtr = ptrRetVal;
  3413. }
  3414. return 1;
  3415. }
  3416. static int Polycode_Entity_setBlendingMode(lua_State *L) {
  3417. luaL_checktype(L, 1, LUA_TUSERDATA);
  3418. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3419. luaL_checktype(L, 2, LUA_TNUMBER);
  3420. int newBlendingMode = lua_tointeger(L, 2);
  3421. inst->setBlendingMode(newBlendingMode);
  3422. return 0;
  3423. }
  3424. static int Polycode_Entity_getBlendingMode(lua_State *L) {
  3425. luaL_checktype(L, 1, LUA_TUSERDATA);
  3426. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3427. lua_pushinteger(L, inst->getBlendingMode());
  3428. return 1;
  3429. }
  3430. static int Polycode_Entity_getEntityById(lua_State *L) {
  3431. luaL_checktype(L, 1, LUA_TUSERDATA);
  3432. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3433. luaL_checktype(L, 2, LUA_TSTRING);
  3434. String id = String(lua_tostring(L, 2));
  3435. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3436. bool recursive = lua_toboolean(L, 3) != 0;
  3437. PolyBase *ptrRetVal = (PolyBase*)inst->getEntityById(id, recursive);
  3438. if(ptrRetVal == NULL) {
  3439. lua_pushnil(L);
  3440. } else {
  3441. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3442. *userdataPtr = ptrRetVal;
  3443. }
  3444. return 1;
  3445. }
  3446. static int Polycode_Entity_getEntitiesByTag(lua_State *L) {
  3447. luaL_checktype(L, 1, LUA_TUSERDATA);
  3448. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3449. luaL_checktype(L, 2, LUA_TSTRING);
  3450. String tag = String(lua_tostring(L, 2));
  3451. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3452. bool recursive = lua_toboolean(L, 3) != 0;
  3453. }
  3454. static int Polycode_Entity_getEntitiesByLayerID(lua_State *L) {
  3455. luaL_checktype(L, 1, LUA_TUSERDATA);
  3456. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3457. luaL_checktype(L, 2, LUA_TUSERDATA);
  3458. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  3459. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3460. bool recursive = lua_toboolean(L, 3) != 0;
  3461. }
  3462. static int Polycode_Entity_getEntityProp(lua_State *L) {
  3463. luaL_checktype(L, 1, LUA_TUSERDATA);
  3464. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3465. luaL_checktype(L, 2, LUA_TSTRING);
  3466. String propName = String(lua_tostring(L, 2));
  3467. lua_pushstring(L, inst->getEntityProp(propName).c_str());
  3468. return 1;
  3469. }
  3470. static int Polycode_Entity_setEntityProp(lua_State *L) {
  3471. luaL_checktype(L, 1, LUA_TUSERDATA);
  3472. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3473. luaL_checktype(L, 2, LUA_TSTRING);
  3474. String propName = String(lua_tostring(L, 2));
  3475. luaL_checktype(L, 3, LUA_TSTRING);
  3476. String propValue = String(lua_tostring(L, 3));
  3477. inst->setEntityProp(propName, propValue);
  3478. return 0;
  3479. }
  3480. static int Polycode_Entity_setInverseY(lua_State *L) {
  3481. luaL_checktype(L, 1, LUA_TUSERDATA);
  3482. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3483. luaL_checktype(L, 2, LUA_TBOOLEAN);
  3484. bool val = lua_toboolean(L, 2) != 0;
  3485. inst->setInverseY(val);
  3486. return 0;
  3487. }
  3488. static int Polycode_Entity_getInverseY(lua_State *L) {
  3489. luaL_checktype(L, 1, LUA_TUSERDATA);
  3490. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3491. lua_pushboolean(L, inst->getInverseY());
  3492. return 1;
  3493. }
  3494. static int Polycode_Entity_doUpdates(lua_State *L) {
  3495. luaL_checktype(L, 1, LUA_TUSERDATA);
  3496. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3497. inst->doUpdates();
  3498. return 0;
  3499. }
  3500. static int Polycode_Entity_doFixedUpdates(lua_State *L) {
  3501. luaL_checktype(L, 1, LUA_TUSERDATA);
  3502. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3503. inst->doFixedUpdates();
  3504. return 0;
  3505. }
  3506. static int Polycode_Entity_buildPositionMatrix(lua_State *L) {
  3507. luaL_checktype(L, 1, LUA_TUSERDATA);
  3508. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3509. Matrix4 *retInst = new Matrix4();
  3510. *retInst = inst->buildPositionMatrix();
  3511. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3512. luaL_getmetatable(L, "Polycode.Matrix4");
  3513. lua_setmetatable(L, -2);
  3514. *userdataPtr = (PolyBase*)retInst;
  3515. return 1;
  3516. }
  3517. static int Polycode_Entity_setRenderer(lua_State *L) {
  3518. luaL_checktype(L, 1, LUA_TUSERDATA);
  3519. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3520. luaL_checktype(L, 2, LUA_TUSERDATA);
  3521. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  3522. inst->setRenderer(renderer);
  3523. return 0;
  3524. }
  3525. static int Polycode_Entity_customHitDetection(lua_State *L) {
  3526. luaL_checktype(L, 1, LUA_TUSERDATA);
  3527. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3528. luaL_checktype(L, 2, LUA_TUSERDATA);
  3529. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  3530. lua_pushboolean(L, inst->customHitDetection(ray));
  3531. return 1;
  3532. }
  3533. static int Polycode_Entity_getNumTags(lua_State *L) {
  3534. luaL_checktype(L, 1, LUA_TUSERDATA);
  3535. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3536. lua_pushinteger(L, inst->getNumTags());
  3537. return 1;
  3538. }
  3539. static int Polycode_Entity_getTagAtIndex(lua_State *L) {
  3540. luaL_checktype(L, 1, LUA_TUSERDATA);
  3541. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3542. luaL_checktype(L, 2, LUA_TNUMBER);
  3543. int index = lua_tointeger(L, 2);
  3544. lua_pushstring(L, inst->getTagAtIndex(index).c_str());
  3545. return 1;
  3546. }
  3547. static int Polycode_Entity_hasTag(lua_State *L) {
  3548. luaL_checktype(L, 1, LUA_TUSERDATA);
  3549. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3550. luaL_checktype(L, 2, LUA_TSTRING);
  3551. String tag = String(lua_tostring(L, 2));
  3552. lua_pushboolean(L, inst->hasTag(tag));
  3553. return 1;
  3554. }
  3555. static int Polycode_Entity_clearTags(lua_State *L) {
  3556. luaL_checktype(L, 1, LUA_TUSERDATA);
  3557. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3558. inst->clearTags();
  3559. return 0;
  3560. }
  3561. static int Polycode_Entity_addTag(lua_State *L) {
  3562. luaL_checktype(L, 1, LUA_TUSERDATA);
  3563. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3564. luaL_checktype(L, 2, LUA_TSTRING);
  3565. String tag = String(lua_tostring(L, 2));
  3566. inst->addTag(tag);
  3567. return 0;
  3568. }
  3569. static int Polycode_Entity_getScreenPosition(lua_State *L) {
  3570. luaL_checktype(L, 1, LUA_TUSERDATA);
  3571. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3572. luaL_checktype(L, 2, LUA_TUSERDATA);
  3573. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  3574. luaL_checktype(L, 3, LUA_TUSERDATA);
  3575. Matrix4 cameraMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  3576. luaL_checktype(L, 4, LUA_TUSERDATA);
  3577. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  3578. Vector2 *retInst = new Vector2();
  3579. *retInst = inst->getScreenPosition(projectionMatrix, cameraMatrix, viewport);
  3580. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3581. luaL_getmetatable(L, "Polycode.Vector2");
  3582. lua_setmetatable(L, -2);
  3583. *userdataPtr = (PolyBase*)retInst;
  3584. return 1;
  3585. }
  3586. static int Polycode_Entity_recalculateAABBAllChildren(lua_State *L) {
  3587. luaL_checktype(L, 1, LUA_TUSERDATA);
  3588. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3589. inst->recalculateAABBAllChildren();
  3590. return 0;
  3591. }
  3592. static int Polycode_Entity_recalculateAABB(lua_State *L) {
  3593. luaL_checktype(L, 1, LUA_TUSERDATA);
  3594. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3595. inst->recalculateAABB();
  3596. return 0;
  3597. }
  3598. static int Polycode_Entity_getWorldAABB(lua_State *L) {
  3599. luaL_checktype(L, 1, LUA_TUSERDATA);
  3600. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3601. AABB *retInst = new AABB();
  3602. *retInst = inst->getWorldAABB();
  3603. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3604. luaL_getmetatable(L, "Polycode.AABB");
  3605. lua_setmetatable(L, -2);
  3606. *userdataPtr = (PolyBase*)retInst;
  3607. return 1;
  3608. }
  3609. static int Polycode_Entity_getLocalBoundingBox(lua_State *L) {
  3610. luaL_checktype(L, 1, LUA_TUSERDATA);
  3611. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3612. Vector3 *retInst = new Vector3();
  3613. *retInst = inst->getLocalBoundingBox();
  3614. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3615. luaL_getmetatable(L, "Polycode.Vector3");
  3616. lua_setmetatable(L, -2);
  3617. *userdataPtr = (PolyBase*)retInst;
  3618. return 1;
  3619. }
  3620. static int Polycode_Entity_setLocalBoundingBox(lua_State *L) {
  3621. luaL_checktype(L, 1, LUA_TUSERDATA);
  3622. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3623. luaL_checktype(L, 2, LUA_TUSERDATA);
  3624. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3625. inst->setLocalBoundingBox(box);
  3626. return 0;
  3627. }
  3628. static int Polycode_Entity_setLocalBoundingBoxX(lua_State *L) {
  3629. luaL_checktype(L, 1, LUA_TUSERDATA);
  3630. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3631. luaL_checktype(L, 2, LUA_TNUMBER);
  3632. Number x = lua_tonumber(L, 2);
  3633. inst->setLocalBoundingBoxX(x);
  3634. return 0;
  3635. }
  3636. static int Polycode_Entity_setLocalBoundingBoxY(lua_State *L) {
  3637. luaL_checktype(L, 1, LUA_TUSERDATA);
  3638. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3639. luaL_checktype(L, 2, LUA_TNUMBER);
  3640. Number y = lua_tonumber(L, 2);
  3641. inst->setLocalBoundingBoxY(y);
  3642. return 0;
  3643. }
  3644. static int Polycode_Entity_setLocalBoundingBoxZ(lua_State *L) {
  3645. luaL_checktype(L, 1, LUA_TUSERDATA);
  3646. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3647. luaL_checktype(L, 2, LUA_TNUMBER);
  3648. Number z = lua_tonumber(L, 2);
  3649. inst->setLocalBoundingBoxZ(z);
  3650. return 0;
  3651. }
  3652. static int Polycode_Entity_setContainerScene(lua_State *L) {
  3653. luaL_checktype(L, 1, LUA_TUSERDATA);
  3654. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3655. luaL_checktype(L, 2, LUA_TUSERDATA);
  3656. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  3657. inst->setContainerScene(scene);
  3658. return 0;
  3659. }
  3660. static int Polycode_Entity_getContainerScene(lua_State *L) {
  3661. luaL_checktype(L, 1, LUA_TUSERDATA);
  3662. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3663. PolyBase *ptrRetVal = (PolyBase*)inst->getContainerScene();
  3664. if(ptrRetVal == NULL) {
  3665. lua_pushnil(L);
  3666. } else {
  3667. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3668. *userdataPtr = ptrRetVal;
  3669. }
  3670. return 1;
  3671. }
  3672. static int Polycode_Entity_attachScript(lua_State *L) {
  3673. luaL_checktype(L, 1, LUA_TUSERDATA);
  3674. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3675. luaL_checktype(L, 2, LUA_TUSERDATA);
  3676. Script* script = (Script*) *((PolyBase**)lua_touserdata(L, 2));
  3677. inst->attachScript(script);
  3678. return 0;
  3679. }
  3680. static int Polycode_Entity_detachScript(lua_State *L) {
  3681. luaL_checktype(L, 1, LUA_TUSERDATA);
  3682. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3683. luaL_checktype(L, 2, LUA_TUSERDATA);
  3684. Script* script = (Script*) *((PolyBase**)lua_touserdata(L, 2));
  3685. inst->detachScript(script);
  3686. return 0;
  3687. }
  3688. static int Polycode_Entity_getNumScripts(lua_State *L) {
  3689. luaL_checktype(L, 1, LUA_TUSERDATA);
  3690. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3691. lua_pushinteger(L, inst->getNumScripts());
  3692. return 1;
  3693. }
  3694. static int Polycode_Entity_getScriptAtIndex(lua_State *L) {
  3695. luaL_checktype(L, 1, LUA_TUSERDATA);
  3696. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3697. luaL_checktype(L, 2, LUA_TNUMBER);
  3698. int index = lua_tointeger(L, 2);
  3699. PolyBase *ptrRetVal = (PolyBase*)inst->getScriptAtIndex(index);
  3700. if(ptrRetVal == NULL) {
  3701. lua_pushnil(L);
  3702. } else {
  3703. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3704. *userdataPtr = ptrRetVal;
  3705. }
  3706. return 1;
  3707. }
  3708. static int Polycode_Event(lua_State *L) {
  3709. Event *inst = new Event();
  3710. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3711. *userdataPtr = (PolyBase*)inst;
  3712. luaL_getmetatable(L, "Polycode.Event");
  3713. lua_setmetatable(L, -2);
  3714. return 1;
  3715. }
  3716. static int Polycode_Event_getEventCode(lua_State *L) {
  3717. luaL_checktype(L, 1, LUA_TUSERDATA);
  3718. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3719. lua_pushinteger(L, inst->getEventCode());
  3720. return 1;
  3721. }
  3722. static int Polycode_Event_getDispatcher(lua_State *L) {
  3723. luaL_checktype(L, 1, LUA_TUSERDATA);
  3724. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3725. PolyBase *ptrRetVal = (PolyBase*)inst->getDispatcher();
  3726. if(ptrRetVal == NULL) {
  3727. lua_pushnil(L);
  3728. } else {
  3729. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3730. *userdataPtr = ptrRetVal;
  3731. }
  3732. return 1;
  3733. }
  3734. static int Polycode_Event_setEventCode(lua_State *L) {
  3735. luaL_checktype(L, 1, LUA_TUSERDATA);
  3736. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3737. luaL_checktype(L, 2, LUA_TNUMBER);
  3738. int eventCode = lua_tointeger(L, 2);
  3739. inst->setEventCode(eventCode);
  3740. return 0;
  3741. }
  3742. static int Polycode_Event_setDispatcher(lua_State *L) {
  3743. luaL_checktype(L, 1, LUA_TUSERDATA);
  3744. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3745. luaL_checktype(L, 2, LUA_TUSERDATA);
  3746. EventDispatcher* dispatcher = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 2));
  3747. inst->setDispatcher(dispatcher);
  3748. return 0;
  3749. }
  3750. static int Polycode_Event_getEventType(lua_State *L) {
  3751. luaL_checktype(L, 1, LUA_TUSERDATA);
  3752. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3753. lua_pushstring(L, inst->getEventType().c_str());
  3754. return 1;
  3755. }
  3756. static int Polycode_Event_cancelEvent(lua_State *L) {
  3757. luaL_checktype(L, 1, LUA_TUSERDATA);
  3758. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3759. inst->cancelEvent();
  3760. return 0;
  3761. }
  3762. static int Polycode_EventDispatcher(lua_State *L) {
  3763. EventDispatcher *inst = new EventDispatcher();
  3764. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3765. *userdataPtr = (PolyBase*)inst;
  3766. luaL_getmetatable(L, "Polycode.EventDispatcher");
  3767. lua_setmetatable(L, -2);
  3768. return 1;
  3769. }
  3770. static int Polycode_EventDispatcher_removeAllHandlers(lua_State *L) {
  3771. luaL_checktype(L, 1, LUA_TUSERDATA);
  3772. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3773. inst->removeAllHandlers();
  3774. return 0;
  3775. }
  3776. static int Polycode_EventDispatcher_removeAllHandlersForListener(lua_State *L) {
  3777. luaL_checktype(L, 1, LUA_TUSERDATA);
  3778. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3779. luaL_checktype(L, 2, LUA_TUSERDATA);
  3780. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  3781. inst->removeAllHandlersForListener(handler);
  3782. return 0;
  3783. }
  3784. static int Polycode_EventDispatcher_addEventListener(lua_State *L) {
  3785. luaL_checktype(L, 1, LUA_TUSERDATA);
  3786. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3787. luaL_checktype(L, 2, LUA_TUSERDATA);
  3788. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  3789. luaL_checktype(L, 3, LUA_TNUMBER);
  3790. int eventCode = lua_tointeger(L, 3);
  3791. inst->addEventListener(handler, eventCode);
  3792. return 0;
  3793. }
  3794. static int Polycode_EventDispatcher_addEventListenerUnique(lua_State *L) {
  3795. luaL_checktype(L, 1, LUA_TUSERDATA);
  3796. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3797. luaL_checktype(L, 2, LUA_TUSERDATA);
  3798. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  3799. luaL_checktype(L, 3, LUA_TNUMBER);
  3800. int eventCode = lua_tointeger(L, 3);
  3801. inst->addEventListenerUnique(handler, eventCode);
  3802. return 0;
  3803. }
  3804. static int Polycode_EventDispatcher_hasEventListener(lua_State *L) {
  3805. luaL_checktype(L, 1, LUA_TUSERDATA);
  3806. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3807. luaL_checktype(L, 2, LUA_TUSERDATA);
  3808. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  3809. luaL_checktype(L, 3, LUA_TNUMBER);
  3810. int eventCode = lua_tointeger(L, 3);
  3811. lua_pushboolean(L, inst->hasEventListener(handler, eventCode));
  3812. return 1;
  3813. }
  3814. static int Polycode_EventDispatcher_removeEventListener(lua_State *L) {
  3815. luaL_checktype(L, 1, LUA_TUSERDATA);
  3816. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3817. luaL_checktype(L, 2, LUA_TUSERDATA);
  3818. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  3819. luaL_checktype(L, 3, LUA_TNUMBER);
  3820. int eventCode = lua_tointeger(L, 3);
  3821. inst->removeEventListener(handler, eventCode);
  3822. return 0;
  3823. }
  3824. static int Polycode_EventDispatcher___dispatchEvent(lua_State *L) {
  3825. luaL_checktype(L, 1, LUA_TUSERDATA);
  3826. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3827. luaL_checktype(L, 2, LUA_TUSERDATA);
  3828. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  3829. luaL_checktype(L, 3, LUA_TNUMBER);
  3830. int eventCode = lua_tointeger(L, 3);
  3831. inst->__dispatchEvent(event, eventCode);
  3832. return 0;
  3833. }
  3834. static int Polycode_EventDispatcher_dispatchEvent(lua_State *L) {
  3835. luaL_checktype(L, 1, LUA_TUSERDATA);
  3836. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3837. luaL_checktype(L, 2, LUA_TUSERDATA);
  3838. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  3839. luaL_checktype(L, 3, LUA_TNUMBER);
  3840. int eventCode = lua_tointeger(L, 3);
  3841. inst->dispatchEvent(event, eventCode);
  3842. return 0;
  3843. }
  3844. static int Polycode_EventDispatcher_dispatchEventNoDelete(lua_State *L) {
  3845. luaL_checktype(L, 1, LUA_TUSERDATA);
  3846. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  3847. luaL_checktype(L, 2, LUA_TUSERDATA);
  3848. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  3849. luaL_checktype(L, 3, LUA_TNUMBER);
  3850. int eventCode = lua_tointeger(L, 3);
  3851. inst->dispatchEventNoDelete(event, eventCode);
  3852. return 0;
  3853. }
  3854. static int Polycode_EventHandler(lua_State *L) {
  3855. LuaEventHandler *inst = new LuaEventHandler();
  3856. inst->wrapperIndex = luaL_ref(L, LUA_REGISTRYINDEX );
  3857. inst->L = L;
  3858. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3859. *userdataPtr = (PolyBase*)inst;
  3860. luaL_getmetatable(L, "Polycode.EventHandler");
  3861. lua_setmetatable(L, -2);
  3862. return 1;
  3863. }
  3864. static int Polycode_Font(lua_State *L) {
  3865. luaL_checktype(L, 1, LUA_TSTRING);
  3866. String fileName = String(lua_tostring(L, 1));
  3867. luaL_checktype(L, 2, LUA_TUSERDATA);
  3868. FT_Library FTLibrary = *(FT_Library*) *((PolyBase**)lua_touserdata(L, 2));
  3869. Font *inst = new Font(fileName, FTLibrary);
  3870. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3871. *userdataPtr = (PolyBase*)inst;
  3872. luaL_getmetatable(L, "Polycode.Font");
  3873. lua_setmetatable(L, -2);
  3874. return 1;
  3875. }
  3876. static int Polycode_Font_getFace(lua_State *L) {
  3877. luaL_checktype(L, 1, LUA_TUSERDATA);
  3878. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  3879. FT_Face *retInst = new FT_Face();
  3880. *retInst = inst->getFace();
  3881. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3882. luaL_getmetatable(L, "Polycode.FT_Face");
  3883. lua_setmetatable(L, -2);
  3884. *userdataPtr = (PolyBase*)retInst;
  3885. return 1;
  3886. }
  3887. static int Polycode_Font_isValid(lua_State *L) {
  3888. luaL_checktype(L, 1, LUA_TUSERDATA);
  3889. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  3890. lua_pushboolean(L, inst->isValid());
  3891. return 1;
  3892. }
  3893. static int Polycode_Font_setFontName(lua_State *L) {
  3894. luaL_checktype(L, 1, LUA_TUSERDATA);
  3895. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  3896. luaL_checktype(L, 2, LUA_TSTRING);
  3897. String fontName = String(lua_tostring(L, 2));
  3898. inst->setFontName(fontName);
  3899. return 0;
  3900. }
  3901. static int Polycode_Font_getFontName(lua_State *L) {
  3902. luaL_checktype(L, 1, LUA_TUSERDATA);
  3903. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  3904. lua_pushstring(L, inst->getFontName().c_str());
  3905. return 1;
  3906. }
  3907. static int Polycode_Font_getFontPath(lua_State *L) {
  3908. luaL_checktype(L, 1, LUA_TUSERDATA);
  3909. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  3910. lua_pushstring(L, inst->getFontPath().c_str());
  3911. return 1;
  3912. }
  3913. static int Polycode_GPUDrawBuffer(lua_State *L) {
  3914. GPUDrawBuffer *inst = new GPUDrawBuffer();
  3915. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3916. *userdataPtr = (PolyBase*)inst;
  3917. luaL_getmetatable(L, "Polycode.GPUDrawBuffer");
  3918. lua_setmetatable(L, -2);
  3919. return 1;
  3920. }
  3921. static int Polycode_Image(lua_State *L) {
  3922. luaL_checktype(L, 1, LUA_TSTRING);
  3923. String fileName = String(lua_tostring(L, 1));
  3924. Image *inst = new Image(fileName);
  3925. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3926. *userdataPtr = (PolyBase*)inst;
  3927. luaL_getmetatable(L, "Polycode.Image");
  3928. lua_setmetatable(L, -2);
  3929. return 1;
  3930. }
  3931. static int Polycode_Image_BlankImage(lua_State *L) {
  3932. luaL_checktype(L, 1, LUA_TUSERDATA);
  3933. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3934. luaL_checktype(L, 2, LUA_TNUMBER);
  3935. int width = lua_tointeger(L, 2);
  3936. luaL_checktype(L, 3, LUA_TNUMBER);
  3937. int height = lua_tointeger(L, 3);
  3938. luaL_checktype(L, 4, LUA_TNUMBER);
  3939. int type = lua_tointeger(L, 4);
  3940. PolyBase *ptrRetVal = (PolyBase*)inst->BlankImage(width, height, type);
  3941. if(ptrRetVal == NULL) {
  3942. lua_pushnil(L);
  3943. } else {
  3944. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3945. *userdataPtr = ptrRetVal;
  3946. }
  3947. return 1;
  3948. }
  3949. static int Polycode_Image_loadImage(lua_State *L) {
  3950. luaL_checktype(L, 1, LUA_TUSERDATA);
  3951. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3952. luaL_checktype(L, 2, LUA_TSTRING);
  3953. String fileName = String(lua_tostring(L, 2));
  3954. lua_pushboolean(L, inst->loadImage(fileName));
  3955. return 1;
  3956. }
  3957. static int Polycode_Image_saveImage(lua_State *L) {
  3958. luaL_checktype(L, 1, LUA_TUSERDATA);
  3959. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3960. luaL_checktype(L, 2, LUA_TSTRING);
  3961. String fileName = String(lua_tostring(L, 2));
  3962. lua_pushboolean(L, inst->saveImage(fileName));
  3963. return 1;
  3964. }
  3965. static int Polycode_Image_pasteImage(lua_State *L) {
  3966. luaL_checktype(L, 1, LUA_TUSERDATA);
  3967. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3968. luaL_checktype(L, 2, LUA_TUSERDATA);
  3969. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  3970. luaL_checktype(L, 3, LUA_TNUMBER);
  3971. int x = lua_tointeger(L, 3);
  3972. luaL_checktype(L, 4, LUA_TNUMBER);
  3973. int y = lua_tointeger(L, 4);
  3974. luaL_checktype(L, 5, LUA_TNUMBER);
  3975. int blendingMode = lua_tointeger(L, 5);
  3976. luaL_checktype(L, 6, LUA_TNUMBER);
  3977. Number blendAmount = lua_tonumber(L, 6);
  3978. luaL_checktype(L, 7, LUA_TUSERDATA);
  3979. Color blendColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  3980. inst->pasteImage(image, x, y, blendingMode, blendAmount, blendColor);
  3981. return 0;
  3982. }
  3983. static int Polycode_Image_createEmpty(lua_State *L) {
  3984. luaL_checktype(L, 1, LUA_TUSERDATA);
  3985. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3986. luaL_checktype(L, 2, LUA_TNUMBER);
  3987. int width = lua_tointeger(L, 2);
  3988. luaL_checktype(L, 3, LUA_TNUMBER);
  3989. int height = lua_tointeger(L, 3);
  3990. luaL_checktype(L, 4, LUA_TUSERDATA);
  3991. Color fillColor = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  3992. inst->createEmpty(width, height, fillColor);
  3993. return 0;
  3994. }
  3995. static int Polycode_Image_fill(lua_State *L) {
  3996. luaL_checktype(L, 1, LUA_TUSERDATA);
  3997. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  3998. luaL_checktype(L, 2, LUA_TUSERDATA);
  3999. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  4000. inst->fill(color);
  4001. return 0;
  4002. }
  4003. static int Polycode_Image_setPixel(lua_State *L) {
  4004. luaL_checktype(L, 1, LUA_TUSERDATA);
  4005. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4006. luaL_checktype(L, 2, LUA_TNUMBER);
  4007. int x = lua_tointeger(L, 2);
  4008. luaL_checktype(L, 3, LUA_TNUMBER);
  4009. int y = lua_tointeger(L, 3);
  4010. luaL_checktype(L, 4, LUA_TNUMBER);
  4011. Number r = lua_tonumber(L, 4);
  4012. luaL_checktype(L, 5, LUA_TNUMBER);
  4013. Number g = lua_tonumber(L, 5);
  4014. luaL_checktype(L, 6, LUA_TNUMBER);
  4015. Number b = lua_tonumber(L, 6);
  4016. luaL_checktype(L, 7, LUA_TNUMBER);
  4017. Number a = lua_tonumber(L, 7);
  4018. inst->setPixel(x, y, r, g, b, a);
  4019. return 0;
  4020. }
  4021. static int Polycode_Image_getPixel(lua_State *L) {
  4022. luaL_checktype(L, 1, LUA_TUSERDATA);
  4023. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4024. luaL_checktype(L, 2, LUA_TNUMBER);
  4025. int x = lua_tointeger(L, 2);
  4026. luaL_checktype(L, 3, LUA_TNUMBER);
  4027. int y = lua_tointeger(L, 3);
  4028. Color *retInst = new Color();
  4029. *retInst = inst->getPixel(x, y);
  4030. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4031. luaL_getmetatable(L, "Polycode.Color");
  4032. lua_setmetatable(L, -2);
  4033. *userdataPtr = (PolyBase*)retInst;
  4034. return 1;
  4035. }
  4036. static int Polycode_Image_swap(lua_State *L) {
  4037. luaL_checktype(L, 1, LUA_TUSERDATA);
  4038. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4039. luaL_checktype(L, 2, LUA_TUSERDATA);
  4040. int* v1 = (int*) *((PolyBase**)lua_touserdata(L, 2));
  4041. luaL_checktype(L, 3, LUA_TUSERDATA);
  4042. int* v2 = (int*) *((PolyBase**)lua_touserdata(L, 3));
  4043. inst->swap(v1, v2);
  4044. return 0;
  4045. }
  4046. static int Polycode_Image_drawLine(lua_State *L) {
  4047. luaL_checktype(L, 1, LUA_TUSERDATA);
  4048. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4049. luaL_checktype(L, 2, LUA_TNUMBER);
  4050. int x0 = lua_tointeger(L, 2);
  4051. luaL_checktype(L, 3, LUA_TNUMBER);
  4052. int y0 = lua_tointeger(L, 3);
  4053. luaL_checktype(L, 4, LUA_TNUMBER);
  4054. int x1 = lua_tointeger(L, 4);
  4055. luaL_checktype(L, 5, LUA_TNUMBER);
  4056. int y1 = lua_tointeger(L, 5);
  4057. luaL_checktype(L, 6, LUA_TUSERDATA);
  4058. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  4059. inst->drawLine(x0, y0, x1, y1, col);
  4060. return 0;
  4061. }
  4062. static int Polycode_Image_moveBrushTo(lua_State *L) {
  4063. luaL_checktype(L, 1, LUA_TUSERDATA);
  4064. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4065. luaL_checktype(L, 2, LUA_TNUMBER);
  4066. int x = lua_tointeger(L, 2);
  4067. luaL_checktype(L, 3, LUA_TNUMBER);
  4068. int y = lua_tointeger(L, 3);
  4069. inst->moveBrushTo(x, y);
  4070. return 0;
  4071. }
  4072. static int Polycode_Image_moveBrush(lua_State *L) {
  4073. luaL_checktype(L, 1, LUA_TUSERDATA);
  4074. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4075. luaL_checktype(L, 2, LUA_TNUMBER);
  4076. int x = lua_tointeger(L, 2);
  4077. luaL_checktype(L, 3, LUA_TNUMBER);
  4078. int y = lua_tointeger(L, 3);
  4079. inst->moveBrush(x, y);
  4080. return 0;
  4081. }
  4082. static int Polycode_Image_drawLineTo(lua_State *L) {
  4083. luaL_checktype(L, 1, LUA_TUSERDATA);
  4084. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4085. luaL_checktype(L, 2, LUA_TNUMBER);
  4086. int x = lua_tointeger(L, 2);
  4087. luaL_checktype(L, 3, LUA_TNUMBER);
  4088. int y = lua_tointeger(L, 3);
  4089. luaL_checktype(L, 4, LUA_TUSERDATA);
  4090. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  4091. inst->drawLineTo(x, y, col);
  4092. return 0;
  4093. }
  4094. static int Polycode_Image_fillRect(lua_State *L) {
  4095. luaL_checktype(L, 1, LUA_TUSERDATA);
  4096. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4097. luaL_checktype(L, 2, LUA_TNUMBER);
  4098. int x = lua_tointeger(L, 2);
  4099. luaL_checktype(L, 3, LUA_TNUMBER);
  4100. int y = lua_tointeger(L, 3);
  4101. luaL_checktype(L, 4, LUA_TNUMBER);
  4102. int w = lua_tointeger(L, 4);
  4103. luaL_checktype(L, 5, LUA_TNUMBER);
  4104. int h = lua_tointeger(L, 5);
  4105. luaL_checktype(L, 6, LUA_TUSERDATA);
  4106. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  4107. inst->fillRect(x, y, w, h, col);
  4108. return 0;
  4109. }
  4110. static int Polycode_Image_perlinNoise(lua_State *L) {
  4111. luaL_checktype(L, 1, LUA_TUSERDATA);
  4112. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4113. luaL_checktype(L, 2, LUA_TNUMBER);
  4114. int seed = lua_tointeger(L, 2);
  4115. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4116. bool alpha = lua_toboolean(L, 3) != 0;
  4117. inst->perlinNoise(seed, alpha);
  4118. return 0;
  4119. }
  4120. static int Polycode_Image_fastBlur(lua_State *L) {
  4121. luaL_checktype(L, 1, LUA_TUSERDATA);
  4122. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4123. luaL_checktype(L, 2, LUA_TNUMBER);
  4124. int blurSize = lua_tointeger(L, 2);
  4125. inst->fastBlur(blurSize);
  4126. return 0;
  4127. }
  4128. static int Polycode_Image_fastBlurVert(lua_State *L) {
  4129. luaL_checktype(L, 1, LUA_TUSERDATA);
  4130. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4131. luaL_checktype(L, 2, LUA_TNUMBER);
  4132. int blurSize = lua_tointeger(L, 2);
  4133. inst->fastBlurVert(blurSize);
  4134. return 0;
  4135. }
  4136. static int Polycode_Image_fastBlurHor(lua_State *L) {
  4137. luaL_checktype(L, 1, LUA_TUSERDATA);
  4138. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4139. luaL_checktype(L, 2, LUA_TNUMBER);
  4140. int blurSize = lua_tointeger(L, 2);
  4141. inst->fastBlurHor(blurSize);
  4142. return 0;
  4143. }
  4144. static int Polycode_Image_getPixelsInRect(lua_State *L) {
  4145. luaL_checktype(L, 1, LUA_TUSERDATA);
  4146. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4147. luaL_checktype(L, 2, LUA_TNUMBER);
  4148. int x = lua_tointeger(L, 2);
  4149. luaL_checktype(L, 3, LUA_TNUMBER);
  4150. int y = lua_tointeger(L, 3);
  4151. luaL_checktype(L, 4, LUA_TNUMBER);
  4152. int width = lua_tointeger(L, 4);
  4153. luaL_checktype(L, 5, LUA_TNUMBER);
  4154. int height = lua_tointeger(L, 5);
  4155. PolyBase *ptrRetVal = (PolyBase*)inst->getPixelsInRect(x, y, width, height);
  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_Image_getImagePart(lua_State *L) {
  4165. luaL_checktype(L, 1, LUA_TUSERDATA);
  4166. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4167. luaL_checktype(L, 2, LUA_TUSERDATA);
  4168. Polycode::Rectangle subRect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  4169. PolyBase *ptrRetVal = (PolyBase*)inst->getImagePart(subRect);
  4170. if(ptrRetVal == NULL) {
  4171. lua_pushnil(L);
  4172. } else {
  4173. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4174. *userdataPtr = ptrRetVal;
  4175. }
  4176. return 1;
  4177. }
  4178. static int Polycode_Image_getBrushX(lua_State *L) {
  4179. luaL_checktype(L, 1, LUA_TUSERDATA);
  4180. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4181. lua_pushinteger(L, inst->getBrushX());
  4182. return 1;
  4183. }
  4184. static int Polycode_Image_getBrushY(lua_State *L) {
  4185. luaL_checktype(L, 1, LUA_TUSERDATA);
  4186. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4187. lua_pushinteger(L, inst->getBrushY());
  4188. return 1;
  4189. }
  4190. static int Polycode_Image_isLoaded(lua_State *L) {
  4191. luaL_checktype(L, 1, LUA_TUSERDATA);
  4192. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4193. lua_pushboolean(L, inst->isLoaded());
  4194. return 1;
  4195. }
  4196. static int Polycode_Image_getType(lua_State *L) {
  4197. luaL_checktype(L, 1, LUA_TUSERDATA);
  4198. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4199. lua_pushinteger(L, inst->getType());
  4200. return 1;
  4201. }
  4202. static int Polycode_Image_getWidth(lua_State *L) {
  4203. luaL_checktype(L, 1, LUA_TUSERDATA);
  4204. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4205. lua_pushinteger(L, inst->getWidth());
  4206. return 1;
  4207. }
  4208. static int Polycode_Image_getHeight(lua_State *L) {
  4209. luaL_checktype(L, 1, LUA_TUSERDATA);
  4210. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4211. lua_pushinteger(L, inst->getHeight());
  4212. return 1;
  4213. }
  4214. static int Polycode_Image_getPixels(lua_State *L) {
  4215. luaL_checktype(L, 1, LUA_TUSERDATA);
  4216. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4217. PolyBase *ptrRetVal = (PolyBase*)inst->getPixels();
  4218. if(ptrRetVal == NULL) {
  4219. lua_pushnil(L);
  4220. } else {
  4221. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4222. *userdataPtr = ptrRetVal;
  4223. }
  4224. return 1;
  4225. }
  4226. static int Polycode_Image_premultiplyAlpha(lua_State *L) {
  4227. luaL_checktype(L, 1, LUA_TUSERDATA);
  4228. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4229. inst->premultiplyAlpha();
  4230. return 0;
  4231. }
  4232. static int Polycode_Image_savePNG(lua_State *L) {
  4233. luaL_checktype(L, 1, LUA_TUSERDATA);
  4234. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  4235. luaL_checktype(L, 2, LUA_TSTRING);
  4236. String fileName = String(lua_tostring(L, 2));
  4237. lua_pushboolean(L, inst->savePNG(fileName));
  4238. return 1;
  4239. }
  4240. static int Polycode_TouchInfo(lua_State *L) {
  4241. TouchInfo *inst = new TouchInfo();
  4242. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4243. *userdataPtr = (PolyBase*)inst;
  4244. luaL_getmetatable(L, "Polycode.TouchInfo");
  4245. lua_setmetatable(L, -2);
  4246. return 1;
  4247. }
  4248. static int Polycode_InputEvent(lua_State *L) {
  4249. InputEvent *inst = new InputEvent();
  4250. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4251. *userdataPtr = (PolyBase*)inst;
  4252. luaL_getmetatable(L, "Polycode.InputEvent");
  4253. lua_setmetatable(L, -2);
  4254. return 1;
  4255. }
  4256. static int Polycode_InputEvent_getMousePosition(lua_State *L) {
  4257. luaL_checktype(L, 1, LUA_TUSERDATA);
  4258. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  4259. Vector2 *retInst = new Vector2();
  4260. *retInst = inst->getMousePosition();
  4261. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4262. luaL_getmetatable(L, "Polycode.Vector2");
  4263. lua_setmetatable(L, -2);
  4264. *userdataPtr = (PolyBase*)retInst;
  4265. return 1;
  4266. }
  4267. static int Polycode_InputEvent_getKey(lua_State *L) {
  4268. luaL_checktype(L, 1, LUA_TUSERDATA);
  4269. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  4270. lua_pushinteger(L, inst->getKey());
  4271. return 1;
  4272. }
  4273. static int Polycode_InputEvent_getMouseButton(lua_State *L) {
  4274. luaL_checktype(L, 1, LUA_TUSERDATA);
  4275. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  4276. lua_pushinteger(L, inst->getMouseButton());
  4277. return 1;
  4278. }
  4279. static int Polycode_InputEvent_getCharCode(lua_State *L) {
  4280. luaL_checktype(L, 1, LUA_TUSERDATA);
  4281. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  4282. lua_pushinteger(L, inst->getCharCode());
  4283. return 1;
  4284. }
  4285. static int Polycode_InputEvent_keyCode(lua_State *L) {
  4286. luaL_checktype(L, 1, LUA_TUSERDATA);
  4287. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  4288. lua_pushinteger(L, inst->keyCode());
  4289. return 1;
  4290. }
  4291. static int Polycode_GlyphData(lua_State *L) {
  4292. GlyphData *inst = new GlyphData();
  4293. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4294. *userdataPtr = (PolyBase*)inst;
  4295. luaL_getmetatable(L, "Polycode.GlyphData");
  4296. lua_setmetatable(L, -2);
  4297. return 1;
  4298. }
  4299. static int Polycode_GlyphData_clearData(lua_State *L) {
  4300. luaL_checktype(L, 1, LUA_TUSERDATA);
  4301. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  4302. inst->clearData();
  4303. return 0;
  4304. }
  4305. static int Polycode_ColorRange(lua_State *L) {
  4306. luaL_checktype(L, 1, LUA_TUSERDATA);
  4307. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 1));
  4308. luaL_checktype(L, 2, LUA_TNUMBER);
  4309. int rangeStart = lua_tointeger(L, 2);
  4310. luaL_checktype(L, 3, LUA_TNUMBER);
  4311. int rangeEnd = lua_tointeger(L, 3);
  4312. ColorRange *inst = new ColorRange(color, rangeStart, rangeEnd);
  4313. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4314. *userdataPtr = (PolyBase*)inst;
  4315. luaL_getmetatable(L, "Polycode.ColorRange");
  4316. lua_setmetatable(L, -2);
  4317. return 1;
  4318. }
  4319. static int Polycode_Label(lua_State *L) {
  4320. luaL_checktype(L, 1, LUA_TUSERDATA);
  4321. Font* font = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  4322. luaL_checktype(L, 2, LUA_TSTRING);
  4323. String text = String(lua_tostring(L, 2));
  4324. luaL_checktype(L, 3, LUA_TNUMBER);
  4325. int size = lua_tointeger(L, 3);
  4326. luaL_checktype(L, 4, LUA_TNUMBER);
  4327. int antiAliasMode = lua_tointeger(L, 4);
  4328. luaL_checktype(L, 5, LUA_TBOOLEAN);
  4329. bool premultiplyAlpha = lua_toboolean(L, 5) != 0;
  4330. luaL_checktype(L, 6, LUA_TUSERDATA);
  4331. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  4332. luaL_checktype(L, 7, LUA_TUSERDATA);
  4333. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  4334. Label *inst = new Label(font, text, size, antiAliasMode, premultiplyAlpha, backgroundColor, foregroundColor);
  4335. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4336. *userdataPtr = (PolyBase*)inst;
  4337. luaL_getmetatable(L, "Polycode.Label");
  4338. lua_setmetatable(L, -2);
  4339. return 1;
  4340. }
  4341. static int Polycode_Label_setText(lua_State *L) {
  4342. luaL_checktype(L, 1, LUA_TUSERDATA);
  4343. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4344. luaL_checktype(L, 2, LUA_TSTRING);
  4345. String text = String(lua_tostring(L, 2));
  4346. inst->setText(text);
  4347. return 0;
  4348. }
  4349. static int Polycode_Label_getText(lua_State *L) {
  4350. luaL_checktype(L, 1, LUA_TUSERDATA);
  4351. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4352. lua_pushstring(L, inst->getText().c_str());
  4353. return 1;
  4354. }
  4355. static int Polycode_Label_getTextWidthForString(lua_State *L) {
  4356. luaL_checktype(L, 1, LUA_TUSERDATA);
  4357. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4358. luaL_checktype(L, 2, LUA_TSTRING);
  4359. String text = String(lua_tostring(L, 2));
  4360. lua_pushinteger(L, inst->getTextWidthForString(text));
  4361. return 1;
  4362. }
  4363. static int Polycode_Label_getTextHeightForString(lua_State *L) {
  4364. luaL_checktype(L, 1, LUA_TUSERDATA);
  4365. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4366. luaL_checktype(L, 2, LUA_TSTRING);
  4367. String text = String(lua_tostring(L, 2));
  4368. lua_pushinteger(L, inst->getTextHeightForString(text));
  4369. return 1;
  4370. }
  4371. static int Polycode_Label_getTextWidth(lua_State *L) {
  4372. luaL_checktype(L, 1, LUA_TUSERDATA);
  4373. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4374. lua_pushnumber(L, inst->getTextWidth());
  4375. return 1;
  4376. }
  4377. static int Polycode_Label_getTextHeight(lua_State *L) {
  4378. luaL_checktype(L, 1, LUA_TUSERDATA);
  4379. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4380. lua_pushnumber(L, inst->getTextHeight());
  4381. return 1;
  4382. }
  4383. static int Polycode_Label_setColorForRange(lua_State *L) {
  4384. luaL_checktype(L, 1, LUA_TUSERDATA);
  4385. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4386. luaL_checktype(L, 2, LUA_TUSERDATA);
  4387. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  4388. luaL_checktype(L, 3, LUA_TNUMBER);
  4389. int rangeStart = lua_tointeger(L, 3);
  4390. luaL_checktype(L, 4, LUA_TNUMBER);
  4391. int rangeEnd = lua_tointeger(L, 4);
  4392. inst->setColorForRange(color, rangeStart, rangeEnd);
  4393. return 0;
  4394. }
  4395. static int Polycode_Label_clearColors(lua_State *L) {
  4396. luaL_checktype(L, 1, LUA_TUSERDATA);
  4397. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4398. inst->clearColors();
  4399. return 0;
  4400. }
  4401. static int Polycode_Label_getColorForIndex(lua_State *L) {
  4402. luaL_checktype(L, 1, LUA_TUSERDATA);
  4403. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4404. luaL_checktype(L, 2, LUA_TNUMBER);
  4405. int index = lua_tointeger(L, 2);
  4406. Color *retInst = new Color();
  4407. *retInst = inst->getColorForIndex(index);
  4408. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4409. luaL_getmetatable(L, "Polycode.Color");
  4410. lua_setmetatable(L, -2);
  4411. *userdataPtr = (PolyBase*)retInst;
  4412. return 1;
  4413. }
  4414. static int Polycode_Label_getPremultiplyAlpha(lua_State *L) {
  4415. luaL_checktype(L, 1, LUA_TUSERDATA);
  4416. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4417. lua_pushboolean(L, inst->getPremultiplyAlpha());
  4418. return 1;
  4419. }
  4420. static int Polycode_Label_setPremultiplyAlpha(lua_State *L) {
  4421. luaL_checktype(L, 1, LUA_TUSERDATA);
  4422. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4423. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4424. bool val = lua_toboolean(L, 2) != 0;
  4425. inst->setPremultiplyAlpha(val);
  4426. return 0;
  4427. }
  4428. static int Polycode_Label_setFont(lua_State *L) {
  4429. luaL_checktype(L, 1, LUA_TUSERDATA);
  4430. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4431. luaL_checktype(L, 2, LUA_TUSERDATA);
  4432. Font* newFont = (Font*) *((PolyBase**)lua_touserdata(L, 2));
  4433. inst->setFont(newFont);
  4434. return 0;
  4435. }
  4436. static int Polycode_Label_getFont(lua_State *L) {
  4437. luaL_checktype(L, 1, LUA_TUSERDATA);
  4438. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4439. PolyBase *ptrRetVal = (PolyBase*)inst->getFont();
  4440. if(ptrRetVal == NULL) {
  4441. lua_pushnil(L);
  4442. } else {
  4443. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4444. *userdataPtr = ptrRetVal;
  4445. }
  4446. return 1;
  4447. }
  4448. static int Polycode_Label_setSize(lua_State *L) {
  4449. luaL_checktype(L, 1, LUA_TUSERDATA);
  4450. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4451. luaL_checktype(L, 2, LUA_TNUMBER);
  4452. int newSize = lua_tointeger(L, 2);
  4453. inst->setSize(newSize);
  4454. return 0;
  4455. }
  4456. static int Polycode_Label_getSize(lua_State *L) {
  4457. luaL_checktype(L, 1, LUA_TUSERDATA);
  4458. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4459. lua_pushinteger(L, inst->getSize());
  4460. return 1;
  4461. }
  4462. static int Polycode_Label_getAntialiasMode(lua_State *L) {
  4463. luaL_checktype(L, 1, LUA_TUSERDATA);
  4464. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4465. lua_pushinteger(L, inst->getAntialiasMode());
  4466. return 1;
  4467. }
  4468. static int Polycode_Label_setAntialiasMode(lua_State *L) {
  4469. luaL_checktype(L, 1, LUA_TUSERDATA);
  4470. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4471. luaL_checktype(L, 2, LUA_TNUMBER);
  4472. int newMode = lua_tointeger(L, 2);
  4473. inst->setAntialiasMode(newMode);
  4474. return 0;
  4475. }
  4476. static int Polycode_Label_getBaselineAdjust(lua_State *L) {
  4477. luaL_checktype(L, 1, LUA_TUSERDATA);
  4478. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4479. lua_pushinteger(L, inst->getBaselineAdjust());
  4480. return 1;
  4481. }
  4482. static int Polycode_Label_setBackgroundColor(lua_State *L) {
  4483. luaL_checktype(L, 1, LUA_TUSERDATA);
  4484. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4485. luaL_checktype(L, 2, LUA_TUSERDATA);
  4486. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  4487. inst->setBackgroundColor(color);
  4488. return 0;
  4489. }
  4490. static int Polycode_Label_setForegroundColor(lua_State *L) {
  4491. luaL_checktype(L, 1, LUA_TUSERDATA);
  4492. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4493. luaL_checktype(L, 2, LUA_TUSERDATA);
  4494. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  4495. inst->setForegroundColor(color);
  4496. return 0;
  4497. }
  4498. static int Polycode_Label_setColors(lua_State *L) {
  4499. luaL_checktype(L, 1, LUA_TUSERDATA);
  4500. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4501. luaL_checktype(L, 2, LUA_TUSERDATA);
  4502. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  4503. luaL_checktype(L, 3, LUA_TUSERDATA);
  4504. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  4505. inst->setColors(backgroundColor, foregroundColor);
  4506. return 0;
  4507. }
  4508. static int Polycode_Label_getBackgroundColor(lua_State *L) {
  4509. luaL_checktype(L, 1, LUA_TUSERDATA);
  4510. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4511. Color *retInst = new Color();
  4512. *retInst = inst->getBackgroundColor();
  4513. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4514. luaL_getmetatable(L, "Polycode.Color");
  4515. lua_setmetatable(L, -2);
  4516. *userdataPtr = (PolyBase*)retInst;
  4517. return 1;
  4518. }
  4519. static int Polycode_Label_getForegroundColor(lua_State *L) {
  4520. luaL_checktype(L, 1, LUA_TUSERDATA);
  4521. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4522. Color *retInst = new Color();
  4523. *retInst = inst->getForegroundColor();
  4524. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4525. luaL_getmetatable(L, "Polycode.Color");
  4526. lua_setmetatable(L, -2);
  4527. *userdataPtr = (PolyBase*)retInst;
  4528. return 1;
  4529. }
  4530. static int Polycode_Label_optionsChanged(lua_State *L) {
  4531. luaL_checktype(L, 1, LUA_TUSERDATA);
  4532. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  4533. lua_pushboolean(L, inst->optionsChanged());
  4534. return 1;
  4535. }
  4536. static int Polycode_Material(lua_State *L) {
  4537. luaL_checktype(L, 1, LUA_TSTRING);
  4538. String name = String(lua_tostring(L, 1));
  4539. Material *inst = new Material(name);
  4540. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4541. *userdataPtr = (PolyBase*)inst;
  4542. luaL_getmetatable(L, "Polycode.Material");
  4543. lua_setmetatable(L, -2);
  4544. return 1;
  4545. }
  4546. static int Polycode_Material_addShaderPass(lua_State *L) {
  4547. luaL_checktype(L, 1, LUA_TUSERDATA);
  4548. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4549. luaL_checktype(L, 2, LUA_TUSERDATA);
  4550. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  4551. inst->addShaderPass(pass);
  4552. return 0;
  4553. }
  4554. static int Polycode_Material_addShaderPassAtIndex(lua_State *L) {
  4555. luaL_checktype(L, 1, LUA_TUSERDATA);
  4556. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4557. luaL_checktype(L, 2, LUA_TUSERDATA);
  4558. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  4559. luaL_checktype(L, 3, LUA_TNUMBER);
  4560. int shaderIndex = lua_tointeger(L, 3);
  4561. inst->addShaderPassAtIndex(pass, shaderIndex);
  4562. return 0;
  4563. }
  4564. static int Polycode_Material_addShader(lua_State *L) {
  4565. luaL_checktype(L, 1, LUA_TUSERDATA);
  4566. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4567. luaL_checktype(L, 2, LUA_TUSERDATA);
  4568. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  4569. luaL_checktype(L, 3, LUA_TUSERDATA);
  4570. ShaderBinding* shaderBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 3));
  4571. inst->addShader(shader, shaderBinding);
  4572. return 0;
  4573. }
  4574. static int Polycode_Material_addShaderAtIndex(lua_State *L) {
  4575. luaL_checktype(L, 1, LUA_TUSERDATA);
  4576. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4577. luaL_checktype(L, 2, LUA_TUSERDATA);
  4578. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  4579. luaL_checktype(L, 3, LUA_TUSERDATA);
  4580. ShaderBinding* shaderBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 3));
  4581. luaL_checktype(L, 4, LUA_TNUMBER);
  4582. int shaderIndex = lua_tointeger(L, 4);
  4583. inst->addShaderAtIndex(shader, shaderBinding, shaderIndex);
  4584. return 0;
  4585. }
  4586. static int Polycode_Material_getNumShaderPasses(lua_State *L) {
  4587. luaL_checktype(L, 1, LUA_TUSERDATA);
  4588. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4589. lua_pushinteger(L, inst->getNumShaderPasses());
  4590. return 1;
  4591. }
  4592. static int Polycode_Material_removeShaderPass(lua_State *L) {
  4593. luaL_checktype(L, 1, LUA_TUSERDATA);
  4594. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4595. luaL_checktype(L, 2, LUA_TNUMBER);
  4596. int shaderIndex = lua_tointeger(L, 2);
  4597. inst->removeShaderPass(shaderIndex);
  4598. return 0;
  4599. }
  4600. static int Polycode_Material_recreateExpectedShaderParams(lua_State *L) {
  4601. luaL_checktype(L, 1, LUA_TUSERDATA);
  4602. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4603. inst->recreateExpectedShaderParams();
  4604. return 0;
  4605. }
  4606. static int Polycode_Material_addShaderRenderTarget(lua_State *L) {
  4607. luaL_checktype(L, 1, LUA_TUSERDATA);
  4608. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4609. luaL_checktype(L, 2, LUA_TUSERDATA);
  4610. ShaderRenderTarget* newTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  4611. inst->addShaderRenderTarget(newTarget);
  4612. return 0;
  4613. }
  4614. static int Polycode_Material_getNumShaderRenderTargets(lua_State *L) {
  4615. luaL_checktype(L, 1, LUA_TUSERDATA);
  4616. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4617. lua_pushinteger(L, inst->getNumShaderRenderTargets());
  4618. return 1;
  4619. }
  4620. static int Polycode_Material_getShaderRenderTarget(lua_State *L) {
  4621. luaL_checktype(L, 1, LUA_TUSERDATA);
  4622. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4623. luaL_checktype(L, 2, LUA_TNUMBER);
  4624. int index = lua_tointeger(L, 2);
  4625. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderRenderTarget(index);
  4626. if(ptrRetVal == NULL) {
  4627. lua_pushnil(L);
  4628. } else {
  4629. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4630. *userdataPtr = ptrRetVal;
  4631. }
  4632. return 1;
  4633. }
  4634. static int Polycode_Material_removeShaderRenderTarget(lua_State *L) {
  4635. luaL_checktype(L, 1, LUA_TUSERDATA);
  4636. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4637. luaL_checktype(L, 2, LUA_TNUMBER);
  4638. int index = lua_tointeger(L, 2);
  4639. inst->removeShaderRenderTarget(index);
  4640. return 0;
  4641. }
  4642. static int Polycode_Material_recreateRenderTarget(lua_State *L) {
  4643. luaL_checktype(L, 1, LUA_TUSERDATA);
  4644. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4645. luaL_checktype(L, 2, LUA_TUSERDATA);
  4646. ShaderRenderTarget* renderTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  4647. inst->recreateRenderTarget(renderTarget);
  4648. return 0;
  4649. }
  4650. static int Polycode_Material_recreateRenderTargets(lua_State *L) {
  4651. luaL_checktype(L, 1, LUA_TUSERDATA);
  4652. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4653. inst->recreateRenderTargets();
  4654. return 0;
  4655. }
  4656. static int Polycode_Material_getName(lua_State *L) {
  4657. luaL_checktype(L, 1, LUA_TUSERDATA);
  4658. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4659. lua_pushstring(L, inst->getName().c_str());
  4660. return 1;
  4661. }
  4662. static int Polycode_Material_getShaderPass(lua_State *L) {
  4663. luaL_checktype(L, 1, LUA_TUSERDATA);
  4664. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4665. luaL_checktype(L, 2, LUA_TNUMBER);
  4666. int index = lua_tointeger(L, 2);
  4667. ShaderPass *retInst = new ShaderPass();
  4668. *retInst = inst->getShaderPass(index);
  4669. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4670. luaL_getmetatable(L, "Polycode.ShaderPass");
  4671. lua_setmetatable(L, -2);
  4672. *userdataPtr = (PolyBase*)retInst;
  4673. return 1;
  4674. }
  4675. static int Polycode_Material_getShaderBinding(lua_State *L) {
  4676. luaL_checktype(L, 1, LUA_TUSERDATA);
  4677. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4678. luaL_checktype(L, 2, LUA_TNUMBER);
  4679. int index = lua_tointeger(L, 2);
  4680. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderBinding(index);
  4681. if(ptrRetVal == NULL) {
  4682. lua_pushnil(L);
  4683. } else {
  4684. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4685. *userdataPtr = ptrRetVal;
  4686. }
  4687. return 1;
  4688. }
  4689. static int Polycode_Material_getShader(lua_State *L) {
  4690. luaL_checktype(L, 1, LUA_TUSERDATA);
  4691. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4692. luaL_checktype(L, 2, LUA_TNUMBER);
  4693. int index = lua_tointeger(L, 2);
  4694. PolyBase *ptrRetVal = (PolyBase*)inst->getShader(index);
  4695. if(ptrRetVal == NULL) {
  4696. lua_pushnil(L);
  4697. } else {
  4698. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4699. *userdataPtr = ptrRetVal;
  4700. }
  4701. return 1;
  4702. }
  4703. static int Polycode_Material_loadMaterial(lua_State *L) {
  4704. luaL_checktype(L, 1, LUA_TUSERDATA);
  4705. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4706. luaL_checktype(L, 2, LUA_TSTRING);
  4707. String fileName = String(lua_tostring(L, 2));
  4708. inst->loadMaterial(fileName);
  4709. return 0;
  4710. }
  4711. static int Polycode_Material_setName(lua_State *L) {
  4712. luaL_checktype(L, 1, LUA_TUSERDATA);
  4713. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4714. luaL_checktype(L, 2, LUA_TSTRING);
  4715. String name = String(lua_tostring(L, 2));
  4716. inst->setName(name);
  4717. return 0;
  4718. }
  4719. static int Polycode_Material_clearShaders(lua_State *L) {
  4720. luaL_checktype(L, 1, LUA_TUSERDATA);
  4721. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  4722. inst->clearShaders();
  4723. return 0;
  4724. }
  4725. static int Polycode_ShaderPass(lua_State *L) {
  4726. ShaderPass *inst = new ShaderPass();
  4727. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4728. *userdataPtr = (PolyBase*)inst;
  4729. luaL_getmetatable(L, "Polycode.ShaderPass");
  4730. lua_setmetatable(L, -2);
  4731. return 1;
  4732. }
  4733. static int Polycode_ShaderPass_setAttributeArraysFromMesh(lua_State *L) {
  4734. luaL_checktype(L, 1, LUA_TUSERDATA);
  4735. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  4736. luaL_checktype(L, 2, LUA_TUSERDATA);
  4737. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  4738. inst->setAttributeArraysFromMesh(mesh);
  4739. return 0;
  4740. }
  4741. static int Polycode_ShaderPass_setExpectedAttributes(lua_State *L) {
  4742. luaL_checktype(L, 1, LUA_TUSERDATA);
  4743. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  4744. inst->setExpectedAttributes();
  4745. return 0;
  4746. }
  4747. static int Polycode_ShaderPass_arrayToAttributeName(lua_State *L) {
  4748. luaL_checktype(L, 1, LUA_TUSERDATA);
  4749. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  4750. luaL_checktype(L, 2, LUA_TUSERDATA);
  4751. VertexDataArray* array = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  4752. lua_pushstring(L, inst->arrayToAttributeName(array).c_str());
  4753. return 1;
  4754. }
  4755. static int Polycode_MaterialManager(lua_State *L) {
  4756. MaterialManager *inst = new MaterialManager();
  4757. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4758. *userdataPtr = (PolyBase*)inst;
  4759. luaL_getmetatable(L, "Polycode.MaterialManager");
  4760. lua_setmetatable(L, -2);
  4761. return 1;
  4762. }
  4763. static int Polycode_MaterialManager_Update(lua_State *L) {
  4764. luaL_checktype(L, 1, LUA_TUSERDATA);
  4765. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4766. luaL_checktype(L, 2, LUA_TNUMBER);
  4767. int elapsed = lua_tointeger(L, 2);
  4768. inst->Update(elapsed);
  4769. return 0;
  4770. }
  4771. static int Polycode_MaterialManager_createTexture(lua_State *L) {
  4772. luaL_checktype(L, 1, LUA_TUSERDATA);
  4773. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4774. luaL_checktype(L, 2, LUA_TNUMBER);
  4775. int width = lua_tointeger(L, 2);
  4776. luaL_checktype(L, 3, LUA_TNUMBER);
  4777. int height = lua_tointeger(L, 3);
  4778. luaL_checktype(L, 4, LUA_TUSERDATA);
  4779. char* imageData = (char*) *((PolyBase**)lua_touserdata(L, 4));
  4780. luaL_checktype(L, 5, LUA_TBOOLEAN);
  4781. bool clamp = lua_toboolean(L, 5) != 0;
  4782. luaL_checktype(L, 6, LUA_TBOOLEAN);
  4783. bool createMipmaps = lua_toboolean(L, 6) != 0;
  4784. luaL_checktype(L, 7, LUA_TNUMBER);
  4785. int type = lua_tointeger(L, 7);
  4786. PolyBase *ptrRetVal = (PolyBase*)inst->createTexture(width, height, imageData, clamp, createMipmaps, type);
  4787. if(ptrRetVal == NULL) {
  4788. lua_pushnil(L);
  4789. } else {
  4790. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4791. *userdataPtr = ptrRetVal;
  4792. }
  4793. return 1;
  4794. }
  4795. static int Polycode_MaterialManager_createNewTexture(lua_State *L) {
  4796. luaL_checktype(L, 1, LUA_TUSERDATA);
  4797. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4798. luaL_checktype(L, 2, LUA_TNUMBER);
  4799. int width = lua_tointeger(L, 2);
  4800. luaL_checktype(L, 3, LUA_TNUMBER);
  4801. int height = lua_tointeger(L, 3);
  4802. luaL_checktype(L, 4, LUA_TBOOLEAN);
  4803. bool clamp = lua_toboolean(L, 4) != 0;
  4804. luaL_checktype(L, 5, LUA_TBOOLEAN);
  4805. bool createMipmaps = lua_toboolean(L, 5) != 0;
  4806. luaL_checktype(L, 6, LUA_TNUMBER);
  4807. int type = lua_tointeger(L, 6);
  4808. PolyBase *ptrRetVal = (PolyBase*)inst->createNewTexture(width, height, clamp, createMipmaps, type);
  4809. if(ptrRetVal == NULL) {
  4810. lua_pushnil(L);
  4811. } else {
  4812. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4813. *userdataPtr = ptrRetVal;
  4814. }
  4815. return 1;
  4816. }
  4817. static int Polycode_MaterialManager_createTextureFromImage(lua_State *L) {
  4818. luaL_checktype(L, 1, LUA_TUSERDATA);
  4819. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4820. luaL_checktype(L, 2, LUA_TUSERDATA);
  4821. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  4822. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4823. bool clamp = lua_toboolean(L, 3) != 0;
  4824. luaL_checktype(L, 4, LUA_TBOOLEAN);
  4825. bool createMipmaps = lua_toboolean(L, 4) != 0;
  4826. PolyBase *ptrRetVal = (PolyBase*)inst->createTextureFromImage(image, clamp, createMipmaps);
  4827. if(ptrRetVal == NULL) {
  4828. lua_pushnil(L);
  4829. } else {
  4830. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4831. *userdataPtr = ptrRetVal;
  4832. }
  4833. return 1;
  4834. }
  4835. static int Polycode_MaterialManager_createTextureFromFile(lua_State *L) {
  4836. luaL_checktype(L, 1, LUA_TUSERDATA);
  4837. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4838. luaL_checktype(L, 2, LUA_TSTRING);
  4839. String fileName = String(lua_tostring(L, 2));
  4840. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4841. bool clamp = lua_toboolean(L, 3) != 0;
  4842. luaL_checktype(L, 4, LUA_TBOOLEAN);
  4843. bool createMipmaps = lua_toboolean(L, 4) != 0;
  4844. luaL_checktype(L, 5, LUA_TUSERDATA);
  4845. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 5));
  4846. PolyBase *ptrRetVal = (PolyBase*)inst->createTextureFromFile(fileName, clamp, createMipmaps, resourcePool);
  4847. if(ptrRetVal == NULL) {
  4848. lua_pushnil(L);
  4849. } else {
  4850. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4851. *userdataPtr = ptrRetVal;
  4852. }
  4853. return 1;
  4854. }
  4855. static int Polycode_MaterialManager_deleteTexture(lua_State *L) {
  4856. luaL_checktype(L, 1, LUA_TUSERDATA);
  4857. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4858. luaL_checktype(L, 2, LUA_TUSERDATA);
  4859. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  4860. inst->deleteTexture(texture);
  4861. return 0;
  4862. }
  4863. static int Polycode_MaterialManager_reloadTextures(lua_State *L) {
  4864. luaL_checktype(L, 1, LUA_TUSERDATA);
  4865. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4866. inst->reloadTextures();
  4867. return 0;
  4868. }
  4869. static int Polycode_MaterialManager_reloadProgramsAndTextures(lua_State *L) {
  4870. luaL_checktype(L, 1, LUA_TUSERDATA);
  4871. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4872. inst->reloadProgramsAndTextures();
  4873. return 0;
  4874. }
  4875. static int Polycode_MaterialManager_reloadPrograms(lua_State *L) {
  4876. luaL_checktype(L, 1, LUA_TUSERDATA);
  4877. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4878. inst->reloadPrograms();
  4879. return 0;
  4880. }
  4881. static int Polycode_MaterialManager_getTextureByResourcePath(lua_State *L) {
  4882. luaL_checktype(L, 1, LUA_TUSERDATA);
  4883. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4884. luaL_checktype(L, 2, LUA_TSTRING);
  4885. String resourcePath = String(lua_tostring(L, 2));
  4886. PolyBase *ptrRetVal = (PolyBase*)inst->getTextureByResourcePath(resourcePath);
  4887. if(ptrRetVal == NULL) {
  4888. lua_pushnil(L);
  4889. } else {
  4890. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4891. *userdataPtr = ptrRetVal;
  4892. }
  4893. return 1;
  4894. }
  4895. static int Polycode_MaterialManager_createProgramFromFile(lua_State *L) {
  4896. luaL_checktype(L, 1, LUA_TUSERDATA);
  4897. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4898. luaL_checktype(L, 2, LUA_TSTRING);
  4899. String programPath = String(lua_tostring(L, 2));
  4900. PolyBase *ptrRetVal = (PolyBase*)inst->createProgramFromFile(programPath);
  4901. if(ptrRetVal == NULL) {
  4902. lua_pushnil(L);
  4903. } else {
  4904. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4905. *userdataPtr = ptrRetVal;
  4906. }
  4907. return 1;
  4908. }
  4909. static int Polycode_MaterialManager_loadMaterialLibraryIntoPool(lua_State *L) {
  4910. luaL_checktype(L, 1, LUA_TUSERDATA);
  4911. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4912. luaL_checktype(L, 2, LUA_TUSERDATA);
  4913. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  4914. luaL_checktype(L, 3, LUA_TSTRING);
  4915. String materialFile = String(lua_tostring(L, 3));
  4916. inst->loadMaterialLibraryIntoPool(pool, materialFile);
  4917. return 0;
  4918. }
  4919. static int Polycode_MaterialManager_cubemapFromXMLNode(lua_State *L) {
  4920. luaL_checktype(L, 1, LUA_TUSERDATA);
  4921. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4922. luaL_checktype(L, 2, LUA_TUSERDATA);
  4923. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 2));
  4924. PolyBase *ptrRetVal = (PolyBase*)inst->cubemapFromXMLNode(node);
  4925. if(ptrRetVal == NULL) {
  4926. lua_pushnil(L);
  4927. } else {
  4928. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4929. *userdataPtr = ptrRetVal;
  4930. }
  4931. return 1;
  4932. }
  4933. static int Polycode_MaterialManager_materialFromXMLNode(lua_State *L) {
  4934. luaL_checktype(L, 1, LUA_TUSERDATA);
  4935. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4936. luaL_checktype(L, 2, LUA_TUSERDATA);
  4937. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  4938. luaL_checktype(L, 3, LUA_TUSERDATA);
  4939. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  4940. PolyBase *ptrRetVal = (PolyBase*)inst->materialFromXMLNode(resourcePool, node);
  4941. if(ptrRetVal == NULL) {
  4942. lua_pushnil(L);
  4943. } else {
  4944. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4945. *userdataPtr = ptrRetVal;
  4946. }
  4947. return 1;
  4948. }
  4949. static int Polycode_MaterialManager_createMaterial(lua_State *L) {
  4950. luaL_checktype(L, 1, LUA_TUSERDATA);
  4951. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4952. luaL_checktype(L, 2, LUA_TUSERDATA);
  4953. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  4954. luaL_checktype(L, 3, LUA_TSTRING);
  4955. String materialName = String(lua_tostring(L, 3));
  4956. luaL_checktype(L, 4, LUA_TSTRING);
  4957. String shaderName = String(lua_tostring(L, 4));
  4958. PolyBase *ptrRetVal = (PolyBase*)inst->createMaterial(resourcePool, materialName, shaderName);
  4959. if(ptrRetVal == NULL) {
  4960. lua_pushnil(L);
  4961. } else {
  4962. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4963. *userdataPtr = ptrRetVal;
  4964. }
  4965. return 1;
  4966. }
  4967. static int Polycode_MaterialManager_setShaderFromXMLNode(lua_State *L) {
  4968. luaL_checktype(L, 1, LUA_TUSERDATA);
  4969. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4970. luaL_checktype(L, 2, LUA_TUSERDATA);
  4971. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  4972. luaL_checktype(L, 3, LUA_TUSERDATA);
  4973. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  4974. PolyBase *ptrRetVal = (PolyBase*)inst->setShaderFromXMLNode(resourcePool, node);
  4975. if(ptrRetVal == NULL) {
  4976. lua_pushnil(L);
  4977. } else {
  4978. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4979. *userdataPtr = ptrRetVal;
  4980. }
  4981. return 1;
  4982. }
  4983. static int Polycode_MaterialManager_createShaderFromXMLNode(lua_State *L) {
  4984. luaL_checktype(L, 1, LUA_TUSERDATA);
  4985. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  4986. luaL_checktype(L, 2, LUA_TUSERDATA);
  4987. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  4988. luaL_checktype(L, 3, LUA_TUSERDATA);
  4989. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  4990. PolyBase *ptrRetVal = (PolyBase*)inst->createShaderFromXMLNode(resourcePool, node);
  4991. if(ptrRetVal == NULL) {
  4992. lua_pushnil(L);
  4993. } else {
  4994. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4995. *userdataPtr = ptrRetVal;
  4996. }
  4997. return 1;
  4998. }
  4999. static int Polycode_MaterialManager_createShader(lua_State *L) {
  5000. luaL_checktype(L, 1, LUA_TUSERDATA);
  5001. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5002. luaL_checktype(L, 2, LUA_TUSERDATA);
  5003. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  5004. luaL_checktype(L, 3, LUA_TSTRING);
  5005. String shaderType = String(lua_tostring(L, 3));
  5006. luaL_checktype(L, 4, LUA_TSTRING);
  5007. String name = String(lua_tostring(L, 4));
  5008. luaL_checktype(L, 5, LUA_TSTRING);
  5009. String vpName = String(lua_tostring(L, 5));
  5010. luaL_checktype(L, 6, LUA_TSTRING);
  5011. String fpName = String(lua_tostring(L, 6));
  5012. luaL_checktype(L, 7, LUA_TBOOLEAN);
  5013. bool screenShader = lua_toboolean(L, 7) != 0;
  5014. PolyBase *ptrRetVal = (PolyBase*)inst->createShader(resourcePool, shaderType, name, vpName, fpName, screenShader);
  5015. if(ptrRetVal == NULL) {
  5016. lua_pushnil(L);
  5017. } else {
  5018. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5019. *userdataPtr = ptrRetVal;
  5020. }
  5021. return 1;
  5022. }
  5023. static int Polycode_MaterialManager_loadMaterialsFromFile(lua_State *L) {
  5024. luaL_checktype(L, 1, LUA_TUSERDATA);
  5025. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5026. luaL_checktype(L, 2, LUA_TUSERDATA);
  5027. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  5028. luaL_checktype(L, 3, LUA_TSTRING);
  5029. String fileName = String(lua_tostring(L, 3));
  5030. }
  5031. static int Polycode_MaterialManager_loadShadersFromFile(lua_State *L) {
  5032. luaL_checktype(L, 1, LUA_TUSERDATA);
  5033. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5034. luaL_checktype(L, 2, LUA_TUSERDATA);
  5035. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  5036. luaL_checktype(L, 3, LUA_TSTRING);
  5037. String fileName = String(lua_tostring(L, 3));
  5038. }
  5039. static int Polycode_MaterialManager_loadCubemapsFromFile(lua_State *L) {
  5040. luaL_checktype(L, 1, LUA_TUSERDATA);
  5041. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5042. luaL_checktype(L, 2, LUA_TSTRING);
  5043. String fileName = String(lua_tostring(L, 2));
  5044. }
  5045. static int Polycode_MaterialManager_setAnisotropyAmount(lua_State *L) {
  5046. luaL_checktype(L, 1, LUA_TUSERDATA);
  5047. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5048. luaL_checktype(L, 2, LUA_TNUMBER);
  5049. int anisotropy = lua_tointeger(L, 2);
  5050. inst->setAnisotropyAmount(anisotropy);
  5051. return 0;
  5052. }
  5053. static int Polycode_MaterialManager_setTextureFilteringMode(lua_State *L) {
  5054. luaL_checktype(L, 1, LUA_TUSERDATA);
  5055. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5056. luaL_checktype(L, 2, LUA_TNUMBER);
  5057. int textureFilteringMode = lua_tointeger(L, 2);
  5058. inst->setTextureFilteringMode(textureFilteringMode);
  5059. return 0;
  5060. }
  5061. static int Polycode_MaterialManager_getTextureFilteringMode(lua_State *L) {
  5062. luaL_checktype(L, 1, LUA_TUSERDATA);
  5063. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5064. lua_pushinteger(L, inst->getTextureFilteringMode());
  5065. return 1;
  5066. }
  5067. static int Polycode_MaterialManager_addMaterial(lua_State *L) {
  5068. luaL_checktype(L, 1, LUA_TUSERDATA);
  5069. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5070. luaL_checktype(L, 2, LUA_TUSERDATA);
  5071. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  5072. inst->addMaterial(material);
  5073. return 0;
  5074. }
  5075. static int Polycode_MaterialManager_addShader(lua_State *L) {
  5076. luaL_checktype(L, 1, LUA_TUSERDATA);
  5077. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5078. luaL_checktype(L, 2, LUA_TUSERDATA);
  5079. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  5080. inst->addShader(shader);
  5081. return 0;
  5082. }
  5083. static int Polycode_MaterialManager_getNumShaders(lua_State *L) {
  5084. luaL_checktype(L, 1, LUA_TUSERDATA);
  5085. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5086. lua_pushinteger(L, inst->getNumShaders());
  5087. return 1;
  5088. }
  5089. static int Polycode_MaterialManager_getShaderByIndex(lua_State *L) {
  5090. luaL_checktype(L, 1, LUA_TUSERDATA);
  5091. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  5092. luaL_checktype(L, 2, LUA_TNUMBER);
  5093. int index = lua_tointeger(L, 2);
  5094. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderByIndex(index);
  5095. if(ptrRetVal == NULL) {
  5096. lua_pushnil(L);
  5097. } else {
  5098. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5099. *userdataPtr = ptrRetVal;
  5100. }
  5101. return 1;
  5102. }
  5103. static int Polycode_Matrix4(lua_State *L) {
  5104. Matrix4 *inst = new Matrix4();
  5105. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5106. *userdataPtr = (PolyBase*)inst;
  5107. luaL_getmetatable(L, "Polycode.Matrix4");
  5108. lua_setmetatable(L, -2);
  5109. return 1;
  5110. }
  5111. static int Polycode_Matrix4_identity(lua_State *L) {
  5112. luaL_checktype(L, 1, LUA_TUSERDATA);
  5113. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5114. inst->identity();
  5115. return 0;
  5116. }
  5117. static int Polycode_Matrix4_rotateVector(lua_State *L) {
  5118. luaL_checktype(L, 1, LUA_TUSERDATA);
  5119. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5120. luaL_checktype(L, 2, LUA_TUSERDATA);
  5121. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5122. Vector3 *retInst = new Vector3();
  5123. *retInst = inst->rotateVector(v2);
  5124. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5125. luaL_getmetatable(L, "Polycode.Vector3");
  5126. lua_setmetatable(L, -2);
  5127. *userdataPtr = (PolyBase*)retInst;
  5128. return 1;
  5129. }
  5130. static int Polycode_Matrix4_getPosition(lua_State *L) {
  5131. luaL_checktype(L, 1, LUA_TUSERDATA);
  5132. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5133. Vector3 *retInst = new Vector3();
  5134. *retInst = inst->getPosition();
  5135. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5136. luaL_getmetatable(L, "Polycode.Vector3");
  5137. lua_setmetatable(L, -2);
  5138. *userdataPtr = (PolyBase*)retInst;
  5139. return 1;
  5140. }
  5141. static int Polycode_Matrix4_multiplyWithPerspective(lua_State *L) {
  5142. luaL_checktype(L, 1, LUA_TUSERDATA);
  5143. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5144. luaL_checktype(L, 2, LUA_TUSERDATA);
  5145. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5146. Vector3 *retInst = new Vector3();
  5147. *retInst = inst->multiplyWithPerspective(v2);
  5148. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5149. luaL_getmetatable(L, "Polycode.Vector3");
  5150. lua_setmetatable(L, -2);
  5151. *userdataPtr = (PolyBase*)retInst;
  5152. return 1;
  5153. }
  5154. static int Polycode_Matrix4_multVector3(lua_State *L) {
  5155. luaL_checktype(L, 1, LUA_TUSERDATA);
  5156. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5157. luaL_checktype(L, 2, LUA_TUSERDATA);
  5158. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5159. Vector3 *retInst = new Vector3();
  5160. *retInst = inst->multVector3(v2);
  5161. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5162. luaL_getmetatable(L, "Polycode.Vector3");
  5163. lua_setmetatable(L, -2);
  5164. *userdataPtr = (PolyBase*)retInst;
  5165. return 1;
  5166. }
  5167. static int Polycode_Matrix4_multVector4(lua_State *L) {
  5168. luaL_checktype(L, 1, LUA_TUSERDATA);
  5169. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5170. luaL_checktype(L, 2, LUA_TUSERDATA);
  5171. Vector4 v2 = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  5172. Vector4 *retInst = new Vector4();
  5173. *retInst = inst->multVector4(v2);
  5174. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5175. luaL_getmetatable(L, "Polycode.Vector4");
  5176. lua_setmetatable(L, -2);
  5177. *userdataPtr = (PolyBase*)retInst;
  5178. return 1;
  5179. }
  5180. static int Polycode_Matrix4_Translate(lua_State *L) {
  5181. luaL_checktype(L, 1, LUA_TUSERDATA);
  5182. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5183. luaL_checktype(L, 2, LUA_TNUMBER);
  5184. Number x = lua_tonumber(L, 2);
  5185. luaL_checktype(L, 3, LUA_TNUMBER);
  5186. Number y = lua_tonumber(L, 3);
  5187. luaL_checktype(L, 4, LUA_TNUMBER);
  5188. Number z = lua_tonumber(L, 4);
  5189. inst->Translate(x, y, z);
  5190. return 0;
  5191. }
  5192. static int Polycode_Matrix4_setPosition(lua_State *L) {
  5193. luaL_checktype(L, 1, LUA_TUSERDATA);
  5194. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5195. luaL_checktype(L, 2, LUA_TNUMBER);
  5196. Number x = lua_tonumber(L, 2);
  5197. luaL_checktype(L, 3, LUA_TNUMBER);
  5198. Number y = lua_tonumber(L, 3);
  5199. luaL_checktype(L, 4, LUA_TNUMBER);
  5200. Number z = lua_tonumber(L, 4);
  5201. inst->setPosition(x, y, z);
  5202. return 0;
  5203. }
  5204. static int Polycode_Matrix4_setScale(lua_State *L) {
  5205. luaL_checktype(L, 1, LUA_TUSERDATA);
  5206. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5207. luaL_checktype(L, 2, LUA_TUSERDATA);
  5208. Vector3 scale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5209. inst->setScale(scale);
  5210. return 0;
  5211. }
  5212. static int Polycode_Matrix4_getEulerAngles(lua_State *L) {
  5213. luaL_checktype(L, 1, LUA_TUSERDATA);
  5214. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5215. luaL_checktype(L, 2, LUA_TUSERDATA);
  5216. Number* ax = (Number*) *((PolyBase**)lua_touserdata(L, 2));
  5217. luaL_checktype(L, 3, LUA_TUSERDATA);
  5218. Number* ay = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  5219. luaL_checktype(L, 4, LUA_TUSERDATA);
  5220. Number* az = (Number*) *((PolyBase**)lua_touserdata(L, 4));
  5221. inst->getEulerAngles(ax, ay, az);
  5222. return 0;
  5223. }
  5224. static int Polycode_Matrix4_transpose(lua_State *L) {
  5225. luaL_checktype(L, 1, LUA_TUSERDATA);
  5226. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5227. Matrix4 *retInst = new Matrix4();
  5228. *retInst = inst->transpose();
  5229. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5230. luaL_getmetatable(L, "Polycode.Matrix4");
  5231. lua_setmetatable(L, -2);
  5232. *userdataPtr = (PolyBase*)retInst;
  5233. return 1;
  5234. }
  5235. static int Polycode_Matrix4_Inverse(lua_State *L) {
  5236. luaL_checktype(L, 1, LUA_TUSERDATA);
  5237. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5238. Matrix4 *retInst = new Matrix4();
  5239. *retInst = inst->Inverse();
  5240. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5241. luaL_getmetatable(L, "Polycode.Matrix4");
  5242. lua_setmetatable(L, -2);
  5243. *userdataPtr = (PolyBase*)retInst;
  5244. return 1;
  5245. }
  5246. static int Polycode_Matrix4_inverseAffine(lua_State *L) {
  5247. luaL_checktype(L, 1, LUA_TUSERDATA);
  5248. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5249. Matrix4 *retInst = new Matrix4();
  5250. *retInst = inst->inverseAffine();
  5251. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5252. luaL_getmetatable(L, "Polycode.Matrix4");
  5253. lua_setmetatable(L, -2);
  5254. *userdataPtr = (PolyBase*)retInst;
  5255. return 1;
  5256. }
  5257. static int Polycode_Matrix4_determinant(lua_State *L) {
  5258. luaL_checktype(L, 1, LUA_TUSERDATA);
  5259. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5260. lua_pushnumber(L, inst->determinant());
  5261. return 1;
  5262. }
  5263. static int Polycode_Matrix4_generalDeterminant(lua_State *L) {
  5264. luaL_checktype(L, 1, LUA_TUSERDATA);
  5265. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5266. luaL_checktype(L, 2, LUA_TUSERDATA);
  5267. Number** a = (Number**) *((PolyBase**)lua_touserdata(L, 2));
  5268. luaL_checktype(L, 3, LUA_TNUMBER);
  5269. int n = lua_tointeger(L, 3);
  5270. lua_pushnumber(L, inst->generalDeterminant(a, n));
  5271. return 1;
  5272. }
  5273. static int Polycode_Matrix4_setOrthoProjection(lua_State *L) {
  5274. luaL_checktype(L, 1, LUA_TUSERDATA);
  5275. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5276. luaL_checktype(L, 2, LUA_TNUMBER);
  5277. Number left = lua_tonumber(L, 2);
  5278. luaL_checktype(L, 3, LUA_TNUMBER);
  5279. Number right = lua_tonumber(L, 3);
  5280. luaL_checktype(L, 4, LUA_TNUMBER);
  5281. Number bottom = lua_tonumber(L, 4);
  5282. luaL_checktype(L, 5, LUA_TNUMBER);
  5283. Number top = lua_tonumber(L, 5);
  5284. luaL_checktype(L, 6, LUA_TNUMBER);
  5285. Number zNear = lua_tonumber(L, 6);
  5286. luaL_checktype(L, 7, LUA_TNUMBER);
  5287. Number zFar = lua_tonumber(L, 7);
  5288. inst->setOrthoProjection(left, right, bottom, top, zNear, zFar);
  5289. return 0;
  5290. }
  5291. static int Polycode_Matrix4_setProjectionFrustum(lua_State *L) {
  5292. luaL_checktype(L, 1, LUA_TUSERDATA);
  5293. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5294. luaL_checktype(L, 2, LUA_TNUMBER);
  5295. Number left = lua_tonumber(L, 2);
  5296. luaL_checktype(L, 3, LUA_TNUMBER);
  5297. Number right = lua_tonumber(L, 3);
  5298. luaL_checktype(L, 4, LUA_TNUMBER);
  5299. Number bottom = lua_tonumber(L, 4);
  5300. luaL_checktype(L, 5, LUA_TNUMBER);
  5301. Number top = lua_tonumber(L, 5);
  5302. luaL_checktype(L, 6, LUA_TNUMBER);
  5303. Number zNear = lua_tonumber(L, 6);
  5304. luaL_checktype(L, 7, LUA_TNUMBER);
  5305. Number zFar = lua_tonumber(L, 7);
  5306. inst->setProjectionFrustum(left, right, bottom, top, zNear, zFar);
  5307. return 0;
  5308. }
  5309. static int Polycode_Matrix4_setProjection(lua_State *L) {
  5310. luaL_checktype(L, 1, LUA_TUSERDATA);
  5311. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  5312. luaL_checktype(L, 2, LUA_TNUMBER);
  5313. Number fov = lua_tonumber(L, 2);
  5314. luaL_checktype(L, 3, LUA_TNUMBER);
  5315. Number aspect = lua_tonumber(L, 3);
  5316. luaL_checktype(L, 4, LUA_TNUMBER);
  5317. Number zNear = lua_tonumber(L, 4);
  5318. luaL_checktype(L, 5, LUA_TNUMBER);
  5319. Number zFar = lua_tonumber(L, 5);
  5320. inst->setProjection(fov, aspect, zNear, zFar);
  5321. return 0;
  5322. }
  5323. static int Polycode_Mesh(lua_State *L) {
  5324. luaL_checktype(L, 1, LUA_TNUMBER);
  5325. int meshType = lua_tointeger(L, 1);
  5326. Mesh *inst = new Mesh(meshType);
  5327. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5328. *userdataPtr = (PolyBase*)inst;
  5329. luaL_getmetatable(L, "Polycode.Mesh");
  5330. lua_setmetatable(L, -2);
  5331. return 1;
  5332. }
  5333. static int Polycode_Mesh_MeshFromFileName(lua_State *L) {
  5334. luaL_checktype(L, 1, LUA_TUSERDATA);
  5335. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5336. luaL_checktype(L, 2, LUA_TSTRING);
  5337. String fileName = String(lua_tostring(L, 2));
  5338. PolyBase *ptrRetVal = (PolyBase*)inst->MeshFromFileName(fileName);
  5339. if(ptrRetVal == NULL) {
  5340. lua_pushnil(L);
  5341. } else {
  5342. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5343. *userdataPtr = ptrRetVal;
  5344. }
  5345. return 1;
  5346. }
  5347. static int Polycode_Mesh_loadMesh(lua_State *L) {
  5348. luaL_checktype(L, 1, LUA_TUSERDATA);
  5349. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5350. luaL_checktype(L, 2, LUA_TSTRING);
  5351. String fileName = String(lua_tostring(L, 2));
  5352. inst->loadMesh(fileName);
  5353. return 0;
  5354. }
  5355. static int Polycode_Mesh_clearMesh(lua_State *L) {
  5356. luaL_checktype(L, 1, LUA_TUSERDATA);
  5357. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5358. inst->clearMesh();
  5359. return 0;
  5360. }
  5361. static int Polycode_Mesh_saveToFile(lua_State *L) {
  5362. luaL_checktype(L, 1, LUA_TUSERDATA);
  5363. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5364. luaL_checktype(L, 2, LUA_TSTRING);
  5365. String fileName = String(lua_tostring(L, 2));
  5366. luaL_checktype(L, 3, LUA_TBOOLEAN);
  5367. bool writeNormals = lua_toboolean(L, 3) != 0;
  5368. luaL_checktype(L, 4, LUA_TBOOLEAN);
  5369. bool writeTangents = lua_toboolean(L, 4) != 0;
  5370. luaL_checktype(L, 5, LUA_TBOOLEAN);
  5371. bool writeColors = lua_toboolean(L, 5) != 0;
  5372. luaL_checktype(L, 6, LUA_TBOOLEAN);
  5373. bool writeBoneWeights = lua_toboolean(L, 6) != 0;
  5374. luaL_checktype(L, 7, LUA_TBOOLEAN);
  5375. bool writeUVs = lua_toboolean(L, 7) != 0;
  5376. luaL_checktype(L, 8, LUA_TBOOLEAN);
  5377. bool writeSecondaryUVs = lua_toboolean(L, 8) != 0;
  5378. inst->saveToFile(fileName, writeNormals, writeTangents, writeColors, writeBoneWeights, writeUVs, writeSecondaryUVs);
  5379. return 0;
  5380. }
  5381. static int Polycode_Mesh_loadFromFile(lua_State *L) {
  5382. luaL_checktype(L, 1, LUA_TUSERDATA);
  5383. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5384. luaL_checktype(L, 2, LUA_TUSERDATA);
  5385. CoreFile* inFile = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  5386. inst->loadFromFile(inFile);
  5387. return 0;
  5388. }
  5389. static int Polycode_Mesh_getVertexCount(lua_State *L) {
  5390. luaL_checktype(L, 1, LUA_TUSERDATA);
  5391. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5392. lua_pushinteger(L, inst->getVertexCount());
  5393. return 1;
  5394. }
  5395. static int Polycode_Mesh_createPlane(lua_State *L) {
  5396. luaL_checktype(L, 1, LUA_TUSERDATA);
  5397. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5398. luaL_checktype(L, 2, LUA_TNUMBER);
  5399. Number w = lua_tonumber(L, 2);
  5400. luaL_checktype(L, 3, LUA_TNUMBER);
  5401. Number h = lua_tonumber(L, 3);
  5402. luaL_checktype(L, 4, LUA_TNUMBER);
  5403. Number tilingValue = lua_tonumber(L, 4);
  5404. inst->createPlane(w, h, tilingValue);
  5405. return 0;
  5406. }
  5407. static int Polycode_Mesh_createVPlane(lua_State *L) {
  5408. luaL_checktype(L, 1, LUA_TUSERDATA);
  5409. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5410. luaL_checktype(L, 2, LUA_TNUMBER);
  5411. Number w = lua_tonumber(L, 2);
  5412. luaL_checktype(L, 3, LUA_TNUMBER);
  5413. Number h = lua_tonumber(L, 3);
  5414. luaL_checktype(L, 4, LUA_TNUMBER);
  5415. Number tilingValue = lua_tonumber(L, 4);
  5416. inst->createVPlane(w, h, tilingValue);
  5417. return 0;
  5418. }
  5419. static int Polycode_Mesh_createCircle(lua_State *L) {
  5420. luaL_checktype(L, 1, LUA_TUSERDATA);
  5421. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5422. luaL_checktype(L, 2, LUA_TNUMBER);
  5423. Number w = lua_tonumber(L, 2);
  5424. luaL_checktype(L, 3, LUA_TNUMBER);
  5425. Number h = lua_tonumber(L, 3);
  5426. luaL_checktype(L, 4, LUA_TNUMBER);
  5427. int numSegments = lua_tointeger(L, 4);
  5428. luaL_checktype(L, 5, LUA_TNUMBER);
  5429. Number tilingValue = lua_tonumber(L, 5);
  5430. inst->createCircle(w, h, numSegments, tilingValue);
  5431. return 0;
  5432. }
  5433. static int Polycode_Mesh_createLineCircle(lua_State *L) {
  5434. luaL_checktype(L, 1, LUA_TUSERDATA);
  5435. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5436. luaL_checktype(L, 2, LUA_TNUMBER);
  5437. Number w = lua_tonumber(L, 2);
  5438. luaL_checktype(L, 3, LUA_TNUMBER);
  5439. Number h = lua_tonumber(L, 3);
  5440. luaL_checktype(L, 4, LUA_TNUMBER);
  5441. int numSegments = lua_tointeger(L, 4);
  5442. luaL_checktype(L, 5, LUA_TNUMBER);
  5443. Number tilingValue = lua_tonumber(L, 5);
  5444. inst->createLineCircle(w, h, numSegments, tilingValue);
  5445. return 0;
  5446. }
  5447. static int Polycode_Mesh_createTorus(lua_State *L) {
  5448. luaL_checktype(L, 1, LUA_TUSERDATA);
  5449. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5450. luaL_checktype(L, 2, LUA_TNUMBER);
  5451. Number radius = lua_tonumber(L, 2);
  5452. luaL_checktype(L, 3, LUA_TNUMBER);
  5453. Number tubeRadius = lua_tonumber(L, 3);
  5454. luaL_checktype(L, 4, LUA_TNUMBER);
  5455. int segmentsW = lua_tointeger(L, 4);
  5456. luaL_checktype(L, 5, LUA_TNUMBER);
  5457. int segmentsH = lua_tointeger(L, 5);
  5458. luaL_checktype(L, 6, LUA_TNUMBER);
  5459. Number tilingValue = lua_tonumber(L, 6);
  5460. inst->createTorus(radius, tubeRadius, segmentsW, segmentsH, tilingValue);
  5461. return 0;
  5462. }
  5463. static int Polycode_Mesh_createBox(lua_State *L) {
  5464. luaL_checktype(L, 1, LUA_TUSERDATA);
  5465. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5466. luaL_checktype(L, 2, LUA_TNUMBER);
  5467. Number w = lua_tonumber(L, 2);
  5468. luaL_checktype(L, 3, LUA_TNUMBER);
  5469. Number d = lua_tonumber(L, 3);
  5470. luaL_checktype(L, 4, LUA_TNUMBER);
  5471. Number h = lua_tonumber(L, 4);
  5472. luaL_checktype(L, 5, LUA_TNUMBER);
  5473. Number tilingValue = lua_tonumber(L, 5);
  5474. inst->createBox(w, d, h, tilingValue);
  5475. return 0;
  5476. }
  5477. static int Polycode_Mesh_createSphere(lua_State *L) {
  5478. luaL_checktype(L, 1, LUA_TUSERDATA);
  5479. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5480. luaL_checktype(L, 2, LUA_TNUMBER);
  5481. Number radius = lua_tonumber(L, 2);
  5482. luaL_checktype(L, 3, LUA_TNUMBER);
  5483. int numRings = lua_tointeger(L, 3);
  5484. luaL_checktype(L, 4, LUA_TNUMBER);
  5485. int numSegments = lua_tointeger(L, 4);
  5486. luaL_checktype(L, 5, LUA_TNUMBER);
  5487. Number tilingValue = lua_tonumber(L, 5);
  5488. inst->createSphere(radius, numRings, numSegments, tilingValue);
  5489. return 0;
  5490. }
  5491. static int Polycode_Mesh_createIcosphere(lua_State *L) {
  5492. luaL_checktype(L, 1, LUA_TUSERDATA);
  5493. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5494. luaL_checktype(L, 2, LUA_TNUMBER);
  5495. Number radius = lua_tonumber(L, 2);
  5496. luaL_checktype(L, 3, LUA_TNUMBER);
  5497. int subdivisions = lua_tointeger(L, 3);
  5498. inst->createIcosphere(radius, subdivisions);
  5499. return 0;
  5500. }
  5501. static int Polycode_Mesh_createOctosphere(lua_State *L) {
  5502. luaL_checktype(L, 1, LUA_TUSERDATA);
  5503. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5504. luaL_checktype(L, 2, LUA_TNUMBER);
  5505. Number radius = lua_tonumber(L, 2);
  5506. luaL_checktype(L, 3, LUA_TNUMBER);
  5507. int subdivisions = lua_tointeger(L, 3);
  5508. inst->createOctosphere(radius, subdivisions);
  5509. return 0;
  5510. }
  5511. static int Polycode_Mesh_createCylinder(lua_State *L) {
  5512. luaL_checktype(L, 1, LUA_TUSERDATA);
  5513. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5514. luaL_checktype(L, 2, LUA_TNUMBER);
  5515. Number height = lua_tonumber(L, 2);
  5516. luaL_checktype(L, 3, LUA_TNUMBER);
  5517. Number radius = lua_tonumber(L, 3);
  5518. luaL_checktype(L, 4, LUA_TNUMBER);
  5519. int numSegments = lua_tointeger(L, 4);
  5520. luaL_checktype(L, 5, LUA_TBOOLEAN);
  5521. bool capped = lua_toboolean(L, 5) != 0;
  5522. luaL_checktype(L, 6, LUA_TNUMBER);
  5523. Number tilingValue = lua_tonumber(L, 6);
  5524. inst->createCylinder(height, radius, numSegments, capped, tilingValue);
  5525. return 0;
  5526. }
  5527. static int Polycode_Mesh_createCone(lua_State *L) {
  5528. luaL_checktype(L, 1, LUA_TUSERDATA);
  5529. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5530. luaL_checktype(L, 2, LUA_TNUMBER);
  5531. Number height = lua_tonumber(L, 2);
  5532. luaL_checktype(L, 3, LUA_TNUMBER);
  5533. Number radius = lua_tonumber(L, 3);
  5534. luaL_checktype(L, 4, LUA_TNUMBER);
  5535. int numSegments = lua_tointeger(L, 4);
  5536. luaL_checktype(L, 5, LUA_TNUMBER);
  5537. Number tilingValue = lua_tonumber(L, 5);
  5538. inst->createCone(height, radius, numSegments, tilingValue);
  5539. return 0;
  5540. }
  5541. static int Polycode_Mesh_recenterMesh(lua_State *L) {
  5542. luaL_checktype(L, 1, LUA_TUSERDATA);
  5543. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5544. Vector3 *retInst = new Vector3();
  5545. *retInst = inst->recenterMesh();
  5546. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5547. luaL_getmetatable(L, "Polycode.Vector3");
  5548. lua_setmetatable(L, -2);
  5549. *userdataPtr = (PolyBase*)retInst;
  5550. return 1;
  5551. }
  5552. static int Polycode_Mesh_setVertexAtOffset(lua_State *L) {
  5553. luaL_checktype(L, 1, LUA_TUSERDATA);
  5554. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5555. luaL_checktype(L, 2, LUA_TNUMBER);
  5556. int offset = lua_tointeger(L, 2);
  5557. luaL_checktype(L, 3, LUA_TNUMBER);
  5558. Number x = lua_tonumber(L, 3);
  5559. luaL_checktype(L, 4, LUA_TNUMBER);
  5560. Number y = lua_tonumber(L, 4);
  5561. luaL_checktype(L, 5, LUA_TNUMBER);
  5562. Number z = lua_tonumber(L, 5);
  5563. inst->setVertexAtOffset(offset, x, y, z);
  5564. return 0;
  5565. }
  5566. static int Polycode_Mesh_addVertexWithUVAndNormal(lua_State *L) {
  5567. luaL_checktype(L, 1, LUA_TUSERDATA);
  5568. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5569. luaL_checktype(L, 2, LUA_TNUMBER);
  5570. Number x = lua_tonumber(L, 2);
  5571. luaL_checktype(L, 3, LUA_TNUMBER);
  5572. Number y = lua_tonumber(L, 3);
  5573. luaL_checktype(L, 4, LUA_TNUMBER);
  5574. Number z = lua_tonumber(L, 4);
  5575. luaL_checktype(L, 5, LUA_TNUMBER);
  5576. Number u = lua_tonumber(L, 5);
  5577. luaL_checktype(L, 6, LUA_TNUMBER);
  5578. Number v = lua_tonumber(L, 6);
  5579. luaL_checktype(L, 7, LUA_TNUMBER);
  5580. Number nx = lua_tonumber(L, 7);
  5581. luaL_checktype(L, 8, LUA_TNUMBER);
  5582. Number ny = lua_tonumber(L, 8);
  5583. luaL_checktype(L, 9, LUA_TNUMBER);
  5584. Number nz = lua_tonumber(L, 9);
  5585. inst->addVertexWithUVAndNormal(x, y, z, u, v, nx, ny, nz);
  5586. return 0;
  5587. }
  5588. static int Polycode_Mesh_addTexCoord(lua_State *L) {
  5589. luaL_checktype(L, 1, LUA_TUSERDATA);
  5590. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5591. luaL_checktype(L, 2, LUA_TNUMBER);
  5592. Number u = lua_tonumber(L, 2);
  5593. luaL_checktype(L, 3, LUA_TNUMBER);
  5594. Number v = lua_tonumber(L, 3);
  5595. inst->addTexCoord(u, v);
  5596. return 0;
  5597. }
  5598. static int Polycode_Mesh_addTexCoord2(lua_State *L) {
  5599. luaL_checktype(L, 1, LUA_TUSERDATA);
  5600. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5601. luaL_checktype(L, 2, LUA_TNUMBER);
  5602. Number u = lua_tonumber(L, 2);
  5603. luaL_checktype(L, 3, LUA_TNUMBER);
  5604. Number v = lua_tonumber(L, 3);
  5605. inst->addTexCoord2(u, v);
  5606. return 0;
  5607. }
  5608. static int Polycode_Mesh_addTangent(lua_State *L) {
  5609. luaL_checktype(L, 1, LUA_TUSERDATA);
  5610. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5611. luaL_checktype(L, 2, LUA_TNUMBER);
  5612. Number x = lua_tonumber(L, 2);
  5613. luaL_checktype(L, 3, LUA_TNUMBER);
  5614. Number y = lua_tonumber(L, 3);
  5615. luaL_checktype(L, 4, LUA_TNUMBER);
  5616. Number z = lua_tonumber(L, 4);
  5617. inst->addTangent(x, y, z);
  5618. return 0;
  5619. }
  5620. static int Polycode_Mesh_addVertexWithUV(lua_State *L) {
  5621. luaL_checktype(L, 1, LUA_TUSERDATA);
  5622. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5623. luaL_checktype(L, 2, LUA_TNUMBER);
  5624. Number x = lua_tonumber(L, 2);
  5625. luaL_checktype(L, 3, LUA_TNUMBER);
  5626. Number y = lua_tonumber(L, 3);
  5627. luaL_checktype(L, 4, LUA_TNUMBER);
  5628. Number z = lua_tonumber(L, 4);
  5629. luaL_checktype(L, 5, LUA_TNUMBER);
  5630. Number u = lua_tonumber(L, 5);
  5631. luaL_checktype(L, 6, LUA_TNUMBER);
  5632. Number v = lua_tonumber(L, 6);
  5633. inst->addVertexWithUV(x, y, z, u, v);
  5634. return 0;
  5635. }
  5636. static int Polycode_Mesh_addVertex(lua_State *L) {
  5637. luaL_checktype(L, 1, LUA_TUSERDATA);
  5638. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5639. luaL_checktype(L, 2, LUA_TNUMBER);
  5640. Number x = lua_tonumber(L, 2);
  5641. luaL_checktype(L, 3, LUA_TNUMBER);
  5642. Number y = lua_tonumber(L, 3);
  5643. luaL_checktype(L, 4, LUA_TNUMBER);
  5644. Number z = lua_tonumber(L, 4);
  5645. inst->addVertex(x, y, z);
  5646. return 0;
  5647. }
  5648. static int Polycode_Mesh_addNormal(lua_State *L) {
  5649. luaL_checktype(L, 1, LUA_TUSERDATA);
  5650. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5651. luaL_checktype(L, 2, LUA_TNUMBER);
  5652. Number nx = lua_tonumber(L, 2);
  5653. luaL_checktype(L, 3, LUA_TNUMBER);
  5654. Number ny = lua_tonumber(L, 3);
  5655. luaL_checktype(L, 4, LUA_TNUMBER);
  5656. Number nz = lua_tonumber(L, 4);
  5657. inst->addNormal(nx, ny, nz);
  5658. return 0;
  5659. }
  5660. static int Polycode_Mesh_addBoneAssignments(lua_State *L) {
  5661. luaL_checktype(L, 1, LUA_TUSERDATA);
  5662. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5663. luaL_checktype(L, 2, LUA_TNUMBER);
  5664. Number b1Weight = lua_tonumber(L, 2);
  5665. luaL_checktype(L, 3, LUA_TNUMBER);
  5666. int b1Index = lua_tointeger(L, 3);
  5667. luaL_checktype(L, 4, LUA_TNUMBER);
  5668. Number b2Weight = lua_tonumber(L, 4);
  5669. luaL_checktype(L, 5, LUA_TNUMBER);
  5670. int b2Index = lua_tointeger(L, 5);
  5671. luaL_checktype(L, 6, LUA_TNUMBER);
  5672. Number b3Weight = lua_tonumber(L, 6);
  5673. luaL_checktype(L, 7, LUA_TNUMBER);
  5674. int b3Index = lua_tointeger(L, 7);
  5675. luaL_checktype(L, 8, LUA_TNUMBER);
  5676. Number b4Weight = lua_tonumber(L, 8);
  5677. luaL_checktype(L, 9, LUA_TNUMBER);
  5678. int b4Index = lua_tointeger(L, 9);
  5679. inst->addBoneAssignments(b1Weight, b1Index, b2Weight, b2Index, b3Weight, b3Index, b4Weight, b4Index);
  5680. return 0;
  5681. }
  5682. static int Polycode_Mesh_addColor(lua_State *L) {
  5683. luaL_checktype(L, 1, LUA_TUSERDATA);
  5684. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5685. luaL_checktype(L, 2, LUA_TNUMBER);
  5686. Number r = lua_tonumber(L, 2);
  5687. luaL_checktype(L, 3, LUA_TNUMBER);
  5688. Number g = lua_tonumber(L, 3);
  5689. luaL_checktype(L, 4, LUA_TNUMBER);
  5690. Number b = lua_tonumber(L, 4);
  5691. luaL_checktype(L, 5, LUA_TNUMBER);
  5692. Number a = lua_tonumber(L, 5);
  5693. inst->addColor(r, g, b, a);
  5694. return 0;
  5695. }
  5696. static int Polycode_Mesh_getVertexPosition(lua_State *L) {
  5697. luaL_checktype(L, 1, LUA_TUSERDATA);
  5698. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5699. luaL_checktype(L, 2, LUA_TNUMBER);
  5700. int vertexOffset = lua_tointeger(L, 2);
  5701. Vector3 *retInst = new Vector3();
  5702. *retInst = inst->getVertexPosition(vertexOffset);
  5703. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5704. luaL_getmetatable(L, "Polycode.Vector3");
  5705. lua_setmetatable(L, -2);
  5706. *userdataPtr = (PolyBase*)retInst;
  5707. return 1;
  5708. }
  5709. static int Polycode_Mesh_getVertexPositionAtIndex(lua_State *L) {
  5710. luaL_checktype(L, 1, LUA_TUSERDATA);
  5711. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5712. luaL_checktype(L, 2, LUA_TNUMBER);
  5713. int index = lua_tointeger(L, 2);
  5714. Vector3 *retInst = new Vector3();
  5715. *retInst = inst->getVertexPositionAtIndex(index);
  5716. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5717. luaL_getmetatable(L, "Polycode.Vector3");
  5718. lua_setmetatable(L, -2);
  5719. *userdataPtr = (PolyBase*)retInst;
  5720. return 1;
  5721. }
  5722. static int Polycode_Mesh_getVertexTexCoord(lua_State *L) {
  5723. luaL_checktype(L, 1, LUA_TUSERDATA);
  5724. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5725. luaL_checktype(L, 2, LUA_TNUMBER);
  5726. int vertexOffset = lua_tointeger(L, 2);
  5727. Vector2 *retInst = new Vector2();
  5728. *retInst = inst->getVertexTexCoord(vertexOffset);
  5729. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5730. luaL_getmetatable(L, "Polycode.Vector2");
  5731. lua_setmetatable(L, -2);
  5732. *userdataPtr = (PolyBase*)retInst;
  5733. return 1;
  5734. }
  5735. static int Polycode_Mesh_getVertexTexCoordAtIndex(lua_State *L) {
  5736. luaL_checktype(L, 1, LUA_TUSERDATA);
  5737. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5738. luaL_checktype(L, 2, LUA_TNUMBER);
  5739. int index = lua_tointeger(L, 2);
  5740. Vector2 *retInst = new Vector2();
  5741. *retInst = inst->getVertexTexCoordAtIndex(index);
  5742. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5743. luaL_getmetatable(L, "Polycode.Vector2");
  5744. lua_setmetatable(L, -2);
  5745. *userdataPtr = (PolyBase*)retInst;
  5746. return 1;
  5747. }
  5748. static int Polycode_Mesh_Copy(lua_State *L) {
  5749. luaL_checktype(L, 1, LUA_TUSERDATA);
  5750. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5751. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  5752. if(ptrRetVal == NULL) {
  5753. lua_pushnil(L);
  5754. } else {
  5755. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5756. *userdataPtr = ptrRetVal;
  5757. }
  5758. return 1;
  5759. }
  5760. static int Polycode_Mesh_getRadius(lua_State *L) {
  5761. luaL_checktype(L, 1, LUA_TUSERDATA);
  5762. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5763. lua_pushnumber(L, inst->getRadius());
  5764. return 1;
  5765. }
  5766. static int Polycode_Mesh_calculateNormals(lua_State *L) {
  5767. luaL_checktype(L, 1, LUA_TUSERDATA);
  5768. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5769. inst->calculateNormals();
  5770. return 0;
  5771. }
  5772. static int Polycode_Mesh_calculateTangents(lua_State *L) {
  5773. luaL_checktype(L, 1, LUA_TUSERDATA);
  5774. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5775. inst->calculateTangents();
  5776. return 0;
  5777. }
  5778. static int Polycode_Mesh_getMeshType(lua_State *L) {
  5779. luaL_checktype(L, 1, LUA_TUSERDATA);
  5780. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5781. lua_pushinteger(L, inst->getMeshType());
  5782. return 1;
  5783. }
  5784. static int Polycode_Mesh_setMeshType(lua_State *L) {
  5785. luaL_checktype(L, 1, LUA_TUSERDATA);
  5786. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5787. luaL_checktype(L, 2, LUA_TNUMBER);
  5788. int newType = lua_tointeger(L, 2);
  5789. inst->setMeshType(newType);
  5790. return 0;
  5791. }
  5792. static int Polycode_Mesh_getIndexGroupSize(lua_State *L) {
  5793. luaL_checktype(L, 1, LUA_TUSERDATA);
  5794. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5795. lua_pushinteger(L, inst->getIndexGroupSize());
  5796. return 1;
  5797. }
  5798. static int Polycode_Mesh_calculateBBox(lua_State *L) {
  5799. luaL_checktype(L, 1, LUA_TUSERDATA);
  5800. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5801. Vector3 *retInst = new Vector3();
  5802. *retInst = inst->calculateBBox();
  5803. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5804. luaL_getmetatable(L, "Polycode.Vector3");
  5805. lua_setmetatable(L, -2);
  5806. *userdataPtr = (PolyBase*)retInst;
  5807. return 1;
  5808. }
  5809. static int Polycode_Mesh_hasVertexBuffer(lua_State *L) {
  5810. luaL_checktype(L, 1, LUA_TUSERDATA);
  5811. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5812. lua_pushboolean(L, inst->hasVertexBuffer());
  5813. return 1;
  5814. }
  5815. static int Polycode_Mesh_addIndexedFace(lua_State *L) {
  5816. luaL_checktype(L, 1, LUA_TUSERDATA);
  5817. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5818. luaL_checktype(L, 2, LUA_TNUMBER);
  5819. int i1 = lua_tointeger(L, 2);
  5820. luaL_checktype(L, 3, LUA_TNUMBER);
  5821. int i2 = lua_tointeger(L, 3);
  5822. inst->addIndexedFace(i1, i2);
  5823. return 0;
  5824. }
  5825. static int Polycode_Mesh_addIndex(lua_State *L) {
  5826. luaL_checktype(L, 1, LUA_TUSERDATA);
  5827. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5828. luaL_checktype(L, 2, LUA_TNUMBER);
  5829. int index = lua_tointeger(L, 2);
  5830. inst->addIndex(index);
  5831. return 0;
  5832. }
  5833. static int Polycode_Mesh_removeVertexRange(lua_State *L) {
  5834. luaL_checktype(L, 1, LUA_TUSERDATA);
  5835. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5836. luaL_checktype(L, 2, LUA_TNUMBER);
  5837. int beginRemoveVertex = lua_tointeger(L, 2);
  5838. luaL_checktype(L, 3, LUA_TNUMBER);
  5839. int vertexRemovalCount = lua_tointeger(L, 3);
  5840. inst->removeVertexRange(beginRemoveVertex, vertexRemovalCount);
  5841. return 0;
  5842. }
  5843. static int Polycode_Mesh_removeFace(lua_State *L) {
  5844. luaL_checktype(L, 1, LUA_TUSERDATA);
  5845. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5846. luaL_checktype(L, 2, LUA_TNUMBER);
  5847. int faceIndex = lua_tointeger(L, 2);
  5848. inst->removeFace(faceIndex);
  5849. return 0;
  5850. }
  5851. static int Polycode_Mesh_removeUnusedVertices(lua_State *L) {
  5852. luaL_checktype(L, 1, LUA_TUSERDATA);
  5853. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5854. lua_pushinteger(L, inst->removeUnusedVertices());
  5855. return 1;
  5856. }
  5857. static int Polycode_Mesh_getIndexCount(lua_State *L) {
  5858. luaL_checktype(L, 1, LUA_TUSERDATA);
  5859. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5860. lua_pushinteger(L, inst->getIndexCount());
  5861. return 1;
  5862. }
  5863. static int Polycode_Mesh_subdivideToRadius(lua_State *L) {
  5864. luaL_checktype(L, 1, LUA_TUSERDATA);
  5865. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5866. luaL_checktype(L, 2, LUA_TNUMBER);
  5867. Number radius = lua_tonumber(L, 2);
  5868. luaL_checktype(L, 3, LUA_TNUMBER);
  5869. int subdivisions = lua_tointeger(L, 3);
  5870. inst->subdivideToRadius(radius, subdivisions);
  5871. return 0;
  5872. }
  5873. static int Polycode_Mesh_calculateFaceTangent(lua_State *L) {
  5874. luaL_checktype(L, 1, LUA_TUSERDATA);
  5875. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5876. luaL_checktype(L, 2, LUA_TUSERDATA);
  5877. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5878. luaL_checktype(L, 3, LUA_TUSERDATA);
  5879. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  5880. luaL_checktype(L, 4, LUA_TUSERDATA);
  5881. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  5882. luaL_checktype(L, 5, LUA_TUSERDATA);
  5883. Vector2 texCoord1 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 5));
  5884. luaL_checktype(L, 6, LUA_TUSERDATA);
  5885. Vector2 texCoord2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 6));
  5886. luaL_checktype(L, 7, LUA_TUSERDATA);
  5887. Vector2 texCoord3 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 7));
  5888. Vector3 *retInst = new Vector3();
  5889. *retInst = inst->calculateFaceTangent(v1, v2, v3, texCoord1, texCoord2, texCoord3);
  5890. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5891. luaL_getmetatable(L, "Polycode.Vector3");
  5892. lua_setmetatable(L, -2);
  5893. *userdataPtr = (PolyBase*)retInst;
  5894. return 1;
  5895. }
  5896. static int Polycode_Mesh_saveAsOBJ(lua_State *L) {
  5897. luaL_checktype(L, 1, LUA_TUSERDATA);
  5898. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5899. luaL_checktype(L, 2, LUA_TSTRING);
  5900. String fileName = String(lua_tostring(L, 2));
  5901. inst->saveAsOBJ(fileName);
  5902. return 0;
  5903. }
  5904. static int Polycode_Mesh_normalizeBoneWeights(lua_State *L) {
  5905. luaL_checktype(L, 1, LUA_TUSERDATA);
  5906. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  5907. inst->normalizeBoneWeights();
  5908. return 0;
  5909. }
  5910. static int Polycode_ObjectEntry(lua_State *L) {
  5911. ObjectEntry *inst = new ObjectEntry();
  5912. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5913. *userdataPtr = (PolyBase*)inst;
  5914. luaL_getmetatable(L, "Polycode.ObjectEntry");
  5915. lua_setmetatable(L, -2);
  5916. return 1;
  5917. }
  5918. static int Polycode_ObjectEntry_readNumber(lua_State *L) {
  5919. luaL_checktype(L, 1, LUA_TUSERDATA);
  5920. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5921. luaL_checktype(L, 2, LUA_TSTRING);
  5922. String key = String(lua_tostring(L, 2));
  5923. luaL_checktype(L, 3, LUA_TUSERDATA);
  5924. Number* out = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  5925. lua_pushboolean(L, inst->readNumber(key, out));
  5926. return 1;
  5927. }
  5928. static int Polycode_ObjectEntry_readString(lua_State *L) {
  5929. luaL_checktype(L, 1, LUA_TUSERDATA);
  5930. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5931. luaL_checktype(L, 2, LUA_TSTRING);
  5932. String key = String(lua_tostring(L, 2));
  5933. luaL_checktype(L, 3, LUA_TUSERDATA);
  5934. String* out = (String*) *((PolyBase**)lua_touserdata(L, 3));
  5935. lua_pushboolean(L, inst->readString(key, out));
  5936. return 1;
  5937. }
  5938. static int Polycode_ObjectEntry_readBool(lua_State *L) {
  5939. luaL_checktype(L, 1, LUA_TUSERDATA);
  5940. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5941. luaL_checktype(L, 2, LUA_TSTRING);
  5942. String key = String(lua_tostring(L, 2));
  5943. luaL_checktype(L, 3, LUA_TUSERDATA);
  5944. bool* out = (bool*) *((PolyBase**)lua_touserdata(L, 3));
  5945. lua_pushboolean(L, inst->readBool(key, out));
  5946. return 1;
  5947. }
  5948. static int Polycode_ObjectEntry_addChild(lua_State *L) {
  5949. luaL_checktype(L, 1, LUA_TUSERDATA);
  5950. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5951. luaL_checktype(L, 2, LUA_TSTRING);
  5952. String name = String(lua_tostring(L, 2));
  5953. PolyBase *ptrRetVal = (PolyBase*)inst->addChild(name);
  5954. if(ptrRetVal == NULL) {
  5955. lua_pushnil(L);
  5956. } else {
  5957. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5958. *userdataPtr = ptrRetVal;
  5959. }
  5960. return 1;
  5961. }
  5962. static int Polycode_ObjectEntry_getTypedName(lua_State *L) {
  5963. luaL_checktype(L, 1, LUA_TUSERDATA);
  5964. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5965. lua_pushstring(L, inst->getTypedName().c_str());
  5966. return 1;
  5967. }
  5968. static int Polycode_ObjectEntry_setTypedName(lua_State *L) {
  5969. luaL_checktype(L, 1, LUA_TUSERDATA);
  5970. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5971. luaL_checktype(L, 2, LUA_TSTRING);
  5972. String str = String(lua_tostring(L, 2));
  5973. inst->setTypedName(str);
  5974. return 0;
  5975. }
  5976. static int Polycode_ObjectEntry_Clear(lua_State *L) {
  5977. luaL_checktype(L, 1, LUA_TUSERDATA);
  5978. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  5979. inst->Clear();
  5980. return 0;
  5981. }
  5982. static int Polycode_BinaryObjectReader(lua_State *L) {
  5983. luaL_checktype(L, 1, LUA_TSTRING);
  5984. String fileName = String(lua_tostring(L, 1));
  5985. luaL_checktype(L, 2, LUA_TUSERDATA);
  5986. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 2));
  5987. BinaryObjectReader *inst = new BinaryObjectReader(fileName, object);
  5988. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5989. *userdataPtr = (PolyBase*)inst;
  5990. luaL_getmetatable(L, "Polycode.BinaryObjectReader");
  5991. lua_setmetatable(L, -2);
  5992. return 1;
  5993. }
  5994. static int Polycode_BinaryObjectWriter(lua_State *L) {
  5995. luaL_checktype(L, 1, LUA_TUSERDATA);
  5996. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 1));
  5997. BinaryObjectWriter *inst = new BinaryObjectWriter(object);
  5998. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5999. *userdataPtr = (PolyBase*)inst;
  6000. luaL_getmetatable(L, "Polycode.BinaryObjectWriter");
  6001. lua_setmetatable(L, -2);
  6002. return 1;
  6003. }
  6004. static int Polycode_BinaryObjectWriter_parseKeysFromObjectEntry(lua_State *L) {
  6005. luaL_checktype(L, 1, LUA_TUSERDATA);
  6006. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  6007. luaL_checktype(L, 2, LUA_TUSERDATA);
  6008. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  6009. inst->parseKeysFromObjectEntry(entry);
  6010. return 0;
  6011. }
  6012. static int Polycode_BinaryObjectWriter_writeEntryToFile(lua_State *L) {
  6013. luaL_checktype(L, 1, LUA_TUSERDATA);
  6014. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  6015. luaL_checktype(L, 2, LUA_TUSERDATA);
  6016. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  6017. inst->writeEntryToFile(entry);
  6018. return 0;
  6019. }
  6020. static int Polycode_BinaryObjectWriter_addKey(lua_State *L) {
  6021. luaL_checktype(L, 1, LUA_TUSERDATA);
  6022. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  6023. luaL_checktype(L, 2, LUA_TSTRING);
  6024. String key = String(lua_tostring(L, 2));
  6025. lua_pushinteger(L, inst->addKey(key));
  6026. return 1;
  6027. }
  6028. static int Polycode_BinaryObjectWriter_getKeyIndex(lua_State *L) {
  6029. luaL_checktype(L, 1, LUA_TUSERDATA);
  6030. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  6031. luaL_checktype(L, 2, LUA_TSTRING);
  6032. String key = String(lua_tostring(L, 2));
  6033. lua_pushinteger(L, inst->getKeyIndex(key));
  6034. return 1;
  6035. }
  6036. static int Polycode_BinaryObjectWriter_writeToFile(lua_State *L) {
  6037. luaL_checktype(L, 1, LUA_TUSERDATA);
  6038. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  6039. luaL_checktype(L, 2, LUA_TSTRING);
  6040. String fileName = String(lua_tostring(L, 2));
  6041. lua_pushboolean(L, inst->writeToFile(fileName));
  6042. return 1;
  6043. }
  6044. static int Polycode_OpenGLGraphicsInterface(lua_State *L) {
  6045. OpenGLGraphicsInterface *inst = new OpenGLGraphicsInterface();
  6046. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6047. *userdataPtr = (PolyBase*)inst;
  6048. luaL_getmetatable(L, "Polycode.OpenGLGraphicsInterface");
  6049. lua_setmetatable(L, -2);
  6050. return 1;
  6051. }
  6052. static int Polycode_OpenGLGraphicsInterface_createTexture(lua_State *L) {
  6053. luaL_checktype(L, 1, LUA_TUSERDATA);
  6054. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6055. luaL_checktype(L, 2, LUA_TUSERDATA);
  6056. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  6057. inst->createTexture(texture);
  6058. return 0;
  6059. }
  6060. static int Polycode_OpenGLGraphicsInterface_destroyTexture(lua_State *L) {
  6061. luaL_checktype(L, 1, LUA_TUSERDATA);
  6062. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6063. luaL_checktype(L, 2, LUA_TUSERDATA);
  6064. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  6065. inst->destroyTexture(texture);
  6066. return 0;
  6067. }
  6068. static int Polycode_OpenGLGraphicsInterface_setViewport(lua_State *L) {
  6069. luaL_checktype(L, 1, LUA_TUSERDATA);
  6070. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6071. luaL_checktype(L, 2, LUA_TNUMBER);
  6072. int x = lua_tointeger(L, 2);
  6073. luaL_checktype(L, 3, LUA_TNUMBER);
  6074. int y = lua_tointeger(L, 3);
  6075. luaL_checktype(L, 4, LUA_TNUMBER);
  6076. int width = lua_tointeger(L, 4);
  6077. luaL_checktype(L, 5, LUA_TNUMBER);
  6078. int height = lua_tointeger(L, 5);
  6079. inst->setViewport(x, y, width, height);
  6080. return 0;
  6081. }
  6082. static int Polycode_OpenGLGraphicsInterface_clearBuffers(lua_State *L) {
  6083. luaL_checktype(L, 1, LUA_TUSERDATA);
  6084. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6085. luaL_checktype(L, 2, LUA_TUSERDATA);
  6086. Color clearColor = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6087. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6088. bool colorBuffer = lua_toboolean(L, 3) != 0;
  6089. luaL_checktype(L, 4, LUA_TBOOLEAN);
  6090. bool depthBuffer = lua_toboolean(L, 4) != 0;
  6091. luaL_checktype(L, 5, LUA_TBOOLEAN);
  6092. bool stencilBuffer = lua_toboolean(L, 5) != 0;
  6093. inst->clearBuffers(clearColor, colorBuffer, depthBuffer, stencilBuffer);
  6094. return 0;
  6095. }
  6096. static int Polycode_OpenGLGraphicsInterface_setParamInShader(lua_State *L) {
  6097. luaL_checktype(L, 1, LUA_TUSERDATA);
  6098. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6099. luaL_checktype(L, 2, LUA_TUSERDATA);
  6100. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6101. luaL_checktype(L, 3, LUA_TUSERDATA);
  6102. ProgramParam* param = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 3));
  6103. luaL_checktype(L, 4, LUA_TUSERDATA);
  6104. LocalShaderParam* localParam = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 4));
  6105. inst->setParamInShader(shader, param, localParam);
  6106. return 0;
  6107. }
  6108. static int Polycode_OpenGLGraphicsInterface_setAttributeInShader(lua_State *L) {
  6109. luaL_checktype(L, 1, LUA_TUSERDATA);
  6110. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6111. luaL_checktype(L, 2, LUA_TUSERDATA);
  6112. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6113. luaL_checktype(L, 3, LUA_TUSERDATA);
  6114. ProgramAttribute* attribute = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 3));
  6115. luaL_checktype(L, 4, LUA_TUSERDATA);
  6116. AttributeBinding* attributeBinding = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 4));
  6117. inst->setAttributeInShader(shader, attribute, attributeBinding);
  6118. return 0;
  6119. }
  6120. static int Polycode_OpenGLGraphicsInterface_disableAttribute(lua_State *L) {
  6121. luaL_checktype(L, 1, LUA_TUSERDATA);
  6122. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6123. luaL_checktype(L, 2, LUA_TUSERDATA);
  6124. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6125. luaL_checktype(L, 3, LUA_TUSERDATA);
  6126. ProgramAttribute attribute = *(ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 3));
  6127. inst->disableAttribute(shader, attribute);
  6128. return 0;
  6129. }
  6130. static int Polycode_OpenGLGraphicsInterface_useShader(lua_State *L) {
  6131. luaL_checktype(L, 1, LUA_TUSERDATA);
  6132. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6133. luaL_checktype(L, 2, LUA_TUSERDATA);
  6134. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6135. inst->useShader(shader);
  6136. return 0;
  6137. }
  6138. static int Polycode_OpenGLGraphicsInterface_createProgram(lua_State *L) {
  6139. luaL_checktype(L, 1, LUA_TUSERDATA);
  6140. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6141. luaL_checktype(L, 2, LUA_TUSERDATA);
  6142. ShaderProgram* program = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  6143. inst->createProgram(program);
  6144. return 0;
  6145. }
  6146. static int Polycode_OpenGLGraphicsInterface_destroyProgram(lua_State *L) {
  6147. luaL_checktype(L, 1, LUA_TUSERDATA);
  6148. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6149. luaL_checktype(L, 2, LUA_TUSERDATA);
  6150. ShaderProgram* program = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  6151. inst->destroyProgram(program);
  6152. return 0;
  6153. }
  6154. static int Polycode_OpenGLGraphicsInterface_createVBOForVertexArray(lua_State *L) {
  6155. luaL_checktype(L, 1, LUA_TUSERDATA);
  6156. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6157. luaL_checktype(L, 2, LUA_TUSERDATA);
  6158. VertexDataArray* array = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  6159. inst->createVBOForVertexArray(array);
  6160. return 0;
  6161. }
  6162. static int Polycode_OpenGLGraphicsInterface_createMesh(lua_State *L) {
  6163. luaL_checktype(L, 1, LUA_TUSERDATA);
  6164. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6165. luaL_checktype(L, 2, LUA_TUSERDATA);
  6166. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  6167. inst->createMesh(mesh);
  6168. return 0;
  6169. }
  6170. static int Polycode_OpenGLGraphicsInterface_destroyMesh(lua_State *L) {
  6171. luaL_checktype(L, 1, LUA_TUSERDATA);
  6172. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6173. luaL_checktype(L, 2, LUA_TUSERDATA);
  6174. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  6175. inst->destroyMesh(mesh);
  6176. return 0;
  6177. }
  6178. static int Polycode_OpenGLGraphicsInterface_createShader(lua_State *L) {
  6179. luaL_checktype(L, 1, LUA_TUSERDATA);
  6180. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6181. luaL_checktype(L, 2, LUA_TUSERDATA);
  6182. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6183. inst->createShader(shader);
  6184. return 0;
  6185. }
  6186. static int Polycode_OpenGLGraphicsInterface_destroyShader(lua_State *L) {
  6187. luaL_checktype(L, 1, LUA_TUSERDATA);
  6188. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6189. luaL_checktype(L, 2, LUA_TUSERDATA);
  6190. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  6191. inst->destroyShader(shader);
  6192. return 0;
  6193. }
  6194. static int Polycode_OpenGLGraphicsInterface_beginDrawCall(lua_State *L) {
  6195. luaL_checktype(L, 1, LUA_TUSERDATA);
  6196. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6197. inst->beginDrawCall();
  6198. return 0;
  6199. }
  6200. static int Polycode_OpenGLGraphicsInterface_endDrawCall(lua_State *L) {
  6201. luaL_checktype(L, 1, LUA_TUSERDATA);
  6202. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6203. inst->endDrawCall();
  6204. return 0;
  6205. }
  6206. static int Polycode_OpenGLGraphicsInterface_setBlendingMode(lua_State *L) {
  6207. luaL_checktype(L, 1, LUA_TUSERDATA);
  6208. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6209. luaL_checktype(L, 2, LUA_TNUMBER);
  6210. int blendingMode = lua_tointeger(L, 2);
  6211. inst->setBlendingMode(blendingMode);
  6212. return 0;
  6213. }
  6214. static int Polycode_OpenGLGraphicsInterface_createRenderBuffer(lua_State *L) {
  6215. luaL_checktype(L, 1, LUA_TUSERDATA);
  6216. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6217. luaL_checktype(L, 2, LUA_TUSERDATA);
  6218. RenderBuffer* renderBuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  6219. inst->createRenderBuffer(renderBuffer);
  6220. return 0;
  6221. }
  6222. static int Polycode_OpenGLGraphicsInterface_destroyRenderBuffer(lua_State *L) {
  6223. luaL_checktype(L, 1, LUA_TUSERDATA);
  6224. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6225. luaL_checktype(L, 2, LUA_TUSERDATA);
  6226. RenderBuffer* renderBuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  6227. inst->destroyRenderBuffer(renderBuffer);
  6228. return 0;
  6229. }
  6230. static int Polycode_OpenGLGraphicsInterface_bindRenderBuffer(lua_State *L) {
  6231. luaL_checktype(L, 1, LUA_TUSERDATA);
  6232. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6233. luaL_checktype(L, 2, LUA_TUSERDATA);
  6234. RenderBuffer* renderBuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  6235. inst->bindRenderBuffer(renderBuffer);
  6236. return 0;
  6237. }
  6238. static int Polycode_OpenGLGraphicsInterface_createVertexBuffer(lua_State *L) {
  6239. luaL_checktype(L, 1, LUA_TUSERDATA);
  6240. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6241. luaL_checktype(L, 2, LUA_TUSERDATA);
  6242. VertexDataArray* dataArray = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  6243. inst->createVertexBuffer(dataArray);
  6244. return 0;
  6245. }
  6246. static int Polycode_OpenGLGraphicsInterface_createIndexBuffer(lua_State *L) {
  6247. luaL_checktype(L, 1, LUA_TUSERDATA);
  6248. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6249. luaL_checktype(L, 2, LUA_TUSERDATA);
  6250. IndexDataArray* dataArray = (IndexDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  6251. inst->createIndexBuffer(dataArray);
  6252. return 0;
  6253. }
  6254. static int Polycode_OpenGLGraphicsInterface_destroyBuffer(lua_State *L) {
  6255. luaL_checktype(L, 1, LUA_TUSERDATA);
  6256. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6257. luaL_checktype(L, 2, LUA_TUSERDATA);
  6258. RenderDataArray* array = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  6259. inst->destroyBuffer(array);
  6260. return 0;
  6261. }
  6262. static int Polycode_OpenGLGraphicsInterface_drawIndices(lua_State *L) {
  6263. luaL_checktype(L, 1, LUA_TUSERDATA);
  6264. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6265. luaL_checktype(L, 2, LUA_TNUMBER);
  6266. int type = lua_tointeger(L, 2);
  6267. luaL_checktype(L, 3, LUA_TUSERDATA);
  6268. IndexDataArray* indexArray = (IndexDataArray*) *((PolyBase**)lua_touserdata(L, 3));
  6269. inst->drawIndices(type, indexArray);
  6270. return 0;
  6271. }
  6272. static int Polycode_OpenGLGraphicsInterface_drawArrays(lua_State *L) {
  6273. luaL_checktype(L, 1, LUA_TUSERDATA);
  6274. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6275. luaL_checktype(L, 2, LUA_TNUMBER);
  6276. int type = lua_tointeger(L, 2);
  6277. luaL_checktype(L, 3, LUA_TNUMBER);
  6278. int vertexCount = lua_tointeger(L, 3);
  6279. inst->drawArrays(type, vertexCount);
  6280. return 0;
  6281. }
  6282. static int Polycode_OpenGLGraphicsInterface_enableDepthTest(lua_State *L) {
  6283. luaL_checktype(L, 1, LUA_TUSERDATA);
  6284. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6285. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6286. bool val = lua_toboolean(L, 2) != 0;
  6287. inst->enableDepthTest(val);
  6288. return 0;
  6289. }
  6290. static int Polycode_OpenGLGraphicsInterface_enableDepthWrite(lua_State *L) {
  6291. luaL_checktype(L, 1, LUA_TUSERDATA);
  6292. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6293. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6294. bool val = lua_toboolean(L, 2) != 0;
  6295. inst->enableDepthWrite(val);
  6296. return 0;
  6297. }
  6298. static int Polycode_OpenGLGraphicsInterface_enableBackfaceCulling(lua_State *L) {
  6299. luaL_checktype(L, 1, LUA_TUSERDATA);
  6300. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6301. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6302. bool val = lua_toboolean(L, 2) != 0;
  6303. inst->enableBackfaceCulling(val);
  6304. return 0;
  6305. }
  6306. static int Polycode_OpenGLGraphicsInterface_setLineSize(lua_State *L) {
  6307. luaL_checktype(L, 1, LUA_TUSERDATA);
  6308. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6309. luaL_checktype(L, 2, LUA_TNUMBER);
  6310. Number lineSize = lua_tonumber(L, 2);
  6311. inst->setLineSize(lineSize);
  6312. return 0;
  6313. }
  6314. static int Polycode_OpenGLGraphicsInterface_setWireframeMode(lua_State *L) {
  6315. luaL_checktype(L, 1, LUA_TUSERDATA);
  6316. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6317. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6318. bool val = lua_toboolean(L, 2) != 0;
  6319. inst->setWireframeMode(val);
  6320. return 0;
  6321. }
  6322. static int Polycode_OpenGLGraphicsInterface_enableScissor(lua_State *L) {
  6323. luaL_checktype(L, 1, LUA_TUSERDATA);
  6324. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6325. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6326. bool val = lua_toboolean(L, 2) != 0;
  6327. inst->enableScissor(val);
  6328. return 0;
  6329. }
  6330. static int Polycode_OpenGLGraphicsInterface_setScissorBox(lua_State *L) {
  6331. luaL_checktype(L, 1, LUA_TUSERDATA);
  6332. OpenGLGraphicsInterface *inst = (OpenGLGraphicsInterface*) *((PolyBase**)lua_touserdata(L, 1));
  6333. luaL_checktype(L, 2, LUA_TUSERDATA);
  6334. Polycode::Rectangle box = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  6335. inst->setScissorBox(box);
  6336. return 0;
  6337. }
  6338. static int Polycode_SceneParticleEmitter(lua_State *L) {
  6339. luaL_checktype(L, 1, LUA_TNUMBER);
  6340. int particleCount = lua_tointeger(L, 1);
  6341. luaL_checktype(L, 2, LUA_TNUMBER);
  6342. Number lifetime = lua_tonumber(L, 2);
  6343. luaL_checktype(L, 3, LUA_TNUMBER);
  6344. Number speed = lua_tonumber(L, 3);
  6345. SceneParticleEmitter *inst = new SceneParticleEmitter(particleCount, lifetime, speed);
  6346. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6347. *userdataPtr = (PolyBase*)inst;
  6348. luaL_getmetatable(L, "Polycode.SceneParticleEmitter");
  6349. lua_setmetatable(L, -2);
  6350. return 1;
  6351. }
  6352. static int Polycode_SceneParticleEmitter_setParticleCount(lua_State *L) {
  6353. luaL_checktype(L, 1, LUA_TUSERDATA);
  6354. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6355. luaL_checktype(L, 2, LUA_TNUMBER);
  6356. int newParticleCount = lua_tointeger(L, 2);
  6357. inst->setParticleCount(newParticleCount);
  6358. return 0;
  6359. }
  6360. static int Polycode_SceneParticleEmitter_getParticleCount(lua_State *L) {
  6361. luaL_checktype(L, 1, LUA_TUSERDATA);
  6362. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6363. lua_pushinteger(L, inst->getParticleCount());
  6364. return 1;
  6365. }
  6366. static int Polycode_SceneParticleEmitter_setParticleLifetime(lua_State *L) {
  6367. luaL_checktype(L, 1, LUA_TUSERDATA);
  6368. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6369. luaL_checktype(L, 2, LUA_TNUMBER);
  6370. Number lifetime = lua_tonumber(L, 2);
  6371. inst->setParticleLifetime(lifetime);
  6372. return 0;
  6373. }
  6374. static int Polycode_SceneParticleEmitter_getParticleLifetime(lua_State *L) {
  6375. luaL_checktype(L, 1, LUA_TUSERDATA);
  6376. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6377. lua_pushnumber(L, inst->getParticleLifetime());
  6378. return 1;
  6379. }
  6380. static int Polycode_SceneParticleEmitter_setDirectionDeviation(lua_State *L) {
  6381. luaL_checktype(L, 1, LUA_TUSERDATA);
  6382. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6383. luaL_checktype(L, 2, LUA_TUSERDATA);
  6384. Vector3 newDeviation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6385. inst->setDirectionDeviation(newDeviation);
  6386. return 0;
  6387. }
  6388. static int Polycode_SceneParticleEmitter_getDirectionDeviation(lua_State *L) {
  6389. luaL_checktype(L, 1, LUA_TUSERDATA);
  6390. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6391. Vector3 *retInst = new Vector3();
  6392. *retInst = inst->getDirectionDeviation();
  6393. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6394. luaL_getmetatable(L, "Polycode.Vector3");
  6395. lua_setmetatable(L, -2);
  6396. *userdataPtr = (PolyBase*)retInst;
  6397. return 1;
  6398. }
  6399. static int Polycode_SceneParticleEmitter_setEmitterSize(lua_State *L) {
  6400. luaL_checktype(L, 1, LUA_TUSERDATA);
  6401. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6402. luaL_checktype(L, 2, LUA_TUSERDATA);
  6403. Vector3 newSize = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6404. inst->setEmitterSize(newSize);
  6405. return 0;
  6406. }
  6407. static int Polycode_SceneParticleEmitter_getEmitterSize(lua_State *L) {
  6408. luaL_checktype(L, 1, LUA_TUSERDATA);
  6409. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6410. Vector3 *retInst = new Vector3();
  6411. *retInst = inst->getEmitterSize();
  6412. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6413. luaL_getmetatable(L, "Polycode.Vector3");
  6414. lua_setmetatable(L, -2);
  6415. *userdataPtr = (PolyBase*)retInst;
  6416. return 1;
  6417. }
  6418. static int Polycode_SceneParticleEmitter_setGravity(lua_State *L) {
  6419. luaL_checktype(L, 1, LUA_TUSERDATA);
  6420. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6421. luaL_checktype(L, 2, LUA_TUSERDATA);
  6422. Vector3 newGravity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6423. inst->setGravity(newGravity);
  6424. return 0;
  6425. }
  6426. static int Polycode_SceneParticleEmitter_getGravity(lua_State *L) {
  6427. luaL_checktype(L, 1, LUA_TUSERDATA);
  6428. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6429. Vector3 *retInst = new Vector3();
  6430. *retInst = inst->getGravity();
  6431. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6432. luaL_getmetatable(L, "Polycode.Vector3");
  6433. lua_setmetatable(L, -2);
  6434. *userdataPtr = (PolyBase*)retInst;
  6435. return 1;
  6436. }
  6437. static int Polycode_SceneParticleEmitter_fixedUpdate(lua_State *L) {
  6438. luaL_checktype(L, 1, LUA_TUSERDATA);
  6439. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6440. inst->fixedUpdate();
  6441. return 0;
  6442. }
  6443. static int Polycode_SceneParticleEmitter_Render(lua_State *L) {
  6444. luaL_checktype(L, 1, LUA_TUSERDATA);
  6445. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6446. luaL_checktype(L, 2, LUA_TUSERDATA);
  6447. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  6448. inst->Render(buffer);
  6449. return 0;
  6450. }
  6451. static int Polycode_SceneParticleEmitter_updateParticles(lua_State *L) {
  6452. luaL_checktype(L, 1, LUA_TUSERDATA);
  6453. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6454. inst->updateParticles();
  6455. return 0;
  6456. }
  6457. static int Polycode_SceneParticleEmitter_rebuildParticles(lua_State *L) {
  6458. luaL_checktype(L, 1, LUA_TUSERDATA);
  6459. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6460. luaL_checktype(L, 2, LUA_TUSERDATA);
  6461. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  6462. inst->rebuildParticles(buffer);
  6463. return 0;
  6464. }
  6465. static int Polycode_SceneParticleEmitter_triggerParticles(lua_State *L) {
  6466. luaL_checktype(L, 1, LUA_TUSERDATA);
  6467. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6468. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6469. bool allAtOnce = lua_toboolean(L, 2) != 0;
  6470. inst->triggerParticles(allAtOnce);
  6471. return 0;
  6472. }
  6473. static int Polycode_SceneParticleEmitter_enableParticleSystem(lua_State *L) {
  6474. luaL_checktype(L, 1, LUA_TUSERDATA);
  6475. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6476. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6477. bool val = lua_toboolean(L, 2) != 0;
  6478. inst->enableParticleSystem(val);
  6479. return 0;
  6480. }
  6481. static int Polycode_SceneParticleEmitter_setUseFloorPlane(lua_State *L) {
  6482. luaL_checktype(L, 1, LUA_TUSERDATA);
  6483. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6484. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6485. bool val = lua_toboolean(L, 2) != 0;
  6486. inst->setUseFloorPlane(val);
  6487. return 0;
  6488. }
  6489. static int Polycode_SceneParticleEmitter_setFloorPlaneOffset(lua_State *L) {
  6490. luaL_checktype(L, 1, LUA_TUSERDATA);
  6491. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6492. luaL_checktype(L, 2, LUA_TNUMBER);
  6493. Number floorPlaneOffset = lua_tonumber(L, 2);
  6494. inst->setFloorPlaneOffset(floorPlaneOffset);
  6495. return 0;
  6496. }
  6497. static int Polycode_SceneParticleEmitter_setFloorDamping(lua_State *L) {
  6498. luaL_checktype(L, 1, LUA_TUSERDATA);
  6499. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6500. luaL_checktype(L, 2, LUA_TNUMBER);
  6501. Number floorDamping = lua_tonumber(L, 2);
  6502. inst->setFloorDamping(floorDamping);
  6503. return 0;
  6504. }
  6505. static int Polycode_SceneParticleEmitter_setParticlesInWorldSpace(lua_State *L) {
  6506. luaL_checktype(L, 1, LUA_TUSERDATA);
  6507. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6508. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6509. bool val = lua_toboolean(L, 2) != 0;
  6510. inst->setParticlesInWorldSpace(val);
  6511. return 0;
  6512. }
  6513. static int Polycode_SceneParticleEmitter_getParticlesInWorldSpace(lua_State *L) {
  6514. luaL_checktype(L, 1, LUA_TUSERDATA);
  6515. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6516. lua_pushboolean(L, inst->getParticlesInWorldSpace());
  6517. return 1;
  6518. }
  6519. static int Polycode_SceneParticleEmitter_setPerlinEnabled(lua_State *L) {
  6520. luaL_checktype(L, 1, LUA_TUSERDATA);
  6521. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6522. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6523. bool val = lua_toboolean(L, 2) != 0;
  6524. inst->setPerlinEnabled(val);
  6525. return 0;
  6526. }
  6527. static int Polycode_SceneParticleEmitter_getPerlinEnabled(lua_State *L) {
  6528. luaL_checktype(L, 1, LUA_TUSERDATA);
  6529. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6530. lua_pushboolean(L, inst->getPerlinEnabled());
  6531. return 1;
  6532. }
  6533. static int Polycode_SceneParticleEmitter_getParticleSpeed(lua_State *L) {
  6534. luaL_checktype(L, 1, LUA_TUSERDATA);
  6535. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6536. lua_pushnumber(L, inst->getParticleSpeed());
  6537. return 1;
  6538. }
  6539. static int Polycode_SceneParticleEmitter_setParticleSpeed(lua_State *L) {
  6540. luaL_checktype(L, 1, LUA_TUSERDATA);
  6541. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6542. luaL_checktype(L, 2, LUA_TNUMBER);
  6543. Number speed = lua_tonumber(L, 2);
  6544. inst->setParticleSpeed(speed);
  6545. return 0;
  6546. }
  6547. static int Polycode_SceneParticleEmitter_setPerlinValue(lua_State *L) {
  6548. luaL_checktype(L, 1, LUA_TUSERDATA);
  6549. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6550. luaL_checktype(L, 2, LUA_TUSERDATA);
  6551. Vector3 perlinValue = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6552. inst->setPerlinValue(perlinValue);
  6553. return 0;
  6554. }
  6555. static int Polycode_SceneParticleEmitter_getPerlinValue(lua_State *L) {
  6556. luaL_checktype(L, 1, LUA_TUSERDATA);
  6557. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6558. Vector3 *retInst = new Vector3();
  6559. *retInst = inst->getPerlinValue();
  6560. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6561. luaL_getmetatable(L, "Polycode.Vector3");
  6562. lua_setmetatable(L, -2);
  6563. *userdataPtr = (PolyBase*)retInst;
  6564. return 1;
  6565. }
  6566. static int Polycode_SceneParticleEmitter_setParticleType(lua_State *L) {
  6567. luaL_checktype(L, 1, LUA_TUSERDATA);
  6568. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6569. luaL_checktype(L, 2, LUA_TNUMBER);
  6570. int particleType = lua_tointeger(L, 2);
  6571. inst->setParticleType(particleType);
  6572. return 0;
  6573. }
  6574. static int Polycode_SceneParticleEmitter_getParticleType(lua_State *L) {
  6575. luaL_checktype(L, 1, LUA_TUSERDATA);
  6576. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6577. lua_pushinteger(L, inst->getParticleType());
  6578. return 1;
  6579. }
  6580. static int Polycode_SceneParticleEmitter_setParticleSize(lua_State *L) {
  6581. luaL_checktype(L, 1, LUA_TUSERDATA);
  6582. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6583. luaL_checktype(L, 2, LUA_TNUMBER);
  6584. Number particleSize = lua_tonumber(L, 2);
  6585. inst->setParticleSize(particleSize);
  6586. return 0;
  6587. }
  6588. static int Polycode_SceneParticleEmitter_getParticleSize(lua_State *L) {
  6589. luaL_checktype(L, 1, LUA_TUSERDATA);
  6590. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6591. lua_pushnumber(L, inst->getParticleSize());
  6592. return 1;
  6593. }
  6594. static int Polycode_SceneParticleEmitter_setParticleRotationSpeed(lua_State *L) {
  6595. luaL_checktype(L, 1, LUA_TUSERDATA);
  6596. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6597. luaL_checktype(L, 2, LUA_TUSERDATA);
  6598. Vector3 rotationSpeed = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6599. inst->setParticleRotationSpeed(rotationSpeed);
  6600. return 0;
  6601. }
  6602. static int Polycode_SceneParticleEmitter_getParticleRotationSpeed(lua_State *L) {
  6603. luaL_checktype(L, 1, LUA_TUSERDATA);
  6604. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6605. Vector3 *retInst = new Vector3();
  6606. *retInst = inst->getParticleRotationSpeed();
  6607. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6608. luaL_getmetatable(L, "Polycode.Vector3");
  6609. lua_setmetatable(L, -2);
  6610. *userdataPtr = (PolyBase*)retInst;
  6611. return 1;
  6612. }
  6613. static int Polycode_SceneParticleEmitter_setParticleDirection(lua_State *L) {
  6614. luaL_checktype(L, 1, LUA_TUSERDATA);
  6615. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6616. luaL_checktype(L, 2, LUA_TUSERDATA);
  6617. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6618. inst->setParticleDirection(direction);
  6619. return 0;
  6620. }
  6621. static int Polycode_SceneParticleEmitter_getParticleDirection(lua_State *L) {
  6622. luaL_checktype(L, 1, LUA_TUSERDATA);
  6623. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6624. Vector3 *retInst = new Vector3();
  6625. *retInst = inst->getParticleDirection();
  6626. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6627. luaL_getmetatable(L, "Polycode.Vector3");
  6628. lua_setmetatable(L, -2);
  6629. *userdataPtr = (PolyBase*)retInst;
  6630. return 1;
  6631. }
  6632. static int Polycode_SceneParticleEmitter_setLoopParticles(lua_State *L) {
  6633. luaL_checktype(L, 1, LUA_TUSERDATA);
  6634. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6635. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6636. bool val = lua_toboolean(L, 2) != 0;
  6637. inst->setLoopParticles(val);
  6638. return 0;
  6639. }
  6640. static int Polycode_SceneParticleEmitter_getLoopParticles(lua_State *L) {
  6641. luaL_checktype(L, 1, LUA_TUSERDATA);
  6642. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6643. lua_pushboolean(L, inst->getLoopParticles());
  6644. return 1;
  6645. }
  6646. static int Polycode_SceneParticleEmitter_addSourceMesh(lua_State *L) {
  6647. luaL_checktype(L, 1, LUA_TUSERDATA);
  6648. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6649. luaL_checktype(L, 2, LUA_TUSERDATA);
  6650. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  6651. inst->addSourceMesh(mesh);
  6652. return 0;
  6653. }
  6654. static int Polycode_SceneParticleEmitter_getNumSourceMeshes(lua_State *L) {
  6655. luaL_checktype(L, 1, LUA_TUSERDATA);
  6656. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6657. lua_pushinteger(L, inst->getNumSourceMeshes());
  6658. return 1;
  6659. }
  6660. static int Polycode_SceneParticleEmitter_getSourcesMeshAtIndex(lua_State *L) {
  6661. luaL_checktype(L, 1, LUA_TUSERDATA);
  6662. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6663. luaL_checktype(L, 2, LUA_TNUMBER);
  6664. int index = lua_tointeger(L, 2);
  6665. PolyBase *ptrRetVal = (PolyBase*)inst->getSourcesMeshAtIndex(index);
  6666. if(ptrRetVal == NULL) {
  6667. lua_pushnil(L);
  6668. } else {
  6669. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6670. *userdataPtr = ptrRetVal;
  6671. }
  6672. return 1;
  6673. }
  6674. static int Polycode_SceneParticleEmitter_removeSourceMeshAtIndex(lua_State *L) {
  6675. luaL_checktype(L, 1, LUA_TUSERDATA);
  6676. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6677. luaL_checktype(L, 2, LUA_TNUMBER);
  6678. int index = lua_tointeger(L, 2);
  6679. inst->removeSourceMeshAtIndex(index);
  6680. return 0;
  6681. }
  6682. static int Polycode_SceneParticleEmitter_positionParticle(lua_State *L) {
  6683. luaL_checktype(L, 1, LUA_TUSERDATA);
  6684. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6685. luaL_checktype(L, 2, LUA_TNUMBER);
  6686. int index = lua_tointeger(L, 2);
  6687. inst->positionParticle(index);
  6688. return 0;
  6689. }
  6690. static int Polycode_SceneParticleEmitter_Clone(lua_State *L) {
  6691. luaL_checktype(L, 1, LUA_TUSERDATA);
  6692. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6693. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6694. bool deepClone = lua_toboolean(L, 2) != 0;
  6695. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6696. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  6697. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  6698. if(ptrRetVal == NULL) {
  6699. lua_pushnil(L);
  6700. } else {
  6701. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6702. *userdataPtr = ptrRetVal;
  6703. }
  6704. return 1;
  6705. }
  6706. static int Polycode_SceneParticleEmitter_applyClone(lua_State *L) {
  6707. luaL_checktype(L, 1, LUA_TUSERDATA);
  6708. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  6709. luaL_checktype(L, 2, LUA_TUSERDATA);
  6710. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  6711. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6712. bool deepClone = lua_toboolean(L, 3) != 0;
  6713. luaL_checktype(L, 4, LUA_TBOOLEAN);
  6714. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  6715. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  6716. return 0;
  6717. }
  6718. static int Polycode_Perlin(lua_State *L) {
  6719. luaL_checktype(L, 1, LUA_TNUMBER);
  6720. int octaves = lua_tointeger(L, 1);
  6721. luaL_checktype(L, 2, LUA_TNUMBER);
  6722. Number freq = lua_tonumber(L, 2);
  6723. luaL_checktype(L, 3, LUA_TNUMBER);
  6724. Number amp = lua_tonumber(L, 3);
  6725. luaL_checktype(L, 4, LUA_TNUMBER);
  6726. int seed = lua_tointeger(L, 4);
  6727. Perlin *inst = new Perlin(octaves, freq, amp, seed);
  6728. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6729. *userdataPtr = (PolyBase*)inst;
  6730. luaL_getmetatable(L, "Polycode.Perlin");
  6731. lua_setmetatable(L, -2);
  6732. return 1;
  6733. }
  6734. static int Polycode_Perlin_Get2DTiledX(lua_State *L) {
  6735. luaL_checktype(L, 1, LUA_TUSERDATA);
  6736. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  6737. luaL_checktype(L, 2, LUA_TNUMBER);
  6738. Number x = lua_tonumber(L, 2);
  6739. luaL_checktype(L, 3, LUA_TNUMBER);
  6740. Number y = lua_tonumber(L, 3);
  6741. luaL_checktype(L, 4, LUA_TNUMBER);
  6742. Number t = lua_tonumber(L, 4);
  6743. lua_pushnumber(L, inst->Get2DTiledX(x, y, t));
  6744. return 1;
  6745. }
  6746. static int Polycode_Perlin_Get(lua_State *L) {
  6747. luaL_checktype(L, 1, LUA_TUSERDATA);
  6748. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  6749. luaL_checktype(L, 2, LUA_TNUMBER);
  6750. Number x = lua_tonumber(L, 2);
  6751. luaL_checktype(L, 3, LUA_TNUMBER);
  6752. Number y = lua_tonumber(L, 3);
  6753. lua_pushnumber(L, inst->Get(x, y));
  6754. return 1;
  6755. }
  6756. static int Polycode_Perlin_Get2D(lua_State *L) {
  6757. luaL_checktype(L, 1, LUA_TUSERDATA);
  6758. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  6759. luaL_checktype(L, 2, LUA_TNUMBER);
  6760. Number x = lua_tonumber(L, 2);
  6761. luaL_checktype(L, 3, LUA_TNUMBER);
  6762. Number y = lua_tonumber(L, 3);
  6763. lua_pushnumber(L, inst->Get2D(x, y));
  6764. return 1;
  6765. }
  6766. static int Polycode_Perlin_Get3D(lua_State *L) {
  6767. luaL_checktype(L, 1, LUA_TUSERDATA);
  6768. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  6769. luaL_checktype(L, 2, LUA_TNUMBER);
  6770. Number x = lua_tonumber(L, 2);
  6771. luaL_checktype(L, 3, LUA_TNUMBER);
  6772. Number y = lua_tonumber(L, 3);
  6773. luaL_checktype(L, 4, LUA_TNUMBER);
  6774. Number z = lua_tonumber(L, 4);
  6775. lua_pushnumber(L, inst->Get3D(x, y, z));
  6776. return 1;
  6777. }
  6778. static int Polycode_PhysFSFile_read(lua_State *L) {
  6779. luaL_checktype(L, 1, LUA_TUSERDATA);
  6780. PhysFSFile *inst = (PhysFSFile*) *((PolyBase**)lua_touserdata(L, 1));
  6781. luaL_checktype(L, 2, LUA_TUSERDATA);
  6782. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  6783. luaL_checktype(L, 3, LUA_TUSERDATA);
  6784. size_t size = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  6785. luaL_checktype(L, 4, LUA_TUSERDATA);
  6786. size_t count = *(size_t*) *((PolyBase**)lua_touserdata(L, 4));
  6787. lua_pushinteger(L, inst->read(ptr, size, count));
  6788. return 1;
  6789. }
  6790. static int Polycode_PhysFSFile_write(lua_State *L) {
  6791. luaL_checktype(L, 1, LUA_TUSERDATA);
  6792. PhysFSFile *inst = (PhysFSFile*) *((PolyBase**)lua_touserdata(L, 1));
  6793. luaL_checktype(L, 2, LUA_TUSERDATA);
  6794. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  6795. luaL_checktype(L, 3, LUA_TUSERDATA);
  6796. size_t size = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  6797. luaL_checktype(L, 4, LUA_TUSERDATA);
  6798. size_t count = *(size_t*) *((PolyBase**)lua_touserdata(L, 4));
  6799. lua_pushinteger(L, inst->write(ptr, size, count));
  6800. return 1;
  6801. }
  6802. static int Polycode_PhysFSFile_seek(lua_State *L) {
  6803. luaL_checktype(L, 1, LUA_TUSERDATA);
  6804. PhysFSFile *inst = (PhysFSFile*) *((PolyBase**)lua_touserdata(L, 1));
  6805. luaL_checktype(L, 2, LUA_TNUMBER);
  6806. int offset = lua_tointeger(L, 2);
  6807. luaL_checktype(L, 3, LUA_TNUMBER);
  6808. int origin = lua_tointeger(L, 3);
  6809. lua_pushinteger(L, inst->seek(offset, origin));
  6810. return 1;
  6811. }
  6812. static int Polycode_PhysFSFile_tell(lua_State *L) {
  6813. luaL_checktype(L, 1, LUA_TUSERDATA);
  6814. PhysFSFile *inst = (PhysFSFile*) *((PolyBase**)lua_touserdata(L, 1));
  6815. lua_pushinteger(L, inst->tell());
  6816. return 1;
  6817. }
  6818. static int Polycode_PhysFSFileProvider(lua_State *L) {
  6819. PhysFSFileProvider *inst = new PhysFSFileProvider();
  6820. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6821. *userdataPtr = (PolyBase*)inst;
  6822. luaL_getmetatable(L, "Polycode.PhysFSFileProvider");
  6823. lua_setmetatable(L, -2);
  6824. return 1;
  6825. }
  6826. static int Polycode_PhysFSFileProvider_openFile(lua_State *L) {
  6827. luaL_checktype(L, 1, LUA_TUSERDATA);
  6828. PhysFSFileProvider *inst = (PhysFSFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  6829. luaL_checktype(L, 2, LUA_TSTRING);
  6830. String fileName = String(lua_tostring(L, 2));
  6831. luaL_checktype(L, 3, LUA_TSTRING);
  6832. String opts = String(lua_tostring(L, 3));
  6833. PolyBase *ptrRetVal = (PolyBase*)inst->openFile(fileName, opts);
  6834. if(ptrRetVal == NULL) {
  6835. lua_pushnil(L);
  6836. } else {
  6837. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6838. *userdataPtr = ptrRetVal;
  6839. }
  6840. return 1;
  6841. }
  6842. static int Polycode_PhysFSFileProvider_closeFile(lua_State *L) {
  6843. luaL_checktype(L, 1, LUA_TUSERDATA);
  6844. PhysFSFileProvider *inst = (PhysFSFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  6845. luaL_checktype(L, 2, LUA_TUSERDATA);
  6846. CoreFile* file = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  6847. inst->closeFile(file);
  6848. return 0;
  6849. }
  6850. static int Polycode_PhysFSFileProvider_parseFolder(lua_State *L) {
  6851. luaL_checktype(L, 1, LUA_TUSERDATA);
  6852. PhysFSFileProvider *inst = (PhysFSFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  6853. luaL_checktype(L, 2, LUA_TSTRING);
  6854. String pathString = String(lua_tostring(L, 2));
  6855. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6856. bool showHidden = lua_toboolean(L, 3) != 0;
  6857. luaL_checktype(L, 4, LUA_TUSERDATA);
  6858. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  6859. lua_pushboolean(L, inst->parseFolder(pathString, showHidden, targetVector));
  6860. return 1;
  6861. }
  6862. static int Polycode_PhysFSFileProvider_addSource(lua_State *L) {
  6863. luaL_checktype(L, 1, LUA_TUSERDATA);
  6864. PhysFSFileProvider *inst = (PhysFSFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  6865. luaL_checktype(L, 2, LUA_TSTRING);
  6866. String source = String(lua_tostring(L, 2));
  6867. inst->addSource(source);
  6868. return 0;
  6869. }
  6870. static int Polycode_PhysFSFileProvider_removeSource(lua_State *L) {
  6871. luaL_checktype(L, 1, LUA_TUSERDATA);
  6872. PhysFSFileProvider *inst = (PhysFSFileProvider*) *((PolyBase**)lua_touserdata(L, 1));
  6873. luaL_checktype(L, 2, LUA_TSTRING);
  6874. String source = String(lua_tostring(L, 2));
  6875. inst->removeSource(source);
  6876. return 0;
  6877. }
  6878. static int Polycode_Quaternion(lua_State *L) {
  6879. luaL_checktype(L, 1, LUA_TNUMBER);
  6880. Number w = lua_tonumber(L, 1);
  6881. luaL_checktype(L, 2, LUA_TNUMBER);
  6882. Number x = lua_tonumber(L, 2);
  6883. luaL_checktype(L, 3, LUA_TNUMBER);
  6884. Number y = lua_tonumber(L, 3);
  6885. luaL_checktype(L, 4, LUA_TNUMBER);
  6886. Number z = lua_tonumber(L, 4);
  6887. Quaternion *inst = new Quaternion(w, x, y, z);
  6888. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6889. *userdataPtr = (PolyBase*)inst;
  6890. luaL_getmetatable(L, "Polycode.Quaternion");
  6891. lua_setmetatable(L, -2);
  6892. return 1;
  6893. }
  6894. static int Polycode_Quaternion_setFromMatrix(lua_State *L) {
  6895. luaL_checktype(L, 1, LUA_TUSERDATA);
  6896. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6897. luaL_checktype(L, 2, LUA_TUSERDATA);
  6898. Matrix4 _mat = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  6899. inst->setFromMatrix(_mat);
  6900. return 0;
  6901. }
  6902. static int Polycode_Quaternion_Slerp(lua_State *L) {
  6903. luaL_checktype(L, 1, LUA_TUSERDATA);
  6904. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6905. luaL_checktype(L, 2, LUA_TNUMBER);
  6906. Number fT = lua_tonumber(L, 2);
  6907. luaL_checktype(L, 3, LUA_TUSERDATA);
  6908. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  6909. luaL_checktype(L, 4, LUA_TUSERDATA);
  6910. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  6911. luaL_checktype(L, 5, LUA_TBOOLEAN);
  6912. bool shortestPath = lua_toboolean(L, 5) != 0;
  6913. Quaternion *retInst = new Quaternion();
  6914. *retInst = inst->Slerp(fT, rkP, rkQ, shortestPath);
  6915. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6916. luaL_getmetatable(L, "Polycode.Quaternion");
  6917. lua_setmetatable(L, -2);
  6918. *userdataPtr = (PolyBase*)retInst;
  6919. return 1;
  6920. }
  6921. static int Polycode_Quaternion_Dot(lua_State *L) {
  6922. luaL_checktype(L, 1, LUA_TUSERDATA);
  6923. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6924. luaL_checktype(L, 2, LUA_TUSERDATA);
  6925. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  6926. lua_pushnumber(L, inst->Dot(rkQ));
  6927. return 1;
  6928. }
  6929. static int Polycode_Quaternion_Log(lua_State *L) {
  6930. luaL_checktype(L, 1, LUA_TUSERDATA);
  6931. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6932. Quaternion *retInst = new Quaternion();
  6933. *retInst = inst->Log();
  6934. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6935. luaL_getmetatable(L, "Polycode.Quaternion");
  6936. lua_setmetatable(L, -2);
  6937. *userdataPtr = (PolyBase*)retInst;
  6938. return 1;
  6939. }
  6940. static int Polycode_Quaternion_Exp(lua_State *L) {
  6941. luaL_checktype(L, 1, LUA_TUSERDATA);
  6942. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6943. Quaternion *retInst = new Quaternion();
  6944. *retInst = inst->Exp();
  6945. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6946. luaL_getmetatable(L, "Polycode.Quaternion");
  6947. lua_setmetatable(L, -2);
  6948. *userdataPtr = (PolyBase*)retInst;
  6949. return 1;
  6950. }
  6951. static int Polycode_Quaternion_Norm(lua_State *L) {
  6952. luaL_checktype(L, 1, LUA_TUSERDATA);
  6953. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6954. lua_pushnumber(L, inst->Norm());
  6955. return 1;
  6956. }
  6957. static int Polycode_Quaternion_Normalize(lua_State *L) {
  6958. luaL_checktype(L, 1, LUA_TUSERDATA);
  6959. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6960. lua_pushnumber(L, inst->Normalize());
  6961. return 1;
  6962. }
  6963. static int Polycode_Quaternion_lookAt(lua_State *L) {
  6964. luaL_checktype(L, 1, LUA_TUSERDATA);
  6965. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6966. luaL_checktype(L, 2, LUA_TUSERDATA);
  6967. Vector3 D = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  6968. luaL_checktype(L, 3, LUA_TUSERDATA);
  6969. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  6970. inst->lookAt(D, upVector);
  6971. return 0;
  6972. }
  6973. static int Polycode_Quaternion_createFromMatrix(lua_State *L) {
  6974. luaL_checktype(L, 1, LUA_TUSERDATA);
  6975. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6976. luaL_checktype(L, 2, LUA_TUSERDATA);
  6977. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  6978. inst->createFromMatrix(matrix);
  6979. return 0;
  6980. }
  6981. static int Polycode_Quaternion_Squad(lua_State *L) {
  6982. luaL_checktype(L, 1, LUA_TUSERDATA);
  6983. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  6984. luaL_checktype(L, 2, LUA_TNUMBER);
  6985. Number fT = lua_tonumber(L, 2);
  6986. luaL_checktype(L, 3, LUA_TUSERDATA);
  6987. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  6988. luaL_checktype(L, 4, LUA_TUSERDATA);
  6989. Quaternion rkA = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  6990. luaL_checktype(L, 5, LUA_TUSERDATA);
  6991. Quaternion rkB = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 5));
  6992. luaL_checktype(L, 6, LUA_TUSERDATA);
  6993. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 6));
  6994. luaL_checktype(L, 7, LUA_TBOOLEAN);
  6995. bool shortestPath = lua_toboolean(L, 7) != 0;
  6996. Quaternion *retInst = new Quaternion();
  6997. *retInst = inst->Squad(fT, rkP, rkA, rkB, rkQ, shortestPath);
  6998. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6999. luaL_getmetatable(L, "Polycode.Quaternion");
  7000. lua_setmetatable(L, -2);
  7001. *userdataPtr = (PolyBase*)retInst;
  7002. return 1;
  7003. }
  7004. static int Polycode_Quaternion_Inverse(lua_State *L) {
  7005. luaL_checktype(L, 1, LUA_TUSERDATA);
  7006. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7007. Quaternion *retInst = new Quaternion();
  7008. *retInst = inst->Inverse();
  7009. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7010. luaL_getmetatable(L, "Polycode.Quaternion");
  7011. lua_setmetatable(L, -2);
  7012. *userdataPtr = (PolyBase*)retInst;
  7013. return 1;
  7014. }
  7015. static int Polycode_Quaternion_set(lua_State *L) {
  7016. luaL_checktype(L, 1, LUA_TUSERDATA);
  7017. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7018. luaL_checktype(L, 2, LUA_TNUMBER);
  7019. Number w = lua_tonumber(L, 2);
  7020. luaL_checktype(L, 3, LUA_TNUMBER);
  7021. Number x = lua_tonumber(L, 3);
  7022. luaL_checktype(L, 4, LUA_TNUMBER);
  7023. Number y = lua_tonumber(L, 4);
  7024. luaL_checktype(L, 5, LUA_TNUMBER);
  7025. Number z = lua_tonumber(L, 5);
  7026. inst->set(w, x, y, z);
  7027. return 0;
  7028. }
  7029. static int Polycode_Quaternion_InvSqrt(lua_State *L) {
  7030. luaL_checktype(L, 1, LUA_TUSERDATA);
  7031. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7032. luaL_checktype(L, 2, LUA_TNUMBER);
  7033. Number x = lua_tonumber(L, 2);
  7034. lua_pushnumber(L, inst->InvSqrt(x));
  7035. return 1;
  7036. }
  7037. static int Polycode_Quaternion_fromAxes(lua_State *L) {
  7038. luaL_checktype(L, 1, LUA_TUSERDATA);
  7039. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7040. luaL_checktype(L, 2, LUA_TNUMBER);
  7041. Number az = lua_tonumber(L, 2);
  7042. luaL_checktype(L, 3, LUA_TNUMBER);
  7043. Number ay = lua_tonumber(L, 3);
  7044. luaL_checktype(L, 4, LUA_TNUMBER);
  7045. Number ax = lua_tonumber(L, 4);
  7046. inst->fromAxes(az, ay, ax);
  7047. return 0;
  7048. }
  7049. static int Polycode_Quaternion_fromAngleAxis(lua_State *L) {
  7050. luaL_checktype(L, 1, LUA_TUSERDATA);
  7051. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7052. luaL_checktype(L, 2, LUA_TNUMBER);
  7053. Number rfAngle = lua_tonumber(L, 2);
  7054. luaL_checktype(L, 3, LUA_TUSERDATA);
  7055. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  7056. inst->fromAngleAxis(rfAngle, rkAxis);
  7057. return 0;
  7058. }
  7059. static int Polycode_Quaternion_toEulerAngles(lua_State *L) {
  7060. luaL_checktype(L, 1, LUA_TUSERDATA);
  7061. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7062. Vector3 *retInst = new Vector3();
  7063. *retInst = inst->toEulerAngles();
  7064. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7065. luaL_getmetatable(L, "Polycode.Vector3");
  7066. lua_setmetatable(L, -2);
  7067. *userdataPtr = (PolyBase*)retInst;
  7068. return 1;
  7069. }
  7070. static int Polycode_Quaternion_toAngleAxis(lua_State *L) {
  7071. luaL_checktype(L, 1, LUA_TUSERDATA);
  7072. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7073. luaL_checktype(L, 2, LUA_TNUMBER);
  7074. Number rfAngle = lua_tonumber(L, 2);
  7075. luaL_checktype(L, 3, LUA_TUSERDATA);
  7076. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  7077. inst->toAngleAxis(rfAngle, rkAxis);
  7078. return 0;
  7079. }
  7080. static int Polycode_Quaternion_createFromAxisAngle(lua_State *L) {
  7081. luaL_checktype(L, 1, LUA_TUSERDATA);
  7082. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7083. luaL_checktype(L, 2, LUA_TNUMBER);
  7084. Number x = lua_tonumber(L, 2);
  7085. luaL_checktype(L, 3, LUA_TNUMBER);
  7086. Number y = lua_tonumber(L, 3);
  7087. luaL_checktype(L, 4, LUA_TNUMBER);
  7088. Number z = lua_tonumber(L, 4);
  7089. luaL_checktype(L, 5, LUA_TNUMBER);
  7090. Number degrees = lua_tonumber(L, 5);
  7091. inst->createFromAxisAngle(x, y, z, degrees);
  7092. return 0;
  7093. }
  7094. static int Polycode_Quaternion_createMatrix(lua_State *L) {
  7095. luaL_checktype(L, 1, LUA_TUSERDATA);
  7096. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7097. Matrix4 *retInst = new Matrix4();
  7098. *retInst = inst->createMatrix();
  7099. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7100. luaL_getmetatable(L, "Polycode.Matrix4");
  7101. lua_setmetatable(L, -2);
  7102. *userdataPtr = (PolyBase*)retInst;
  7103. return 1;
  7104. }
  7105. static int Polycode_Quaternion_applyTo(lua_State *L) {
  7106. luaL_checktype(L, 1, LUA_TUSERDATA);
  7107. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  7108. luaL_checktype(L, 2, LUA_TUSERDATA);
  7109. Vector3 v = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7110. Vector3 *retInst = new Vector3();
  7111. *retInst = inst->applyTo(v);
  7112. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7113. luaL_getmetatable(L, "Polycode.Vector3");
  7114. lua_setmetatable(L, -2);
  7115. *userdataPtr = (PolyBase*)retInst;
  7116. return 1;
  7117. }
  7118. static int Polycode_QuaternionCurve(lua_State *L) {
  7119. luaL_checktype(L, 1, LUA_TUSERDATA);
  7120. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  7121. luaL_checktype(L, 2, LUA_TUSERDATA);
  7122. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  7123. luaL_checktype(L, 3, LUA_TUSERDATA);
  7124. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  7125. luaL_checktype(L, 4, LUA_TUSERDATA);
  7126. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  7127. QuaternionCurve *inst = new QuaternionCurve(wCurve, xCurve, yCurve, zCurve);
  7128. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7129. *userdataPtr = (PolyBase*)inst;
  7130. luaL_getmetatable(L, "Polycode.QuaternionCurve");
  7131. lua_setmetatable(L, -2);
  7132. return 1;
  7133. }
  7134. static int Polycode_QuaternionCurve_interpolate(lua_State *L) {
  7135. luaL_checktype(L, 1, LUA_TUSERDATA);
  7136. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  7137. luaL_checktype(L, 2, LUA_TNUMBER);
  7138. Number t = lua_tonumber(L, 2);
  7139. luaL_checktype(L, 3, LUA_TBOOLEAN);
  7140. bool useShortestPath = lua_toboolean(L, 3) != 0;
  7141. Quaternion *retInst = new Quaternion();
  7142. *retInst = inst->interpolate(t, useShortestPath);
  7143. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7144. luaL_getmetatable(L, "Polycode.Quaternion");
  7145. lua_setmetatable(L, -2);
  7146. *userdataPtr = (PolyBase*)retInst;
  7147. return 1;
  7148. }
  7149. static int Polycode_QuaternionCurve_generatePointsFromCurves(lua_State *L) {
  7150. luaL_checktype(L, 1, LUA_TUSERDATA);
  7151. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  7152. luaL_checktype(L, 2, LUA_TUSERDATA);
  7153. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  7154. luaL_checktype(L, 3, LUA_TUSERDATA);
  7155. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  7156. luaL_checktype(L, 4, LUA_TUSERDATA);
  7157. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  7158. luaL_checktype(L, 5, LUA_TUSERDATA);
  7159. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 5));
  7160. inst->generatePointsFromCurves(wCurve, xCurve, yCurve, zCurve);
  7161. return 0;
  7162. }
  7163. static int Polycode_Ray(lua_State *L) {
  7164. Ray *inst = new Ray();
  7165. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7166. *userdataPtr = (PolyBase*)inst;
  7167. luaL_getmetatable(L, "Polycode.Ray");
  7168. lua_setmetatable(L, -2);
  7169. return 1;
  7170. }
  7171. static int Polycode_Ray_boxIntersect(lua_State *L) {
  7172. luaL_checktype(L, 1, LUA_TUSERDATA);
  7173. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7174. luaL_checktype(L, 2, LUA_TUSERDATA);
  7175. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7176. luaL_checktype(L, 3, LUA_TUSERDATA);
  7177. Matrix4 transformMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  7178. luaL_checktype(L, 4, LUA_TNUMBER);
  7179. Number near = lua_tonumber(L, 4);
  7180. luaL_checktype(L, 5, LUA_TNUMBER);
  7181. Number far = lua_tonumber(L, 5);
  7182. lua_pushnumber(L, inst->boxIntersect(box, transformMatrix, near, far));
  7183. return 1;
  7184. }
  7185. static int Polycode_Ray_planeIntersectPoint(lua_State *L) {
  7186. luaL_checktype(L, 1, LUA_TUSERDATA);
  7187. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7188. luaL_checktype(L, 2, LUA_TUSERDATA);
  7189. Vector3 planeNormal = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7190. luaL_checktype(L, 3, LUA_TNUMBER);
  7191. Number planeDistance = lua_tonumber(L, 3);
  7192. Vector3 *retInst = new Vector3();
  7193. *retInst = inst->planeIntersectPoint(planeNormal, planeDistance);
  7194. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7195. luaL_getmetatable(L, "Polycode.Vector3");
  7196. lua_setmetatable(L, -2);
  7197. *userdataPtr = (PolyBase*)retInst;
  7198. return 1;
  7199. }
  7200. static int Polycode_Ray_tranformByMatrix(lua_State *L) {
  7201. luaL_checktype(L, 1, LUA_TUSERDATA);
  7202. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7203. luaL_checktype(L, 2, LUA_TUSERDATA);
  7204. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  7205. Ray *retInst = new Ray();
  7206. *retInst = inst->tranformByMatrix(matrix);
  7207. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7208. luaL_getmetatable(L, "Polycode.Ray");
  7209. lua_setmetatable(L, -2);
  7210. *userdataPtr = (PolyBase*)retInst;
  7211. return 1;
  7212. }
  7213. static int Polycode_Ray_closestPointOnRay(lua_State *L) {
  7214. luaL_checktype(L, 1, LUA_TUSERDATA);
  7215. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7216. luaL_checktype(L, 2, LUA_TUSERDATA);
  7217. Vector3 point = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7218. Vector3 *retInst = new Vector3();
  7219. *retInst = inst->closestPointOnRay(point);
  7220. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7221. luaL_getmetatable(L, "Polycode.Vector3");
  7222. lua_setmetatable(L, -2);
  7223. *userdataPtr = (PolyBase*)retInst;
  7224. return 1;
  7225. }
  7226. static int Polycode_Ray_closestPointsBetween(lua_State *L) {
  7227. luaL_checktype(L, 1, LUA_TUSERDATA);
  7228. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7229. luaL_checktype(L, 2, LUA_TUSERDATA);
  7230. Ray ray2 = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  7231. luaL_checktype(L, 3, LUA_TUSERDATA);
  7232. Vector3* point1 = (Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  7233. luaL_checktype(L, 4, LUA_TUSERDATA);
  7234. Vector3* point2 = (Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  7235. lua_pushboolean(L, inst->closestPointsBetween(ray2, point1, point2));
  7236. return 1;
  7237. }
  7238. static int Polycode_Ray_polygonIntersect(lua_State *L) {
  7239. luaL_checktype(L, 1, LUA_TUSERDATA);
  7240. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  7241. luaL_checktype(L, 2, LUA_TUSERDATA);
  7242. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7243. luaL_checktype(L, 3, LUA_TUSERDATA);
  7244. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  7245. luaL_checktype(L, 4, LUA_TUSERDATA);
  7246. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  7247. lua_pushboolean(L, inst->polygonIntersect(v1, v2, v3));
  7248. return 1;
  7249. }
  7250. static int Polycode_Rectangle(lua_State *L) {
  7251. Rectangle *inst = new Rectangle();
  7252. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7253. *userdataPtr = (PolyBase*)inst;
  7254. luaL_getmetatable(L, "Polycode.Rectangle");
  7255. lua_setmetatable(L, -2);
  7256. return 1;
  7257. }
  7258. static int Polycode_Rectangle_setRect(lua_State *L) {
  7259. luaL_checktype(L, 1, LUA_TUSERDATA);
  7260. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7261. luaL_checktype(L, 2, LUA_TNUMBER);
  7262. Number x = lua_tonumber(L, 2);
  7263. luaL_checktype(L, 3, LUA_TNUMBER);
  7264. Number y = lua_tonumber(L, 3);
  7265. luaL_checktype(L, 4, LUA_TNUMBER);
  7266. Number w = lua_tonumber(L, 4);
  7267. luaL_checktype(L, 5, LUA_TNUMBER);
  7268. Number h = lua_tonumber(L, 5);
  7269. inst->setRect(x, y, w, h);
  7270. return 0;
  7271. }
  7272. static int Polycode_Rectangle_Clipped(lua_State *L) {
  7273. luaL_checktype(L, 1, LUA_TUSERDATA);
  7274. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7275. luaL_checktype(L, 2, LUA_TUSERDATA);
  7276. Polycode::Rectangle rect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  7277. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  7278. *retInst = inst->Clipped(rect);
  7279. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7280. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  7281. lua_setmetatable(L, -2);
  7282. *userdataPtr = (PolyBase*)retInst;
  7283. return 1;
  7284. }
  7285. static int Polycode_Rectangle_minX(lua_State *L) {
  7286. luaL_checktype(L, 1, LUA_TUSERDATA);
  7287. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7288. lua_pushnumber(L, inst->minX());
  7289. return 1;
  7290. }
  7291. static int Polycode_Rectangle_maxX(lua_State *L) {
  7292. luaL_checktype(L, 1, LUA_TUSERDATA);
  7293. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7294. lua_pushnumber(L, inst->maxX());
  7295. return 1;
  7296. }
  7297. static int Polycode_Rectangle_minY(lua_State *L) {
  7298. luaL_checktype(L, 1, LUA_TUSERDATA);
  7299. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7300. lua_pushnumber(L, inst->minY());
  7301. return 1;
  7302. }
  7303. static int Polycode_Rectangle_maxY(lua_State *L) {
  7304. luaL_checktype(L, 1, LUA_TUSERDATA);
  7305. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  7306. lua_pushnumber(L, inst->maxY());
  7307. return 1;
  7308. }
  7309. static int Polycode_RenderDataArray(lua_State *L) {
  7310. luaL_checktype(L, 1, LUA_TNUMBER);
  7311. int type = lua_tointeger(L, 1);
  7312. RenderDataArray *inst = new RenderDataArray(type);
  7313. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7314. *userdataPtr = (PolyBase*)inst;
  7315. luaL_getmetatable(L, "Polycode.RenderDataArray");
  7316. lua_setmetatable(L, -2);
  7317. return 1;
  7318. }
  7319. static int Polycode_RenderDataArray_getArrayData(lua_State *L) {
  7320. luaL_checktype(L, 1, LUA_TUSERDATA);
  7321. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7322. PolyBase *ptrRetVal = (PolyBase*)inst->getArrayData();
  7323. if(ptrRetVal == NULL) {
  7324. lua_pushnil(L);
  7325. } else {
  7326. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7327. *userdataPtr = ptrRetVal;
  7328. }
  7329. return 1;
  7330. }
  7331. static int Polycode_RenderDataArray_getDataSize(lua_State *L) {
  7332. luaL_checktype(L, 1, LUA_TUSERDATA);
  7333. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7334. lua_pushinteger(L, inst->getDataSize());
  7335. return 1;
  7336. }
  7337. static int Polycode_VertexDataArray(lua_State *L) {
  7338. luaL_checktype(L, 1, LUA_TUSERDATA);
  7339. char countPerVertex = *(char*) *((PolyBase**)lua_touserdata(L, 1));
  7340. luaL_checktype(L, 2, LUA_TNUMBER);
  7341. int type = lua_tointeger(L, 2);
  7342. VertexDataArray *inst = new VertexDataArray(countPerVertex, type);
  7343. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7344. *userdataPtr = (PolyBase*)inst;
  7345. luaL_getmetatable(L, "Polycode.VertexDataArray");
  7346. lua_setmetatable(L, -2);
  7347. return 1;
  7348. }
  7349. static int Polycode_VertexDataArray_getCountPerVertex(lua_State *L) {
  7350. luaL_checktype(L, 1, LUA_TUSERDATA);
  7351. VertexDataArray *inst = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7352. char *retInst = new char();
  7353. *retInst = inst->getCountPerVertex();
  7354. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7355. luaL_getmetatable(L, "Polycode.char");
  7356. lua_setmetatable(L, -2);
  7357. *userdataPtr = (PolyBase*)retInst;
  7358. return 1;
  7359. }
  7360. static int Polycode_VertexDataArray_getArrayData(lua_State *L) {
  7361. luaL_checktype(L, 1, LUA_TUSERDATA);
  7362. VertexDataArray *inst = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7363. PolyBase *ptrRetVal = (PolyBase*)inst->getArrayData();
  7364. if(ptrRetVal == NULL) {
  7365. lua_pushnil(L);
  7366. } else {
  7367. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7368. *userdataPtr = ptrRetVal;
  7369. }
  7370. return 1;
  7371. }
  7372. static int Polycode_VertexDataArray_getDataSize(lua_State *L) {
  7373. luaL_checktype(L, 1, LUA_TUSERDATA);
  7374. VertexDataArray *inst = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7375. lua_pushinteger(L, inst->getDataSize());
  7376. return 1;
  7377. }
  7378. static int Polycode_IndexDataArray(lua_State *L) {
  7379. luaL_checktype(L, 1, LUA_TNUMBER);
  7380. int type = lua_tointeger(L, 1);
  7381. IndexDataArray *inst = new IndexDataArray(type);
  7382. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7383. *userdataPtr = (PolyBase*)inst;
  7384. luaL_getmetatable(L, "Polycode.IndexDataArray");
  7385. lua_setmetatable(L, -2);
  7386. return 1;
  7387. }
  7388. static int Polycode_IndexDataArray_getArrayData(lua_State *L) {
  7389. luaL_checktype(L, 1, LUA_TUSERDATA);
  7390. IndexDataArray *inst = (IndexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7391. PolyBase *ptrRetVal = (PolyBase*)inst->getArrayData();
  7392. if(ptrRetVal == NULL) {
  7393. lua_pushnil(L);
  7394. } else {
  7395. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7396. *userdataPtr = ptrRetVal;
  7397. }
  7398. return 1;
  7399. }
  7400. static int Polycode_IndexDataArray_getDataSize(lua_State *L) {
  7401. luaL_checktype(L, 1, LUA_TUSERDATA);
  7402. IndexDataArray *inst = (IndexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7403. lua_pushinteger(L, inst->getDataSize());
  7404. return 1;
  7405. }
  7406. static int Polycode_RenderThread(lua_State *L) {
  7407. RenderThread *inst = new RenderThread();
  7408. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7409. *userdataPtr = (PolyBase*)inst;
  7410. luaL_getmetatable(L, "Polycode.RenderThread");
  7411. lua_setmetatable(L, -2);
  7412. return 1;
  7413. }
  7414. static int Polycode_RenderThread_setGraphicsInterface(lua_State *L) {
  7415. luaL_checktype(L, 1, LUA_TUSERDATA);
  7416. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7417. luaL_checktype(L, 2, LUA_TUSERDATA);
  7418. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  7419. luaL_checktype(L, 3, LUA_TUSERDATA);
  7420. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  7421. inst->setGraphicsInterface(core, graphicsInterface);
  7422. return 0;
  7423. }
  7424. static int Polycode_RenderThread_runThread(lua_State *L) {
  7425. luaL_checktype(L, 1, LUA_TUSERDATA);
  7426. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7427. inst->runThread();
  7428. return 0;
  7429. }
  7430. static int Polycode_RenderThread_enqueueFrame(lua_State *L) {
  7431. luaL_checktype(L, 1, LUA_TUSERDATA);
  7432. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7433. luaL_checktype(L, 2, LUA_TUSERDATA);
  7434. RenderFrame* frame = (RenderFrame*) *((PolyBase**)lua_touserdata(L, 2));
  7435. inst->enqueueFrame(frame);
  7436. return 0;
  7437. }
  7438. static int Polycode_RenderThread_enqueueJob(lua_State *L) {
  7439. luaL_checktype(L, 1, LUA_TUSERDATA);
  7440. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7441. luaL_checktype(L, 2, LUA_TNUMBER);
  7442. int jobType = lua_tointeger(L, 2);
  7443. luaL_checktype(L, 3, LUA_TUSERDATA);
  7444. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  7445. luaL_checktype(L, 4, LUA_TUSERDATA);
  7446. void* data2 = (void*) *((PolyBase**)lua_touserdata(L, 4));
  7447. inst->enqueueJob(jobType, data, data2);
  7448. return 0;
  7449. }
  7450. static int Polycode_RenderThread_processJob(lua_State *L) {
  7451. luaL_checktype(L, 1, LUA_TUSERDATA);
  7452. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7453. luaL_checktype(L, 2, LUA_TUSERDATA);
  7454. RendererThreadJob job = *(RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 2));
  7455. inst->processJob(job);
  7456. return 0;
  7457. }
  7458. static int Polycode_RenderThread_getShaderBinding(lua_State *L) {
  7459. luaL_checktype(L, 1, LUA_TUSERDATA);
  7460. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7461. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderBinding();
  7462. if(ptrRetVal == NULL) {
  7463. lua_pushnil(L);
  7464. } else {
  7465. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7466. *userdataPtr = ptrRetVal;
  7467. }
  7468. return 1;
  7469. }
  7470. static int Polycode_RenderThread_processDrawBuffer(lua_State *L) {
  7471. luaL_checktype(L, 1, LUA_TUSERDATA);
  7472. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7473. luaL_checktype(L, 2, LUA_TUSERDATA);
  7474. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  7475. inst->processDrawBuffer(buffer);
  7476. return 0;
  7477. }
  7478. static int Polycode_RenderThread_getFrameInfo(lua_State *L) {
  7479. luaL_checktype(L, 1, LUA_TUSERDATA);
  7480. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7481. RenderThreadDebugInfo *retInst = new RenderThreadDebugInfo();
  7482. *retInst = inst->getFrameInfo();
  7483. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7484. luaL_getmetatable(L, "Polycode.RenderThreadDebugInfo");
  7485. lua_setmetatable(L, -2);
  7486. *userdataPtr = (PolyBase*)retInst;
  7487. return 1;
  7488. }
  7489. static int Polycode_RenderThread_clearFrameQueue(lua_State *L) {
  7490. luaL_checktype(L, 1, LUA_TUSERDATA);
  7491. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7492. inst->clearFrameQueue();
  7493. return 0;
  7494. }
  7495. static int Polycode_RenderThread_initGlobals(lua_State *L) {
  7496. luaL_checktype(L, 1, LUA_TUSERDATA);
  7497. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7498. inst->initGlobals();
  7499. return 0;
  7500. }
  7501. static int Polycode_RenderThread_lockRenderMutex(lua_State *L) {
  7502. luaL_checktype(L, 1, LUA_TUSERDATA);
  7503. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7504. inst->lockRenderMutex();
  7505. return 0;
  7506. }
  7507. static int Polycode_RenderThread_unlockRenderMutex(lua_State *L) {
  7508. luaL_checktype(L, 1, LUA_TUSERDATA);
  7509. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  7510. inst->unlockRenderMutex();
  7511. return 0;
  7512. }
  7513. static int Polycode_Renderer_setGraphicsInterface(lua_State *L) {
  7514. luaL_checktype(L, 1, LUA_TUSERDATA);
  7515. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7516. luaL_checktype(L, 2, LUA_TUSERDATA);
  7517. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  7518. luaL_checktype(L, 3, LUA_TUSERDATA);
  7519. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  7520. inst->setGraphicsInterface(core, graphicsInterface);
  7521. return 0;
  7522. }
  7523. static int Polycode_Renderer_getRenderThread(lua_State *L) {
  7524. luaL_checktype(L, 1, LUA_TUSERDATA);
  7525. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7526. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderThread();
  7527. if(ptrRetVal == NULL) {
  7528. lua_pushnil(L);
  7529. } else {
  7530. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7531. *userdataPtr = ptrRetVal;
  7532. }
  7533. return 1;
  7534. }
  7535. static int Polycode_Renderer_createCubemap(lua_State *L) {
  7536. luaL_checktype(L, 1, LUA_TUSERDATA);
  7537. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7538. luaL_checktype(L, 2, LUA_TUSERDATA);
  7539. Texture* t0 = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  7540. luaL_checktype(L, 3, LUA_TUSERDATA);
  7541. Texture* t1 = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  7542. luaL_checktype(L, 4, LUA_TUSERDATA);
  7543. Texture* t2 = (Texture*) *((PolyBase**)lua_touserdata(L, 4));
  7544. luaL_checktype(L, 5, LUA_TUSERDATA);
  7545. Texture* t3 = (Texture*) *((PolyBase**)lua_touserdata(L, 5));
  7546. luaL_checktype(L, 6, LUA_TUSERDATA);
  7547. Texture* t4 = (Texture*) *((PolyBase**)lua_touserdata(L, 6));
  7548. luaL_checktype(L, 7, LUA_TUSERDATA);
  7549. Texture* t5 = (Texture*) *((PolyBase**)lua_touserdata(L, 7));
  7550. PolyBase *ptrRetVal = (PolyBase*)inst->createCubemap(t0, t1, t2, t3, t4, t5);
  7551. if(ptrRetVal == NULL) {
  7552. lua_pushnil(L);
  7553. } else {
  7554. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7555. *userdataPtr = ptrRetVal;
  7556. }
  7557. return 1;
  7558. }
  7559. static int Polycode_Renderer_createTexture(lua_State *L) {
  7560. luaL_checktype(L, 1, LUA_TUSERDATA);
  7561. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7562. luaL_checktype(L, 2, LUA_TNUMBER);
  7563. int width = lua_tointeger(L, 2);
  7564. luaL_checktype(L, 3, LUA_TNUMBER);
  7565. int height = lua_tointeger(L, 3);
  7566. luaL_checktype(L, 4, LUA_TUSERDATA);
  7567. char* textureData = (char*) *((PolyBase**)lua_touserdata(L, 4));
  7568. luaL_checktype(L, 5, LUA_TBOOLEAN);
  7569. bool clamp = lua_toboolean(L, 5) != 0;
  7570. luaL_checktype(L, 6, LUA_TBOOLEAN);
  7571. bool createMipmaps = lua_toboolean(L, 6) != 0;
  7572. luaL_checktype(L, 7, LUA_TNUMBER);
  7573. int type = lua_tointeger(L, 7);
  7574. luaL_checktype(L, 8, LUA_TNUMBER);
  7575. int filteringMode = lua_tointeger(L, 8);
  7576. luaL_checktype(L, 9, LUA_TNUMBER);
  7577. int anisotropy = lua_tointeger(L, 9);
  7578. luaL_checktype(L, 10, LUA_TBOOLEAN);
  7579. bool framebufferTexture = lua_toboolean(L, 10) != 0;
  7580. PolyBase *ptrRetVal = (PolyBase*)inst->createTexture(width, height, textureData, clamp, createMipmaps, type, filteringMode, anisotropy, framebufferTexture);
  7581. if(ptrRetVal == NULL) {
  7582. lua_pushnil(L);
  7583. } else {
  7584. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7585. *userdataPtr = ptrRetVal;
  7586. }
  7587. return 1;
  7588. }
  7589. static int Polycode_Renderer_createRenderBuffer(lua_State *L) {
  7590. luaL_checktype(L, 1, LUA_TUSERDATA);
  7591. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7592. luaL_checktype(L, 2, LUA_TNUMBER);
  7593. int width = lua_tointeger(L, 2);
  7594. luaL_checktype(L, 3, LUA_TNUMBER);
  7595. int height = lua_tointeger(L, 3);
  7596. luaL_checktype(L, 4, LUA_TBOOLEAN);
  7597. bool attachDepthBuffer = lua_toboolean(L, 4) != 0;
  7598. luaL_checktype(L, 5, LUA_TBOOLEAN);
  7599. bool floatingPoint = lua_toboolean(L, 5) != 0;
  7600. PolyBase *ptrRetVal = (PolyBase*)inst->createRenderBuffer(width, height, attachDepthBuffer, floatingPoint);
  7601. if(ptrRetVal == NULL) {
  7602. lua_pushnil(L);
  7603. } else {
  7604. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7605. *userdataPtr = ptrRetVal;
  7606. }
  7607. return 1;
  7608. }
  7609. static int Polycode_Renderer_destroyRenderBuffer(lua_State *L) {
  7610. luaL_checktype(L, 1, LUA_TUSERDATA);
  7611. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7612. luaL_checktype(L, 2, LUA_TUSERDATA);
  7613. RenderBuffer* buffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  7614. inst->destroyRenderBuffer(buffer);
  7615. return 0;
  7616. }
  7617. static int Polycode_Renderer_destroyTexture(lua_State *L) {
  7618. luaL_checktype(L, 1, LUA_TUSERDATA);
  7619. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7620. luaL_checktype(L, 2, LUA_TUSERDATA);
  7621. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  7622. inst->destroyTexture(texture);
  7623. return 0;
  7624. }
  7625. static int Polycode_Renderer_processDrawBuffer(lua_State *L) {
  7626. luaL_checktype(L, 1, LUA_TUSERDATA);
  7627. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7628. luaL_checktype(L, 2, LUA_TUSERDATA);
  7629. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  7630. inst->processDrawBuffer(buffer);
  7631. return 0;
  7632. }
  7633. static int Polycode_Renderer_setBackingResolutionScale(lua_State *L) {
  7634. luaL_checktype(L, 1, LUA_TUSERDATA);
  7635. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7636. luaL_checktype(L, 2, LUA_TNUMBER);
  7637. Number xScale = lua_tonumber(L, 2);
  7638. luaL_checktype(L, 3, LUA_TNUMBER);
  7639. Number yScale = lua_tonumber(L, 3);
  7640. inst->setBackingResolutionScale(xScale, yScale);
  7641. return 0;
  7642. }
  7643. static int Polycode_Renderer_getBackingResolutionScaleX(lua_State *L) {
  7644. luaL_checktype(L, 1, LUA_TUSERDATA);
  7645. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7646. lua_pushnumber(L, inst->getBackingResolutionScaleX());
  7647. return 1;
  7648. }
  7649. static int Polycode_Renderer_getBackingResolutionScaleY(lua_State *L) {
  7650. luaL_checktype(L, 1, LUA_TUSERDATA);
  7651. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7652. lua_pushnumber(L, inst->getBackingResolutionScaleY());
  7653. return 1;
  7654. }
  7655. static int Polycode_Renderer_createProgram(lua_State *L) {
  7656. luaL_checktype(L, 1, LUA_TUSERDATA);
  7657. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7658. luaL_checktype(L, 2, LUA_TSTRING);
  7659. String fileName = String(lua_tostring(L, 2));
  7660. PolyBase *ptrRetVal = (PolyBase*)inst->createProgram(fileName);
  7661. if(ptrRetVal == NULL) {
  7662. lua_pushnil(L);
  7663. } else {
  7664. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7665. *userdataPtr = ptrRetVal;
  7666. }
  7667. return 1;
  7668. }
  7669. static int Polycode_Renderer_createShader(lua_State *L) {
  7670. luaL_checktype(L, 1, LUA_TUSERDATA);
  7671. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7672. luaL_checktype(L, 2, LUA_TUSERDATA);
  7673. ShaderProgram* vertexProgram = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  7674. luaL_checktype(L, 3, LUA_TUSERDATA);
  7675. ShaderProgram* fragmentProgram = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 3));
  7676. PolyBase *ptrRetVal = (PolyBase*)inst->createShader(vertexProgram, fragmentProgram);
  7677. if(ptrRetVal == NULL) {
  7678. lua_pushnil(L);
  7679. } else {
  7680. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7681. *userdataPtr = ptrRetVal;
  7682. }
  7683. return 1;
  7684. }
  7685. static int Polycode_Renderer_createVertexBuffers(lua_State *L) {
  7686. luaL_checktype(L, 1, LUA_TUSERDATA);
  7687. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7688. luaL_checktype(L, 2, LUA_TUSERDATA);
  7689. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  7690. inst->createVertexBuffers(mesh);
  7691. return 0;
  7692. }
  7693. static int Polycode_Renderer_enqueueFrameJob(lua_State *L) {
  7694. luaL_checktype(L, 1, LUA_TUSERDATA);
  7695. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7696. luaL_checktype(L, 2, LUA_TNUMBER);
  7697. int jobType = lua_tointeger(L, 2);
  7698. luaL_checktype(L, 3, LUA_TUSERDATA);
  7699. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  7700. inst->enqueueFrameJob(jobType, data);
  7701. return 0;
  7702. }
  7703. static int Polycode_Renderer_destroyProgram(lua_State *L) {
  7704. luaL_checktype(L, 1, LUA_TUSERDATA);
  7705. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7706. luaL_checktype(L, 2, LUA_TUSERDATA);
  7707. ShaderProgram* program = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  7708. inst->destroyProgram(program);
  7709. return 0;
  7710. }
  7711. static int Polycode_Renderer_destroyShader(lua_State *L) {
  7712. luaL_checktype(L, 1, LUA_TUSERDATA);
  7713. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7714. luaL_checktype(L, 2, LUA_TUSERDATA);
  7715. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  7716. inst->destroyShader(shader);
  7717. return 0;
  7718. }
  7719. static int Polycode_Renderer_destroyBuffer(lua_State *L) {
  7720. luaL_checktype(L, 1, LUA_TUSERDATA);
  7721. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7722. luaL_checktype(L, 2, LUA_TUSERDATA);
  7723. RenderDataArray* array = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  7724. inst->destroyBuffer(array);
  7725. return 0;
  7726. }
  7727. static int Polycode_Renderer_destroyShaderBinding(lua_State *L) {
  7728. luaL_checktype(L, 1, LUA_TUSERDATA);
  7729. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7730. luaL_checktype(L, 2, LUA_TUSERDATA);
  7731. ShaderBinding* binding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 2));
  7732. inst->destroyShaderBinding(binding);
  7733. return 0;
  7734. }
  7735. static int Polycode_Renderer_destroyShaderParam(lua_State *L) {
  7736. luaL_checktype(L, 1, LUA_TUSERDATA);
  7737. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7738. luaL_checktype(L, 2, LUA_TUSERDATA);
  7739. LocalShaderParam* param = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 2));
  7740. inst->destroyShaderParam(param);
  7741. return 0;
  7742. }
  7743. static int Polycode_Renderer_setTextureParam(lua_State *L) {
  7744. luaL_checktype(L, 1, LUA_TUSERDATA);
  7745. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7746. luaL_checktype(L, 2, LUA_TUSERDATA);
  7747. LocalShaderParam* param = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 2));
  7748. luaL_checktype(L, 3, LUA_TUSERDATA);
  7749. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  7750. inst->setTextureParam(param, texture);
  7751. return 0;
  7752. }
  7753. static int Polycode_Renderer_setAnisotropyAmount(lua_State *L) {
  7754. luaL_checktype(L, 1, LUA_TUSERDATA);
  7755. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7756. luaL_checktype(L, 2, LUA_TNUMBER);
  7757. Number amount = lua_tonumber(L, 2);
  7758. inst->setAnisotropyAmount(amount);
  7759. return 0;
  7760. }
  7761. static int Polycode_Renderer_getAnisotropyAmount(lua_State *L) {
  7762. luaL_checktype(L, 1, LUA_TUSERDATA);
  7763. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7764. lua_pushnumber(L, inst->getAnisotropyAmount());
  7765. return 1;
  7766. }
  7767. static int Polycode_Renderer_createMesh(lua_State *L) {
  7768. luaL_checktype(L, 1, LUA_TUSERDATA);
  7769. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7770. luaL_checktype(L, 2, LUA_TSTRING);
  7771. String fileName = String(lua_tostring(L, 2));
  7772. PolyBase *ptrRetVal = (PolyBase*)inst->createMesh(fileName);
  7773. if(ptrRetVal == NULL) {
  7774. lua_pushnil(L);
  7775. } else {
  7776. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7777. *userdataPtr = ptrRetVal;
  7778. }
  7779. return 1;
  7780. }
  7781. static int Polycode_Renderer_destroyMesh(lua_State *L) {
  7782. luaL_checktype(L, 1, LUA_TUSERDATA);
  7783. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7784. luaL_checktype(L, 2, LUA_TUSERDATA);
  7785. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  7786. inst->destroyMesh(mesh);
  7787. return 0;
  7788. }
  7789. static int Polycode_Renderer_unProject(lua_State *L) {
  7790. luaL_checktype(L, 1, LUA_TUSERDATA);
  7791. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7792. luaL_checktype(L, 2, LUA_TUSERDATA);
  7793. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7794. luaL_checktype(L, 3, LUA_TUSERDATA);
  7795. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  7796. luaL_checktype(L, 4, LUA_TUSERDATA);
  7797. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 4));
  7798. luaL_checktype(L, 5, LUA_TUSERDATA);
  7799. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 5));
  7800. Vector3 *retInst = new Vector3();
  7801. *retInst = inst->unProject(position, modelMatrix, projectionMatrix, viewport);
  7802. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7803. luaL_getmetatable(L, "Polycode.Vector3");
  7804. lua_setmetatable(L, -2);
  7805. *userdataPtr = (PolyBase*)retInst;
  7806. return 1;
  7807. }
  7808. static int Polycode_Renderer_project(lua_State *L) {
  7809. luaL_checktype(L, 1, LUA_TUSERDATA);
  7810. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7811. luaL_checktype(L, 2, LUA_TUSERDATA);
  7812. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7813. luaL_checktype(L, 3, LUA_TUSERDATA);
  7814. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  7815. luaL_checktype(L, 4, LUA_TUSERDATA);
  7816. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 4));
  7817. luaL_checktype(L, 5, LUA_TUSERDATA);
  7818. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 5));
  7819. Vector3 *retInst = new Vector3();
  7820. *retInst = inst->project(position, modelMatrix, projectionMatrix, viewport);
  7821. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7822. luaL_getmetatable(L, "Polycode.Vector3");
  7823. lua_setmetatable(L, -2);
  7824. *userdataPtr = (PolyBase*)retInst;
  7825. return 1;
  7826. }
  7827. static int Polycode_Renderer_beginFrame(lua_State *L) {
  7828. luaL_checktype(L, 1, LUA_TUSERDATA);
  7829. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7830. inst->beginFrame();
  7831. return 0;
  7832. }
  7833. static int Polycode_Renderer_endFrame(lua_State *L) {
  7834. luaL_checktype(L, 1, LUA_TUSERDATA);
  7835. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  7836. inst->endFrame();
  7837. return 0;
  7838. }
  7839. static int Polycode_Resource(lua_State *L) {
  7840. luaL_checktype(L, 1, LUA_TNUMBER);
  7841. int type = lua_tointeger(L, 1);
  7842. Resource *inst = new Resource(type);
  7843. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7844. *userdataPtr = (PolyBase*)inst;
  7845. luaL_getmetatable(L, "Polycode.Resource");
  7846. lua_setmetatable(L, -2);
  7847. return 1;
  7848. }
  7849. static int Polycode_Resource_reloadResource(lua_State *L) {
  7850. luaL_checktype(L, 1, LUA_TUSERDATA);
  7851. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7852. inst->reloadResource();
  7853. return 0;
  7854. }
  7855. static int Polycode_Resource_getResourceName(lua_State *L) {
  7856. luaL_checktype(L, 1, LUA_TUSERDATA);
  7857. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7858. lua_pushstring(L, inst->getResourceName().c_str());
  7859. return 1;
  7860. }
  7861. static int Polycode_Resource_getResourceType(lua_State *L) {
  7862. luaL_checktype(L, 1, LUA_TUSERDATA);
  7863. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7864. lua_pushinteger(L, inst->getResourceType());
  7865. return 1;
  7866. }
  7867. static int Polycode_Resource_setResourceName(lua_State *L) {
  7868. luaL_checktype(L, 1, LUA_TUSERDATA);
  7869. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7870. luaL_checktype(L, 2, LUA_TSTRING);
  7871. String newName = String(lua_tostring(L, 2));
  7872. inst->setResourceName(newName);
  7873. return 0;
  7874. }
  7875. static int Polycode_Resource_setResourcePath(lua_State *L) {
  7876. luaL_checktype(L, 1, LUA_TUSERDATA);
  7877. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7878. luaL_checktype(L, 2, LUA_TSTRING);
  7879. String path = String(lua_tostring(L, 2));
  7880. inst->setResourcePath(path);
  7881. return 0;
  7882. }
  7883. static int Polycode_Resource_getResourcePath(lua_State *L) {
  7884. luaL_checktype(L, 1, LUA_TUSERDATA);
  7885. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  7886. lua_pushstring(L, inst->getResourcePath().c_str());
  7887. return 1;
  7888. }
  7889. static int Polycode_ScriptResourceLoader(lua_State *L) {
  7890. ScriptResourceLoader *inst = new ScriptResourceLoader();
  7891. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7892. *userdataPtr = (PolyBase*)inst;
  7893. luaL_getmetatable(L, "Polycode.ScriptResourceLoader");
  7894. lua_setmetatable(L, -2);
  7895. return 1;
  7896. }
  7897. static int Polycode_ScriptResourceLoader_loadResource(lua_State *L) {
  7898. luaL_checktype(L, 1, LUA_TUSERDATA);
  7899. ScriptResourceLoader *inst = (ScriptResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  7900. luaL_checktype(L, 2, LUA_TSTRING);
  7901. String path = String(lua_tostring(L, 2));
  7902. luaL_checktype(L, 3, LUA_TUSERDATA);
  7903. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  7904. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  7905. if(ptrRetVal == NULL) {
  7906. lua_pushnil(L);
  7907. } else {
  7908. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7909. *userdataPtr = ptrRetVal;
  7910. }
  7911. return 1;
  7912. }
  7913. static int Polycode_ResourcePool(lua_State *L) {
  7914. luaL_checktype(L, 1, LUA_TSTRING);
  7915. String name = String(lua_tostring(L, 1));
  7916. luaL_checktype(L, 2, LUA_TUSERDATA);
  7917. ResourcePool* fallbackPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7918. ResourcePool *inst = new ResourcePool(name, fallbackPool);
  7919. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7920. *userdataPtr = (PolyBase*)inst;
  7921. luaL_getmetatable(L, "Polycode.ResourcePool");
  7922. lua_setmetatable(L, -2);
  7923. return 1;
  7924. }
  7925. static int Polycode_ResourcePool_setFallbackPool(lua_State *L) {
  7926. luaL_checktype(L, 1, LUA_TUSERDATA);
  7927. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7928. luaL_checktype(L, 2, LUA_TUSERDATA);
  7929. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7930. inst->setFallbackPool(pool);
  7931. return 0;
  7932. }
  7933. static int Polycode_ResourcePool_addResource(lua_State *L) {
  7934. luaL_checktype(L, 1, LUA_TUSERDATA);
  7935. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7936. luaL_checktype(L, 2, LUA_TUSERDATA);
  7937. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  7938. inst->addResource(resource);
  7939. return 0;
  7940. }
  7941. static int Polycode_ResourcePool_removeResource(lua_State *L) {
  7942. luaL_checktype(L, 1, LUA_TUSERDATA);
  7943. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7944. luaL_checktype(L, 2, LUA_TUSERDATA);
  7945. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  7946. inst->removeResource(resource);
  7947. return 0;
  7948. }
  7949. static int Polycode_ResourcePool_hasResource(lua_State *L) {
  7950. luaL_checktype(L, 1, LUA_TUSERDATA);
  7951. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7952. luaL_checktype(L, 2, LUA_TUSERDATA);
  7953. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  7954. lua_pushboolean(L, inst->hasResource(resource));
  7955. return 1;
  7956. }
  7957. static int Polycode_ResourcePool_loadResourcesFromFolder(lua_State *L) {
  7958. luaL_checktype(L, 1, LUA_TUSERDATA);
  7959. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7960. luaL_checktype(L, 2, LUA_TSTRING);
  7961. String folder = String(lua_tostring(L, 2));
  7962. luaL_checktype(L, 3, LUA_TBOOLEAN);
  7963. bool recursive = lua_toboolean(L, 3) != 0;
  7964. inst->loadResourcesFromFolder(folder, recursive);
  7965. return 0;
  7966. }
  7967. static int Polycode_ResourcePool_loadResource(lua_State *L) {
  7968. luaL_checktype(L, 1, LUA_TUSERDATA);
  7969. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7970. luaL_checktype(L, 2, LUA_TSTRING);
  7971. String path = String(lua_tostring(L, 2));
  7972. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path);
  7973. if(ptrRetVal == NULL) {
  7974. lua_pushnil(L);
  7975. } else {
  7976. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7977. *userdataPtr = ptrRetVal;
  7978. }
  7979. return 1;
  7980. }
  7981. static int Polycode_ResourcePool_loadResourceWithName(lua_State *L) {
  7982. luaL_checktype(L, 1, LUA_TUSERDATA);
  7983. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  7984. luaL_checktype(L, 2, LUA_TSTRING);
  7985. String path = String(lua_tostring(L, 2));
  7986. luaL_checktype(L, 3, LUA_TSTRING);
  7987. String name = String(lua_tostring(L, 3));
  7988. PolyBase *ptrRetVal = (PolyBase*)inst->loadResourceWithName(path, name);
  7989. if(ptrRetVal == NULL) {
  7990. lua_pushnil(L);
  7991. } else {
  7992. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7993. *userdataPtr = ptrRetVal;
  7994. }
  7995. return 1;
  7996. }
  7997. static int Polycode_ResourcePool_getResource(lua_State *L) {
  7998. luaL_checktype(L, 1, LUA_TUSERDATA);
  7999. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8000. luaL_checktype(L, 2, LUA_TNUMBER);
  8001. int resourceType = lua_tointeger(L, 2);
  8002. luaL_checktype(L, 3, LUA_TSTRING);
  8003. String resourceName = String(lua_tostring(L, 3));
  8004. PolyBase *ptrRetVal = (PolyBase*)inst->getResource(resourceType, resourceName);
  8005. if(ptrRetVal == NULL) {
  8006. lua_pushnil(L);
  8007. } else {
  8008. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8009. *userdataPtr = ptrRetVal;
  8010. }
  8011. return 1;
  8012. }
  8013. static int Polycode_ResourcePool_getName(lua_State *L) {
  8014. luaL_checktype(L, 1, LUA_TUSERDATA);
  8015. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8016. lua_pushstring(L, inst->getName().c_str());
  8017. return 1;
  8018. }
  8019. static int Polycode_ResourcePool_setName(lua_State *L) {
  8020. luaL_checktype(L, 1, LUA_TUSERDATA);
  8021. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8022. luaL_checktype(L, 2, LUA_TSTRING);
  8023. String name = String(lua_tostring(L, 2));
  8024. inst->setName(name);
  8025. return 0;
  8026. }
  8027. static int Polycode_ResourcePool_getResourceByPath(lua_State *L) {
  8028. luaL_checktype(L, 1, LUA_TUSERDATA);
  8029. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8030. luaL_checktype(L, 2, LUA_TSTRING);
  8031. String resourcePath = String(lua_tostring(L, 2));
  8032. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceByPath(resourcePath);
  8033. if(ptrRetVal == NULL) {
  8034. lua_pushnil(L);
  8035. } else {
  8036. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8037. *userdataPtr = ptrRetVal;
  8038. }
  8039. return 1;
  8040. }
  8041. static int Polycode_ResourcePool_Update(lua_State *L) {
  8042. luaL_checktype(L, 1, LUA_TUSERDATA);
  8043. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8044. luaL_checktype(L, 2, LUA_TNUMBER);
  8045. int elapsed = lua_tointeger(L, 2);
  8046. inst->Update(elapsed);
  8047. return 0;
  8048. }
  8049. static int Polycode_ResourcePool_getResources(lua_State *L) {
  8050. luaL_checktype(L, 1, LUA_TUSERDATA);
  8051. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8052. luaL_checktype(L, 2, LUA_TNUMBER);
  8053. int resourceType = lua_tointeger(L, 2);
  8054. }
  8055. static int Polycode_ResourcePool_checkForChangedFiles(lua_State *L) {
  8056. luaL_checktype(L, 1, LUA_TUSERDATA);
  8057. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  8058. inst->checkForChangedFiles();
  8059. return 0;
  8060. }
  8061. static int Polycode_ResourceManager(lua_State *L) {
  8062. ResourceManager *inst = new ResourceManager();
  8063. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8064. *userdataPtr = (PolyBase*)inst;
  8065. luaL_getmetatable(L, "Polycode.ResourceManager");
  8066. lua_setmetatable(L, -2);
  8067. return 1;
  8068. }
  8069. static int Polycode_ResourceManager_getGlobalPool(lua_State *L) {
  8070. luaL_checktype(L, 1, LUA_TUSERDATA);
  8071. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8072. PolyBase *ptrRetVal = (PolyBase*)inst->getGlobalPool();
  8073. if(ptrRetVal == NULL) {
  8074. lua_pushnil(L);
  8075. } else {
  8076. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8077. *userdataPtr = ptrRetVal;
  8078. }
  8079. return 1;
  8080. }
  8081. static int Polycode_ResourceManager_getResourcePoolByName(lua_State *L) {
  8082. luaL_checktype(L, 1, LUA_TUSERDATA);
  8083. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8084. luaL_checktype(L, 2, LUA_TSTRING);
  8085. String name = String(lua_tostring(L, 2));
  8086. PolyBase *ptrRetVal = (PolyBase*)inst->getResourcePoolByName(name);
  8087. if(ptrRetVal == NULL) {
  8088. lua_pushnil(L);
  8089. } else {
  8090. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8091. *userdataPtr = ptrRetVal;
  8092. }
  8093. return 1;
  8094. }
  8095. static int Polycode_ResourceManager_addResourceLoader(lua_State *L) {
  8096. luaL_checktype(L, 1, LUA_TUSERDATA);
  8097. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8098. luaL_checktype(L, 2, LUA_TUSERDATA);
  8099. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  8100. inst->addResourceLoader(loader);
  8101. return 0;
  8102. }
  8103. static int Polycode_ResourceManager_getResourceLoaderForExtension(lua_State *L) {
  8104. luaL_checktype(L, 1, LUA_TUSERDATA);
  8105. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8106. luaL_checktype(L, 2, LUA_TSTRING);
  8107. String extension = String(lua_tostring(L, 2));
  8108. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderForExtension(extension);
  8109. if(ptrRetVal == NULL) {
  8110. lua_pushnil(L);
  8111. } else {
  8112. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8113. *userdataPtr = ptrRetVal;
  8114. }
  8115. return 1;
  8116. }
  8117. static int Polycode_ResourceManager_removeResourceLoader(lua_State *L) {
  8118. luaL_checktype(L, 1, LUA_TUSERDATA);
  8119. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8120. luaL_checktype(L, 2, LUA_TUSERDATA);
  8121. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  8122. inst->removeResourceLoader(loader);
  8123. return 0;
  8124. }
  8125. static int Polycode_ResourceManager_getNumResourceLoaders(lua_State *L) {
  8126. luaL_checktype(L, 1, LUA_TUSERDATA);
  8127. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8128. lua_pushinteger(L, inst->getNumResourceLoaders());
  8129. return 1;
  8130. }
  8131. static int Polycode_ResourceManager_getResourceLoaderAtIndex(lua_State *L) {
  8132. luaL_checktype(L, 1, LUA_TUSERDATA);
  8133. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8134. luaL_checktype(L, 2, LUA_TNUMBER);
  8135. int index = lua_tointeger(L, 2);
  8136. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderAtIndex(index);
  8137. if(ptrRetVal == NULL) {
  8138. lua_pushnil(L);
  8139. } else {
  8140. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8141. *userdataPtr = ptrRetVal;
  8142. }
  8143. return 1;
  8144. }
  8145. static int Polycode_ResourceManager_addResourcePool(lua_State *L) {
  8146. luaL_checktype(L, 1, LUA_TUSERDATA);
  8147. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8148. luaL_checktype(L, 2, LUA_TUSERDATA);
  8149. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8150. inst->addResourcePool(pool);
  8151. return 0;
  8152. }
  8153. static int Polycode_ResourceManager_removeResourcePool(lua_State *L) {
  8154. luaL_checktype(L, 1, LUA_TUSERDATA);
  8155. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8156. luaL_checktype(L, 2, LUA_TUSERDATA);
  8157. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8158. inst->removeResourcePool(pool);
  8159. return 0;
  8160. }
  8161. static int Polycode_ResourceManager_getResources(lua_State *L) {
  8162. luaL_checktype(L, 1, LUA_TUSERDATA);
  8163. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8164. luaL_checktype(L, 2, LUA_TNUMBER);
  8165. int resourceType = lua_tointeger(L, 2);
  8166. }
  8167. static int Polycode_ResourceManager_removeResource(lua_State *L) {
  8168. luaL_checktype(L, 1, LUA_TUSERDATA);
  8169. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8170. luaL_checktype(L, 2, LUA_TUSERDATA);
  8171. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  8172. inst->removeResource(resource);
  8173. return 0;
  8174. }
  8175. static int Polycode_ResourceManager_subscribeToResourcePool(lua_State *L) {
  8176. luaL_checktype(L, 1, LUA_TUSERDATA);
  8177. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8178. luaL_checktype(L, 2, LUA_TUSERDATA);
  8179. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8180. inst->subscribeToResourcePool(pool);
  8181. return 0;
  8182. }
  8183. static int Polycode_ResourceManager_unsubscibeFromResourcePool(lua_State *L) {
  8184. luaL_checktype(L, 1, LUA_TUSERDATA);
  8185. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8186. luaL_checktype(L, 2, LUA_TUSERDATA);
  8187. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8188. inst->unsubscibeFromResourcePool(pool);
  8189. return 0;
  8190. }
  8191. static int Polycode_ResourceManager_Update(lua_State *L) {
  8192. luaL_checktype(L, 1, LUA_TUSERDATA);
  8193. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  8194. luaL_checktype(L, 2, LUA_TNUMBER);
  8195. int elapsed = lua_tointeger(L, 2);
  8196. inst->Update(elapsed);
  8197. return 0;
  8198. }
  8199. static int Polycode_FontResourceLoader(lua_State *L) {
  8200. FontResourceLoader *inst = new FontResourceLoader();
  8201. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8202. *userdataPtr = (PolyBase*)inst;
  8203. luaL_getmetatable(L, "Polycode.FontResourceLoader");
  8204. lua_setmetatable(L, -2);
  8205. return 1;
  8206. }
  8207. static int Polycode_FontResourceLoader_loadResource(lua_State *L) {
  8208. luaL_checktype(L, 1, LUA_TUSERDATA);
  8209. FontResourceLoader *inst = (FontResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  8210. luaL_checktype(L, 2, LUA_TSTRING);
  8211. String path = String(lua_tostring(L, 2));
  8212. luaL_checktype(L, 3, LUA_TUSERDATA);
  8213. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  8214. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  8215. if(ptrRetVal == NULL) {
  8216. lua_pushnil(L);
  8217. } else {
  8218. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8219. *userdataPtr = ptrRetVal;
  8220. }
  8221. return 1;
  8222. }
  8223. static int Polycode_ProgramResourceLoader(lua_State *L) {
  8224. ProgramResourceLoader *inst = new ProgramResourceLoader();
  8225. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8226. *userdataPtr = (PolyBase*)inst;
  8227. luaL_getmetatable(L, "Polycode.ProgramResourceLoader");
  8228. lua_setmetatable(L, -2);
  8229. return 1;
  8230. }
  8231. static int Polycode_ProgramResourceLoader_loadResource(lua_State *L) {
  8232. luaL_checktype(L, 1, LUA_TUSERDATA);
  8233. ProgramResourceLoader *inst = (ProgramResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  8234. luaL_checktype(L, 2, LUA_TSTRING);
  8235. String path = String(lua_tostring(L, 2));
  8236. luaL_checktype(L, 3, LUA_TUSERDATA);
  8237. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  8238. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  8239. if(ptrRetVal == NULL) {
  8240. lua_pushnil(L);
  8241. } else {
  8242. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8243. *userdataPtr = ptrRetVal;
  8244. }
  8245. return 1;
  8246. }
  8247. static int Polycode_MeshResourceLoader(lua_State *L) {
  8248. MeshResourceLoader *inst = new MeshResourceLoader();
  8249. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8250. *userdataPtr = (PolyBase*)inst;
  8251. luaL_getmetatable(L, "Polycode.MeshResourceLoader");
  8252. lua_setmetatable(L, -2);
  8253. return 1;
  8254. }
  8255. static int Polycode_MeshResourceLoader_loadResource(lua_State *L) {
  8256. luaL_checktype(L, 1, LUA_TUSERDATA);
  8257. MeshResourceLoader *inst = (MeshResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  8258. luaL_checktype(L, 2, LUA_TSTRING);
  8259. String path = String(lua_tostring(L, 2));
  8260. luaL_checktype(L, 3, LUA_TUSERDATA);
  8261. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  8262. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  8263. if(ptrRetVal == NULL) {
  8264. lua_pushnil(L);
  8265. } else {
  8266. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8267. *userdataPtr = ptrRetVal;
  8268. }
  8269. return 1;
  8270. }
  8271. static int Polycode_MaterialResourceLoader(lua_State *L) {
  8272. MaterialResourceLoader *inst = new MaterialResourceLoader();
  8273. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8274. *userdataPtr = (PolyBase*)inst;
  8275. luaL_getmetatable(L, "Polycode.MaterialResourceLoader");
  8276. lua_setmetatable(L, -2);
  8277. return 1;
  8278. }
  8279. static int Polycode_MaterialResourceLoader_loadResource(lua_State *L) {
  8280. luaL_checktype(L, 1, LUA_TUSERDATA);
  8281. MaterialResourceLoader *inst = (MaterialResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  8282. luaL_checktype(L, 2, LUA_TSTRING);
  8283. String path = String(lua_tostring(L, 2));
  8284. luaL_checktype(L, 3, LUA_TUSERDATA);
  8285. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  8286. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  8287. if(ptrRetVal == NULL) {
  8288. lua_pushnil(L);
  8289. } else {
  8290. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8291. *userdataPtr = ptrRetVal;
  8292. }
  8293. return 1;
  8294. }
  8295. static int Polycode_TextureResourceLoader(lua_State *L) {
  8296. TextureResourceLoader *inst = new TextureResourceLoader();
  8297. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8298. *userdataPtr = (PolyBase*)inst;
  8299. luaL_getmetatable(L, "Polycode.TextureResourceLoader");
  8300. lua_setmetatable(L, -2);
  8301. return 1;
  8302. }
  8303. static int Polycode_TextureResourceLoader_loadResource(lua_State *L) {
  8304. luaL_checktype(L, 1, LUA_TUSERDATA);
  8305. TextureResourceLoader *inst = (TextureResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  8306. luaL_checktype(L, 2, LUA_TSTRING);
  8307. String path = String(lua_tostring(L, 2));
  8308. luaL_checktype(L, 3, LUA_TUSERDATA);
  8309. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  8310. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  8311. if(ptrRetVal == NULL) {
  8312. lua_pushnil(L);
  8313. } else {
  8314. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8315. *userdataPtr = ptrRetVal;
  8316. }
  8317. return 1;
  8318. }
  8319. static int Polycode_Scene(lua_State *L) {
  8320. luaL_checktype(L, 1, LUA_TNUMBER);
  8321. int sceneType = lua_tointeger(L, 1);
  8322. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8323. bool virtualScene = lua_toboolean(L, 2) != 0;
  8324. Scene *inst = new Scene(sceneType, virtualScene);
  8325. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8326. *userdataPtr = (PolyBase*)inst;
  8327. luaL_getmetatable(L, "Polycode.Scene");
  8328. lua_setmetatable(L, -2);
  8329. return 1;
  8330. }
  8331. static int Polycode_Scene_addEntity(lua_State *L) {
  8332. luaL_checktype(L, 1, LUA_TUSERDATA);
  8333. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8334. luaL_checktype(L, 2, LUA_TUSERDATA);
  8335. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  8336. inst->addEntity(entity);
  8337. return 0;
  8338. }
  8339. static int Polycode_Scene_addChild(lua_State *L) {
  8340. luaL_checktype(L, 1, LUA_TUSERDATA);
  8341. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8342. luaL_checktype(L, 2, LUA_TUSERDATA);
  8343. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  8344. inst->addChild(entity);
  8345. return 0;
  8346. }
  8347. static int Polycode_Scene_removeEntity(lua_State *L) {
  8348. luaL_checktype(L, 1, LUA_TUSERDATA);
  8349. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8350. luaL_checktype(L, 2, LUA_TUSERDATA);
  8351. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  8352. inst->removeEntity(entity);
  8353. return 0;
  8354. }
  8355. static int Polycode_Scene_getDefaultCamera(lua_State *L) {
  8356. luaL_checktype(L, 1, LUA_TUSERDATA);
  8357. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8358. PolyBase *ptrRetVal = (PolyBase*)inst->getDefaultCamera();
  8359. if(ptrRetVal == NULL) {
  8360. lua_pushnil(L);
  8361. } else {
  8362. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8363. *userdataPtr = ptrRetVal;
  8364. }
  8365. return 1;
  8366. }
  8367. static int Polycode_Scene_getActiveCamera(lua_State *L) {
  8368. luaL_checktype(L, 1, LUA_TUSERDATA);
  8369. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8370. PolyBase *ptrRetVal = (PolyBase*)inst->getActiveCamera();
  8371. if(ptrRetVal == NULL) {
  8372. lua_pushnil(L);
  8373. } else {
  8374. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8375. *userdataPtr = ptrRetVal;
  8376. }
  8377. return 1;
  8378. }
  8379. static int Polycode_Scene_setActiveCamera(lua_State *L) {
  8380. luaL_checktype(L, 1, LUA_TUSERDATA);
  8381. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8382. luaL_checktype(L, 2, LUA_TUSERDATA);
  8383. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  8384. inst->setActiveCamera(camera);
  8385. return 0;
  8386. }
  8387. static int Polycode_Scene_enableFog(lua_State *L) {
  8388. luaL_checktype(L, 1, LUA_TUSERDATA);
  8389. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8390. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8391. bool enable = lua_toboolean(L, 2) != 0;
  8392. inst->enableFog(enable);
  8393. return 0;
  8394. }
  8395. static int Polycode_Scene_setFogProperties(lua_State *L) {
  8396. luaL_checktype(L, 1, LUA_TUSERDATA);
  8397. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8398. luaL_checktype(L, 2, LUA_TNUMBER);
  8399. int fogMode = lua_tointeger(L, 2);
  8400. luaL_checktype(L, 3, LUA_TUSERDATA);
  8401. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  8402. luaL_checktype(L, 4, LUA_TNUMBER);
  8403. Number density = lua_tonumber(L, 4);
  8404. luaL_checktype(L, 5, LUA_TNUMBER);
  8405. Number startDepth = lua_tonumber(L, 5);
  8406. luaL_checktype(L, 6, LUA_TNUMBER);
  8407. Number endDepth = lua_tonumber(L, 6);
  8408. inst->setFogProperties(fogMode, color, density, startDepth, endDepth);
  8409. return 0;
  8410. }
  8411. static int Polycode_Scene_setSceneType(lua_State *L) {
  8412. luaL_checktype(L, 1, LUA_TUSERDATA);
  8413. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8414. luaL_checktype(L, 2, LUA_TNUMBER);
  8415. int newType = lua_tointeger(L, 2);
  8416. inst->setSceneType(newType);
  8417. return 0;
  8418. }
  8419. static int Polycode_Scene_fixedUpdate(lua_State *L) {
  8420. luaL_checktype(L, 1, LUA_TUSERDATA);
  8421. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8422. inst->fixedUpdate();
  8423. return 0;
  8424. }
  8425. static int Polycode_Scene_Update(lua_State *L) {
  8426. luaL_checktype(L, 1, LUA_TUSERDATA);
  8427. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8428. inst->Update();
  8429. return 0;
  8430. }
  8431. static int Polycode_Scene_setVirtual(lua_State *L) {
  8432. luaL_checktype(L, 1, LUA_TUSERDATA);
  8433. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8434. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8435. bool val = lua_toboolean(L, 2) != 0;
  8436. inst->setVirtual(val);
  8437. return 0;
  8438. }
  8439. static int Polycode_Scene_isVirtual(lua_State *L) {
  8440. luaL_checktype(L, 1, LUA_TUSERDATA);
  8441. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8442. lua_pushboolean(L, inst->isVirtual());
  8443. return 1;
  8444. }
  8445. static int Polycode_Scene_isEnabled(lua_State *L) {
  8446. luaL_checktype(L, 1, LUA_TUSERDATA);
  8447. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8448. lua_pushboolean(L, inst->isEnabled());
  8449. return 1;
  8450. }
  8451. static int Polycode_Scene_setEnabled(lua_State *L) {
  8452. luaL_checktype(L, 1, LUA_TUSERDATA);
  8453. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8454. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8455. bool enabled = lua_toboolean(L, 2) != 0;
  8456. inst->setEnabled(enabled);
  8457. return 0;
  8458. }
  8459. static int Polycode_Scene_Render(lua_State *L) {
  8460. luaL_checktype(L, 1, LUA_TUSERDATA);
  8461. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8462. luaL_checktype(L, 2, LUA_TUSERDATA);
  8463. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  8464. luaL_checktype(L, 3, LUA_TUSERDATA);
  8465. RenderBuffer* targetFramebuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 3));
  8466. luaL_checktype(L, 4, LUA_TUSERDATA);
  8467. Material* overrideMaterial = (Material*) *((PolyBase**)lua_touserdata(L, 4));
  8468. luaL_checktype(L, 5, LUA_TBOOLEAN);
  8469. bool sendLights = lua_toboolean(L, 5) != 0;
  8470. inst->Render(targetCamera, targetFramebuffer, overrideMaterial, sendLights);
  8471. return 0;
  8472. }
  8473. static int Polycode_Scene_setOverrideMaterial(lua_State *L) {
  8474. luaL_checktype(L, 1, LUA_TUSERDATA);
  8475. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8476. luaL_checktype(L, 2, LUA_TUSERDATA);
  8477. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  8478. inst->setOverrideMaterial(material);
  8479. return 0;
  8480. }
  8481. static int Polycode_Scene_projectRayFromCameraAndViewportCoordinate(lua_State *L) {
  8482. luaL_checktype(L, 1, LUA_TUSERDATA);
  8483. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8484. luaL_checktype(L, 2, LUA_TUSERDATA);
  8485. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  8486. luaL_checktype(L, 3, LUA_TUSERDATA);
  8487. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  8488. Ray *retInst = new Ray();
  8489. *retInst = inst->projectRayFromCameraAndViewportCoordinate(camera, coordinate);
  8490. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8491. luaL_getmetatable(L, "Polycode.Ray");
  8492. lua_setmetatable(L, -2);
  8493. *userdataPtr = (PolyBase*)retInst;
  8494. return 1;
  8495. }
  8496. static int Polycode_Scene_addLight(lua_State *L) {
  8497. luaL_checktype(L, 1, LUA_TUSERDATA);
  8498. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8499. luaL_checktype(L, 2, LUA_TUSERDATA);
  8500. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  8501. inst->addLight(light);
  8502. return 0;
  8503. }
  8504. static int Polycode_Scene_removeLight(lua_State *L) {
  8505. luaL_checktype(L, 1, LUA_TUSERDATA);
  8506. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8507. luaL_checktype(L, 2, LUA_TUSERDATA);
  8508. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  8509. inst->removeLight(light);
  8510. return 0;
  8511. }
  8512. static int Polycode_Scene_getNumLights(lua_State *L) {
  8513. luaL_checktype(L, 1, LUA_TUSERDATA);
  8514. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8515. lua_pushinteger(L, inst->getNumLights());
  8516. return 1;
  8517. }
  8518. static int Polycode_Scene_getLight(lua_State *L) {
  8519. luaL_checktype(L, 1, LUA_TUSERDATA);
  8520. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8521. luaL_checktype(L, 2, LUA_TNUMBER);
  8522. int index = lua_tointeger(L, 2);
  8523. PolyBase *ptrRetVal = (PolyBase*)inst->getLight(index);
  8524. if(ptrRetVal == NULL) {
  8525. lua_pushnil(L);
  8526. } else {
  8527. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8528. *userdataPtr = ptrRetVal;
  8529. }
  8530. return 1;
  8531. }
  8532. static int Polycode_Scene_doVisibilityChecking(lua_State *L) {
  8533. luaL_checktype(L, 1, LUA_TUSERDATA);
  8534. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8535. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8536. bool val = lua_toboolean(L, 2) != 0;
  8537. inst->doVisibilityChecking(val);
  8538. return 0;
  8539. }
  8540. static int Polycode_Scene_doesVisibilityChecking(lua_State *L) {
  8541. luaL_checktype(L, 1, LUA_TUSERDATA);
  8542. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8543. lua_pushboolean(L, inst->doesVisibilityChecking());
  8544. return 1;
  8545. }
  8546. static int Polycode_SceneEntityInstanceResourceEntry(lua_State *L) {
  8547. luaL_checktype(L, 1, LUA_TUSERDATA);
  8548. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8549. SceneEntityInstanceResourceEntry *inst = new SceneEntityInstanceResourceEntry(instance);
  8550. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8551. *userdataPtr = (PolyBase*)inst;
  8552. luaL_getmetatable(L, "Polycode.SceneEntityInstanceResourceEntry");
  8553. lua_setmetatable(L, -2);
  8554. return 1;
  8555. }
  8556. static int Polycode_SceneEntityInstanceResourceEntry_getInstance(lua_State *L) {
  8557. luaL_checktype(L, 1, LUA_TUSERDATA);
  8558. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8559. PolyBase *ptrRetVal = (PolyBase*)inst->getInstance();
  8560. if(ptrRetVal == NULL) {
  8561. lua_pushnil(L);
  8562. } else {
  8563. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8564. *userdataPtr = ptrRetVal;
  8565. }
  8566. return 1;
  8567. }
  8568. static int Polycode_SceneEntityInstanceResourceEntry_reloadResource(lua_State *L) {
  8569. luaL_checktype(L, 1, LUA_TUSERDATA);
  8570. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8571. inst->reloadResource();
  8572. return 0;
  8573. }
  8574. static int Polycode_SceneEntityInstance(lua_State *L) {
  8575. luaL_checktype(L, 1, LUA_TUSERDATA);
  8576. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  8577. luaL_checktype(L, 2, LUA_TSTRING);
  8578. String fileName = String(lua_tostring(L, 2));
  8579. SceneEntityInstance *inst = new SceneEntityInstance(parentScene, fileName);
  8580. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8581. *userdataPtr = (PolyBase*)inst;
  8582. luaL_getmetatable(L, "Polycode.SceneEntityInstance");
  8583. lua_setmetatable(L, -2);
  8584. return 1;
  8585. }
  8586. static int Polycode_SceneEntityInstance_BlankSceneEntityInstance(lua_State *L) {
  8587. luaL_checktype(L, 1, LUA_TUSERDATA);
  8588. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8589. luaL_checktype(L, 2, LUA_TUSERDATA);
  8590. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  8591. PolyBase *ptrRetVal = (PolyBase*)inst->BlankSceneEntityInstance(parentScene);
  8592. if(ptrRetVal == NULL) {
  8593. lua_pushnil(L);
  8594. } else {
  8595. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8596. *userdataPtr = ptrRetVal;
  8597. }
  8598. return 1;
  8599. }
  8600. static int Polycode_SceneEntityInstance_Clone(lua_State *L) {
  8601. luaL_checktype(L, 1, LUA_TUSERDATA);
  8602. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8603. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8604. bool deepClone = lua_toboolean(L, 2) != 0;
  8605. luaL_checktype(L, 3, LUA_TBOOLEAN);
  8606. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  8607. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  8608. if(ptrRetVal == NULL) {
  8609. lua_pushnil(L);
  8610. } else {
  8611. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8612. *userdataPtr = ptrRetVal;
  8613. }
  8614. return 1;
  8615. }
  8616. static int Polycode_SceneEntityInstance_applyClone(lua_State *L) {
  8617. luaL_checktype(L, 1, LUA_TUSERDATA);
  8618. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8619. luaL_checktype(L, 2, LUA_TUSERDATA);
  8620. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  8621. luaL_checktype(L, 3, LUA_TBOOLEAN);
  8622. bool deepClone = lua_toboolean(L, 3) != 0;
  8623. luaL_checktype(L, 4, LUA_TBOOLEAN);
  8624. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  8625. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  8626. return 0;
  8627. }
  8628. static int Polycode_SceneEntityInstance_reloadEntityInstance(lua_State *L) {
  8629. luaL_checktype(L, 1, LUA_TUSERDATA);
  8630. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8631. inst->reloadEntityInstance();
  8632. return 0;
  8633. }
  8634. static int Polycode_SceneEntityInstance_clearInstance(lua_State *L) {
  8635. luaL_checktype(L, 1, LUA_TUSERDATA);
  8636. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8637. inst->clearInstance();
  8638. return 0;
  8639. }
  8640. static int Polycode_SceneEntityInstance_parseObjectIntoCurve(lua_State *L) {
  8641. luaL_checktype(L, 1, LUA_TUSERDATA);
  8642. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8643. luaL_checktype(L, 2, LUA_TUSERDATA);
  8644. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8645. luaL_checktype(L, 3, LUA_TUSERDATA);
  8646. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  8647. inst->parseObjectIntoCurve(entry, curve);
  8648. return 0;
  8649. }
  8650. static int Polycode_SceneEntityInstance_loadObjectEntryIntoEntity(lua_State *L) {
  8651. luaL_checktype(L, 1, LUA_TUSERDATA);
  8652. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8653. luaL_checktype(L, 2, LUA_TUSERDATA);
  8654. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8655. luaL_checktype(L, 3, LUA_TUSERDATA);
  8656. Entity* targetEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 3));
  8657. luaL_checktype(L, 4, LUA_TNUMBER);
  8658. int entityFileVersion = lua_tointeger(L, 4);
  8659. PolyBase *ptrRetVal = (PolyBase*)inst->loadObjectEntryIntoEntity(entry, targetEntity, entityFileVersion);
  8660. if(ptrRetVal == NULL) {
  8661. lua_pushnil(L);
  8662. } else {
  8663. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8664. *userdataPtr = ptrRetVal;
  8665. }
  8666. return 1;
  8667. }
  8668. static int Polycode_SceneEntityInstance_loadFromFile(lua_State *L) {
  8669. luaL_checktype(L, 1, LUA_TUSERDATA);
  8670. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8671. luaL_checktype(L, 2, LUA_TSTRING);
  8672. String fileName = String(lua_tostring(L, 2));
  8673. lua_pushboolean(L, inst->loadFromFile(fileName));
  8674. return 1;
  8675. }
  8676. static int Polycode_SceneEntityInstance_applySceneMesh(lua_State *L) {
  8677. luaL_checktype(L, 1, LUA_TUSERDATA);
  8678. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8679. luaL_checktype(L, 2, LUA_TUSERDATA);
  8680. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8681. luaL_checktype(L, 3, LUA_TUSERDATA);
  8682. SceneMesh* sceneMesh = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 3));
  8683. inst->applySceneMesh(entry, sceneMesh);
  8684. return 0;
  8685. }
  8686. static int Polycode_SceneEntityInstance_linkResourcePool(lua_State *L) {
  8687. luaL_checktype(L, 1, LUA_TUSERDATA);
  8688. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8689. luaL_checktype(L, 2, LUA_TUSERDATA);
  8690. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8691. inst->linkResourcePool(pool);
  8692. return 0;
  8693. }
  8694. static int Polycode_SceneEntityInstance_getNumLinkedResourePools(lua_State *L) {
  8695. luaL_checktype(L, 1, LUA_TUSERDATA);
  8696. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8697. lua_pushinteger(L, inst->getNumLinkedResourePools());
  8698. return 1;
  8699. }
  8700. static int Polycode_SceneEntityInstance_getLinkedResourcePoolAtIndex(lua_State *L) {
  8701. luaL_checktype(L, 1, LUA_TUSERDATA);
  8702. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8703. luaL_checktype(L, 2, LUA_TNUMBER);
  8704. int index = lua_tointeger(L, 2);
  8705. PolyBase *ptrRetVal = (PolyBase*)inst->getLinkedResourcePoolAtIndex(index);
  8706. if(ptrRetVal == NULL) {
  8707. lua_pushnil(L);
  8708. } else {
  8709. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8710. *userdataPtr = ptrRetVal;
  8711. }
  8712. return 1;
  8713. }
  8714. static int Polycode_SceneEntityInstance_unlinkResourcePool(lua_State *L) {
  8715. luaL_checktype(L, 1, LUA_TUSERDATA);
  8716. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8717. luaL_checktype(L, 2, LUA_TUSERDATA);
  8718. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  8719. inst->unlinkResourcePool(pool);
  8720. return 0;
  8721. }
  8722. static int Polycode_SceneEntityInstance_getResourceEntry(lua_State *L) {
  8723. luaL_checktype(L, 1, LUA_TUSERDATA);
  8724. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8725. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceEntry();
  8726. if(ptrRetVal == NULL) {
  8727. lua_pushnil(L);
  8728. } else {
  8729. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8730. *userdataPtr = ptrRetVal;
  8731. }
  8732. return 1;
  8733. }
  8734. static int Polycode_SceneEntityInstance_getTopLevelResourcePool(lua_State *L) {
  8735. luaL_checktype(L, 1, LUA_TUSERDATA);
  8736. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8737. PolyBase *ptrRetVal = (PolyBase*)inst->getTopLevelResourcePool();
  8738. if(ptrRetVal == NULL) {
  8739. lua_pushnil(L);
  8740. } else {
  8741. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8742. *userdataPtr = ptrRetVal;
  8743. }
  8744. return 1;
  8745. }
  8746. static int Polycode_SceneEntityInstance_hasLayerID(lua_State *L) {
  8747. luaL_checktype(L, 1, LUA_TUSERDATA);
  8748. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8749. luaL_checktype(L, 2, LUA_TUSERDATA);
  8750. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  8751. lua_pushboolean(L, inst->hasLayerID(layerID));
  8752. return 1;
  8753. }
  8754. static int Polycode_SceneEntityInstance_getNumLayers(lua_State *L) {
  8755. luaL_checktype(L, 1, LUA_TUSERDATA);
  8756. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8757. lua_pushinteger(L, inst->getNumLayers());
  8758. return 1;
  8759. }
  8760. static int Polycode_SceneEntityInstance_getLayerAtIndex(lua_State *L) {
  8761. luaL_checktype(L, 1, LUA_TUSERDATA);
  8762. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8763. luaL_checktype(L, 2, LUA_TNUMBER);
  8764. int index = lua_tointeger(L, 2);
  8765. PolyBase *ptrRetVal = (PolyBase*)inst->getLayerAtIndex(index);
  8766. if(ptrRetVal == NULL) {
  8767. lua_pushnil(L);
  8768. } else {
  8769. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8770. *userdataPtr = ptrRetVal;
  8771. }
  8772. return 1;
  8773. }
  8774. static int Polycode_SceneEntityInstance_removeLayer(lua_State *L) {
  8775. luaL_checktype(L, 1, LUA_TUSERDATA);
  8776. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8777. luaL_checktype(L, 2, LUA_TUSERDATA);
  8778. SceneEntityInstanceLayer* layer = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 2));
  8779. inst->removeLayer(layer);
  8780. return 0;
  8781. }
  8782. static int Polycode_SceneEntityInstance_createNewLayer(lua_State *L) {
  8783. luaL_checktype(L, 1, LUA_TUSERDATA);
  8784. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8785. luaL_checktype(L, 2, LUA_TSTRING);
  8786. String name = String(lua_tostring(L, 2));
  8787. PolyBase *ptrRetVal = (PolyBase*)inst->createNewLayer(name);
  8788. if(ptrRetVal == NULL) {
  8789. lua_pushnil(L);
  8790. } else {
  8791. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8792. *userdataPtr = ptrRetVal;
  8793. }
  8794. return 1;
  8795. }
  8796. static int Polycode_SceneEntityInstance_getFileName(lua_State *L) {
  8797. luaL_checktype(L, 1, LUA_TUSERDATA);
  8798. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8799. lua_pushstring(L, inst->getFileName().c_str());
  8800. return 1;
  8801. }
  8802. static int Polycode_SceneEntityInstanceLayer(lua_State *L) {
  8803. luaL_checktype(L, 1, LUA_TUSERDATA);
  8804. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  8805. luaL_checktype(L, 2, LUA_TSTRING);
  8806. String name = String(lua_tostring(L, 2));
  8807. SceneEntityInstanceLayer *inst = new SceneEntityInstanceLayer(instance, name);
  8808. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8809. *userdataPtr = (PolyBase*)inst;
  8810. luaL_getmetatable(L, "Polycode.SceneEntityInstanceLayer");
  8811. lua_setmetatable(L, -2);
  8812. return 1;
  8813. }
  8814. static int Polycode_SceneEntityInstanceLayer_setLayerVisibility(lua_State *L) {
  8815. luaL_checktype(L, 1, LUA_TUSERDATA);
  8816. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  8817. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8818. bool val = lua_toboolean(L, 2) != 0;
  8819. inst->setLayerVisibility(val);
  8820. return 0;
  8821. }
  8822. static int Polycode_SceneImage(lua_State *L) {
  8823. luaL_checktype(L, 1, LUA_TSTRING);
  8824. String fileName = String(lua_tostring(L, 1));
  8825. SceneImage *inst = new SceneImage(fileName);
  8826. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8827. *userdataPtr = (PolyBase*)inst;
  8828. luaL_getmetatable(L, "Polycode.SceneImage");
  8829. lua_setmetatable(L, -2);
  8830. return 1;
  8831. }
  8832. static int Polycode_SceneImage_SceneImageWithImage(lua_State *L) {
  8833. luaL_checktype(L, 1, LUA_TUSERDATA);
  8834. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8835. luaL_checktype(L, 2, LUA_TUSERDATA);
  8836. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  8837. PolyBase *ptrRetVal = (PolyBase*)inst->SceneImageWithImage(image);
  8838. if(ptrRetVal == NULL) {
  8839. lua_pushnil(L);
  8840. } else {
  8841. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8842. *userdataPtr = ptrRetVal;
  8843. }
  8844. return 1;
  8845. }
  8846. static int Polycode_SceneImage_SceneImageWithTexture(lua_State *L) {
  8847. luaL_checktype(L, 1, LUA_TUSERDATA);
  8848. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8849. luaL_checktype(L, 2, LUA_TUSERDATA);
  8850. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  8851. PolyBase *ptrRetVal = (PolyBase*)inst->SceneImageWithTexture(texture);
  8852. if(ptrRetVal == NULL) {
  8853. lua_pushnil(L);
  8854. } else {
  8855. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8856. *userdataPtr = ptrRetVal;
  8857. }
  8858. return 1;
  8859. }
  8860. static int Polycode_SceneImage_Clone(lua_State *L) {
  8861. luaL_checktype(L, 1, LUA_TUSERDATA);
  8862. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8863. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8864. bool deepClone = lua_toboolean(L, 2) != 0;
  8865. luaL_checktype(L, 3, LUA_TBOOLEAN);
  8866. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  8867. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  8868. if(ptrRetVal == NULL) {
  8869. lua_pushnil(L);
  8870. } else {
  8871. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8872. *userdataPtr = ptrRetVal;
  8873. }
  8874. return 1;
  8875. }
  8876. static int Polycode_SceneImage_applyClone(lua_State *L) {
  8877. luaL_checktype(L, 1, LUA_TUSERDATA);
  8878. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8879. luaL_checktype(L, 2, LUA_TUSERDATA);
  8880. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  8881. luaL_checktype(L, 3, LUA_TBOOLEAN);
  8882. bool deepClone = lua_toboolean(L, 3) != 0;
  8883. luaL_checktype(L, 4, LUA_TBOOLEAN);
  8884. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  8885. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  8886. return 0;
  8887. }
  8888. static int Polycode_SceneImage_setImageCoordinates(lua_State *L) {
  8889. luaL_checktype(L, 1, LUA_TUSERDATA);
  8890. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8891. luaL_checktype(L, 2, LUA_TNUMBER);
  8892. Number x = lua_tonumber(L, 2);
  8893. luaL_checktype(L, 3, LUA_TNUMBER);
  8894. Number y = lua_tonumber(L, 3);
  8895. luaL_checktype(L, 4, LUA_TNUMBER);
  8896. Number width = lua_tonumber(L, 4);
  8897. luaL_checktype(L, 5, LUA_TNUMBER);
  8898. Number height = lua_tonumber(L, 5);
  8899. luaL_checktype(L, 6, LUA_TNUMBER);
  8900. Number realWidth = lua_tonumber(L, 6);
  8901. luaL_checktype(L, 7, LUA_TNUMBER);
  8902. Number realHeight = lua_tonumber(L, 7);
  8903. inst->setImageCoordinates(x, y, width, height, realWidth, realHeight);
  8904. return 0;
  8905. }
  8906. static int Polycode_SceneImage_getImageWidth(lua_State *L) {
  8907. luaL_checktype(L, 1, LUA_TUSERDATA);
  8908. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8909. lua_pushnumber(L, inst->getImageWidth());
  8910. return 1;
  8911. }
  8912. static int Polycode_SceneImage_getImageHeight(lua_State *L) {
  8913. luaL_checktype(L, 1, LUA_TUSERDATA);
  8914. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  8915. lua_pushnumber(L, inst->getImageHeight());
  8916. return 1;
  8917. }
  8918. static int Polycode_SceneLabel(lua_State *L) {
  8919. luaL_checktype(L, 1, LUA_TSTRING);
  8920. String text = String(lua_tostring(L, 1));
  8921. luaL_checktype(L, 2, LUA_TNUMBER);
  8922. int size = lua_tointeger(L, 2);
  8923. luaL_checktype(L, 3, LUA_TSTRING);
  8924. String fontName = String(lua_tostring(L, 3));
  8925. luaL_checktype(L, 4, LUA_TNUMBER);
  8926. int amode = lua_tointeger(L, 4);
  8927. luaL_checktype(L, 5, LUA_TNUMBER);
  8928. Number actualHeight = lua_tonumber(L, 5);
  8929. luaL_checktype(L, 6, LUA_TBOOLEAN);
  8930. bool premultiplyAlpha = lua_toboolean(L, 6) != 0;
  8931. luaL_checktype(L, 7, LUA_TUSERDATA);
  8932. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  8933. luaL_checktype(L, 8, LUA_TUSERDATA);
  8934. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 8));
  8935. SceneLabel *inst = new SceneLabel(text, size, fontName, amode, actualHeight, premultiplyAlpha, backgroundColor, foregroundColor);
  8936. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8937. *userdataPtr = (PolyBase*)inst;
  8938. luaL_getmetatable(L, "Polycode.SceneLabel");
  8939. lua_setmetatable(L, -2);
  8940. return 1;
  8941. }
  8942. static int Polycode_SceneLabel_getText(lua_State *L) {
  8943. luaL_checktype(L, 1, LUA_TUSERDATA);
  8944. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8945. lua_pushstring(L, inst->getText().c_str());
  8946. return 1;
  8947. }
  8948. static int Polycode_SceneLabel_setLabelActualHeight(lua_State *L) {
  8949. luaL_checktype(L, 1, LUA_TUSERDATA);
  8950. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8951. luaL_checktype(L, 2, LUA_TNUMBER);
  8952. Number actualHeight = lua_tonumber(L, 2);
  8953. inst->setLabelActualHeight(actualHeight);
  8954. return 0;
  8955. }
  8956. static int Polycode_SceneLabel_getLabelActualHeight(lua_State *L) {
  8957. luaL_checktype(L, 1, LUA_TUSERDATA);
  8958. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8959. lua_pushnumber(L, inst->getLabelActualHeight());
  8960. return 1;
  8961. }
  8962. static int Polycode_SceneLabel_Render(lua_State *L) {
  8963. luaL_checktype(L, 1, LUA_TUSERDATA);
  8964. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8965. luaL_checktype(L, 2, LUA_TUSERDATA);
  8966. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  8967. inst->Render(buffer);
  8968. return 0;
  8969. }
  8970. static int Polycode_SceneLabel_getTextWidthForString(lua_State *L) {
  8971. luaL_checktype(L, 1, LUA_TUSERDATA);
  8972. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8973. luaL_checktype(L, 2, LUA_TSTRING);
  8974. String text = String(lua_tostring(L, 2));
  8975. lua_pushinteger(L, inst->getTextWidthForString(text));
  8976. return 1;
  8977. }
  8978. static int Polycode_SceneLabel_setText(lua_State *L) {
  8979. luaL_checktype(L, 1, LUA_TUSERDATA);
  8980. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8981. luaL_checktype(L, 2, LUA_TSTRING);
  8982. String newText = String(lua_tostring(L, 2));
  8983. inst->setText(newText);
  8984. return 0;
  8985. }
  8986. static int Polycode_SceneLabel_Clone(lua_State *L) {
  8987. luaL_checktype(L, 1, LUA_TUSERDATA);
  8988. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  8989. luaL_checktype(L, 2, LUA_TBOOLEAN);
  8990. bool deepClone = lua_toboolean(L, 2) != 0;
  8991. luaL_checktype(L, 3, LUA_TBOOLEAN);
  8992. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  8993. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  8994. if(ptrRetVal == NULL) {
  8995. lua_pushnil(L);
  8996. } else {
  8997. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8998. *userdataPtr = ptrRetVal;
  8999. }
  9000. return 1;
  9001. }
  9002. static int Polycode_SceneLabel_applyClone(lua_State *L) {
  9003. luaL_checktype(L, 1, LUA_TUSERDATA);
  9004. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  9005. luaL_checktype(L, 2, LUA_TUSERDATA);
  9006. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9007. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9008. bool deepClone = lua_toboolean(L, 3) != 0;
  9009. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9010. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9011. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9012. return 0;
  9013. }
  9014. static int Polycode_SceneLabel_updateFromLabel(lua_State *L) {
  9015. luaL_checktype(L, 1, LUA_TUSERDATA);
  9016. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  9017. inst->updateFromLabel();
  9018. return 0;
  9019. }
  9020. static int Polycode_SceneLabel_getLabel(lua_State *L) {
  9021. luaL_checktype(L, 1, LUA_TUSERDATA);
  9022. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  9023. PolyBase *ptrRetVal = (PolyBase*)inst->getLabel();
  9024. if(ptrRetVal == NULL) {
  9025. lua_pushnil(L);
  9026. } else {
  9027. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9028. *userdataPtr = ptrRetVal;
  9029. }
  9030. return 1;
  9031. }
  9032. static int Polycode_SceneLight(lua_State *L) {
  9033. luaL_checktype(L, 1, LUA_TNUMBER);
  9034. int type = lua_tointeger(L, 1);
  9035. luaL_checktype(L, 2, LUA_TUSERDATA);
  9036. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  9037. luaL_checktype(L, 3, LUA_TNUMBER);
  9038. Number intensity = lua_tonumber(L, 3);
  9039. luaL_checktype(L, 4, LUA_TNUMBER);
  9040. Number constantAttenuation = lua_tonumber(L, 4);
  9041. luaL_checktype(L, 5, LUA_TNUMBER);
  9042. Number linearAttenuation = lua_tonumber(L, 5);
  9043. luaL_checktype(L, 6, LUA_TNUMBER);
  9044. Number quadraticAttenuation = lua_tonumber(L, 6);
  9045. SceneLight *inst = new SceneLight(type, parentScene, intensity, constantAttenuation, linearAttenuation, quadraticAttenuation);
  9046. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9047. *userdataPtr = (PolyBase*)inst;
  9048. luaL_getmetatable(L, "Polycode.SceneLight");
  9049. lua_setmetatable(L, -2);
  9050. return 1;
  9051. }
  9052. static int Polycode_SceneLight_getIntensity(lua_State *L) {
  9053. luaL_checktype(L, 1, LUA_TUSERDATA);
  9054. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9055. lua_pushnumber(L, inst->getIntensity());
  9056. return 1;
  9057. }
  9058. static int Polycode_SceneLight_setIntensity(lua_State *L) {
  9059. luaL_checktype(L, 1, LUA_TUSERDATA);
  9060. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9061. luaL_checktype(L, 2, LUA_TNUMBER);
  9062. Number newIntensity = lua_tonumber(L, 2);
  9063. inst->setIntensity(newIntensity);
  9064. return 0;
  9065. }
  9066. static int Polycode_SceneLight_setAttenuation(lua_State *L) {
  9067. luaL_checktype(L, 1, LUA_TUSERDATA);
  9068. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9069. luaL_checktype(L, 2, LUA_TNUMBER);
  9070. Number constantAttenuation = lua_tonumber(L, 2);
  9071. luaL_checktype(L, 3, LUA_TNUMBER);
  9072. Number linearAttenuation = lua_tonumber(L, 3);
  9073. luaL_checktype(L, 4, LUA_TNUMBER);
  9074. Number quadraticAttenuation = lua_tonumber(L, 4);
  9075. inst->setAttenuation(constantAttenuation, linearAttenuation, quadraticAttenuation);
  9076. return 0;
  9077. }
  9078. static int Polycode_SceneLight_getConstantAttenuation(lua_State *L) {
  9079. luaL_checktype(L, 1, LUA_TUSERDATA);
  9080. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9081. lua_pushnumber(L, inst->getConstantAttenuation());
  9082. return 1;
  9083. }
  9084. static int Polycode_SceneLight_getLinearAttenuation(lua_State *L) {
  9085. luaL_checktype(L, 1, LUA_TUSERDATA);
  9086. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9087. lua_pushnumber(L, inst->getLinearAttenuation());
  9088. return 1;
  9089. }
  9090. static int Polycode_SceneLight_getQuadraticAttenuation(lua_State *L) {
  9091. luaL_checktype(L, 1, LUA_TUSERDATA);
  9092. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9093. lua_pushnumber(L, inst->getQuadraticAttenuation());
  9094. return 1;
  9095. }
  9096. static int Polycode_SceneLight_getType(lua_State *L) {
  9097. luaL_checktype(L, 1, LUA_TUSERDATA);
  9098. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9099. lua_pushinteger(L, inst->getType());
  9100. return 1;
  9101. }
  9102. static int Polycode_SceneLight_renderDepthMap(lua_State *L) {
  9103. luaL_checktype(L, 1, LUA_TUSERDATA);
  9104. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9105. luaL_checktype(L, 2, LUA_TUSERDATA);
  9106. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  9107. inst->renderDepthMap(scene);
  9108. return 0;
  9109. }
  9110. static int Polycode_SceneLight_getZBufferTexture(lua_State *L) {
  9111. luaL_checktype(L, 1, LUA_TUSERDATA);
  9112. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9113. PolyBase *ptrRetVal = (PolyBase*)inst->getZBufferTexture();
  9114. if(ptrRetVal == NULL) {
  9115. lua_pushnil(L);
  9116. } else {
  9117. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9118. *userdataPtr = ptrRetVal;
  9119. }
  9120. return 1;
  9121. }
  9122. static int Polycode_SceneLight_setSpecularLightColor(lua_State *L) {
  9123. luaL_checktype(L, 1, LUA_TUSERDATA);
  9124. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9125. luaL_checktype(L, 2, LUA_TNUMBER);
  9126. Number r = lua_tonumber(L, 2);
  9127. luaL_checktype(L, 3, LUA_TNUMBER);
  9128. Number g = lua_tonumber(L, 3);
  9129. luaL_checktype(L, 4, LUA_TNUMBER);
  9130. Number b = lua_tonumber(L, 4);
  9131. luaL_checktype(L, 5, LUA_TNUMBER);
  9132. Number a = lua_tonumber(L, 5);
  9133. inst->setSpecularLightColor(r, g, b, a);
  9134. return 0;
  9135. }
  9136. static int Polycode_SceneLight_setDiffuseLightColor(lua_State *L) {
  9137. luaL_checktype(L, 1, LUA_TUSERDATA);
  9138. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9139. luaL_checktype(L, 2, LUA_TNUMBER);
  9140. Number r = lua_tonumber(L, 2);
  9141. luaL_checktype(L, 3, LUA_TNUMBER);
  9142. Number g = lua_tonumber(L, 3);
  9143. luaL_checktype(L, 4, LUA_TNUMBER);
  9144. Number b = lua_tonumber(L, 4);
  9145. luaL_checktype(L, 5, LUA_TNUMBER);
  9146. Number a = lua_tonumber(L, 5);
  9147. inst->setDiffuseLightColor(r, g, b, a);
  9148. return 0;
  9149. }
  9150. static int Polycode_SceneLight_setLightColor(lua_State *L) {
  9151. luaL_checktype(L, 1, LUA_TUSERDATA);
  9152. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9153. luaL_checktype(L, 2, LUA_TNUMBER);
  9154. Number r = lua_tonumber(L, 2);
  9155. luaL_checktype(L, 3, LUA_TNUMBER);
  9156. Number g = lua_tonumber(L, 3);
  9157. luaL_checktype(L, 4, LUA_TNUMBER);
  9158. Number b = lua_tonumber(L, 4);
  9159. luaL_checktype(L, 5, LUA_TNUMBER);
  9160. Number a = lua_tonumber(L, 5);
  9161. inst->setLightColor(r, g, b, a);
  9162. return 0;
  9163. }
  9164. static int Polycode_SceneLight_setSpotlightProperties(lua_State *L) {
  9165. luaL_checktype(L, 1, LUA_TUSERDATA);
  9166. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9167. luaL_checktype(L, 2, LUA_TNUMBER);
  9168. Number spotlightCutoff = lua_tonumber(L, 2);
  9169. luaL_checktype(L, 3, LUA_TNUMBER);
  9170. Number spotlightExponent = lua_tonumber(L, 3);
  9171. inst->setSpotlightProperties(spotlightCutoff, spotlightExponent);
  9172. return 0;
  9173. }
  9174. static int Polycode_SceneLight_getSpotlightCutoff(lua_State *L) {
  9175. luaL_checktype(L, 1, LUA_TUSERDATA);
  9176. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9177. lua_pushnumber(L, inst->getSpotlightCutoff());
  9178. return 1;
  9179. }
  9180. static int Polycode_SceneLight_getSpotlightExponent(lua_State *L) {
  9181. luaL_checktype(L, 1, LUA_TUSERDATA);
  9182. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9183. lua_pushnumber(L, inst->getSpotlightExponent());
  9184. return 1;
  9185. }
  9186. static int Polycode_SceneLight_enableShadows(lua_State *L) {
  9187. luaL_checktype(L, 1, LUA_TUSERDATA);
  9188. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9189. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9190. bool val = lua_toboolean(L, 2) != 0;
  9191. luaL_checktype(L, 3, LUA_TNUMBER);
  9192. int resolution = lua_tointeger(L, 3);
  9193. inst->enableShadows(val, resolution);
  9194. return 0;
  9195. }
  9196. static int Polycode_SceneLight_setShadowMapFOV(lua_State *L) {
  9197. luaL_checktype(L, 1, LUA_TUSERDATA);
  9198. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9199. luaL_checktype(L, 2, LUA_TNUMBER);
  9200. Number fov = lua_tonumber(L, 2);
  9201. inst->setShadowMapFOV(fov);
  9202. return 0;
  9203. }
  9204. static int Polycode_SceneLight_getShadowMapFOV(lua_State *L) {
  9205. luaL_checktype(L, 1, LUA_TUSERDATA);
  9206. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9207. lua_pushnumber(L, inst->getShadowMapFOV());
  9208. return 1;
  9209. }
  9210. static int Polycode_SceneLight_getShadowMapResolution(lua_State *L) {
  9211. luaL_checktype(L, 1, LUA_TUSERDATA);
  9212. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9213. lua_pushinteger(L, inst->getShadowMapResolution());
  9214. return 1;
  9215. }
  9216. static int Polycode_SceneLight_areShadowsEnabled(lua_State *L) {
  9217. luaL_checktype(L, 1, LUA_TUSERDATA);
  9218. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9219. lua_pushboolean(L, inst->areShadowsEnabled());
  9220. return 1;
  9221. }
  9222. static int Polycode_SceneLight_getLightType(lua_State *L) {
  9223. luaL_checktype(L, 1, LUA_TUSERDATA);
  9224. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9225. lua_pushinteger(L, inst->getLightType());
  9226. return 1;
  9227. }
  9228. static int Polycode_SceneLight_setLightImportance(lua_State *L) {
  9229. luaL_checktype(L, 1, LUA_TUSERDATA);
  9230. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9231. luaL_checktype(L, 2, LUA_TNUMBER);
  9232. int newImportance = lua_tointeger(L, 2);
  9233. inst->setLightImportance(newImportance);
  9234. return 0;
  9235. }
  9236. static int Polycode_SceneLight_getLightImportance(lua_State *L) {
  9237. luaL_checktype(L, 1, LUA_TUSERDATA);
  9238. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9239. lua_pushinteger(L, inst->getLightImportance());
  9240. return 1;
  9241. }
  9242. static int Polycode_SceneLight_setLightType(lua_State *L) {
  9243. luaL_checktype(L, 1, LUA_TUSERDATA);
  9244. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9245. luaL_checktype(L, 2, LUA_TNUMBER);
  9246. int lightType = lua_tointeger(L, 2);
  9247. inst->setLightType(lightType);
  9248. return 0;
  9249. }
  9250. static int Polycode_SceneLight_Clone(lua_State *L) {
  9251. luaL_checktype(L, 1, LUA_TUSERDATA);
  9252. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9253. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9254. bool deepClone = lua_toboolean(L, 2) != 0;
  9255. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9256. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9257. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9258. if(ptrRetVal == NULL) {
  9259. lua_pushnil(L);
  9260. } else {
  9261. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9262. *userdataPtr = ptrRetVal;
  9263. }
  9264. return 1;
  9265. }
  9266. static int Polycode_SceneLight_applyClone(lua_State *L) {
  9267. luaL_checktype(L, 1, LUA_TUSERDATA);
  9268. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9269. luaL_checktype(L, 2, LUA_TUSERDATA);
  9270. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9271. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9272. bool deepClone = lua_toboolean(L, 3) != 0;
  9273. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9274. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9275. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9276. return 0;
  9277. }
  9278. static int Polycode_SceneLight_getParentScene(lua_State *L) {
  9279. luaL_checktype(L, 1, LUA_TUSERDATA);
  9280. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9281. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  9282. if(ptrRetVal == NULL) {
  9283. lua_pushnil(L);
  9284. } else {
  9285. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9286. *userdataPtr = ptrRetVal;
  9287. }
  9288. return 1;
  9289. }
  9290. static int Polycode_SceneLight_setParentScene(lua_State *L) {
  9291. luaL_checktype(L, 1, LUA_TUSERDATA);
  9292. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9293. luaL_checktype(L, 2, LUA_TUSERDATA);
  9294. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  9295. inst->setParentScene(scene);
  9296. return 0;
  9297. }
  9298. static int Polycode_SceneLight_getSpotlightCamera(lua_State *L) {
  9299. luaL_checktype(L, 1, LUA_TUSERDATA);
  9300. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9301. PolyBase *ptrRetVal = (PolyBase*)inst->getSpotlightCamera();
  9302. if(ptrRetVal == NULL) {
  9303. lua_pushnil(L);
  9304. } else {
  9305. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9306. *userdataPtr = ptrRetVal;
  9307. }
  9308. return 1;
  9309. }
  9310. static int Polycode_SceneLight_getLightInfo(lua_State *L) {
  9311. luaL_checktype(L, 1, LUA_TUSERDATA);
  9312. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  9313. LightInfo *retInst = new LightInfo();
  9314. *retInst = inst->getLightInfo();
  9315. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9316. luaL_getmetatable(L, "Polycode.LightInfo");
  9317. lua_setmetatable(L, -2);
  9318. *userdataPtr = (PolyBase*)retInst;
  9319. return 1;
  9320. }
  9321. static int Polycode_SceneCurve(lua_State *L) {
  9322. SceneCurve *inst = new SceneCurve();
  9323. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9324. *userdataPtr = (PolyBase*)inst;
  9325. luaL_getmetatable(L, "Polycode.SceneCurve");
  9326. lua_setmetatable(L, -2);
  9327. return 1;
  9328. }
  9329. static int Polycode_SceneCurve_SceneCurveWithCurve(lua_State *L) {
  9330. luaL_checktype(L, 1, LUA_TUSERDATA);
  9331. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9332. luaL_checktype(L, 2, LUA_TUSERDATA);
  9333. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9334. PolyBase *ptrRetVal = (PolyBase*)inst->SceneCurveWithCurve(curve);
  9335. if(ptrRetVal == NULL) {
  9336. lua_pushnil(L);
  9337. } else {
  9338. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9339. *userdataPtr = ptrRetVal;
  9340. }
  9341. return 1;
  9342. }
  9343. static int Polycode_SceneCurve_getWorldPointAt(lua_State *L) {
  9344. luaL_checktype(L, 1, LUA_TUSERDATA);
  9345. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9346. luaL_checktype(L, 2, LUA_TNUMBER);
  9347. Number t = lua_tonumber(L, 2);
  9348. Vector3 *retInst = new Vector3();
  9349. *retInst = inst->getWorldPointAt(t);
  9350. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9351. luaL_getmetatable(L, "Polycode.Vector3");
  9352. lua_setmetatable(L, -2);
  9353. *userdataPtr = (PolyBase*)retInst;
  9354. return 1;
  9355. }
  9356. static int Polycode_SceneCurve_Update(lua_State *L) {
  9357. luaL_checktype(L, 1, LUA_TUSERDATA);
  9358. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9359. inst->Update();
  9360. return 0;
  9361. }
  9362. static int Polycode_SceneCurve_Clone(lua_State *L) {
  9363. luaL_checktype(L, 1, LUA_TUSERDATA);
  9364. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9365. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9366. bool deepClone = lua_toboolean(L, 2) != 0;
  9367. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9368. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9369. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9370. if(ptrRetVal == NULL) {
  9371. lua_pushnil(L);
  9372. } else {
  9373. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9374. *userdataPtr = ptrRetVal;
  9375. }
  9376. return 1;
  9377. }
  9378. static int Polycode_SceneCurve_applyClone(lua_State *L) {
  9379. luaL_checktype(L, 1, LUA_TUSERDATA);
  9380. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9381. luaL_checktype(L, 2, LUA_TUSERDATA);
  9382. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9383. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9384. bool deepClone = lua_toboolean(L, 3) != 0;
  9385. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9386. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9387. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9388. return 0;
  9389. }
  9390. static int Polycode_SceneCurve_getCurve(lua_State *L) {
  9391. luaL_checktype(L, 1, LUA_TUSERDATA);
  9392. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  9393. PolyBase *ptrRetVal = (PolyBase*)inst->getCurve();
  9394. if(ptrRetVal == NULL) {
  9395. lua_pushnil(L);
  9396. } else {
  9397. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9398. *userdataPtr = ptrRetVal;
  9399. }
  9400. return 1;
  9401. }
  9402. static int Polycode_SceneLine(lua_State *L) {
  9403. luaL_checktype(L, 1, LUA_TUSERDATA);
  9404. Entity* ent1 = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  9405. luaL_checktype(L, 2, LUA_TUSERDATA);
  9406. Entity* ent2 = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9407. SceneLine *inst = new SceneLine(ent1, ent2);
  9408. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9409. *userdataPtr = (PolyBase*)inst;
  9410. luaL_getmetatable(L, "Polycode.SceneLine");
  9411. lua_setmetatable(L, -2);
  9412. return 1;
  9413. }
  9414. static int Polycode_SceneLine_SceneLineWithPositions(lua_State *L) {
  9415. luaL_checktype(L, 1, LUA_TUSERDATA);
  9416. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  9417. luaL_checktype(L, 2, LUA_TUSERDATA);
  9418. Vector3 start = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9419. luaL_checktype(L, 3, LUA_TUSERDATA);
  9420. Vector3 end = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9421. PolyBase *ptrRetVal = (PolyBase*)inst->SceneLineWithPositions(start, end);
  9422. if(ptrRetVal == NULL) {
  9423. lua_pushnil(L);
  9424. } else {
  9425. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9426. *userdataPtr = ptrRetVal;
  9427. }
  9428. return 1;
  9429. }
  9430. static int Polycode_SceneLine_setStart(lua_State *L) {
  9431. luaL_checktype(L, 1, LUA_TUSERDATA);
  9432. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  9433. luaL_checktype(L, 2, LUA_TUSERDATA);
  9434. Vector3 start = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9435. inst->setStart(start);
  9436. return 0;
  9437. }
  9438. static int Polycode_SceneLine_setEnd(lua_State *L) {
  9439. luaL_checktype(L, 1, LUA_TUSERDATA);
  9440. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  9441. luaL_checktype(L, 2, LUA_TUSERDATA);
  9442. Vector3 end = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9443. inst->setEnd(end);
  9444. return 0;
  9445. }
  9446. static int Polycode_SceneLine_Update(lua_State *L) {
  9447. luaL_checktype(L, 1, LUA_TUSERDATA);
  9448. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  9449. inst->Update();
  9450. return 0;
  9451. }
  9452. static int Polycode_SceneManager(lua_State *L) {
  9453. SceneManager *inst = new SceneManager();
  9454. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9455. *userdataPtr = (PolyBase*)inst;
  9456. luaL_getmetatable(L, "Polycode.SceneManager");
  9457. lua_setmetatable(L, -2);
  9458. return 1;
  9459. }
  9460. static int Polycode_SceneManager_addScene(lua_State *L) {
  9461. luaL_checktype(L, 1, LUA_TUSERDATA);
  9462. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9463. luaL_checktype(L, 2, LUA_TUSERDATA);
  9464. Scene* newScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  9465. inst->addScene(newScene);
  9466. return 0;
  9467. }
  9468. static int Polycode_SceneManager_removeScene(lua_State *L) {
  9469. luaL_checktype(L, 1, LUA_TUSERDATA);
  9470. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9471. luaL_checktype(L, 2, LUA_TUSERDATA);
  9472. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  9473. inst->removeScene(scene);
  9474. return 0;
  9475. }
  9476. static int Polycode_SceneManager_Update(lua_State *L) {
  9477. luaL_checktype(L, 1, LUA_TUSERDATA);
  9478. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9479. inst->Update();
  9480. return 0;
  9481. }
  9482. static int Polycode_SceneManager_fixedUpdate(lua_State *L) {
  9483. luaL_checktype(L, 1, LUA_TUSERDATA);
  9484. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9485. inst->fixedUpdate();
  9486. return 0;
  9487. }
  9488. static int Polycode_SceneManager_Render(lua_State *L) {
  9489. luaL_checktype(L, 1, LUA_TUSERDATA);
  9490. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9491. luaL_checktype(L, 2, LUA_TUSERDATA);
  9492. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  9493. inst->Render(viewport);
  9494. return 0;
  9495. }
  9496. static int Polycode_SceneManager_renderVirtual(lua_State *L) {
  9497. luaL_checktype(L, 1, LUA_TUSERDATA);
  9498. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9499. inst->renderVirtual();
  9500. return 0;
  9501. }
  9502. static int Polycode_SceneManager_registerRenderTexture(lua_State *L) {
  9503. luaL_checktype(L, 1, LUA_TUSERDATA);
  9504. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9505. luaL_checktype(L, 2, LUA_TUSERDATA);
  9506. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  9507. inst->registerRenderTexture(renderTexture);
  9508. return 0;
  9509. }
  9510. static int Polycode_SceneManager_unregisterRenderTexture(lua_State *L) {
  9511. luaL_checktype(L, 1, LUA_TUSERDATA);
  9512. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9513. luaL_checktype(L, 2, LUA_TUSERDATA);
  9514. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  9515. inst->unregisterRenderTexture(renderTexture);
  9516. return 0;
  9517. }
  9518. static int Polycode_SceneManager_setRenderer(lua_State *L) {
  9519. luaL_checktype(L, 1, LUA_TUSERDATA);
  9520. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  9521. luaL_checktype(L, 2, LUA_TUSERDATA);
  9522. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  9523. inst->setRenderer(renderer);
  9524. return 0;
  9525. }
  9526. static int Polycode_SceneMesh(lua_State *L) {
  9527. luaL_checktype(L, 1, LUA_TSTRING);
  9528. String fileName = String(lua_tostring(L, 1));
  9529. SceneMesh *inst = new SceneMesh(fileName);
  9530. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9531. *userdataPtr = (PolyBase*)inst;
  9532. luaL_getmetatable(L, "Polycode.SceneMesh");
  9533. lua_setmetatable(L, -2);
  9534. return 1;
  9535. }
  9536. static int Polycode_SceneMesh_SceneMeshFromMesh(lua_State *L) {
  9537. luaL_checktype(L, 1, LUA_TUSERDATA);
  9538. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9539. luaL_checktype(L, 2, LUA_TUSERDATA);
  9540. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  9541. PolyBase *ptrRetVal = (PolyBase*)inst->SceneMeshFromMesh(mesh);
  9542. if(ptrRetVal == NULL) {
  9543. lua_pushnil(L);
  9544. } else {
  9545. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9546. *userdataPtr = ptrRetVal;
  9547. }
  9548. return 1;
  9549. }
  9550. static int Polycode_SceneMesh_SceneMeshWithType(lua_State *L) {
  9551. luaL_checktype(L, 1, LUA_TUSERDATA);
  9552. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9553. luaL_checktype(L, 2, LUA_TNUMBER);
  9554. int meshType = lua_tointeger(L, 2);
  9555. PolyBase *ptrRetVal = (PolyBase*)inst->SceneMeshWithType(meshType);
  9556. if(ptrRetVal == NULL) {
  9557. lua_pushnil(L);
  9558. } else {
  9559. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9560. *userdataPtr = ptrRetVal;
  9561. }
  9562. return 1;
  9563. }
  9564. static int Polycode_SceneMesh_Render(lua_State *L) {
  9565. luaL_checktype(L, 1, LUA_TUSERDATA);
  9566. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9567. luaL_checktype(L, 2, LUA_TUSERDATA);
  9568. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  9569. inst->Render(buffer);
  9570. return 0;
  9571. }
  9572. static int Polycode_SceneMesh_getShaderPass(lua_State *L) {
  9573. luaL_checktype(L, 1, LUA_TUSERDATA);
  9574. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9575. luaL_checktype(L, 2, LUA_TNUMBER);
  9576. int index = lua_tointeger(L, 2);
  9577. ShaderPass *retInst = new ShaderPass();
  9578. *retInst = inst->getShaderPass(index);
  9579. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9580. luaL_getmetatable(L, "Polycode.ShaderPass");
  9581. lua_setmetatable(L, -2);
  9582. *userdataPtr = (PolyBase*)retInst;
  9583. return 1;
  9584. }
  9585. static int Polycode_SceneMesh_getNumShaderPasses(lua_State *L) {
  9586. luaL_checktype(L, 1, LUA_TUSERDATA);
  9587. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9588. lua_pushinteger(L, inst->getNumShaderPasses());
  9589. return 1;
  9590. }
  9591. static int Polycode_SceneMesh_addShaderPass(lua_State *L) {
  9592. luaL_checktype(L, 1, LUA_TUSERDATA);
  9593. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9594. luaL_checktype(L, 2, LUA_TUSERDATA);
  9595. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  9596. inst->addShaderPass(pass);
  9597. return 0;
  9598. }
  9599. static int Polycode_SceneMesh_removeShaderPass(lua_State *L) {
  9600. luaL_checktype(L, 1, LUA_TUSERDATA);
  9601. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9602. luaL_checktype(L, 2, LUA_TNUMBER);
  9603. int shaderIndex = lua_tointeger(L, 2);
  9604. inst->removeShaderPass(shaderIndex);
  9605. return 0;
  9606. }
  9607. static int Polycode_SceneMesh_getMesh(lua_State *L) {
  9608. luaL_checktype(L, 1, LUA_TUSERDATA);
  9609. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9610. PolyBase *ptrRetVal = (PolyBase*)inst->getMesh();
  9611. if(ptrRetVal == NULL) {
  9612. lua_pushnil(L);
  9613. } else {
  9614. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9615. *userdataPtr = ptrRetVal;
  9616. }
  9617. return 1;
  9618. }
  9619. static int Polycode_SceneMesh_getMaterial(lua_State *L) {
  9620. luaL_checktype(L, 1, LUA_TUSERDATA);
  9621. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9622. PolyBase *ptrRetVal = (PolyBase*)inst->getMaterial();
  9623. if(ptrRetVal == NULL) {
  9624. lua_pushnil(L);
  9625. } else {
  9626. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9627. *userdataPtr = ptrRetVal;
  9628. }
  9629. return 1;
  9630. }
  9631. static int Polycode_SceneMesh_loadSkeleton(lua_State *L) {
  9632. luaL_checktype(L, 1, LUA_TUSERDATA);
  9633. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9634. luaL_checktype(L, 2, LUA_TSTRING);
  9635. String fileName = String(lua_tostring(L, 2));
  9636. PolyBase *ptrRetVal = (PolyBase*)inst->loadSkeleton(fileName);
  9637. if(ptrRetVal == NULL) {
  9638. lua_pushnil(L);
  9639. } else {
  9640. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9641. *userdataPtr = ptrRetVal;
  9642. }
  9643. return 1;
  9644. }
  9645. static int Polycode_SceneMesh_clearMaterial(lua_State *L) {
  9646. luaL_checktype(L, 1, LUA_TUSERDATA);
  9647. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9648. inst->clearMaterial();
  9649. return 0;
  9650. }
  9651. static int Polycode_SceneMesh_setMaterial(lua_State *L) {
  9652. luaL_checktype(L, 1, LUA_TUSERDATA);
  9653. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9654. luaL_checktype(L, 2, LUA_TUSERDATA);
  9655. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  9656. inst->setMaterial(material);
  9657. return 0;
  9658. }
  9659. static int Polycode_SceneMesh_rebuildAttributes(lua_State *L) {
  9660. luaL_checktype(L, 1, LUA_TUSERDATA);
  9661. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9662. inst->rebuildAttributes();
  9663. return 0;
  9664. }
  9665. static int Polycode_SceneMesh_setMaterialByName(lua_State *L) {
  9666. luaL_checktype(L, 1, LUA_TUSERDATA);
  9667. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9668. luaL_checktype(L, 2, LUA_TSTRING);
  9669. String materialName = String(lua_tostring(L, 2));
  9670. luaL_checktype(L, 3, LUA_TUSERDATA);
  9671. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  9672. inst->setMaterialByName(materialName, resourcePool);
  9673. return 0;
  9674. }
  9675. static int Polycode_SceneMesh_setMesh(lua_State *L) {
  9676. luaL_checktype(L, 1, LUA_TUSERDATA);
  9677. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9678. luaL_checktype(L, 2, LUA_TUSERDATA);
  9679. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  9680. inst->setMesh(mesh);
  9681. return 0;
  9682. }
  9683. static int Polycode_SceneMesh_setSkeleton(lua_State *L) {
  9684. luaL_checktype(L, 1, LUA_TUSERDATA);
  9685. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9686. luaL_checktype(L, 2, LUA_TUSERDATA);
  9687. Skeleton* skeleton = (Skeleton*) *((PolyBase**)lua_touserdata(L, 2));
  9688. inst->setSkeleton(skeleton);
  9689. return 0;
  9690. }
  9691. static int Polycode_SceneMesh_getSkeleton(lua_State *L) {
  9692. luaL_checktype(L, 1, LUA_TUSERDATA);
  9693. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9694. PolyBase *ptrRetVal = (PolyBase*)inst->getSkeleton();
  9695. if(ptrRetVal == NULL) {
  9696. lua_pushnil(L);
  9697. } else {
  9698. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9699. *userdataPtr = ptrRetVal;
  9700. }
  9701. return 1;
  9702. }
  9703. static int Polycode_SceneMesh_applySkeletonLocally(lua_State *L) {
  9704. luaL_checktype(L, 1, LUA_TUSERDATA);
  9705. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9706. inst->applySkeletonLocally();
  9707. return 0;
  9708. }
  9709. static int Polycode_SceneMesh_setLineWidth(lua_State *L) {
  9710. luaL_checktype(L, 1, LUA_TUSERDATA);
  9711. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9712. luaL_checktype(L, 2, LUA_TNUMBER);
  9713. Number newWidth = lua_tonumber(L, 2);
  9714. inst->setLineWidth(newWidth);
  9715. return 0;
  9716. }
  9717. static int Polycode_SceneMesh_getFilename(lua_State *L) {
  9718. luaL_checktype(L, 1, LUA_TUSERDATA);
  9719. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9720. lua_pushstring(L, inst->getFilename().c_str());
  9721. return 1;
  9722. }
  9723. static int Polycode_SceneMesh_setFilename(lua_State *L) {
  9724. luaL_checktype(L, 1, LUA_TUSERDATA);
  9725. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9726. luaL_checktype(L, 2, LUA_TSTRING);
  9727. String fileName = String(lua_tostring(L, 2));
  9728. inst->setFilename(fileName);
  9729. return 0;
  9730. }
  9731. static int Polycode_SceneMesh_loadFromFile(lua_State *L) {
  9732. luaL_checktype(L, 1, LUA_TUSERDATA);
  9733. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9734. luaL_checktype(L, 2, LUA_TSTRING);
  9735. String fileName = String(lua_tostring(L, 2));
  9736. inst->loadFromFile(fileName);
  9737. return 0;
  9738. }
  9739. static int Polycode_SceneMesh_customHitDetection(lua_State *L) {
  9740. luaL_checktype(L, 1, LUA_TUSERDATA);
  9741. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9742. luaL_checktype(L, 2, LUA_TUSERDATA);
  9743. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  9744. lua_pushboolean(L, inst->customHitDetection(ray));
  9745. return 1;
  9746. }
  9747. static int Polycode_SceneMesh_setForceMaterial(lua_State *L) {
  9748. luaL_checktype(L, 1, LUA_TUSERDATA);
  9749. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9750. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9751. bool forceMaterial = lua_toboolean(L, 2) != 0;
  9752. inst->setForceMaterial(forceMaterial);
  9753. return 0;
  9754. }
  9755. static int Polycode_SceneMesh_getForceMaterial(lua_State *L) {
  9756. luaL_checktype(L, 1, LUA_TUSERDATA);
  9757. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9758. lua_pushboolean(L, inst->getForceMaterial());
  9759. return 1;
  9760. }
  9761. static int Polycode_SceneMesh_Clone(lua_State *L) {
  9762. luaL_checktype(L, 1, LUA_TUSERDATA);
  9763. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9764. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9765. bool deepClone = lua_toboolean(L, 2) != 0;
  9766. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9767. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9768. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9769. if(ptrRetVal == NULL) {
  9770. lua_pushnil(L);
  9771. } else {
  9772. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9773. *userdataPtr = ptrRetVal;
  9774. }
  9775. return 1;
  9776. }
  9777. static int Polycode_SceneMesh_applyClone(lua_State *L) {
  9778. luaL_checktype(L, 1, LUA_TUSERDATA);
  9779. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  9780. luaL_checktype(L, 2, LUA_TUSERDATA);
  9781. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9782. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9783. bool deepClone = lua_toboolean(L, 3) != 0;
  9784. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9785. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9786. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9787. return 0;
  9788. }
  9789. static int Polycode_ScenePrimitive(lua_State *L) {
  9790. luaL_checktype(L, 1, LUA_TNUMBER);
  9791. int type = lua_tointeger(L, 1);
  9792. luaL_checktype(L, 2, LUA_TNUMBER);
  9793. Number v1 = lua_tonumber(L, 2);
  9794. luaL_checktype(L, 3, LUA_TNUMBER);
  9795. Number v2 = lua_tonumber(L, 3);
  9796. luaL_checktype(L, 4, LUA_TNUMBER);
  9797. Number v3 = lua_tonumber(L, 4);
  9798. luaL_checktype(L, 5, LUA_TNUMBER);
  9799. Number v4 = lua_tonumber(L, 5);
  9800. luaL_checktype(L, 6, LUA_TNUMBER);
  9801. Number v5 = lua_tonumber(L, 6);
  9802. ScenePrimitive *inst = new ScenePrimitive(type, v1, v2, v3, v4, v5);
  9803. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9804. *userdataPtr = (PolyBase*)inst;
  9805. luaL_getmetatable(L, "Polycode.ScenePrimitive");
  9806. lua_setmetatable(L, -2);
  9807. return 1;
  9808. }
  9809. static int Polycode_ScenePrimitive_setPrimitiveOptions(lua_State *L) {
  9810. luaL_checktype(L, 1, LUA_TUSERDATA);
  9811. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9812. luaL_checktype(L, 2, LUA_TNUMBER);
  9813. int type = lua_tointeger(L, 2);
  9814. luaL_checktype(L, 3, LUA_TNUMBER);
  9815. Number v1 = lua_tonumber(L, 3);
  9816. luaL_checktype(L, 4, LUA_TNUMBER);
  9817. Number v2 = lua_tonumber(L, 4);
  9818. luaL_checktype(L, 5, LUA_TNUMBER);
  9819. Number v3 = lua_tonumber(L, 5);
  9820. luaL_checktype(L, 6, LUA_TNUMBER);
  9821. Number v4 = lua_tonumber(L, 6);
  9822. luaL_checktype(L, 7, LUA_TNUMBER);
  9823. Number v5 = lua_tonumber(L, 7);
  9824. inst->setPrimitiveOptions(type, v1, v2, v3, v4, v5);
  9825. return 0;
  9826. }
  9827. static int Polycode_ScenePrimitive_recreatePrimitive(lua_State *L) {
  9828. luaL_checktype(L, 1, LUA_TUSERDATA);
  9829. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9830. inst->recreatePrimitive();
  9831. return 0;
  9832. }
  9833. static int Polycode_ScenePrimitive_getPrimitiveType(lua_State *L) {
  9834. luaL_checktype(L, 1, LUA_TUSERDATA);
  9835. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9836. lua_pushinteger(L, inst->getPrimitiveType());
  9837. return 1;
  9838. }
  9839. static int Polycode_ScenePrimitive_getPrimitiveParameter1(lua_State *L) {
  9840. luaL_checktype(L, 1, LUA_TUSERDATA);
  9841. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9842. lua_pushnumber(L, inst->getPrimitiveParameter1());
  9843. return 1;
  9844. }
  9845. static int Polycode_ScenePrimitive_getPrimitiveParameter2(lua_State *L) {
  9846. luaL_checktype(L, 1, LUA_TUSERDATA);
  9847. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9848. lua_pushnumber(L, inst->getPrimitiveParameter2());
  9849. return 1;
  9850. }
  9851. static int Polycode_ScenePrimitive_getPrimitiveParameter3(lua_State *L) {
  9852. luaL_checktype(L, 1, LUA_TUSERDATA);
  9853. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9854. lua_pushnumber(L, inst->getPrimitiveParameter3());
  9855. return 1;
  9856. }
  9857. static int Polycode_ScenePrimitive_getPrimitiveParameter4(lua_State *L) {
  9858. luaL_checktype(L, 1, LUA_TUSERDATA);
  9859. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9860. lua_pushnumber(L, inst->getPrimitiveParameter4());
  9861. return 1;
  9862. }
  9863. static int Polycode_ScenePrimitive_getPrimitiveParameter5(lua_State *L) {
  9864. luaL_checktype(L, 1, LUA_TUSERDATA);
  9865. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9866. lua_pushnumber(L, inst->getPrimitiveParameter5());
  9867. return 1;
  9868. }
  9869. static int Polycode_ScenePrimitive_Clone(lua_State *L) {
  9870. luaL_checktype(L, 1, LUA_TUSERDATA);
  9871. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9872. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9873. bool deepClone = lua_toboolean(L, 2) != 0;
  9874. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9875. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9876. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9877. if(ptrRetVal == NULL) {
  9878. lua_pushnil(L);
  9879. } else {
  9880. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9881. *userdataPtr = ptrRetVal;
  9882. }
  9883. return 1;
  9884. }
  9885. static int Polycode_ScenePrimitive_applyClone(lua_State *L) {
  9886. luaL_checktype(L, 1, LUA_TUSERDATA);
  9887. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  9888. luaL_checktype(L, 2, LUA_TUSERDATA);
  9889. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9890. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9891. bool deepClone = lua_toboolean(L, 3) != 0;
  9892. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9893. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9894. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9895. return 0;
  9896. }
  9897. static int Polycode_SceneRenderTexture(lua_State *L) {
  9898. luaL_checktype(L, 1, LUA_TUSERDATA);
  9899. Scene* targetScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  9900. luaL_checktype(L, 2, LUA_TUSERDATA);
  9901. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  9902. luaL_checktype(L, 3, LUA_TNUMBER);
  9903. int renderWidth = lua_tointeger(L, 3);
  9904. luaL_checktype(L, 4, LUA_TNUMBER);
  9905. int renderHeight = lua_tointeger(L, 4);
  9906. luaL_checktype(L, 5, LUA_TBOOLEAN);
  9907. bool floatingPoint = lua_toboolean(L, 5) != 0;
  9908. SceneRenderTexture *inst = new SceneRenderTexture(targetScene, targetCamera, renderWidth, renderHeight, floatingPoint);
  9909. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9910. *userdataPtr = (PolyBase*)inst;
  9911. luaL_getmetatable(L, "Polycode.SceneRenderTexture");
  9912. lua_setmetatable(L, -2);
  9913. return 1;
  9914. }
  9915. static int Polycode_SceneRenderTexture_getTargetTexture(lua_State *L) {
  9916. luaL_checktype(L, 1, LUA_TUSERDATA);
  9917. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9918. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetTexture();
  9919. if(ptrRetVal == NULL) {
  9920. lua_pushnil(L);
  9921. } else {
  9922. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9923. *userdataPtr = ptrRetVal;
  9924. }
  9925. return 1;
  9926. }
  9927. static int Polycode_SceneRenderTexture_getFilterColorBufferTexture(lua_State *L) {
  9928. luaL_checktype(L, 1, LUA_TUSERDATA);
  9929. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9930. PolyBase *ptrRetVal = (PolyBase*)inst->getFilterColorBufferTexture();
  9931. if(ptrRetVal == NULL) {
  9932. lua_pushnil(L);
  9933. } else {
  9934. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9935. *userdataPtr = ptrRetVal;
  9936. }
  9937. return 1;
  9938. }
  9939. static int Polycode_SceneRenderTexture_getFilterZBufferTexture(lua_State *L) {
  9940. luaL_checktype(L, 1, LUA_TUSERDATA);
  9941. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9942. PolyBase *ptrRetVal = (PolyBase*)inst->getFilterZBufferTexture();
  9943. if(ptrRetVal == NULL) {
  9944. lua_pushnil(L);
  9945. } else {
  9946. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9947. *userdataPtr = ptrRetVal;
  9948. }
  9949. return 1;
  9950. }
  9951. static int Polycode_SceneRenderTexture_Render(lua_State *L) {
  9952. luaL_checktype(L, 1, LUA_TUSERDATA);
  9953. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9954. inst->Render();
  9955. return 0;
  9956. }
  9957. static int Polycode_SceneRenderTexture_saveToImage(lua_State *L) {
  9958. luaL_checktype(L, 1, LUA_TUSERDATA);
  9959. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9960. PolyBase *ptrRetVal = (PolyBase*)inst->saveToImage();
  9961. if(ptrRetVal == NULL) {
  9962. lua_pushnil(L);
  9963. } else {
  9964. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9965. *userdataPtr = ptrRetVal;
  9966. }
  9967. return 1;
  9968. }
  9969. static int Polycode_SceneRenderTexture_resizeRenderTexture(lua_State *L) {
  9970. luaL_checktype(L, 1, LUA_TUSERDATA);
  9971. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9972. luaL_checktype(L, 2, LUA_TNUMBER);
  9973. int newWidth = lua_tointeger(L, 2);
  9974. luaL_checktype(L, 3, LUA_TNUMBER);
  9975. int newHeight = lua_tointeger(L, 3);
  9976. inst->resizeRenderTexture(newWidth, newHeight);
  9977. return 0;
  9978. }
  9979. static int Polycode_SceneRenderTexture_getTargetScene(lua_State *L) {
  9980. luaL_checktype(L, 1, LUA_TUSERDATA);
  9981. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9982. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetScene();
  9983. if(ptrRetVal == NULL) {
  9984. lua_pushnil(L);
  9985. } else {
  9986. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9987. *userdataPtr = ptrRetVal;
  9988. }
  9989. return 1;
  9990. }
  9991. static int Polycode_SceneRenderTexture_getTargetCamera(lua_State *L) {
  9992. luaL_checktype(L, 1, LUA_TUSERDATA);
  9993. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  9994. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetCamera();
  9995. if(ptrRetVal == NULL) {
  9996. lua_pushnil(L);
  9997. } else {
  9998. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9999. *userdataPtr = ptrRetVal;
  10000. }
  10001. return 1;
  10002. }
  10003. static int Polycode_SceneSound(lua_State *L) {
  10004. luaL_checktype(L, 1, LUA_TSTRING);
  10005. String fileName = String(lua_tostring(L, 1));
  10006. luaL_checktype(L, 2, LUA_TNUMBER);
  10007. Number referenceDistance = lua_tonumber(L, 2);
  10008. luaL_checktype(L, 3, LUA_TNUMBER);
  10009. Number maxDistance = lua_tonumber(L, 3);
  10010. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10011. bool directionalSound = lua_toboolean(L, 4) != 0;
  10012. SceneSound *inst = new SceneSound(fileName, referenceDistance, maxDistance, directionalSound);
  10013. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10014. *userdataPtr = (PolyBase*)inst;
  10015. luaL_getmetatable(L, "Polycode.SceneSound");
  10016. lua_setmetatable(L, -2);
  10017. return 1;
  10018. }
  10019. static int Polycode_SceneSound_Update(lua_State *L) {
  10020. luaL_checktype(L, 1, LUA_TUSERDATA);
  10021. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10022. inst->Update();
  10023. return 0;
  10024. }
  10025. static int Polycode_SceneSound_Clone(lua_State *L) {
  10026. luaL_checktype(L, 1, LUA_TUSERDATA);
  10027. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10028. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10029. bool deepClone = lua_toboolean(L, 2) != 0;
  10030. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10031. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  10032. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  10033. if(ptrRetVal == NULL) {
  10034. lua_pushnil(L);
  10035. } else {
  10036. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10037. *userdataPtr = ptrRetVal;
  10038. }
  10039. return 1;
  10040. }
  10041. static int Polycode_SceneSound_applyClone(lua_State *L) {
  10042. luaL_checktype(L, 1, LUA_TUSERDATA);
  10043. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10044. luaL_checktype(L, 2, LUA_TUSERDATA);
  10045. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  10046. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10047. bool deepClone = lua_toboolean(L, 3) != 0;
  10048. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10049. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  10050. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  10051. return 0;
  10052. }
  10053. static int Polycode_SceneSound_isDirectionalSound(lua_State *L) {
  10054. luaL_checktype(L, 1, LUA_TUSERDATA);
  10055. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10056. lua_pushboolean(L, inst->isDirectionalSound());
  10057. return 1;
  10058. }
  10059. static int Polycode_SceneSound_setDirectionalSound(lua_State *L) {
  10060. luaL_checktype(L, 1, LUA_TUSERDATA);
  10061. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10062. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10063. bool val = lua_toboolean(L, 2) != 0;
  10064. inst->setDirectionalSound(val);
  10065. return 0;
  10066. }
  10067. static int Polycode_SceneSound_getSound(lua_State *L) {
  10068. luaL_checktype(L, 1, LUA_TUSERDATA);
  10069. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10070. PolyBase *ptrRetVal = (PolyBase*)inst->getSound();
  10071. if(ptrRetVal == NULL) {
  10072. lua_pushnil(L);
  10073. } else {
  10074. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10075. *userdataPtr = ptrRetVal;
  10076. }
  10077. return 1;
  10078. }
  10079. static int Polycode_SceneSound_setLoopOnLoad(lua_State *L) {
  10080. luaL_checktype(L, 1, LUA_TUSERDATA);
  10081. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10082. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10083. bool val = lua_toboolean(L, 2) != 0;
  10084. inst->setLoopOnLoad(val);
  10085. return 0;
  10086. }
  10087. static int Polycode_SceneSound_getLoopOnLoad(lua_State *L) {
  10088. luaL_checktype(L, 1, LUA_TUSERDATA);
  10089. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  10090. lua_pushboolean(L, inst->getLoopOnLoad());
  10091. return 1;
  10092. }
  10093. static int Polycode_SceneSoundListener(lua_State *L) {
  10094. SceneSoundListener *inst = new SceneSoundListener();
  10095. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10096. *userdataPtr = (PolyBase*)inst;
  10097. luaL_getmetatable(L, "Polycode.SceneSoundListener");
  10098. lua_setmetatable(L, -2);
  10099. return 1;
  10100. }
  10101. static int Polycode_SceneSoundListener_Update(lua_State *L) {
  10102. luaL_checktype(L, 1, LUA_TUSERDATA);
  10103. SceneSoundListener *inst = (SceneSoundListener*) *((PolyBase**)lua_touserdata(L, 1));
  10104. inst->Update();
  10105. return 0;
  10106. }
  10107. static int Polycode_SceneSprite(lua_State *L) {
  10108. luaL_checktype(L, 1, LUA_TUSERDATA);
  10109. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10110. SceneSprite *inst = new SceneSprite(spriteSet);
  10111. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10112. *userdataPtr = (PolyBase*)inst;
  10113. luaL_getmetatable(L, "Polycode.SceneSprite");
  10114. lua_setmetatable(L, -2);
  10115. return 1;
  10116. }
  10117. static int Polycode_SceneSprite_Clone(lua_State *L) {
  10118. luaL_checktype(L, 1, LUA_TUSERDATA);
  10119. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10120. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10121. bool deepClone = lua_toboolean(L, 2) != 0;
  10122. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10123. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  10124. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  10125. if(ptrRetVal == NULL) {
  10126. lua_pushnil(L);
  10127. } else {
  10128. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10129. *userdataPtr = ptrRetVal;
  10130. }
  10131. return 1;
  10132. }
  10133. static int Polycode_SceneSprite_applyClone(lua_State *L) {
  10134. luaL_checktype(L, 1, LUA_TUSERDATA);
  10135. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10136. luaL_checktype(L, 2, LUA_TUSERDATA);
  10137. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  10138. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10139. bool deepClone = lua_toboolean(L, 3) != 0;
  10140. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10141. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  10142. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  10143. return 0;
  10144. }
  10145. static int Polycode_SceneSprite_getSpriteSet(lua_State *L) {
  10146. luaL_checktype(L, 1, LUA_TUSERDATA);
  10147. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10148. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteSet();
  10149. if(ptrRetVal == NULL) {
  10150. lua_pushnil(L);
  10151. } else {
  10152. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10153. *userdataPtr = ptrRetVal;
  10154. }
  10155. return 1;
  10156. }
  10157. static int Polycode_SceneSprite_getCurrentSprite(lua_State *L) {
  10158. luaL_checktype(L, 1, LUA_TUSERDATA);
  10159. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10160. PolyBase *ptrRetVal = (PolyBase*)inst->getCurrentSprite();
  10161. if(ptrRetVal == NULL) {
  10162. lua_pushnil(L);
  10163. } else {
  10164. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10165. *userdataPtr = ptrRetVal;
  10166. }
  10167. return 1;
  10168. }
  10169. static int Polycode_SceneSprite_setSpriteSet(lua_State *L) {
  10170. luaL_checktype(L, 1, LUA_TUSERDATA);
  10171. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10172. luaL_checktype(L, 2, LUA_TUSERDATA);
  10173. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  10174. inst->setSpriteSet(spriteSet);
  10175. return 0;
  10176. }
  10177. static int Polycode_SceneSprite_setSpriteByName(lua_State *L) {
  10178. luaL_checktype(L, 1, LUA_TUSERDATA);
  10179. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10180. luaL_checktype(L, 2, LUA_TSTRING);
  10181. String spriteName = String(lua_tostring(L, 2));
  10182. inst->setSpriteByName(spriteName);
  10183. return 0;
  10184. }
  10185. static int Polycode_SceneSprite_setCurrentFrame(lua_State *L) {
  10186. luaL_checktype(L, 1, LUA_TUSERDATA);
  10187. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10188. luaL_checktype(L, 2, LUA_TNUMBER);
  10189. int frameIndex = lua_tointeger(L, 2);
  10190. inst->setCurrentFrame(frameIndex);
  10191. return 0;
  10192. }
  10193. static int Polycode_SceneSprite_getCurrentFrame(lua_State *L) {
  10194. luaL_checktype(L, 1, LUA_TUSERDATA);
  10195. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10196. lua_pushinteger(L, inst->getCurrentFrame());
  10197. return 1;
  10198. }
  10199. static int Polycode_SceneSprite_Update(lua_State *L) {
  10200. luaL_checktype(L, 1, LUA_TUSERDATA);
  10201. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10202. inst->Update();
  10203. return 0;
  10204. }
  10205. static int Polycode_SceneSprite_Render(lua_State *L) {
  10206. luaL_checktype(L, 1, LUA_TUSERDATA);
  10207. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10208. luaL_checktype(L, 2, LUA_TUSERDATA);
  10209. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10210. inst->Render(buffer);
  10211. return 0;
  10212. }
  10213. static int Polycode_SceneSprite_getSpriteBoundingBox(lua_State *L) {
  10214. luaL_checktype(L, 1, LUA_TUSERDATA);
  10215. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10216. Vector3 *retInst = new Vector3();
  10217. *retInst = inst->getSpriteBoundingBox();
  10218. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10219. luaL_getmetatable(L, "Polycode.Vector3");
  10220. lua_setmetatable(L, -2);
  10221. *userdataPtr = (PolyBase*)retInst;
  10222. return 1;
  10223. }
  10224. static int Polycode_SceneSprite_setPaused(lua_State *L) {
  10225. luaL_checktype(L, 1, LUA_TUSERDATA);
  10226. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10227. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10228. bool val = lua_toboolean(L, 2) != 0;
  10229. inst->setPaused(val);
  10230. return 0;
  10231. }
  10232. static int Polycode_SceneSprite_isPaused(lua_State *L) {
  10233. luaL_checktype(L, 1, LUA_TUSERDATA);
  10234. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10235. lua_pushboolean(L, inst->isPaused());
  10236. return 1;
  10237. }
  10238. static int Polycode_SceneSprite_setSprite(lua_State *L) {
  10239. luaL_checktype(L, 1, LUA_TUSERDATA);
  10240. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10241. luaL_checktype(L, 2, LUA_TUSERDATA);
  10242. Sprite* spriteEntry = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  10243. inst->setSprite(spriteEntry);
  10244. return 0;
  10245. }
  10246. static int Polycode_SceneSprite_setSpriteState(lua_State *L) {
  10247. luaL_checktype(L, 1, LUA_TUSERDATA);
  10248. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10249. luaL_checktype(L, 2, LUA_TUSERDATA);
  10250. SpriteState* spriteState = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  10251. luaL_checktype(L, 3, LUA_TNUMBER);
  10252. int startingFrame = lua_tointeger(L, 3);
  10253. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10254. bool playOnce = lua_toboolean(L, 4) != 0;
  10255. inst->setSpriteState(spriteState, startingFrame, playOnce);
  10256. return 0;
  10257. }
  10258. static int Polycode_SceneSprite_setSpriteStateByName(lua_State *L) {
  10259. luaL_checktype(L, 1, LUA_TUSERDATA);
  10260. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10261. luaL_checktype(L, 2, LUA_TSTRING);
  10262. String name = String(lua_tostring(L, 2));
  10263. luaL_checktype(L, 3, LUA_TNUMBER);
  10264. int startingFrame = lua_tointeger(L, 3);
  10265. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10266. bool playOnce = lua_toboolean(L, 4) != 0;
  10267. inst->setSpriteStateByName(name, startingFrame, playOnce);
  10268. return 0;
  10269. }
  10270. static int Polycode_SceneSprite_getCurrentSpriteState(lua_State *L) {
  10271. luaL_checktype(L, 1, LUA_TUSERDATA);
  10272. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10273. PolyBase *ptrRetVal = (PolyBase*)inst->getCurrentSpriteState();
  10274. if(ptrRetVal == NULL) {
  10275. lua_pushnil(L);
  10276. } else {
  10277. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10278. *userdataPtr = ptrRetVal;
  10279. }
  10280. return 1;
  10281. }
  10282. static int Polycode_SceneSprite_getStartOnRandomFrame(lua_State *L) {
  10283. luaL_checktype(L, 1, LUA_TUSERDATA);
  10284. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10285. lua_pushboolean(L, inst->getStartOnRandomFrame());
  10286. return 1;
  10287. }
  10288. static int Polycode_SceneSprite_setStartOnRandomFrame(lua_State *L) {
  10289. luaL_checktype(L, 1, LUA_TUSERDATA);
  10290. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  10291. luaL_checktype(L, 2, LUA_TBOOLEAN);
  10292. bool val = lua_toboolean(L, 2) != 0;
  10293. inst->setStartOnRandomFrame(val);
  10294. return 0;
  10295. }
  10296. static int Polycode_Sprite(lua_State *L) {
  10297. luaL_checktype(L, 1, LUA_TSTRING);
  10298. String name = String(lua_tostring(L, 1));
  10299. Sprite *inst = new Sprite(name);
  10300. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10301. *userdataPtr = (PolyBase*)inst;
  10302. luaL_getmetatable(L, "Polycode.Sprite");
  10303. lua_setmetatable(L, -2);
  10304. return 1;
  10305. }
  10306. static int Polycode_Sprite_getName(lua_State *L) {
  10307. luaL_checktype(L, 1, LUA_TUSERDATA);
  10308. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10309. lua_pushstring(L, inst->getName().c_str());
  10310. return 1;
  10311. }
  10312. static int Polycode_Sprite_setName(lua_State *L) {
  10313. luaL_checktype(L, 1, LUA_TUSERDATA);
  10314. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10315. luaL_checktype(L, 2, LUA_TSTRING);
  10316. String name = String(lua_tostring(L, 2));
  10317. inst->setName(name);
  10318. return 0;
  10319. }
  10320. static int Polycode_Sprite_addSpriteState(lua_State *L) {
  10321. luaL_checktype(L, 1, LUA_TUSERDATA);
  10322. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10323. luaL_checktype(L, 2, LUA_TUSERDATA);
  10324. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  10325. inst->addSpriteState(state);
  10326. return 0;
  10327. }
  10328. static int Polycode_Sprite_removeSpriteState(lua_State *L) {
  10329. luaL_checktype(L, 1, LUA_TUSERDATA);
  10330. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10331. luaL_checktype(L, 2, LUA_TUSERDATA);
  10332. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  10333. inst->removeSpriteState(state);
  10334. return 0;
  10335. }
  10336. static int Polycode_Sprite_getNumStates(lua_State *L) {
  10337. luaL_checktype(L, 1, LUA_TUSERDATA);
  10338. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10339. lua_pushinteger(L, inst->getNumStates());
  10340. return 1;
  10341. }
  10342. static int Polycode_Sprite_getState(lua_State *L) {
  10343. luaL_checktype(L, 1, LUA_TUSERDATA);
  10344. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10345. luaL_checktype(L, 2, LUA_TNUMBER);
  10346. int index = lua_tointeger(L, 2);
  10347. PolyBase *ptrRetVal = (PolyBase*)inst->getState(index);
  10348. if(ptrRetVal == NULL) {
  10349. lua_pushnil(L);
  10350. } else {
  10351. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10352. *userdataPtr = ptrRetVal;
  10353. }
  10354. return 1;
  10355. }
  10356. static int Polycode_Sprite_getStateByName(lua_State *L) {
  10357. luaL_checktype(L, 1, LUA_TUSERDATA);
  10358. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10359. luaL_checktype(L, 2, LUA_TSTRING);
  10360. String name = String(lua_tostring(L, 2));
  10361. PolyBase *ptrRetVal = (PolyBase*)inst->getStateByName(name);
  10362. if(ptrRetVal == NULL) {
  10363. lua_pushnil(L);
  10364. } else {
  10365. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10366. *userdataPtr = ptrRetVal;
  10367. }
  10368. return 1;
  10369. }
  10370. static int Polycode_Sprite_setParentSpritSet(lua_State *L) {
  10371. luaL_checktype(L, 1, LUA_TUSERDATA);
  10372. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10373. luaL_checktype(L, 2, LUA_TUSERDATA);
  10374. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  10375. inst->setParentSpritSet(spriteSet);
  10376. return 0;
  10377. }
  10378. static int Polycode_Sprite_getParentSpriteSet(lua_State *L) {
  10379. luaL_checktype(L, 1, LUA_TUSERDATA);
  10380. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  10381. PolyBase *ptrRetVal = (PolyBase*)inst->getParentSpriteSet();
  10382. if(ptrRetVal == NULL) {
  10383. lua_pushnil(L);
  10384. } else {
  10385. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10386. *userdataPtr = ptrRetVal;
  10387. }
  10388. return 1;
  10389. }
  10390. static int Polycode_SpriteSet(lua_State *L) {
  10391. luaL_checktype(L, 1, LUA_TSTRING);
  10392. String fileName = String(lua_tostring(L, 1));
  10393. luaL_checktype(L, 2, LUA_TUSERDATA);
  10394. ResourcePool* parentPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  10395. SpriteSet *inst = new SpriteSet(fileName, parentPool);
  10396. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10397. *userdataPtr = (PolyBase*)inst;
  10398. luaL_getmetatable(L, "Polycode.SpriteSet");
  10399. lua_setmetatable(L, -2);
  10400. return 1;
  10401. }
  10402. static int Polycode_SpriteSet_setTexture(lua_State *L) {
  10403. luaL_checktype(L, 1, LUA_TUSERDATA);
  10404. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10405. luaL_checktype(L, 2, LUA_TUSERDATA);
  10406. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  10407. inst->setTexture(texture);
  10408. return 0;
  10409. }
  10410. static int Polycode_SpriteSet_getTexture(lua_State *L) {
  10411. luaL_checktype(L, 1, LUA_TUSERDATA);
  10412. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10413. PolyBase *ptrRetVal = (PolyBase*)inst->getTexture();
  10414. if(ptrRetVal == NULL) {
  10415. lua_pushnil(L);
  10416. } else {
  10417. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10418. *userdataPtr = ptrRetVal;
  10419. }
  10420. return 1;
  10421. }
  10422. static int Polycode_SpriteSet_loadTexture(lua_State *L) {
  10423. luaL_checktype(L, 1, LUA_TUSERDATA);
  10424. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10425. luaL_checktype(L, 2, LUA_TSTRING);
  10426. String imageFileName = String(lua_tostring(L, 2));
  10427. PolyBase *ptrRetVal = (PolyBase*)inst->loadTexture(imageFileName);
  10428. if(ptrRetVal == NULL) {
  10429. lua_pushnil(L);
  10430. } else {
  10431. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10432. *userdataPtr = ptrRetVal;
  10433. }
  10434. return 1;
  10435. }
  10436. static int Polycode_SpriteSet_addSpriteEntry(lua_State *L) {
  10437. luaL_checktype(L, 1, LUA_TUSERDATA);
  10438. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10439. luaL_checktype(L, 2, LUA_TUSERDATA);
  10440. Sprite* newEntry = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  10441. inst->addSpriteEntry(newEntry);
  10442. return 0;
  10443. }
  10444. static int Polycode_SpriteSet_getNumSpriteEntries(lua_State *L) {
  10445. luaL_checktype(L, 1, LUA_TUSERDATA);
  10446. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10447. lua_pushinteger(L, inst->getNumSpriteEntries());
  10448. return 1;
  10449. }
  10450. static int Polycode_SpriteSet_getSpriteEntry(lua_State *L) {
  10451. luaL_checktype(L, 1, LUA_TUSERDATA);
  10452. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10453. luaL_checktype(L, 2, LUA_TNUMBER);
  10454. int index = lua_tointeger(L, 2);
  10455. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteEntry(index);
  10456. if(ptrRetVal == NULL) {
  10457. lua_pushnil(L);
  10458. } else {
  10459. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10460. *userdataPtr = ptrRetVal;
  10461. }
  10462. return 1;
  10463. }
  10464. static int Polycode_SpriteSet_removeSprite(lua_State *L) {
  10465. luaL_checktype(L, 1, LUA_TUSERDATA);
  10466. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10467. luaL_checktype(L, 2, LUA_TUSERDATA);
  10468. Sprite* sprite = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  10469. inst->removeSprite(sprite);
  10470. return 0;
  10471. }
  10472. static int Polycode_SpriteSet_loadSpriteSet(lua_State *L) {
  10473. luaL_checktype(L, 1, LUA_TUSERDATA);
  10474. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10475. luaL_checktype(L, 2, LUA_TSTRING);
  10476. String fileName = String(lua_tostring(L, 2));
  10477. inst->loadSpriteSet(fileName);
  10478. return 0;
  10479. }
  10480. static int Polycode_SpriteSet_addSpriteFrame(lua_State *L) {
  10481. luaL_checktype(L, 1, LUA_TUSERDATA);
  10482. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10483. luaL_checktype(L, 2, LUA_TUSERDATA);
  10484. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  10485. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10486. bool assignID = lua_toboolean(L, 3) != 0;
  10487. inst->addSpriteFrame(frame, assignID);
  10488. return 0;
  10489. }
  10490. static int Polycode_SpriteSet_getNumFrames(lua_State *L) {
  10491. luaL_checktype(L, 1, LUA_TUSERDATA);
  10492. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10493. lua_pushinteger(L, inst->getNumFrames());
  10494. return 1;
  10495. }
  10496. static int Polycode_SpriteSet_getSpriteFrame(lua_State *L) {
  10497. luaL_checktype(L, 1, LUA_TUSERDATA);
  10498. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10499. luaL_checktype(L, 2, LUA_TNUMBER);
  10500. int index = lua_tointeger(L, 2);
  10501. SpriteFrame *retInst = new SpriteFrame();
  10502. *retInst = inst->getSpriteFrame(index);
  10503. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10504. luaL_getmetatable(L, "Polycode.SpriteFrame");
  10505. lua_setmetatable(L, -2);
  10506. *userdataPtr = (PolyBase*)retInst;
  10507. return 1;
  10508. }
  10509. static int Polycode_SpriteSet_getSpriteFrameByID(lua_State *L) {
  10510. luaL_checktype(L, 1, LUA_TUSERDATA);
  10511. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10512. luaL_checktype(L, 2, LUA_TNUMBER);
  10513. int frameID = lua_tointeger(L, 2);
  10514. SpriteFrame *retInst = new SpriteFrame();
  10515. *retInst = inst->getSpriteFrameByID(frameID);
  10516. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10517. luaL_getmetatable(L, "Polycode.SpriteFrame");
  10518. lua_setmetatable(L, -2);
  10519. *userdataPtr = (PolyBase*)retInst;
  10520. return 1;
  10521. }
  10522. static int Polycode_SpriteSet_removeFrameByID(lua_State *L) {
  10523. luaL_checktype(L, 1, LUA_TUSERDATA);
  10524. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10525. luaL_checktype(L, 2, LUA_TNUMBER);
  10526. int frameID = lua_tointeger(L, 2);
  10527. inst->removeFrameByID(frameID);
  10528. return 0;
  10529. }
  10530. static int Polycode_SpriteSet_setSpriteFrame(lua_State *L) {
  10531. luaL_checktype(L, 1, LUA_TUSERDATA);
  10532. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10533. luaL_checktype(L, 2, LUA_TUSERDATA);
  10534. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  10535. inst->setSpriteFrame(frame);
  10536. return 0;
  10537. }
  10538. static int Polycode_SpriteSet_clearFrames(lua_State *L) {
  10539. luaL_checktype(L, 1, LUA_TUSERDATA);
  10540. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10541. inst->clearFrames();
  10542. return 0;
  10543. }
  10544. static int Polycode_SpriteSet_createGridFrames(lua_State *L) {
  10545. luaL_checktype(L, 1, LUA_TUSERDATA);
  10546. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10547. luaL_checktype(L, 2, LUA_TNUMBER);
  10548. int xCount = lua_tointeger(L, 2);
  10549. luaL_checktype(L, 3, LUA_TNUMBER);
  10550. int yCount = lua_tointeger(L, 3);
  10551. luaL_checktype(L, 4, LUA_TUSERDATA);
  10552. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 4));
  10553. inst->createGridFrames(xCount, yCount, defaultAnchor);
  10554. return 0;
  10555. }
  10556. static int Polycode_SpriteSet_createFramesFromIslands(lua_State *L) {
  10557. luaL_checktype(L, 1, LUA_TUSERDATA);
  10558. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10559. luaL_checktype(L, 2, LUA_TNUMBER);
  10560. int minDistance = lua_tointeger(L, 2);
  10561. luaL_checktype(L, 3, LUA_TUSERDATA);
  10562. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  10563. inst->createFramesFromIslands(minDistance, defaultAnchor);
  10564. return 0;
  10565. }
  10566. static int Polycode_SpriteSet_getSpriteByName(lua_State *L) {
  10567. luaL_checktype(L, 1, LUA_TUSERDATA);
  10568. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10569. luaL_checktype(L, 2, LUA_TSTRING);
  10570. String spriteName = String(lua_tostring(L, 2));
  10571. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteByName(spriteName);
  10572. if(ptrRetVal == NULL) {
  10573. lua_pushnil(L);
  10574. } else {
  10575. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10576. *userdataPtr = ptrRetVal;
  10577. }
  10578. return 1;
  10579. }
  10580. static int Polycode_SpriteState(lua_State *L) {
  10581. luaL_checktype(L, 1, LUA_TUSERDATA);
  10582. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  10583. luaL_checktype(L, 2, LUA_TSTRING);
  10584. String name = String(lua_tostring(L, 2));
  10585. SpriteState *inst = new SpriteState(spriteSet, name);
  10586. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10587. *userdataPtr = (PolyBase*)inst;
  10588. luaL_getmetatable(L, "Polycode.SpriteState");
  10589. lua_setmetatable(L, -2);
  10590. return 1;
  10591. }
  10592. static int Polycode_SpriteState_setName(lua_State *L) {
  10593. luaL_checktype(L, 1, LUA_TUSERDATA);
  10594. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10595. luaL_checktype(L, 2, LUA_TSTRING);
  10596. String name = String(lua_tostring(L, 2));
  10597. inst->setName(name);
  10598. return 0;
  10599. }
  10600. static int Polycode_SpriteState_getName(lua_State *L) {
  10601. luaL_checktype(L, 1, LUA_TUSERDATA);
  10602. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10603. lua_pushstring(L, inst->getName().c_str());
  10604. return 1;
  10605. }
  10606. static int Polycode_SpriteState_getNumFrameIDs(lua_State *L) {
  10607. luaL_checktype(L, 1, LUA_TUSERDATA);
  10608. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10609. lua_pushinteger(L, inst->getNumFrameIDs());
  10610. return 1;
  10611. }
  10612. static int Polycode_SpriteState_getFrameIDAtIndex(lua_State *L) {
  10613. luaL_checktype(L, 1, LUA_TUSERDATA);
  10614. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10615. luaL_checktype(L, 2, LUA_TNUMBER);
  10616. int index = lua_tointeger(L, 2);
  10617. lua_pushinteger(L, inst->getFrameIDAtIndex(index));
  10618. return 1;
  10619. }
  10620. static int Polycode_SpriteState_getMeshForFrameIndex(lua_State *L) {
  10621. luaL_checktype(L, 1, LUA_TUSERDATA);
  10622. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10623. luaL_checktype(L, 2, LUA_TNUMBER);
  10624. int index = lua_tointeger(L, 2);
  10625. PolyBase *ptrRetVal = (PolyBase*)inst->getMeshForFrameIndex(index);
  10626. if(ptrRetVal == NULL) {
  10627. lua_pushnil(L);
  10628. } else {
  10629. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10630. *userdataPtr = ptrRetVal;
  10631. }
  10632. return 1;
  10633. }
  10634. static int Polycode_SpriteState_insertFrame(lua_State *L) {
  10635. luaL_checktype(L, 1, LUA_TUSERDATA);
  10636. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10637. luaL_checktype(L, 2, LUA_TNUMBER);
  10638. int index = lua_tointeger(L, 2);
  10639. luaL_checktype(L, 3, LUA_TNUMBER);
  10640. int frameID = lua_tointeger(L, 3);
  10641. inst->insertFrame(index, frameID);
  10642. return 0;
  10643. }
  10644. static int Polycode_SpriteState_removeFrameByIndex(lua_State *L) {
  10645. luaL_checktype(L, 1, LUA_TUSERDATA);
  10646. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10647. luaL_checktype(L, 2, LUA_TNUMBER);
  10648. int frameIndex = lua_tointeger(L, 2);
  10649. inst->removeFrameByIndex(frameIndex);
  10650. return 0;
  10651. }
  10652. static int Polycode_SpriteState_clearFrames(lua_State *L) {
  10653. luaL_checktype(L, 1, LUA_TUSERDATA);
  10654. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10655. inst->clearFrames();
  10656. return 0;
  10657. }
  10658. static int Polycode_SpriteState_setPixelsPerUnit(lua_State *L) {
  10659. luaL_checktype(L, 1, LUA_TUSERDATA);
  10660. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10661. luaL_checktype(L, 2, LUA_TNUMBER);
  10662. Number ppu = lua_tonumber(L, 2);
  10663. inst->setPixelsPerUnit(ppu);
  10664. return 0;
  10665. }
  10666. static int Polycode_SpriteState_getPixelsPerUnit(lua_State *L) {
  10667. luaL_checktype(L, 1, LUA_TUSERDATA);
  10668. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10669. lua_pushnumber(L, inst->getPixelsPerUnit());
  10670. return 1;
  10671. }
  10672. static int Polycode_SpriteState_rebuildStateMeshes(lua_State *L) {
  10673. luaL_checktype(L, 1, LUA_TUSERDATA);
  10674. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10675. inst->rebuildStateMeshes();
  10676. return 0;
  10677. }
  10678. static int Polycode_SpriteState_setStateFPS(lua_State *L) {
  10679. luaL_checktype(L, 1, LUA_TUSERDATA);
  10680. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10681. luaL_checktype(L, 2, LUA_TNUMBER);
  10682. Number fps = lua_tonumber(L, 2);
  10683. inst->setStateFPS(fps);
  10684. return 0;
  10685. }
  10686. static int Polycode_SpriteState_getStateFPS(lua_State *L) {
  10687. luaL_checktype(L, 1, LUA_TUSERDATA);
  10688. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10689. lua_pushnumber(L, inst->getStateFPS());
  10690. return 1;
  10691. }
  10692. static int Polycode_SpriteState_getLargestFrameBoundingBox(lua_State *L) {
  10693. luaL_checktype(L, 1, LUA_TUSERDATA);
  10694. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10695. Vector3 *retInst = new Vector3();
  10696. *retInst = inst->getLargestFrameBoundingBox();
  10697. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10698. luaL_getmetatable(L, "Polycode.Vector3");
  10699. lua_setmetatable(L, -2);
  10700. *userdataPtr = (PolyBase*)retInst;
  10701. return 1;
  10702. }
  10703. static int Polycode_SpriteState_setBoundingBox(lua_State *L) {
  10704. luaL_checktype(L, 1, LUA_TUSERDATA);
  10705. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10706. luaL_checktype(L, 2, LUA_TUSERDATA);
  10707. Vector2 boundingBox = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  10708. inst->setBoundingBox(boundingBox);
  10709. return 0;
  10710. }
  10711. static int Polycode_SpriteState_getBoundingBox(lua_State *L) {
  10712. luaL_checktype(L, 1, LUA_TUSERDATA);
  10713. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10714. Vector2 *retInst = new Vector2();
  10715. *retInst = inst->getBoundingBox();
  10716. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10717. luaL_getmetatable(L, "Polycode.Vector2");
  10718. lua_setmetatable(L, -2);
  10719. *userdataPtr = (PolyBase*)retInst;
  10720. return 1;
  10721. }
  10722. static int Polycode_SpriteState_getSpriteOffset(lua_State *L) {
  10723. luaL_checktype(L, 1, LUA_TUSERDATA);
  10724. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10725. Vector2 *retInst = new Vector2();
  10726. *retInst = inst->getSpriteOffset();
  10727. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10728. luaL_getmetatable(L, "Polycode.Vector2");
  10729. lua_setmetatable(L, -2);
  10730. *userdataPtr = (PolyBase*)retInst;
  10731. return 1;
  10732. }
  10733. static int Polycode_SpriteState_setSpriteOffset(lua_State *L) {
  10734. luaL_checktype(L, 1, LUA_TUSERDATA);
  10735. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  10736. luaL_checktype(L, 2, LUA_TUSERDATA);
  10737. Vector2 offset = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  10738. inst->setSpriteOffset(offset);
  10739. return 0;
  10740. }
  10741. static int Polycode_ProgramParam(lua_State *L) {
  10742. ProgramParam *inst = new ProgramParam();
  10743. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10744. *userdataPtr = (PolyBase*)inst;
  10745. luaL_getmetatable(L, "Polycode.ProgramParam");
  10746. lua_setmetatable(L, -2);
  10747. return 1;
  10748. }
  10749. static int Polycode_ProgramParam_createParamData(lua_State *L) {
  10750. luaL_checktype(L, 1, LUA_TUSERDATA);
  10751. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  10752. luaL_checktype(L, 2, LUA_TNUMBER);
  10753. int type = lua_tointeger(L, 2);
  10754. PolyBase *ptrRetVal = (PolyBase*)inst->createParamData(type);
  10755. if(ptrRetVal == NULL) {
  10756. lua_pushnil(L);
  10757. } else {
  10758. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10759. *userdataPtr = ptrRetVal;
  10760. }
  10761. return 1;
  10762. }
  10763. static int Polycode_ProgramAttribute(lua_State *L) {
  10764. ProgramAttribute *inst = new ProgramAttribute();
  10765. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10766. *userdataPtr = (PolyBase*)inst;
  10767. luaL_getmetatable(L, "Polycode.ProgramAttribute");
  10768. lua_setmetatable(L, -2);
  10769. return 1;
  10770. }
  10771. static int Polycode_ShaderRenderTarget(lua_State *L) {
  10772. ShaderRenderTarget *inst = new ShaderRenderTarget();
  10773. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10774. *userdataPtr = (PolyBase*)inst;
  10775. luaL_getmetatable(L, "Polycode.ShaderRenderTarget");
  10776. lua_setmetatable(L, -2);
  10777. return 1;
  10778. }
  10779. static int Polycode_Shader_getType(lua_State *L) {
  10780. luaL_checktype(L, 1, LUA_TUSERDATA);
  10781. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10782. lua_pushinteger(L, inst->getType());
  10783. return 1;
  10784. }
  10785. static int Polycode_Shader_setName(lua_State *L) {
  10786. luaL_checktype(L, 1, LUA_TUSERDATA);
  10787. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10788. luaL_checktype(L, 2, LUA_TSTRING);
  10789. String name = String(lua_tostring(L, 2));
  10790. inst->setName(name);
  10791. return 0;
  10792. }
  10793. static int Polycode_Shader_getName(lua_State *L) {
  10794. luaL_checktype(L, 1, LUA_TUSERDATA);
  10795. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10796. lua_pushstring(L, inst->getName().c_str());
  10797. return 1;
  10798. }
  10799. static int Polycode_Shader_getParamPointer(lua_State *L) {
  10800. luaL_checktype(L, 1, LUA_TUSERDATA);
  10801. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10802. luaL_checktype(L, 2, LUA_TSTRING);
  10803. String name = String(lua_tostring(L, 2));
  10804. PolyBase *ptrRetVal = (PolyBase*)inst->getParamPointer(name);
  10805. if(ptrRetVal == NULL) {
  10806. lua_pushnil(L);
  10807. } else {
  10808. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10809. *userdataPtr = ptrRetVal;
  10810. }
  10811. return 1;
  10812. }
  10813. static int Polycode_Shader_getAttribPointer(lua_State *L) {
  10814. luaL_checktype(L, 1, LUA_TUSERDATA);
  10815. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10816. luaL_checktype(L, 2, LUA_TSTRING);
  10817. String name = String(lua_tostring(L, 2));
  10818. PolyBase *ptrRetVal = (PolyBase*)inst->getAttribPointer(name);
  10819. if(ptrRetVal == NULL) {
  10820. lua_pushnil(L);
  10821. } else {
  10822. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10823. *userdataPtr = ptrRetVal;
  10824. }
  10825. return 1;
  10826. }
  10827. static int Polycode_Shader_reload(lua_State *L) {
  10828. luaL_checktype(L, 1, LUA_TUSERDATA);
  10829. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10830. inst->reload();
  10831. return 0;
  10832. }
  10833. static int Polycode_Shader_getExpectedParamType(lua_State *L) {
  10834. luaL_checktype(L, 1, LUA_TUSERDATA);
  10835. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10836. luaL_checktype(L, 2, LUA_TSTRING);
  10837. String name = String(lua_tostring(L, 2));
  10838. lua_pushinteger(L, inst->getExpectedParamType(name));
  10839. return 1;
  10840. }
  10841. static int Polycode_Shader_setVertexProgram(lua_State *L) {
  10842. luaL_checktype(L, 1, LUA_TUSERDATA);
  10843. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10844. luaL_checktype(L, 2, LUA_TUSERDATA);
  10845. ShaderProgram* vp = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  10846. inst->setVertexProgram(vp);
  10847. return 0;
  10848. }
  10849. static int Polycode_Shader_setFragmentProgram(lua_State *L) {
  10850. luaL_checktype(L, 1, LUA_TUSERDATA);
  10851. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  10852. luaL_checktype(L, 2, LUA_TUSERDATA);
  10853. ShaderProgram* fp = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  10854. inst->setFragmentProgram(fp);
  10855. return 0;
  10856. }
  10857. static int Polycode_LocalShaderParam(lua_State *L) {
  10858. LocalShaderParam *inst = new LocalShaderParam();
  10859. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10860. *userdataPtr = (PolyBase*)inst;
  10861. luaL_getmetatable(L, "Polycode.LocalShaderParam");
  10862. lua_setmetatable(L, -2);
  10863. return 1;
  10864. }
  10865. static int Polycode_LocalShaderParam_Copy(lua_State *L) {
  10866. luaL_checktype(L, 1, LUA_TUSERDATA);
  10867. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10868. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  10869. if(ptrRetVal == NULL) {
  10870. lua_pushnil(L);
  10871. } else {
  10872. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10873. *userdataPtr = ptrRetVal;
  10874. }
  10875. return 1;
  10876. }
  10877. static int Polycode_LocalShaderParam_getNumber(lua_State *L) {
  10878. luaL_checktype(L, 1, LUA_TUSERDATA);
  10879. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10880. lua_pushnumber(L, inst->getNumber());
  10881. return 1;
  10882. }
  10883. static int Polycode_LocalShaderParam_getVector2(lua_State *L) {
  10884. luaL_checktype(L, 1, LUA_TUSERDATA);
  10885. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10886. Vector2 *retInst = new Vector2();
  10887. *retInst = inst->getVector2();
  10888. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10889. luaL_getmetatable(L, "Polycode.Vector2");
  10890. lua_setmetatable(L, -2);
  10891. *userdataPtr = (PolyBase*)retInst;
  10892. return 1;
  10893. }
  10894. static int Polycode_LocalShaderParam_getVector3(lua_State *L) {
  10895. luaL_checktype(L, 1, LUA_TUSERDATA);
  10896. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10897. Vector3 *retInst = new Vector3();
  10898. *retInst = inst->getVector3();
  10899. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10900. luaL_getmetatable(L, "Polycode.Vector3");
  10901. lua_setmetatable(L, -2);
  10902. *userdataPtr = (PolyBase*)retInst;
  10903. return 1;
  10904. }
  10905. static int Polycode_LocalShaderParam_getMatrix4(lua_State *L) {
  10906. luaL_checktype(L, 1, LUA_TUSERDATA);
  10907. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10908. Matrix4 *retInst = new Matrix4();
  10909. *retInst = inst->getMatrix4();
  10910. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10911. luaL_getmetatable(L, "Polycode.Matrix4");
  10912. lua_setmetatable(L, -2);
  10913. *userdataPtr = (PolyBase*)retInst;
  10914. return 1;
  10915. }
  10916. static int Polycode_LocalShaderParam_getColor(lua_State *L) {
  10917. luaL_checktype(L, 1, LUA_TUSERDATA);
  10918. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10919. Color *retInst = new Color();
  10920. *retInst = inst->getColor();
  10921. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10922. luaL_getmetatable(L, "Polycode.Color");
  10923. lua_setmetatable(L, -2);
  10924. *userdataPtr = (PolyBase*)retInst;
  10925. return 1;
  10926. }
  10927. static int Polycode_LocalShaderParam_setNumber(lua_State *L) {
  10928. luaL_checktype(L, 1, LUA_TUSERDATA);
  10929. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10930. luaL_checktype(L, 2, LUA_TNUMBER);
  10931. Number x = lua_tonumber(L, 2);
  10932. inst->setNumber(x);
  10933. return 0;
  10934. }
  10935. static int Polycode_LocalShaderParam_setVector2(lua_State *L) {
  10936. luaL_checktype(L, 1, LUA_TUSERDATA);
  10937. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10938. luaL_checktype(L, 2, LUA_TUSERDATA);
  10939. Vector2 x = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  10940. inst->setVector2(x);
  10941. return 0;
  10942. }
  10943. static int Polycode_LocalShaderParam_setVector3(lua_State *L) {
  10944. luaL_checktype(L, 1, LUA_TUSERDATA);
  10945. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10946. luaL_checktype(L, 2, LUA_TUSERDATA);
  10947. Vector3 x = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10948. inst->setVector3(x);
  10949. return 0;
  10950. }
  10951. static int Polycode_LocalShaderParam_setMatrix4(lua_State *L) {
  10952. luaL_checktype(L, 1, LUA_TUSERDATA);
  10953. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10954. luaL_checktype(L, 2, LUA_TUSERDATA);
  10955. Matrix4 x = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  10956. inst->setMatrix4(x);
  10957. return 0;
  10958. }
  10959. static int Polycode_LocalShaderParam_setColor(lua_State *L) {
  10960. luaL_checktype(L, 1, LUA_TUSERDATA);
  10961. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10962. luaL_checktype(L, 2, LUA_TUSERDATA);
  10963. Color x = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  10964. inst->setColor(x);
  10965. return 0;
  10966. }
  10967. static int Polycode_LocalShaderParam_setTexture(lua_State *L) {
  10968. luaL_checktype(L, 1, LUA_TUSERDATA);
  10969. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10970. luaL_checktype(L, 2, LUA_TUSERDATA);
  10971. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  10972. inst->setTexture(texture);
  10973. return 0;
  10974. }
  10975. static int Polycode_LocalShaderParam_getTexture(lua_State *L) {
  10976. luaL_checktype(L, 1, LUA_TUSERDATA);
  10977. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10978. PolyBase *ptrRetVal = (PolyBase*)inst->getTexture();
  10979. if(ptrRetVal == NULL) {
  10980. lua_pushnil(L);
  10981. } else {
  10982. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10983. *userdataPtr = ptrRetVal;
  10984. }
  10985. return 1;
  10986. }
  10987. static int Polycode_LocalShaderParam_setCubemap(lua_State *L) {
  10988. luaL_checktype(L, 1, LUA_TUSERDATA);
  10989. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10990. luaL_checktype(L, 2, LUA_TUSERDATA);
  10991. Cubemap* cubemap = (Cubemap*) *((PolyBase**)lua_touserdata(L, 2));
  10992. inst->setCubemap(cubemap);
  10993. return 0;
  10994. }
  10995. static int Polycode_LocalShaderParam_getCubemap(lua_State *L) {
  10996. luaL_checktype(L, 1, LUA_TUSERDATA);
  10997. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  10998. PolyBase *ptrRetVal = (PolyBase*)inst->getCubemap();
  10999. if(ptrRetVal == NULL) {
  11000. lua_pushnil(L);
  11001. } else {
  11002. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11003. *userdataPtr = ptrRetVal;
  11004. }
  11005. return 1;
  11006. }
  11007. static int Polycode_LocalShaderParam_setParamValueFromString(lua_State *L) {
  11008. luaL_checktype(L, 1, LUA_TUSERDATA);
  11009. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  11010. luaL_checktype(L, 2, LUA_TNUMBER);
  11011. int type = lua_tointeger(L, 2);
  11012. luaL_checktype(L, 3, LUA_TSTRING);
  11013. String pvalue = String(lua_tostring(L, 3));
  11014. inst->setParamValueFromString(type, pvalue);
  11015. return 0;
  11016. }
  11017. static int Polycode_ShaderProgram(lua_State *L) {
  11018. luaL_checktype(L, 1, LUA_TSTRING);
  11019. String fileName = String(lua_tostring(L, 1));
  11020. ShaderProgram *inst = new ShaderProgram(fileName);
  11021. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11022. *userdataPtr = (PolyBase*)inst;
  11023. luaL_getmetatable(L, "Polycode.ShaderProgram");
  11024. lua_setmetatable(L, -2);
  11025. return 1;
  11026. }
  11027. static int Polycode_ShaderProgram_reloadProgram(lua_State *L) {
  11028. luaL_checktype(L, 1, LUA_TUSERDATA);
  11029. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  11030. inst->reloadProgram();
  11031. return 0;
  11032. }
  11033. static int Polycode_ShaderProgram_reloadResource(lua_State *L) {
  11034. luaL_checktype(L, 1, LUA_TUSERDATA);
  11035. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  11036. inst->reloadResource();
  11037. return 0;
  11038. }
  11039. static int Polycode_AttributeBinding(lua_State *L) {
  11040. AttributeBinding *inst = new AttributeBinding();
  11041. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11042. *userdataPtr = (PolyBase*)inst;
  11043. luaL_getmetatable(L, "Polycode.AttributeBinding");
  11044. lua_setmetatable(L, -2);
  11045. return 1;
  11046. }
  11047. static int Polycode_ShaderBinding(lua_State *L) {
  11048. ShaderBinding *inst = new ShaderBinding();
  11049. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11050. *userdataPtr = (PolyBase*)inst;
  11051. luaL_getmetatable(L, "Polycode.ShaderBinding");
  11052. lua_setmetatable(L, -2);
  11053. return 1;
  11054. }
  11055. static int Polycode_ShaderBinding_copyTo(lua_State *L) {
  11056. luaL_checktype(L, 1, LUA_TUSERDATA);
  11057. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11058. luaL_checktype(L, 2, LUA_TUSERDATA);
  11059. ShaderBinding* targetBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 2));
  11060. inst->copyTo(targetBinding);
  11061. return 0;
  11062. }
  11063. static int Polycode_ShaderBinding_addParam(lua_State *L) {
  11064. luaL_checktype(L, 1, LUA_TUSERDATA);
  11065. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11066. luaL_checktype(L, 2, LUA_TNUMBER);
  11067. int type = lua_tointeger(L, 2);
  11068. luaL_checktype(L, 3, LUA_TSTRING);
  11069. String name = String(lua_tostring(L, 3));
  11070. PolyBase *ptrRetVal = (PolyBase*)inst->addParam(type, name);
  11071. if(ptrRetVal == NULL) {
  11072. lua_pushnil(L);
  11073. } else {
  11074. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11075. *userdataPtr = ptrRetVal;
  11076. }
  11077. return 1;
  11078. }
  11079. static int Polycode_ShaderBinding_addParamPointer(lua_State *L) {
  11080. luaL_checktype(L, 1, LUA_TUSERDATA);
  11081. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11082. luaL_checktype(L, 2, LUA_TNUMBER);
  11083. int type = lua_tointeger(L, 2);
  11084. luaL_checktype(L, 3, LUA_TSTRING);
  11085. String name = String(lua_tostring(L, 3));
  11086. luaL_checktype(L, 4, LUA_TUSERDATA);
  11087. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 4));
  11088. PolyBase *ptrRetVal = (PolyBase*)inst->addParamPointer(type, name, ptr);
  11089. if(ptrRetVal == NULL) {
  11090. lua_pushnil(L);
  11091. } else {
  11092. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11093. *userdataPtr = ptrRetVal;
  11094. }
  11095. return 1;
  11096. }
  11097. static int Polycode_ShaderBinding_getNumLocalParams(lua_State *L) {
  11098. luaL_checktype(L, 1, LUA_TUSERDATA);
  11099. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11100. lua_pushinteger(L, inst->getNumLocalParams());
  11101. return 1;
  11102. }
  11103. static int Polycode_ShaderBinding_getLocalParam(lua_State *L) {
  11104. luaL_checktype(L, 1, LUA_TUSERDATA);
  11105. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11106. luaL_checktype(L, 2, LUA_TNUMBER);
  11107. int index = lua_tointeger(L, 2);
  11108. PolyBase *ptrRetVal = (PolyBase*)inst->getLocalParam(index);
  11109. if(ptrRetVal == NULL) {
  11110. lua_pushnil(L);
  11111. } else {
  11112. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11113. *userdataPtr = ptrRetVal;
  11114. }
  11115. return 1;
  11116. }
  11117. static int Polycode_ShaderBinding_getLocalParamByName(lua_State *L) {
  11118. luaL_checktype(L, 1, LUA_TUSERDATA);
  11119. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11120. luaL_checktype(L, 2, LUA_TSTRING);
  11121. String name = String(lua_tostring(L, 2));
  11122. PolyBase *ptrRetVal = (PolyBase*)inst->getLocalParamByName(name);
  11123. if(ptrRetVal == NULL) {
  11124. lua_pushnil(L);
  11125. } else {
  11126. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11127. *userdataPtr = ptrRetVal;
  11128. }
  11129. return 1;
  11130. }
  11131. static int Polycode_ShaderBinding_removeParam(lua_State *L) {
  11132. luaL_checktype(L, 1, LUA_TUSERDATA);
  11133. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11134. luaL_checktype(L, 2, LUA_TSTRING);
  11135. String name = String(lua_tostring(L, 2));
  11136. inst->removeParam(name);
  11137. return 0;
  11138. }
  11139. static int Polycode_ShaderBinding_loadTextureForParam(lua_State *L) {
  11140. luaL_checktype(L, 1, LUA_TUSERDATA);
  11141. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11142. luaL_checktype(L, 2, LUA_TSTRING);
  11143. String paramName = String(lua_tostring(L, 2));
  11144. luaL_checktype(L, 3, LUA_TSTRING);
  11145. String fileName = String(lua_tostring(L, 3));
  11146. PolyBase *ptrRetVal = (PolyBase*)inst->loadTextureForParam(paramName, fileName);
  11147. if(ptrRetVal == NULL) {
  11148. lua_pushnil(L);
  11149. } else {
  11150. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11151. *userdataPtr = ptrRetVal;
  11152. }
  11153. return 1;
  11154. }
  11155. static int Polycode_ShaderBinding_setTextureForParam(lua_State *L) {
  11156. luaL_checktype(L, 1, LUA_TUSERDATA);
  11157. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11158. luaL_checktype(L, 2, LUA_TSTRING);
  11159. String paramName = String(lua_tostring(L, 2));
  11160. luaL_checktype(L, 3, LUA_TUSERDATA);
  11161. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  11162. inst->setTextureForParam(paramName, texture);
  11163. return 0;
  11164. }
  11165. static int Polycode_ShaderBinding_setCubemapForParam(lua_State *L) {
  11166. luaL_checktype(L, 1, LUA_TUSERDATA);
  11167. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11168. luaL_checktype(L, 2, LUA_TSTRING);
  11169. String paramName = String(lua_tostring(L, 2));
  11170. luaL_checktype(L, 3, LUA_TUSERDATA);
  11171. Cubemap* cubemap = (Cubemap*) *((PolyBase**)lua_touserdata(L, 3));
  11172. inst->setCubemapForParam(paramName, cubemap);
  11173. return 0;
  11174. }
  11175. static int Polycode_ShaderBinding_getNumAttributeBindings(lua_State *L) {
  11176. luaL_checktype(L, 1, LUA_TUSERDATA);
  11177. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11178. lua_pushinteger(L, inst->getNumAttributeBindings());
  11179. return 1;
  11180. }
  11181. static int Polycode_ShaderBinding_getAttributeBinding(lua_State *L) {
  11182. luaL_checktype(L, 1, LUA_TUSERDATA);
  11183. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11184. luaL_checktype(L, 2, LUA_TNUMBER);
  11185. int index = lua_tointeger(L, 2);
  11186. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBinding(index);
  11187. if(ptrRetVal == NULL) {
  11188. lua_pushnil(L);
  11189. } else {
  11190. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11191. *userdataPtr = ptrRetVal;
  11192. }
  11193. return 1;
  11194. }
  11195. static int Polycode_ShaderBinding_addAttributeBinding(lua_State *L) {
  11196. luaL_checktype(L, 1, LUA_TUSERDATA);
  11197. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11198. luaL_checktype(L, 2, LUA_TSTRING);
  11199. String name = String(lua_tostring(L, 2));
  11200. luaL_checktype(L, 3, LUA_TUSERDATA);
  11201. VertexDataArray* dataArray = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 3));
  11202. PolyBase *ptrRetVal = (PolyBase*)inst->addAttributeBinding(name, dataArray);
  11203. if(ptrRetVal == NULL) {
  11204. lua_pushnil(L);
  11205. } else {
  11206. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11207. *userdataPtr = ptrRetVal;
  11208. }
  11209. return 1;
  11210. }
  11211. static int Polycode_ShaderBinding_getAttributeBindingByName(lua_State *L) {
  11212. luaL_checktype(L, 1, LUA_TUSERDATA);
  11213. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11214. luaL_checktype(L, 2, LUA_TSTRING);
  11215. String name = String(lua_tostring(L, 2));
  11216. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBindingByName(name);
  11217. if(ptrRetVal == NULL) {
  11218. lua_pushnil(L);
  11219. } else {
  11220. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11221. *userdataPtr = ptrRetVal;
  11222. }
  11223. return 1;
  11224. }
  11225. static int Polycode_ShaderBinding_addRenderTargetBinding(lua_State *L) {
  11226. luaL_checktype(L, 1, LUA_TUSERDATA);
  11227. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11228. luaL_checktype(L, 2, LUA_TUSERDATA);
  11229. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  11230. inst->addRenderTargetBinding(binding);
  11231. return 0;
  11232. }
  11233. static int Polycode_ShaderBinding_removeRenderTargetBinding(lua_State *L) {
  11234. luaL_checktype(L, 1, LUA_TUSERDATA);
  11235. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11236. luaL_checktype(L, 2, LUA_TUSERDATA);
  11237. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  11238. inst->removeRenderTargetBinding(binding);
  11239. return 0;
  11240. }
  11241. static int Polycode_ShaderBinding_getNumRenderTargetBindings(lua_State *L) {
  11242. luaL_checktype(L, 1, LUA_TUSERDATA);
  11243. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11244. lua_pushinteger(L, inst->getNumRenderTargetBindings());
  11245. return 1;
  11246. }
  11247. static int Polycode_ShaderBinding_getRenderTargetBinding(lua_State *L) {
  11248. luaL_checktype(L, 1, LUA_TUSERDATA);
  11249. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11250. luaL_checktype(L, 2, LUA_TNUMBER);
  11251. int index = lua_tointeger(L, 2);
  11252. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderTargetBinding(index);
  11253. if(ptrRetVal == NULL) {
  11254. lua_pushnil(L);
  11255. } else {
  11256. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11257. *userdataPtr = ptrRetVal;
  11258. }
  11259. return 1;
  11260. }
  11261. static int Polycode_ShaderBinding_getNumInTargetBindings(lua_State *L) {
  11262. luaL_checktype(L, 1, LUA_TUSERDATA);
  11263. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11264. lua_pushinteger(L, inst->getNumInTargetBindings());
  11265. return 1;
  11266. }
  11267. static int Polycode_ShaderBinding_getInTargetBinding(lua_State *L) {
  11268. luaL_checktype(L, 1, LUA_TUSERDATA);
  11269. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11270. luaL_checktype(L, 2, LUA_TNUMBER);
  11271. int index = lua_tointeger(L, 2);
  11272. PolyBase *ptrRetVal = (PolyBase*)inst->getInTargetBinding(index);
  11273. if(ptrRetVal == NULL) {
  11274. lua_pushnil(L);
  11275. } else {
  11276. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11277. *userdataPtr = ptrRetVal;
  11278. }
  11279. return 1;
  11280. }
  11281. static int Polycode_ShaderBinding_getNumColorTargetBindings(lua_State *L) {
  11282. luaL_checktype(L, 1, LUA_TUSERDATA);
  11283. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11284. lua_pushinteger(L, inst->getNumColorTargetBindings());
  11285. return 1;
  11286. }
  11287. static int Polycode_ShaderBinding_getColorTargetBinding(lua_State *L) {
  11288. luaL_checktype(L, 1, LUA_TUSERDATA);
  11289. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11290. luaL_checktype(L, 2, LUA_TNUMBER);
  11291. int index = lua_tointeger(L, 2);
  11292. PolyBase *ptrRetVal = (PolyBase*)inst->getColorTargetBinding(index);
  11293. if(ptrRetVal == NULL) {
  11294. lua_pushnil(L);
  11295. } else {
  11296. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11297. *userdataPtr = ptrRetVal;
  11298. }
  11299. return 1;
  11300. }
  11301. static int Polycode_ShaderBinding_getNumDepthTargetBindings(lua_State *L) {
  11302. luaL_checktype(L, 1, LUA_TUSERDATA);
  11303. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11304. lua_pushinteger(L, inst->getNumDepthTargetBindings());
  11305. return 1;
  11306. }
  11307. static int Polycode_ShaderBinding_getDepthTargetBinding(lua_State *L) {
  11308. luaL_checktype(L, 1, LUA_TUSERDATA);
  11309. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11310. luaL_checktype(L, 2, LUA_TNUMBER);
  11311. int index = lua_tointeger(L, 2);
  11312. PolyBase *ptrRetVal = (PolyBase*)inst->getDepthTargetBinding(index);
  11313. if(ptrRetVal == NULL) {
  11314. lua_pushnil(L);
  11315. } else {
  11316. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11317. *userdataPtr = ptrRetVal;
  11318. }
  11319. return 1;
  11320. }
  11321. static int Polycode_ShaderBinding_getNumOutTargetBindings(lua_State *L) {
  11322. luaL_checktype(L, 1, LUA_TUSERDATA);
  11323. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11324. lua_pushinteger(L, inst->getNumOutTargetBindings());
  11325. return 1;
  11326. }
  11327. static int Polycode_ShaderBinding_getOutTargetBinding(lua_State *L) {
  11328. luaL_checktype(L, 1, LUA_TUSERDATA);
  11329. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  11330. luaL_checktype(L, 2, LUA_TNUMBER);
  11331. int index = lua_tointeger(L, 2);
  11332. PolyBase *ptrRetVal = (PolyBase*)inst->getOutTargetBinding(index);
  11333. if(ptrRetVal == NULL) {
  11334. lua_pushnil(L);
  11335. } else {
  11336. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11337. *userdataPtr = ptrRetVal;
  11338. }
  11339. return 1;
  11340. }
  11341. static int Polycode_SkeletonAnimation(lua_State *L) {
  11342. luaL_checktype(L, 1, LUA_TSTRING);
  11343. String name = String(lua_tostring(L, 1));
  11344. luaL_checktype(L, 2, LUA_TNUMBER);
  11345. Number duration = lua_tonumber(L, 2);
  11346. SkeletonAnimation *inst = new SkeletonAnimation(name, duration);
  11347. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11348. *userdataPtr = (PolyBase*)inst;
  11349. luaL_getmetatable(L, "Polycode.SkeletonAnimation");
  11350. lua_setmetatable(L, -2);
  11351. return 1;
  11352. }
  11353. static int Polycode_SkeletonAnimation_addBoneTrack(lua_State *L) {
  11354. luaL_checktype(L, 1, LUA_TUSERDATA);
  11355. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11356. luaL_checktype(L, 2, LUA_TUSERDATA);
  11357. BoneTrack* boneTrack = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 2));
  11358. inst->addBoneTrack(boneTrack);
  11359. return 0;
  11360. }
  11361. static int Polycode_SkeletonAnimation_getName(lua_State *L) {
  11362. luaL_checktype(L, 1, LUA_TUSERDATA);
  11363. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11364. lua_pushstring(L, inst->getName().c_str());
  11365. return 1;
  11366. }
  11367. static int Polycode_SkeletonAnimation_Play(lua_State *L) {
  11368. luaL_checktype(L, 1, LUA_TUSERDATA);
  11369. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11370. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11371. bool once = lua_toboolean(L, 2) != 0;
  11372. inst->Play(once);
  11373. return 0;
  11374. }
  11375. static int Polycode_SkeletonAnimation_Stop(lua_State *L) {
  11376. luaL_checktype(L, 1, LUA_TUSERDATA);
  11377. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11378. inst->Stop();
  11379. return 0;
  11380. }
  11381. static int Polycode_SkeletonAnimation_Reset(lua_State *L) {
  11382. luaL_checktype(L, 1, LUA_TUSERDATA);
  11383. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11384. inst->Reset();
  11385. return 0;
  11386. }
  11387. static int Polycode_SkeletonAnimation_Update(lua_State *L) {
  11388. luaL_checktype(L, 1, LUA_TUSERDATA);
  11389. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11390. inst->Update();
  11391. return 0;
  11392. }
  11393. static int Polycode_SkeletonAnimation_setSpeed(lua_State *L) {
  11394. luaL_checktype(L, 1, LUA_TUSERDATA);
  11395. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11396. luaL_checktype(L, 2, LUA_TNUMBER);
  11397. Number speed = lua_tonumber(L, 2);
  11398. inst->setSpeed(speed);
  11399. return 0;
  11400. }
  11401. static int Polycode_SkeletonAnimation_setWeight(lua_State *L) {
  11402. luaL_checktype(L, 1, LUA_TUSERDATA);
  11403. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11404. luaL_checktype(L, 2, LUA_TNUMBER);
  11405. Number newWeight = lua_tonumber(L, 2);
  11406. inst->setWeight(newWeight);
  11407. return 0;
  11408. }
  11409. static int Polycode_SkeletonAnimation_getWeight(lua_State *L) {
  11410. luaL_checktype(L, 1, LUA_TUSERDATA);
  11411. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11412. lua_pushnumber(L, inst->getWeight());
  11413. return 1;
  11414. }
  11415. static int Polycode_SkeletonAnimation_isPlaying(lua_State *L) {
  11416. luaL_checktype(L, 1, LUA_TUSERDATA);
  11417. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  11418. lua_pushboolean(L, inst->isPlaying());
  11419. return 1;
  11420. }
  11421. static int Polycode_Skeleton(lua_State *L) {
  11422. luaL_checktype(L, 1, LUA_TSTRING);
  11423. String fileName = String(lua_tostring(L, 1));
  11424. Skeleton *inst = new Skeleton(fileName);
  11425. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11426. *userdataPtr = (PolyBase*)inst;
  11427. luaL_getmetatable(L, "Polycode.Skeleton");
  11428. lua_setmetatable(L, -2);
  11429. return 1;
  11430. }
  11431. static int Polycode_Skeleton_BlankSkeleton(lua_State *L) {
  11432. luaL_checktype(L, 1, LUA_TUSERDATA);
  11433. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11434. PolyBase *ptrRetVal = (PolyBase*)inst->BlankSkeleton();
  11435. if(ptrRetVal == NULL) {
  11436. lua_pushnil(L);
  11437. } else {
  11438. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11439. *userdataPtr = ptrRetVal;
  11440. }
  11441. return 1;
  11442. }
  11443. static int Polycode_Skeleton_loadSkeleton(lua_State *L) {
  11444. luaL_checktype(L, 1, LUA_TUSERDATA);
  11445. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11446. luaL_checktype(L, 2, LUA_TSTRING);
  11447. String fileName = String(lua_tostring(L, 2));
  11448. inst->loadSkeleton(fileName);
  11449. return 0;
  11450. }
  11451. static int Polycode_Skeleton_playAnimationByName(lua_State *L) {
  11452. luaL_checktype(L, 1, LUA_TUSERDATA);
  11453. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11454. luaL_checktype(L, 2, LUA_TSTRING);
  11455. String animName = String(lua_tostring(L, 2));
  11456. luaL_checktype(L, 3, LUA_TNUMBER);
  11457. Number weight = lua_tonumber(L, 3);
  11458. luaL_checktype(L, 4, LUA_TBOOLEAN);
  11459. bool once = lua_toboolean(L, 4) != 0;
  11460. luaL_checktype(L, 5, LUA_TBOOLEAN);
  11461. bool restartIfPlaying = lua_toboolean(L, 5) != 0;
  11462. inst->playAnimationByName(animName, weight, once, restartIfPlaying);
  11463. return 0;
  11464. }
  11465. static int Polycode_Skeleton_playAnimation(lua_State *L) {
  11466. luaL_checktype(L, 1, LUA_TUSERDATA);
  11467. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11468. luaL_checktype(L, 2, LUA_TUSERDATA);
  11469. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  11470. luaL_checktype(L, 3, LUA_TNUMBER);
  11471. Number weight = lua_tonumber(L, 3);
  11472. luaL_checktype(L, 4, LUA_TBOOLEAN);
  11473. bool once = lua_toboolean(L, 4) != 0;
  11474. luaL_checktype(L, 5, LUA_TBOOLEAN);
  11475. bool restartIfPlaying = lua_toboolean(L, 5) != 0;
  11476. inst->playAnimation(animation, weight, once, restartIfPlaying);
  11477. return 0;
  11478. }
  11479. static int Polycode_Skeleton_setBaseAnimationByName(lua_State *L) {
  11480. luaL_checktype(L, 1, LUA_TUSERDATA);
  11481. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11482. luaL_checktype(L, 2, LUA_TSTRING);
  11483. String animName = String(lua_tostring(L, 2));
  11484. inst->setBaseAnimationByName(animName);
  11485. return 0;
  11486. }
  11487. static int Polycode_Skeleton_setBaseAnimation(lua_State *L) {
  11488. luaL_checktype(L, 1, LUA_TUSERDATA);
  11489. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11490. luaL_checktype(L, 2, LUA_TUSERDATA);
  11491. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  11492. inst->setBaseAnimation(animation);
  11493. return 0;
  11494. }
  11495. static int Polycode_Skeleton_stopAllAnimations(lua_State *L) {
  11496. luaL_checktype(L, 1, LUA_TUSERDATA);
  11497. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11498. inst->stopAllAnimations();
  11499. return 0;
  11500. }
  11501. static int Polycode_Skeleton_getBaseAnimation(lua_State *L) {
  11502. luaL_checktype(L, 1, LUA_TUSERDATA);
  11503. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11504. PolyBase *ptrRetVal = (PolyBase*)inst->getBaseAnimation();
  11505. if(ptrRetVal == NULL) {
  11506. lua_pushnil(L);
  11507. } else {
  11508. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11509. *userdataPtr = ptrRetVal;
  11510. }
  11511. return 1;
  11512. }
  11513. static int Polycode_Skeleton_addAnimation(lua_State *L) {
  11514. luaL_checktype(L, 1, LUA_TUSERDATA);
  11515. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11516. luaL_checktype(L, 2, LUA_TSTRING);
  11517. String name = String(lua_tostring(L, 2));
  11518. luaL_checktype(L, 3, LUA_TSTRING);
  11519. String fileName = String(lua_tostring(L, 3));
  11520. inst->addAnimation(name, fileName);
  11521. return 0;
  11522. }
  11523. static int Polycode_Skeleton_getAnimation(lua_State *L) {
  11524. luaL_checktype(L, 1, LUA_TUSERDATA);
  11525. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11526. luaL_checktype(L, 2, LUA_TSTRING);
  11527. String name = String(lua_tostring(L, 2));
  11528. PolyBase *ptrRetVal = (PolyBase*)inst->getAnimation(name);
  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_Skeleton_stopAnimationByName(lua_State *L) {
  11538. luaL_checktype(L, 1, LUA_TUSERDATA);
  11539. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11540. luaL_checktype(L, 2, LUA_TSTRING);
  11541. String name = String(lua_tostring(L, 2));
  11542. inst->stopAnimationByName(name);
  11543. return 0;
  11544. }
  11545. static int Polycode_Skeleton_stopAnimation(lua_State *L) {
  11546. luaL_checktype(L, 1, LUA_TUSERDATA);
  11547. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11548. luaL_checktype(L, 2, LUA_TUSERDATA);
  11549. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  11550. inst->stopAnimation(animation);
  11551. return 0;
  11552. }
  11553. static int Polycode_Skeleton_Update(lua_State *L) {
  11554. luaL_checktype(L, 1, LUA_TUSERDATA);
  11555. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11556. inst->Update();
  11557. return 0;
  11558. }
  11559. static int Polycode_Skeleton_getBoneByName(lua_State *L) {
  11560. luaL_checktype(L, 1, LUA_TUSERDATA);
  11561. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11562. luaL_checktype(L, 2, LUA_TSTRING);
  11563. String name = String(lua_tostring(L, 2));
  11564. PolyBase *ptrRetVal = (PolyBase*)inst->getBoneByName(name);
  11565. if(ptrRetVal == NULL) {
  11566. lua_pushnil(L);
  11567. } else {
  11568. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11569. *userdataPtr = ptrRetVal;
  11570. }
  11571. return 1;
  11572. }
  11573. static int Polycode_Skeleton_bonesVisible(lua_State *L) {
  11574. luaL_checktype(L, 1, LUA_TUSERDATA);
  11575. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11576. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11577. bool val = lua_toboolean(L, 2) != 0;
  11578. inst->bonesVisible(val);
  11579. return 0;
  11580. }
  11581. static int Polycode_Skeleton_getNumBones(lua_State *L) {
  11582. luaL_checktype(L, 1, LUA_TUSERDATA);
  11583. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11584. lua_pushinteger(L, inst->getNumBones());
  11585. return 1;
  11586. }
  11587. static int Polycode_Skeleton_getBone(lua_State *L) {
  11588. luaL_checktype(L, 1, LUA_TUSERDATA);
  11589. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11590. luaL_checktype(L, 2, LUA_TNUMBER);
  11591. int index = lua_tointeger(L, 2);
  11592. PolyBase *ptrRetVal = (PolyBase*)inst->getBone(index);
  11593. if(ptrRetVal == NULL) {
  11594. lua_pushnil(L);
  11595. } else {
  11596. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11597. *userdataPtr = ptrRetVal;
  11598. }
  11599. return 1;
  11600. }
  11601. static int Polycode_Skeleton_addBone(lua_State *L) {
  11602. luaL_checktype(L, 1, LUA_TUSERDATA);
  11603. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11604. luaL_checktype(L, 2, LUA_TUSERDATA);
  11605. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  11606. inst->addBone(bone);
  11607. return 0;
  11608. }
  11609. static int Polycode_Skeleton_removeBone(lua_State *L) {
  11610. luaL_checktype(L, 1, LUA_TUSERDATA);
  11611. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11612. luaL_checktype(L, 2, LUA_TUSERDATA);
  11613. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  11614. inst->removeBone(bone);
  11615. return 0;
  11616. }
  11617. static int Polycode_Skeleton_getBoneIndexByBone(lua_State *L) {
  11618. luaL_checktype(L, 1, LUA_TUSERDATA);
  11619. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  11620. luaL_checktype(L, 2, LUA_TUSERDATA);
  11621. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  11622. lua_pushinteger(L, inst->getBoneIndexByBone(bone));
  11623. return 1;
  11624. }
  11625. static int Polycode_BoneTrack(lua_State *L) {
  11626. luaL_checktype(L, 1, LUA_TUSERDATA);
  11627. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  11628. luaL_checktype(L, 2, LUA_TNUMBER);
  11629. Number length = lua_tonumber(L, 2);
  11630. BoneTrack *inst = new BoneTrack(bone, length);
  11631. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11632. *userdataPtr = (PolyBase*)inst;
  11633. luaL_getmetatable(L, "Polycode.BoneTrack");
  11634. lua_setmetatable(L, -2);
  11635. return 1;
  11636. }
  11637. static int Polycode_BoneTrack_Play(lua_State *L) {
  11638. luaL_checktype(L, 1, LUA_TUSERDATA);
  11639. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  11640. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11641. bool once = lua_toboolean(L, 2) != 0;
  11642. inst->Play(once);
  11643. return 0;
  11644. }
  11645. static int Polycode_BoneTrack_Stop(lua_State *L) {
  11646. luaL_checktype(L, 1, LUA_TUSERDATA);
  11647. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  11648. inst->Stop();
  11649. return 0;
  11650. }
  11651. static int Polycode_BoneTrack_Update(lua_State *L) {
  11652. luaL_checktype(L, 1, LUA_TUSERDATA);
  11653. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  11654. luaL_checktype(L, 2, LUA_TNUMBER);
  11655. Number elapsed = lua_tonumber(L, 2);
  11656. inst->Update(elapsed);
  11657. return 0;
  11658. }
  11659. static int Polycode_BoneTrack_Reset(lua_State *L) {
  11660. luaL_checktype(L, 1, LUA_TUSERDATA);
  11661. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  11662. inst->Reset();
  11663. return 0;
  11664. }
  11665. static int Polycode_BoneTrack_setSpeed(lua_State *L) {
  11666. luaL_checktype(L, 1, LUA_TUSERDATA);
  11667. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  11668. luaL_checktype(L, 2, LUA_TNUMBER);
  11669. Number speed = lua_tonumber(L, 2);
  11670. inst->setSpeed(speed);
  11671. return 0;
  11672. }
  11673. static int Polycode_Sound(lua_State *L) {
  11674. luaL_checktype(L, 1, LUA_TSTRING);
  11675. String fileName = String(lua_tostring(L, 1));
  11676. Sound *inst = new Sound(fileName);
  11677. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11678. *userdataPtr = (PolyBase*)inst;
  11679. luaL_getmetatable(L, "Polycode.Sound");
  11680. lua_setmetatable(L, -2);
  11681. return 1;
  11682. }
  11683. static int Polycode_Sound_getSampleAsNumber(lua_State *L) {
  11684. luaL_checktype(L, 1, LUA_TUSERDATA);
  11685. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11686. luaL_checktype(L, 2, LUA_TNUMBER);
  11687. int offset = lua_tointeger(L, 2);
  11688. luaL_checktype(L, 3, LUA_TNUMBER);
  11689. int channel = lua_tointeger(L, 3);
  11690. lua_pushnumber(L, inst->getSampleAsNumber(offset, channel));
  11691. return 1;
  11692. }
  11693. static int Polycode_Sound_loadFile(lua_State *L) {
  11694. luaL_checktype(L, 1, LUA_TUSERDATA);
  11695. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11696. luaL_checktype(L, 2, LUA_TSTRING);
  11697. String fileName = String(lua_tostring(L, 2));
  11698. inst->loadFile(fileName);
  11699. return 0;
  11700. }
  11701. static int Polycode_Sound_Play(lua_State *L) {
  11702. luaL_checktype(L, 1, LUA_TUSERDATA);
  11703. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11704. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11705. bool loop = lua_toboolean(L, 2) != 0;
  11706. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11707. bool restartSound = lua_toboolean(L, 3) != 0;
  11708. inst->Play(loop, restartSound);
  11709. return 0;
  11710. }
  11711. static int Polycode_Sound_Stop(lua_State *L) {
  11712. luaL_checktype(L, 1, LUA_TUSERDATA);
  11713. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11714. inst->Stop();
  11715. return 0;
  11716. }
  11717. static int Polycode_Sound_setVolume(lua_State *L) {
  11718. luaL_checktype(L, 1, LUA_TUSERDATA);
  11719. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11720. luaL_checktype(L, 2, LUA_TNUMBER);
  11721. Number newVolume = lua_tonumber(L, 2);
  11722. inst->setVolume(newVolume);
  11723. return 0;
  11724. }
  11725. static int Polycode_Sound_getVolume(lua_State *L) {
  11726. luaL_checktype(L, 1, LUA_TUSERDATA);
  11727. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11728. lua_pushnumber(L, inst->getVolume());
  11729. return 1;
  11730. }
  11731. static int Polycode_Sound_setPitch(lua_State *L) {
  11732. luaL_checktype(L, 1, LUA_TUSERDATA);
  11733. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11734. luaL_checktype(L, 2, LUA_TNUMBER);
  11735. Number newPitch = lua_tonumber(L, 2);
  11736. inst->setPitch(newPitch);
  11737. return 0;
  11738. }
  11739. static int Polycode_Sound_getPitch(lua_State *L) {
  11740. luaL_checktype(L, 1, LUA_TUSERDATA);
  11741. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11742. lua_pushnumber(L, inst->getPitch());
  11743. return 1;
  11744. }
  11745. static int Polycode_Sound_isPlaying(lua_State *L) {
  11746. luaL_checktype(L, 1, LUA_TUSERDATA);
  11747. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11748. lua_pushboolean(L, inst->isPlaying());
  11749. return 1;
  11750. }
  11751. static int Polycode_Sound_isLooped(lua_State *L) {
  11752. luaL_checktype(L, 1, LUA_TUSERDATA);
  11753. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11754. lua_pushboolean(L, inst->isLooped());
  11755. return 1;
  11756. }
  11757. static int Polycode_Sound_setIsPositional(lua_State *L) {
  11758. luaL_checktype(L, 1, LUA_TUSERDATA);
  11759. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11760. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11761. bool isPositional = lua_toboolean(L, 2) != 0;
  11762. inst->setIsPositional(isPositional);
  11763. return 0;
  11764. }
  11765. static int Polycode_Sound_setSoundPosition(lua_State *L) {
  11766. luaL_checktype(L, 1, LUA_TUSERDATA);
  11767. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11768. luaL_checktype(L, 2, LUA_TUSERDATA);
  11769. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  11770. inst->setSoundPosition(position);
  11771. return 0;
  11772. }
  11773. static int Polycode_Sound_setSoundVelocity(lua_State *L) {
  11774. luaL_checktype(L, 1, LUA_TUSERDATA);
  11775. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11776. luaL_checktype(L, 2, LUA_TUSERDATA);
  11777. Vector3 velocity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  11778. inst->setSoundVelocity(velocity);
  11779. return 0;
  11780. }
  11781. static int Polycode_Sound_setSoundDirection(lua_State *L) {
  11782. luaL_checktype(L, 1, LUA_TUSERDATA);
  11783. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11784. luaL_checktype(L, 2, LUA_TUSERDATA);
  11785. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  11786. inst->setSoundDirection(direction);
  11787. return 0;
  11788. }
  11789. static int Polycode_Sound_setOffset(lua_State *L) {
  11790. luaL_checktype(L, 1, LUA_TUSERDATA);
  11791. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11792. luaL_checktype(L, 2, LUA_TNUMBER);
  11793. int offset = lua_tointeger(L, 2);
  11794. inst->setOffset(offset);
  11795. return 0;
  11796. }
  11797. static int Polycode_Sound_getFileName(lua_State *L) {
  11798. luaL_checktype(L, 1, LUA_TUSERDATA);
  11799. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11800. lua_pushstring(L, inst->getFileName().c_str());
  11801. return 1;
  11802. }
  11803. static int Polycode_Sound_getPlaybackDuration(lua_State *L) {
  11804. luaL_checktype(L, 1, LUA_TUSERDATA);
  11805. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11806. lua_pushnumber(L, inst->getPlaybackDuration());
  11807. return 1;
  11808. }
  11809. static int Polycode_Sound_getPlaybackTime(lua_State *L) {
  11810. luaL_checktype(L, 1, LUA_TUSERDATA);
  11811. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11812. lua_pushnumber(L, inst->getPlaybackTime());
  11813. return 1;
  11814. }
  11815. static int Polycode_Sound_seekTo(lua_State *L) {
  11816. luaL_checktype(L, 1, LUA_TUSERDATA);
  11817. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11818. luaL_checktype(L, 2, LUA_TNUMBER);
  11819. Number time = lua_tonumber(L, 2);
  11820. inst->seekTo(time);
  11821. return 0;
  11822. }
  11823. static int Polycode_Sound_getOffset(lua_State *L) {
  11824. luaL_checktype(L, 1, LUA_TUSERDATA);
  11825. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11826. lua_pushinteger(L, inst->getOffset());
  11827. return 1;
  11828. }
  11829. static int Polycode_Sound_getSampleLength(lua_State *L) {
  11830. luaL_checktype(L, 1, LUA_TUSERDATA);
  11831. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11832. lua_pushinteger(L, inst->getSampleLength());
  11833. return 1;
  11834. }
  11835. static int Polycode_Sound_getFrequency(lua_State *L) {
  11836. luaL_checktype(L, 1, LUA_TUSERDATA);
  11837. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11838. lua_pushinteger(L, inst->getFrequency());
  11839. return 1;
  11840. }
  11841. static int Polycode_Sound_setPositionalProperties(lua_State *L) {
  11842. luaL_checktype(L, 1, LUA_TUSERDATA);
  11843. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11844. luaL_checktype(L, 2, LUA_TNUMBER);
  11845. Number referenceDistance = lua_tonumber(L, 2);
  11846. luaL_checktype(L, 3, LUA_TNUMBER);
  11847. Number maxDistance = lua_tonumber(L, 3);
  11848. inst->setPositionalProperties(referenceDistance, maxDistance);
  11849. return 0;
  11850. }
  11851. static int Polycode_Sound_setReferenceDistance(lua_State *L) {
  11852. luaL_checktype(L, 1, LUA_TUSERDATA);
  11853. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11854. luaL_checktype(L, 2, LUA_TNUMBER);
  11855. Number referenceDistance = lua_tonumber(L, 2);
  11856. inst->setReferenceDistance(referenceDistance);
  11857. return 0;
  11858. }
  11859. static int Polycode_Sound_setMaxDistance(lua_State *L) {
  11860. luaL_checktype(L, 1, LUA_TUSERDATA);
  11861. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11862. luaL_checktype(L, 2, LUA_TNUMBER);
  11863. Number maxDistance = lua_tonumber(L, 2);
  11864. inst->setMaxDistance(maxDistance);
  11865. return 0;
  11866. }
  11867. static int Polycode_Sound_getReferenceDistance(lua_State *L) {
  11868. luaL_checktype(L, 1, LUA_TUSERDATA);
  11869. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11870. lua_pushnumber(L, inst->getReferenceDistance());
  11871. return 1;
  11872. }
  11873. static int Polycode_Sound_getMaxDistance(lua_State *L) {
  11874. luaL_checktype(L, 1, LUA_TUSERDATA);
  11875. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11876. lua_pushnumber(L, inst->getMaxDistance());
  11877. return 1;
  11878. }
  11879. static int Polycode_Sound_loadBytes(lua_State *L) {
  11880. luaL_checktype(L, 1, LUA_TUSERDATA);
  11881. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11882. luaL_checktype(L, 2, LUA_TUSERDATA);
  11883. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  11884. luaL_checktype(L, 3, LUA_TNUMBER);
  11885. int size = lua_tointeger(L, 3);
  11886. luaL_checktype(L, 4, LUA_TNUMBER);
  11887. int channels = lua_tointeger(L, 4);
  11888. luaL_checktype(L, 5, LUA_TNUMBER);
  11889. int freq = lua_tointeger(L, 5);
  11890. luaL_checktype(L, 6, LUA_TUSERDATA);
  11891. SoundFormat format = *(SoundFormat*) *((PolyBase**)lua_touserdata(L, 6));
  11892. lua_pushboolean(L, inst->loadBytes(data, size, channels, freq, format));
  11893. return 1;
  11894. }
  11895. static int Polycode_Sound_loadWAV(lua_State *L) {
  11896. luaL_checktype(L, 1, LUA_TUSERDATA);
  11897. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11898. luaL_checktype(L, 2, LUA_TSTRING);
  11899. String fileName = String(lua_tostring(L, 2));
  11900. lua_pushboolean(L, inst->loadWAV(fileName));
  11901. return 1;
  11902. }
  11903. static int Polycode_Sound_loadOGG(lua_State *L) {
  11904. luaL_checktype(L, 1, LUA_TUSERDATA);
  11905. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11906. luaL_checktype(L, 2, LUA_TSTRING);
  11907. String fileName = String(lua_tostring(L, 2));
  11908. lua_pushboolean(L, inst->loadOGG(fileName));
  11909. return 1;
  11910. }
  11911. static int Polycode_Sound_soundCheck(lua_State *L) {
  11912. luaL_checktype(L, 1, LUA_TUSERDATA);
  11913. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11914. luaL_checktype(L, 2, LUA_TBOOLEAN);
  11915. bool result = lua_toboolean(L, 2) != 0;
  11916. luaL_checktype(L, 3, LUA_TSTRING);
  11917. String err = String(lua_tostring(L, 3));
  11918. inst->soundCheck(result, err);
  11919. return 0;
  11920. }
  11921. static int Polycode_Sound_updateStream(lua_State *L) {
  11922. luaL_checktype(L, 1, LUA_TUSERDATA);
  11923. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  11924. luaL_checktype(L, 2, LUA_TNUMBER);
  11925. int streamCount = lua_tointeger(L, 2);
  11926. inst->updateStream(streamCount);
  11927. return 0;
  11928. }
  11929. static int Polycode_AudioStreamingSource(lua_State *L) {
  11930. luaL_checktype(L, 1, LUA_TNUMBER);
  11931. int channels = lua_tointeger(L, 1);
  11932. luaL_checktype(L, 2, LUA_TNUMBER);
  11933. int freq = lua_tointeger(L, 2);
  11934. AudioStreamingSource *inst = new AudioStreamingSource(channels, freq);
  11935. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11936. *userdataPtr = (PolyBase*)inst;
  11937. luaL_getmetatable(L, "Polycode.AudioStreamingSource");
  11938. lua_setmetatable(L, -2);
  11939. return 1;
  11940. }
  11941. static int Polycode_AudioStreamingSource_getNumChannels(lua_State *L) {
  11942. luaL_checktype(L, 1, LUA_TUSERDATA);
  11943. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  11944. lua_pushinteger(L, inst->getNumChannels());
  11945. return 1;
  11946. }
  11947. static int Polycode_AudioStreamingSource_getFrequency(lua_State *L) {
  11948. luaL_checktype(L, 1, LUA_TUSERDATA);
  11949. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  11950. lua_pushinteger(L, inst->getFrequency());
  11951. return 1;
  11952. }
  11953. static int Polycode_AudioMixer(lua_State *L) {
  11954. AudioMixer *inst = new AudioMixer();
  11955. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11956. *userdataPtr = (PolyBase*)inst;
  11957. luaL_getmetatable(L, "Polycode.AudioMixer");
  11958. lua_setmetatable(L, -2);
  11959. return 1;
  11960. }
  11961. static int Polycode_AudioMixer_mixIntoBuffer(lua_State *L) {
  11962. luaL_checktype(L, 1, LUA_TUSERDATA);
  11963. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  11964. luaL_checktype(L, 2, LUA_TUSERDATA);
  11965. int16_t* buffer = (int16_t*) *((PolyBase**)lua_touserdata(L, 2));
  11966. luaL_checktype(L, 3, LUA_TNUMBER);
  11967. int numSamples = lua_tointeger(L, 3);
  11968. inst->mixIntoBuffer(buffer, numSamples);
  11969. return 0;
  11970. }
  11971. static int Polycode_SoundManager(lua_State *L) {
  11972. SoundManager *inst = new SoundManager();
  11973. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11974. *userdataPtr = (PolyBase*)inst;
  11975. luaL_getmetatable(L, "Polycode.SoundManager");
  11976. lua_setmetatable(L, -2);
  11977. return 1;
  11978. }
  11979. static int Polycode_SoundManager_setListenerPosition(lua_State *L) {
  11980. luaL_checktype(L, 1, LUA_TUSERDATA);
  11981. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  11982. luaL_checktype(L, 2, LUA_TUSERDATA);
  11983. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  11984. inst->setListenerPosition(position);
  11985. return 0;
  11986. }
  11987. static int Polycode_SoundManager_setListenerOrientation(lua_State *L) {
  11988. luaL_checktype(L, 1, LUA_TUSERDATA);
  11989. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  11990. luaL_checktype(L, 2, LUA_TUSERDATA);
  11991. Vector3 orientation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  11992. luaL_checktype(L, 3, LUA_TUSERDATA);
  11993. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  11994. inst->setListenerOrientation(orientation, upVector);
  11995. return 0;
  11996. }
  11997. static int Polycode_SoundManager_recordSound(lua_State *L) {
  11998. luaL_checktype(L, 1, LUA_TUSERDATA);
  11999. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12000. luaL_checktype(L, 2, LUA_TNUMBER);
  12001. int rate = lua_tointeger(L, 2);
  12002. luaL_checktype(L, 3, LUA_TNUMBER);
  12003. int sampleSize = lua_tointeger(L, 3);
  12004. lua_pushboolean(L, inst->recordSound(rate, sampleSize));
  12005. return 1;
  12006. }
  12007. static int Polycode_SoundManager_stopRecording(lua_State *L) {
  12008. luaL_checktype(L, 1, LUA_TUSERDATA);
  12009. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12010. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12011. bool generateFloatBuffer = lua_toboolean(L, 2) != 0;
  12012. PolyBase *ptrRetVal = (PolyBase*)inst->stopRecording(generateFloatBuffer);
  12013. if(ptrRetVal == NULL) {
  12014. lua_pushnil(L);
  12015. } else {
  12016. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12017. *userdataPtr = ptrRetVal;
  12018. }
  12019. return 1;
  12020. }
  12021. static int Polycode_SoundManager_setAudioInterface(lua_State *L) {
  12022. luaL_checktype(L, 1, LUA_TUSERDATA);
  12023. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12024. luaL_checktype(L, 2, LUA_TUSERDATA);
  12025. AudioInterface* audioInterface = (AudioInterface*) *((PolyBase**)lua_touserdata(L, 2));
  12026. inst->setAudioInterface(audioInterface);
  12027. return 0;
  12028. }
  12029. static int Polycode_SoundManager_Update(lua_State *L) {
  12030. luaL_checktype(L, 1, LUA_TUSERDATA);
  12031. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12032. inst->Update();
  12033. return 0;
  12034. }
  12035. static int Polycode_SoundManager_setGlobalVolume(lua_State *L) {
  12036. luaL_checktype(L, 1, LUA_TUSERDATA);
  12037. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12038. luaL_checktype(L, 2, LUA_TNUMBER);
  12039. Number globalVolume = lua_tonumber(L, 2);
  12040. inst->setGlobalVolume(globalVolume);
  12041. return 0;
  12042. }
  12043. static int Polycode_SoundManager_registerSound(lua_State *L) {
  12044. luaL_checktype(L, 1, LUA_TUSERDATA);
  12045. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12046. luaL_checktype(L, 2, LUA_TUSERDATA);
  12047. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  12048. inst->registerSound(sound);
  12049. return 0;
  12050. }
  12051. static int Polycode_SoundManager_unregisterSound(lua_State *L) {
  12052. luaL_checktype(L, 1, LUA_TUSERDATA);
  12053. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  12054. luaL_checktype(L, 2, LUA_TUSERDATA);
  12055. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  12056. inst->unregisterSound(sound);
  12057. return 0;
  12058. }
  12059. static int Polycode_String(lua_State *L) {
  12060. String *inst = new String();
  12061. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12062. *userdataPtr = (PolyBase*)inst;
  12063. luaL_getmetatable(L, "Polycode.String");
  12064. lua_setmetatable(L, -2);
  12065. return 1;
  12066. }
  12067. static int Polycode_String_size(lua_State *L) {
  12068. luaL_checktype(L, 1, LUA_TUSERDATA);
  12069. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12070. lua_pushinteger(L, inst->size());
  12071. return 1;
  12072. }
  12073. static int Polycode_String_length(lua_State *L) {
  12074. luaL_checktype(L, 1, LUA_TUSERDATA);
  12075. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12076. lua_pushinteger(L, inst->length());
  12077. return 1;
  12078. }
  12079. static int Polycode_String_substr(lua_State *L) {
  12080. luaL_checktype(L, 1, LUA_TUSERDATA);
  12081. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12082. luaL_checktype(L, 2, LUA_TUSERDATA);
  12083. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 2));
  12084. luaL_checktype(L, 3, LUA_TUSERDATA);
  12085. size_t n = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  12086. lua_pushstring(L, inst->substr(pos, n).c_str());
  12087. return 1;
  12088. }
  12089. static int Polycode_String_rfind(lua_State *L) {
  12090. luaL_checktype(L, 1, LUA_TUSERDATA);
  12091. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12092. luaL_checktype(L, 2, LUA_TSTRING);
  12093. String str = String(lua_tostring(L, 2));
  12094. luaL_checktype(L, 3, LUA_TUSERDATA);
  12095. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  12096. lua_pushinteger(L, inst->rfind(str, pos));
  12097. return 1;
  12098. }
  12099. static int Polycode_String_find(lua_State *L) {
  12100. luaL_checktype(L, 1, LUA_TUSERDATA);
  12101. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12102. luaL_checktype(L, 2, LUA_TSTRING);
  12103. String str = String(lua_tostring(L, 2));
  12104. luaL_checktype(L, 3, LUA_TUSERDATA);
  12105. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  12106. lua_pushinteger(L, inst->find(str, pos));
  12107. return 1;
  12108. }
  12109. static int Polycode_String_find_last_of(lua_State *L) {
  12110. luaL_checktype(L, 1, LUA_TUSERDATA);
  12111. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12112. luaL_checktype(L, 2, LUA_TSTRING);
  12113. String str = String(lua_tostring(L, 2));
  12114. luaL_checktype(L, 3, LUA_TUSERDATA);
  12115. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  12116. lua_pushinteger(L, inst->find_last_of(str, pos));
  12117. return 1;
  12118. }
  12119. static int Polycode_String_find_first_of(lua_State *L) {
  12120. luaL_checktype(L, 1, LUA_TUSERDATA);
  12121. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12122. luaL_checktype(L, 2, LUA_TSTRING);
  12123. String str = String(lua_tostring(L, 2));
  12124. luaL_checktype(L, 3, LUA_TUSERDATA);
  12125. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  12126. lua_pushinteger(L, inst->find_first_of(str, pos));
  12127. return 1;
  12128. }
  12129. static int Polycode_String_toLowerCase(lua_State *L) {
  12130. luaL_checktype(L, 1, LUA_TUSERDATA);
  12131. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12132. lua_pushstring(L, inst->toLowerCase().c_str());
  12133. return 1;
  12134. }
  12135. static int Polycode_String_toUpperCase(lua_State *L) {
  12136. luaL_checktype(L, 1, LUA_TUSERDATA);
  12137. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12138. lua_pushstring(L, inst->toUpperCase().c_str());
  12139. return 1;
  12140. }
  12141. static int Polycode_String_split(lua_State *L) {
  12142. luaL_checktype(L, 1, LUA_TUSERDATA);
  12143. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12144. luaL_checktype(L, 2, LUA_TSTRING);
  12145. String delim = String(lua_tostring(L, 2));
  12146. }
  12147. static int Polycode_String_replace(lua_State *L) {
  12148. luaL_checktype(L, 1, LUA_TUSERDATA);
  12149. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12150. luaL_checktype(L, 2, LUA_TSTRING);
  12151. String what = String(lua_tostring(L, 2));
  12152. luaL_checktype(L, 3, LUA_TSTRING);
  12153. String withWhat = String(lua_tostring(L, 3));
  12154. lua_pushstring(L, inst->replace(what, withWhat).c_str());
  12155. return 1;
  12156. }
  12157. static int Polycode_String_NumberToString(lua_State *L) {
  12158. luaL_checktype(L, 1, LUA_TUSERDATA);
  12159. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12160. luaL_checktype(L, 2, LUA_TNUMBER);
  12161. Number value = lua_tonumber(L, 2);
  12162. luaL_checktype(L, 3, LUA_TNUMBER);
  12163. int precision = lua_tointeger(L, 3);
  12164. lua_pushstring(L, inst->NumberToString(value, precision).c_str());
  12165. return 1;
  12166. }
  12167. static int Polycode_String_toNumber(lua_State *L) {
  12168. luaL_checktype(L, 1, LUA_TUSERDATA);
  12169. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12170. lua_pushnumber(L, inst->toNumber());
  12171. return 1;
  12172. }
  12173. static int Polycode_String_toInteger(lua_State *L) {
  12174. luaL_checktype(L, 1, LUA_TUSERDATA);
  12175. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12176. lua_pushinteger(L, inst->toInteger());
  12177. return 1;
  12178. }
  12179. static int Polycode_String_IntToString(lua_State *L) {
  12180. luaL_checktype(L, 1, LUA_TUSERDATA);
  12181. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12182. luaL_checktype(L, 2, LUA_TNUMBER);
  12183. int value = lua_tointeger(L, 2);
  12184. lua_pushstring(L, inst->IntToString(value).c_str());
  12185. return 1;
  12186. }
  12187. static int Polycode_String_c_str(lua_State *L) {
  12188. luaL_checktype(L, 1, LUA_TUSERDATA);
  12189. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12190. PolyBase *ptrRetVal = (PolyBase*)inst->c_str();
  12191. if(ptrRetVal == NULL) {
  12192. lua_pushnil(L);
  12193. } else {
  12194. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12195. *userdataPtr = ptrRetVal;
  12196. }
  12197. return 1;
  12198. }
  12199. static int Polycode_String_getDataWithEncoding(lua_State *L) {
  12200. luaL_checktype(L, 1, LUA_TUSERDATA);
  12201. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12202. luaL_checktype(L, 2, LUA_TNUMBER);
  12203. int encoding = lua_tointeger(L, 2);
  12204. PolyBase *ptrRetVal = (PolyBase*)inst->getDataWithEncoding(encoding);
  12205. if(ptrRetVal == NULL) {
  12206. lua_pushnil(L);
  12207. } else {
  12208. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12209. *userdataPtr = ptrRetVal;
  12210. }
  12211. return 1;
  12212. }
  12213. static int Polycode_String_getWDataWithEncoding(lua_State *L) {
  12214. luaL_checktype(L, 1, LUA_TUSERDATA);
  12215. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12216. luaL_checktype(L, 2, LUA_TNUMBER);
  12217. int encoding = lua_tointeger(L, 2);
  12218. PolyBase *ptrRetVal = (PolyBase*)inst->getWDataWithEncoding(encoding);
  12219. if(ptrRetVal == NULL) {
  12220. lua_pushnil(L);
  12221. } else {
  12222. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12223. *userdataPtr = ptrRetVal;
  12224. }
  12225. return 1;
  12226. }
  12227. static int Polycode_String_append(lua_State *L) {
  12228. luaL_checktype(L, 1, LUA_TUSERDATA);
  12229. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12230. luaL_checktype(L, 2, LUA_TUSERDATA);
  12231. char c = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  12232. inst->append(c);
  12233. return 0;
  12234. }
  12235. static int Polycode_String_getDataSizeWithEncoding(lua_State *L) {
  12236. luaL_checktype(L, 1, LUA_TUSERDATA);
  12237. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12238. luaL_checktype(L, 2, LUA_TNUMBER);
  12239. int encoding = lua_tointeger(L, 2);
  12240. lua_pushinteger(L, inst->getDataSizeWithEncoding(encoding));
  12241. return 1;
  12242. }
  12243. static int Polycode_String_setDataWithEncoding(lua_State *L) {
  12244. luaL_checktype(L, 1, LUA_TUSERDATA);
  12245. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12246. luaL_checktype(L, 2, LUA_TUSERDATA);
  12247. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  12248. luaL_checktype(L, 3, LUA_TNUMBER);
  12249. int encoding = lua_tointeger(L, 3);
  12250. inst->setDataWithEncoding(data, encoding);
  12251. return 0;
  12252. }
  12253. static int Polycode_String_isNumber(lua_State *L) {
  12254. luaL_checktype(L, 1, LUA_TUSERDATA);
  12255. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  12256. lua_pushboolean(L, inst->isNumber());
  12257. return 1;
  12258. }
  12259. static int Polycode_RenderBuffer(lua_State *L) {
  12260. luaL_checktype(L, 1, LUA_TNUMBER);
  12261. int width = lua_tointeger(L, 1);
  12262. luaL_checktype(L, 2, LUA_TNUMBER);
  12263. int height = lua_tointeger(L, 2);
  12264. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12265. bool attachDepthBuffer = lua_toboolean(L, 3) != 0;
  12266. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12267. bool floatingPoint = lua_toboolean(L, 4) != 0;
  12268. RenderBuffer *inst = new RenderBuffer(width, height, attachDepthBuffer, floatingPoint);
  12269. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12270. *userdataPtr = (PolyBase*)inst;
  12271. luaL_getmetatable(L, "Polycode.RenderBuffer");
  12272. lua_setmetatable(L, -2);
  12273. return 1;
  12274. }
  12275. static int Polycode_RenderBuffer_getWidth(lua_State *L) {
  12276. luaL_checktype(L, 1, LUA_TUSERDATA);
  12277. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  12278. lua_pushinteger(L, inst->getWidth());
  12279. return 1;
  12280. }
  12281. static int Polycode_RenderBuffer_getHeight(lua_State *L) {
  12282. luaL_checktype(L, 1, LUA_TUSERDATA);
  12283. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  12284. lua_pushinteger(L, inst->getHeight());
  12285. return 1;
  12286. }
  12287. static int Polycode_Texture_reloadResource(lua_State *L) {
  12288. luaL_checktype(L, 1, LUA_TUSERDATA);
  12289. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12290. inst->reloadResource();
  12291. return 0;
  12292. }
  12293. static int Polycode_Texture_setImageData(lua_State *L) {
  12294. luaL_checktype(L, 1, LUA_TUSERDATA);
  12295. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12296. luaL_checktype(L, 2, LUA_TUSERDATA);
  12297. Image* data = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  12298. inst->setImageData(data);
  12299. return 0;
  12300. }
  12301. static int Polycode_Texture_getTextureData(lua_State *L) {
  12302. luaL_checktype(L, 1, LUA_TUSERDATA);
  12303. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12304. PolyBase *ptrRetVal = (PolyBase*)inst->getTextureData();
  12305. if(ptrRetVal == NULL) {
  12306. lua_pushnil(L);
  12307. } else {
  12308. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12309. *userdataPtr = ptrRetVal;
  12310. }
  12311. return 1;
  12312. }
  12313. static int Polycode_Texture_getWidth(lua_State *L) {
  12314. luaL_checktype(L, 1, LUA_TUSERDATA);
  12315. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12316. lua_pushinteger(L, inst->getWidth());
  12317. return 1;
  12318. }
  12319. static int Polycode_Texture_getHeight(lua_State *L) {
  12320. luaL_checktype(L, 1, LUA_TUSERDATA);
  12321. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12322. lua_pushinteger(L, inst->getHeight());
  12323. return 1;
  12324. }
  12325. static int Polycode_Texture_setCreateMipmaps(lua_State *L) {
  12326. luaL_checktype(L, 1, LUA_TUSERDATA);
  12327. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12328. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12329. bool createMipmapsIn = lua_toboolean(L, 2) != 0;
  12330. inst->setCreateMipmaps(createMipmapsIn);
  12331. return 0;
  12332. }
  12333. static int Polycode_Texture_getCreateMipmaps(lua_State *L) {
  12334. luaL_checktype(L, 1, LUA_TUSERDATA);
  12335. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12336. lua_pushboolean(L, inst->getCreateMipmaps());
  12337. return 1;
  12338. }
  12339. static int Polycode_Timer(lua_State *L) {
  12340. luaL_checktype(L, 1, LUA_TBOOLEAN);
  12341. bool triggerMode = lua_toboolean(L, 1) != 0;
  12342. luaL_checktype(L, 2, LUA_TNUMBER);
  12343. int msecs = lua_tointeger(L, 2);
  12344. Timer *inst = new Timer(triggerMode, msecs);
  12345. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12346. *userdataPtr = (PolyBase*)inst;
  12347. luaL_getmetatable(L, "Polycode.Timer");
  12348. lua_setmetatable(L, -2);
  12349. return 1;
  12350. }
  12351. static int Polycode_Timer_Pause(lua_State *L) {
  12352. luaL_checktype(L, 1, LUA_TUSERDATA);
  12353. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12354. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12355. bool paused = lua_toboolean(L, 2) != 0;
  12356. inst->Pause(paused);
  12357. return 0;
  12358. }
  12359. static int Polycode_Timer_isPaused(lua_State *L) {
  12360. luaL_checktype(L, 1, LUA_TUSERDATA);
  12361. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12362. lua_pushboolean(L, inst->isPaused());
  12363. return 1;
  12364. }
  12365. static int Polycode_Timer_getTicks(lua_State *L) {
  12366. luaL_checktype(L, 1, LUA_TUSERDATA);
  12367. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12368. lua_pushinteger(L, inst->getTicks());
  12369. return 1;
  12370. }
  12371. static int Polycode_Timer_Update(lua_State *L) {
  12372. luaL_checktype(L, 1, LUA_TUSERDATA);
  12373. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12374. luaL_checktype(L, 2, LUA_TNUMBER);
  12375. int ticks = lua_tointeger(L, 2);
  12376. inst->Update(ticks);
  12377. return 0;
  12378. }
  12379. static int Polycode_Timer_Reset(lua_State *L) {
  12380. luaL_checktype(L, 1, LUA_TUSERDATA);
  12381. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12382. inst->Reset();
  12383. return 0;
  12384. }
  12385. static int Polycode_Timer_hasElapsed(lua_State *L) {
  12386. luaL_checktype(L, 1, LUA_TUSERDATA);
  12387. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12388. lua_pushboolean(L, inst->hasElapsed());
  12389. return 1;
  12390. }
  12391. static int Polycode_Timer_getElapsedf(lua_State *L) {
  12392. luaL_checktype(L, 1, LUA_TUSERDATA);
  12393. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12394. lua_pushnumber(L, inst->getElapsedf());
  12395. return 1;
  12396. }
  12397. static int Polycode_Timer_setTimerInterval(lua_State *L) {
  12398. luaL_checktype(L, 1, LUA_TUSERDATA);
  12399. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  12400. luaL_checktype(L, 2, LUA_TNUMBER);
  12401. int msecs = lua_tointeger(L, 2);
  12402. inst->setTimerInterval(msecs);
  12403. return 0;
  12404. }
  12405. static int Polycode_TimerManager(lua_State *L) {
  12406. TimerManager *inst = new TimerManager();
  12407. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12408. *userdataPtr = (PolyBase*)inst;
  12409. luaL_getmetatable(L, "Polycode.TimerManager");
  12410. lua_setmetatable(L, -2);
  12411. return 1;
  12412. }
  12413. static int Polycode_TimerManager_removeTimer(lua_State *L) {
  12414. luaL_checktype(L, 1, LUA_TUSERDATA);
  12415. TimerManager *inst = (TimerManager*) *((PolyBase**)lua_touserdata(L, 1));
  12416. luaL_checktype(L, 2, LUA_TUSERDATA);
  12417. Timer* timer = (Timer*) *((PolyBase**)lua_touserdata(L, 2));
  12418. inst->removeTimer(timer);
  12419. return 0;
  12420. }
  12421. static int Polycode_TimerManager_addTimer(lua_State *L) {
  12422. luaL_checktype(L, 1, LUA_TUSERDATA);
  12423. TimerManager *inst = (TimerManager*) *((PolyBase**)lua_touserdata(L, 1));
  12424. luaL_checktype(L, 2, LUA_TUSERDATA);
  12425. Timer* timer = (Timer*) *((PolyBase**)lua_touserdata(L, 2));
  12426. inst->addTimer(timer);
  12427. return 0;
  12428. }
  12429. static int Polycode_TimerManager_Update(lua_State *L) {
  12430. luaL_checktype(L, 1, LUA_TUSERDATA);
  12431. TimerManager *inst = (TimerManager*) *((PolyBase**)lua_touserdata(L, 1));
  12432. inst->Update();
  12433. return 0;
  12434. }
  12435. static int Polycode_Vector2(lua_State *L) {
  12436. luaL_checktype(L, 1, LUA_TNUMBER);
  12437. Number x = lua_tonumber(L, 1);
  12438. luaL_checktype(L, 2, LUA_TNUMBER);
  12439. Number y = lua_tonumber(L, 2);
  12440. Vector2 *inst = new Vector2(x, y);
  12441. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12442. *userdataPtr = (PolyBase*)inst;
  12443. luaL_getmetatable(L, "Polycode.Vector2");
  12444. lua_setmetatable(L, -2);
  12445. return 1;
  12446. }
  12447. static int Polycode_Vector2_set(lua_State *L) {
  12448. luaL_checktype(L, 1, LUA_TUSERDATA);
  12449. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12450. luaL_checktype(L, 2, LUA_TNUMBER);
  12451. Number x = lua_tonumber(L, 2);
  12452. luaL_checktype(L, 3, LUA_TNUMBER);
  12453. Number y = lua_tonumber(L, 3);
  12454. inst->set(x, y);
  12455. return 0;
  12456. }
  12457. static int Polycode_Vector2_distance(lua_State *L) {
  12458. luaL_checktype(L, 1, LUA_TUSERDATA);
  12459. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12460. luaL_checktype(L, 2, LUA_TUSERDATA);
  12461. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  12462. lua_pushnumber(L, inst->distance(vec2));
  12463. return 1;
  12464. }
  12465. static int Polycode_Vector2_length(lua_State *L) {
  12466. luaL_checktype(L, 1, LUA_TUSERDATA);
  12467. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12468. lua_pushnumber(L, inst->length());
  12469. return 1;
  12470. }
  12471. static int Polycode_Vector2_dot(lua_State *L) {
  12472. luaL_checktype(L, 1, LUA_TUSERDATA);
  12473. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12474. luaL_checktype(L, 2, LUA_TUSERDATA);
  12475. Vector2 u = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  12476. lua_pushnumber(L, inst->dot(u));
  12477. return 1;
  12478. }
  12479. static int Polycode_Vector2_crossProduct(lua_State *L) {
  12480. luaL_checktype(L, 1, LUA_TUSERDATA);
  12481. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12482. luaL_checktype(L, 2, LUA_TUSERDATA);
  12483. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  12484. lua_pushnumber(L, inst->crossProduct(vec2));
  12485. return 1;
  12486. }
  12487. static int Polycode_Vector2_angle(lua_State *L) {
  12488. luaL_checktype(L, 1, LUA_TUSERDATA);
  12489. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12490. luaL_checktype(L, 2, LUA_TUSERDATA);
  12491. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  12492. lua_pushnumber(L, inst->angle(vec2));
  12493. return 1;
  12494. }
  12495. static int Polycode_Vector2_Normalize(lua_State *L) {
  12496. luaL_checktype(L, 1, LUA_TUSERDATA);
  12497. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  12498. inst->Normalize();
  12499. return 0;
  12500. }
  12501. static int Polycode_Vector3(lua_State *L) {
  12502. luaL_checktype(L, 1, LUA_TNUMBER);
  12503. Number x = lua_tonumber(L, 1);
  12504. luaL_checktype(L, 2, LUA_TNUMBER);
  12505. Number y = lua_tonumber(L, 2);
  12506. luaL_checktype(L, 3, LUA_TNUMBER);
  12507. Number z = lua_tonumber(L, 3);
  12508. Vector3 *inst = new Vector3(x, y, z);
  12509. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12510. *userdataPtr = (PolyBase*)inst;
  12511. luaL_getmetatable(L, "Polycode.Vector3");
  12512. lua_setmetatable(L, -2);
  12513. return 1;
  12514. }
  12515. static int Polycode_Vector3_set(lua_State *L) {
  12516. luaL_checktype(L, 1, LUA_TUSERDATA);
  12517. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12518. luaL_checktype(L, 2, LUA_TNUMBER);
  12519. Number x = lua_tonumber(L, 2);
  12520. luaL_checktype(L, 3, LUA_TNUMBER);
  12521. Number y = lua_tonumber(L, 3);
  12522. luaL_checktype(L, 4, LUA_TNUMBER);
  12523. Number z = lua_tonumber(L, 4);
  12524. inst->set(x, y, z);
  12525. return 0;
  12526. }
  12527. static int Polycode_Vector3_distance(lua_State *L) {
  12528. luaL_checktype(L, 1, LUA_TUSERDATA);
  12529. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12530. luaL_checktype(L, 2, LUA_TUSERDATA);
  12531. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12532. lua_pushnumber(L, inst->distance(vec2));
  12533. return 1;
  12534. }
  12535. static int Polycode_Vector3_angleBetween(lua_State *L) {
  12536. luaL_checktype(L, 1, LUA_TUSERDATA);
  12537. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12538. luaL_checktype(L, 2, LUA_TUSERDATA);
  12539. Vector3 dest = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12540. lua_pushnumber(L, inst->angleBetween(dest));
  12541. return 1;
  12542. }
  12543. static int Polycode_Vector3_length(lua_State *L) {
  12544. luaL_checktype(L, 1, LUA_TUSERDATA);
  12545. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12546. lua_pushnumber(L, inst->length());
  12547. return 1;
  12548. }
  12549. static int Polycode_Vector3_lengthSquared(lua_State *L) {
  12550. luaL_checktype(L, 1, LUA_TUSERDATA);
  12551. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12552. lua_pushnumber(L, inst->lengthSquared());
  12553. return 1;
  12554. }
  12555. static int Polycode_Vector3_setLength(lua_State *L) {
  12556. luaL_checktype(L, 1, LUA_TUSERDATA);
  12557. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12558. luaL_checktype(L, 2, LUA_TNUMBER);
  12559. Number newLength = lua_tonumber(L, 2);
  12560. Vector3 *retInst = new Vector3();
  12561. *retInst = inst->setLength(newLength);
  12562. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12563. luaL_getmetatable(L, "Polycode.Vector3");
  12564. lua_setmetatable(L, -2);
  12565. *userdataPtr = (PolyBase*)retInst;
  12566. return 1;
  12567. }
  12568. static int Polycode_Vector3_dot(lua_State *L) {
  12569. luaL_checktype(L, 1, LUA_TUSERDATA);
  12570. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12571. luaL_checktype(L, 2, LUA_TUSERDATA);
  12572. Vector3 u = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12573. lua_pushnumber(L, inst->dot(u));
  12574. return 1;
  12575. }
  12576. static int Polycode_Vector3_crossProduct(lua_State *L) {
  12577. luaL_checktype(L, 1, LUA_TUSERDATA);
  12578. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12579. luaL_checktype(L, 2, LUA_TUSERDATA);
  12580. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  12581. Vector3 *retInst = new Vector3();
  12582. *retInst = inst->crossProduct(vec2);
  12583. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12584. luaL_getmetatable(L, "Polycode.Vector3");
  12585. lua_setmetatable(L, -2);
  12586. *userdataPtr = (PolyBase*)retInst;
  12587. return 1;
  12588. }
  12589. static int Polycode_Vector3_Normalize(lua_State *L) {
  12590. luaL_checktype(L, 1, LUA_TUSERDATA);
  12591. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  12592. inst->Normalize();
  12593. return 0;
  12594. }
  12595. static int Polycode_Vector4(lua_State *L) {
  12596. luaL_checktype(L, 1, LUA_TNUMBER);
  12597. Number x = lua_tonumber(L, 1);
  12598. luaL_checktype(L, 2, LUA_TNUMBER);
  12599. Number y = lua_tonumber(L, 2);
  12600. luaL_checktype(L, 3, LUA_TNUMBER);
  12601. Number z = lua_tonumber(L, 3);
  12602. luaL_checktype(L, 4, LUA_TNUMBER);
  12603. Number w = lua_tonumber(L, 4);
  12604. Vector4 *inst = new Vector4(x, y, z, w);
  12605. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12606. *userdataPtr = (PolyBase*)inst;
  12607. luaL_getmetatable(L, "Polycode.Vector4");
  12608. lua_setmetatable(L, -2);
  12609. return 1;
  12610. }
  12611. static int Polycode_Vector4_set(lua_State *L) {
  12612. luaL_checktype(L, 1, LUA_TUSERDATA);
  12613. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  12614. luaL_checktype(L, 2, LUA_TNUMBER);
  12615. Number x = lua_tonumber(L, 2);
  12616. luaL_checktype(L, 3, LUA_TNUMBER);
  12617. Number y = lua_tonumber(L, 3);
  12618. luaL_checktype(L, 4, LUA_TNUMBER);
  12619. Number z = lua_tonumber(L, 4);
  12620. luaL_checktype(L, 5, LUA_TNUMBER);
  12621. Number w = lua_tonumber(L, 5);
  12622. inst->set(x, y, z, w);
  12623. return 0;
  12624. }
  12625. static int Polycode_Vector4_dot(lua_State *L) {
  12626. luaL_checktype(L, 1, LUA_TUSERDATA);
  12627. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  12628. luaL_checktype(L, 2, LUA_TUSERDATA);
  12629. Vector4 u = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  12630. lua_pushnumber(L, inst->dot(u));
  12631. return 1;
  12632. }
  12633. }