PolycodeLuaWrappers.h 673 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081
  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_BezierCurve_get_insertPoint(lua_State *L) {
  92. luaL_checktype(L, 1, LUA_TUSERDATA);
  93. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  94. if(!inst->insertPoint) {
  95. lua_pushnil(L);
  96. } else {
  97. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  98. *userdataPtr = (PolyBase*)inst->insertPoint;
  99. }
  100. return 1;
  101. }
  102. static int Polycode_BezierCurve_get_evaluationAccuracy(lua_State *L) {
  103. luaL_checktype(L, 1, LUA_TUSERDATA);
  104. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  105. lua_pushnumber(L, inst->evaluationAccuracy);
  106. return 1;
  107. }
  108. static int Polycode_BezierCurve_set_insertPoint(lua_State *L) {
  109. luaL_checktype(L, 1, LUA_TUSERDATA);
  110. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  111. luaL_checktype(L, 2, LUA_TUSERDATA);
  112. BezierPoint* *argInst = (BezierPoint**) *((PolyBase**)lua_touserdata(L, 2));
  113. inst->insertPoint = *argInst;
  114. return 0;
  115. }
  116. static int Polycode_BezierCurve_set_evaluationAccuracy(lua_State *L) {
  117. luaL_checktype(L, 1, LUA_TUSERDATA);
  118. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  119. Number param = lua_tonumber(L, 2);
  120. inst->evaluationAccuracy = param;
  121. return 0;
  122. }
  123. static int Polycode_BezierCurve(lua_State *L) {
  124. BezierCurve *inst = new BezierCurve();
  125. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  126. *userdataPtr = (PolyBase*)inst;
  127. luaL_getmetatable(L, "Polycode.BezierCurve");
  128. lua_setmetatable(L, -2);
  129. return 1;
  130. }
  131. static int Polycode_BezierCurve_getControlPoint(lua_State *L) {
  132. luaL_checktype(L, 1, LUA_TUSERDATA);
  133. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  134. luaL_checktype(L, 2, LUA_TNUMBER);
  135. int index = lua_tointeger(L, 2);
  136. PolyBase *ptrRetVal = (PolyBase*)inst->getControlPoint(index);
  137. if(ptrRetVal == NULL) {
  138. lua_pushnil(L);
  139. } else {
  140. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  141. *userdataPtr = ptrRetVal;
  142. }
  143. return 1;
  144. }
  145. static int Polycode_BezierCurve_getNumControlPoints(lua_State *L) {
  146. luaL_checktype(L, 1, LUA_TUSERDATA);
  147. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  148. lua_pushinteger(L, inst->getNumControlPoints());
  149. return 1;
  150. }
  151. static int Polycode_BezierCurve_addControlPoint(lua_State *L) {
  152. luaL_checktype(L, 1, LUA_TUSERDATA);
  153. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  154. luaL_checktype(L, 2, LUA_TNUMBER);
  155. Number p1x = lua_tonumber(L, 2);
  156. luaL_checktype(L, 3, LUA_TNUMBER);
  157. Number p1y = lua_tonumber(L, 3);
  158. luaL_checktype(L, 4, LUA_TNUMBER);
  159. Number p1z = lua_tonumber(L, 4);
  160. luaL_checktype(L, 5, LUA_TNUMBER);
  161. Number p2x = lua_tonumber(L, 5);
  162. luaL_checktype(L, 6, LUA_TNUMBER);
  163. Number p2y = lua_tonumber(L, 6);
  164. luaL_checktype(L, 7, LUA_TNUMBER);
  165. Number p2z = lua_tonumber(L, 7);
  166. luaL_checktype(L, 8, LUA_TNUMBER);
  167. Number p3x = lua_tonumber(L, 8);
  168. luaL_checktype(L, 9, LUA_TNUMBER);
  169. Number p3y = lua_tonumber(L, 9);
  170. luaL_checktype(L, 10, LUA_TNUMBER);
  171. Number p3z = lua_tonumber(L, 10);
  172. inst->addControlPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  173. return 0;
  174. }
  175. static int Polycode_BezierCurve_addControlPoint3dWithHandles(lua_State *L) {
  176. luaL_checktype(L, 1, LUA_TUSERDATA);
  177. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  178. luaL_checktype(L, 2, LUA_TNUMBER);
  179. Number p1x = lua_tonumber(L, 2);
  180. luaL_checktype(L, 3, LUA_TNUMBER);
  181. Number p1y = lua_tonumber(L, 3);
  182. luaL_checktype(L, 4, LUA_TNUMBER);
  183. Number p1z = lua_tonumber(L, 4);
  184. luaL_checktype(L, 5, LUA_TNUMBER);
  185. Number p2x = lua_tonumber(L, 5);
  186. luaL_checktype(L, 6, LUA_TNUMBER);
  187. Number p2y = lua_tonumber(L, 6);
  188. luaL_checktype(L, 7, LUA_TNUMBER);
  189. Number p2z = lua_tonumber(L, 7);
  190. luaL_checktype(L, 8, LUA_TNUMBER);
  191. Number p3x = lua_tonumber(L, 8);
  192. luaL_checktype(L, 9, LUA_TNUMBER);
  193. Number p3y = lua_tonumber(L, 9);
  194. luaL_checktype(L, 10, LUA_TNUMBER);
  195. Number p3z = lua_tonumber(L, 10);
  196. inst->addControlPoint3dWithHandles(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  197. return 0;
  198. }
  199. static int Polycode_BezierCurve_addControlPoint3d(lua_State *L) {
  200. luaL_checktype(L, 1, LUA_TUSERDATA);
  201. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  202. luaL_checktype(L, 2, LUA_TNUMBER);
  203. Number x = lua_tonumber(L, 2);
  204. luaL_checktype(L, 3, LUA_TNUMBER);
  205. Number y = lua_tonumber(L, 3);
  206. luaL_checktype(L, 4, LUA_TNUMBER);
  207. Number z = lua_tonumber(L, 4);
  208. inst->addControlPoint3d(x, y, z);
  209. return 0;
  210. }
  211. static int Polycode_BezierCurve_addControlPoint2dWithHandles(lua_State *L) {
  212. luaL_checktype(L, 1, LUA_TUSERDATA);
  213. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  214. luaL_checktype(L, 2, LUA_TNUMBER);
  215. Number p1x = lua_tonumber(L, 2);
  216. luaL_checktype(L, 3, LUA_TNUMBER);
  217. Number p1y = lua_tonumber(L, 3);
  218. luaL_checktype(L, 4, LUA_TNUMBER);
  219. Number p2x = lua_tonumber(L, 4);
  220. luaL_checktype(L, 5, LUA_TNUMBER);
  221. Number p2y = lua_tonumber(L, 5);
  222. luaL_checktype(L, 6, LUA_TNUMBER);
  223. Number p3x = lua_tonumber(L, 6);
  224. luaL_checktype(L, 7, LUA_TNUMBER);
  225. Number p3y = lua_tonumber(L, 7);
  226. inst->addControlPoint2dWithHandles(p1x, p1y, p2x, p2y, p3x, p3y);
  227. return 0;
  228. }
  229. static int Polycode_BezierCurve_addControlPoint2d(lua_State *L) {
  230. luaL_checktype(L, 1, LUA_TUSERDATA);
  231. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  232. luaL_checktype(L, 2, LUA_TNUMBER);
  233. Number x = lua_tonumber(L, 2);
  234. luaL_checktype(L, 3, LUA_TNUMBER);
  235. Number y = lua_tonumber(L, 3);
  236. inst->addControlPoint2d(x, y);
  237. return 0;
  238. }
  239. static int Polycode_BezierCurve_getPointAt(lua_State *L) {
  240. luaL_checktype(L, 1, LUA_TUSERDATA);
  241. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  242. luaL_checktype(L, 2, LUA_TNUMBER);
  243. Number a = lua_tonumber(L, 2);
  244. Vector3 *retInst = new Vector3();
  245. *retInst = inst->getPointAt(a);
  246. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  247. luaL_getmetatable(L, "Polycode.Vector3");
  248. lua_setmetatable(L, -2);
  249. *userdataPtr = (PolyBase*)retInst;
  250. return 1;
  251. }
  252. static int Polycode_BezierCurve_getPointBetween(lua_State *L) {
  253. luaL_checktype(L, 1, LUA_TUSERDATA);
  254. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  255. luaL_checktype(L, 2, LUA_TNUMBER);
  256. Number a = lua_tonumber(L, 2);
  257. luaL_checktype(L, 3, LUA_TUSERDATA);
  258. BezierPoint* bp1 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 3));
  259. luaL_checktype(L, 4, LUA_TUSERDATA);
  260. BezierPoint* bp2 = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 4));
  261. Vector3 *retInst = new Vector3();
  262. *retInst = inst->getPointBetween(a, bp1, bp2);
  263. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  264. luaL_getmetatable(L, "Polycode.Vector3");
  265. lua_setmetatable(L, -2);
  266. *userdataPtr = (PolyBase*)retInst;
  267. return 1;
  268. }
  269. static int Polycode_BezierCurve_clearControlPoints(lua_State *L) {
  270. luaL_checktype(L, 1, LUA_TUSERDATA);
  271. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  272. inst->clearControlPoints();
  273. return 0;
  274. }
  275. static int Polycode_BezierCurve_getYValueAtX(lua_State *L) {
  276. luaL_checktype(L, 1, LUA_TUSERDATA);
  277. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  278. luaL_checktype(L, 2, LUA_TNUMBER);
  279. Number x = lua_tonumber(L, 2);
  280. lua_pushnumber(L, inst->getYValueAtX(x));
  281. return 1;
  282. }
  283. static int Polycode_BezierCurve_getTValueAtX(lua_State *L) {
  284. luaL_checktype(L, 1, LUA_TUSERDATA);
  285. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  286. luaL_checktype(L, 2, LUA_TNUMBER);
  287. Number x = lua_tonumber(L, 2);
  288. lua_pushnumber(L, inst->getTValueAtX(x));
  289. return 1;
  290. }
  291. static int Polycode_BezierCurve_removePoint(lua_State *L) {
  292. luaL_checktype(L, 1, LUA_TUSERDATA);
  293. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  294. luaL_checktype(L, 2, LUA_TUSERDATA);
  295. BezierPoint* point = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 2));
  296. inst->removePoint(point);
  297. return 0;
  298. }
  299. static int Polycode_BezierCurve_setHeightCacheResolution(lua_State *L) {
  300. luaL_checktype(L, 1, LUA_TUSERDATA);
  301. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  302. luaL_checktype(L, 2, LUA_TNUMBER);
  303. Number resolution = lua_tonumber(L, 2);
  304. inst->setHeightCacheResolution(resolution);
  305. return 0;
  306. }
  307. static int Polycode_BezierCurve_rebuildHeightCache(lua_State *L) {
  308. luaL_checktype(L, 1, LUA_TUSERDATA);
  309. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  310. inst->rebuildHeightCache();
  311. return 0;
  312. }
  313. static int Polycode_BezierCurve_recalculateDistances(lua_State *L) {
  314. luaL_checktype(L, 1, LUA_TUSERDATA);
  315. BezierCurve *inst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  316. inst->recalculateDistances();
  317. return 0;
  318. }
  319. static int Polycode_delete_BezierCurve(lua_State *L) {
  320. luaL_checktype(L, 1, LUA_TUSERDATA);
  321. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  322. delete ((BezierCurve*) *inst);
  323. *inst = NULL;
  324. return 0;
  325. }
  326. static int Polycode_BezierPoint_get_p1(lua_State *L) {
  327. luaL_checktype(L, 1, LUA_TUSERDATA);
  328. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  329. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  330. *userdataPtr = (PolyBase*)&inst->p1;
  331. return 1;
  332. }
  333. static int Polycode_BezierPoint_get_p2(lua_State *L) {
  334. luaL_checktype(L, 1, LUA_TUSERDATA);
  335. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  336. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  337. *userdataPtr = (PolyBase*)&inst->p2;
  338. return 1;
  339. }
  340. static int Polycode_BezierPoint_get_p3(lua_State *L) {
  341. luaL_checktype(L, 1, LUA_TUSERDATA);
  342. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  343. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  344. *userdataPtr = (PolyBase*)&inst->p3;
  345. return 1;
  346. }
  347. static int Polycode_BezierPoint_set_p1(lua_State *L) {
  348. luaL_checktype(L, 1, LUA_TUSERDATA);
  349. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  350. luaL_checktype(L, 2, LUA_TUSERDATA);
  351. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  352. inst->p1 = *argInst;
  353. return 0;
  354. }
  355. static int Polycode_BezierPoint_set_p2(lua_State *L) {
  356. luaL_checktype(L, 1, LUA_TUSERDATA);
  357. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  358. luaL_checktype(L, 2, LUA_TUSERDATA);
  359. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  360. inst->p2 = *argInst;
  361. return 0;
  362. }
  363. static int Polycode_BezierPoint_set_p3(lua_State *L) {
  364. luaL_checktype(L, 1, LUA_TUSERDATA);
  365. BezierPoint *inst = (BezierPoint*) *((PolyBase**)lua_touserdata(L, 1));
  366. luaL_checktype(L, 2, LUA_TUSERDATA);
  367. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  368. inst->p3 = *argInst;
  369. return 0;
  370. }
  371. static int Polycode_BezierPoint(lua_State *L) {
  372. luaL_checktype(L, 1, LUA_TNUMBER);
  373. Number p1x = lua_tonumber(L, 1);
  374. luaL_checktype(L, 2, LUA_TNUMBER);
  375. Number p1y = lua_tonumber(L, 2);
  376. luaL_checktype(L, 3, LUA_TNUMBER);
  377. Number p1z = lua_tonumber(L, 3);
  378. luaL_checktype(L, 4, LUA_TNUMBER);
  379. Number p2x = lua_tonumber(L, 4);
  380. luaL_checktype(L, 5, LUA_TNUMBER);
  381. Number p2y = lua_tonumber(L, 5);
  382. luaL_checktype(L, 6, LUA_TNUMBER);
  383. Number p2z = lua_tonumber(L, 6);
  384. luaL_checktype(L, 7, LUA_TNUMBER);
  385. Number p3x = lua_tonumber(L, 7);
  386. luaL_checktype(L, 8, LUA_TNUMBER);
  387. Number p3y = lua_tonumber(L, 8);
  388. luaL_checktype(L, 9, LUA_TNUMBER);
  389. Number p3z = lua_tonumber(L, 9);
  390. BezierPoint *inst = new BezierPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z);
  391. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  392. *userdataPtr = (PolyBase*)inst;
  393. luaL_getmetatable(L, "Polycode.BezierPoint");
  394. lua_setmetatable(L, -2);
  395. return 1;
  396. }
  397. static int Polycode_delete_BezierPoint(lua_State *L) {
  398. luaL_checktype(L, 1, LUA_TUSERDATA);
  399. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  400. delete ((BezierPoint*) *inst);
  401. *inst = NULL;
  402. return 0;
  403. }
  404. static int Polycode_Bone_get_parentBoneId(lua_State *L) {
  405. luaL_checktype(L, 1, LUA_TUSERDATA);
  406. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  407. lua_pushinteger(L, inst->parentBoneId);
  408. return 1;
  409. }
  410. static int Polycode_Bone_get_boneMatrix(lua_State *L) {
  411. luaL_checktype(L, 1, LUA_TUSERDATA);
  412. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  413. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  414. *userdataPtr = (PolyBase*)&inst->boneMatrix;
  415. return 1;
  416. }
  417. static int Polycode_Bone_get_restMatrix(lua_State *L) {
  418. luaL_checktype(L, 1, LUA_TUSERDATA);
  419. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  420. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  421. *userdataPtr = (PolyBase*)&inst->restMatrix;
  422. return 1;
  423. }
  424. static int Polycode_Bone_get_baseMatrix(lua_State *L) {
  425. luaL_checktype(L, 1, LUA_TUSERDATA);
  426. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  427. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  428. *userdataPtr = (PolyBase*)&inst->baseMatrix;
  429. return 1;
  430. }
  431. static int Polycode_Bone_get_finalMatrix(lua_State *L) {
  432. luaL_checktype(L, 1, LUA_TUSERDATA);
  433. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  434. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  435. *userdataPtr = (PolyBase*)&inst->finalMatrix;
  436. return 1;
  437. }
  438. static int Polycode_Bone_get_baseRotation(lua_State *L) {
  439. luaL_checktype(L, 1, LUA_TUSERDATA);
  440. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  441. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  442. *userdataPtr = (PolyBase*)&inst->baseRotation;
  443. return 1;
  444. }
  445. static int Polycode_Bone_get_baseScale(lua_State *L) {
  446. luaL_checktype(L, 1, LUA_TUSERDATA);
  447. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  448. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  449. *userdataPtr = (PolyBase*)&inst->baseScale;
  450. return 1;
  451. }
  452. static int Polycode_Bone_get_basePosition(lua_State *L) {
  453. luaL_checktype(L, 1, LUA_TUSERDATA);
  454. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  455. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  456. *userdataPtr = (PolyBase*)&inst->basePosition;
  457. return 1;
  458. }
  459. static int Polycode_Bone_get_disableAnimation(lua_State *L) {
  460. luaL_checktype(L, 1, LUA_TUSERDATA);
  461. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  462. lua_pushboolean(L, inst->disableAnimation);
  463. return 1;
  464. }
  465. static int Polycode_Bone_set_parentBoneId(lua_State *L) {
  466. luaL_checktype(L, 1, LUA_TUSERDATA);
  467. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  468. int param = lua_tointeger(L, 2);
  469. inst->parentBoneId = param;
  470. return 0;
  471. }
  472. static int Polycode_Bone_set_boneMatrix(lua_State *L) {
  473. luaL_checktype(L, 1, LUA_TUSERDATA);
  474. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  475. luaL_checktype(L, 2, LUA_TUSERDATA);
  476. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  477. inst->boneMatrix = *argInst;
  478. return 0;
  479. }
  480. static int Polycode_Bone_set_restMatrix(lua_State *L) {
  481. luaL_checktype(L, 1, LUA_TUSERDATA);
  482. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  483. luaL_checktype(L, 2, LUA_TUSERDATA);
  484. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  485. inst->restMatrix = *argInst;
  486. return 0;
  487. }
  488. static int Polycode_Bone_set_baseMatrix(lua_State *L) {
  489. luaL_checktype(L, 1, LUA_TUSERDATA);
  490. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  491. luaL_checktype(L, 2, LUA_TUSERDATA);
  492. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  493. inst->baseMatrix = *argInst;
  494. return 0;
  495. }
  496. static int Polycode_Bone_set_finalMatrix(lua_State *L) {
  497. luaL_checktype(L, 1, LUA_TUSERDATA);
  498. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  499. luaL_checktype(L, 2, LUA_TUSERDATA);
  500. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  501. inst->finalMatrix = *argInst;
  502. return 0;
  503. }
  504. static int Polycode_Bone_set_baseRotation(lua_State *L) {
  505. luaL_checktype(L, 1, LUA_TUSERDATA);
  506. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  507. luaL_checktype(L, 2, LUA_TUSERDATA);
  508. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  509. inst->baseRotation = *argInst;
  510. return 0;
  511. }
  512. static int Polycode_Bone_set_baseScale(lua_State *L) {
  513. luaL_checktype(L, 1, LUA_TUSERDATA);
  514. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  515. luaL_checktype(L, 2, LUA_TUSERDATA);
  516. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  517. inst->baseScale = *argInst;
  518. return 0;
  519. }
  520. static int Polycode_Bone_set_basePosition(lua_State *L) {
  521. luaL_checktype(L, 1, LUA_TUSERDATA);
  522. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  523. luaL_checktype(L, 2, LUA_TUSERDATA);
  524. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  525. inst->basePosition = *argInst;
  526. return 0;
  527. }
  528. static int Polycode_Bone_set_disableAnimation(lua_State *L) {
  529. luaL_checktype(L, 1, LUA_TUSERDATA);
  530. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  531. bool param = lua_toboolean(L, 2) != 0;
  532. inst->disableAnimation = param;
  533. return 0;
  534. }
  535. static int Polycode_Bone(lua_State *L) {
  536. luaL_checktype(L, 1, LUA_TSTRING);
  537. String boneName = String(lua_tostring(L, 1));
  538. Bone *inst = new Bone(boneName);
  539. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  540. *userdataPtr = (PolyBase*)inst;
  541. luaL_getmetatable(L, "Polycode.Bone");
  542. lua_setmetatable(L, -2);
  543. return 1;
  544. }
  545. static int Polycode_Bone_getName(lua_State *L) {
  546. luaL_checktype(L, 1, LUA_TUSERDATA);
  547. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  548. lua_pushstring(L, inst->getName().c_str());
  549. return 1;
  550. }
  551. static int Polycode_Bone_setParentBone(lua_State *L) {
  552. luaL_checktype(L, 1, LUA_TUSERDATA);
  553. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  554. luaL_checktype(L, 2, LUA_TUSERDATA);
  555. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  556. inst->setParentBone(bone);
  557. return 0;
  558. }
  559. static int Polycode_Bone_addChildBone(lua_State *L) {
  560. luaL_checktype(L, 1, LUA_TUSERDATA);
  561. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  562. luaL_checktype(L, 2, LUA_TUSERDATA);
  563. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  564. inst->addChildBone(bone);
  565. return 0;
  566. }
  567. static int Polycode_Bone_getParentBone(lua_State *L) {
  568. luaL_checktype(L, 1, LUA_TUSERDATA);
  569. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  570. PolyBase *ptrRetVal = (PolyBase*)inst->getParentBone();
  571. if(ptrRetVal == NULL) {
  572. lua_pushnil(L);
  573. } else {
  574. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  575. *userdataPtr = ptrRetVal;
  576. }
  577. return 1;
  578. }
  579. static int Polycode_Bone_getNumChildBones(lua_State *L) {
  580. luaL_checktype(L, 1, LUA_TUSERDATA);
  581. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  582. lua_pushinteger(L, inst->getNumChildBones());
  583. return 1;
  584. }
  585. static int Polycode_Bone_getChildBone(lua_State *L) {
  586. luaL_checktype(L, 1, LUA_TUSERDATA);
  587. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  588. luaL_checktype(L, 2, LUA_TNUMBER);
  589. int index = lua_tointeger(L, 2);
  590. PolyBase *ptrRetVal = (PolyBase*)inst->getChildBone(index);
  591. if(ptrRetVal == NULL) {
  592. lua_pushnil(L);
  593. } else {
  594. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  595. *userdataPtr = ptrRetVal;
  596. }
  597. return 1;
  598. }
  599. static int Polycode_Bone_getBoneMatrix(lua_State *L) {
  600. luaL_checktype(L, 1, LUA_TUSERDATA);
  601. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  602. Matrix4 *retInst = new Matrix4();
  603. *retInst = inst->getBoneMatrix();
  604. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  605. luaL_getmetatable(L, "Polycode.Matrix4");
  606. lua_setmetatable(L, -2);
  607. *userdataPtr = (PolyBase*)retInst;
  608. return 1;
  609. }
  610. static int Polycode_Bone_setBoneMatrix(lua_State *L) {
  611. luaL_checktype(L, 1, LUA_TUSERDATA);
  612. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  613. luaL_checktype(L, 2, LUA_TUSERDATA);
  614. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  615. inst->setBoneMatrix(matrix);
  616. return 0;
  617. }
  618. static int Polycode_Bone_getRestMatrix(lua_State *L) {
  619. luaL_checktype(L, 1, LUA_TUSERDATA);
  620. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  621. Matrix4 *retInst = new Matrix4();
  622. *retInst = inst->getRestMatrix();
  623. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  624. luaL_getmetatable(L, "Polycode.Matrix4");
  625. lua_setmetatable(L, -2);
  626. *userdataPtr = (PolyBase*)retInst;
  627. return 1;
  628. }
  629. static int Polycode_Bone_getFullRestMatrix(lua_State *L) {
  630. luaL_checktype(L, 1, LUA_TUSERDATA);
  631. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  632. Matrix4 *retInst = new Matrix4();
  633. *retInst = inst->getFullRestMatrix();
  634. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  635. luaL_getmetatable(L, "Polycode.Matrix4");
  636. lua_setmetatable(L, -2);
  637. *userdataPtr = (PolyBase*)retInst;
  638. return 1;
  639. }
  640. static int Polycode_Bone_getParentRestMatrix(lua_State *L) {
  641. luaL_checktype(L, 1, LUA_TUSERDATA);
  642. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  643. Matrix4 *retInst = new Matrix4();
  644. *retInst = inst->getParentRestMatrix();
  645. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  646. luaL_getmetatable(L, "Polycode.Matrix4");
  647. lua_setmetatable(L, -2);
  648. *userdataPtr = (PolyBase*)retInst;
  649. return 1;
  650. }
  651. static int Polycode_Bone_getFinalMatrix(lua_State *L) {
  652. luaL_checktype(L, 1, LUA_TUSERDATA);
  653. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  654. Matrix4 *retInst = new Matrix4();
  655. *retInst = inst->getFinalMatrix();
  656. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  657. luaL_getmetatable(L, "Polycode.Matrix4");
  658. lua_setmetatable(L, -2);
  659. *userdataPtr = (PolyBase*)retInst;
  660. return 1;
  661. }
  662. static int Polycode_Bone_setRestMatrix(lua_State *L) {
  663. luaL_checktype(L, 1, LUA_TUSERDATA);
  664. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  665. luaL_checktype(L, 2, LUA_TUSERDATA);
  666. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  667. inst->setRestMatrix(matrix);
  668. return 0;
  669. }
  670. static int Polycode_Bone_setBaseMatrix(lua_State *L) {
  671. luaL_checktype(L, 1, LUA_TUSERDATA);
  672. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  673. luaL_checktype(L, 2, LUA_TUSERDATA);
  674. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  675. inst->setBaseMatrix(matrix);
  676. return 0;
  677. }
  678. static int Polycode_Bone_getBaseMatrix(lua_State *L) {
  679. luaL_checktype(L, 1, LUA_TUSERDATA);
  680. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  681. Matrix4 *retInst = new Matrix4();
  682. *retInst = inst->getBaseMatrix();
  683. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  684. luaL_getmetatable(L, "Polycode.Matrix4");
  685. lua_setmetatable(L, -2);
  686. *userdataPtr = (PolyBase*)retInst;
  687. return 1;
  688. }
  689. static int Polycode_Bone_getFullBaseMatrix(lua_State *L) {
  690. luaL_checktype(L, 1, LUA_TUSERDATA);
  691. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  692. Matrix4 *retInst = new Matrix4();
  693. *retInst = inst->getFullBaseMatrix();
  694. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  695. luaL_getmetatable(L, "Polycode.Matrix4");
  696. lua_setmetatable(L, -2);
  697. *userdataPtr = (PolyBase*)retInst;
  698. return 1;
  699. }
  700. static int Polycode_Bone_rebuildFinalMatrix(lua_State *L) {
  701. luaL_checktype(L, 1, LUA_TUSERDATA);
  702. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  703. inst->rebuildFinalMatrix();
  704. return 0;
  705. }
  706. static int Polycode_Bone_buildFinalMatrix(lua_State *L) {
  707. luaL_checktype(L, 1, LUA_TUSERDATA);
  708. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  709. Matrix4 *retInst = new Matrix4();
  710. *retInst = inst->buildFinalMatrix();
  711. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  712. luaL_getmetatable(L, "Polycode.Matrix4");
  713. lua_setmetatable(L, -2);
  714. *userdataPtr = (PolyBase*)retInst;
  715. return 1;
  716. }
  717. static int Polycode_Bone_intializeBone(lua_State *L) {
  718. luaL_checktype(L, 1, LUA_TUSERDATA);
  719. Bone *inst = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  720. luaL_checktype(L, 2, LUA_TUSERDATA);
  721. Vector3 basePosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  722. luaL_checktype(L, 3, LUA_TUSERDATA);
  723. Vector3 baseScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  724. luaL_checktype(L, 4, LUA_TUSERDATA);
  725. Quaternion baseRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  726. luaL_checktype(L, 5, LUA_TUSERDATA);
  727. Vector3 restPosition = *(Vector3*) *((PolyBase**)lua_touserdata(L, 5));
  728. luaL_checktype(L, 6, LUA_TUSERDATA);
  729. Vector3 restScale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 6));
  730. luaL_checktype(L, 7, LUA_TUSERDATA);
  731. Quaternion restRotation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 7));
  732. inst->intializeBone(basePosition, baseScale, baseRotation, restPosition, restScale, restRotation);
  733. return 0;
  734. }
  735. static int Polycode_delete_Bone(lua_State *L) {
  736. luaL_checktype(L, 1, LUA_TUSERDATA);
  737. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  738. delete ((Bone*) *inst);
  739. *inst = NULL;
  740. return 0;
  741. }
  742. static int Polycode_Camera_get_frustumCulling(lua_State *L) {
  743. luaL_checktype(L, 1, LUA_TUSERDATA);
  744. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  745. lua_pushboolean(L, inst->frustumCulling);
  746. return 1;
  747. }
  748. static int Polycode_Camera_get_topLeftOrtho(lua_State *L) {
  749. luaL_checktype(L, 1, LUA_TUSERDATA);
  750. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  751. lua_pushboolean(L, inst->topLeftOrtho);
  752. return 1;
  753. }
  754. static int Polycode_Camera_get_cameraShift(lua_State *L) {
  755. luaL_checktype(L, 1, LUA_TUSERDATA);
  756. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  757. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  758. *userdataPtr = (PolyBase*)&inst->cameraShift;
  759. return 1;
  760. }
  761. static int Polycode_Camera_set_frustumCulling(lua_State *L) {
  762. luaL_checktype(L, 1, LUA_TUSERDATA);
  763. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  764. bool param = lua_toboolean(L, 2) != 0;
  765. inst->frustumCulling = param;
  766. return 0;
  767. }
  768. static int Polycode_Camera_set_topLeftOrtho(lua_State *L) {
  769. luaL_checktype(L, 1, LUA_TUSERDATA);
  770. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  771. bool param = lua_toboolean(L, 2) != 0;
  772. inst->topLeftOrtho = param;
  773. return 0;
  774. }
  775. static int Polycode_Camera_set_cameraShift(lua_State *L) {
  776. luaL_checktype(L, 1, LUA_TUSERDATA);
  777. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  778. luaL_checktype(L, 2, LUA_TUSERDATA);
  779. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  780. inst->cameraShift = *argInst;
  781. return 0;
  782. }
  783. static int Polycode_Camera(lua_State *L) {
  784. luaL_checktype(L, 1, LUA_TUSERDATA);
  785. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  786. Camera *inst = new Camera(parentScene);
  787. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  788. *userdataPtr = (PolyBase*)inst;
  789. luaL_getmetatable(L, "Polycode.Camera");
  790. lua_setmetatable(L, -2);
  791. return 1;
  792. }
  793. static int Polycode_Camera_buildFrustumPlanes(lua_State *L) {
  794. luaL_checktype(L, 1, LUA_TUSERDATA);
  795. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  796. inst->buildFrustumPlanes();
  797. return 0;
  798. }
  799. static int Polycode_Camera_isSphereInFrustum(lua_State *L) {
  800. luaL_checktype(L, 1, LUA_TUSERDATA);
  801. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  802. luaL_checktype(L, 2, LUA_TUSERDATA);
  803. Vector3 pos = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  804. luaL_checktype(L, 3, LUA_TNUMBER);
  805. Number fRadius = lua_tonumber(L, 3);
  806. lua_pushboolean(L, inst->isSphereInFrustum(pos, fRadius));
  807. return 1;
  808. }
  809. static int Polycode_Camera_isAABBInFrustum(lua_State *L) {
  810. luaL_checktype(L, 1, LUA_TUSERDATA);
  811. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  812. luaL_checktype(L, 2, LUA_TUSERDATA);
  813. AABB aabb = *(AABB*) *((PolyBase**)lua_touserdata(L, 2));
  814. lua_pushboolean(L, inst->isAABBInFrustum(aabb));
  815. return 1;
  816. }
  817. static int Polycode_Camera_setOrthoMode(lua_State *L) {
  818. luaL_checktype(L, 1, LUA_TUSERDATA);
  819. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  820. luaL_checktype(L, 2, LUA_TBOOLEAN);
  821. bool mode = lua_toboolean(L, 2) != 0;
  822. inst->setOrthoMode(mode);
  823. return 0;
  824. }
  825. static int Polycode_Camera_setOrthoSize(lua_State *L) {
  826. luaL_checktype(L, 1, LUA_TUSERDATA);
  827. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  828. luaL_checktype(L, 2, LUA_TNUMBER);
  829. Number orthoSizeX = lua_tonumber(L, 2);
  830. luaL_checktype(L, 3, LUA_TNUMBER);
  831. Number orthoSizeY = lua_tonumber(L, 3);
  832. inst->setOrthoSize(orthoSizeX, orthoSizeY);
  833. return 0;
  834. }
  835. static int Polycode_Camera_setFrustumMode(lua_State *L) {
  836. luaL_checktype(L, 1, LUA_TUSERDATA);
  837. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  838. luaL_checktype(L, 2, LUA_TNUMBER);
  839. Number left = lua_tonumber(L, 2);
  840. luaL_checktype(L, 3, LUA_TNUMBER);
  841. Number right = lua_tonumber(L, 3);
  842. luaL_checktype(L, 4, LUA_TNUMBER);
  843. Number bottom = lua_tonumber(L, 4);
  844. luaL_checktype(L, 5, LUA_TNUMBER);
  845. Number top = lua_tonumber(L, 5);
  846. luaL_checktype(L, 6, LUA_TNUMBER);
  847. Number front = lua_tonumber(L, 6);
  848. luaL_checktype(L, 7, LUA_TNUMBER);
  849. Number back = lua_tonumber(L, 7);
  850. inst->setFrustumMode(left, right, bottom, top, front, back);
  851. return 0;
  852. }
  853. static int Polycode_Camera_getOrthoMode(lua_State *L) {
  854. luaL_checktype(L, 1, LUA_TUSERDATA);
  855. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  856. lua_pushboolean(L, inst->getOrthoMode());
  857. return 1;
  858. }
  859. static int Polycode_Camera_getOrthoSizeX(lua_State *L) {
  860. luaL_checktype(L, 1, LUA_TUSERDATA);
  861. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  862. lua_pushnumber(L, inst->getOrthoSizeX());
  863. return 1;
  864. }
  865. static int Polycode_Camera_getOrthoSizeY(lua_State *L) {
  866. luaL_checktype(L, 1, LUA_TUSERDATA);
  867. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  868. lua_pushnumber(L, inst->getOrthoSizeY());
  869. return 1;
  870. }
  871. static int Polycode_Camera_setFOV(lua_State *L) {
  872. luaL_checktype(L, 1, LUA_TUSERDATA);
  873. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  874. luaL_checktype(L, 2, LUA_TNUMBER);
  875. Number fov = lua_tonumber(L, 2);
  876. inst->setFOV(fov);
  877. return 0;
  878. }
  879. static int Polycode_Camera_getFOV(lua_State *L) {
  880. luaL_checktype(L, 1, LUA_TUSERDATA);
  881. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  882. lua_pushnumber(L, inst->getFOV());
  883. return 1;
  884. }
  885. static int Polycode_Camera_setClippingPlanes(lua_State *L) {
  886. luaL_checktype(L, 1, LUA_TUSERDATA);
  887. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  888. luaL_checktype(L, 2, LUA_TNUMBER);
  889. Number nearClipPlane = lua_tonumber(L, 2);
  890. luaL_checktype(L, 3, LUA_TNUMBER);
  891. Number farClipPlane = lua_tonumber(L, 3);
  892. inst->setClippingPlanes(nearClipPlane, farClipPlane);
  893. return 0;
  894. }
  895. static int Polycode_Camera_getNearClippingPlane(lua_State *L) {
  896. luaL_checktype(L, 1, LUA_TUSERDATA);
  897. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  898. lua_pushnumber(L, inst->getNearClippingPlane());
  899. return 1;
  900. }
  901. static int Polycode_Camera_getFarClippingPlane(lua_State *L) {
  902. luaL_checktype(L, 1, LUA_TUSERDATA);
  903. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  904. lua_pushnumber(L, inst->getFarClippingPlane());
  905. return 1;
  906. }
  907. static int Polycode_Camera_setParentScene(lua_State *L) {
  908. luaL_checktype(L, 1, LUA_TUSERDATA);
  909. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  910. luaL_checktype(L, 2, LUA_TUSERDATA);
  911. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  912. inst->setParentScene(parentScene);
  913. return 0;
  914. }
  915. static int Polycode_Camera_getParentScene(lua_State *L) {
  916. luaL_checktype(L, 1, LUA_TUSERDATA);
  917. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  918. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  919. if(ptrRetVal == NULL) {
  920. lua_pushnil(L);
  921. } else {
  922. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  923. *userdataPtr = ptrRetVal;
  924. }
  925. return 1;
  926. }
  927. static int Polycode_Camera_createProjectionMatrix(lua_State *L) {
  928. luaL_checktype(L, 1, LUA_TUSERDATA);
  929. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  930. Matrix4 *retInst = new Matrix4();
  931. *retInst = inst->createProjectionMatrix();
  932. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  933. luaL_getmetatable(L, "Polycode.Matrix4");
  934. lua_setmetatable(L, -2);
  935. *userdataPtr = (PolyBase*)retInst;
  936. return 1;
  937. }
  938. static int Polycode_Camera_hasFilterShader(lua_State *L) {
  939. luaL_checktype(L, 1, LUA_TUSERDATA);
  940. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  941. lua_pushboolean(L, inst->hasFilterShader());
  942. return 1;
  943. }
  944. static int Polycode_Camera_drawFilter(lua_State *L) {
  945. luaL_checktype(L, 1, LUA_TUSERDATA);
  946. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  947. luaL_checktype(L, 2, LUA_TUSERDATA);
  948. RenderBuffer* targetBuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  949. inst->drawFilter(targetBuffer);
  950. return 0;
  951. }
  952. static int Polycode_Camera_setPostFilter(lua_State *L) {
  953. luaL_checktype(L, 1, LUA_TUSERDATA);
  954. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  955. luaL_checktype(L, 2, LUA_TUSERDATA);
  956. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  957. inst->setPostFilter(material);
  958. return 0;
  959. }
  960. static int Polycode_Camera_setPostFilterByName(lua_State *L) {
  961. luaL_checktype(L, 1, LUA_TUSERDATA);
  962. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  963. luaL_checktype(L, 2, LUA_TSTRING);
  964. String shaderName = String(lua_tostring(L, 2));
  965. inst->setPostFilterByName(shaderName);
  966. return 0;
  967. }
  968. static int Polycode_Camera_removePostFilter(lua_State *L) {
  969. luaL_checktype(L, 1, LUA_TUSERDATA);
  970. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  971. inst->removePostFilter();
  972. return 0;
  973. }
  974. static int Polycode_Camera_getScreenShaderMaterial(lua_State *L) {
  975. luaL_checktype(L, 1, LUA_TUSERDATA);
  976. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  977. PolyBase *ptrRetVal = (PolyBase*)inst->getScreenShaderMaterial();
  978. if(ptrRetVal == NULL) {
  979. lua_pushnil(L);
  980. } else {
  981. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  982. *userdataPtr = ptrRetVal;
  983. }
  984. return 1;
  985. }
  986. static int Polycode_Camera_Clone(lua_State *L) {
  987. luaL_checktype(L, 1, LUA_TUSERDATA);
  988. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  989. luaL_checktype(L, 2, LUA_TBOOLEAN);
  990. bool deepClone = lua_toboolean(L, 2) != 0;
  991. luaL_checktype(L, 3, LUA_TBOOLEAN);
  992. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  993. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  994. if(ptrRetVal == NULL) {
  995. lua_pushnil(L);
  996. } else {
  997. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  998. *userdataPtr = ptrRetVal;
  999. }
  1000. return 1;
  1001. }
  1002. static int Polycode_Camera_applyClone(lua_State *L) {
  1003. luaL_checktype(L, 1, LUA_TUSERDATA);
  1004. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1005. luaL_checktype(L, 2, LUA_TUSERDATA);
  1006. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  1007. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1008. bool deepClone = lua_toboolean(L, 3) != 0;
  1009. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1010. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  1011. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  1012. return 0;
  1013. }
  1014. static int Polycode_Camera_getProjectionMatrix(lua_State *L) {
  1015. luaL_checktype(L, 1, LUA_TUSERDATA);
  1016. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1017. Matrix4 *retInst = new Matrix4();
  1018. *retInst = inst->getProjectionMatrix();
  1019. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1020. luaL_getmetatable(L, "Polycode.Matrix4");
  1021. lua_setmetatable(L, -2);
  1022. *userdataPtr = (PolyBase*)retInst;
  1023. return 1;
  1024. }
  1025. static int Polycode_Camera_setCustomProjectionMatrix(lua_State *L) {
  1026. luaL_checktype(L, 1, LUA_TUSERDATA);
  1027. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1028. luaL_checktype(L, 2, LUA_TUSERDATA);
  1029. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  1030. inst->setCustomProjectionMatrix(matrix);
  1031. return 0;
  1032. }
  1033. static int Polycode_Camera_getViewport(lua_State *L) {
  1034. luaL_checktype(L, 1, LUA_TUSERDATA);
  1035. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1036. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  1037. *retInst = inst->getViewport();
  1038. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1039. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  1040. lua_setmetatable(L, -2);
  1041. *userdataPtr = (PolyBase*)retInst;
  1042. return 1;
  1043. }
  1044. static int Polycode_Camera_setViewport(lua_State *L) {
  1045. luaL_checktype(L, 1, LUA_TUSERDATA);
  1046. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1047. luaL_checktype(L, 2, LUA_TUSERDATA);
  1048. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  1049. inst->setViewport(viewport);
  1050. return 0;
  1051. }
  1052. static int Polycode_Camera_setOrthoSizeMode(lua_State *L) {
  1053. luaL_checktype(L, 1, LUA_TUSERDATA);
  1054. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1055. luaL_checktype(L, 2, LUA_TNUMBER);
  1056. int orthoSizeMode = lua_tointeger(L, 2);
  1057. inst->setOrthoSizeMode(orthoSizeMode);
  1058. return 0;
  1059. }
  1060. static int Polycode_Camera_getOrthoSizeMode(lua_State *L) {
  1061. luaL_checktype(L, 1, LUA_TUSERDATA);
  1062. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1063. lua_pushinteger(L, inst->getOrthoSizeMode());
  1064. return 1;
  1065. }
  1066. static int Polycode_Camera_setProjectionMode(lua_State *L) {
  1067. luaL_checktype(L, 1, LUA_TUSERDATA);
  1068. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1069. luaL_checktype(L, 2, LUA_TNUMBER);
  1070. int mode = lua_tointeger(L, 2);
  1071. inst->setProjectionMode(mode);
  1072. return 0;
  1073. }
  1074. static int Polycode_Camera_getProjectionMode(lua_State *L) {
  1075. luaL_checktype(L, 1, LUA_TUSERDATA);
  1076. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1077. lua_pushinteger(L, inst->getProjectionMode());
  1078. return 1;
  1079. }
  1080. static int Polycode_Camera_projectRayFrom2DCoordinate(lua_State *L) {
  1081. luaL_checktype(L, 1, LUA_TUSERDATA);
  1082. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1083. luaL_checktype(L, 2, LUA_TUSERDATA);
  1084. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  1085. luaL_checktype(L, 3, LUA_TUSERDATA);
  1086. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  1087. Vector3 *retInst = new Vector3();
  1088. *retInst = inst->projectRayFrom2DCoordinate(coordinate, viewport);
  1089. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1090. luaL_getmetatable(L, "Polycode.Vector3");
  1091. lua_setmetatable(L, -2);
  1092. *userdataPtr = (PolyBase*)retInst;
  1093. return 1;
  1094. }
  1095. static int Polycode_Camera_renderFullScreenQuad(lua_State *L) {
  1096. luaL_checktype(L, 1, LUA_TUSERDATA);
  1097. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1098. luaL_checktype(L, 2, LUA_TUSERDATA);
  1099. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  1100. luaL_checktype(L, 3, LUA_TNUMBER);
  1101. int shaderPass = lua_tointeger(L, 3);
  1102. inst->renderFullScreenQuad(drawBuffer, shaderPass);
  1103. return 0;
  1104. }
  1105. static int Polycode_Camera_getShaderPass(lua_State *L) {
  1106. luaL_checktype(L, 1, LUA_TUSERDATA);
  1107. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1108. luaL_checktype(L, 2, LUA_TNUMBER);
  1109. int index = lua_tointeger(L, 2);
  1110. ShaderPass *retInst = new ShaderPass();
  1111. *retInst = inst->getShaderPass(index);
  1112. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1113. luaL_getmetatable(L, "Polycode.ShaderPass");
  1114. lua_setmetatable(L, -2);
  1115. *userdataPtr = (PolyBase*)retInst;
  1116. return 1;
  1117. }
  1118. static int Polycode_Camera_getNumShaderPasses(lua_State *L) {
  1119. luaL_checktype(L, 1, LUA_TUSERDATA);
  1120. Camera *inst = (Camera*) *((PolyBase**)lua_touserdata(L, 1));
  1121. lua_pushinteger(L, inst->getNumShaderPasses());
  1122. return 1;
  1123. }
  1124. static int Polycode_delete_Camera(lua_State *L) {
  1125. luaL_checktype(L, 1, LUA_TUSERDATA);
  1126. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1127. delete ((Camera*) *inst);
  1128. *inst = NULL;
  1129. return 0;
  1130. }
  1131. static int Polycode_Color_get_r(lua_State *L) {
  1132. luaL_checktype(L, 1, LUA_TUSERDATA);
  1133. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1134. lua_pushnumber(L, inst->r);
  1135. return 1;
  1136. }
  1137. static int Polycode_Color_get_g(lua_State *L) {
  1138. luaL_checktype(L, 1, LUA_TUSERDATA);
  1139. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1140. lua_pushnumber(L, inst->g);
  1141. return 1;
  1142. }
  1143. static int Polycode_Color_get_b(lua_State *L) {
  1144. luaL_checktype(L, 1, LUA_TUSERDATA);
  1145. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1146. lua_pushnumber(L, inst->b);
  1147. return 1;
  1148. }
  1149. static int Polycode_Color_get_a(lua_State *L) {
  1150. luaL_checktype(L, 1, LUA_TUSERDATA);
  1151. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1152. lua_pushnumber(L, inst->a);
  1153. return 1;
  1154. }
  1155. static int Polycode_Color_set_r(lua_State *L) {
  1156. luaL_checktype(L, 1, LUA_TUSERDATA);
  1157. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1158. Number param = lua_tonumber(L, 2);
  1159. inst->r = param;
  1160. return 0;
  1161. }
  1162. static int Polycode_Color_set_g(lua_State *L) {
  1163. luaL_checktype(L, 1, LUA_TUSERDATA);
  1164. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1165. Number param = lua_tonumber(L, 2);
  1166. inst->g = param;
  1167. return 0;
  1168. }
  1169. static int Polycode_Color_set_b(lua_State *L) {
  1170. luaL_checktype(L, 1, LUA_TUSERDATA);
  1171. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1172. Number param = lua_tonumber(L, 2);
  1173. inst->b = param;
  1174. return 0;
  1175. }
  1176. static int Polycode_Color_set_a(lua_State *L) {
  1177. luaL_checktype(L, 1, LUA_TUSERDATA);
  1178. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1179. Number param = lua_tonumber(L, 2);
  1180. inst->a = param;
  1181. return 0;
  1182. }
  1183. static int Polycode_Color(lua_State *L) {
  1184. luaL_checktype(L, 1, LUA_TNUMBER);
  1185. Number r = lua_tonumber(L, 1);
  1186. luaL_checktype(L, 2, LUA_TNUMBER);
  1187. Number g = lua_tonumber(L, 2);
  1188. luaL_checktype(L, 3, LUA_TNUMBER);
  1189. Number b = lua_tonumber(L, 3);
  1190. luaL_checktype(L, 4, LUA_TNUMBER);
  1191. Number a = lua_tonumber(L, 4);
  1192. Color *inst = new Color(r, g, b, a);
  1193. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1194. *userdataPtr = (PolyBase*)inst;
  1195. luaL_getmetatable(L, "Polycode.Color");
  1196. lua_setmetatable(L, -2);
  1197. return 1;
  1198. }
  1199. static int Polycode_Color_ColorWithInts(lua_State *L) {
  1200. luaL_checktype(L, 1, LUA_TNUMBER);
  1201. int r = lua_tointeger(L, 1);
  1202. luaL_checktype(L, 2, LUA_TNUMBER);
  1203. int g = lua_tointeger(L, 2);
  1204. luaL_checktype(L, 3, LUA_TNUMBER);
  1205. int b = lua_tointeger(L, 3);
  1206. luaL_checktype(L, 4, LUA_TNUMBER);
  1207. int a = lua_tointeger(L, 4);
  1208. Color *retInst = new Color();
  1209. *retInst = Color::ColorWithInts(r, g, b, a);
  1210. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1211. luaL_getmetatable(L, "Polycode.Color");
  1212. lua_setmetatable(L, -2);
  1213. *userdataPtr = (PolyBase*)retInst;
  1214. return 1;
  1215. }
  1216. static int Polycode_Color_ColorWithHex(lua_State *L) {
  1217. luaL_checktype(L, 1, LUA_TNUMBER);
  1218. int hex = lua_tointeger(L, 1);
  1219. Color *retInst = new Color();
  1220. *retInst = Color::ColorWithHex(hex);
  1221. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1222. luaL_getmetatable(L, "Polycode.Color");
  1223. lua_setmetatable(L, -2);
  1224. *userdataPtr = (PolyBase*)retInst;
  1225. return 1;
  1226. }
  1227. static int Polycode_Color_setColorHex(lua_State *L) {
  1228. luaL_checktype(L, 1, LUA_TUSERDATA);
  1229. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1230. luaL_checktype(L, 2, LUA_TNUMBER);
  1231. int hex = lua_tointeger(L, 2);
  1232. inst->setColorHex(hex);
  1233. return 0;
  1234. }
  1235. static int Polycode_Color_setColorHexRGB(lua_State *L) {
  1236. luaL_checktype(L, 1, LUA_TUSERDATA);
  1237. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1238. luaL_checktype(L, 2, LUA_TNUMBER);
  1239. int hex = lua_tointeger(L, 2);
  1240. inst->setColorHexRGB(hex);
  1241. return 0;
  1242. }
  1243. static int Polycode_Color_setColorHexFromString(lua_State *L) {
  1244. luaL_checktype(L, 1, LUA_TUSERDATA);
  1245. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1246. luaL_checktype(L, 2, LUA_TSTRING);
  1247. String hex = String(lua_tostring(L, 2));
  1248. inst->setColorHexFromString(hex);
  1249. return 0;
  1250. }
  1251. static int Polycode_Color_setColorHexRGBFromString(lua_State *L) {
  1252. luaL_checktype(L, 1, LUA_TUSERDATA);
  1253. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1254. luaL_checktype(L, 2, LUA_TSTRING);
  1255. String hex = String(lua_tostring(L, 2));
  1256. inst->setColorHexRGBFromString(hex);
  1257. return 0;
  1258. }
  1259. static int Polycode_Color_setColorHSV(lua_State *L) {
  1260. luaL_checktype(L, 1, LUA_TUSERDATA);
  1261. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1262. luaL_checktype(L, 2, LUA_TNUMBER);
  1263. Number h = lua_tonumber(L, 2);
  1264. luaL_checktype(L, 3, LUA_TNUMBER);
  1265. Number s = lua_tonumber(L, 3);
  1266. luaL_checktype(L, 4, LUA_TNUMBER);
  1267. Number v = lua_tonumber(L, 4);
  1268. inst->setColorHSV(h, s, v);
  1269. return 0;
  1270. }
  1271. static int Polycode_Color_setColorRGBA(lua_State *L) {
  1272. luaL_checktype(L, 1, LUA_TUSERDATA);
  1273. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1274. luaL_checktype(L, 2, LUA_TNUMBER);
  1275. int r = lua_tointeger(L, 2);
  1276. luaL_checktype(L, 3, LUA_TNUMBER);
  1277. int g = lua_tointeger(L, 3);
  1278. luaL_checktype(L, 4, LUA_TNUMBER);
  1279. int b = lua_tointeger(L, 4);
  1280. luaL_checktype(L, 5, LUA_TNUMBER);
  1281. int a = lua_tointeger(L, 5);
  1282. inst->setColorRGBA(r, g, b, a);
  1283. return 0;
  1284. }
  1285. static int Polycode_Color_setColorRGB(lua_State *L) {
  1286. luaL_checktype(L, 1, LUA_TUSERDATA);
  1287. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1288. luaL_checktype(L, 2, LUA_TNUMBER);
  1289. int r = lua_tointeger(L, 2);
  1290. luaL_checktype(L, 3, LUA_TNUMBER);
  1291. int g = lua_tointeger(L, 3);
  1292. luaL_checktype(L, 4, LUA_TNUMBER);
  1293. int b = lua_tointeger(L, 4);
  1294. inst->setColorRGB(r, g, b);
  1295. return 0;
  1296. }
  1297. static int Polycode_Color_setColor(lua_State *L) {
  1298. luaL_checktype(L, 1, LUA_TUSERDATA);
  1299. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1300. luaL_checktype(L, 2, LUA_TNUMBER);
  1301. Number r = lua_tonumber(L, 2);
  1302. luaL_checktype(L, 3, LUA_TNUMBER);
  1303. Number g = lua_tonumber(L, 3);
  1304. luaL_checktype(L, 4, LUA_TNUMBER);
  1305. Number b = lua_tonumber(L, 4);
  1306. luaL_checktype(L, 5, LUA_TNUMBER);
  1307. Number a = lua_tonumber(L, 5);
  1308. inst->setColor(r, g, b, a);
  1309. return 0;
  1310. }
  1311. static int Polycode_Color_blendColor(lua_State *L) {
  1312. luaL_checktype(L, 1, LUA_TUSERDATA);
  1313. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1314. luaL_checktype(L, 2, LUA_TUSERDATA);
  1315. Color c2 = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  1316. luaL_checktype(L, 3, LUA_TNUMBER);
  1317. int mode = lua_tointeger(L, 3);
  1318. luaL_checktype(L, 4, LUA_TNUMBER);
  1319. Number amount = lua_tonumber(L, 4);
  1320. luaL_checktype(L, 5, LUA_TUSERDATA);
  1321. Color c3 = *(Color*) *((PolyBase**)lua_touserdata(L, 5));
  1322. Color *retInst = new Color();
  1323. *retInst = inst->blendColor(c2, mode, amount, c3);
  1324. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1325. luaL_getmetatable(L, "Polycode.Color");
  1326. lua_setmetatable(L, -2);
  1327. *userdataPtr = (PolyBase*)retInst;
  1328. return 1;
  1329. }
  1330. static int Polycode_Color_Random(lua_State *L) {
  1331. luaL_checktype(L, 1, LUA_TUSERDATA);
  1332. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1333. inst->Random();
  1334. return 0;
  1335. }
  1336. static int Polycode_Color_getBrightness(lua_State *L) {
  1337. luaL_checktype(L, 1, LUA_TUSERDATA);
  1338. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1339. lua_pushnumber(L, inst->getBrightness());
  1340. return 1;
  1341. }
  1342. static int Polycode_Color_RGBtoHSV(lua_State *L) {
  1343. luaL_checktype(L, 1, LUA_TNUMBER);
  1344. Number r = lua_tonumber(L, 1);
  1345. luaL_checktype(L, 2, LUA_TNUMBER);
  1346. Number g = lua_tonumber(L, 2);
  1347. luaL_checktype(L, 3, LUA_TNUMBER);
  1348. Number b = lua_tonumber(L, 3);
  1349. luaL_checktype(L, 4, LUA_TNUMBER);
  1350. Number h = lua_tonumber(L, 4);
  1351. luaL_checktype(L, 5, LUA_TNUMBER);
  1352. Number s = lua_tonumber(L, 5);
  1353. luaL_checktype(L, 6, LUA_TNUMBER);
  1354. Number v = lua_tonumber(L, 6);
  1355. Color::RGBtoHSV(r, g, b, h, s, v);
  1356. return 0;
  1357. }
  1358. static int Polycode_Color_getHue(lua_State *L) {
  1359. luaL_checktype(L, 1, LUA_TUSERDATA);
  1360. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1361. lua_pushnumber(L, inst->getHue());
  1362. return 1;
  1363. }
  1364. static int Polycode_Color_getSaturation(lua_State *L) {
  1365. luaL_checktype(L, 1, LUA_TUSERDATA);
  1366. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1367. lua_pushnumber(L, inst->getSaturation());
  1368. return 1;
  1369. }
  1370. static int Polycode_Color_getValue(lua_State *L) {
  1371. luaL_checktype(L, 1, LUA_TUSERDATA);
  1372. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1373. lua_pushnumber(L, inst->getValue());
  1374. return 1;
  1375. }
  1376. static int Polycode_Color_getUint(lua_State *L) {
  1377. luaL_checktype(L, 1, LUA_TUSERDATA);
  1378. Color *inst = (Color*) *((PolyBase**)lua_touserdata(L, 1));
  1379. lua_pushinteger(L, inst->getUint());
  1380. return 1;
  1381. }
  1382. static int Polycode_delete_Color(lua_State *L) {
  1383. luaL_checktype(L, 1, LUA_TUSERDATA);
  1384. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1385. delete ((Color*) *inst);
  1386. *inst = NULL;
  1387. return 0;
  1388. }
  1389. static int Polycode_ConfigEntry_get_key(lua_State *L) {
  1390. luaL_checktype(L, 1, LUA_TUSERDATA);
  1391. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1392. lua_pushstring(L, inst->key.c_str());
  1393. return 1;
  1394. }
  1395. static int Polycode_ConfigEntry_get_configNamespace(lua_State *L) {
  1396. luaL_checktype(L, 1, LUA_TUSERDATA);
  1397. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1398. lua_pushstring(L, inst->configNamespace.c_str());
  1399. return 1;
  1400. }
  1401. static int Polycode_ConfigEntry_get_numVal(lua_State *L) {
  1402. luaL_checktype(L, 1, LUA_TUSERDATA);
  1403. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1404. lua_pushnumber(L, inst->numVal);
  1405. return 1;
  1406. }
  1407. static int Polycode_ConfigEntry_get_stringVal(lua_State *L) {
  1408. luaL_checktype(L, 1, LUA_TUSERDATA);
  1409. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1410. lua_pushstring(L, inst->stringVal.c_str());
  1411. return 1;
  1412. }
  1413. static int Polycode_ConfigEntry_get_isString(lua_State *L) {
  1414. luaL_checktype(L, 1, LUA_TUSERDATA);
  1415. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1416. lua_pushboolean(L, inst->isString);
  1417. return 1;
  1418. }
  1419. static int Polycode_ConfigEntry_set_key(lua_State *L) {
  1420. luaL_checktype(L, 1, LUA_TUSERDATA);
  1421. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1422. String param = lua_tostring(L, 2);
  1423. inst->key = param;
  1424. return 0;
  1425. }
  1426. static int Polycode_ConfigEntry_set_configNamespace(lua_State *L) {
  1427. luaL_checktype(L, 1, LUA_TUSERDATA);
  1428. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1429. String param = lua_tostring(L, 2);
  1430. inst->configNamespace = param;
  1431. return 0;
  1432. }
  1433. static int Polycode_ConfigEntry_set_numVal(lua_State *L) {
  1434. luaL_checktype(L, 1, LUA_TUSERDATA);
  1435. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1436. Number param = lua_tonumber(L, 2);
  1437. inst->numVal = param;
  1438. return 0;
  1439. }
  1440. static int Polycode_ConfigEntry_set_stringVal(lua_State *L) {
  1441. luaL_checktype(L, 1, LUA_TUSERDATA);
  1442. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1443. String param = lua_tostring(L, 2);
  1444. inst->stringVal = param;
  1445. return 0;
  1446. }
  1447. static int Polycode_ConfigEntry_set_isString(lua_State *L) {
  1448. luaL_checktype(L, 1, LUA_TUSERDATA);
  1449. ConfigEntry *inst = (ConfigEntry*) *((PolyBase**)lua_touserdata(L, 1));
  1450. bool param = lua_toboolean(L, 2) != 0;
  1451. inst->isString = param;
  1452. return 0;
  1453. }
  1454. static int Polycode_delete_ConfigEntry(lua_State *L) {
  1455. luaL_checktype(L, 1, LUA_TUSERDATA);
  1456. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1457. delete ((ConfigEntry*) *inst);
  1458. *inst = NULL;
  1459. return 0;
  1460. }
  1461. static int Polycode_Config(lua_State *L) {
  1462. Config *inst = new Config();
  1463. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1464. *userdataPtr = (PolyBase*)inst;
  1465. luaL_getmetatable(L, "Polycode.Config");
  1466. lua_setmetatable(L, -2);
  1467. return 1;
  1468. }
  1469. static int Polycode_Config_loadConfig(lua_State *L) {
  1470. luaL_checktype(L, 1, LUA_TUSERDATA);
  1471. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1472. luaL_checktype(L, 2, LUA_TSTRING);
  1473. String configNamespace = String(lua_tostring(L, 2));
  1474. luaL_checktype(L, 3, LUA_TSTRING);
  1475. String fileName = String(lua_tostring(L, 3));
  1476. inst->loadConfig(configNamespace, fileName);
  1477. return 0;
  1478. }
  1479. static int Polycode_Config_saveConfig(lua_State *L) {
  1480. luaL_checktype(L, 1, LUA_TUSERDATA);
  1481. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1482. luaL_checktype(L, 2, LUA_TSTRING);
  1483. String configNamespace = String(lua_tostring(L, 2));
  1484. luaL_checktype(L, 3, LUA_TSTRING);
  1485. String fileName = String(lua_tostring(L, 3));
  1486. inst->saveConfig(configNamespace, fileName);
  1487. return 0;
  1488. }
  1489. static int Polycode_Config_getEntry(lua_State *L) {
  1490. luaL_checktype(L, 1, LUA_TUSERDATA);
  1491. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1492. luaL_checktype(L, 2, LUA_TSTRING);
  1493. String configNamespace = String(lua_tostring(L, 2));
  1494. luaL_checktype(L, 3, LUA_TSTRING);
  1495. String key = String(lua_tostring(L, 3));
  1496. PolyBase *ptrRetVal = (PolyBase*)inst->getEntry(configNamespace, key);
  1497. if(ptrRetVal == NULL) {
  1498. lua_pushnil(L);
  1499. } else {
  1500. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1501. *userdataPtr = ptrRetVal;
  1502. }
  1503. return 1;
  1504. }
  1505. static int Polycode_Config_setStringValue(lua_State *L) {
  1506. luaL_checktype(L, 1, LUA_TUSERDATA);
  1507. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1508. luaL_checktype(L, 2, LUA_TSTRING);
  1509. String configNamespace = String(lua_tostring(L, 2));
  1510. luaL_checktype(L, 3, LUA_TSTRING);
  1511. String key = String(lua_tostring(L, 3));
  1512. luaL_checktype(L, 4, LUA_TSTRING);
  1513. String value = String(lua_tostring(L, 4));
  1514. inst->setStringValue(configNamespace, key, value);
  1515. return 0;
  1516. }
  1517. static int Polycode_Config_setNumericValue(lua_State *L) {
  1518. luaL_checktype(L, 1, LUA_TUSERDATA);
  1519. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1520. luaL_checktype(L, 2, LUA_TSTRING);
  1521. String configNamespace = String(lua_tostring(L, 2));
  1522. luaL_checktype(L, 3, LUA_TSTRING);
  1523. String key = String(lua_tostring(L, 3));
  1524. luaL_checktype(L, 4, LUA_TNUMBER);
  1525. Number value = lua_tonumber(L, 4);
  1526. inst->setNumericValue(configNamespace, key, value);
  1527. return 0;
  1528. }
  1529. static int Polycode_Config_getNumericValue(lua_State *L) {
  1530. luaL_checktype(L, 1, LUA_TUSERDATA);
  1531. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1532. luaL_checktype(L, 2, LUA_TSTRING);
  1533. String configNamespace = String(lua_tostring(L, 2));
  1534. luaL_checktype(L, 3, LUA_TSTRING);
  1535. String key = String(lua_tostring(L, 3));
  1536. lua_pushnumber(L, inst->getNumericValue(configNamespace, key));
  1537. return 1;
  1538. }
  1539. static int Polycode_Config_getStringValue(lua_State *L) {
  1540. luaL_checktype(L, 1, LUA_TUSERDATA);
  1541. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1542. luaL_checktype(L, 2, LUA_TSTRING);
  1543. String configNamespace = String(lua_tostring(L, 2));
  1544. luaL_checktype(L, 3, LUA_TSTRING);
  1545. String key = String(lua_tostring(L, 3));
  1546. lua_pushstring(L, inst->getStringValue(configNamespace, key).c_str());
  1547. return 1;
  1548. }
  1549. static int Polycode_Config_setBoolValue(lua_State *L) {
  1550. luaL_checktype(L, 1, LUA_TUSERDATA);
  1551. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1552. luaL_checktype(L, 2, LUA_TSTRING);
  1553. String configNamespace = String(lua_tostring(L, 2));
  1554. luaL_checktype(L, 3, LUA_TSTRING);
  1555. String key = String(lua_tostring(L, 3));
  1556. luaL_checktype(L, 4, LUA_TBOOLEAN);
  1557. bool value = lua_toboolean(L, 4) != 0;
  1558. inst->setBoolValue(configNamespace, key, value);
  1559. return 0;
  1560. }
  1561. static int Polycode_Config_getBoolValue(lua_State *L) {
  1562. luaL_checktype(L, 1, LUA_TUSERDATA);
  1563. Config *inst = (Config*) *((PolyBase**)lua_touserdata(L, 1));
  1564. luaL_checktype(L, 2, LUA_TSTRING);
  1565. String configNamespace = String(lua_tostring(L, 2));
  1566. luaL_checktype(L, 3, LUA_TSTRING);
  1567. String key = String(lua_tostring(L, 3));
  1568. lua_pushboolean(L, inst->getBoolValue(configNamespace, key));
  1569. return 1;
  1570. }
  1571. static int Polycode_delete_Config(lua_State *L) {
  1572. luaL_checktype(L, 1, LUA_TUSERDATA);
  1573. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  1574. delete ((Config*) *inst);
  1575. *inst = NULL;
  1576. return 0;
  1577. }
  1578. static int Polycode_Core_get_eventMutex(lua_State *L) {
  1579. luaL_checktype(L, 1, LUA_TUSERDATA);
  1580. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1581. if(!inst->eventMutex) {
  1582. lua_pushnil(L);
  1583. } else {
  1584. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1585. *userdataPtr = (PolyBase*)inst->eventMutex;
  1586. }
  1587. return 1;
  1588. }
  1589. static int Polycode_Core_get_paused(lua_State *L) {
  1590. luaL_checktype(L, 1, LUA_TUSERDATA);
  1591. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1592. lua_pushboolean(L, inst->paused);
  1593. return 1;
  1594. }
  1595. static int Polycode_Core_get_pauseOnLoseFocus(lua_State *L) {
  1596. luaL_checktype(L, 1, LUA_TUSERDATA);
  1597. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1598. lua_pushboolean(L, inst->pauseOnLoseFocus);
  1599. return 1;
  1600. }
  1601. static int Polycode_Core_get_defaultScreenWidth(lua_State *L) {
  1602. luaL_checktype(L, 1, LUA_TUSERDATA);
  1603. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1604. lua_pushinteger(L, inst->defaultScreenWidth);
  1605. return 1;
  1606. }
  1607. static int Polycode_Core_get_defaultScreenHeight(lua_State *L) {
  1608. luaL_checktype(L, 1, LUA_TUSERDATA);
  1609. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1610. lua_pushinteger(L, inst->defaultScreenHeight);
  1611. return 1;
  1612. }
  1613. static int Polycode_Core_get_deviceAttitude(lua_State *L) {
  1614. luaL_checktype(L, 1, LUA_TUSERDATA);
  1615. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1616. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1617. *userdataPtr = (PolyBase*)&inst->deviceAttitude;
  1618. return 1;
  1619. }
  1620. static int Polycode_Core_set_eventMutex(lua_State *L) {
  1621. luaL_checktype(L, 1, LUA_TUSERDATA);
  1622. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1623. luaL_checktype(L, 2, LUA_TUSERDATA);
  1624. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  1625. inst->eventMutex = *argInst;
  1626. return 0;
  1627. }
  1628. static int Polycode_Core_set_paused(lua_State *L) {
  1629. luaL_checktype(L, 1, LUA_TUSERDATA);
  1630. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1631. bool param = lua_toboolean(L, 2) != 0;
  1632. inst->paused = param;
  1633. return 0;
  1634. }
  1635. static int Polycode_Core_set_pauseOnLoseFocus(lua_State *L) {
  1636. luaL_checktype(L, 1, LUA_TUSERDATA);
  1637. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1638. bool param = lua_toboolean(L, 2) != 0;
  1639. inst->pauseOnLoseFocus = param;
  1640. return 0;
  1641. }
  1642. static int Polycode_Core_set_defaultScreenWidth(lua_State *L) {
  1643. luaL_checktype(L, 1, LUA_TUSERDATA);
  1644. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1645. int param = lua_tointeger(L, 2);
  1646. inst->defaultScreenWidth = param;
  1647. return 0;
  1648. }
  1649. static int Polycode_Core_set_defaultScreenHeight(lua_State *L) {
  1650. luaL_checktype(L, 1, LUA_TUSERDATA);
  1651. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1652. int param = lua_tointeger(L, 2);
  1653. inst->defaultScreenHeight = param;
  1654. return 0;
  1655. }
  1656. static int Polycode_Core_set_deviceAttitude(lua_State *L) {
  1657. luaL_checktype(L, 1, LUA_TUSERDATA);
  1658. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1659. luaL_checktype(L, 2, LUA_TUSERDATA);
  1660. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  1661. inst->deviceAttitude = *argInst;
  1662. return 0;
  1663. }
  1664. static int Polycode_Core_Update(lua_State *L) {
  1665. luaL_checktype(L, 1, LUA_TUSERDATA);
  1666. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1667. lua_pushboolean(L, inst->Update());
  1668. return 1;
  1669. }
  1670. static int Polycode_Core_Render(lua_State *L) {
  1671. luaL_checktype(L, 1, LUA_TUSERDATA);
  1672. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1673. inst->Render();
  1674. return 0;
  1675. }
  1676. static int Polycode_Core_fixedUpdate(lua_State *L) {
  1677. luaL_checktype(L, 1, LUA_TUSERDATA);
  1678. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1679. lua_pushboolean(L, inst->fixedUpdate());
  1680. return 1;
  1681. }
  1682. static int Polycode_Core_systemUpdate(lua_State *L) {
  1683. luaL_checktype(L, 1, LUA_TUSERDATA);
  1684. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1685. lua_pushboolean(L, inst->systemUpdate());
  1686. return 1;
  1687. }
  1688. static int Polycode_Core_updateAndRender(lua_State *L) {
  1689. luaL_checktype(L, 1, LUA_TUSERDATA);
  1690. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1691. lua_pushboolean(L, inst->updateAndRender());
  1692. return 1;
  1693. }
  1694. static int Polycode_Core_enableMouse(lua_State *L) {
  1695. luaL_checktype(L, 1, LUA_TUSERDATA);
  1696. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1697. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1698. bool newval = lua_toboolean(L, 2) != 0;
  1699. inst->enableMouse(newval);
  1700. return 0;
  1701. }
  1702. static int Polycode_Core_captureMouse(lua_State *L) {
  1703. luaL_checktype(L, 1, LUA_TUSERDATA);
  1704. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1705. luaL_checktype(L, 2, LUA_TBOOLEAN);
  1706. bool newval = lua_toboolean(L, 2) != 0;
  1707. inst->captureMouse(newval);
  1708. return 0;
  1709. }
  1710. static int Polycode_Core_setCursor(lua_State *L) {
  1711. luaL_checktype(L, 1, LUA_TUSERDATA);
  1712. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1713. luaL_checktype(L, 2, LUA_TNUMBER);
  1714. int cursorType = lua_tointeger(L, 2);
  1715. inst->setCursor(cursorType);
  1716. return 0;
  1717. }
  1718. static int Polycode_Core_warpCursor(lua_State *L) {
  1719. luaL_checktype(L, 1, LUA_TUSERDATA);
  1720. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1721. luaL_checktype(L, 2, LUA_TNUMBER);
  1722. int x = lua_tointeger(L, 2);
  1723. luaL_checktype(L, 3, LUA_TNUMBER);
  1724. int y = lua_tointeger(L, 3);
  1725. inst->warpCursor(x, y);
  1726. return 0;
  1727. }
  1728. static int Polycode_Core_createThread(lua_State *L) {
  1729. luaL_checktype(L, 1, LUA_TUSERDATA);
  1730. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1731. luaL_checktype(L, 2, LUA_TUSERDATA);
  1732. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  1733. inst->createThread(target);
  1734. return 0;
  1735. }
  1736. static int Polycode_Core_lockMutex(lua_State *L) {
  1737. luaL_checktype(L, 1, LUA_TUSERDATA);
  1738. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1739. luaL_checktype(L, 2, LUA_TUSERDATA);
  1740. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1741. inst->lockMutex(mutex);
  1742. return 0;
  1743. }
  1744. static int Polycode_Core_unlockMutex(lua_State *L) {
  1745. luaL_checktype(L, 1, LUA_TUSERDATA);
  1746. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1747. luaL_checktype(L, 2, LUA_TUSERDATA);
  1748. CoreMutex* mutex = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 2));
  1749. inst->unlockMutex(mutex);
  1750. return 0;
  1751. }
  1752. static int Polycode_Core_createMutex(lua_State *L) {
  1753. luaL_checktype(L, 1, LUA_TUSERDATA);
  1754. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1755. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  1756. if(ptrRetVal == NULL) {
  1757. lua_pushnil(L);
  1758. } else {
  1759. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1760. *userdataPtr = ptrRetVal;
  1761. }
  1762. return 1;
  1763. }
  1764. static int Polycode_Core_copyStringToClipboard(lua_State *L) {
  1765. luaL_checktype(L, 1, LUA_TUSERDATA);
  1766. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1767. luaL_checktype(L, 2, LUA_TSTRING);
  1768. String str = String(lua_tostring(L, 2));
  1769. inst->copyStringToClipboard(str);
  1770. return 0;
  1771. }
  1772. static int Polycode_Core_getClipboardString(lua_State *L) {
  1773. luaL_checktype(L, 1, LUA_TUSERDATA);
  1774. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1775. lua_pushstring(L, inst->getClipboardString().c_str());
  1776. return 1;
  1777. }
  1778. static int Polycode_Core_getServices(lua_State *L) {
  1779. luaL_checktype(L, 1, LUA_TUSERDATA);
  1780. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1781. PolyBase *ptrRetVal = (PolyBase*)inst->getServices();
  1782. if(ptrRetVal == NULL) {
  1783. lua_pushnil(L);
  1784. } else {
  1785. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1786. *userdataPtr = ptrRetVal;
  1787. }
  1788. return 1;
  1789. }
  1790. static int Polycode_Core_getFPS(lua_State *L) {
  1791. luaL_checktype(L, 1, LUA_TUSERDATA);
  1792. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1793. lua_pushnumber(L, inst->getFPS());
  1794. return 1;
  1795. }
  1796. static int Polycode_Core_Shutdown(lua_State *L) {
  1797. luaL_checktype(L, 1, LUA_TUSERDATA);
  1798. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1799. inst->Shutdown();
  1800. return 0;
  1801. }
  1802. static int Polycode_Core_isFullscreen(lua_State *L) {
  1803. luaL_checktype(L, 1, LUA_TUSERDATA);
  1804. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1805. lua_pushboolean(L, inst->isFullscreen());
  1806. return 1;
  1807. }
  1808. static int Polycode_Core_getAALevel(lua_State *L) {
  1809. luaL_checktype(L, 1, LUA_TUSERDATA);
  1810. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1811. lua_pushinteger(L, inst->getAALevel());
  1812. return 1;
  1813. }
  1814. static int Polycode_Core_getInput(lua_State *L) {
  1815. luaL_checktype(L, 1, LUA_TUSERDATA);
  1816. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1817. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  1818. if(ptrRetVal == NULL) {
  1819. lua_pushnil(L);
  1820. } else {
  1821. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1822. *userdataPtr = ptrRetVal;
  1823. }
  1824. return 1;
  1825. }
  1826. static int Polycode_Core_getXRes(lua_State *L) {
  1827. luaL_checktype(L, 1, LUA_TUSERDATA);
  1828. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1829. lua_pushnumber(L, inst->getXRes());
  1830. return 1;
  1831. }
  1832. static int Polycode_Core_getYRes(lua_State *L) {
  1833. luaL_checktype(L, 1, LUA_TUSERDATA);
  1834. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1835. lua_pushnumber(L, inst->getYRes());
  1836. return 1;
  1837. }
  1838. static int Polycode_Core_getBackingXRes(lua_State *L) {
  1839. luaL_checktype(L, 1, LUA_TUSERDATA);
  1840. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1841. lua_pushnumber(L, inst->getBackingXRes());
  1842. return 1;
  1843. }
  1844. static int Polycode_Core_getBackingYRes(lua_State *L) {
  1845. luaL_checktype(L, 1, LUA_TUSERDATA);
  1846. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1847. lua_pushnumber(L, inst->getBackingYRes());
  1848. return 1;
  1849. }
  1850. static int Polycode_Core_getScreenInfo(lua_State *L) {
  1851. luaL_checktype(L, 1, LUA_TUSERDATA);
  1852. int* width = (int*) *((PolyBase**)lua_touserdata(L, 1));
  1853. luaL_checktype(L, 2, LUA_TUSERDATA);
  1854. int* height = (int*) *((PolyBase**)lua_touserdata(L, 2));
  1855. luaL_checktype(L, 3, LUA_TUSERDATA);
  1856. int* hz = (int*) *((PolyBase**)lua_touserdata(L, 3));
  1857. Core::getScreenInfo(width, height, hz);
  1858. return 0;
  1859. }
  1860. static int Polycode_Core_getScreenWidth(lua_State *L) {
  1861. luaL_checktype(L, 1, LUA_TUSERDATA);
  1862. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1863. lua_pushinteger(L, inst->getScreenWidth());
  1864. return 1;
  1865. }
  1866. static int Polycode_Core_getScreenHeight(lua_State *L) {
  1867. luaL_checktype(L, 1, LUA_TUSERDATA);
  1868. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1869. lua_pushinteger(L, inst->getScreenHeight());
  1870. return 1;
  1871. }
  1872. static int Polycode_Core_createFolder(lua_State *L) {
  1873. luaL_checktype(L, 1, LUA_TUSERDATA);
  1874. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1875. luaL_checktype(L, 2, LUA_TSTRING);
  1876. String folderPath = String(lua_tostring(L, 2));
  1877. inst->createFolder(folderPath);
  1878. return 0;
  1879. }
  1880. static int Polycode_Core_copyDiskItem(lua_State *L) {
  1881. luaL_checktype(L, 1, LUA_TUSERDATA);
  1882. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1883. luaL_checktype(L, 2, LUA_TSTRING);
  1884. String itemPath = String(lua_tostring(L, 2));
  1885. luaL_checktype(L, 3, LUA_TSTRING);
  1886. String destItemPath = String(lua_tostring(L, 3));
  1887. inst->copyDiskItem(itemPath, destItemPath);
  1888. return 0;
  1889. }
  1890. static int Polycode_Core_moveDiskItem(lua_State *L) {
  1891. luaL_checktype(L, 1, LUA_TUSERDATA);
  1892. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1893. luaL_checktype(L, 2, LUA_TSTRING);
  1894. String itemPath = String(lua_tostring(L, 2));
  1895. luaL_checktype(L, 3, LUA_TSTRING);
  1896. String destItemPath = String(lua_tostring(L, 3));
  1897. inst->moveDiskItem(itemPath, destItemPath);
  1898. return 0;
  1899. }
  1900. static int Polycode_Core_removeDiskItem(lua_State *L) {
  1901. luaL_checktype(L, 1, LUA_TUSERDATA);
  1902. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1903. luaL_checktype(L, 2, LUA_TSTRING);
  1904. String itemPath = String(lua_tostring(L, 2));
  1905. inst->removeDiskItem(itemPath);
  1906. return 0;
  1907. }
  1908. static int Polycode_Core_openFolderPicker(lua_State *L) {
  1909. luaL_checktype(L, 1, LUA_TUSERDATA);
  1910. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1911. lua_pushstring(L, inst->openFolderPicker().c_str());
  1912. return 1;
  1913. }
  1914. static int Polycode_Core_setFramerate(lua_State *L) {
  1915. luaL_checktype(L, 1, LUA_TUSERDATA);
  1916. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1917. luaL_checktype(L, 2, LUA_TNUMBER);
  1918. int frameRate = lua_tointeger(L, 2);
  1919. int maxFixedCycles;
  1920. if(lua_isnumber(L, 3)) {
  1921. maxFixedCycles = lua_tointeger(L, 3);
  1922. } else {
  1923. maxFixedCycles = 8;
  1924. }
  1925. inst->setFramerate(frameRate, maxFixedCycles);
  1926. return 0;
  1927. }
  1928. static int Polycode_Core_openFilePicker(lua_State *L) {
  1929. luaL_checktype(L, 1, LUA_TUSERDATA);
  1930. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1931. luaL_checktype(L, 2, LUA_TUSERDATA);
  1932. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1933. luaL_checktype(L, 3, LUA_TBOOLEAN);
  1934. bool allowMultiple = lua_toboolean(L, 3) != 0;
  1935. return 0;
  1936. }
  1937. static int Polycode_Core_saveFilePicker(lua_State *L) {
  1938. luaL_checktype(L, 1, LUA_TUSERDATA);
  1939. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1940. luaL_checktype(L, 2, LUA_TUSERDATA);
  1941. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  1942. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  1943. return 1;
  1944. }
  1945. static int Polycode_Core_handleVideoModeChange(lua_State *L) {
  1946. luaL_checktype(L, 1, LUA_TUSERDATA);
  1947. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1948. luaL_checktype(L, 2, LUA_TUSERDATA);
  1949. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  1950. inst->handleVideoModeChange(modeInfo);
  1951. return 0;
  1952. }
  1953. static int Polycode_Core_flushRenderContext(lua_State *L) {
  1954. luaL_checktype(L, 1, LUA_TUSERDATA);
  1955. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1956. inst->flushRenderContext();
  1957. return 0;
  1958. }
  1959. static int Polycode_Core_prepareRenderContext(lua_State *L) {
  1960. luaL_checktype(L, 1, LUA_TUSERDATA);
  1961. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1962. inst->prepareRenderContext();
  1963. return 0;
  1964. }
  1965. static int Polycode_Core_openFile(lua_State *L) {
  1966. luaL_checktype(L, 1, LUA_TUSERDATA);
  1967. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1968. luaL_checktype(L, 2, LUA_TSTRING);
  1969. String fileName = String(lua_tostring(L, 2));
  1970. luaL_checktype(L, 3, LUA_TSTRING);
  1971. String opts = String(lua_tostring(L, 3));
  1972. PolyBase *ptrRetVal = (PolyBase*)inst->openFile(fileName, opts);
  1973. if(ptrRetVal == NULL) {
  1974. lua_pushnil(L);
  1975. } else {
  1976. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  1977. *userdataPtr = ptrRetVal;
  1978. }
  1979. return 1;
  1980. }
  1981. static int Polycode_Core_closeFile(lua_State *L) {
  1982. luaL_checktype(L, 1, LUA_TUSERDATA);
  1983. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1984. luaL_checktype(L, 2, LUA_TUSERDATA);
  1985. CoreFile* file = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  1986. inst->closeFile(file);
  1987. return 0;
  1988. }
  1989. static int Polycode_Core_addFileSource(lua_State *L) {
  1990. luaL_checktype(L, 1, LUA_TUSERDATA);
  1991. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  1992. luaL_checktype(L, 2, LUA_TSTRING);
  1993. String type = String(lua_tostring(L, 2));
  1994. luaL_checktype(L, 3, LUA_TSTRING);
  1995. String source = String(lua_tostring(L, 3));
  1996. inst->addFileSource(type, source);
  1997. return 0;
  1998. }
  1999. static int Polycode_Core_removeFileSource(lua_State *L) {
  2000. luaL_checktype(L, 1, LUA_TUSERDATA);
  2001. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2002. luaL_checktype(L, 2, LUA_TSTRING);
  2003. String type = String(lua_tostring(L, 2));
  2004. luaL_checktype(L, 3, LUA_TSTRING);
  2005. String source = String(lua_tostring(L, 3));
  2006. inst->removeFileSource(type, source);
  2007. return 0;
  2008. }
  2009. static int Polycode_Core_parseFolder(lua_State *L) {
  2010. luaL_checktype(L, 1, LUA_TUSERDATA);
  2011. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2012. luaL_checktype(L, 2, LUA_TSTRING);
  2013. String pathString = String(lua_tostring(L, 2));
  2014. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2015. bool showHidden = lua_toboolean(L, 3) != 0;
  2016. return 0;
  2017. }
  2018. static int Polycode_Core_systemParseFolder(lua_State *L) {
  2019. luaL_checktype(L, 1, LUA_TUSERDATA);
  2020. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2021. luaL_checktype(L, 2, LUA_TSTRING);
  2022. String pathString = String(lua_tostring(L, 2));
  2023. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2024. bool showHidden = lua_toboolean(L, 3) != 0;
  2025. luaL_checktype(L, 4, LUA_TUSERDATA);
  2026. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  2027. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  2028. return 1;
  2029. }
  2030. static int Polycode_Core_getResourcePathForFile(lua_State *L) {
  2031. luaL_checktype(L, 1, LUA_TUSERDATA);
  2032. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2033. luaL_checktype(L, 2, LUA_TSTRING);
  2034. String fileName = String(lua_tostring(L, 2));
  2035. lua_pushstring(L, inst->getResourcePathForFile(fileName).c_str());
  2036. return 1;
  2037. }
  2038. static int Polycode_Core_setVideoMode(lua_State *L) {
  2039. luaL_checktype(L, 1, LUA_TUSERDATA);
  2040. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2041. luaL_checktype(L, 2, LUA_TNUMBER);
  2042. int xRes = lua_tointeger(L, 2);
  2043. luaL_checktype(L, 3, LUA_TNUMBER);
  2044. int yRes = lua_tointeger(L, 3);
  2045. luaL_checktype(L, 4, LUA_TBOOLEAN);
  2046. bool fullScreen = lua_toboolean(L, 4) != 0;
  2047. luaL_checktype(L, 5, LUA_TBOOLEAN);
  2048. bool vSync = lua_toboolean(L, 5) != 0;
  2049. luaL_checktype(L, 6, LUA_TNUMBER);
  2050. int aaLevel = lua_tointeger(L, 6);
  2051. luaL_checktype(L, 7, LUA_TNUMBER);
  2052. int anisotropyLevel = lua_tointeger(L, 7);
  2053. bool retinaSupport;
  2054. if(lua_isboolean(L, 8)) {
  2055. retinaSupport = lua_toboolean(L, 8) != 0;
  2056. } else {
  2057. retinaSupport = true;
  2058. }
  2059. inst->setVideoMode(xRes, yRes, fullScreen, vSync, aaLevel, anisotropyLevel, retinaSupport);
  2060. return 0;
  2061. }
  2062. static int Polycode_Core_resizeTo(lua_State *L) {
  2063. luaL_checktype(L, 1, LUA_TUSERDATA);
  2064. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2065. luaL_checktype(L, 2, LUA_TNUMBER);
  2066. int xRes = lua_tointeger(L, 2);
  2067. luaL_checktype(L, 3, LUA_TNUMBER);
  2068. int yRes = lua_tointeger(L, 3);
  2069. inst->resizeTo(xRes, yRes);
  2070. return 0;
  2071. }
  2072. static int Polycode_Core_doSleep(lua_State *L) {
  2073. luaL_checktype(L, 1, LUA_TUSERDATA);
  2074. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2075. inst->doSleep();
  2076. return 0;
  2077. }
  2078. static int Polycode_Core_openURL(lua_State *L) {
  2079. luaL_checktype(L, 1, LUA_TUSERDATA);
  2080. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2081. luaL_checktype(L, 2, LUA_TSTRING);
  2082. String url = String(lua_tostring(L, 2));
  2083. inst->openURL(url);
  2084. return 0;
  2085. }
  2086. static int Polycode_Core_getElapsed(lua_State *L) {
  2087. luaL_checktype(L, 1, LUA_TUSERDATA);
  2088. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2089. lua_pushnumber(L, inst->getElapsed());
  2090. return 1;
  2091. }
  2092. static int Polycode_Core_getTicks(lua_State *L) {
  2093. luaL_checktype(L, 1, LUA_TUSERDATA);
  2094. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2095. lua_pushinteger(L, inst->getTicks());
  2096. return 1;
  2097. }
  2098. static int Polycode_Core_getRefreshIntervalMs(lua_State *L) {
  2099. luaL_checktype(L, 1, LUA_TUSERDATA);
  2100. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2101. lua_pushinteger(L, inst->getRefreshIntervalMs());
  2102. return 1;
  2103. }
  2104. static int Polycode_Core_getTimeSleptMs(lua_State *L) {
  2105. luaL_checktype(L, 1, LUA_TUSERDATA);
  2106. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2107. lua_pushinteger(L, inst->getTimeSleptMs());
  2108. return 1;
  2109. }
  2110. static int Polycode_Core_getFixedTimestep(lua_State *L) {
  2111. luaL_checktype(L, 1, LUA_TUSERDATA);
  2112. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2113. lua_pushnumber(L, inst->getFixedTimestep());
  2114. return 1;
  2115. }
  2116. static int Polycode_Core_getTicksFloat(lua_State *L) {
  2117. luaL_checktype(L, 1, LUA_TUSERDATA);
  2118. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2119. lua_pushnumber(L, inst->getTicksFloat());
  2120. return 1;
  2121. }
  2122. static int Polycode_Core_setUserPointer(lua_State *L) {
  2123. luaL_checktype(L, 1, LUA_TUSERDATA);
  2124. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2125. luaL_checktype(L, 2, LUA_TUSERDATA);
  2126. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 2));
  2127. inst->setUserPointer(ptr);
  2128. return 0;
  2129. }
  2130. static int Polycode_Core_getUserPointer(lua_State *L) {
  2131. luaL_checktype(L, 1, LUA_TUSERDATA);
  2132. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2133. PolyBase *ptrRetVal = (PolyBase*)inst->getUserPointer();
  2134. if(ptrRetVal == NULL) {
  2135. lua_pushnil(L);
  2136. } else {
  2137. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2138. *userdataPtr = ptrRetVal;
  2139. }
  2140. return 1;
  2141. }
  2142. static int Polycode_Core_executeExternalCommand(lua_State *L) {
  2143. luaL_checktype(L, 1, LUA_TUSERDATA);
  2144. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2145. luaL_checktype(L, 2, LUA_TSTRING);
  2146. String command = String(lua_tostring(L, 2));
  2147. luaL_checktype(L, 3, LUA_TSTRING);
  2148. String args = String(lua_tostring(L, 3));
  2149. luaL_checktype(L, 4, LUA_TSTRING);
  2150. String inDirectory = String(lua_tostring(L, 4));
  2151. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  2152. return 1;
  2153. }
  2154. static int Polycode_Core_getDefaultWorkingDirectory(lua_State *L) {
  2155. luaL_checktype(L, 1, LUA_TUSERDATA);
  2156. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2157. lua_pushstring(L, inst->getDefaultWorkingDirectory().c_str());
  2158. return 1;
  2159. }
  2160. static int Polycode_Core_getUserHomeDirectory(lua_State *L) {
  2161. luaL_checktype(L, 1, LUA_TUSERDATA);
  2162. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2163. lua_pushstring(L, inst->getUserHomeDirectory().c_str());
  2164. return 1;
  2165. }
  2166. static int Polycode_Core_makeApplicationMain(lua_State *L) {
  2167. luaL_checktype(L, 1, LUA_TUSERDATA);
  2168. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2169. inst->makeApplicationMain();
  2170. return 0;
  2171. }
  2172. static int Polycode_Core_getEventMutex(lua_State *L) {
  2173. luaL_checktype(L, 1, LUA_TUSERDATA);
  2174. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2175. PolyBase *ptrRetVal = (PolyBase*)inst->getEventMutex();
  2176. if(ptrRetVal == NULL) {
  2177. lua_pushnil(L);
  2178. } else {
  2179. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2180. *userdataPtr = ptrRetVal;
  2181. }
  2182. return 1;
  2183. }
  2184. static int Polycode_Core_removeThread(lua_State *L) {
  2185. luaL_checktype(L, 1, LUA_TUSERDATA);
  2186. Core *inst = (Core*) *((PolyBase**)lua_touserdata(L, 1));
  2187. luaL_checktype(L, 2, LUA_TUSERDATA);
  2188. Threaded* thread = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  2189. inst->removeThread(thread);
  2190. return 0;
  2191. }
  2192. static int Polycode_delete_Core(lua_State *L) {
  2193. luaL_checktype(L, 1, LUA_TUSERDATA);
  2194. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2195. delete ((Core*) *inst);
  2196. *inst = NULL;
  2197. return 0;
  2198. }
  2199. static int Polycode_VideoModeChangeInfo_get_xRes(lua_State *L) {
  2200. luaL_checktype(L, 1, LUA_TUSERDATA);
  2201. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2202. lua_pushinteger(L, inst->xRes);
  2203. return 1;
  2204. }
  2205. static int Polycode_VideoModeChangeInfo_get_yRes(lua_State *L) {
  2206. luaL_checktype(L, 1, LUA_TUSERDATA);
  2207. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2208. lua_pushinteger(L, inst->yRes);
  2209. return 1;
  2210. }
  2211. static int Polycode_VideoModeChangeInfo_get_fullScreen(lua_State *L) {
  2212. luaL_checktype(L, 1, LUA_TUSERDATA);
  2213. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2214. lua_pushboolean(L, inst->fullScreen);
  2215. return 1;
  2216. }
  2217. static int Polycode_VideoModeChangeInfo_get_vSync(lua_State *L) {
  2218. luaL_checktype(L, 1, LUA_TUSERDATA);
  2219. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2220. lua_pushboolean(L, inst->vSync);
  2221. return 1;
  2222. }
  2223. static int Polycode_VideoModeChangeInfo_get_aaLevel(lua_State *L) {
  2224. luaL_checktype(L, 1, LUA_TUSERDATA);
  2225. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2226. lua_pushinteger(L, inst->aaLevel);
  2227. return 1;
  2228. }
  2229. static int Polycode_VideoModeChangeInfo_get_anisotropyLevel(lua_State *L) {
  2230. luaL_checktype(L, 1, LUA_TUSERDATA);
  2231. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2232. lua_pushinteger(L, inst->anisotropyLevel);
  2233. return 1;
  2234. }
  2235. static int Polycode_VideoModeChangeInfo_get_retinaSupport(lua_State *L) {
  2236. luaL_checktype(L, 1, LUA_TUSERDATA);
  2237. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2238. lua_pushboolean(L, inst->retinaSupport);
  2239. return 1;
  2240. }
  2241. static int Polycode_VideoModeChangeInfo_set_xRes(lua_State *L) {
  2242. luaL_checktype(L, 1, LUA_TUSERDATA);
  2243. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2244. int param = lua_tointeger(L, 2);
  2245. inst->xRes = param;
  2246. return 0;
  2247. }
  2248. static int Polycode_VideoModeChangeInfo_set_yRes(lua_State *L) {
  2249. luaL_checktype(L, 1, LUA_TUSERDATA);
  2250. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2251. int param = lua_tointeger(L, 2);
  2252. inst->yRes = param;
  2253. return 0;
  2254. }
  2255. static int Polycode_VideoModeChangeInfo_set_fullScreen(lua_State *L) {
  2256. luaL_checktype(L, 1, LUA_TUSERDATA);
  2257. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2258. bool param = lua_toboolean(L, 2) != 0;
  2259. inst->fullScreen = param;
  2260. return 0;
  2261. }
  2262. static int Polycode_VideoModeChangeInfo_set_vSync(lua_State *L) {
  2263. luaL_checktype(L, 1, LUA_TUSERDATA);
  2264. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2265. bool param = lua_toboolean(L, 2) != 0;
  2266. inst->vSync = param;
  2267. return 0;
  2268. }
  2269. static int Polycode_VideoModeChangeInfo_set_aaLevel(lua_State *L) {
  2270. luaL_checktype(L, 1, LUA_TUSERDATA);
  2271. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2272. int param = lua_tointeger(L, 2);
  2273. inst->aaLevel = param;
  2274. return 0;
  2275. }
  2276. static int Polycode_VideoModeChangeInfo_set_anisotropyLevel(lua_State *L) {
  2277. luaL_checktype(L, 1, LUA_TUSERDATA);
  2278. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2279. int param = lua_tointeger(L, 2);
  2280. inst->anisotropyLevel = param;
  2281. return 0;
  2282. }
  2283. static int Polycode_VideoModeChangeInfo_set_retinaSupport(lua_State *L) {
  2284. luaL_checktype(L, 1, LUA_TUSERDATA);
  2285. VideoModeChangeInfo *inst = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2286. bool param = lua_toboolean(L, 2) != 0;
  2287. inst->retinaSupport = param;
  2288. return 0;
  2289. }
  2290. static int Polycode_delete_VideoModeChangeInfo(lua_State *L) {
  2291. luaL_checktype(L, 1, LUA_TUSERDATA);
  2292. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2293. delete ((VideoModeChangeInfo*) *inst);
  2294. *inst = NULL;
  2295. return 0;
  2296. }
  2297. static int Polycode_PolycodeViewBase_get_resizable(lua_State *L) {
  2298. luaL_checktype(L, 1, LUA_TUSERDATA);
  2299. PolycodeViewBase *inst = (PolycodeViewBase*) *((PolyBase**)lua_touserdata(L, 1));
  2300. lua_pushboolean(L, inst->resizable);
  2301. return 1;
  2302. }
  2303. static int Polycode_PolycodeViewBase_set_resizable(lua_State *L) {
  2304. luaL_checktype(L, 1, LUA_TUSERDATA);
  2305. PolycodeViewBase *inst = (PolycodeViewBase*) *((PolyBase**)lua_touserdata(L, 1));
  2306. bool param = lua_toboolean(L, 2) != 0;
  2307. inst->resizable = param;
  2308. return 0;
  2309. }
  2310. static int Polycode_PolycodeViewBase(lua_State *L) {
  2311. PolycodeViewBase *inst = new PolycodeViewBase();
  2312. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2313. *userdataPtr = (PolyBase*)inst;
  2314. luaL_getmetatable(L, "Polycode.PolycodeViewBase");
  2315. lua_setmetatable(L, -2);
  2316. return 1;
  2317. }
  2318. static int Polycode_delete_PolycodeViewBase(lua_State *L) {
  2319. luaL_checktype(L, 1, LUA_TUSERDATA);
  2320. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2321. delete ((PolycodeViewBase*) *inst);
  2322. *inst = NULL;
  2323. return 0;
  2324. }
  2325. static int Polycode_DummyCore(lua_State *L) {
  2326. DummyCore *inst = new DummyCore();
  2327. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2328. *userdataPtr = (PolyBase*)inst;
  2329. luaL_getmetatable(L, "Polycode.DummyCore");
  2330. lua_setmetatable(L, -2);
  2331. return 1;
  2332. }
  2333. static int Polycode_DummyCore_Render(lua_State *L) {
  2334. luaL_checktype(L, 1, LUA_TUSERDATA);
  2335. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2336. inst->Render();
  2337. return 0;
  2338. }
  2339. static int Polycode_DummyCore_systemUpdate(lua_State *L) {
  2340. luaL_checktype(L, 1, LUA_TUSERDATA);
  2341. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2342. lua_pushboolean(L, inst->systemUpdate());
  2343. return 1;
  2344. }
  2345. static int Polycode_DummyCore_setCursor(lua_State *L) {
  2346. luaL_checktype(L, 1, LUA_TUSERDATA);
  2347. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2348. luaL_checktype(L, 2, LUA_TNUMBER);
  2349. int cursorType = lua_tointeger(L, 2);
  2350. inst->setCursor(cursorType);
  2351. return 0;
  2352. }
  2353. static int Polycode_DummyCore_createThread(lua_State *L) {
  2354. luaL_checktype(L, 1, LUA_TUSERDATA);
  2355. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2356. luaL_checktype(L, 2, LUA_TUSERDATA);
  2357. Threaded* target = (Threaded*) *((PolyBase**)lua_touserdata(L, 2));
  2358. inst->createThread(target);
  2359. return 0;
  2360. }
  2361. static int Polycode_DummyCore_createMutex(lua_State *L) {
  2362. luaL_checktype(L, 1, LUA_TUSERDATA);
  2363. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2364. PolyBase *ptrRetVal = (PolyBase*)inst->createMutex();
  2365. if(ptrRetVal == NULL) {
  2366. lua_pushnil(L);
  2367. } else {
  2368. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2369. *userdataPtr = ptrRetVal;
  2370. }
  2371. return 1;
  2372. }
  2373. static int Polycode_DummyCore_copyStringToClipboard(lua_State *L) {
  2374. luaL_checktype(L, 1, LUA_TUSERDATA);
  2375. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2376. luaL_checktype(L, 2, LUA_TSTRING);
  2377. String str = String(lua_tostring(L, 2));
  2378. inst->copyStringToClipboard(str);
  2379. return 0;
  2380. }
  2381. static int Polycode_DummyCore_getClipboardString(lua_State *L) {
  2382. luaL_checktype(L, 1, LUA_TUSERDATA);
  2383. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2384. lua_pushstring(L, inst->getClipboardString().c_str());
  2385. return 1;
  2386. }
  2387. static int Polycode_DummyCore_createFolder(lua_State *L) {
  2388. luaL_checktype(L, 1, LUA_TUSERDATA);
  2389. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2390. luaL_checktype(L, 2, LUA_TSTRING);
  2391. String folderPath = String(lua_tostring(L, 2));
  2392. inst->createFolder(folderPath);
  2393. return 0;
  2394. }
  2395. static int Polycode_DummyCore_copyDiskItem(lua_State *L) {
  2396. luaL_checktype(L, 1, LUA_TUSERDATA);
  2397. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2398. luaL_checktype(L, 2, LUA_TSTRING);
  2399. String itemPath = String(lua_tostring(L, 2));
  2400. luaL_checktype(L, 3, LUA_TSTRING);
  2401. String destItemPath = String(lua_tostring(L, 3));
  2402. inst->copyDiskItem(itemPath, destItemPath);
  2403. return 0;
  2404. }
  2405. static int Polycode_DummyCore_moveDiskItem(lua_State *L) {
  2406. luaL_checktype(L, 1, LUA_TUSERDATA);
  2407. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2408. luaL_checktype(L, 2, LUA_TSTRING);
  2409. String itemPath = String(lua_tostring(L, 2));
  2410. luaL_checktype(L, 3, LUA_TSTRING);
  2411. String destItemPath = String(lua_tostring(L, 3));
  2412. inst->moveDiskItem(itemPath, destItemPath);
  2413. return 0;
  2414. }
  2415. static int Polycode_DummyCore_removeDiskItem(lua_State *L) {
  2416. luaL_checktype(L, 1, LUA_TUSERDATA);
  2417. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2418. luaL_checktype(L, 2, LUA_TSTRING);
  2419. String itemPath = String(lua_tostring(L, 2));
  2420. inst->removeDiskItem(itemPath);
  2421. return 0;
  2422. }
  2423. static int Polycode_DummyCore_openFolderPicker(lua_State *L) {
  2424. luaL_checktype(L, 1, LUA_TUSERDATA);
  2425. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2426. lua_pushstring(L, inst->openFolderPicker().c_str());
  2427. return 1;
  2428. }
  2429. static int Polycode_DummyCore_openFilePicker(lua_State *L) {
  2430. luaL_checktype(L, 1, LUA_TUSERDATA);
  2431. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2432. luaL_checktype(L, 2, LUA_TUSERDATA);
  2433. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  2434. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2435. bool allowMultiple = lua_toboolean(L, 3) != 0;
  2436. return 0;
  2437. }
  2438. static int Polycode_DummyCore_saveFilePicker(lua_State *L) {
  2439. luaL_checktype(L, 1, LUA_TUSERDATA);
  2440. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2441. luaL_checktype(L, 2, LUA_TUSERDATA);
  2442. vector<CoreFileExtension> extensions = *(vector<CoreFileExtension>*) *((PolyBase**)lua_touserdata(L, 2));
  2443. lua_pushstring(L, inst->saveFilePicker(extensions).c_str());
  2444. return 1;
  2445. }
  2446. static int Polycode_DummyCore_handleVideoModeChange(lua_State *L) {
  2447. luaL_checktype(L, 1, LUA_TUSERDATA);
  2448. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2449. luaL_checktype(L, 2, LUA_TUSERDATA);
  2450. VideoModeChangeInfo* modeInfo = (VideoModeChangeInfo*) *((PolyBase**)lua_touserdata(L, 2));
  2451. inst->handleVideoModeChange(modeInfo);
  2452. return 0;
  2453. }
  2454. static int Polycode_DummyCore_flushRenderContext(lua_State *L) {
  2455. luaL_checktype(L, 1, LUA_TUSERDATA);
  2456. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2457. inst->flushRenderContext();
  2458. return 0;
  2459. }
  2460. static int Polycode_DummyCore_openURL(lua_State *L) {
  2461. luaL_checktype(L, 1, LUA_TUSERDATA);
  2462. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2463. luaL_checktype(L, 2, LUA_TSTRING);
  2464. String url = String(lua_tostring(L, 2));
  2465. inst->openURL(url);
  2466. return 0;
  2467. }
  2468. static int Polycode_DummyCore_getTicks(lua_State *L) {
  2469. luaL_checktype(L, 1, LUA_TUSERDATA);
  2470. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2471. lua_pushinteger(L, inst->getTicks());
  2472. return 1;
  2473. }
  2474. static int Polycode_DummyCore_executeExternalCommand(lua_State *L) {
  2475. luaL_checktype(L, 1, LUA_TUSERDATA);
  2476. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2477. luaL_checktype(L, 2, LUA_TSTRING);
  2478. String command = String(lua_tostring(L, 2));
  2479. luaL_checktype(L, 3, LUA_TSTRING);
  2480. String args = String(lua_tostring(L, 3));
  2481. luaL_checktype(L, 4, LUA_TSTRING);
  2482. String inDirectory = String(lua_tostring(L, 4));
  2483. lua_pushstring(L, inst->executeExternalCommand(command, args, inDirectory).c_str());
  2484. return 1;
  2485. }
  2486. static int Polycode_DummyCore_systemParseFolder(lua_State *L) {
  2487. luaL_checktype(L, 1, LUA_TUSERDATA);
  2488. DummyCore *inst = (DummyCore*) *((PolyBase**)lua_touserdata(L, 1));
  2489. luaL_checktype(L, 2, LUA_TSTRING);
  2490. String pathString = String(lua_tostring(L, 2));
  2491. luaL_checktype(L, 3, LUA_TBOOLEAN);
  2492. bool showHidden = lua_toboolean(L, 3) != 0;
  2493. luaL_checktype(L, 4, LUA_TUSERDATA);
  2494. vector<OSFileEntry> targetVector = *(vector<OSFileEntry>*) *((PolyBase**)lua_touserdata(L, 4));
  2495. lua_pushboolean(L, inst->systemParseFolder(pathString, showHidden, targetVector));
  2496. return 1;
  2497. }
  2498. static int Polycode_delete_DummyCore(lua_State *L) {
  2499. luaL_checktype(L, 1, LUA_TUSERDATA);
  2500. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2501. delete ((DummyCore*) *inst);
  2502. *inst = NULL;
  2503. return 0;
  2504. }
  2505. static int Polycode_TimeInfo_get_seconds(lua_State *L) {
  2506. luaL_checktype(L, 1, LUA_TUSERDATA);
  2507. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2508. lua_pushinteger(L, inst->seconds);
  2509. return 1;
  2510. }
  2511. static int Polycode_TimeInfo_get_minutes(lua_State *L) {
  2512. luaL_checktype(L, 1, LUA_TUSERDATA);
  2513. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2514. lua_pushinteger(L, inst->minutes);
  2515. return 1;
  2516. }
  2517. static int Polycode_TimeInfo_get_hours(lua_State *L) {
  2518. luaL_checktype(L, 1, LUA_TUSERDATA);
  2519. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2520. lua_pushinteger(L, inst->hours);
  2521. return 1;
  2522. }
  2523. static int Polycode_TimeInfo_get_month(lua_State *L) {
  2524. luaL_checktype(L, 1, LUA_TUSERDATA);
  2525. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2526. lua_pushinteger(L, inst->month);
  2527. return 1;
  2528. }
  2529. static int Polycode_TimeInfo_get_monthDay(lua_State *L) {
  2530. luaL_checktype(L, 1, LUA_TUSERDATA);
  2531. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2532. lua_pushinteger(L, inst->monthDay);
  2533. return 1;
  2534. }
  2535. static int Polycode_TimeInfo_get_weekDay(lua_State *L) {
  2536. luaL_checktype(L, 1, LUA_TUSERDATA);
  2537. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2538. lua_pushinteger(L, inst->weekDay);
  2539. return 1;
  2540. }
  2541. static int Polycode_TimeInfo_get_year(lua_State *L) {
  2542. luaL_checktype(L, 1, LUA_TUSERDATA);
  2543. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2544. lua_pushinteger(L, inst->year);
  2545. return 1;
  2546. }
  2547. static int Polycode_TimeInfo_get_yearDay(lua_State *L) {
  2548. luaL_checktype(L, 1, LUA_TUSERDATA);
  2549. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2550. lua_pushinteger(L, inst->yearDay);
  2551. return 1;
  2552. }
  2553. static int Polycode_TimeInfo_set_seconds(lua_State *L) {
  2554. luaL_checktype(L, 1, LUA_TUSERDATA);
  2555. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2556. int param = lua_tointeger(L, 2);
  2557. inst->seconds = param;
  2558. return 0;
  2559. }
  2560. static int Polycode_TimeInfo_set_minutes(lua_State *L) {
  2561. luaL_checktype(L, 1, LUA_TUSERDATA);
  2562. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2563. int param = lua_tointeger(L, 2);
  2564. inst->minutes = param;
  2565. return 0;
  2566. }
  2567. static int Polycode_TimeInfo_set_hours(lua_State *L) {
  2568. luaL_checktype(L, 1, LUA_TUSERDATA);
  2569. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2570. int param = lua_tointeger(L, 2);
  2571. inst->hours = param;
  2572. return 0;
  2573. }
  2574. static int Polycode_TimeInfo_set_month(lua_State *L) {
  2575. luaL_checktype(L, 1, LUA_TUSERDATA);
  2576. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2577. int param = lua_tointeger(L, 2);
  2578. inst->month = param;
  2579. return 0;
  2580. }
  2581. static int Polycode_TimeInfo_set_monthDay(lua_State *L) {
  2582. luaL_checktype(L, 1, LUA_TUSERDATA);
  2583. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2584. int param = lua_tointeger(L, 2);
  2585. inst->monthDay = param;
  2586. return 0;
  2587. }
  2588. static int Polycode_TimeInfo_set_weekDay(lua_State *L) {
  2589. luaL_checktype(L, 1, LUA_TUSERDATA);
  2590. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2591. int param = lua_tointeger(L, 2);
  2592. inst->weekDay = param;
  2593. return 0;
  2594. }
  2595. static int Polycode_TimeInfo_set_year(lua_State *L) {
  2596. luaL_checktype(L, 1, LUA_TUSERDATA);
  2597. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2598. int param = lua_tointeger(L, 2);
  2599. inst->year = param;
  2600. return 0;
  2601. }
  2602. static int Polycode_TimeInfo_set_yearDay(lua_State *L) {
  2603. luaL_checktype(L, 1, LUA_TUSERDATA);
  2604. TimeInfo *inst = (TimeInfo*) *((PolyBase**)lua_touserdata(L, 1));
  2605. int param = lua_tointeger(L, 2);
  2606. inst->yearDay = param;
  2607. return 0;
  2608. }
  2609. static int Polycode_TimeInfo(lua_State *L) {
  2610. TimeInfo *inst = new TimeInfo();
  2611. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2612. *userdataPtr = (PolyBase*)inst;
  2613. luaL_getmetatable(L, "Polycode.TimeInfo");
  2614. lua_setmetatable(L, -2);
  2615. return 1;
  2616. }
  2617. static int Polycode_delete_TimeInfo(lua_State *L) {
  2618. luaL_checktype(L, 1, LUA_TUSERDATA);
  2619. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2620. delete ((TimeInfo*) *inst);
  2621. *inst = NULL;
  2622. return 0;
  2623. }
  2624. static int Polycode_CoreMutex_get_mutexID(lua_State *L) {
  2625. luaL_checktype(L, 1, LUA_TUSERDATA);
  2626. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  2627. lua_pushinteger(L, inst->mutexID);
  2628. return 1;
  2629. }
  2630. static int Polycode_CoreMutex_set_mutexID(lua_State *L) {
  2631. luaL_checktype(L, 1, LUA_TUSERDATA);
  2632. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  2633. int param = lua_tointeger(L, 2);
  2634. inst->mutexID = param;
  2635. return 0;
  2636. }
  2637. static int Polycode_CoreMutex_lock(lua_State *L) {
  2638. luaL_checktype(L, 1, LUA_TUSERDATA);
  2639. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  2640. inst->lock();
  2641. return 0;
  2642. }
  2643. static int Polycode_CoreMutex_unlock(lua_State *L) {
  2644. luaL_checktype(L, 1, LUA_TUSERDATA);
  2645. CoreMutex *inst = (CoreMutex*) *((PolyBase**)lua_touserdata(L, 1));
  2646. inst->unlock();
  2647. return 0;
  2648. }
  2649. static int Polycode_delete_CoreMutex(lua_State *L) {
  2650. luaL_checktype(L, 1, LUA_TUSERDATA);
  2651. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2652. delete ((CoreMutex*) *inst);
  2653. *inst = NULL;
  2654. return 0;
  2655. }
  2656. static int Polycode_CoreMotionEvent_get_amount(lua_State *L) {
  2657. luaL_checktype(L, 1, LUA_TUSERDATA);
  2658. CoreMotionEvent *inst = (CoreMotionEvent*) *((PolyBase**)lua_touserdata(L, 1));
  2659. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2660. *userdataPtr = (PolyBase*)&inst->amount;
  2661. return 1;
  2662. }
  2663. static int Polycode_CoreMotionEvent_set_amount(lua_State *L) {
  2664. luaL_checktype(L, 1, LUA_TUSERDATA);
  2665. CoreMotionEvent *inst = (CoreMotionEvent*) *((PolyBase**)lua_touserdata(L, 1));
  2666. luaL_checktype(L, 2, LUA_TUSERDATA);
  2667. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  2668. inst->amount = *argInst;
  2669. return 0;
  2670. }
  2671. static int Polycode_delete_CoreMotionEvent(lua_State *L) {
  2672. luaL_checktype(L, 1, LUA_TUSERDATA);
  2673. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2674. delete ((CoreMotionEvent*) *inst);
  2675. *inst = NULL;
  2676. return 0;
  2677. }
  2678. static int Polycode_CoreFileExtension_get_extension(lua_State *L) {
  2679. luaL_checktype(L, 1, LUA_TUSERDATA);
  2680. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2681. lua_pushstring(L, inst->extension.c_str());
  2682. return 1;
  2683. }
  2684. static int Polycode_CoreFileExtension_get_description(lua_State *L) {
  2685. luaL_checktype(L, 1, LUA_TUSERDATA);
  2686. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2687. lua_pushstring(L, inst->description.c_str());
  2688. return 1;
  2689. }
  2690. static int Polycode_CoreFileExtension_set_extension(lua_State *L) {
  2691. luaL_checktype(L, 1, LUA_TUSERDATA);
  2692. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2693. String param = lua_tostring(L, 2);
  2694. inst->extension = param;
  2695. return 0;
  2696. }
  2697. static int Polycode_CoreFileExtension_set_description(lua_State *L) {
  2698. luaL_checktype(L, 1, LUA_TUSERDATA);
  2699. CoreFileExtension *inst = (CoreFileExtension*) *((PolyBase**)lua_touserdata(L, 1));
  2700. String param = lua_tostring(L, 2);
  2701. inst->description = param;
  2702. return 0;
  2703. }
  2704. static int Polycode_CoreFileExtension(lua_State *L) {
  2705. CoreFileExtension *inst = new CoreFileExtension();
  2706. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2707. *userdataPtr = (PolyBase*)inst;
  2708. luaL_getmetatable(L, "Polycode.CoreFileExtension");
  2709. lua_setmetatable(L, -2);
  2710. return 1;
  2711. }
  2712. static int Polycode_delete_CoreFileExtension(lua_State *L) {
  2713. luaL_checktype(L, 1, LUA_TUSERDATA);
  2714. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2715. delete ((CoreFileExtension*) *inst);
  2716. *inst = NULL;
  2717. return 0;
  2718. }
  2719. static int Polycode_OSFileEntry_get_name(lua_State *L) {
  2720. luaL_checktype(L, 1, LUA_TUSERDATA);
  2721. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2722. lua_pushstring(L, inst->name.c_str());
  2723. return 1;
  2724. }
  2725. static int Polycode_OSFileEntry_get_extension(lua_State *L) {
  2726. luaL_checktype(L, 1, LUA_TUSERDATA);
  2727. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2728. lua_pushstring(L, inst->extension.c_str());
  2729. return 1;
  2730. }
  2731. static int Polycode_OSFileEntry_get_nameWithoutExtension(lua_State *L) {
  2732. luaL_checktype(L, 1, LUA_TUSERDATA);
  2733. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2734. lua_pushstring(L, inst->nameWithoutExtension.c_str());
  2735. return 1;
  2736. }
  2737. static int Polycode_OSFileEntry_get_basePath(lua_State *L) {
  2738. luaL_checktype(L, 1, LUA_TUSERDATA);
  2739. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2740. lua_pushstring(L, inst->basePath.c_str());
  2741. return 1;
  2742. }
  2743. static int Polycode_OSFileEntry_get_fullPath(lua_State *L) {
  2744. luaL_checktype(L, 1, LUA_TUSERDATA);
  2745. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2746. lua_pushstring(L, inst->fullPath.c_str());
  2747. return 1;
  2748. }
  2749. static int Polycode_OSFileEntry_get_type(lua_State *L) {
  2750. luaL_checktype(L, 1, LUA_TUSERDATA);
  2751. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2752. lua_pushinteger(L, inst->type);
  2753. return 1;
  2754. }
  2755. static int Polycode_OSFileEntry_set_name(lua_State *L) {
  2756. luaL_checktype(L, 1, LUA_TUSERDATA);
  2757. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2758. String param = lua_tostring(L, 2);
  2759. inst->name = param;
  2760. return 0;
  2761. }
  2762. static int Polycode_OSFileEntry_set_extension(lua_State *L) {
  2763. luaL_checktype(L, 1, LUA_TUSERDATA);
  2764. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2765. String param = lua_tostring(L, 2);
  2766. inst->extension = param;
  2767. return 0;
  2768. }
  2769. static int Polycode_OSFileEntry_set_nameWithoutExtension(lua_State *L) {
  2770. luaL_checktype(L, 1, LUA_TUSERDATA);
  2771. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2772. String param = lua_tostring(L, 2);
  2773. inst->nameWithoutExtension = param;
  2774. return 0;
  2775. }
  2776. static int Polycode_OSFileEntry_set_basePath(lua_State *L) {
  2777. luaL_checktype(L, 1, LUA_TUSERDATA);
  2778. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2779. String param = lua_tostring(L, 2);
  2780. inst->basePath = param;
  2781. return 0;
  2782. }
  2783. static int Polycode_OSFileEntry_set_fullPath(lua_State *L) {
  2784. luaL_checktype(L, 1, LUA_TUSERDATA);
  2785. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2786. String param = lua_tostring(L, 2);
  2787. inst->fullPath = param;
  2788. return 0;
  2789. }
  2790. static int Polycode_OSFileEntry_set_type(lua_State *L) {
  2791. luaL_checktype(L, 1, LUA_TUSERDATA);
  2792. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2793. int param = lua_tointeger(L, 2);
  2794. inst->type = param;
  2795. return 0;
  2796. }
  2797. static int Polycode_OSFileEntry(lua_State *L) {
  2798. OSFileEntry *inst = new OSFileEntry();
  2799. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2800. *userdataPtr = (PolyBase*)inst;
  2801. luaL_getmetatable(L, "Polycode.OSFileEntry");
  2802. lua_setmetatable(L, -2);
  2803. return 1;
  2804. }
  2805. static int Polycode_OSFileEntry_init(lua_State *L) {
  2806. luaL_checktype(L, 1, LUA_TUSERDATA);
  2807. OSFileEntry *inst = (OSFileEntry*) *((PolyBase**)lua_touserdata(L, 1));
  2808. luaL_checktype(L, 2, LUA_TSTRING);
  2809. String path = String(lua_tostring(L, 2));
  2810. luaL_checktype(L, 3, LUA_TSTRING);
  2811. String name = String(lua_tostring(L, 3));
  2812. luaL_checktype(L, 4, LUA_TNUMBER);
  2813. int type = lua_tointeger(L, 4);
  2814. inst->init(path, name, type);
  2815. return 0;
  2816. }
  2817. static int Polycode_delete_OSFileEntry(lua_State *L) {
  2818. luaL_checktype(L, 1, LUA_TUSERDATA);
  2819. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  2820. delete ((OSFileEntry*) *inst);
  2821. *inst = NULL;
  2822. return 0;
  2823. }
  2824. static int Polycode_CoreInput_get_simulateTouchWithMouse(lua_State *L) {
  2825. luaL_checktype(L, 1, LUA_TUSERDATA);
  2826. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2827. lua_pushboolean(L, inst->simulateTouchWithMouse);
  2828. return 1;
  2829. }
  2830. static int Polycode_CoreInput_get_simulateTouchAsPen(lua_State *L) {
  2831. luaL_checktype(L, 1, LUA_TUSERDATA);
  2832. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2833. lua_pushboolean(L, inst->simulateTouchAsPen);
  2834. return 1;
  2835. }
  2836. static int Polycode_CoreInput_get_simulateMouseWithTouch(lua_State *L) {
  2837. luaL_checktype(L, 1, LUA_TUSERDATA);
  2838. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2839. lua_pushboolean(L, inst->simulateMouseWithTouch);
  2840. return 1;
  2841. }
  2842. static int Polycode_CoreInput_get_ignoreOffScreenTouch(lua_State *L) {
  2843. luaL_checktype(L, 1, LUA_TUSERDATA);
  2844. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2845. lua_pushboolean(L, inst->ignoreOffScreenTouch);
  2846. return 1;
  2847. }
  2848. static int Polycode_CoreInput_get_keyRepeat(lua_State *L) {
  2849. luaL_checktype(L, 1, LUA_TUSERDATA);
  2850. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2851. lua_pushboolean(L, inst->keyRepeat);
  2852. return 1;
  2853. }
  2854. static int Polycode_CoreInput_get_mousePosition(lua_State *L) {
  2855. luaL_checktype(L, 1, LUA_TUSERDATA);
  2856. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2857. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2858. *userdataPtr = (PolyBase*)&inst->mousePosition;
  2859. return 1;
  2860. }
  2861. static int Polycode_CoreInput_get_deltaMousePosition(lua_State *L) {
  2862. luaL_checktype(L, 1, LUA_TUSERDATA);
  2863. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2864. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2865. *userdataPtr = (PolyBase*)&inst->deltaMousePosition;
  2866. return 1;
  2867. }
  2868. static int Polycode_CoreInput_set_simulateTouchWithMouse(lua_State *L) {
  2869. luaL_checktype(L, 1, LUA_TUSERDATA);
  2870. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2871. bool param = lua_toboolean(L, 2) != 0;
  2872. inst->simulateTouchWithMouse = param;
  2873. return 0;
  2874. }
  2875. static int Polycode_CoreInput_set_simulateTouchAsPen(lua_State *L) {
  2876. luaL_checktype(L, 1, LUA_TUSERDATA);
  2877. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2878. bool param = lua_toboolean(L, 2) != 0;
  2879. inst->simulateTouchAsPen = param;
  2880. return 0;
  2881. }
  2882. static int Polycode_CoreInput_set_simulateMouseWithTouch(lua_State *L) {
  2883. luaL_checktype(L, 1, LUA_TUSERDATA);
  2884. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2885. bool param = lua_toboolean(L, 2) != 0;
  2886. inst->simulateMouseWithTouch = param;
  2887. return 0;
  2888. }
  2889. static int Polycode_CoreInput_set_ignoreOffScreenTouch(lua_State *L) {
  2890. luaL_checktype(L, 1, LUA_TUSERDATA);
  2891. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2892. bool param = lua_toboolean(L, 2) != 0;
  2893. inst->ignoreOffScreenTouch = param;
  2894. return 0;
  2895. }
  2896. static int Polycode_CoreInput_set_keyRepeat(lua_State *L) {
  2897. luaL_checktype(L, 1, LUA_TUSERDATA);
  2898. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2899. bool param = lua_toboolean(L, 2) != 0;
  2900. inst->keyRepeat = param;
  2901. return 0;
  2902. }
  2903. static int Polycode_CoreInput_set_mousePosition(lua_State *L) {
  2904. luaL_checktype(L, 1, LUA_TUSERDATA);
  2905. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2906. luaL_checktype(L, 2, LUA_TUSERDATA);
  2907. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  2908. inst->mousePosition = *argInst;
  2909. return 0;
  2910. }
  2911. static int Polycode_CoreInput_set_deltaMousePosition(lua_State *L) {
  2912. luaL_checktype(L, 1, LUA_TUSERDATA);
  2913. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2914. luaL_checktype(L, 2, LUA_TUSERDATA);
  2915. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  2916. inst->deltaMousePosition = *argInst;
  2917. return 0;
  2918. }
  2919. static int Polycode_CoreInput(lua_State *L) {
  2920. CoreInput *inst = new CoreInput();
  2921. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2922. *userdataPtr = (PolyBase*)inst;
  2923. luaL_getmetatable(L, "Polycode.CoreInput");
  2924. lua_setmetatable(L, -2);
  2925. return 1;
  2926. }
  2927. static int Polycode_CoreInput_getMousePosition(lua_State *L) {
  2928. luaL_checktype(L, 1, LUA_TUSERDATA);
  2929. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2930. Vector2 *retInst = new Vector2();
  2931. *retInst = inst->getMousePosition();
  2932. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2933. luaL_getmetatable(L, "Polycode.Vector2");
  2934. lua_setmetatable(L, -2);
  2935. *userdataPtr = (PolyBase*)retInst;
  2936. return 1;
  2937. }
  2938. static int Polycode_CoreInput_getKeyState(lua_State *L) {
  2939. luaL_checktype(L, 1, LUA_TUSERDATA);
  2940. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2941. luaL_checktype(L, 2, LUA_TNUMBER);
  2942. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  2943. lua_pushboolean(L, inst->getKeyState(keyCode));
  2944. return 1;
  2945. }
  2946. static int Polycode_CoreInput_getJoystickButtonState(lua_State *L) {
  2947. luaL_checktype(L, 1, LUA_TUSERDATA);
  2948. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2949. luaL_checktype(L, 2, LUA_TNUMBER);
  2950. int joystickIndex = lua_tointeger(L, 2);
  2951. luaL_checktype(L, 3, LUA_TNUMBER);
  2952. int button = lua_tointeger(L, 3);
  2953. lua_pushboolean(L, inst->getJoystickButtonState(joystickIndex, button));
  2954. return 1;
  2955. }
  2956. static int Polycode_CoreInput_getJoystickAxisValue(lua_State *L) {
  2957. luaL_checktype(L, 1, LUA_TUSERDATA);
  2958. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2959. luaL_checktype(L, 2, LUA_TNUMBER);
  2960. int joystickIndex = lua_tointeger(L, 2);
  2961. luaL_checktype(L, 3, LUA_TNUMBER);
  2962. int axis = lua_tointeger(L, 3);
  2963. lua_pushnumber(L, inst->getJoystickAxisValue(joystickIndex, axis));
  2964. return 1;
  2965. }
  2966. static int Polycode_CoreInput_getMouseDelta(lua_State *L) {
  2967. luaL_checktype(L, 1, LUA_TUSERDATA);
  2968. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2969. Vector2 *retInst = new Vector2();
  2970. *retInst = inst->getMouseDelta();
  2971. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  2972. luaL_getmetatable(L, "Polycode.Vector2");
  2973. lua_setmetatable(L, -2);
  2974. *userdataPtr = (PolyBase*)retInst;
  2975. return 1;
  2976. }
  2977. static int Polycode_CoreInput_getMouseButtonState(lua_State *L) {
  2978. luaL_checktype(L, 1, LUA_TUSERDATA);
  2979. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2980. luaL_checktype(L, 2, LUA_TNUMBER);
  2981. int mouseButton = lua_tointeger(L, 2);
  2982. lua_pushboolean(L, inst->getMouseButtonState(mouseButton));
  2983. return 1;
  2984. }
  2985. static int Polycode_CoreInput_getNumJoysticks(lua_State *L) {
  2986. luaL_checktype(L, 1, LUA_TUSERDATA);
  2987. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2988. lua_pushinteger(L, inst->getNumJoysticks());
  2989. return 1;
  2990. }
  2991. static int Polycode_CoreInput_getJoystickInfoByIndex(lua_State *L) {
  2992. luaL_checktype(L, 1, LUA_TUSERDATA);
  2993. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  2994. luaL_checktype(L, 2, LUA_TNUMBER);
  2995. int index = lua_tointeger(L, 2);
  2996. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByIndex(index);
  2997. if(ptrRetVal == NULL) {
  2998. lua_pushnil(L);
  2999. } else {
  3000. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3001. *userdataPtr = ptrRetVal;
  3002. }
  3003. return 1;
  3004. }
  3005. static int Polycode_CoreInput_getJoystickInfoByID(lua_State *L) {
  3006. luaL_checktype(L, 1, LUA_TUSERDATA);
  3007. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3008. luaL_checktype(L, 2, LUA_TNUMBER);
  3009. int deviceID = lua_tointeger(L, 2);
  3010. PolyBase *ptrRetVal = (PolyBase*)inst->getJoystickInfoByID(deviceID);
  3011. if(ptrRetVal == NULL) {
  3012. lua_pushnil(L);
  3013. } else {
  3014. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3015. *userdataPtr = ptrRetVal;
  3016. }
  3017. return 1;
  3018. }
  3019. static int Polycode_CoreInput_addJoystick(lua_State *L) {
  3020. luaL_checktype(L, 1, LUA_TUSERDATA);
  3021. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3022. luaL_checktype(L, 2, LUA_TNUMBER);
  3023. int deviceID = lua_tointeger(L, 2);
  3024. inst->addJoystick(deviceID);
  3025. return 0;
  3026. }
  3027. static int Polycode_CoreInput_removeJoystick(lua_State *L) {
  3028. luaL_checktype(L, 1, LUA_TUSERDATA);
  3029. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3030. luaL_checktype(L, 2, LUA_TNUMBER);
  3031. int deviceID = lua_tointeger(L, 2);
  3032. inst->removeJoystick(deviceID);
  3033. return 0;
  3034. }
  3035. static int Polycode_CoreInput_joystickAxisMoved(lua_State *L) {
  3036. luaL_checktype(L, 1, LUA_TUSERDATA);
  3037. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3038. luaL_checktype(L, 2, LUA_TNUMBER);
  3039. int axisID = lua_tointeger(L, 2);
  3040. luaL_checktype(L, 3, LUA_TNUMBER);
  3041. Number value = lua_tonumber(L, 3);
  3042. luaL_checktype(L, 4, LUA_TNUMBER);
  3043. int deviceID = lua_tointeger(L, 4);
  3044. inst->joystickAxisMoved(axisID, value, deviceID);
  3045. return 0;
  3046. }
  3047. static int Polycode_CoreInput_joystickButtonDown(lua_State *L) {
  3048. luaL_checktype(L, 1, LUA_TUSERDATA);
  3049. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3050. luaL_checktype(L, 2, LUA_TNUMBER);
  3051. int buttonID = lua_tointeger(L, 2);
  3052. luaL_checktype(L, 3, LUA_TNUMBER);
  3053. int deviceID = lua_tointeger(L, 3);
  3054. inst->joystickButtonDown(buttonID, deviceID);
  3055. return 0;
  3056. }
  3057. static int Polycode_CoreInput_joystickButtonUp(lua_State *L) {
  3058. luaL_checktype(L, 1, LUA_TUSERDATA);
  3059. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3060. luaL_checktype(L, 2, LUA_TNUMBER);
  3061. int buttonID = lua_tointeger(L, 2);
  3062. luaL_checktype(L, 3, LUA_TNUMBER);
  3063. int deviceID = lua_tointeger(L, 3);
  3064. inst->joystickButtonUp(buttonID, deviceID);
  3065. return 0;
  3066. }
  3067. static int Polycode_CoreInput_mouseWheelUp(lua_State *L) {
  3068. luaL_checktype(L, 1, LUA_TUSERDATA);
  3069. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3070. luaL_checktype(L, 2, LUA_TNUMBER);
  3071. int ticks = lua_tointeger(L, 2);
  3072. inst->mouseWheelUp(ticks);
  3073. return 0;
  3074. }
  3075. static int Polycode_CoreInput_mouseWheelDown(lua_State *L) {
  3076. luaL_checktype(L, 1, LUA_TUSERDATA);
  3077. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3078. luaL_checktype(L, 2, LUA_TNUMBER);
  3079. int ticks = lua_tointeger(L, 2);
  3080. inst->mouseWheelDown(ticks);
  3081. return 0;
  3082. }
  3083. static int Polycode_CoreInput_setMouseButtonState(lua_State *L) {
  3084. luaL_checktype(L, 1, LUA_TUSERDATA);
  3085. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3086. luaL_checktype(L, 2, LUA_TNUMBER);
  3087. int mouseButton = lua_tointeger(L, 2);
  3088. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3089. bool state = lua_toboolean(L, 3) != 0;
  3090. luaL_checktype(L, 4, LUA_TNUMBER);
  3091. int ticks = lua_tointeger(L, 4);
  3092. inst->setMouseButtonState(mouseButton, state, ticks);
  3093. return 0;
  3094. }
  3095. static int Polycode_CoreInput_setMousePosition(lua_State *L) {
  3096. luaL_checktype(L, 1, LUA_TUSERDATA);
  3097. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3098. luaL_checktype(L, 2, LUA_TNUMBER);
  3099. int x = lua_tointeger(L, 2);
  3100. luaL_checktype(L, 3, LUA_TNUMBER);
  3101. int y = lua_tointeger(L, 3);
  3102. luaL_checktype(L, 4, LUA_TNUMBER);
  3103. int ticks = lua_tointeger(L, 4);
  3104. inst->setMousePosition(x, y, ticks);
  3105. return 0;
  3106. }
  3107. static int Polycode_CoreInput_setKeyState(lua_State *L) {
  3108. luaL_checktype(L, 1, LUA_TUSERDATA);
  3109. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3110. luaL_checktype(L, 2, LUA_TNUMBER);
  3111. PolyKEY keyCode = (PolyKEY)lua_tointeger(L, 2);
  3112. luaL_checktype(L, 3, LUA_TUSERDATA);
  3113. wchar_t code = *(wchar_t*) *((PolyBase**)lua_touserdata(L, 3));
  3114. luaL_checktype(L, 4, LUA_TBOOLEAN);
  3115. bool newState = lua_toboolean(L, 4) != 0;
  3116. luaL_checktype(L, 5, LUA_TNUMBER);
  3117. int ticks = lua_tointeger(L, 5);
  3118. inst->setKeyState(keyCode, code, newState, ticks);
  3119. return 0;
  3120. }
  3121. static int Polycode_CoreInput_setDeltaPosition(lua_State *L) {
  3122. luaL_checktype(L, 1, LUA_TUSERDATA);
  3123. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3124. luaL_checktype(L, 2, LUA_TNUMBER);
  3125. int x = lua_tointeger(L, 2);
  3126. luaL_checktype(L, 3, LUA_TNUMBER);
  3127. int y = lua_tointeger(L, 3);
  3128. inst->setDeltaPosition(x, y);
  3129. return 0;
  3130. }
  3131. static int Polycode_CoreInput_touchesBegan(lua_State *L) {
  3132. luaL_checktype(L, 1, LUA_TUSERDATA);
  3133. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3134. luaL_checktype(L, 2, LUA_TUSERDATA);
  3135. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3136. luaL_checktype(L, 3, LUA_TUSERDATA);
  3137. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3138. luaL_checktype(L, 4, LUA_TNUMBER);
  3139. int ticks = lua_tointeger(L, 4);
  3140. inst->touchesBegan(touch, touches, ticks);
  3141. return 0;
  3142. }
  3143. static int Polycode_CoreInput_touchesMoved(lua_State *L) {
  3144. luaL_checktype(L, 1, LUA_TUSERDATA);
  3145. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3146. luaL_checktype(L, 2, LUA_TUSERDATA);
  3147. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3148. luaL_checktype(L, 3, LUA_TUSERDATA);
  3149. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3150. luaL_checktype(L, 4, LUA_TNUMBER);
  3151. int ticks = lua_tointeger(L, 4);
  3152. inst->touchesMoved(touch, touches, ticks);
  3153. return 0;
  3154. }
  3155. static int Polycode_CoreInput_touchesEnded(lua_State *L) {
  3156. luaL_checktype(L, 1, LUA_TUSERDATA);
  3157. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3158. luaL_checktype(L, 2, LUA_TUSERDATA);
  3159. TouchInfo touch = *(TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  3160. luaL_checktype(L, 3, LUA_TUSERDATA);
  3161. vector<TouchInfo> touches = *(vector<TouchInfo>*) *((PolyBase**)lua_touserdata(L, 3));
  3162. luaL_checktype(L, 4, LUA_TNUMBER);
  3163. int ticks = lua_tointeger(L, 4);
  3164. inst->touchesEnded(touch, touches, ticks);
  3165. return 0;
  3166. }
  3167. static int Polycode_CoreInput_createEvent(lua_State *L) {
  3168. luaL_checktype(L, 1, LUA_TUSERDATA);
  3169. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  3170. PolyBase *ptrRetVal = (PolyBase*)CoreInput::createEvent(event);
  3171. if(ptrRetVal == NULL) {
  3172. lua_pushnil(L);
  3173. } else {
  3174. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3175. *userdataPtr = ptrRetVal;
  3176. }
  3177. return 1;
  3178. }
  3179. static int Polycode_CoreInput_clearInput(lua_State *L) {
  3180. luaL_checktype(L, 1, LUA_TUSERDATA);
  3181. CoreInput *inst = (CoreInput*) *((PolyBase**)lua_touserdata(L, 1));
  3182. inst->clearInput();
  3183. return 0;
  3184. }
  3185. static int Polycode_delete_CoreInput(lua_State *L) {
  3186. luaL_checktype(L, 1, LUA_TUSERDATA);
  3187. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3188. delete ((CoreInput*) *inst);
  3189. *inst = NULL;
  3190. return 0;
  3191. }
  3192. static int Polycode_JoystickInfo_get_deviceID(lua_State *L) {
  3193. luaL_checktype(L, 1, LUA_TUSERDATA);
  3194. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3195. lua_pushinteger(L, inst->deviceID);
  3196. return 1;
  3197. }
  3198. static int Polycode_JoystickInfo_get_deviceIndex(lua_State *L) {
  3199. luaL_checktype(L, 1, LUA_TUSERDATA);
  3200. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3201. lua_pushinteger(L, inst->deviceIndex);
  3202. return 1;
  3203. }
  3204. static int Polycode_JoystickInfo_set_deviceID(lua_State *L) {
  3205. luaL_checktype(L, 1, LUA_TUSERDATA);
  3206. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3207. int param = lua_tointeger(L, 2);
  3208. inst->deviceID = param;
  3209. return 0;
  3210. }
  3211. static int Polycode_JoystickInfo_set_deviceIndex(lua_State *L) {
  3212. luaL_checktype(L, 1, LUA_TUSERDATA);
  3213. JoystickInfo *inst = (JoystickInfo*) *((PolyBase**)lua_touserdata(L, 1));
  3214. int param = lua_tointeger(L, 2);
  3215. inst->deviceIndex = param;
  3216. return 0;
  3217. }
  3218. static int Polycode_JoystickInfo(lua_State *L) {
  3219. JoystickInfo *inst = new JoystickInfo();
  3220. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3221. *userdataPtr = (PolyBase*)inst;
  3222. luaL_getmetatable(L, "Polycode.JoystickInfo");
  3223. lua_setmetatable(L, -2);
  3224. return 1;
  3225. }
  3226. static int Polycode_delete_JoystickInfo(lua_State *L) {
  3227. luaL_checktype(L, 1, LUA_TUSERDATA);
  3228. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3229. delete ((JoystickInfo*) *inst);
  3230. *inst = NULL;
  3231. return 0;
  3232. }
  3233. static int Polycode_CoreServices_getInstance(lua_State *L) {
  3234. PolyBase *ptrRetVal = (PolyBase*)CoreServices::getInstance();
  3235. if(ptrRetVal == NULL) {
  3236. lua_pushnil(L);
  3237. } else {
  3238. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3239. *userdataPtr = ptrRetVal;
  3240. }
  3241. return 1;
  3242. }
  3243. static int Polycode_CoreServices_setInstance(lua_State *L) {
  3244. luaL_checktype(L, 1, LUA_TUSERDATA);
  3245. CoreServices* _instance = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3246. CoreServices::setInstance(_instance);
  3247. return 0;
  3248. }
  3249. static int Polycode_CoreServices_getRenderMutex(lua_State *L) {
  3250. PolyBase *ptrRetVal = (PolyBase*)CoreServices::getRenderMutex();
  3251. if(ptrRetVal == NULL) {
  3252. lua_pushnil(L);
  3253. } else {
  3254. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3255. *userdataPtr = ptrRetVal;
  3256. }
  3257. return 1;
  3258. }
  3259. static int Polycode_CoreServices_createInstance(lua_State *L) {
  3260. CoreServices::createInstance();
  3261. return 0;
  3262. }
  3263. static int Polycode_CoreServices_setRenderer(lua_State *L) {
  3264. luaL_checktype(L, 1, LUA_TUSERDATA);
  3265. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3266. luaL_checktype(L, 2, LUA_TUSERDATA);
  3267. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  3268. inst->setRenderer(renderer);
  3269. return 0;
  3270. }
  3271. static int Polycode_CoreServices_getRenderer(lua_State *L) {
  3272. luaL_checktype(L, 1, LUA_TUSERDATA);
  3273. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3274. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderer();
  3275. if(ptrRetVal == NULL) {
  3276. lua_pushnil(L);
  3277. } else {
  3278. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3279. *userdataPtr = ptrRetVal;
  3280. }
  3281. return 1;
  3282. }
  3283. static int Polycode_CoreServices_Update(lua_State *L) {
  3284. luaL_checktype(L, 1, LUA_TUSERDATA);
  3285. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3286. luaL_checktype(L, 2, LUA_TNUMBER);
  3287. int elapsed = lua_tointeger(L, 2);
  3288. inst->Update(elapsed);
  3289. return 0;
  3290. }
  3291. static int Polycode_CoreServices_fixedUpdate(lua_State *L) {
  3292. luaL_checktype(L, 1, LUA_TUSERDATA);
  3293. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3294. inst->fixedUpdate();
  3295. return 0;
  3296. }
  3297. static int Polycode_CoreServices_Render(lua_State *L) {
  3298. luaL_checktype(L, 1, LUA_TUSERDATA);
  3299. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3300. luaL_checktype(L, 2, LUA_TUSERDATA);
  3301. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  3302. inst->Render(viewport);
  3303. return 0;
  3304. }
  3305. static int Polycode_CoreServices_setCore(lua_State *L) {
  3306. luaL_checktype(L, 1, LUA_TUSERDATA);
  3307. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3308. luaL_checktype(L, 2, LUA_TUSERDATA);
  3309. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  3310. inst->setCore(core);
  3311. return 0;
  3312. }
  3313. static int Polycode_CoreServices_getCore(lua_State *L) {
  3314. luaL_checktype(L, 1, LUA_TUSERDATA);
  3315. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3316. PolyBase *ptrRetVal = (PolyBase*)inst->getCore();
  3317. if(ptrRetVal == NULL) {
  3318. lua_pushnil(L);
  3319. } else {
  3320. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3321. *userdataPtr = ptrRetVal;
  3322. }
  3323. return 1;
  3324. }
  3325. static int Polycode_CoreServices_getInput(lua_State *L) {
  3326. luaL_checktype(L, 1, LUA_TUSERDATA);
  3327. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3328. PolyBase *ptrRetVal = (PolyBase*)inst->getInput();
  3329. if(ptrRetVal == NULL) {
  3330. lua_pushnil(L);
  3331. } else {
  3332. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3333. *userdataPtr = ptrRetVal;
  3334. }
  3335. return 1;
  3336. }
  3337. static int Polycode_CoreServices_getMaterialManager(lua_State *L) {
  3338. luaL_checktype(L, 1, LUA_TUSERDATA);
  3339. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3340. PolyBase *ptrRetVal = (PolyBase*)inst->getMaterialManager();
  3341. if(ptrRetVal == NULL) {
  3342. lua_pushnil(L);
  3343. } else {
  3344. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3345. *userdataPtr = ptrRetVal;
  3346. }
  3347. return 1;
  3348. }
  3349. static int Polycode_CoreServices_getSceneManager(lua_State *L) {
  3350. luaL_checktype(L, 1, LUA_TUSERDATA);
  3351. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3352. PolyBase *ptrRetVal = (PolyBase*)inst->getSceneManager();
  3353. if(ptrRetVal == NULL) {
  3354. lua_pushnil(L);
  3355. } else {
  3356. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3357. *userdataPtr = ptrRetVal;
  3358. }
  3359. return 1;
  3360. }
  3361. static int Polycode_CoreServices_getTimerManager(lua_State *L) {
  3362. luaL_checktype(L, 1, LUA_TUSERDATA);
  3363. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3364. PolyBase *ptrRetVal = (PolyBase*)inst->getTimerManager();
  3365. if(ptrRetVal == NULL) {
  3366. lua_pushnil(L);
  3367. } else {
  3368. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3369. *userdataPtr = ptrRetVal;
  3370. }
  3371. return 1;
  3372. }
  3373. static int Polycode_CoreServices_getTweenManager(lua_State *L) {
  3374. luaL_checktype(L, 1, LUA_TUSERDATA);
  3375. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3376. PolyBase *ptrRetVal = (PolyBase*)inst->getTweenManager();
  3377. if(ptrRetVal == NULL) {
  3378. lua_pushnil(L);
  3379. } else {
  3380. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3381. *userdataPtr = ptrRetVal;
  3382. }
  3383. return 1;
  3384. }
  3385. static int Polycode_CoreServices_getResourceManager(lua_State *L) {
  3386. luaL_checktype(L, 1, LUA_TUSERDATA);
  3387. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3388. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceManager();
  3389. if(ptrRetVal == NULL) {
  3390. lua_pushnil(L);
  3391. } else {
  3392. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3393. *userdataPtr = ptrRetVal;
  3394. }
  3395. return 1;
  3396. }
  3397. static int Polycode_CoreServices_getSoundManager(lua_State *L) {
  3398. luaL_checktype(L, 1, LUA_TUSERDATA);
  3399. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3400. PolyBase *ptrRetVal = (PolyBase*)inst->getSoundManager();
  3401. if(ptrRetVal == NULL) {
  3402. lua_pushnil(L);
  3403. } else {
  3404. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3405. *userdataPtr = ptrRetVal;
  3406. }
  3407. return 1;
  3408. }
  3409. static int Polycode_CoreServices_getLogger(lua_State *L) {
  3410. luaL_checktype(L, 1, LUA_TUSERDATA);
  3411. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3412. PolyBase *ptrRetVal = (PolyBase*)inst->getLogger();
  3413. if(ptrRetVal == NULL) {
  3414. lua_pushnil(L);
  3415. } else {
  3416. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3417. *userdataPtr = ptrRetVal;
  3418. }
  3419. return 1;
  3420. }
  3421. static int Polycode_CoreServices_getConfig(lua_State *L) {
  3422. luaL_checktype(L, 1, LUA_TUSERDATA);
  3423. CoreServices *inst = (CoreServices*) *((PolyBase**)lua_touserdata(L, 1));
  3424. PolyBase *ptrRetVal = (PolyBase*)inst->getConfig();
  3425. if(ptrRetVal == NULL) {
  3426. lua_pushnil(L);
  3427. } else {
  3428. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3429. *userdataPtr = ptrRetVal;
  3430. }
  3431. return 1;
  3432. }
  3433. static int Polycode_delete_CoreServices(lua_State *L) {
  3434. luaL_checktype(L, 1, LUA_TUSERDATA);
  3435. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3436. delete ((CoreServices*) *inst);
  3437. *inst = NULL;
  3438. return 0;
  3439. }
  3440. static int Polycode_Data(lua_State *L) {
  3441. Data *inst = new Data();
  3442. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3443. *userdataPtr = (PolyBase*)inst;
  3444. luaL_getmetatable(L, "Polycode.Data");
  3445. lua_setmetatable(L, -2);
  3446. return 1;
  3447. }
  3448. static int Polycode_Data_loadFromFile(lua_State *L) {
  3449. luaL_checktype(L, 1, LUA_TUSERDATA);
  3450. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3451. luaL_checktype(L, 2, LUA_TSTRING);
  3452. String fileName = String(lua_tostring(L, 2));
  3453. lua_pushboolean(L, inst->loadFromFile(fileName));
  3454. return 1;
  3455. }
  3456. static int Polycode_Data_getAsString(lua_State *L) {
  3457. luaL_checktype(L, 1, LUA_TUSERDATA);
  3458. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3459. luaL_checktype(L, 2, LUA_TNUMBER);
  3460. int encoding = lua_tointeger(L, 2);
  3461. lua_pushstring(L, inst->getAsString(encoding).c_str());
  3462. return 1;
  3463. }
  3464. static int Polycode_Data_setFromString(lua_State *L) {
  3465. luaL_checktype(L, 1, LUA_TUSERDATA);
  3466. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3467. luaL_checktype(L, 2, LUA_TSTRING);
  3468. String str = String(lua_tostring(L, 2));
  3469. luaL_checktype(L, 3, LUA_TNUMBER);
  3470. int encoding = lua_tointeger(L, 3);
  3471. inst->setFromString(str, encoding);
  3472. return 0;
  3473. }
  3474. static int Polycode_Data_saveToFile(lua_State *L) {
  3475. luaL_checktype(L, 1, LUA_TUSERDATA);
  3476. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3477. luaL_checktype(L, 2, LUA_TSTRING);
  3478. String fileName = String(lua_tostring(L, 2));
  3479. lua_pushboolean(L, inst->saveToFile(fileName));
  3480. return 1;
  3481. }
  3482. static int Polycode_Data_getData(lua_State *L) {
  3483. luaL_checktype(L, 1, LUA_TUSERDATA);
  3484. Data *inst = (Data*) *((PolyBase**)lua_touserdata(L, 1));
  3485. PolyBase *ptrRetVal = (PolyBase*)inst->getData();
  3486. if(ptrRetVal == NULL) {
  3487. lua_pushnil(L);
  3488. } else {
  3489. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3490. *userdataPtr = ptrRetVal;
  3491. }
  3492. return 1;
  3493. }
  3494. static int Polycode_delete_Data(lua_State *L) {
  3495. luaL_checktype(L, 1, LUA_TUSERDATA);
  3496. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3497. delete ((Data*) *inst);
  3498. *inst = NULL;
  3499. return 0;
  3500. }
  3501. static int Polycode_MouseEventResult_get_hit(lua_State *L) {
  3502. luaL_checktype(L, 1, LUA_TUSERDATA);
  3503. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3504. lua_pushboolean(L, inst->hit);
  3505. return 1;
  3506. }
  3507. static int Polycode_MouseEventResult_get_blocked(lua_State *L) {
  3508. luaL_checktype(L, 1, LUA_TUSERDATA);
  3509. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3510. lua_pushboolean(L, inst->blocked);
  3511. return 1;
  3512. }
  3513. static int Polycode_MouseEventResult_set_hit(lua_State *L) {
  3514. luaL_checktype(L, 1, LUA_TUSERDATA);
  3515. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3516. bool param = lua_toboolean(L, 2) != 0;
  3517. inst->hit = param;
  3518. return 0;
  3519. }
  3520. static int Polycode_MouseEventResult_set_blocked(lua_State *L) {
  3521. luaL_checktype(L, 1, LUA_TUSERDATA);
  3522. MouseEventResult *inst = (MouseEventResult*) *((PolyBase**)lua_touserdata(L, 1));
  3523. bool param = lua_toboolean(L, 2) != 0;
  3524. inst->blocked = param;
  3525. return 0;
  3526. }
  3527. static int Polycode_delete_MouseEventResult(lua_State *L) {
  3528. luaL_checktype(L, 1, LUA_TUSERDATA);
  3529. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3530. delete ((MouseEventResult*) *inst);
  3531. *inst = NULL;
  3532. return 0;
  3533. }
  3534. static int Polycode_EntityProp_get_propName(lua_State *L) {
  3535. luaL_checktype(L, 1, LUA_TUSERDATA);
  3536. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3537. lua_pushstring(L, inst->propName.c_str());
  3538. return 1;
  3539. }
  3540. static int Polycode_EntityProp_get_propValue(lua_State *L) {
  3541. luaL_checktype(L, 1, LUA_TUSERDATA);
  3542. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3543. lua_pushstring(L, inst->propValue.c_str());
  3544. return 1;
  3545. }
  3546. static int Polycode_EntityProp_set_propName(lua_State *L) {
  3547. luaL_checktype(L, 1, LUA_TUSERDATA);
  3548. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3549. String param = lua_tostring(L, 2);
  3550. inst->propName = param;
  3551. return 0;
  3552. }
  3553. static int Polycode_EntityProp_set_propValue(lua_State *L) {
  3554. luaL_checktype(L, 1, LUA_TUSERDATA);
  3555. EntityProp *inst = (EntityProp*) *((PolyBase**)lua_touserdata(L, 1));
  3556. String param = lua_tostring(L, 2);
  3557. inst->propValue = param;
  3558. return 0;
  3559. }
  3560. static int Polycode_delete_EntityProp(lua_State *L) {
  3561. luaL_checktype(L, 1, LUA_TUSERDATA);
  3562. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3563. delete ((EntityProp*) *inst);
  3564. *inst = NULL;
  3565. return 0;
  3566. }
  3567. static int Polycode_AABB_get_min(lua_State *L) {
  3568. luaL_checktype(L, 1, LUA_TUSERDATA);
  3569. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3570. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3571. *userdataPtr = (PolyBase*)&inst->min;
  3572. return 1;
  3573. }
  3574. static int Polycode_AABB_get_max(lua_State *L) {
  3575. luaL_checktype(L, 1, LUA_TUSERDATA);
  3576. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3577. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3578. *userdataPtr = (PolyBase*)&inst->max;
  3579. return 1;
  3580. }
  3581. static int Polycode_AABB_set_min(lua_State *L) {
  3582. luaL_checktype(L, 1, LUA_TUSERDATA);
  3583. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3584. luaL_checktype(L, 2, LUA_TUSERDATA);
  3585. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3586. inst->min = *argInst;
  3587. return 0;
  3588. }
  3589. static int Polycode_AABB_set_max(lua_State *L) {
  3590. luaL_checktype(L, 1, LUA_TUSERDATA);
  3591. AABB *inst = (AABB*) *((PolyBase**)lua_touserdata(L, 1));
  3592. luaL_checktype(L, 2, LUA_TUSERDATA);
  3593. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  3594. inst->max = *argInst;
  3595. return 0;
  3596. }
  3597. static int Polycode_delete_AABB(lua_State *L) {
  3598. luaL_checktype(L, 1, LUA_TUSERDATA);
  3599. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3600. delete ((AABB*) *inst);
  3601. *inst = NULL;
  3602. return 0;
  3603. }
  3604. static int Polycode_Rotation_get_pitch(lua_State *L) {
  3605. luaL_checktype(L, 1, LUA_TUSERDATA);
  3606. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3607. lua_pushnumber(L, inst->pitch);
  3608. return 1;
  3609. }
  3610. static int Polycode_Rotation_get_yaw(lua_State *L) {
  3611. luaL_checktype(L, 1, LUA_TUSERDATA);
  3612. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3613. lua_pushnumber(L, inst->yaw);
  3614. return 1;
  3615. }
  3616. static int Polycode_Rotation_get_roll(lua_State *L) {
  3617. luaL_checktype(L, 1, LUA_TUSERDATA);
  3618. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3619. lua_pushnumber(L, inst->roll);
  3620. return 1;
  3621. }
  3622. static int Polycode_Rotation_set_pitch(lua_State *L) {
  3623. luaL_checktype(L, 1, LUA_TUSERDATA);
  3624. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3625. Number param = lua_tonumber(L, 2);
  3626. inst->pitch = param;
  3627. return 0;
  3628. }
  3629. static int Polycode_Rotation_set_yaw(lua_State *L) {
  3630. luaL_checktype(L, 1, LUA_TUSERDATA);
  3631. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3632. Number param = lua_tonumber(L, 2);
  3633. inst->yaw = param;
  3634. return 0;
  3635. }
  3636. static int Polycode_Rotation_set_roll(lua_State *L) {
  3637. luaL_checktype(L, 1, LUA_TUSERDATA);
  3638. Rotation *inst = (Rotation*) *((PolyBase**)lua_touserdata(L, 1));
  3639. Number param = lua_tonumber(L, 2);
  3640. inst->roll = param;
  3641. return 0;
  3642. }
  3643. static int Polycode_Rotation(lua_State *L) {
  3644. Rotation *inst = new Rotation();
  3645. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3646. *userdataPtr = (PolyBase*)inst;
  3647. luaL_getmetatable(L, "Polycode.Rotation");
  3648. lua_setmetatable(L, -2);
  3649. return 1;
  3650. }
  3651. static int Polycode_delete_Rotation(lua_State *L) {
  3652. luaL_checktype(L, 1, LUA_TUSERDATA);
  3653. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  3654. delete ((Rotation*) *inst);
  3655. *inst = NULL;
  3656. return 0;
  3657. }
  3658. static int Polycode_Entity_get_ownsChildren(lua_State *L) {
  3659. luaL_checktype(L, 1, LUA_TUSERDATA);
  3660. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3661. lua_pushboolean(L, inst->ownsChildren);
  3662. return 1;
  3663. }
  3664. static int Polycode_Entity_get_billboardMode(lua_State *L) {
  3665. luaL_checktype(L, 1, LUA_TUSERDATA);
  3666. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3667. lua_pushboolean(L, inst->billboardMode);
  3668. return 1;
  3669. }
  3670. static int Polycode_Entity_get_color(lua_State *L) {
  3671. luaL_checktype(L, 1, LUA_TUSERDATA);
  3672. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3673. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3674. *userdataPtr = (PolyBase*)&inst->color;
  3675. return 1;
  3676. }
  3677. static int Polycode_Entity_get_enabled(lua_State *L) {
  3678. luaL_checktype(L, 1, LUA_TUSERDATA);
  3679. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3680. lua_pushboolean(L, inst->enabled);
  3681. return 1;
  3682. }
  3683. static int Polycode_Entity_get_visible(lua_State *L) {
  3684. luaL_checktype(L, 1, LUA_TUSERDATA);
  3685. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3686. lua_pushboolean(L, inst->visible);
  3687. return 1;
  3688. }
  3689. static int Polycode_Entity_get_depthWrite(lua_State *L) {
  3690. luaL_checktype(L, 1, LUA_TUSERDATA);
  3691. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3692. lua_pushboolean(L, inst->depthWrite);
  3693. return 1;
  3694. }
  3695. static int Polycode_Entity_get_depthTest(lua_State *L) {
  3696. luaL_checktype(L, 1, LUA_TUSERDATA);
  3697. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3698. lua_pushboolean(L, inst->depthTest);
  3699. return 1;
  3700. }
  3701. static int Polycode_Entity_get_colorAffectsChildren(lua_State *L) {
  3702. luaL_checktype(L, 1, LUA_TUSERDATA);
  3703. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3704. lua_pushboolean(L, inst->colorAffectsChildren);
  3705. return 1;
  3706. }
  3707. static int Polycode_Entity_get_visibilityAffectsChildren(lua_State *L) {
  3708. luaL_checktype(L, 1, LUA_TUSERDATA);
  3709. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3710. lua_pushboolean(L, inst->visibilityAffectsChildren);
  3711. return 1;
  3712. }
  3713. static int Polycode_Entity_get_ignoreParentMatrix(lua_State *L) {
  3714. luaL_checktype(L, 1, LUA_TUSERDATA);
  3715. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3716. lua_pushboolean(L, inst->ignoreParentMatrix);
  3717. return 1;
  3718. }
  3719. static int Polycode_Entity_get_enableScissor(lua_State *L) {
  3720. luaL_checktype(L, 1, LUA_TUSERDATA);
  3721. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3722. lua_pushboolean(L, inst->enableScissor);
  3723. return 1;
  3724. }
  3725. static int Polycode_Entity_get_scissorBox(lua_State *L) {
  3726. luaL_checktype(L, 1, LUA_TUSERDATA);
  3727. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3728. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3729. *userdataPtr = (PolyBase*)&inst->scissorBox;
  3730. return 1;
  3731. }
  3732. static int Polycode_Entity_get_editorOnly(lua_State *L) {
  3733. luaL_checktype(L, 1, LUA_TUSERDATA);
  3734. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3735. lua_pushboolean(L, inst->editorOnly);
  3736. return 1;
  3737. }
  3738. static int Polycode_Entity_get_id(lua_State *L) {
  3739. luaL_checktype(L, 1, LUA_TUSERDATA);
  3740. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3741. lua_pushstring(L, inst->id.c_str());
  3742. return 1;
  3743. }
  3744. static int Polycode_Entity_get_collisionShapeType(lua_State *L) {
  3745. luaL_checktype(L, 1, LUA_TUSERDATA);
  3746. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3747. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3748. *userdataPtr = (PolyBase*)&inst->collisionShapeType;
  3749. return 1;
  3750. }
  3751. static int Polycode_Entity_get_processInputEvents(lua_State *L) {
  3752. luaL_checktype(L, 1, LUA_TUSERDATA);
  3753. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3754. lua_pushboolean(L, inst->processInputEvents);
  3755. return 1;
  3756. }
  3757. static int Polycode_Entity_get_blockMouseInput(lua_State *L) {
  3758. luaL_checktype(L, 1, LUA_TUSERDATA);
  3759. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3760. lua_pushboolean(L, inst->blockMouseInput);
  3761. return 1;
  3762. }
  3763. static int Polycode_Entity_get_snapToPixels(lua_State *L) {
  3764. luaL_checktype(L, 1, LUA_TUSERDATA);
  3765. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3766. lua_pushboolean(L, inst->snapToPixels);
  3767. return 1;
  3768. }
  3769. static int Polycode_Entity_get_mouseOver(lua_State *L) {
  3770. luaL_checktype(L, 1, LUA_TUSERDATA);
  3771. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3772. lua_pushboolean(L, inst->mouseOver);
  3773. return 1;
  3774. }
  3775. static int Polycode_Entity_get_rendererVis(lua_State *L) {
  3776. luaL_checktype(L, 1, LUA_TUSERDATA);
  3777. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3778. lua_pushboolean(L, inst->rendererVis);
  3779. return 1;
  3780. }
  3781. static int Polycode_Entity_get_layerID(lua_State *L) {
  3782. luaL_checktype(L, 1, LUA_TUSERDATA);
  3783. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3784. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3785. *userdataPtr = (PolyBase*)&inst->layerID;
  3786. return 1;
  3787. }
  3788. static int Polycode_Entity_set_ownsChildren(lua_State *L) {
  3789. luaL_checktype(L, 1, LUA_TUSERDATA);
  3790. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3791. bool param = lua_toboolean(L, 2) != 0;
  3792. inst->ownsChildren = param;
  3793. return 0;
  3794. }
  3795. static int Polycode_Entity_set_billboardMode(lua_State *L) {
  3796. luaL_checktype(L, 1, LUA_TUSERDATA);
  3797. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3798. bool param = lua_toboolean(L, 2) != 0;
  3799. inst->billboardMode = param;
  3800. return 0;
  3801. }
  3802. static int Polycode_Entity_set_color(lua_State *L) {
  3803. luaL_checktype(L, 1, LUA_TUSERDATA);
  3804. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3805. luaL_checktype(L, 2, LUA_TUSERDATA);
  3806. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  3807. inst->color = *argInst;
  3808. return 0;
  3809. }
  3810. static int Polycode_Entity_set_enabled(lua_State *L) {
  3811. luaL_checktype(L, 1, LUA_TUSERDATA);
  3812. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3813. bool param = lua_toboolean(L, 2) != 0;
  3814. inst->enabled = param;
  3815. return 0;
  3816. }
  3817. static int Polycode_Entity_set_visible(lua_State *L) {
  3818. luaL_checktype(L, 1, LUA_TUSERDATA);
  3819. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3820. bool param = lua_toboolean(L, 2) != 0;
  3821. inst->visible = param;
  3822. return 0;
  3823. }
  3824. static int Polycode_Entity_set_depthWrite(lua_State *L) {
  3825. luaL_checktype(L, 1, LUA_TUSERDATA);
  3826. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3827. bool param = lua_toboolean(L, 2) != 0;
  3828. inst->depthWrite = param;
  3829. return 0;
  3830. }
  3831. static int Polycode_Entity_set_depthTest(lua_State *L) {
  3832. luaL_checktype(L, 1, LUA_TUSERDATA);
  3833. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3834. bool param = lua_toboolean(L, 2) != 0;
  3835. inst->depthTest = param;
  3836. return 0;
  3837. }
  3838. static int Polycode_Entity_set_colorAffectsChildren(lua_State *L) {
  3839. luaL_checktype(L, 1, LUA_TUSERDATA);
  3840. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3841. bool param = lua_toboolean(L, 2) != 0;
  3842. inst->colorAffectsChildren = param;
  3843. return 0;
  3844. }
  3845. static int Polycode_Entity_set_visibilityAffectsChildren(lua_State *L) {
  3846. luaL_checktype(L, 1, LUA_TUSERDATA);
  3847. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3848. bool param = lua_toboolean(L, 2) != 0;
  3849. inst->visibilityAffectsChildren = param;
  3850. return 0;
  3851. }
  3852. static int Polycode_Entity_set_ignoreParentMatrix(lua_State *L) {
  3853. luaL_checktype(L, 1, LUA_TUSERDATA);
  3854. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3855. bool param = lua_toboolean(L, 2) != 0;
  3856. inst->ignoreParentMatrix = param;
  3857. return 0;
  3858. }
  3859. static int Polycode_Entity_set_enableScissor(lua_State *L) {
  3860. luaL_checktype(L, 1, LUA_TUSERDATA);
  3861. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3862. bool param = lua_toboolean(L, 2) != 0;
  3863. inst->enableScissor = param;
  3864. return 0;
  3865. }
  3866. static int Polycode_Entity_set_scissorBox(lua_State *L) {
  3867. luaL_checktype(L, 1, LUA_TUSERDATA);
  3868. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3869. luaL_checktype(L, 2, LUA_TUSERDATA);
  3870. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  3871. inst->scissorBox = *argInst;
  3872. return 0;
  3873. }
  3874. static int Polycode_Entity_set_editorOnly(lua_State *L) {
  3875. luaL_checktype(L, 1, LUA_TUSERDATA);
  3876. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3877. bool param = lua_toboolean(L, 2) != 0;
  3878. inst->editorOnly = param;
  3879. return 0;
  3880. }
  3881. static int Polycode_Entity_set_id(lua_State *L) {
  3882. luaL_checktype(L, 1, LUA_TUSERDATA);
  3883. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3884. String param = lua_tostring(L, 2);
  3885. inst->id = param;
  3886. return 0;
  3887. }
  3888. static int Polycode_Entity_set_collisionShapeType(lua_State *L) {
  3889. luaL_checktype(L, 1, LUA_TUSERDATA);
  3890. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3891. luaL_checktype(L, 2, LUA_TUSERDATA);
  3892. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  3893. inst->collisionShapeType = *argInst;
  3894. return 0;
  3895. }
  3896. static int Polycode_Entity_set_processInputEvents(lua_State *L) {
  3897. luaL_checktype(L, 1, LUA_TUSERDATA);
  3898. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3899. bool param = lua_toboolean(L, 2) != 0;
  3900. inst->processInputEvents = param;
  3901. return 0;
  3902. }
  3903. static int Polycode_Entity_set_blockMouseInput(lua_State *L) {
  3904. luaL_checktype(L, 1, LUA_TUSERDATA);
  3905. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3906. bool param = lua_toboolean(L, 2) != 0;
  3907. inst->blockMouseInput = param;
  3908. return 0;
  3909. }
  3910. static int Polycode_Entity_set_snapToPixels(lua_State *L) {
  3911. luaL_checktype(L, 1, LUA_TUSERDATA);
  3912. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3913. bool param = lua_toboolean(L, 2) != 0;
  3914. inst->snapToPixels = param;
  3915. return 0;
  3916. }
  3917. static int Polycode_Entity_set_mouseOver(lua_State *L) {
  3918. luaL_checktype(L, 1, LUA_TUSERDATA);
  3919. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3920. bool param = lua_toboolean(L, 2) != 0;
  3921. inst->mouseOver = param;
  3922. return 0;
  3923. }
  3924. static int Polycode_Entity_set_rendererVis(lua_State *L) {
  3925. luaL_checktype(L, 1, LUA_TUSERDATA);
  3926. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3927. bool param = lua_toboolean(L, 2) != 0;
  3928. inst->rendererVis = param;
  3929. return 0;
  3930. }
  3931. static int Polycode_Entity_set_layerID(lua_State *L) {
  3932. luaL_checktype(L, 1, LUA_TUSERDATA);
  3933. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3934. luaL_checktype(L, 2, LUA_TUSERDATA);
  3935. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  3936. inst->layerID = *argInst;
  3937. return 0;
  3938. }
  3939. static int Polycode_Entity(lua_State *L) {
  3940. Entity *inst = new Entity();
  3941. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  3942. *userdataPtr = (PolyBase*)inst;
  3943. luaL_getmetatable(L, "Polycode.Entity");
  3944. lua_setmetatable(L, -2);
  3945. return 1;
  3946. }
  3947. static int Polycode_Entity_initEntity(lua_State *L) {
  3948. luaL_checktype(L, 1, LUA_TUSERDATA);
  3949. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3950. inst->initEntity();
  3951. return 0;
  3952. }
  3953. static int Polycode_Entity_Render(lua_State *L) {
  3954. luaL_checktype(L, 1, LUA_TUSERDATA);
  3955. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3956. luaL_checktype(L, 2, LUA_TUSERDATA);
  3957. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3958. inst->Render(buffer);
  3959. return 0;
  3960. }
  3961. static int Polycode_Entity_Update(lua_State *L) {
  3962. luaL_checktype(L, 1, LUA_TUSERDATA);
  3963. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3964. inst->Update();
  3965. return 0;
  3966. }
  3967. static int Polycode_Entity_fixedUpdate(lua_State *L) {
  3968. luaL_checktype(L, 1, LUA_TUSERDATA);
  3969. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3970. inst->fixedUpdate();
  3971. return 0;
  3972. }
  3973. static int Polycode_Entity_transformAndRender(lua_State *L) {
  3974. luaL_checktype(L, 1, LUA_TUSERDATA);
  3975. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3976. luaL_checktype(L, 2, LUA_TUSERDATA);
  3977. GPUDrawBuffer* drawBuffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3978. luaL_checktype(L, 3, LUA_TUSERDATA);
  3979. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  3980. inst->transformAndRender(drawBuffer, parentScissorBox);
  3981. return 0;
  3982. }
  3983. static int Polycode_Entity_renderChildren(lua_State *L) {
  3984. luaL_checktype(L, 1, LUA_TUSERDATA);
  3985. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3986. luaL_checktype(L, 2, LUA_TUSERDATA);
  3987. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  3988. luaL_checktype(L, 3, LUA_TUSERDATA);
  3989. Polycode::Rectangle* parentScissorBox = (Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 3));
  3990. inst->renderChildren(buffer, parentScissorBox);
  3991. return 0;
  3992. }
  3993. static int Polycode_Entity_Clone(lua_State *L) {
  3994. luaL_checktype(L, 1, LUA_TUSERDATA);
  3995. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  3996. luaL_checktype(L, 2, LUA_TBOOLEAN);
  3997. bool deepClone = lua_toboolean(L, 2) != 0;
  3998. luaL_checktype(L, 3, LUA_TBOOLEAN);
  3999. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  4000. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  4001. if(ptrRetVal == NULL) {
  4002. lua_pushnil(L);
  4003. } else {
  4004. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4005. *userdataPtr = ptrRetVal;
  4006. }
  4007. return 1;
  4008. }
  4009. static int Polycode_Entity_applyClone(lua_State *L) {
  4010. luaL_checktype(L, 1, LUA_TUSERDATA);
  4011. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4012. luaL_checktype(L, 2, LUA_TUSERDATA);
  4013. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4014. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4015. bool deepClone = lua_toboolean(L, 3) != 0;
  4016. luaL_checktype(L, 4, LUA_TBOOLEAN);
  4017. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  4018. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  4019. return 0;
  4020. }
  4021. static int Polycode_Entity_dirtyMatrix(lua_State *L) {
  4022. luaL_checktype(L, 1, LUA_TUSERDATA);
  4023. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4024. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4025. bool val = lua_toboolean(L, 2) != 0;
  4026. inst->dirtyMatrix(val);
  4027. return 0;
  4028. }
  4029. static int Polycode_Entity_rebuildTransformMatrix(lua_State *L) {
  4030. luaL_checktype(L, 1, LUA_TUSERDATA);
  4031. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4032. inst->rebuildTransformMatrix();
  4033. return 0;
  4034. }
  4035. static int Polycode_Entity_updateEntityMatrix(lua_State *L) {
  4036. luaL_checktype(L, 1, LUA_TUSERDATA);
  4037. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4038. inst->updateEntityMatrix();
  4039. return 0;
  4040. }
  4041. static int Polycode_Entity_getTransformMatrix(lua_State *L) {
  4042. luaL_checktype(L, 1, LUA_TUSERDATA);
  4043. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4044. Matrix4 *retInst = new Matrix4();
  4045. *retInst = inst->getTransformMatrix();
  4046. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4047. luaL_getmetatable(L, "Polycode.Matrix4");
  4048. lua_setmetatable(L, -2);
  4049. *userdataPtr = (PolyBase*)retInst;
  4050. return 1;
  4051. }
  4052. static int Polycode_Entity_getConcatenatedMatrix(lua_State *L) {
  4053. luaL_checktype(L, 1, LUA_TUSERDATA);
  4054. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4055. Matrix4 *retInst = new Matrix4();
  4056. *retInst = inst->getConcatenatedMatrix();
  4057. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4058. luaL_getmetatable(L, "Polycode.Matrix4");
  4059. lua_setmetatable(L, -2);
  4060. *userdataPtr = (PolyBase*)retInst;
  4061. return 1;
  4062. }
  4063. static int Polycode_Entity_getConcatenatedMatrixRelativeTo(lua_State *L) {
  4064. luaL_checktype(L, 1, LUA_TUSERDATA);
  4065. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4066. luaL_checktype(L, 2, LUA_TUSERDATA);
  4067. Entity* relativeEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4068. Matrix4 *retInst = new Matrix4();
  4069. *retInst = inst->getConcatenatedMatrixRelativeTo(relativeEntity);
  4070. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4071. luaL_getmetatable(L, "Polycode.Matrix4");
  4072. lua_setmetatable(L, -2);
  4073. *userdataPtr = (PolyBase*)retInst;
  4074. return 1;
  4075. }
  4076. static int Polycode_Entity_getAnchorAdjustedMatrix(lua_State *L) {
  4077. luaL_checktype(L, 1, LUA_TUSERDATA);
  4078. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4079. Matrix4 *retInst = new Matrix4();
  4080. *retInst = inst->getAnchorAdjustedMatrix();
  4081. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4082. luaL_getmetatable(L, "Polycode.Matrix4");
  4083. lua_setmetatable(L, -2);
  4084. *userdataPtr = (PolyBase*)retInst;
  4085. return 1;
  4086. }
  4087. static int Polycode_Entity_getConcatenatedRollMatrix(lua_State *L) {
  4088. luaL_checktype(L, 1, LUA_TUSERDATA);
  4089. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4090. Matrix4 *retInst = new Matrix4();
  4091. *retInst = inst->getConcatenatedRollMatrix();
  4092. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4093. luaL_getmetatable(L, "Polycode.Matrix4");
  4094. lua_setmetatable(L, -2);
  4095. *userdataPtr = (PolyBase*)retInst;
  4096. return 1;
  4097. }
  4098. static int Polycode_Entity_setTransformByMatrixPure(lua_State *L) {
  4099. luaL_checktype(L, 1, LUA_TUSERDATA);
  4100. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4101. luaL_checktype(L, 2, LUA_TUSERDATA);
  4102. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  4103. inst->setTransformByMatrixPure(matrix);
  4104. return 0;
  4105. }
  4106. static int Polycode_Entity_getLookAtMatrix(lua_State *L) {
  4107. luaL_checktype(L, 1, LUA_TUSERDATA);
  4108. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4109. luaL_checktype(L, 2, LUA_TUSERDATA);
  4110. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4111. luaL_checktype(L, 3, LUA_TUSERDATA);
  4112. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4113. Matrix4 *retInst = new Matrix4();
  4114. *retInst = inst->getLookAtMatrix(loc, upVector);
  4115. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4116. luaL_getmetatable(L, "Polycode.Matrix4");
  4117. lua_setmetatable(L, -2);
  4118. *userdataPtr = (PolyBase*)retInst;
  4119. return 1;
  4120. }
  4121. static int Polycode_Entity_addChild(lua_State *L) {
  4122. luaL_checktype(L, 1, LUA_TUSERDATA);
  4123. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4124. luaL_checktype(L, 2, LUA_TUSERDATA);
  4125. Entity* newChild = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4126. inst->addChild(newChild);
  4127. return 0;
  4128. }
  4129. static int Polycode_Entity_removeChild(lua_State *L) {
  4130. luaL_checktype(L, 1, LUA_TUSERDATA);
  4131. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4132. luaL_checktype(L, 2, LUA_TUSERDATA);
  4133. Entity* entityToRemove = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4134. inst->removeChild(entityToRemove);
  4135. return 0;
  4136. }
  4137. static int Polycode_Entity_moveChildUp(lua_State *L) {
  4138. luaL_checktype(L, 1, LUA_TUSERDATA);
  4139. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4140. luaL_checktype(L, 2, LUA_TUSERDATA);
  4141. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4142. inst->moveChildUp(child);
  4143. return 0;
  4144. }
  4145. static int Polycode_Entity_moveChildDown(lua_State *L) {
  4146. luaL_checktype(L, 1, LUA_TUSERDATA);
  4147. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4148. luaL_checktype(L, 2, LUA_TUSERDATA);
  4149. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4150. inst->moveChildDown(child);
  4151. return 0;
  4152. }
  4153. static int Polycode_Entity_moveChildTop(lua_State *L) {
  4154. luaL_checktype(L, 1, LUA_TUSERDATA);
  4155. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4156. luaL_checktype(L, 2, LUA_TUSERDATA);
  4157. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4158. inst->moveChildTop(child);
  4159. return 0;
  4160. }
  4161. static int Polycode_Entity_moveChildBottom(lua_State *L) {
  4162. luaL_checktype(L, 1, LUA_TUSERDATA);
  4163. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4164. luaL_checktype(L, 2, LUA_TUSERDATA);
  4165. Entity* child = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4166. inst->moveChildBottom(child);
  4167. return 0;
  4168. }
  4169. static int Polycode_Entity_setParentEntity(lua_State *L) {
  4170. luaL_checktype(L, 1, LUA_TUSERDATA);
  4171. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4172. luaL_checktype(L, 2, LUA_TUSERDATA);
  4173. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4174. inst->setParentEntity(entity);
  4175. return 0;
  4176. }
  4177. static int Polycode_Entity_getParentEntity(lua_State *L) {
  4178. luaL_checktype(L, 1, LUA_TUSERDATA);
  4179. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4180. PolyBase *ptrRetVal = (PolyBase*)inst->getParentEntity();
  4181. if(ptrRetVal == NULL) {
  4182. lua_pushnil(L);
  4183. } else {
  4184. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4185. *userdataPtr = ptrRetVal;
  4186. }
  4187. return 1;
  4188. }
  4189. static int Polycode_Entity_getNumChildren(lua_State *L) {
  4190. luaL_checktype(L, 1, LUA_TUSERDATA);
  4191. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4192. lua_pushinteger(L, inst->getNumChildren());
  4193. return 1;
  4194. }
  4195. static int Polycode_Entity_getChildAtIndex(lua_State *L) {
  4196. luaL_checktype(L, 1, LUA_TUSERDATA);
  4197. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4198. luaL_checktype(L, 2, LUA_TNUMBER);
  4199. int index = lua_tointeger(L, 2);
  4200. PolyBase *ptrRetVal = (PolyBase*)inst->getChildAtIndex(index);
  4201. if(ptrRetVal == NULL) {
  4202. lua_pushnil(L);
  4203. } else {
  4204. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4205. *userdataPtr = ptrRetVal;
  4206. }
  4207. return 1;
  4208. }
  4209. static int Polycode_Entity_setOwnsChildrenRecursive(lua_State *L) {
  4210. luaL_checktype(L, 1, LUA_TUSERDATA);
  4211. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4212. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4213. bool val = lua_toboolean(L, 2) != 0;
  4214. inst->setOwnsChildrenRecursive(val);
  4215. return 0;
  4216. }
  4217. static int Polycode_Entity_getPosition(lua_State *L) {
  4218. luaL_checktype(L, 1, LUA_TUSERDATA);
  4219. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4220. Vector3 *retInst = new Vector3();
  4221. *retInst = inst->getPosition();
  4222. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4223. luaL_getmetatable(L, "Polycode.Vector3");
  4224. lua_setmetatable(L, -2);
  4225. *userdataPtr = (PolyBase*)retInst;
  4226. return 1;
  4227. }
  4228. static int Polycode_Entity_getPosition2D(lua_State *L) {
  4229. luaL_checktype(L, 1, LUA_TUSERDATA);
  4230. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4231. Vector2 *retInst = new Vector2();
  4232. *retInst = inst->getPosition2D();
  4233. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4234. luaL_getmetatable(L, "Polycode.Vector2");
  4235. lua_setmetatable(L, -2);
  4236. *userdataPtr = (PolyBase*)retInst;
  4237. return 1;
  4238. }
  4239. static int Polycode_Entity_getCombinedPosition(lua_State *L) {
  4240. luaL_checktype(L, 1, LUA_TUSERDATA);
  4241. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4242. Vector3 *retInst = new Vector3();
  4243. *retInst = inst->getCombinedPosition();
  4244. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4245. luaL_getmetatable(L, "Polycode.Vector3");
  4246. lua_setmetatable(L, -2);
  4247. *userdataPtr = (PolyBase*)retInst;
  4248. return 1;
  4249. }
  4250. static int Polycode_Entity_setPosition(lua_State *L) {
  4251. luaL_checktype(L, 1, LUA_TUSERDATA);
  4252. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4253. luaL_checktype(L, 2, LUA_TNUMBER);
  4254. Number x = lua_tonumber(L, 2);
  4255. luaL_checktype(L, 3, LUA_TNUMBER);
  4256. Number y = lua_tonumber(L, 3);
  4257. Number z;
  4258. if(lua_isnumber(L, 4)) {
  4259. z = lua_tonumber(L, 4);
  4260. } else {
  4261. z = 0.0;
  4262. }
  4263. inst->setPosition(x, y, z);
  4264. return 0;
  4265. }
  4266. static int Polycode_Entity_setPositionX(lua_State *L) {
  4267. luaL_checktype(L, 1, LUA_TUSERDATA);
  4268. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4269. luaL_checktype(L, 2, LUA_TNUMBER);
  4270. Number x = lua_tonumber(L, 2);
  4271. inst->setPositionX(x);
  4272. return 0;
  4273. }
  4274. static int Polycode_Entity_setPositionY(lua_State *L) {
  4275. luaL_checktype(L, 1, LUA_TUSERDATA);
  4276. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4277. luaL_checktype(L, 2, LUA_TNUMBER);
  4278. Number y = lua_tonumber(L, 2);
  4279. inst->setPositionY(y);
  4280. return 0;
  4281. }
  4282. static int Polycode_Entity_Translate(lua_State *L) {
  4283. luaL_checktype(L, 1, LUA_TUSERDATA);
  4284. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4285. luaL_checktype(L, 2, LUA_TNUMBER);
  4286. Number x = lua_tonumber(L, 2);
  4287. luaL_checktype(L, 3, LUA_TNUMBER);
  4288. Number y = lua_tonumber(L, 3);
  4289. Number z;
  4290. if(lua_isnumber(L, 4)) {
  4291. z = lua_tonumber(L, 4);
  4292. } else {
  4293. z = 0.0;
  4294. }
  4295. inst->Translate(x, y, z);
  4296. return 0;
  4297. }
  4298. static int Polycode_Entity_setPositionZ(lua_State *L) {
  4299. luaL_checktype(L, 1, LUA_TUSERDATA);
  4300. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4301. luaL_checktype(L, 2, LUA_TNUMBER);
  4302. Number z = lua_tonumber(L, 2);
  4303. inst->setPositionZ(z);
  4304. return 0;
  4305. }
  4306. static int Polycode_Entity_setScaleX(lua_State *L) {
  4307. luaL_checktype(L, 1, LUA_TUSERDATA);
  4308. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4309. luaL_checktype(L, 2, LUA_TNUMBER);
  4310. Number x = lua_tonumber(L, 2);
  4311. inst->setScaleX(x);
  4312. return 0;
  4313. }
  4314. static int Polycode_Entity_setScaleY(lua_State *L) {
  4315. luaL_checktype(L, 1, LUA_TUSERDATA);
  4316. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4317. luaL_checktype(L, 2, LUA_TNUMBER);
  4318. Number y = lua_tonumber(L, 2);
  4319. inst->setScaleY(y);
  4320. return 0;
  4321. }
  4322. static int Polycode_Entity_setScaleZ(lua_State *L) {
  4323. luaL_checktype(L, 1, LUA_TUSERDATA);
  4324. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4325. luaL_checktype(L, 2, LUA_TNUMBER);
  4326. Number z = lua_tonumber(L, 2);
  4327. inst->setScaleZ(z);
  4328. return 0;
  4329. }
  4330. static int Polycode_Entity_Scale(lua_State *L) {
  4331. luaL_checktype(L, 1, LUA_TUSERDATA);
  4332. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4333. luaL_checktype(L, 2, LUA_TNUMBER);
  4334. Number x = lua_tonumber(L, 2);
  4335. luaL_checktype(L, 3, LUA_TNUMBER);
  4336. Number y = lua_tonumber(L, 3);
  4337. Number z;
  4338. if(lua_isnumber(L, 4)) {
  4339. z = lua_tonumber(L, 4);
  4340. } else {
  4341. z = 0.0;
  4342. }
  4343. inst->Scale(x, y, z);
  4344. return 0;
  4345. }
  4346. static int Polycode_Entity_setScale(lua_State *L) {
  4347. luaL_checktype(L, 1, LUA_TUSERDATA);
  4348. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4349. luaL_checktype(L, 2, LUA_TNUMBER);
  4350. Number x = lua_tonumber(L, 2);
  4351. luaL_checktype(L, 3, LUA_TNUMBER);
  4352. Number y = lua_tonumber(L, 3);
  4353. Number z;
  4354. if(lua_isnumber(L, 4)) {
  4355. z = lua_tonumber(L, 4);
  4356. } else {
  4357. z = 1.0;
  4358. }
  4359. inst->setScale(x, y, z);
  4360. return 0;
  4361. }
  4362. static int Polycode_Entity_getCompoundScale(lua_State *L) {
  4363. luaL_checktype(L, 1, LUA_TUSERDATA);
  4364. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4365. Vector3 *retInst = new Vector3();
  4366. *retInst = inst->getCompoundScale();
  4367. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4368. luaL_getmetatable(L, "Polycode.Vector3");
  4369. lua_setmetatable(L, -2);
  4370. *userdataPtr = (PolyBase*)retInst;
  4371. return 1;
  4372. }
  4373. static int Polycode_Entity_getScale(lua_State *L) {
  4374. luaL_checktype(L, 1, LUA_TUSERDATA);
  4375. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4376. Vector3 *retInst = new Vector3();
  4377. *retInst = inst->getScale();
  4378. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4379. luaL_getmetatable(L, "Polycode.Vector3");
  4380. lua_setmetatable(L, -2);
  4381. *userdataPtr = (PolyBase*)retInst;
  4382. return 1;
  4383. }
  4384. static int Polycode_Entity_getRotationEuler(lua_State *L) {
  4385. luaL_checktype(L, 1, LUA_TUSERDATA);
  4386. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4387. Vector3 *retInst = new Vector3();
  4388. *retInst = inst->getRotationEuler();
  4389. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4390. luaL_getmetatable(L, "Polycode.Vector3");
  4391. lua_setmetatable(L, -2);
  4392. *userdataPtr = (PolyBase*)retInst;
  4393. return 1;
  4394. }
  4395. static int Polycode_Entity_getCombinedPitch(lua_State *L) {
  4396. luaL_checktype(L, 1, LUA_TUSERDATA);
  4397. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4398. lua_pushnumber(L, inst->getCombinedPitch());
  4399. return 1;
  4400. }
  4401. static int Polycode_Entity_getCombinedYaw(lua_State *L) {
  4402. luaL_checktype(L, 1, LUA_TUSERDATA);
  4403. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4404. lua_pushnumber(L, inst->getCombinedYaw());
  4405. return 1;
  4406. }
  4407. static int Polycode_Entity_getCombinedRoll(lua_State *L) {
  4408. luaL_checktype(L, 1, LUA_TUSERDATA);
  4409. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4410. lua_pushnumber(L, inst->getCombinedRoll());
  4411. return 1;
  4412. }
  4413. static int Polycode_Entity_rebuildRotation(lua_State *L) {
  4414. luaL_checktype(L, 1, LUA_TUSERDATA);
  4415. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4416. inst->rebuildRotation();
  4417. return 0;
  4418. }
  4419. static int Polycode_Entity_setRotationEuler(lua_State *L) {
  4420. luaL_checktype(L, 1, LUA_TUSERDATA);
  4421. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4422. luaL_checktype(L, 2, LUA_TUSERDATA);
  4423. Vector3 rotation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4424. inst->setRotationEuler(rotation);
  4425. return 0;
  4426. }
  4427. static int Polycode_Entity_setPitch(lua_State *L) {
  4428. luaL_checktype(L, 1, LUA_TUSERDATA);
  4429. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4430. luaL_checktype(L, 2, LUA_TNUMBER);
  4431. Number pitch = lua_tonumber(L, 2);
  4432. inst->setPitch(pitch);
  4433. return 0;
  4434. }
  4435. static int Polycode_Entity_setYaw(lua_State *L) {
  4436. luaL_checktype(L, 1, LUA_TUSERDATA);
  4437. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4438. luaL_checktype(L, 2, LUA_TNUMBER);
  4439. Number yaw = lua_tonumber(L, 2);
  4440. inst->setYaw(yaw);
  4441. return 0;
  4442. }
  4443. static int Polycode_Entity_setRoll(lua_State *L) {
  4444. luaL_checktype(L, 1, LUA_TUSERDATA);
  4445. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4446. luaL_checktype(L, 2, LUA_TNUMBER);
  4447. Number roll = lua_tonumber(L, 2);
  4448. inst->setRoll(roll);
  4449. return 0;
  4450. }
  4451. static int Polycode_Entity_Roll(lua_State *L) {
  4452. luaL_checktype(L, 1, LUA_TUSERDATA);
  4453. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4454. luaL_checktype(L, 2, LUA_TNUMBER);
  4455. Number roll = lua_tonumber(L, 2);
  4456. inst->Roll(roll);
  4457. return 0;
  4458. }
  4459. static int Polycode_Entity_Yaw(lua_State *L) {
  4460. luaL_checktype(L, 1, LUA_TUSERDATA);
  4461. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4462. luaL_checktype(L, 2, LUA_TNUMBER);
  4463. Number yaw = lua_tonumber(L, 2);
  4464. inst->Yaw(yaw);
  4465. return 0;
  4466. }
  4467. static int Polycode_Entity_Pitch(lua_State *L) {
  4468. luaL_checktype(L, 1, LUA_TUSERDATA);
  4469. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4470. luaL_checktype(L, 2, LUA_TNUMBER);
  4471. Number pitch = lua_tonumber(L, 2);
  4472. inst->Pitch(pitch);
  4473. return 0;
  4474. }
  4475. static int Polycode_Entity_getPitch(lua_State *L) {
  4476. luaL_checktype(L, 1, LUA_TUSERDATA);
  4477. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4478. lua_pushnumber(L, inst->getPitch());
  4479. return 1;
  4480. }
  4481. static int Polycode_Entity_getYaw(lua_State *L) {
  4482. luaL_checktype(L, 1, LUA_TUSERDATA);
  4483. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4484. lua_pushnumber(L, inst->getYaw());
  4485. return 1;
  4486. }
  4487. static int Polycode_Entity_getRoll(lua_State *L) {
  4488. luaL_checktype(L, 1, LUA_TUSERDATA);
  4489. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4490. lua_pushnumber(L, inst->getRoll());
  4491. return 1;
  4492. }
  4493. static int Polycode_Entity_getWidth(lua_State *L) {
  4494. luaL_checktype(L, 1, LUA_TUSERDATA);
  4495. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4496. lua_pushnumber(L, inst->getWidth());
  4497. return 1;
  4498. }
  4499. static int Polycode_Entity_getHeight(lua_State *L) {
  4500. luaL_checktype(L, 1, LUA_TUSERDATA);
  4501. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4502. lua_pushnumber(L, inst->getHeight());
  4503. return 1;
  4504. }
  4505. static int Polycode_Entity_getDepth(lua_State *L) {
  4506. luaL_checktype(L, 1, LUA_TUSERDATA);
  4507. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4508. lua_pushnumber(L, inst->getDepth());
  4509. return 1;
  4510. }
  4511. static int Polycode_Entity_setWidth(lua_State *L) {
  4512. luaL_checktype(L, 1, LUA_TUSERDATA);
  4513. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4514. luaL_checktype(L, 2, LUA_TNUMBER);
  4515. Number width = lua_tonumber(L, 2);
  4516. inst->setWidth(width);
  4517. return 0;
  4518. }
  4519. static int Polycode_Entity_setHeight(lua_State *L) {
  4520. luaL_checktype(L, 1, LUA_TUSERDATA);
  4521. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4522. luaL_checktype(L, 2, LUA_TNUMBER);
  4523. Number height = lua_tonumber(L, 2);
  4524. inst->setHeight(height);
  4525. return 0;
  4526. }
  4527. static int Polycode_Entity_setDepth(lua_State *L) {
  4528. luaL_checktype(L, 1, LUA_TUSERDATA);
  4529. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4530. luaL_checktype(L, 2, LUA_TNUMBER);
  4531. Number depth = lua_tonumber(L, 2);
  4532. inst->setDepth(depth);
  4533. return 0;
  4534. }
  4535. static int Polycode_Entity_setRotationQuat(lua_State *L) {
  4536. luaL_checktype(L, 1, LUA_TUSERDATA);
  4537. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4538. luaL_checktype(L, 2, LUA_TNUMBER);
  4539. Number w = lua_tonumber(L, 2);
  4540. luaL_checktype(L, 3, LUA_TNUMBER);
  4541. Number x = lua_tonumber(L, 3);
  4542. luaL_checktype(L, 4, LUA_TNUMBER);
  4543. Number y = lua_tonumber(L, 4);
  4544. luaL_checktype(L, 5, LUA_TNUMBER);
  4545. Number z = lua_tonumber(L, 5);
  4546. inst->setRotationQuat(w, x, y, z);
  4547. return 0;
  4548. }
  4549. static int Polycode_Entity_setRotationByQuaternion(lua_State *L) {
  4550. luaL_checktype(L, 1, LUA_TUSERDATA);
  4551. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4552. luaL_checktype(L, 2, LUA_TUSERDATA);
  4553. Quaternion quaternion = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  4554. inst->setRotationByQuaternion(quaternion);
  4555. return 0;
  4556. }
  4557. static int Polycode_Entity_getRotationQuat(lua_State *L) {
  4558. luaL_checktype(L, 1, LUA_TUSERDATA);
  4559. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4560. Quaternion *retInst = new Quaternion();
  4561. *retInst = inst->getRotationQuat();
  4562. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4563. luaL_getmetatable(L, "Polycode.Quaternion");
  4564. lua_setmetatable(L, -2);
  4565. *userdataPtr = (PolyBase*)retInst;
  4566. return 1;
  4567. }
  4568. static int Polycode_Entity_getConcatenatedQuat(lua_State *L) {
  4569. luaL_checktype(L, 1, LUA_TUSERDATA);
  4570. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4571. Quaternion *retInst = new Quaternion();
  4572. *retInst = inst->getConcatenatedQuat();
  4573. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4574. luaL_getmetatable(L, "Polycode.Quaternion");
  4575. lua_setmetatable(L, -2);
  4576. *userdataPtr = (PolyBase*)retInst;
  4577. return 1;
  4578. }
  4579. static int Polycode_Entity_lookAt(lua_State *L) {
  4580. luaL_checktype(L, 1, LUA_TUSERDATA);
  4581. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4582. luaL_checktype(L, 2, LUA_TUSERDATA);
  4583. Vector3 loc = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4584. luaL_checktype(L, 3, LUA_TUSERDATA);
  4585. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4586. inst->lookAt(loc, upVector);
  4587. return 0;
  4588. }
  4589. static int Polycode_Entity_lookAtEntity(lua_State *L) {
  4590. luaL_checktype(L, 1, LUA_TUSERDATA);
  4591. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4592. luaL_checktype(L, 2, LUA_TUSERDATA);
  4593. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  4594. luaL_checktype(L, 3, LUA_TUSERDATA);
  4595. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  4596. inst->lookAtEntity(entity, upVector);
  4597. return 0;
  4598. }
  4599. static int Polycode_Entity_getCombinedColor(lua_State *L) {
  4600. luaL_checktype(L, 1, LUA_TUSERDATA);
  4601. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4602. Color *retInst = new Color();
  4603. *retInst = inst->getCombinedColor();
  4604. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4605. luaL_getmetatable(L, "Polycode.Color");
  4606. lua_setmetatable(L, -2);
  4607. *userdataPtr = (PolyBase*)retInst;
  4608. return 1;
  4609. }
  4610. static int Polycode_Entity_setColor(lua_State *L) {
  4611. luaL_checktype(L, 1, LUA_TUSERDATA);
  4612. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4613. luaL_checktype(L, 2, LUA_TNUMBER);
  4614. Number r = lua_tonumber(L, 2);
  4615. luaL_checktype(L, 3, LUA_TNUMBER);
  4616. Number g = lua_tonumber(L, 3);
  4617. luaL_checktype(L, 4, LUA_TNUMBER);
  4618. Number b = lua_tonumber(L, 4);
  4619. luaL_checktype(L, 5, LUA_TNUMBER);
  4620. Number a = lua_tonumber(L, 5);
  4621. inst->setColor(r, g, b, a);
  4622. return 0;
  4623. }
  4624. static int Polycode_Entity_setColorInt(lua_State *L) {
  4625. luaL_checktype(L, 1, LUA_TUSERDATA);
  4626. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4627. luaL_checktype(L, 2, LUA_TNUMBER);
  4628. int r = lua_tointeger(L, 2);
  4629. luaL_checktype(L, 3, LUA_TNUMBER);
  4630. int g = lua_tointeger(L, 3);
  4631. luaL_checktype(L, 4, LUA_TNUMBER);
  4632. int b = lua_tointeger(L, 4);
  4633. luaL_checktype(L, 5, LUA_TNUMBER);
  4634. int a = lua_tointeger(L, 5);
  4635. inst->setColorInt(r, g, b, a);
  4636. return 0;
  4637. }
  4638. static int Polycode_Entity_setAnchorPoint(lua_State *L) {
  4639. luaL_checktype(L, 1, LUA_TUSERDATA);
  4640. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4641. luaL_checktype(L, 2, LUA_TUSERDATA);
  4642. Vector3 anchorPoint = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4643. inst->setAnchorPoint(anchorPoint);
  4644. return 0;
  4645. }
  4646. static int Polycode_Entity_getAnchorPoint(lua_State *L) {
  4647. luaL_checktype(L, 1, LUA_TUSERDATA);
  4648. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4649. Vector3 *retInst = new Vector3();
  4650. *retInst = inst->getAnchorPoint();
  4651. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4652. luaL_getmetatable(L, "Polycode.Vector3");
  4653. lua_setmetatable(L, -2);
  4654. *userdataPtr = (PolyBase*)retInst;
  4655. return 1;
  4656. }
  4657. static int Polycode_Entity_onMouseDown(lua_State *L) {
  4658. luaL_checktype(L, 1, LUA_TUSERDATA);
  4659. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4660. luaL_checktype(L, 2, LUA_TUSERDATA);
  4661. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4662. luaL_checktype(L, 3, LUA_TNUMBER);
  4663. int mouseButton = lua_tointeger(L, 3);
  4664. luaL_checktype(L, 4, LUA_TNUMBER);
  4665. int timestamp = lua_tointeger(L, 4);
  4666. MouseEventResult *retInst = new MouseEventResult();
  4667. *retInst = inst->onMouseDown(ray, mouseButton, timestamp);
  4668. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4669. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4670. lua_setmetatable(L, -2);
  4671. *userdataPtr = (PolyBase*)retInst;
  4672. return 1;
  4673. }
  4674. static int Polycode_Entity_onMouseUp(lua_State *L) {
  4675. luaL_checktype(L, 1, LUA_TUSERDATA);
  4676. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4677. luaL_checktype(L, 2, LUA_TUSERDATA);
  4678. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4679. luaL_checktype(L, 3, LUA_TNUMBER);
  4680. int mouseButton = lua_tointeger(L, 3);
  4681. luaL_checktype(L, 4, LUA_TNUMBER);
  4682. int timestamp = lua_tointeger(L, 4);
  4683. MouseEventResult *retInst = new MouseEventResult();
  4684. *retInst = inst->onMouseUp(ray, mouseButton, timestamp);
  4685. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4686. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4687. lua_setmetatable(L, -2);
  4688. *userdataPtr = (PolyBase*)retInst;
  4689. return 1;
  4690. }
  4691. static int Polycode_Entity_onMouseMove(lua_State *L) {
  4692. luaL_checktype(L, 1, LUA_TUSERDATA);
  4693. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4694. luaL_checktype(L, 2, LUA_TUSERDATA);
  4695. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4696. luaL_checktype(L, 3, LUA_TNUMBER);
  4697. int timestamp = lua_tointeger(L, 3);
  4698. MouseEventResult *retInst = new MouseEventResult();
  4699. *retInst = inst->onMouseMove(ray, timestamp);
  4700. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4701. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4702. lua_setmetatable(L, -2);
  4703. *userdataPtr = (PolyBase*)retInst;
  4704. return 1;
  4705. }
  4706. static int Polycode_Entity_onMouseWheelUp(lua_State *L) {
  4707. luaL_checktype(L, 1, LUA_TUSERDATA);
  4708. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4709. luaL_checktype(L, 2, LUA_TUSERDATA);
  4710. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4711. luaL_checktype(L, 3, LUA_TNUMBER);
  4712. int timestamp = lua_tointeger(L, 3);
  4713. MouseEventResult *retInst = new MouseEventResult();
  4714. *retInst = inst->onMouseWheelUp(ray, timestamp);
  4715. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4716. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4717. lua_setmetatable(L, -2);
  4718. *userdataPtr = (PolyBase*)retInst;
  4719. return 1;
  4720. }
  4721. static int Polycode_Entity_onMouseWheelDown(lua_State *L) {
  4722. luaL_checktype(L, 1, LUA_TUSERDATA);
  4723. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4724. luaL_checktype(L, 2, LUA_TUSERDATA);
  4725. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4726. luaL_checktype(L, 3, LUA_TNUMBER);
  4727. int timestamp = lua_tointeger(L, 3);
  4728. MouseEventResult *retInst = new MouseEventResult();
  4729. *retInst = inst->onMouseWheelDown(ray, timestamp);
  4730. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4731. luaL_getmetatable(L, "Polycode.MouseEventResult");
  4732. lua_setmetatable(L, -2);
  4733. *userdataPtr = (PolyBase*)retInst;
  4734. return 1;
  4735. }
  4736. static int Polycode_Entity_setDepthOnly(lua_State *L) {
  4737. luaL_checktype(L, 1, LUA_TUSERDATA);
  4738. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4739. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4740. bool val = lua_toboolean(L, 2) != 0;
  4741. inst->setDepthOnly(val);
  4742. return 0;
  4743. }
  4744. static int Polycode_Entity_getDepthOnly(lua_State *L) {
  4745. luaL_checktype(L, 1, LUA_TUSERDATA);
  4746. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4747. lua_pushboolean(L, inst->getDepthOnly());
  4748. return 1;
  4749. }
  4750. static int Polycode_Entity_setUserData(lua_State *L) {
  4751. luaL_checktype(L, 1, LUA_TUSERDATA);
  4752. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4753. luaL_checktype(L, 2, LUA_TUSERDATA);
  4754. void* userData = (void*) *((PolyBase**)lua_touserdata(L, 2));
  4755. inst->setUserData(userData);
  4756. return 0;
  4757. }
  4758. static int Polycode_Entity_getUserData(lua_State *L) {
  4759. luaL_checktype(L, 1, LUA_TUSERDATA);
  4760. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4761. PolyBase *ptrRetVal = (PolyBase*)inst->getUserData();
  4762. if(ptrRetVal == NULL) {
  4763. lua_pushnil(L);
  4764. } else {
  4765. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4766. *userdataPtr = ptrRetVal;
  4767. }
  4768. return 1;
  4769. }
  4770. static int Polycode_Entity_setBlendingMode(lua_State *L) {
  4771. luaL_checktype(L, 1, LUA_TUSERDATA);
  4772. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4773. luaL_checktype(L, 2, LUA_TNUMBER);
  4774. int newBlendingMode = lua_tointeger(L, 2);
  4775. inst->setBlendingMode(newBlendingMode);
  4776. return 0;
  4777. }
  4778. static int Polycode_Entity_getBlendingMode(lua_State *L) {
  4779. luaL_checktype(L, 1, LUA_TUSERDATA);
  4780. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4781. lua_pushinteger(L, inst->getBlendingMode());
  4782. return 1;
  4783. }
  4784. static int Polycode_Entity_getEntityById(lua_State *L) {
  4785. luaL_checktype(L, 1, LUA_TUSERDATA);
  4786. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4787. luaL_checktype(L, 2, LUA_TSTRING);
  4788. String id = String(lua_tostring(L, 2));
  4789. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4790. bool recursive = lua_toboolean(L, 3) != 0;
  4791. PolyBase *ptrRetVal = (PolyBase*)inst->getEntityById(id, recursive);
  4792. if(ptrRetVal == NULL) {
  4793. lua_pushnil(L);
  4794. } else {
  4795. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4796. *userdataPtr = ptrRetVal;
  4797. }
  4798. return 1;
  4799. }
  4800. static int Polycode_Entity_getEntitiesByTag(lua_State *L) {
  4801. luaL_checktype(L, 1, LUA_TUSERDATA);
  4802. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4803. luaL_checktype(L, 2, LUA_TSTRING);
  4804. String tag = String(lua_tostring(L, 2));
  4805. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4806. bool recursive = lua_toboolean(L, 3) != 0;
  4807. std::vector<Entity*> retVector = inst->getEntitiesByTag(tag, recursive);
  4808. lua_newtable(L);
  4809. for(int i=0; i < retVector.size(); i++) {
  4810. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4811. *userdataPtr = (PolyBase*)retVector[i];
  4812. lua_rawseti(L, -2, i+1);
  4813. }
  4814. return 1;
  4815. }
  4816. static int Polycode_Entity_getEntitiesByLayerID(lua_State *L) {
  4817. luaL_checktype(L, 1, LUA_TUSERDATA);
  4818. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4819. luaL_checktype(L, 2, LUA_TUSERDATA);
  4820. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  4821. luaL_checktype(L, 3, LUA_TBOOLEAN);
  4822. bool recursive = lua_toboolean(L, 3) != 0;
  4823. std::vector<Entity*> retVector = inst->getEntitiesByLayerID(layerID, recursive);
  4824. lua_newtable(L);
  4825. for(int i=0; i < retVector.size(); i++) {
  4826. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4827. *userdataPtr = (PolyBase*)retVector[i];
  4828. lua_rawseti(L, -2, i+1);
  4829. }
  4830. return 1;
  4831. }
  4832. static int Polycode_Entity_getEntityProp(lua_State *L) {
  4833. luaL_checktype(L, 1, LUA_TUSERDATA);
  4834. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4835. luaL_checktype(L, 2, LUA_TSTRING);
  4836. String propName = String(lua_tostring(L, 2));
  4837. lua_pushstring(L, inst->getEntityProp(propName).c_str());
  4838. return 1;
  4839. }
  4840. static int Polycode_Entity_setEntityProp(lua_State *L) {
  4841. luaL_checktype(L, 1, LUA_TUSERDATA);
  4842. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4843. luaL_checktype(L, 2, LUA_TSTRING);
  4844. String propName = String(lua_tostring(L, 2));
  4845. luaL_checktype(L, 3, LUA_TSTRING);
  4846. String propValue = String(lua_tostring(L, 3));
  4847. inst->setEntityProp(propName, propValue);
  4848. return 0;
  4849. }
  4850. static int Polycode_Entity_setInverseY(lua_State *L) {
  4851. luaL_checktype(L, 1, LUA_TUSERDATA);
  4852. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4853. luaL_checktype(L, 2, LUA_TBOOLEAN);
  4854. bool val = lua_toboolean(L, 2) != 0;
  4855. inst->setInverseY(val);
  4856. return 0;
  4857. }
  4858. static int Polycode_Entity_getInverseY(lua_State *L) {
  4859. luaL_checktype(L, 1, LUA_TUSERDATA);
  4860. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4861. lua_pushboolean(L, inst->getInverseY());
  4862. return 1;
  4863. }
  4864. static int Polycode_Entity_doUpdates(lua_State *L) {
  4865. luaL_checktype(L, 1, LUA_TUSERDATA);
  4866. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4867. inst->doUpdates();
  4868. return 0;
  4869. }
  4870. static int Polycode_Entity_doFixedUpdates(lua_State *L) {
  4871. luaL_checktype(L, 1, LUA_TUSERDATA);
  4872. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4873. inst->doFixedUpdates();
  4874. return 0;
  4875. }
  4876. static int Polycode_Entity_buildPositionMatrix(lua_State *L) {
  4877. luaL_checktype(L, 1, LUA_TUSERDATA);
  4878. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4879. Matrix4 *retInst = new Matrix4();
  4880. *retInst = inst->buildPositionMatrix();
  4881. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4882. luaL_getmetatable(L, "Polycode.Matrix4");
  4883. lua_setmetatable(L, -2);
  4884. *userdataPtr = (PolyBase*)retInst;
  4885. return 1;
  4886. }
  4887. static int Polycode_Entity_setRenderer(lua_State *L) {
  4888. luaL_checktype(L, 1, LUA_TUSERDATA);
  4889. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4890. luaL_checktype(L, 2, LUA_TUSERDATA);
  4891. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  4892. inst->setRenderer(renderer);
  4893. return 0;
  4894. }
  4895. static int Polycode_Entity_customHitDetection(lua_State *L) {
  4896. luaL_checktype(L, 1, LUA_TUSERDATA);
  4897. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4898. luaL_checktype(L, 2, LUA_TUSERDATA);
  4899. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  4900. lua_pushboolean(L, inst->customHitDetection(ray));
  4901. return 1;
  4902. }
  4903. static int Polycode_Entity_getNumTags(lua_State *L) {
  4904. luaL_checktype(L, 1, LUA_TUSERDATA);
  4905. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4906. lua_pushinteger(L, inst->getNumTags());
  4907. return 1;
  4908. }
  4909. static int Polycode_Entity_getTagAtIndex(lua_State *L) {
  4910. luaL_checktype(L, 1, LUA_TUSERDATA);
  4911. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4912. luaL_checktype(L, 2, LUA_TNUMBER);
  4913. int index = lua_tointeger(L, 2);
  4914. lua_pushstring(L, inst->getTagAtIndex(index).c_str());
  4915. return 1;
  4916. }
  4917. static int Polycode_Entity_hasTag(lua_State *L) {
  4918. luaL_checktype(L, 1, LUA_TUSERDATA);
  4919. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4920. luaL_checktype(L, 2, LUA_TSTRING);
  4921. String tag = String(lua_tostring(L, 2));
  4922. lua_pushboolean(L, inst->hasTag(tag));
  4923. return 1;
  4924. }
  4925. static int Polycode_Entity_clearTags(lua_State *L) {
  4926. luaL_checktype(L, 1, LUA_TUSERDATA);
  4927. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4928. inst->clearTags();
  4929. return 0;
  4930. }
  4931. static int Polycode_Entity_addTag(lua_State *L) {
  4932. luaL_checktype(L, 1, LUA_TUSERDATA);
  4933. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4934. luaL_checktype(L, 2, LUA_TSTRING);
  4935. String tag = String(lua_tostring(L, 2));
  4936. inst->addTag(tag);
  4937. return 0;
  4938. }
  4939. static int Polycode_Entity_getScreenPosition(lua_State *L) {
  4940. luaL_checktype(L, 1, LUA_TUSERDATA);
  4941. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4942. luaL_checktype(L, 2, LUA_TUSERDATA);
  4943. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  4944. luaL_checktype(L, 3, LUA_TUSERDATA);
  4945. Matrix4 cameraMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  4946. luaL_checktype(L, 4, LUA_TUSERDATA);
  4947. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  4948. Vector2 *retInst = new Vector2();
  4949. *retInst = inst->getScreenPosition(projectionMatrix, cameraMatrix, viewport);
  4950. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4951. luaL_getmetatable(L, "Polycode.Vector2");
  4952. lua_setmetatable(L, -2);
  4953. *userdataPtr = (PolyBase*)retInst;
  4954. return 1;
  4955. }
  4956. static int Polycode_Entity_recalculateAABBAllChildren(lua_State *L) {
  4957. luaL_checktype(L, 1, LUA_TUSERDATA);
  4958. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4959. inst->recalculateAABBAllChildren();
  4960. return 0;
  4961. }
  4962. static int Polycode_Entity_recalculateAABB(lua_State *L) {
  4963. luaL_checktype(L, 1, LUA_TUSERDATA);
  4964. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4965. inst->recalculateAABB();
  4966. return 0;
  4967. }
  4968. static int Polycode_Entity_getWorldAABB(lua_State *L) {
  4969. luaL_checktype(L, 1, LUA_TUSERDATA);
  4970. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4971. AABB *retInst = new AABB();
  4972. *retInst = inst->getWorldAABB();
  4973. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4974. luaL_getmetatable(L, "Polycode.AABB");
  4975. lua_setmetatable(L, -2);
  4976. *userdataPtr = (PolyBase*)retInst;
  4977. return 1;
  4978. }
  4979. static int Polycode_Entity_getLocalBoundingBox(lua_State *L) {
  4980. luaL_checktype(L, 1, LUA_TUSERDATA);
  4981. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4982. Vector3 *retInst = new Vector3();
  4983. *retInst = inst->getLocalBoundingBox();
  4984. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  4985. luaL_getmetatable(L, "Polycode.Vector3");
  4986. lua_setmetatable(L, -2);
  4987. *userdataPtr = (PolyBase*)retInst;
  4988. return 1;
  4989. }
  4990. static int Polycode_Entity_setLocalBoundingBox(lua_State *L) {
  4991. luaL_checktype(L, 1, LUA_TUSERDATA);
  4992. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  4993. luaL_checktype(L, 2, LUA_TUSERDATA);
  4994. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  4995. inst->setLocalBoundingBox(box);
  4996. return 0;
  4997. }
  4998. static int Polycode_Entity_setLocalBoundingBoxX(lua_State *L) {
  4999. luaL_checktype(L, 1, LUA_TUSERDATA);
  5000. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5001. luaL_checktype(L, 2, LUA_TNUMBER);
  5002. Number x = lua_tonumber(L, 2);
  5003. inst->setLocalBoundingBoxX(x);
  5004. return 0;
  5005. }
  5006. static int Polycode_Entity_setLocalBoundingBoxY(lua_State *L) {
  5007. luaL_checktype(L, 1, LUA_TUSERDATA);
  5008. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5009. luaL_checktype(L, 2, LUA_TNUMBER);
  5010. Number y = lua_tonumber(L, 2);
  5011. inst->setLocalBoundingBoxY(y);
  5012. return 0;
  5013. }
  5014. static int Polycode_Entity_setLocalBoundingBoxZ(lua_State *L) {
  5015. luaL_checktype(L, 1, LUA_TUSERDATA);
  5016. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5017. luaL_checktype(L, 2, LUA_TNUMBER);
  5018. Number z = lua_tonumber(L, 2);
  5019. inst->setLocalBoundingBoxZ(z);
  5020. return 0;
  5021. }
  5022. static int Polycode_Entity_setContainerScene(lua_State *L) {
  5023. luaL_checktype(L, 1, LUA_TUSERDATA);
  5024. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5025. luaL_checktype(L, 2, LUA_TUSERDATA);
  5026. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  5027. inst->setContainerScene(scene);
  5028. return 0;
  5029. }
  5030. static int Polycode_Entity_getContainerScene(lua_State *L) {
  5031. luaL_checktype(L, 1, LUA_TUSERDATA);
  5032. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5033. PolyBase *ptrRetVal = (PolyBase*)inst->getContainerScene();
  5034. if(ptrRetVal == NULL) {
  5035. lua_pushnil(L);
  5036. } else {
  5037. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5038. *userdataPtr = ptrRetVal;
  5039. }
  5040. return 1;
  5041. }
  5042. static int Polycode_Entity_attachScript(lua_State *L) {
  5043. luaL_checktype(L, 1, LUA_TUSERDATA);
  5044. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5045. luaL_checktype(L, 2, LUA_TUSERDATA);
  5046. Script* script = (Script*) *((PolyBase**)lua_touserdata(L, 2));
  5047. inst->attachScript(script);
  5048. return 0;
  5049. }
  5050. static int Polycode_Entity_detachScript(lua_State *L) {
  5051. luaL_checktype(L, 1, LUA_TUSERDATA);
  5052. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5053. luaL_checktype(L, 2, LUA_TUSERDATA);
  5054. Script* script = (Script*) *((PolyBase**)lua_touserdata(L, 2));
  5055. inst->detachScript(script);
  5056. return 0;
  5057. }
  5058. static int Polycode_Entity_getNumScripts(lua_State *L) {
  5059. luaL_checktype(L, 1, LUA_TUSERDATA);
  5060. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5061. lua_pushinteger(L, inst->getNumScripts());
  5062. return 1;
  5063. }
  5064. static int Polycode_Entity_getScriptAtIndex(lua_State *L) {
  5065. luaL_checktype(L, 1, LUA_TUSERDATA);
  5066. Entity *inst = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  5067. luaL_checktype(L, 2, LUA_TNUMBER);
  5068. int index = lua_tointeger(L, 2);
  5069. PolyBase *ptrRetVal = (PolyBase*)inst->getScriptAtIndex(index);
  5070. if(ptrRetVal == NULL) {
  5071. lua_pushnil(L);
  5072. } else {
  5073. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5074. *userdataPtr = ptrRetVal;
  5075. }
  5076. return 1;
  5077. }
  5078. static int Polycode_delete_Entity(lua_State *L) {
  5079. luaL_checktype(L, 1, LUA_TUSERDATA);
  5080. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5081. delete ((Entity*) *inst);
  5082. *inst = NULL;
  5083. return 0;
  5084. }
  5085. static int Polycode_Event_get_deleteOnDispatch(lua_State *L) {
  5086. luaL_checktype(L, 1, LUA_TUSERDATA);
  5087. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5088. lua_pushboolean(L, inst->deleteOnDispatch);
  5089. return 1;
  5090. }
  5091. static int Polycode_Event_get_cancelEventFlag(lua_State *L) {
  5092. luaL_checktype(L, 1, LUA_TUSERDATA);
  5093. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5094. lua_pushboolean(L, inst->cancelEventFlag);
  5095. return 1;
  5096. }
  5097. static int Polycode_Event_set_deleteOnDispatch(lua_State *L) {
  5098. luaL_checktype(L, 1, LUA_TUSERDATA);
  5099. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5100. bool param = lua_toboolean(L, 2) != 0;
  5101. inst->deleteOnDispatch = param;
  5102. return 0;
  5103. }
  5104. static int Polycode_Event_set_cancelEventFlag(lua_State *L) {
  5105. luaL_checktype(L, 1, LUA_TUSERDATA);
  5106. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5107. bool param = lua_toboolean(L, 2) != 0;
  5108. inst->cancelEventFlag = param;
  5109. return 0;
  5110. }
  5111. static int Polycode_Event(lua_State *L) {
  5112. Event *inst = new Event();
  5113. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5114. *userdataPtr = (PolyBase*)inst;
  5115. luaL_getmetatable(L, "Polycode.Event");
  5116. lua_setmetatable(L, -2);
  5117. return 1;
  5118. }
  5119. static int Polycode_Event_getEventCode(lua_State *L) {
  5120. luaL_checktype(L, 1, LUA_TUSERDATA);
  5121. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5122. lua_pushinteger(L, inst->getEventCode());
  5123. return 1;
  5124. }
  5125. static int Polycode_Event_getDispatcher(lua_State *L) {
  5126. luaL_checktype(L, 1, LUA_TUSERDATA);
  5127. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5128. PolyBase *ptrRetVal = (PolyBase*)inst->getDispatcher();
  5129. if(ptrRetVal == NULL) {
  5130. lua_pushnil(L);
  5131. } else {
  5132. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5133. *userdataPtr = ptrRetVal;
  5134. }
  5135. return 1;
  5136. }
  5137. static int Polycode_Event_setEventCode(lua_State *L) {
  5138. luaL_checktype(L, 1, LUA_TUSERDATA);
  5139. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5140. luaL_checktype(L, 2, LUA_TNUMBER);
  5141. int eventCode = lua_tointeger(L, 2);
  5142. inst->setEventCode(eventCode);
  5143. return 0;
  5144. }
  5145. static int Polycode_Event_setDispatcher(lua_State *L) {
  5146. luaL_checktype(L, 1, LUA_TUSERDATA);
  5147. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5148. luaL_checktype(L, 2, LUA_TUSERDATA);
  5149. EventDispatcher* dispatcher = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 2));
  5150. inst->setDispatcher(dispatcher);
  5151. return 0;
  5152. }
  5153. static int Polycode_Event_getEventType(lua_State *L) {
  5154. luaL_checktype(L, 1, LUA_TUSERDATA);
  5155. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5156. lua_pushstring(L, inst->getEventType().c_str());
  5157. return 1;
  5158. }
  5159. static int Polycode_Event_cancelEvent(lua_State *L) {
  5160. luaL_checktype(L, 1, LUA_TUSERDATA);
  5161. Event *inst = (Event*) *((PolyBase**)lua_touserdata(L, 1));
  5162. inst->cancelEvent();
  5163. return 0;
  5164. }
  5165. static int Polycode_delete_Event(lua_State *L) {
  5166. luaL_checktype(L, 1, LUA_TUSERDATA);
  5167. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5168. delete ((Event*) *inst);
  5169. *inst = NULL;
  5170. return 0;
  5171. }
  5172. static int Polycode_EventDispatcher(lua_State *L) {
  5173. EventDispatcher *inst = new EventDispatcher();
  5174. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5175. *userdataPtr = (PolyBase*)inst;
  5176. luaL_getmetatable(L, "Polycode.EventDispatcher");
  5177. lua_setmetatable(L, -2);
  5178. return 1;
  5179. }
  5180. static int Polycode_EventDispatcher_removeAllHandlers(lua_State *L) {
  5181. luaL_checktype(L, 1, LUA_TUSERDATA);
  5182. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5183. inst->removeAllHandlers();
  5184. return 0;
  5185. }
  5186. static int Polycode_EventDispatcher_removeAllHandlersForListener(lua_State *L) {
  5187. luaL_checktype(L, 1, LUA_TUSERDATA);
  5188. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5189. luaL_checktype(L, 2, LUA_TUSERDATA);
  5190. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5191. inst->removeAllHandlersForListener(handler);
  5192. return 0;
  5193. }
  5194. static int Polycode_EventDispatcher_addEventListener(lua_State *L) {
  5195. luaL_checktype(L, 1, LUA_TUSERDATA);
  5196. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5197. luaL_checktype(L, 2, LUA_TUSERDATA);
  5198. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5199. luaL_checktype(L, 3, LUA_TNUMBER);
  5200. int eventCode = lua_tointeger(L, 3);
  5201. inst->addEventListener(handler, eventCode);
  5202. return 0;
  5203. }
  5204. static int Polycode_EventDispatcher_addEventListenerUnique(lua_State *L) {
  5205. luaL_checktype(L, 1, LUA_TUSERDATA);
  5206. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5207. luaL_checktype(L, 2, LUA_TUSERDATA);
  5208. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5209. luaL_checktype(L, 3, LUA_TNUMBER);
  5210. int eventCode = lua_tointeger(L, 3);
  5211. inst->addEventListenerUnique(handler, eventCode);
  5212. return 0;
  5213. }
  5214. static int Polycode_EventDispatcher_hasEventListener(lua_State *L) {
  5215. luaL_checktype(L, 1, LUA_TUSERDATA);
  5216. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5217. luaL_checktype(L, 2, LUA_TUSERDATA);
  5218. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5219. luaL_checktype(L, 3, LUA_TNUMBER);
  5220. int eventCode = lua_tointeger(L, 3);
  5221. lua_pushboolean(L, inst->hasEventListener(handler, eventCode));
  5222. return 1;
  5223. }
  5224. static int Polycode_EventDispatcher_removeEventListener(lua_State *L) {
  5225. luaL_checktype(L, 1, LUA_TUSERDATA);
  5226. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5227. luaL_checktype(L, 2, LUA_TUSERDATA);
  5228. EventHandler* handler = (EventHandler*) *((PolyBase**)lua_touserdata(L, 2));
  5229. luaL_checktype(L, 3, LUA_TNUMBER);
  5230. int eventCode = lua_tointeger(L, 3);
  5231. inst->removeEventListener(handler, eventCode);
  5232. return 0;
  5233. }
  5234. static int Polycode_EventDispatcher___dispatchEvent(lua_State *L) {
  5235. luaL_checktype(L, 1, LUA_TUSERDATA);
  5236. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5237. luaL_checktype(L, 2, LUA_TUSERDATA);
  5238. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5239. luaL_checktype(L, 3, LUA_TNUMBER);
  5240. int eventCode = lua_tointeger(L, 3);
  5241. inst->__dispatchEvent(event, eventCode);
  5242. return 0;
  5243. }
  5244. static int Polycode_EventDispatcher_dispatchEvent(lua_State *L) {
  5245. luaL_checktype(L, 1, LUA_TUSERDATA);
  5246. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5247. luaL_checktype(L, 2, LUA_TUSERDATA);
  5248. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5249. luaL_checktype(L, 3, LUA_TNUMBER);
  5250. int eventCode = lua_tointeger(L, 3);
  5251. inst->dispatchEvent(event, eventCode);
  5252. return 0;
  5253. }
  5254. static int Polycode_EventDispatcher_dispatchEventNoDelete(lua_State *L) {
  5255. luaL_checktype(L, 1, LUA_TUSERDATA);
  5256. EventDispatcher *inst = (EventDispatcher*) *((PolyBase**)lua_touserdata(L, 1));
  5257. luaL_checktype(L, 2, LUA_TUSERDATA);
  5258. Event* event = (Event*) *((PolyBase**)lua_touserdata(L, 2));
  5259. luaL_checktype(L, 3, LUA_TNUMBER);
  5260. int eventCode = lua_tointeger(L, 3);
  5261. inst->dispatchEventNoDelete(event, eventCode);
  5262. return 0;
  5263. }
  5264. static int Polycode_delete_EventDispatcher(lua_State *L) {
  5265. luaL_checktype(L, 1, LUA_TUSERDATA);
  5266. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5267. delete ((EventDispatcher*) *inst);
  5268. *inst = NULL;
  5269. return 0;
  5270. }
  5271. static int Polycode_EventHandler(lua_State *L) {
  5272. LuaEventHandler *inst = new LuaEventHandler();
  5273. inst->wrapperIndex = luaL_ref(L, LUA_REGISTRYINDEX );
  5274. inst->L = L;
  5275. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5276. *userdataPtr = (PolyBase*)inst;
  5277. luaL_getmetatable(L, "Polycode.EventHandler");
  5278. lua_setmetatable(L, -2);
  5279. return 1;
  5280. }
  5281. static int Polycode_delete_EventHandler(lua_State *L) {
  5282. luaL_checktype(L, 1, LUA_TUSERDATA);
  5283. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5284. delete ((EventHandler*) *inst);
  5285. *inst = NULL;
  5286. return 0;
  5287. }
  5288. static int Polycode_Font_get_loaded(lua_State *L) {
  5289. luaL_checktype(L, 1, LUA_TUSERDATA);
  5290. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5291. lua_pushboolean(L, inst->loaded);
  5292. return 1;
  5293. }
  5294. static int Polycode_Font_set_loaded(lua_State *L) {
  5295. luaL_checktype(L, 1, LUA_TUSERDATA);
  5296. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5297. bool param = lua_toboolean(L, 2) != 0;
  5298. inst->loaded = param;
  5299. return 0;
  5300. }
  5301. static int Polycode_Font(lua_State *L) {
  5302. luaL_checktype(L, 1, LUA_TSTRING);
  5303. String fileName = String(lua_tostring(L, 1));
  5304. luaL_checktype(L, 2, LUA_TUSERDATA);
  5305. FT_Library FTLibrary = *(FT_Library*) *((PolyBase**)lua_touserdata(L, 2));
  5306. Font *inst = new Font(fileName, FTLibrary);
  5307. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5308. *userdataPtr = (PolyBase*)inst;
  5309. luaL_getmetatable(L, "Polycode.Font");
  5310. lua_setmetatable(L, -2);
  5311. return 1;
  5312. }
  5313. static int Polycode_Font_getFace(lua_State *L) {
  5314. luaL_checktype(L, 1, LUA_TUSERDATA);
  5315. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5316. FT_Face *retInst = new FT_Face();
  5317. *retInst = inst->getFace();
  5318. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5319. luaL_getmetatable(L, "Polycode.FT_Face");
  5320. lua_setmetatable(L, -2);
  5321. *userdataPtr = (PolyBase*)retInst;
  5322. return 1;
  5323. }
  5324. static int Polycode_Font_isValid(lua_State *L) {
  5325. luaL_checktype(L, 1, LUA_TUSERDATA);
  5326. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5327. lua_pushboolean(L, inst->isValid());
  5328. return 1;
  5329. }
  5330. static int Polycode_Font_setFontName(lua_State *L) {
  5331. luaL_checktype(L, 1, LUA_TUSERDATA);
  5332. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5333. luaL_checktype(L, 2, LUA_TSTRING);
  5334. String fontName = String(lua_tostring(L, 2));
  5335. inst->setFontName(fontName);
  5336. return 0;
  5337. }
  5338. static int Polycode_Font_getFontName(lua_State *L) {
  5339. luaL_checktype(L, 1, LUA_TUSERDATA);
  5340. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5341. lua_pushstring(L, inst->getFontName().c_str());
  5342. return 1;
  5343. }
  5344. static int Polycode_Font_getFontPath(lua_State *L) {
  5345. luaL_checktype(L, 1, LUA_TUSERDATA);
  5346. Font *inst = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  5347. lua_pushstring(L, inst->getFontPath().c_str());
  5348. return 1;
  5349. }
  5350. static int Polycode_delete_Font(lua_State *L) {
  5351. luaL_checktype(L, 1, LUA_TUSERDATA);
  5352. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5353. delete ((Font*) *inst);
  5354. *inst = NULL;
  5355. return 0;
  5356. }
  5357. static int Polycode_LightInfo_get_importance(lua_State *L) {
  5358. luaL_checktype(L, 1, LUA_TUSERDATA);
  5359. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5360. lua_pushinteger(L, inst->importance);
  5361. return 1;
  5362. }
  5363. static int Polycode_LightInfo_get_position(lua_State *L) {
  5364. luaL_checktype(L, 1, LUA_TUSERDATA);
  5365. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5366. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5367. *userdataPtr = (PolyBase*)&inst->position;
  5368. return 1;
  5369. }
  5370. static int Polycode_LightInfo_get_direction(lua_State *L) {
  5371. luaL_checktype(L, 1, LUA_TUSERDATA);
  5372. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5373. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5374. *userdataPtr = (PolyBase*)&inst->direction;
  5375. return 1;
  5376. }
  5377. static int Polycode_LightInfo_get_type(lua_State *L) {
  5378. luaL_checktype(L, 1, LUA_TUSERDATA);
  5379. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5380. lua_pushinteger(L, inst->type);
  5381. return 1;
  5382. }
  5383. static int Polycode_LightInfo_get_diffuseColor(lua_State *L) {
  5384. luaL_checktype(L, 1, LUA_TUSERDATA);
  5385. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5386. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5387. *userdataPtr = (PolyBase*)&inst->diffuseColor;
  5388. return 1;
  5389. }
  5390. static int Polycode_LightInfo_get_specularColor(lua_State *L) {
  5391. luaL_checktype(L, 1, LUA_TUSERDATA);
  5392. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5393. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5394. *userdataPtr = (PolyBase*)&inst->specularColor;
  5395. return 1;
  5396. }
  5397. static int Polycode_LightInfo_get_constantAttenuation(lua_State *L) {
  5398. luaL_checktype(L, 1, LUA_TUSERDATA);
  5399. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5400. lua_pushnumber(L, inst->constantAttenuation);
  5401. return 1;
  5402. }
  5403. static int Polycode_LightInfo_get_linearAttenuation(lua_State *L) {
  5404. luaL_checktype(L, 1, LUA_TUSERDATA);
  5405. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5406. lua_pushnumber(L, inst->linearAttenuation);
  5407. return 1;
  5408. }
  5409. static int Polycode_LightInfo_get_quadraticAttenuation(lua_State *L) {
  5410. luaL_checktype(L, 1, LUA_TUSERDATA);
  5411. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5412. lua_pushnumber(L, inst->quadraticAttenuation);
  5413. return 1;
  5414. }
  5415. static int Polycode_LightInfo_get_intensity(lua_State *L) {
  5416. luaL_checktype(L, 1, LUA_TUSERDATA);
  5417. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5418. lua_pushnumber(L, inst->intensity);
  5419. return 1;
  5420. }
  5421. static int Polycode_LightInfo_get_spotlightCutoff(lua_State *L) {
  5422. luaL_checktype(L, 1, LUA_TUSERDATA);
  5423. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5424. lua_pushnumber(L, inst->spotlightCutoff);
  5425. return 1;
  5426. }
  5427. static int Polycode_LightInfo_get_spotlightExponent(lua_State *L) {
  5428. luaL_checktype(L, 1, LUA_TUSERDATA);
  5429. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5430. lua_pushnumber(L, inst->spotlightExponent);
  5431. return 1;
  5432. }
  5433. static int Polycode_LightInfo_get_shadowsEnabled(lua_State *L) {
  5434. luaL_checktype(L, 1, LUA_TUSERDATA);
  5435. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5436. lua_pushboolean(L, inst->shadowsEnabled);
  5437. return 1;
  5438. }
  5439. static int Polycode_LightInfo_get_shadowMapTexture(lua_State *L) {
  5440. luaL_checktype(L, 1, LUA_TUSERDATA);
  5441. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5442. if(!inst->shadowMapTexture) {
  5443. lua_pushnil(L);
  5444. } else {
  5445. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5446. *userdataPtr = (PolyBase*)inst->shadowMapTexture;
  5447. }
  5448. return 1;
  5449. }
  5450. static int Polycode_LightInfo_get_lightViewMatrix(lua_State *L) {
  5451. luaL_checktype(L, 1, LUA_TUSERDATA);
  5452. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5453. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5454. *userdataPtr = (PolyBase*)&inst->lightViewMatrix;
  5455. return 1;
  5456. }
  5457. static int Polycode_LightInfo_set_importance(lua_State *L) {
  5458. luaL_checktype(L, 1, LUA_TUSERDATA);
  5459. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5460. int param = lua_tointeger(L, 2);
  5461. inst->importance = param;
  5462. return 0;
  5463. }
  5464. static int Polycode_LightInfo_set_position(lua_State *L) {
  5465. luaL_checktype(L, 1, LUA_TUSERDATA);
  5466. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5467. luaL_checktype(L, 2, LUA_TUSERDATA);
  5468. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5469. inst->position = *argInst;
  5470. return 0;
  5471. }
  5472. static int Polycode_LightInfo_set_direction(lua_State *L) {
  5473. luaL_checktype(L, 1, LUA_TUSERDATA);
  5474. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5475. luaL_checktype(L, 2, LUA_TUSERDATA);
  5476. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  5477. inst->direction = *argInst;
  5478. return 0;
  5479. }
  5480. static int Polycode_LightInfo_set_type(lua_State *L) {
  5481. luaL_checktype(L, 1, LUA_TUSERDATA);
  5482. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5483. int param = lua_tointeger(L, 2);
  5484. inst->type = param;
  5485. return 0;
  5486. }
  5487. static int Polycode_LightInfo_set_diffuseColor(lua_State *L) {
  5488. luaL_checktype(L, 1, LUA_TUSERDATA);
  5489. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5490. luaL_checktype(L, 2, LUA_TUSERDATA);
  5491. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5492. inst->diffuseColor = *argInst;
  5493. return 0;
  5494. }
  5495. static int Polycode_LightInfo_set_specularColor(lua_State *L) {
  5496. luaL_checktype(L, 1, LUA_TUSERDATA);
  5497. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5498. luaL_checktype(L, 2, LUA_TUSERDATA);
  5499. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5500. inst->specularColor = *argInst;
  5501. return 0;
  5502. }
  5503. static int Polycode_LightInfo_set_constantAttenuation(lua_State *L) {
  5504. luaL_checktype(L, 1, LUA_TUSERDATA);
  5505. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5506. Number param = lua_tonumber(L, 2);
  5507. inst->constantAttenuation = param;
  5508. return 0;
  5509. }
  5510. static int Polycode_LightInfo_set_linearAttenuation(lua_State *L) {
  5511. luaL_checktype(L, 1, LUA_TUSERDATA);
  5512. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5513. Number param = lua_tonumber(L, 2);
  5514. inst->linearAttenuation = param;
  5515. return 0;
  5516. }
  5517. static int Polycode_LightInfo_set_quadraticAttenuation(lua_State *L) {
  5518. luaL_checktype(L, 1, LUA_TUSERDATA);
  5519. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5520. Number param = lua_tonumber(L, 2);
  5521. inst->quadraticAttenuation = param;
  5522. return 0;
  5523. }
  5524. static int Polycode_LightInfo_set_intensity(lua_State *L) {
  5525. luaL_checktype(L, 1, LUA_TUSERDATA);
  5526. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5527. Number param = lua_tonumber(L, 2);
  5528. inst->intensity = param;
  5529. return 0;
  5530. }
  5531. static int Polycode_LightInfo_set_spotlightCutoff(lua_State *L) {
  5532. luaL_checktype(L, 1, LUA_TUSERDATA);
  5533. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5534. Number param = lua_tonumber(L, 2);
  5535. inst->spotlightCutoff = param;
  5536. return 0;
  5537. }
  5538. static int Polycode_LightInfo_set_spotlightExponent(lua_State *L) {
  5539. luaL_checktype(L, 1, LUA_TUSERDATA);
  5540. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5541. Number param = lua_tonumber(L, 2);
  5542. inst->spotlightExponent = param;
  5543. return 0;
  5544. }
  5545. static int Polycode_LightInfo_set_shadowsEnabled(lua_State *L) {
  5546. luaL_checktype(L, 1, LUA_TUSERDATA);
  5547. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5548. bool param = lua_toboolean(L, 2) != 0;
  5549. inst->shadowsEnabled = param;
  5550. return 0;
  5551. }
  5552. static int Polycode_LightInfo_set_shadowMapTexture(lua_State *L) {
  5553. luaL_checktype(L, 1, LUA_TUSERDATA);
  5554. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5555. luaL_checktype(L, 2, LUA_TUSERDATA);
  5556. Texture* *argInst = (Texture**) *((PolyBase**)lua_touserdata(L, 2));
  5557. inst->shadowMapTexture = *argInst;
  5558. return 0;
  5559. }
  5560. static int Polycode_LightInfo_set_lightViewMatrix(lua_State *L) {
  5561. luaL_checktype(L, 1, LUA_TUSERDATA);
  5562. LightInfo *inst = (LightInfo*) *((PolyBase**)lua_touserdata(L, 1));
  5563. luaL_checktype(L, 2, LUA_TUSERDATA);
  5564. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5565. inst->lightViewMatrix = *argInst;
  5566. return 0;
  5567. }
  5568. static int Polycode_delete_LightInfo(lua_State *L) {
  5569. luaL_checktype(L, 1, LUA_TUSERDATA);
  5570. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5571. delete ((LightInfo*) *inst);
  5572. *inst = NULL;
  5573. return 0;
  5574. }
  5575. static int Polycode_GPUDrawCall_get_mesh(lua_State *L) {
  5576. luaL_checktype(L, 1, LUA_TUSERDATA);
  5577. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5578. if(!inst->mesh) {
  5579. lua_pushnil(L);
  5580. } else {
  5581. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5582. *userdataPtr = (PolyBase*)inst->mesh;
  5583. }
  5584. return 1;
  5585. }
  5586. static int Polycode_GPUDrawCall_get_options(lua_State *L) {
  5587. luaL_checktype(L, 1, LUA_TUSERDATA);
  5588. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5589. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5590. *userdataPtr = (PolyBase*)&inst->options;
  5591. return 1;
  5592. }
  5593. static int Polycode_GPUDrawCall_get_modelMatrix(lua_State *L) {
  5594. luaL_checktype(L, 1, LUA_TUSERDATA);
  5595. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5596. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5597. *userdataPtr = (PolyBase*)&inst->modelMatrix;
  5598. return 1;
  5599. }
  5600. static int Polycode_GPUDrawCall_get_material(lua_State *L) {
  5601. luaL_checktype(L, 1, LUA_TUSERDATA);
  5602. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5603. if(!inst->material) {
  5604. lua_pushnil(L);
  5605. } else {
  5606. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5607. *userdataPtr = (PolyBase*)inst->material;
  5608. }
  5609. return 1;
  5610. }
  5611. static int Polycode_GPUDrawCall_set_mesh(lua_State *L) {
  5612. luaL_checktype(L, 1, LUA_TUSERDATA);
  5613. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5614. luaL_checktype(L, 2, LUA_TUSERDATA);
  5615. Mesh* *argInst = (Mesh**) *((PolyBase**)lua_touserdata(L, 2));
  5616. inst->mesh = *argInst;
  5617. return 0;
  5618. }
  5619. static int Polycode_GPUDrawCall_set_options(lua_State *L) {
  5620. luaL_checktype(L, 1, LUA_TUSERDATA);
  5621. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5622. luaL_checktype(L, 2, LUA_TUSERDATA);
  5623. GPUDrawOptions *argInst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 2));
  5624. inst->options = *argInst;
  5625. return 0;
  5626. }
  5627. static int Polycode_GPUDrawCall_set_modelMatrix(lua_State *L) {
  5628. luaL_checktype(L, 1, LUA_TUSERDATA);
  5629. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5630. luaL_checktype(L, 2, LUA_TUSERDATA);
  5631. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5632. inst->modelMatrix = *argInst;
  5633. return 0;
  5634. }
  5635. static int Polycode_GPUDrawCall_set_material(lua_State *L) {
  5636. luaL_checktype(L, 1, LUA_TUSERDATA);
  5637. GPUDrawCall *inst = (GPUDrawCall*) *((PolyBase**)lua_touserdata(L, 1));
  5638. luaL_checktype(L, 2, LUA_TUSERDATA);
  5639. Material* *argInst = (Material**) *((PolyBase**)lua_touserdata(L, 2));
  5640. inst->material = *argInst;
  5641. return 0;
  5642. }
  5643. static int Polycode_delete_GPUDrawCall(lua_State *L) {
  5644. luaL_checktype(L, 1, LUA_TUSERDATA);
  5645. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5646. delete ((GPUDrawCall*) *inst);
  5647. *inst = NULL;
  5648. return 0;
  5649. }
  5650. static int Polycode_GPUDrawOptions_get_depthTest(lua_State *L) {
  5651. luaL_checktype(L, 1, LUA_TUSERDATA);
  5652. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5653. lua_pushboolean(L, inst->depthTest);
  5654. return 1;
  5655. }
  5656. static int Polycode_GPUDrawOptions_get_depthWrite(lua_State *L) {
  5657. luaL_checktype(L, 1, LUA_TUSERDATA);
  5658. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5659. lua_pushboolean(L, inst->depthWrite);
  5660. return 1;
  5661. }
  5662. static int Polycode_GPUDrawOptions_get_linePointSize(lua_State *L) {
  5663. luaL_checktype(L, 1, LUA_TUSERDATA);
  5664. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5665. lua_pushnumber(L, inst->linePointSize);
  5666. return 1;
  5667. }
  5668. static int Polycode_GPUDrawOptions_get_alphaTest(lua_State *L) {
  5669. luaL_checktype(L, 1, LUA_TUSERDATA);
  5670. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5671. lua_pushboolean(L, inst->alphaTest);
  5672. return 1;
  5673. }
  5674. static int Polycode_GPUDrawOptions_get_backfaceCull(lua_State *L) {
  5675. luaL_checktype(L, 1, LUA_TUSERDATA);
  5676. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5677. lua_pushboolean(L, inst->backfaceCull);
  5678. return 1;
  5679. }
  5680. static int Polycode_GPUDrawOptions_get_depthOnly(lua_State *L) {
  5681. luaL_checktype(L, 1, LUA_TUSERDATA);
  5682. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5683. lua_pushboolean(L, inst->depthOnly);
  5684. return 1;
  5685. }
  5686. static int Polycode_GPUDrawOptions_get_forceMaterial(lua_State *L) {
  5687. luaL_checktype(L, 1, LUA_TUSERDATA);
  5688. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5689. lua_pushboolean(L, inst->forceMaterial);
  5690. return 1;
  5691. }
  5692. static int Polycode_GPUDrawOptions_get_blendingMode(lua_State *L) {
  5693. luaL_checktype(L, 1, LUA_TUSERDATA);
  5694. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5695. lua_pushinteger(L, inst->blendingMode);
  5696. return 1;
  5697. }
  5698. static int Polycode_GPUDrawOptions_get_scissorBox(lua_State *L) {
  5699. luaL_checktype(L, 1, LUA_TUSERDATA);
  5700. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5701. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5702. *userdataPtr = (PolyBase*)&inst->scissorBox;
  5703. return 1;
  5704. }
  5705. static int Polycode_GPUDrawOptions_get_enableScissor(lua_State *L) {
  5706. luaL_checktype(L, 1, LUA_TUSERDATA);
  5707. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5708. lua_pushboolean(L, inst->enableScissor);
  5709. return 1;
  5710. }
  5711. static int Polycode_GPUDrawOptions_get_drawColor(lua_State *L) {
  5712. luaL_checktype(L, 1, LUA_TUSERDATA);
  5713. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5714. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5715. *userdataPtr = (PolyBase*)&inst->drawColor;
  5716. return 1;
  5717. }
  5718. static int Polycode_GPUDrawOptions_set_depthTest(lua_State *L) {
  5719. luaL_checktype(L, 1, LUA_TUSERDATA);
  5720. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5721. bool param = lua_toboolean(L, 2) != 0;
  5722. inst->depthTest = param;
  5723. return 0;
  5724. }
  5725. static int Polycode_GPUDrawOptions_set_depthWrite(lua_State *L) {
  5726. luaL_checktype(L, 1, LUA_TUSERDATA);
  5727. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5728. bool param = lua_toboolean(L, 2) != 0;
  5729. inst->depthWrite = param;
  5730. return 0;
  5731. }
  5732. static int Polycode_GPUDrawOptions_set_linePointSize(lua_State *L) {
  5733. luaL_checktype(L, 1, LUA_TUSERDATA);
  5734. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5735. Number param = lua_tonumber(L, 2);
  5736. inst->linePointSize = param;
  5737. return 0;
  5738. }
  5739. static int Polycode_GPUDrawOptions_set_alphaTest(lua_State *L) {
  5740. luaL_checktype(L, 1, LUA_TUSERDATA);
  5741. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5742. bool param = lua_toboolean(L, 2) != 0;
  5743. inst->alphaTest = param;
  5744. return 0;
  5745. }
  5746. static int Polycode_GPUDrawOptions_set_backfaceCull(lua_State *L) {
  5747. luaL_checktype(L, 1, LUA_TUSERDATA);
  5748. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5749. bool param = lua_toboolean(L, 2) != 0;
  5750. inst->backfaceCull = param;
  5751. return 0;
  5752. }
  5753. static int Polycode_GPUDrawOptions_set_depthOnly(lua_State *L) {
  5754. luaL_checktype(L, 1, LUA_TUSERDATA);
  5755. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5756. bool param = lua_toboolean(L, 2) != 0;
  5757. inst->depthOnly = param;
  5758. return 0;
  5759. }
  5760. static int Polycode_GPUDrawOptions_set_forceMaterial(lua_State *L) {
  5761. luaL_checktype(L, 1, LUA_TUSERDATA);
  5762. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5763. bool param = lua_toboolean(L, 2) != 0;
  5764. inst->forceMaterial = param;
  5765. return 0;
  5766. }
  5767. static int Polycode_GPUDrawOptions_set_blendingMode(lua_State *L) {
  5768. luaL_checktype(L, 1, LUA_TUSERDATA);
  5769. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5770. int param = lua_tointeger(L, 2);
  5771. inst->blendingMode = param;
  5772. return 0;
  5773. }
  5774. static int Polycode_GPUDrawOptions_set_scissorBox(lua_State *L) {
  5775. luaL_checktype(L, 1, LUA_TUSERDATA);
  5776. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5777. luaL_checktype(L, 2, LUA_TUSERDATA);
  5778. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  5779. inst->scissorBox = *argInst;
  5780. return 0;
  5781. }
  5782. static int Polycode_GPUDrawOptions_set_enableScissor(lua_State *L) {
  5783. luaL_checktype(L, 1, LUA_TUSERDATA);
  5784. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5785. bool param = lua_toboolean(L, 2) != 0;
  5786. inst->enableScissor = param;
  5787. return 0;
  5788. }
  5789. static int Polycode_GPUDrawOptions_set_drawColor(lua_State *L) {
  5790. luaL_checktype(L, 1, LUA_TUSERDATA);
  5791. GPUDrawOptions *inst = (GPUDrawOptions*) *((PolyBase**)lua_touserdata(L, 1));
  5792. luaL_checktype(L, 2, LUA_TUSERDATA);
  5793. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5794. inst->drawColor = *argInst;
  5795. return 0;
  5796. }
  5797. static int Polycode_delete_GPUDrawOptions(lua_State *L) {
  5798. luaL_checktype(L, 1, LUA_TUSERDATA);
  5799. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5800. delete ((GPUDrawOptions*) *inst);
  5801. *inst = NULL;
  5802. return 0;
  5803. }
  5804. static int Polycode_GPUDrawBuffer_get_targetFramebuffer(lua_State *L) {
  5805. luaL_checktype(L, 1, LUA_TUSERDATA);
  5806. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5807. if(!inst->targetFramebuffer) {
  5808. lua_pushnil(L);
  5809. } else {
  5810. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5811. *userdataPtr = (PolyBase*)inst->targetFramebuffer;
  5812. }
  5813. return 1;
  5814. }
  5815. static int Polycode_GPUDrawBuffer_get_projectionMatrix(lua_State *L) {
  5816. luaL_checktype(L, 1, LUA_TUSERDATA);
  5817. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5818. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5819. *userdataPtr = (PolyBase*)&inst->projectionMatrix;
  5820. return 1;
  5821. }
  5822. static int Polycode_GPUDrawBuffer_get_viewMatrix(lua_State *L) {
  5823. luaL_checktype(L, 1, LUA_TUSERDATA);
  5824. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5825. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5826. *userdataPtr = (PolyBase*)&inst->viewMatrix;
  5827. return 1;
  5828. }
  5829. static int Polycode_GPUDrawBuffer_get_cameraMatrix(lua_State *L) {
  5830. luaL_checktype(L, 1, LUA_TUSERDATA);
  5831. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5832. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5833. *userdataPtr = (PolyBase*)&inst->cameraMatrix;
  5834. return 1;
  5835. }
  5836. static int Polycode_GPUDrawBuffer_get_clearColor(lua_State *L) {
  5837. luaL_checktype(L, 1, LUA_TUSERDATA);
  5838. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5839. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5840. *userdataPtr = (PolyBase*)&inst->clearColor;
  5841. return 1;
  5842. }
  5843. static int Polycode_GPUDrawBuffer_get_clearDepthBuffer(lua_State *L) {
  5844. luaL_checktype(L, 1, LUA_TUSERDATA);
  5845. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5846. lua_pushboolean(L, inst->clearDepthBuffer);
  5847. return 1;
  5848. }
  5849. static int Polycode_GPUDrawBuffer_get_clearColorBuffer(lua_State *L) {
  5850. luaL_checktype(L, 1, LUA_TUSERDATA);
  5851. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5852. lua_pushboolean(L, inst->clearColorBuffer);
  5853. return 1;
  5854. }
  5855. static int Polycode_GPUDrawBuffer_get_backingResolutionScale(lua_State *L) {
  5856. luaL_checktype(L, 1, LUA_TUSERDATA);
  5857. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5858. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5859. *userdataPtr = (PolyBase*)&inst->backingResolutionScale;
  5860. return 1;
  5861. }
  5862. static int Polycode_GPUDrawBuffer_get_globalMaterial(lua_State *L) {
  5863. luaL_checktype(L, 1, LUA_TUSERDATA);
  5864. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5865. if(!inst->globalMaterial) {
  5866. lua_pushnil(L);
  5867. } else {
  5868. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5869. *userdataPtr = (PolyBase*)inst->globalMaterial;
  5870. }
  5871. return 1;
  5872. }
  5873. static int Polycode_GPUDrawBuffer_get_viewport(lua_State *L) {
  5874. luaL_checktype(L, 1, LUA_TUSERDATA);
  5875. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5876. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5877. *userdataPtr = (PolyBase*)&inst->viewport;
  5878. return 1;
  5879. }
  5880. static int Polycode_GPUDrawBuffer_set_targetFramebuffer(lua_State *L) {
  5881. luaL_checktype(L, 1, LUA_TUSERDATA);
  5882. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5883. luaL_checktype(L, 2, LUA_TUSERDATA);
  5884. RenderBuffer* *argInst = (RenderBuffer**) *((PolyBase**)lua_touserdata(L, 2));
  5885. inst->targetFramebuffer = *argInst;
  5886. return 0;
  5887. }
  5888. static int Polycode_GPUDrawBuffer_set_projectionMatrix(lua_State *L) {
  5889. luaL_checktype(L, 1, LUA_TUSERDATA);
  5890. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5891. luaL_checktype(L, 2, LUA_TUSERDATA);
  5892. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5893. inst->projectionMatrix = *argInst;
  5894. return 0;
  5895. }
  5896. static int Polycode_GPUDrawBuffer_set_viewMatrix(lua_State *L) {
  5897. luaL_checktype(L, 1, LUA_TUSERDATA);
  5898. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5899. luaL_checktype(L, 2, LUA_TUSERDATA);
  5900. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5901. inst->viewMatrix = *argInst;
  5902. return 0;
  5903. }
  5904. static int Polycode_GPUDrawBuffer_set_cameraMatrix(lua_State *L) {
  5905. luaL_checktype(L, 1, LUA_TUSERDATA);
  5906. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5907. luaL_checktype(L, 2, LUA_TUSERDATA);
  5908. Matrix4 *argInst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  5909. inst->cameraMatrix = *argInst;
  5910. return 0;
  5911. }
  5912. static int Polycode_GPUDrawBuffer_set_clearColor(lua_State *L) {
  5913. luaL_checktype(L, 1, LUA_TUSERDATA);
  5914. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5915. luaL_checktype(L, 2, LUA_TUSERDATA);
  5916. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  5917. inst->clearColor = *argInst;
  5918. return 0;
  5919. }
  5920. static int Polycode_GPUDrawBuffer_set_clearDepthBuffer(lua_State *L) {
  5921. luaL_checktype(L, 1, LUA_TUSERDATA);
  5922. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5923. bool param = lua_toboolean(L, 2) != 0;
  5924. inst->clearDepthBuffer = param;
  5925. return 0;
  5926. }
  5927. static int Polycode_GPUDrawBuffer_set_clearColorBuffer(lua_State *L) {
  5928. luaL_checktype(L, 1, LUA_TUSERDATA);
  5929. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5930. bool param = lua_toboolean(L, 2) != 0;
  5931. inst->clearColorBuffer = param;
  5932. return 0;
  5933. }
  5934. static int Polycode_GPUDrawBuffer_set_backingResolutionScale(lua_State *L) {
  5935. luaL_checktype(L, 1, LUA_TUSERDATA);
  5936. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5937. luaL_checktype(L, 2, LUA_TUSERDATA);
  5938. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  5939. inst->backingResolutionScale = *argInst;
  5940. return 0;
  5941. }
  5942. static int Polycode_GPUDrawBuffer_set_globalMaterial(lua_State *L) {
  5943. luaL_checktype(L, 1, LUA_TUSERDATA);
  5944. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5945. luaL_checktype(L, 2, LUA_TUSERDATA);
  5946. Material* *argInst = (Material**) *((PolyBase**)lua_touserdata(L, 2));
  5947. inst->globalMaterial = *argInst;
  5948. return 0;
  5949. }
  5950. static int Polycode_GPUDrawBuffer_set_viewport(lua_State *L) {
  5951. luaL_checktype(L, 1, LUA_TUSERDATA);
  5952. GPUDrawBuffer *inst = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  5953. luaL_checktype(L, 2, LUA_TUSERDATA);
  5954. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  5955. inst->viewport = *argInst;
  5956. return 0;
  5957. }
  5958. static int Polycode_GPUDrawBuffer(lua_State *L) {
  5959. GPUDrawBuffer *inst = new GPUDrawBuffer();
  5960. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5961. *userdataPtr = (PolyBase*)inst;
  5962. luaL_getmetatable(L, "Polycode.GPUDrawBuffer");
  5963. lua_setmetatable(L, -2);
  5964. return 1;
  5965. }
  5966. static int Polycode_delete_GPUDrawBuffer(lua_State *L) {
  5967. luaL_checktype(L, 1, LUA_TUSERDATA);
  5968. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  5969. delete ((GPUDrawBuffer*) *inst);
  5970. *inst = NULL;
  5971. return 0;
  5972. }
  5973. static int Polycode_Image(lua_State *L) {
  5974. luaL_checktype(L, 1, LUA_TSTRING);
  5975. String fileName = String(lua_tostring(L, 1));
  5976. Image *inst = new Image(fileName);
  5977. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5978. *userdataPtr = (PolyBase*)inst;
  5979. luaL_getmetatable(L, "Polycode.Image");
  5980. lua_setmetatable(L, -2);
  5981. return 1;
  5982. }
  5983. static int Polycode_Image_BlankImage(lua_State *L) {
  5984. luaL_checktype(L, 1, LUA_TNUMBER);
  5985. int width = lua_tointeger(L, 1);
  5986. luaL_checktype(L, 2, LUA_TNUMBER);
  5987. int height = lua_tointeger(L, 2);
  5988. int type;
  5989. if(lua_isnumber(L, 3)) {
  5990. type = lua_tointeger(L, 3);
  5991. } else {
  5992. type = Image :: IMAGE_RGBA;
  5993. }
  5994. PolyBase *ptrRetVal = (PolyBase*)Image::BlankImage(width, height, type);
  5995. if(ptrRetVal == NULL) {
  5996. lua_pushnil(L);
  5997. } else {
  5998. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  5999. *userdataPtr = ptrRetVal;
  6000. }
  6001. return 1;
  6002. }
  6003. static int Polycode_Image_loadImage(lua_State *L) {
  6004. luaL_checktype(L, 1, LUA_TUSERDATA);
  6005. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6006. luaL_checktype(L, 2, LUA_TSTRING);
  6007. String fileName = String(lua_tostring(L, 2));
  6008. lua_pushboolean(L, inst->loadImage(fileName));
  6009. return 1;
  6010. }
  6011. static int Polycode_Image_saveImage(lua_State *L) {
  6012. luaL_checktype(L, 1, LUA_TUSERDATA);
  6013. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6014. luaL_checktype(L, 2, LUA_TSTRING);
  6015. String fileName = String(lua_tostring(L, 2));
  6016. lua_pushboolean(L, inst->saveImage(fileName));
  6017. return 1;
  6018. }
  6019. static int Polycode_Image_pasteImage(lua_State *L) {
  6020. luaL_checktype(L, 1, LUA_TUSERDATA);
  6021. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6022. luaL_checktype(L, 2, LUA_TUSERDATA);
  6023. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  6024. luaL_checktype(L, 3, LUA_TNUMBER);
  6025. int x = lua_tointeger(L, 3);
  6026. luaL_checktype(L, 4, LUA_TNUMBER);
  6027. int y = lua_tointeger(L, 4);
  6028. int blendingMode;
  6029. if(lua_isnumber(L, 5)) {
  6030. blendingMode = lua_tointeger(L, 5);
  6031. } else {
  6032. blendingMode = 0;
  6033. }
  6034. Number blendAmount;
  6035. if(lua_isnumber(L, 6)) {
  6036. blendAmount = lua_tonumber(L, 6);
  6037. } else {
  6038. blendAmount = 1.0;
  6039. }
  6040. luaL_checktype(L, 7, LUA_TUSERDATA);
  6041. Color blendColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  6042. inst->pasteImage(image, x, y, blendingMode, blendAmount, blendColor);
  6043. return 0;
  6044. }
  6045. static int Polycode_Image_createEmpty(lua_State *L) {
  6046. luaL_checktype(L, 1, LUA_TUSERDATA);
  6047. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6048. luaL_checktype(L, 2, LUA_TNUMBER);
  6049. int width = lua_tointeger(L, 2);
  6050. luaL_checktype(L, 3, LUA_TNUMBER);
  6051. int height = lua_tointeger(L, 3);
  6052. luaL_checktype(L, 4, LUA_TUSERDATA);
  6053. Color fillColor = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  6054. inst->createEmpty(width, height, fillColor);
  6055. return 0;
  6056. }
  6057. static int Polycode_Image_fill(lua_State *L) {
  6058. luaL_checktype(L, 1, LUA_TUSERDATA);
  6059. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6060. luaL_checktype(L, 2, LUA_TUSERDATA);
  6061. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6062. inst->fill(color);
  6063. return 0;
  6064. }
  6065. static int Polycode_Image_setPixel(lua_State *L) {
  6066. luaL_checktype(L, 1, LUA_TUSERDATA);
  6067. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6068. luaL_checktype(L, 2, LUA_TNUMBER);
  6069. int x = lua_tointeger(L, 2);
  6070. luaL_checktype(L, 3, LUA_TNUMBER);
  6071. int y = lua_tointeger(L, 3);
  6072. luaL_checktype(L, 4, LUA_TNUMBER);
  6073. Number r = lua_tonumber(L, 4);
  6074. luaL_checktype(L, 5, LUA_TNUMBER);
  6075. Number g = lua_tonumber(L, 5);
  6076. luaL_checktype(L, 6, LUA_TNUMBER);
  6077. Number b = lua_tonumber(L, 6);
  6078. luaL_checktype(L, 7, LUA_TNUMBER);
  6079. Number a = lua_tonumber(L, 7);
  6080. inst->setPixel(x, y, r, g, b, a);
  6081. return 0;
  6082. }
  6083. static int Polycode_Image_getPixel(lua_State *L) {
  6084. luaL_checktype(L, 1, LUA_TUSERDATA);
  6085. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6086. luaL_checktype(L, 2, LUA_TNUMBER);
  6087. int x = lua_tointeger(L, 2);
  6088. luaL_checktype(L, 3, LUA_TNUMBER);
  6089. int y = lua_tointeger(L, 3);
  6090. Color *retInst = new Color();
  6091. *retInst = inst->getPixel(x, y);
  6092. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6093. luaL_getmetatable(L, "Polycode.Color");
  6094. lua_setmetatable(L, -2);
  6095. *userdataPtr = (PolyBase*)retInst;
  6096. return 1;
  6097. }
  6098. static int Polycode_Image_swap(lua_State *L) {
  6099. luaL_checktype(L, 1, LUA_TUSERDATA);
  6100. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6101. luaL_checktype(L, 2, LUA_TUSERDATA);
  6102. int* v1 = (int*) *((PolyBase**)lua_touserdata(L, 2));
  6103. luaL_checktype(L, 3, LUA_TUSERDATA);
  6104. int* v2 = (int*) *((PolyBase**)lua_touserdata(L, 3));
  6105. inst->swap(v1, v2);
  6106. return 0;
  6107. }
  6108. static int Polycode_Image_drawLine(lua_State *L) {
  6109. luaL_checktype(L, 1, LUA_TUSERDATA);
  6110. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6111. luaL_checktype(L, 2, LUA_TNUMBER);
  6112. int x0 = lua_tointeger(L, 2);
  6113. luaL_checktype(L, 3, LUA_TNUMBER);
  6114. int y0 = lua_tointeger(L, 3);
  6115. luaL_checktype(L, 4, LUA_TNUMBER);
  6116. int x1 = lua_tointeger(L, 4);
  6117. luaL_checktype(L, 5, LUA_TNUMBER);
  6118. int y1 = lua_tointeger(L, 5);
  6119. luaL_checktype(L, 6, LUA_TUSERDATA);
  6120. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6121. inst->drawLine(x0, y0, x1, y1, col);
  6122. return 0;
  6123. }
  6124. static int Polycode_Image_moveBrushTo(lua_State *L) {
  6125. luaL_checktype(L, 1, LUA_TUSERDATA);
  6126. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6127. luaL_checktype(L, 2, LUA_TNUMBER);
  6128. int x = lua_tointeger(L, 2);
  6129. luaL_checktype(L, 3, LUA_TNUMBER);
  6130. int y = lua_tointeger(L, 3);
  6131. inst->moveBrushTo(x, y);
  6132. return 0;
  6133. }
  6134. static int Polycode_Image_moveBrush(lua_State *L) {
  6135. luaL_checktype(L, 1, LUA_TUSERDATA);
  6136. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6137. luaL_checktype(L, 2, LUA_TNUMBER);
  6138. int x = lua_tointeger(L, 2);
  6139. luaL_checktype(L, 3, LUA_TNUMBER);
  6140. int y = lua_tointeger(L, 3);
  6141. inst->moveBrush(x, y);
  6142. return 0;
  6143. }
  6144. static int Polycode_Image_drawLineTo(lua_State *L) {
  6145. luaL_checktype(L, 1, LUA_TUSERDATA);
  6146. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6147. luaL_checktype(L, 2, LUA_TNUMBER);
  6148. int x = lua_tointeger(L, 2);
  6149. luaL_checktype(L, 3, LUA_TNUMBER);
  6150. int y = lua_tointeger(L, 3);
  6151. luaL_checktype(L, 4, LUA_TUSERDATA);
  6152. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 4));
  6153. inst->drawLineTo(x, y, col);
  6154. return 0;
  6155. }
  6156. static int Polycode_Image_fillRect(lua_State *L) {
  6157. luaL_checktype(L, 1, LUA_TUSERDATA);
  6158. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6159. luaL_checktype(L, 2, LUA_TNUMBER);
  6160. int x = lua_tointeger(L, 2);
  6161. luaL_checktype(L, 3, LUA_TNUMBER);
  6162. int y = lua_tointeger(L, 3);
  6163. luaL_checktype(L, 4, LUA_TNUMBER);
  6164. int w = lua_tointeger(L, 4);
  6165. luaL_checktype(L, 5, LUA_TNUMBER);
  6166. int h = lua_tointeger(L, 5);
  6167. luaL_checktype(L, 6, LUA_TUSERDATA);
  6168. Color col = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6169. inst->fillRect(x, y, w, h, col);
  6170. return 0;
  6171. }
  6172. static int Polycode_Image_perlinNoise(lua_State *L) {
  6173. luaL_checktype(L, 1, LUA_TUSERDATA);
  6174. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6175. luaL_checktype(L, 2, LUA_TNUMBER);
  6176. int seed = lua_tointeger(L, 2);
  6177. luaL_checktype(L, 3, LUA_TBOOLEAN);
  6178. bool alpha = lua_toboolean(L, 3) != 0;
  6179. inst->perlinNoise(seed, alpha);
  6180. return 0;
  6181. }
  6182. static int Polycode_Image_fastBlur(lua_State *L) {
  6183. luaL_checktype(L, 1, LUA_TUSERDATA);
  6184. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6185. luaL_checktype(L, 2, LUA_TNUMBER);
  6186. int blurSize = lua_tointeger(L, 2);
  6187. inst->fastBlur(blurSize);
  6188. return 0;
  6189. }
  6190. static int Polycode_Image_fastBlurVert(lua_State *L) {
  6191. luaL_checktype(L, 1, LUA_TUSERDATA);
  6192. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6193. luaL_checktype(L, 2, LUA_TNUMBER);
  6194. int blurSize = lua_tointeger(L, 2);
  6195. inst->fastBlurVert(blurSize);
  6196. return 0;
  6197. }
  6198. static int Polycode_Image_fastBlurHor(lua_State *L) {
  6199. luaL_checktype(L, 1, LUA_TUSERDATA);
  6200. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6201. luaL_checktype(L, 2, LUA_TNUMBER);
  6202. int blurSize = lua_tointeger(L, 2);
  6203. inst->fastBlurHor(blurSize);
  6204. return 0;
  6205. }
  6206. static int Polycode_Image_getPixelsInRect(lua_State *L) {
  6207. luaL_checktype(L, 1, LUA_TUSERDATA);
  6208. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6209. luaL_checktype(L, 2, LUA_TNUMBER);
  6210. int x = lua_tointeger(L, 2);
  6211. luaL_checktype(L, 3, LUA_TNUMBER);
  6212. int y = lua_tointeger(L, 3);
  6213. luaL_checktype(L, 4, LUA_TNUMBER);
  6214. int width = lua_tointeger(L, 4);
  6215. luaL_checktype(L, 5, LUA_TNUMBER);
  6216. int height = lua_tointeger(L, 5);
  6217. PolyBase *ptrRetVal = (PolyBase*)inst->getPixelsInRect(x, y, width, height);
  6218. if(ptrRetVal == NULL) {
  6219. lua_pushnil(L);
  6220. } else {
  6221. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6222. *userdataPtr = ptrRetVal;
  6223. }
  6224. return 1;
  6225. }
  6226. static int Polycode_Image_getImagePart(lua_State *L) {
  6227. luaL_checktype(L, 1, LUA_TUSERDATA);
  6228. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6229. luaL_checktype(L, 2, LUA_TUSERDATA);
  6230. Polycode::Rectangle subRect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  6231. PolyBase *ptrRetVal = (PolyBase*)inst->getImagePart(subRect);
  6232. if(ptrRetVal == NULL) {
  6233. lua_pushnil(L);
  6234. } else {
  6235. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6236. *userdataPtr = ptrRetVal;
  6237. }
  6238. return 1;
  6239. }
  6240. static int Polycode_Image_getBrushX(lua_State *L) {
  6241. luaL_checktype(L, 1, LUA_TUSERDATA);
  6242. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6243. lua_pushinteger(L, inst->getBrushX());
  6244. return 1;
  6245. }
  6246. static int Polycode_Image_getBrushY(lua_State *L) {
  6247. luaL_checktype(L, 1, LUA_TUSERDATA);
  6248. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6249. lua_pushinteger(L, inst->getBrushY());
  6250. return 1;
  6251. }
  6252. static int Polycode_Image_isLoaded(lua_State *L) {
  6253. luaL_checktype(L, 1, LUA_TUSERDATA);
  6254. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6255. lua_pushboolean(L, inst->isLoaded());
  6256. return 1;
  6257. }
  6258. static int Polycode_Image_getType(lua_State *L) {
  6259. luaL_checktype(L, 1, LUA_TUSERDATA);
  6260. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6261. lua_pushinteger(L, inst->getType());
  6262. return 1;
  6263. }
  6264. static int Polycode_Image_getWidth(lua_State *L) {
  6265. luaL_checktype(L, 1, LUA_TUSERDATA);
  6266. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6267. lua_pushinteger(L, inst->getWidth());
  6268. return 1;
  6269. }
  6270. static int Polycode_Image_getHeight(lua_State *L) {
  6271. luaL_checktype(L, 1, LUA_TUSERDATA);
  6272. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6273. lua_pushinteger(L, inst->getHeight());
  6274. return 1;
  6275. }
  6276. static int Polycode_Image_getPixels(lua_State *L) {
  6277. luaL_checktype(L, 1, LUA_TUSERDATA);
  6278. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6279. PolyBase *ptrRetVal = (PolyBase*)inst->getPixels();
  6280. if(ptrRetVal == NULL) {
  6281. lua_pushnil(L);
  6282. } else {
  6283. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6284. *userdataPtr = ptrRetVal;
  6285. }
  6286. return 1;
  6287. }
  6288. static int Polycode_Image_premultiplyAlpha(lua_State *L) {
  6289. luaL_checktype(L, 1, LUA_TUSERDATA);
  6290. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6291. inst->premultiplyAlpha();
  6292. return 0;
  6293. }
  6294. static int Polycode_Image_savePNG(lua_State *L) {
  6295. luaL_checktype(L, 1, LUA_TUSERDATA);
  6296. Image *inst = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  6297. luaL_checktype(L, 2, LUA_TSTRING);
  6298. String fileName = String(lua_tostring(L, 2));
  6299. lua_pushboolean(L, inst->savePNG(fileName));
  6300. return 1;
  6301. }
  6302. static int Polycode_delete_Image(lua_State *L) {
  6303. luaL_checktype(L, 1, LUA_TUSERDATA);
  6304. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6305. delete ((Image*) *inst);
  6306. *inst = NULL;
  6307. return 0;
  6308. }
  6309. static int Polycode_TouchInfo_get_id(lua_State *L) {
  6310. luaL_checktype(L, 1, LUA_TUSERDATA);
  6311. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6312. lua_pushinteger(L, inst->id);
  6313. return 1;
  6314. }
  6315. static int Polycode_TouchInfo_get_position(lua_State *L) {
  6316. luaL_checktype(L, 1, LUA_TUSERDATA);
  6317. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6318. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6319. *userdataPtr = (PolyBase*)&inst->position;
  6320. return 1;
  6321. }
  6322. static int Polycode_TouchInfo_get_type(lua_State *L) {
  6323. luaL_checktype(L, 1, LUA_TUSERDATA);
  6324. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6325. lua_pushinteger(L, inst->type);
  6326. return 1;
  6327. }
  6328. static int Polycode_TouchInfo_set_id(lua_State *L) {
  6329. luaL_checktype(L, 1, LUA_TUSERDATA);
  6330. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6331. int param = lua_tointeger(L, 2);
  6332. inst->id = param;
  6333. return 0;
  6334. }
  6335. static int Polycode_TouchInfo_set_position(lua_State *L) {
  6336. luaL_checktype(L, 1, LUA_TUSERDATA);
  6337. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6338. luaL_checktype(L, 2, LUA_TUSERDATA);
  6339. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  6340. inst->position = *argInst;
  6341. return 0;
  6342. }
  6343. static int Polycode_TouchInfo_set_type(lua_State *L) {
  6344. luaL_checktype(L, 1, LUA_TUSERDATA);
  6345. TouchInfo *inst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 1));
  6346. int param = lua_tointeger(L, 2);
  6347. inst->type = param;
  6348. return 0;
  6349. }
  6350. static int Polycode_TouchInfo(lua_State *L) {
  6351. TouchInfo *inst = new TouchInfo();
  6352. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6353. *userdataPtr = (PolyBase*)inst;
  6354. luaL_getmetatable(L, "Polycode.TouchInfo");
  6355. lua_setmetatable(L, -2);
  6356. return 1;
  6357. }
  6358. static int Polycode_delete_TouchInfo(lua_State *L) {
  6359. luaL_checktype(L, 1, LUA_TUSERDATA);
  6360. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6361. delete ((TouchInfo*) *inst);
  6362. *inst = NULL;
  6363. return 0;
  6364. }
  6365. static int Polycode_InputEvent_get_mouseButton(lua_State *L) {
  6366. luaL_checktype(L, 1, LUA_TUSERDATA);
  6367. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6368. lua_pushinteger(L, inst->mouseButton);
  6369. return 1;
  6370. }
  6371. static int Polycode_InputEvent_get_mousePosition(lua_State *L) {
  6372. luaL_checktype(L, 1, LUA_TUSERDATA);
  6373. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6374. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6375. *userdataPtr = (PolyBase*)&inst->mousePosition;
  6376. return 1;
  6377. }
  6378. static int Polycode_InputEvent_get_key(lua_State *L) {
  6379. luaL_checktype(L, 1, LUA_TUSERDATA);
  6380. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6381. lua_pushinteger(L, inst->key);
  6382. return 1;
  6383. }
  6384. static int Polycode_InputEvent_get_charCode(lua_State *L) {
  6385. luaL_checktype(L, 1, LUA_TUSERDATA);
  6386. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6387. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6388. *userdataPtr = (PolyBase*)&inst->charCode;
  6389. return 1;
  6390. }
  6391. static int Polycode_InputEvent_get_timestamp(lua_State *L) {
  6392. luaL_checktype(L, 1, LUA_TUSERDATA);
  6393. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6394. lua_pushinteger(L, inst->timestamp);
  6395. return 1;
  6396. }
  6397. static int Polycode_InputEvent_get_touch(lua_State *L) {
  6398. luaL_checktype(L, 1, LUA_TUSERDATA);
  6399. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6400. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6401. *userdataPtr = (PolyBase*)&inst->touch;
  6402. return 1;
  6403. }
  6404. static int Polycode_InputEvent_get_touchType(lua_State *L) {
  6405. luaL_checktype(L, 1, LUA_TUSERDATA);
  6406. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6407. lua_pushinteger(L, inst->touchType);
  6408. return 1;
  6409. }
  6410. static int Polycode_InputEvent_get_joystickDeviceID(lua_State *L) {
  6411. luaL_checktype(L, 1, LUA_TUSERDATA);
  6412. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6413. lua_pushinteger(L, inst->joystickDeviceID);
  6414. return 1;
  6415. }
  6416. static int Polycode_InputEvent_get_joystickAxisValue(lua_State *L) {
  6417. luaL_checktype(L, 1, LUA_TUSERDATA);
  6418. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6419. lua_pushnumber(L, inst->joystickAxisValue);
  6420. return 1;
  6421. }
  6422. static int Polycode_InputEvent_get_joystickButton(lua_State *L) {
  6423. luaL_checktype(L, 1, LUA_TUSERDATA);
  6424. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6425. lua_pushinteger(L, inst->joystickButton);
  6426. return 1;
  6427. }
  6428. static int Polycode_InputEvent_get_joystickAxis(lua_State *L) {
  6429. luaL_checktype(L, 1, LUA_TUSERDATA);
  6430. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6431. lua_pushinteger(L, inst->joystickAxis);
  6432. return 1;
  6433. }
  6434. static int Polycode_InputEvent_get_joystickIndex(lua_State *L) {
  6435. luaL_checktype(L, 1, LUA_TUSERDATA);
  6436. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6437. lua_pushinteger(L, inst->joystickIndex);
  6438. return 1;
  6439. }
  6440. static int Polycode_InputEvent_get_hitDistance(lua_State *L) {
  6441. luaL_checktype(L, 1, LUA_TUSERDATA);
  6442. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6443. lua_pushnumber(L, inst->hitDistance);
  6444. return 1;
  6445. }
  6446. static int Polycode_InputEvent_set_mouseButton(lua_State *L) {
  6447. luaL_checktype(L, 1, LUA_TUSERDATA);
  6448. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6449. int param = lua_tointeger(L, 2);
  6450. inst->mouseButton = param;
  6451. return 0;
  6452. }
  6453. static int Polycode_InputEvent_set_mousePosition(lua_State *L) {
  6454. luaL_checktype(L, 1, LUA_TUSERDATA);
  6455. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6456. luaL_checktype(L, 2, LUA_TUSERDATA);
  6457. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  6458. inst->mousePosition = *argInst;
  6459. return 0;
  6460. }
  6461. static int Polycode_InputEvent_set_key(lua_State *L) {
  6462. luaL_checktype(L, 1, LUA_TUSERDATA);
  6463. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6464. PolyKEY param = (PolyKEY)lua_tointeger(L, 2);
  6465. inst->key = param;
  6466. return 0;
  6467. }
  6468. static int Polycode_InputEvent_set_charCode(lua_State *L) {
  6469. luaL_checktype(L, 1, LUA_TUSERDATA);
  6470. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6471. luaL_checktype(L, 2, LUA_TUSERDATA);
  6472. wchar_t *argInst = (wchar_t*) *((PolyBase**)lua_touserdata(L, 2));
  6473. inst->charCode = *argInst;
  6474. return 0;
  6475. }
  6476. static int Polycode_InputEvent_set_timestamp(lua_State *L) {
  6477. luaL_checktype(L, 1, LUA_TUSERDATA);
  6478. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6479. int param = lua_tointeger(L, 2);
  6480. inst->timestamp = param;
  6481. return 0;
  6482. }
  6483. static int Polycode_InputEvent_set_touch(lua_State *L) {
  6484. luaL_checktype(L, 1, LUA_TUSERDATA);
  6485. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6486. luaL_checktype(L, 2, LUA_TUSERDATA);
  6487. TouchInfo *argInst = (TouchInfo*) *((PolyBase**)lua_touserdata(L, 2));
  6488. inst->touch = *argInst;
  6489. return 0;
  6490. }
  6491. static int Polycode_InputEvent_set_touchType(lua_State *L) {
  6492. luaL_checktype(L, 1, LUA_TUSERDATA);
  6493. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6494. int param = lua_tointeger(L, 2);
  6495. inst->touchType = param;
  6496. return 0;
  6497. }
  6498. static int Polycode_InputEvent_set_joystickDeviceID(lua_State *L) {
  6499. luaL_checktype(L, 1, LUA_TUSERDATA);
  6500. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6501. int param = lua_tointeger(L, 2);
  6502. inst->joystickDeviceID = param;
  6503. return 0;
  6504. }
  6505. static int Polycode_InputEvent_set_joystickAxisValue(lua_State *L) {
  6506. luaL_checktype(L, 1, LUA_TUSERDATA);
  6507. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6508. Number param = lua_tonumber(L, 2);
  6509. inst->joystickAxisValue = param;
  6510. return 0;
  6511. }
  6512. static int Polycode_InputEvent_set_joystickButton(lua_State *L) {
  6513. luaL_checktype(L, 1, LUA_TUSERDATA);
  6514. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6515. int param = lua_tointeger(L, 2);
  6516. inst->joystickButton = param;
  6517. return 0;
  6518. }
  6519. static int Polycode_InputEvent_set_joystickAxis(lua_State *L) {
  6520. luaL_checktype(L, 1, LUA_TUSERDATA);
  6521. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6522. int param = lua_tointeger(L, 2);
  6523. inst->joystickAxis = param;
  6524. return 0;
  6525. }
  6526. static int Polycode_InputEvent_set_joystickIndex(lua_State *L) {
  6527. luaL_checktype(L, 1, LUA_TUSERDATA);
  6528. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6529. int param = lua_tointeger(L, 2);
  6530. inst->joystickIndex = param;
  6531. return 0;
  6532. }
  6533. static int Polycode_InputEvent_set_hitDistance(lua_State *L) {
  6534. luaL_checktype(L, 1, LUA_TUSERDATA);
  6535. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6536. Number param = lua_tonumber(L, 2);
  6537. inst->hitDistance = param;
  6538. return 0;
  6539. }
  6540. static int Polycode_InputEvent(lua_State *L) {
  6541. InputEvent *inst = new InputEvent();
  6542. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6543. *userdataPtr = (PolyBase*)inst;
  6544. luaL_getmetatable(L, "Polycode.InputEvent");
  6545. lua_setmetatable(L, -2);
  6546. return 1;
  6547. }
  6548. static int Polycode_InputEvent_getMousePosition(lua_State *L) {
  6549. luaL_checktype(L, 1, LUA_TUSERDATA);
  6550. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6551. Vector2 *retInst = new Vector2();
  6552. *retInst = inst->getMousePosition();
  6553. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6554. luaL_getmetatable(L, "Polycode.Vector2");
  6555. lua_setmetatable(L, -2);
  6556. *userdataPtr = (PolyBase*)retInst;
  6557. return 1;
  6558. }
  6559. static int Polycode_InputEvent_getKey(lua_State *L) {
  6560. luaL_checktype(L, 1, LUA_TUSERDATA);
  6561. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6562. lua_pushinteger(L, inst->getKey());
  6563. return 1;
  6564. }
  6565. static int Polycode_InputEvent_getMouseButton(lua_State *L) {
  6566. luaL_checktype(L, 1, LUA_TUSERDATA);
  6567. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6568. lua_pushinteger(L, inst->getMouseButton());
  6569. return 1;
  6570. }
  6571. static int Polycode_InputEvent_getCharCode(lua_State *L) {
  6572. luaL_checktype(L, 1, LUA_TUSERDATA);
  6573. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6574. wchar_t *retInst = new wchar_t();
  6575. *retInst = inst->getCharCode();
  6576. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6577. luaL_getmetatable(L, "Polycode.wchar_t");
  6578. lua_setmetatable(L, -2);
  6579. *userdataPtr = (PolyBase*)retInst;
  6580. return 1;
  6581. }
  6582. static int Polycode_InputEvent_keyCode(lua_State *L) {
  6583. luaL_checktype(L, 1, LUA_TUSERDATA);
  6584. InputEvent *inst = (InputEvent*) *((PolyBase**)lua_touserdata(L, 1));
  6585. lua_pushinteger(L, inst->keyCode());
  6586. return 1;
  6587. }
  6588. static int Polycode_delete_InputEvent(lua_State *L) {
  6589. luaL_checktype(L, 1, LUA_TUSERDATA);
  6590. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6591. delete ((InputEvent*) *inst);
  6592. *inst = NULL;
  6593. return 0;
  6594. }
  6595. static int Polycode_GlyphData_get_glyphs(lua_State *L) {
  6596. luaL_checktype(L, 1, LUA_TUSERDATA);
  6597. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6598. if(!inst->glyphs) {
  6599. lua_pushnil(L);
  6600. } else {
  6601. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6602. *userdataPtr = (PolyBase*)inst->glyphs;
  6603. }
  6604. return 1;
  6605. }
  6606. static int Polycode_GlyphData_get_positions(lua_State *L) {
  6607. luaL_checktype(L, 1, LUA_TUSERDATA);
  6608. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6609. if(!inst->positions) {
  6610. lua_pushnil(L);
  6611. } else {
  6612. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6613. *userdataPtr = (PolyBase*)inst->positions;
  6614. }
  6615. return 1;
  6616. }
  6617. static int Polycode_GlyphData_get_num_glyphs(lua_State *L) {
  6618. luaL_checktype(L, 1, LUA_TUSERDATA);
  6619. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6620. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6621. *userdataPtr = (PolyBase*)&inst->num_glyphs;
  6622. return 1;
  6623. }
  6624. static int Polycode_GlyphData_get_trailingAdvance(lua_State *L) {
  6625. luaL_checktype(L, 1, LUA_TUSERDATA);
  6626. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6627. lua_pushinteger(L, inst->trailingAdvance);
  6628. return 1;
  6629. }
  6630. static int Polycode_GlyphData_set_glyphs(lua_State *L) {
  6631. luaL_checktype(L, 1, LUA_TUSERDATA);
  6632. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6633. luaL_checktype(L, 2, LUA_TUSERDATA);
  6634. FT_Glyph* *argInst = (FT_Glyph**) *((PolyBase**)lua_touserdata(L, 2));
  6635. inst->glyphs = *argInst;
  6636. return 0;
  6637. }
  6638. static int Polycode_GlyphData_set_positions(lua_State *L) {
  6639. luaL_checktype(L, 1, LUA_TUSERDATA);
  6640. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6641. luaL_checktype(L, 2, LUA_TUSERDATA);
  6642. FT_Vector* *argInst = (FT_Vector**) *((PolyBase**)lua_touserdata(L, 2));
  6643. inst->positions = *argInst;
  6644. return 0;
  6645. }
  6646. static int Polycode_GlyphData_set_num_glyphs(lua_State *L) {
  6647. luaL_checktype(L, 1, LUA_TUSERDATA);
  6648. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6649. luaL_checktype(L, 2, LUA_TUSERDATA);
  6650. FT_UInt *argInst = (FT_UInt*) *((PolyBase**)lua_touserdata(L, 2));
  6651. inst->num_glyphs = *argInst;
  6652. return 0;
  6653. }
  6654. static int Polycode_GlyphData_set_trailingAdvance(lua_State *L) {
  6655. luaL_checktype(L, 1, LUA_TUSERDATA);
  6656. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6657. int param = lua_tointeger(L, 2);
  6658. inst->trailingAdvance = param;
  6659. return 0;
  6660. }
  6661. static int Polycode_GlyphData(lua_State *L) {
  6662. GlyphData *inst = new GlyphData();
  6663. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6664. *userdataPtr = (PolyBase*)inst;
  6665. luaL_getmetatable(L, "Polycode.GlyphData");
  6666. lua_setmetatable(L, -2);
  6667. return 1;
  6668. }
  6669. static int Polycode_GlyphData_clearData(lua_State *L) {
  6670. luaL_checktype(L, 1, LUA_TUSERDATA);
  6671. GlyphData *inst = (GlyphData*) *((PolyBase**)lua_touserdata(L, 1));
  6672. inst->clearData();
  6673. return 0;
  6674. }
  6675. static int Polycode_delete_GlyphData(lua_State *L) {
  6676. luaL_checktype(L, 1, LUA_TUSERDATA);
  6677. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6678. delete ((GlyphData*) *inst);
  6679. *inst = NULL;
  6680. return 0;
  6681. }
  6682. static int Polycode_ColorRange_get_color(lua_State *L) {
  6683. luaL_checktype(L, 1, LUA_TUSERDATA);
  6684. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6685. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6686. *userdataPtr = (PolyBase*)&inst->color;
  6687. return 1;
  6688. }
  6689. static int Polycode_ColorRange_get_rangeStart(lua_State *L) {
  6690. luaL_checktype(L, 1, LUA_TUSERDATA);
  6691. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6692. lua_pushinteger(L, inst->rangeStart);
  6693. return 1;
  6694. }
  6695. static int Polycode_ColorRange_get_rangeEnd(lua_State *L) {
  6696. luaL_checktype(L, 1, LUA_TUSERDATA);
  6697. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6698. lua_pushinteger(L, inst->rangeEnd);
  6699. return 1;
  6700. }
  6701. static int Polycode_ColorRange_set_color(lua_State *L) {
  6702. luaL_checktype(L, 1, LUA_TUSERDATA);
  6703. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6704. luaL_checktype(L, 2, LUA_TUSERDATA);
  6705. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  6706. inst->color = *argInst;
  6707. return 0;
  6708. }
  6709. static int Polycode_ColorRange_set_rangeStart(lua_State *L) {
  6710. luaL_checktype(L, 1, LUA_TUSERDATA);
  6711. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6712. int param = lua_tointeger(L, 2);
  6713. inst->rangeStart = param;
  6714. return 0;
  6715. }
  6716. static int Polycode_ColorRange_set_rangeEnd(lua_State *L) {
  6717. luaL_checktype(L, 1, LUA_TUSERDATA);
  6718. ColorRange *inst = (ColorRange*) *((PolyBase**)lua_touserdata(L, 1));
  6719. int param = lua_tointeger(L, 2);
  6720. inst->rangeEnd = param;
  6721. return 0;
  6722. }
  6723. static int Polycode_ColorRange(lua_State *L) {
  6724. luaL_checktype(L, 1, LUA_TUSERDATA);
  6725. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 1));
  6726. luaL_checktype(L, 2, LUA_TNUMBER);
  6727. int rangeStart = lua_tointeger(L, 2);
  6728. luaL_checktype(L, 3, LUA_TNUMBER);
  6729. int rangeEnd = lua_tointeger(L, 3);
  6730. ColorRange *inst = new ColorRange(color, rangeStart, rangeEnd);
  6731. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6732. *userdataPtr = (PolyBase*)inst;
  6733. luaL_getmetatable(L, "Polycode.ColorRange");
  6734. lua_setmetatable(L, -2);
  6735. return 1;
  6736. }
  6737. static int Polycode_delete_ColorRange(lua_State *L) {
  6738. luaL_checktype(L, 1, LUA_TUSERDATA);
  6739. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6740. delete ((ColorRange*) *inst);
  6741. *inst = NULL;
  6742. return 0;
  6743. }
  6744. static int Polycode_Label(lua_State *L) {
  6745. luaL_checktype(L, 1, LUA_TUSERDATA);
  6746. Font* font = (Font*) *((PolyBase**)lua_touserdata(L, 1));
  6747. luaL_checktype(L, 2, LUA_TSTRING);
  6748. String text = String(lua_tostring(L, 2));
  6749. luaL_checktype(L, 3, LUA_TNUMBER);
  6750. int size = lua_tointeger(L, 3);
  6751. luaL_checktype(L, 4, LUA_TNUMBER);
  6752. int antiAliasMode = lua_tointeger(L, 4);
  6753. bool premultiplyAlpha;
  6754. if(lua_isboolean(L, 5)) {
  6755. premultiplyAlpha = lua_toboolean(L, 5) != 0;
  6756. } else {
  6757. premultiplyAlpha = false;
  6758. }
  6759. luaL_checktype(L, 6, LUA_TUSERDATA);
  6760. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 6));
  6761. luaL_checktype(L, 7, LUA_TUSERDATA);
  6762. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  6763. Label *inst = new Label(font, text, size, antiAliasMode, premultiplyAlpha, backgroundColor, foregroundColor);
  6764. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6765. *userdataPtr = (PolyBase*)inst;
  6766. luaL_getmetatable(L, "Polycode.Label");
  6767. lua_setmetatable(L, -2);
  6768. return 1;
  6769. }
  6770. static int Polycode_Label_setText(lua_State *L) {
  6771. luaL_checktype(L, 1, LUA_TUSERDATA);
  6772. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6773. luaL_checktype(L, 2, LUA_TSTRING);
  6774. String text = String(lua_tostring(L, 2));
  6775. inst->setText(text);
  6776. return 0;
  6777. }
  6778. static int Polycode_Label_getText(lua_State *L) {
  6779. luaL_checktype(L, 1, LUA_TUSERDATA);
  6780. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6781. lua_pushstring(L, inst->getText().c_str());
  6782. return 1;
  6783. }
  6784. static int Polycode_Label_getTextWidthForString(lua_State *L) {
  6785. luaL_checktype(L, 1, LUA_TUSERDATA);
  6786. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6787. luaL_checktype(L, 2, LUA_TSTRING);
  6788. String text = String(lua_tostring(L, 2));
  6789. lua_pushinteger(L, inst->getTextWidthForString(text));
  6790. return 1;
  6791. }
  6792. static int Polycode_Label_getTextHeightForString(lua_State *L) {
  6793. luaL_checktype(L, 1, LUA_TUSERDATA);
  6794. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6795. luaL_checktype(L, 2, LUA_TSTRING);
  6796. String text = String(lua_tostring(L, 2));
  6797. lua_pushinteger(L, inst->getTextHeightForString(text));
  6798. return 1;
  6799. }
  6800. static int Polycode_Label_getTextWidth(lua_State *L) {
  6801. luaL_checktype(L, 1, LUA_TUSERDATA);
  6802. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6803. lua_pushnumber(L, inst->getTextWidth());
  6804. return 1;
  6805. }
  6806. static int Polycode_Label_getTextHeight(lua_State *L) {
  6807. luaL_checktype(L, 1, LUA_TUSERDATA);
  6808. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6809. lua_pushnumber(L, inst->getTextHeight());
  6810. return 1;
  6811. }
  6812. static int Polycode_Label_setColorForRange(lua_State *L) {
  6813. luaL_checktype(L, 1, LUA_TUSERDATA);
  6814. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6815. luaL_checktype(L, 2, LUA_TUSERDATA);
  6816. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6817. luaL_checktype(L, 3, LUA_TNUMBER);
  6818. int rangeStart = lua_tointeger(L, 3);
  6819. luaL_checktype(L, 4, LUA_TNUMBER);
  6820. int rangeEnd = lua_tointeger(L, 4);
  6821. inst->setColorForRange(color, rangeStart, rangeEnd);
  6822. return 0;
  6823. }
  6824. static int Polycode_Label_clearColors(lua_State *L) {
  6825. luaL_checktype(L, 1, LUA_TUSERDATA);
  6826. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6827. inst->clearColors();
  6828. return 0;
  6829. }
  6830. static int Polycode_Label_getColorForIndex(lua_State *L) {
  6831. luaL_checktype(L, 1, LUA_TUSERDATA);
  6832. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6833. luaL_checktype(L, 2, LUA_TNUMBER);
  6834. int index = lua_tointeger(L, 2);
  6835. Color *retInst = new Color();
  6836. *retInst = inst->getColorForIndex(index);
  6837. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6838. luaL_getmetatable(L, "Polycode.Color");
  6839. lua_setmetatable(L, -2);
  6840. *userdataPtr = (PolyBase*)retInst;
  6841. return 1;
  6842. }
  6843. static int Polycode_Label_getPremultiplyAlpha(lua_State *L) {
  6844. luaL_checktype(L, 1, LUA_TUSERDATA);
  6845. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6846. lua_pushboolean(L, inst->getPremultiplyAlpha());
  6847. return 1;
  6848. }
  6849. static int Polycode_Label_setPremultiplyAlpha(lua_State *L) {
  6850. luaL_checktype(L, 1, LUA_TUSERDATA);
  6851. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6852. luaL_checktype(L, 2, LUA_TBOOLEAN);
  6853. bool val = lua_toboolean(L, 2) != 0;
  6854. inst->setPremultiplyAlpha(val);
  6855. return 0;
  6856. }
  6857. static int Polycode_Label_setFont(lua_State *L) {
  6858. luaL_checktype(L, 1, LUA_TUSERDATA);
  6859. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6860. luaL_checktype(L, 2, LUA_TUSERDATA);
  6861. Font* newFont = (Font*) *((PolyBase**)lua_touserdata(L, 2));
  6862. inst->setFont(newFont);
  6863. return 0;
  6864. }
  6865. static int Polycode_Label_getFont(lua_State *L) {
  6866. luaL_checktype(L, 1, LUA_TUSERDATA);
  6867. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6868. PolyBase *ptrRetVal = (PolyBase*)inst->getFont();
  6869. if(ptrRetVal == NULL) {
  6870. lua_pushnil(L);
  6871. } else {
  6872. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6873. *userdataPtr = ptrRetVal;
  6874. }
  6875. return 1;
  6876. }
  6877. static int Polycode_Label_setSize(lua_State *L) {
  6878. luaL_checktype(L, 1, LUA_TUSERDATA);
  6879. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6880. luaL_checktype(L, 2, LUA_TNUMBER);
  6881. int newSize = lua_tointeger(L, 2);
  6882. inst->setSize(newSize);
  6883. return 0;
  6884. }
  6885. static int Polycode_Label_getSize(lua_State *L) {
  6886. luaL_checktype(L, 1, LUA_TUSERDATA);
  6887. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6888. lua_pushinteger(L, inst->getSize());
  6889. return 1;
  6890. }
  6891. static int Polycode_Label_getAntialiasMode(lua_State *L) {
  6892. luaL_checktype(L, 1, LUA_TUSERDATA);
  6893. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6894. lua_pushinteger(L, inst->getAntialiasMode());
  6895. return 1;
  6896. }
  6897. static int Polycode_Label_setAntialiasMode(lua_State *L) {
  6898. luaL_checktype(L, 1, LUA_TUSERDATA);
  6899. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6900. luaL_checktype(L, 2, LUA_TNUMBER);
  6901. int newMode = lua_tointeger(L, 2);
  6902. inst->setAntialiasMode(newMode);
  6903. return 0;
  6904. }
  6905. static int Polycode_Label_getBaselineAdjust(lua_State *L) {
  6906. luaL_checktype(L, 1, LUA_TUSERDATA);
  6907. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6908. lua_pushinteger(L, inst->getBaselineAdjust());
  6909. return 1;
  6910. }
  6911. static int Polycode_Label_setBackgroundColor(lua_State *L) {
  6912. luaL_checktype(L, 1, LUA_TUSERDATA);
  6913. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6914. luaL_checktype(L, 2, LUA_TUSERDATA);
  6915. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6916. inst->setBackgroundColor(color);
  6917. return 0;
  6918. }
  6919. static int Polycode_Label_setForegroundColor(lua_State *L) {
  6920. luaL_checktype(L, 1, LUA_TUSERDATA);
  6921. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6922. luaL_checktype(L, 2, LUA_TUSERDATA);
  6923. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6924. inst->setForegroundColor(color);
  6925. return 0;
  6926. }
  6927. static int Polycode_Label_setColors(lua_State *L) {
  6928. luaL_checktype(L, 1, LUA_TUSERDATA);
  6929. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6930. luaL_checktype(L, 2, LUA_TUSERDATA);
  6931. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  6932. luaL_checktype(L, 3, LUA_TUSERDATA);
  6933. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  6934. inst->setColors(backgroundColor, foregroundColor);
  6935. return 0;
  6936. }
  6937. static int Polycode_Label_getBackgroundColor(lua_State *L) {
  6938. luaL_checktype(L, 1, LUA_TUSERDATA);
  6939. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6940. Color *retInst = new Color();
  6941. *retInst = inst->getBackgroundColor();
  6942. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6943. luaL_getmetatable(L, "Polycode.Color");
  6944. lua_setmetatable(L, -2);
  6945. *userdataPtr = (PolyBase*)retInst;
  6946. return 1;
  6947. }
  6948. static int Polycode_Label_getForegroundColor(lua_State *L) {
  6949. luaL_checktype(L, 1, LUA_TUSERDATA);
  6950. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6951. Color *retInst = new Color();
  6952. *retInst = inst->getForegroundColor();
  6953. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  6954. luaL_getmetatable(L, "Polycode.Color");
  6955. lua_setmetatable(L, -2);
  6956. *userdataPtr = (PolyBase*)retInst;
  6957. return 1;
  6958. }
  6959. static int Polycode_Label_optionsChanged(lua_State *L) {
  6960. luaL_checktype(L, 1, LUA_TUSERDATA);
  6961. Label *inst = (Label*) *((PolyBase**)lua_touserdata(L, 1));
  6962. lua_pushboolean(L, inst->optionsChanged());
  6963. return 1;
  6964. }
  6965. static int Polycode_delete_Label(lua_State *L) {
  6966. luaL_checktype(L, 1, LUA_TUSERDATA);
  6967. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  6968. delete ((Label*) *inst);
  6969. *inst = NULL;
  6970. return 0;
  6971. }
  6972. static int Polycode_Material_get_fp16RenderTargets(lua_State *L) {
  6973. luaL_checktype(L, 1, LUA_TUSERDATA);
  6974. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6975. lua_pushboolean(L, inst->fp16RenderTargets);
  6976. return 1;
  6977. }
  6978. static int Polycode_Material_get_blendingMode(lua_State *L) {
  6979. luaL_checktype(L, 1, LUA_TUSERDATA);
  6980. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6981. lua_pushinteger(L, inst->blendingMode);
  6982. return 1;
  6983. }
  6984. static int Polycode_Material_get_screenMaterial(lua_State *L) {
  6985. luaL_checktype(L, 1, LUA_TUSERDATA);
  6986. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6987. lua_pushboolean(L, inst->screenMaterial);
  6988. return 1;
  6989. }
  6990. static int Polycode_Material_set_fp16RenderTargets(lua_State *L) {
  6991. luaL_checktype(L, 1, LUA_TUSERDATA);
  6992. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  6993. bool param = lua_toboolean(L, 2) != 0;
  6994. inst->fp16RenderTargets = param;
  6995. return 0;
  6996. }
  6997. static int Polycode_Material_set_blendingMode(lua_State *L) {
  6998. luaL_checktype(L, 1, LUA_TUSERDATA);
  6999. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7000. int param = lua_tointeger(L, 2);
  7001. inst->blendingMode = param;
  7002. return 0;
  7003. }
  7004. static int Polycode_Material_set_screenMaterial(lua_State *L) {
  7005. luaL_checktype(L, 1, LUA_TUSERDATA);
  7006. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7007. bool param = lua_toboolean(L, 2) != 0;
  7008. inst->screenMaterial = param;
  7009. return 0;
  7010. }
  7011. static int Polycode_Material(lua_State *L) {
  7012. luaL_checktype(L, 1, LUA_TSTRING);
  7013. String name = String(lua_tostring(L, 1));
  7014. Material *inst = new Material(name);
  7015. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7016. *userdataPtr = (PolyBase*)inst;
  7017. luaL_getmetatable(L, "Polycode.Material");
  7018. lua_setmetatable(L, -2);
  7019. return 1;
  7020. }
  7021. static int Polycode_Material_addShaderPass(lua_State *L) {
  7022. luaL_checktype(L, 1, LUA_TUSERDATA);
  7023. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7024. luaL_checktype(L, 2, LUA_TUSERDATA);
  7025. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  7026. inst->addShaderPass(pass);
  7027. return 0;
  7028. }
  7029. static int Polycode_Material_addShaderPassAtIndex(lua_State *L) {
  7030. luaL_checktype(L, 1, LUA_TUSERDATA);
  7031. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7032. luaL_checktype(L, 2, LUA_TUSERDATA);
  7033. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  7034. luaL_checktype(L, 3, LUA_TNUMBER);
  7035. int shaderIndex = lua_tointeger(L, 3);
  7036. inst->addShaderPassAtIndex(pass, shaderIndex);
  7037. return 0;
  7038. }
  7039. static int Polycode_Material_addShader(lua_State *L) {
  7040. luaL_checktype(L, 1, LUA_TUSERDATA);
  7041. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7042. luaL_checktype(L, 2, LUA_TUSERDATA);
  7043. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  7044. luaL_checktype(L, 3, LUA_TUSERDATA);
  7045. ShaderBinding* shaderBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 3));
  7046. inst->addShader(shader, shaderBinding);
  7047. return 0;
  7048. }
  7049. static int Polycode_Material_addShaderAtIndex(lua_State *L) {
  7050. luaL_checktype(L, 1, LUA_TUSERDATA);
  7051. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7052. luaL_checktype(L, 2, LUA_TUSERDATA);
  7053. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  7054. luaL_checktype(L, 3, LUA_TUSERDATA);
  7055. ShaderBinding* shaderBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 3));
  7056. luaL_checktype(L, 4, LUA_TNUMBER);
  7057. int shaderIndex = lua_tointeger(L, 4);
  7058. inst->addShaderAtIndex(shader, shaderBinding, shaderIndex);
  7059. return 0;
  7060. }
  7061. static int Polycode_Material_getNumShaderPasses(lua_State *L) {
  7062. luaL_checktype(L, 1, LUA_TUSERDATA);
  7063. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7064. lua_pushinteger(L, inst->getNumShaderPasses());
  7065. return 1;
  7066. }
  7067. static int Polycode_Material_removeShaderPass(lua_State *L) {
  7068. luaL_checktype(L, 1, LUA_TUSERDATA);
  7069. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7070. luaL_checktype(L, 2, LUA_TNUMBER);
  7071. int shaderIndex = lua_tointeger(L, 2);
  7072. inst->removeShaderPass(shaderIndex);
  7073. return 0;
  7074. }
  7075. static int Polycode_Material_recreateExpectedShaderParams(lua_State *L) {
  7076. luaL_checktype(L, 1, LUA_TUSERDATA);
  7077. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7078. inst->recreateExpectedShaderParams();
  7079. return 0;
  7080. }
  7081. static int Polycode_Material_addShaderRenderTarget(lua_State *L) {
  7082. luaL_checktype(L, 1, LUA_TUSERDATA);
  7083. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7084. luaL_checktype(L, 2, LUA_TUSERDATA);
  7085. ShaderRenderTarget* newTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  7086. inst->addShaderRenderTarget(newTarget);
  7087. return 0;
  7088. }
  7089. static int Polycode_Material_getNumShaderRenderTargets(lua_State *L) {
  7090. luaL_checktype(L, 1, LUA_TUSERDATA);
  7091. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7092. lua_pushinteger(L, inst->getNumShaderRenderTargets());
  7093. return 1;
  7094. }
  7095. static int Polycode_Material_getShaderRenderTarget(lua_State *L) {
  7096. luaL_checktype(L, 1, LUA_TUSERDATA);
  7097. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7098. luaL_checktype(L, 2, LUA_TNUMBER);
  7099. int index = lua_tointeger(L, 2);
  7100. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderRenderTarget(index);
  7101. if(ptrRetVal == NULL) {
  7102. lua_pushnil(L);
  7103. } else {
  7104. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7105. *userdataPtr = ptrRetVal;
  7106. }
  7107. return 1;
  7108. }
  7109. static int Polycode_Material_removeShaderRenderTarget(lua_State *L) {
  7110. luaL_checktype(L, 1, LUA_TUSERDATA);
  7111. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7112. luaL_checktype(L, 2, LUA_TNUMBER);
  7113. int index = lua_tointeger(L, 2);
  7114. inst->removeShaderRenderTarget(index);
  7115. return 0;
  7116. }
  7117. static int Polycode_Material_recreateRenderTarget(lua_State *L) {
  7118. luaL_checktype(L, 1, LUA_TUSERDATA);
  7119. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7120. luaL_checktype(L, 2, LUA_TUSERDATA);
  7121. ShaderRenderTarget* renderTarget = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 2));
  7122. inst->recreateRenderTarget(renderTarget);
  7123. return 0;
  7124. }
  7125. static int Polycode_Material_recreateRenderTargets(lua_State *L) {
  7126. luaL_checktype(L, 1, LUA_TUSERDATA);
  7127. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7128. inst->recreateRenderTargets();
  7129. return 0;
  7130. }
  7131. static int Polycode_Material_getName(lua_State *L) {
  7132. luaL_checktype(L, 1, LUA_TUSERDATA);
  7133. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7134. lua_pushstring(L, inst->getName().c_str());
  7135. return 1;
  7136. }
  7137. static int Polycode_Material_getShaderPass(lua_State *L) {
  7138. luaL_checktype(L, 1, LUA_TUSERDATA);
  7139. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7140. luaL_checktype(L, 2, LUA_TNUMBER);
  7141. int index = lua_tointeger(L, 2);
  7142. ShaderPass *retInst = new ShaderPass();
  7143. *retInst = inst->getShaderPass(index);
  7144. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7145. luaL_getmetatable(L, "Polycode.ShaderPass");
  7146. lua_setmetatable(L, -2);
  7147. *userdataPtr = (PolyBase*)retInst;
  7148. return 1;
  7149. }
  7150. static int Polycode_Material_getShaderBinding(lua_State *L) {
  7151. luaL_checktype(L, 1, LUA_TUSERDATA);
  7152. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7153. luaL_checktype(L, 2, LUA_TNUMBER);
  7154. int index = lua_tointeger(L, 2);
  7155. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderBinding(index);
  7156. if(ptrRetVal == NULL) {
  7157. lua_pushnil(L);
  7158. } else {
  7159. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7160. *userdataPtr = ptrRetVal;
  7161. }
  7162. return 1;
  7163. }
  7164. static int Polycode_Material_getShader(lua_State *L) {
  7165. luaL_checktype(L, 1, LUA_TUSERDATA);
  7166. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7167. luaL_checktype(L, 2, LUA_TNUMBER);
  7168. int index = lua_tointeger(L, 2);
  7169. PolyBase *ptrRetVal = (PolyBase*)inst->getShader(index);
  7170. if(ptrRetVal == NULL) {
  7171. lua_pushnil(L);
  7172. } else {
  7173. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7174. *userdataPtr = ptrRetVal;
  7175. }
  7176. return 1;
  7177. }
  7178. static int Polycode_Material_loadMaterial(lua_State *L) {
  7179. luaL_checktype(L, 1, LUA_TUSERDATA);
  7180. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7181. luaL_checktype(L, 2, LUA_TSTRING);
  7182. String fileName = String(lua_tostring(L, 2));
  7183. inst->loadMaterial(fileName);
  7184. return 0;
  7185. }
  7186. static int Polycode_Material_setName(lua_State *L) {
  7187. luaL_checktype(L, 1, LUA_TUSERDATA);
  7188. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7189. luaL_checktype(L, 2, LUA_TSTRING);
  7190. String name = String(lua_tostring(L, 2));
  7191. inst->setName(name);
  7192. return 0;
  7193. }
  7194. static int Polycode_Material_clearShaders(lua_State *L) {
  7195. luaL_checktype(L, 1, LUA_TUSERDATA);
  7196. Material *inst = (Material*) *((PolyBase**)lua_touserdata(L, 1));
  7197. inst->clearShaders();
  7198. return 0;
  7199. }
  7200. static int Polycode_delete_Material(lua_State *L) {
  7201. luaL_checktype(L, 1, LUA_TUSERDATA);
  7202. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7203. delete ((Material*) *inst);
  7204. *inst = NULL;
  7205. return 0;
  7206. }
  7207. static int Polycode_ShaderPass_get_shader(lua_State *L) {
  7208. luaL_checktype(L, 1, LUA_TUSERDATA);
  7209. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7210. if(!inst->shader) {
  7211. lua_pushnil(L);
  7212. } else {
  7213. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7214. *userdataPtr = (PolyBase*)inst->shader;
  7215. }
  7216. return 1;
  7217. }
  7218. static int Polycode_ShaderPass_get_wireframe(lua_State *L) {
  7219. luaL_checktype(L, 1, LUA_TUSERDATA);
  7220. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7221. lua_pushboolean(L, inst->wireframe);
  7222. return 1;
  7223. }
  7224. static int Polycode_ShaderPass_get_blendingMode(lua_State *L) {
  7225. luaL_checktype(L, 1, LUA_TUSERDATA);
  7226. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7227. lua_pushinteger(L, inst->blendingMode);
  7228. return 1;
  7229. }
  7230. static int Polycode_ShaderPass_get_shaderBinding(lua_State *L) {
  7231. luaL_checktype(L, 1, LUA_TUSERDATA);
  7232. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7233. if(!inst->shaderBinding) {
  7234. lua_pushnil(L);
  7235. } else {
  7236. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7237. *userdataPtr = (PolyBase*)inst->shaderBinding;
  7238. }
  7239. return 1;
  7240. }
  7241. static int Polycode_ShaderPass_get_materialShaderBinding(lua_State *L) {
  7242. luaL_checktype(L, 1, LUA_TUSERDATA);
  7243. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7244. if(!inst->materialShaderBinding) {
  7245. lua_pushnil(L);
  7246. } else {
  7247. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7248. *userdataPtr = (PolyBase*)inst->materialShaderBinding;
  7249. }
  7250. return 1;
  7251. }
  7252. static int Polycode_ShaderPass_set_shader(lua_State *L) {
  7253. luaL_checktype(L, 1, LUA_TUSERDATA);
  7254. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7255. luaL_checktype(L, 2, LUA_TUSERDATA);
  7256. Shader* *argInst = (Shader**) *((PolyBase**)lua_touserdata(L, 2));
  7257. inst->shader = *argInst;
  7258. return 0;
  7259. }
  7260. static int Polycode_ShaderPass_set_wireframe(lua_State *L) {
  7261. luaL_checktype(L, 1, LUA_TUSERDATA);
  7262. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7263. bool param = lua_toboolean(L, 2) != 0;
  7264. inst->wireframe = param;
  7265. return 0;
  7266. }
  7267. static int Polycode_ShaderPass_set_blendingMode(lua_State *L) {
  7268. luaL_checktype(L, 1, LUA_TUSERDATA);
  7269. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7270. int param = lua_tointeger(L, 2);
  7271. inst->blendingMode = param;
  7272. return 0;
  7273. }
  7274. static int Polycode_ShaderPass_set_shaderBinding(lua_State *L) {
  7275. luaL_checktype(L, 1, LUA_TUSERDATA);
  7276. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7277. luaL_checktype(L, 2, LUA_TUSERDATA);
  7278. ShaderBinding* *argInst = (ShaderBinding**) *((PolyBase**)lua_touserdata(L, 2));
  7279. inst->shaderBinding = *argInst;
  7280. return 0;
  7281. }
  7282. static int Polycode_ShaderPass_set_materialShaderBinding(lua_State *L) {
  7283. luaL_checktype(L, 1, LUA_TUSERDATA);
  7284. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7285. luaL_checktype(L, 2, LUA_TUSERDATA);
  7286. ShaderBinding* *argInst = (ShaderBinding**) *((PolyBase**)lua_touserdata(L, 2));
  7287. inst->materialShaderBinding = *argInst;
  7288. return 0;
  7289. }
  7290. static int Polycode_ShaderPass(lua_State *L) {
  7291. ShaderPass *inst = new ShaderPass();
  7292. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7293. *userdataPtr = (PolyBase*)inst;
  7294. luaL_getmetatable(L, "Polycode.ShaderPass");
  7295. lua_setmetatable(L, -2);
  7296. return 1;
  7297. }
  7298. static int Polycode_ShaderPass_setAttributeArraysFromMesh(lua_State *L) {
  7299. luaL_checktype(L, 1, LUA_TUSERDATA);
  7300. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7301. luaL_checktype(L, 2, LUA_TUSERDATA);
  7302. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  7303. inst->setAttributeArraysFromMesh(mesh);
  7304. return 0;
  7305. }
  7306. static int Polycode_ShaderPass_setExpectedAttributes(lua_State *L) {
  7307. luaL_checktype(L, 1, LUA_TUSERDATA);
  7308. ShaderPass *inst = (ShaderPass*) *((PolyBase**)lua_touserdata(L, 1));
  7309. inst->setExpectedAttributes();
  7310. return 0;
  7311. }
  7312. static int Polycode_ShaderPass_arrayToAttributeName(lua_State *L) {
  7313. luaL_checktype(L, 1, LUA_TUSERDATA);
  7314. VertexDataArray* array = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  7315. lua_pushstring(L, ShaderPass::arrayToAttributeName(array).c_str());
  7316. return 1;
  7317. }
  7318. static int Polycode_delete_ShaderPass(lua_State *L) {
  7319. luaL_checktype(L, 1, LUA_TUSERDATA);
  7320. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7321. delete ((ShaderPass*) *inst);
  7322. *inst = NULL;
  7323. return 0;
  7324. }
  7325. static int Polycode_MaterialManager_get_premultiplyAlphaOnLoad(lua_State *L) {
  7326. luaL_checktype(L, 1, LUA_TUSERDATA);
  7327. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7328. lua_pushboolean(L, inst->premultiplyAlphaOnLoad);
  7329. return 1;
  7330. }
  7331. static int Polycode_MaterialManager_get_clampDefault(lua_State *L) {
  7332. luaL_checktype(L, 1, LUA_TUSERDATA);
  7333. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7334. lua_pushboolean(L, inst->clampDefault);
  7335. return 1;
  7336. }
  7337. static int Polycode_MaterialManager_get_mipmapsDefault(lua_State *L) {
  7338. luaL_checktype(L, 1, LUA_TUSERDATA);
  7339. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7340. lua_pushboolean(L, inst->mipmapsDefault);
  7341. return 1;
  7342. }
  7343. static int Polycode_MaterialManager_get_keepTextureData(lua_State *L) {
  7344. luaL_checktype(L, 1, LUA_TUSERDATA);
  7345. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7346. lua_pushboolean(L, inst->keepTextureData);
  7347. return 1;
  7348. }
  7349. static int Polycode_MaterialManager_set_premultiplyAlphaOnLoad(lua_State *L) {
  7350. luaL_checktype(L, 1, LUA_TUSERDATA);
  7351. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7352. bool param = lua_toboolean(L, 2) != 0;
  7353. inst->premultiplyAlphaOnLoad = param;
  7354. return 0;
  7355. }
  7356. static int Polycode_MaterialManager_set_clampDefault(lua_State *L) {
  7357. luaL_checktype(L, 1, LUA_TUSERDATA);
  7358. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7359. bool param = lua_toboolean(L, 2) != 0;
  7360. inst->clampDefault = param;
  7361. return 0;
  7362. }
  7363. static int Polycode_MaterialManager_set_mipmapsDefault(lua_State *L) {
  7364. luaL_checktype(L, 1, LUA_TUSERDATA);
  7365. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7366. bool param = lua_toboolean(L, 2) != 0;
  7367. inst->mipmapsDefault = param;
  7368. return 0;
  7369. }
  7370. static int Polycode_MaterialManager_set_keepTextureData(lua_State *L) {
  7371. luaL_checktype(L, 1, LUA_TUSERDATA);
  7372. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7373. bool param = lua_toboolean(L, 2) != 0;
  7374. inst->keepTextureData = param;
  7375. return 0;
  7376. }
  7377. static int Polycode_MaterialManager(lua_State *L) {
  7378. MaterialManager *inst = new MaterialManager();
  7379. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7380. *userdataPtr = (PolyBase*)inst;
  7381. luaL_getmetatable(L, "Polycode.MaterialManager");
  7382. lua_setmetatable(L, -2);
  7383. return 1;
  7384. }
  7385. static int Polycode_MaterialManager_Update(lua_State *L) {
  7386. luaL_checktype(L, 1, LUA_TUSERDATA);
  7387. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7388. luaL_checktype(L, 2, LUA_TNUMBER);
  7389. int elapsed = lua_tointeger(L, 2);
  7390. inst->Update(elapsed);
  7391. return 0;
  7392. }
  7393. static int Polycode_MaterialManager_createTexture(lua_State *L) {
  7394. luaL_checktype(L, 1, LUA_TUSERDATA);
  7395. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7396. luaL_checktype(L, 2, LUA_TNUMBER);
  7397. int width = lua_tointeger(L, 2);
  7398. luaL_checktype(L, 3, LUA_TNUMBER);
  7399. int height = lua_tointeger(L, 3);
  7400. luaL_checktype(L, 4, LUA_TUSERDATA);
  7401. char* imageData = (char*) *((PolyBase**)lua_touserdata(L, 4));
  7402. bool clamp;
  7403. if(lua_isboolean(L, 5)) {
  7404. clamp = lua_toboolean(L, 5) != 0;
  7405. } else {
  7406. clamp = true;
  7407. }
  7408. bool createMipmaps;
  7409. if(lua_isboolean(L, 6)) {
  7410. createMipmaps = lua_toboolean(L, 6) != 0;
  7411. } else {
  7412. createMipmaps = false;
  7413. }
  7414. int type;
  7415. if(lua_isnumber(L, 7)) {
  7416. type = lua_tointeger(L, 7);
  7417. } else {
  7418. type = Image :: IMAGE_RGBA;
  7419. }
  7420. PolyBase *ptrRetVal = (PolyBase*)inst->createTexture(width, height, imageData, clamp, createMipmaps, type);
  7421. if(ptrRetVal == NULL) {
  7422. lua_pushnil(L);
  7423. } else {
  7424. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7425. *userdataPtr = ptrRetVal;
  7426. }
  7427. return 1;
  7428. }
  7429. static int Polycode_MaterialManager_createNewTexture(lua_State *L) {
  7430. luaL_checktype(L, 1, LUA_TUSERDATA);
  7431. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7432. luaL_checktype(L, 2, LUA_TNUMBER);
  7433. int width = lua_tointeger(L, 2);
  7434. luaL_checktype(L, 3, LUA_TNUMBER);
  7435. int height = lua_tointeger(L, 3);
  7436. bool clamp;
  7437. if(lua_isboolean(L, 4)) {
  7438. clamp = lua_toboolean(L, 4) != 0;
  7439. } else {
  7440. clamp = true;
  7441. }
  7442. bool createMipmaps;
  7443. if(lua_isboolean(L, 5)) {
  7444. createMipmaps = lua_toboolean(L, 5) != 0;
  7445. } else {
  7446. createMipmaps = false;
  7447. }
  7448. int type;
  7449. if(lua_isnumber(L, 6)) {
  7450. type = lua_tointeger(L, 6);
  7451. } else {
  7452. type = Image :: IMAGE_RGBA;
  7453. }
  7454. PolyBase *ptrRetVal = (PolyBase*)inst->createNewTexture(width, height, clamp, createMipmaps, type);
  7455. if(ptrRetVal == NULL) {
  7456. lua_pushnil(L);
  7457. } else {
  7458. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7459. *userdataPtr = ptrRetVal;
  7460. }
  7461. return 1;
  7462. }
  7463. static int Polycode_MaterialManager_createTextureFromImage(lua_State *L) {
  7464. luaL_checktype(L, 1, LUA_TUSERDATA);
  7465. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7466. luaL_checktype(L, 2, LUA_TUSERDATA);
  7467. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  7468. bool clamp;
  7469. if(lua_isboolean(L, 3)) {
  7470. clamp = lua_toboolean(L, 3) != 0;
  7471. } else {
  7472. clamp = true;
  7473. }
  7474. bool createMipmaps;
  7475. if(lua_isboolean(L, 4)) {
  7476. createMipmaps = lua_toboolean(L, 4) != 0;
  7477. } else {
  7478. createMipmaps = false;
  7479. }
  7480. PolyBase *ptrRetVal = (PolyBase*)inst->createTextureFromImage(image, clamp, createMipmaps);
  7481. if(ptrRetVal == NULL) {
  7482. lua_pushnil(L);
  7483. } else {
  7484. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7485. *userdataPtr = ptrRetVal;
  7486. }
  7487. return 1;
  7488. }
  7489. static int Polycode_MaterialManager_createTextureFromFile(lua_State *L) {
  7490. luaL_checktype(L, 1, LUA_TUSERDATA);
  7491. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7492. luaL_checktype(L, 2, LUA_TSTRING);
  7493. String fileName = String(lua_tostring(L, 2));
  7494. bool clamp;
  7495. if(lua_isboolean(L, 3)) {
  7496. clamp = lua_toboolean(L, 3) != 0;
  7497. } else {
  7498. clamp = true;
  7499. }
  7500. bool createMipmaps;
  7501. if(lua_isboolean(L, 4)) {
  7502. createMipmaps = lua_toboolean(L, 4) != 0;
  7503. } else {
  7504. createMipmaps = false;
  7505. }
  7506. ResourcePool* resourcePool;
  7507. if(lua_isuserdata(L, 5)) {
  7508. resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 5));
  7509. } else {
  7510. resourcePool = NULL;
  7511. }
  7512. PolyBase *ptrRetVal = (PolyBase*)inst->createTextureFromFile(fileName, clamp, createMipmaps, resourcePool);
  7513. if(ptrRetVal == NULL) {
  7514. lua_pushnil(L);
  7515. } else {
  7516. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7517. *userdataPtr = ptrRetVal;
  7518. }
  7519. return 1;
  7520. }
  7521. static int Polycode_MaterialManager_deleteTexture(lua_State *L) {
  7522. luaL_checktype(L, 1, LUA_TUSERDATA);
  7523. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7524. luaL_checktype(L, 2, LUA_TUSERDATA);
  7525. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  7526. inst->deleteTexture(texture);
  7527. return 0;
  7528. }
  7529. static int Polycode_MaterialManager_reloadTextures(lua_State *L) {
  7530. luaL_checktype(L, 1, LUA_TUSERDATA);
  7531. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7532. inst->reloadTextures();
  7533. return 0;
  7534. }
  7535. static int Polycode_MaterialManager_reloadProgramsAndTextures(lua_State *L) {
  7536. luaL_checktype(L, 1, LUA_TUSERDATA);
  7537. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7538. inst->reloadProgramsAndTextures();
  7539. return 0;
  7540. }
  7541. static int Polycode_MaterialManager_reloadPrograms(lua_State *L) {
  7542. luaL_checktype(L, 1, LUA_TUSERDATA);
  7543. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7544. inst->reloadPrograms();
  7545. return 0;
  7546. }
  7547. static int Polycode_MaterialManager_getTextureByResourcePath(lua_State *L) {
  7548. luaL_checktype(L, 1, LUA_TUSERDATA);
  7549. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7550. luaL_checktype(L, 2, LUA_TSTRING);
  7551. String resourcePath = String(lua_tostring(L, 2));
  7552. PolyBase *ptrRetVal = (PolyBase*)inst->getTextureByResourcePath(resourcePath);
  7553. if(ptrRetVal == NULL) {
  7554. lua_pushnil(L);
  7555. } else {
  7556. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7557. *userdataPtr = ptrRetVal;
  7558. }
  7559. return 1;
  7560. }
  7561. static int Polycode_MaterialManager_createProgramFromFile(lua_State *L) {
  7562. luaL_checktype(L, 1, LUA_TUSERDATA);
  7563. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7564. luaL_checktype(L, 2, LUA_TSTRING);
  7565. String programPath = String(lua_tostring(L, 2));
  7566. PolyBase *ptrRetVal = (PolyBase*)inst->createProgramFromFile(programPath);
  7567. if(ptrRetVal == NULL) {
  7568. lua_pushnil(L);
  7569. } else {
  7570. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7571. *userdataPtr = ptrRetVal;
  7572. }
  7573. return 1;
  7574. }
  7575. static int Polycode_MaterialManager_loadMaterialLibraryIntoPool(lua_State *L) {
  7576. luaL_checktype(L, 1, LUA_TUSERDATA);
  7577. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7578. luaL_checktype(L, 2, LUA_TUSERDATA);
  7579. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7580. luaL_checktype(L, 3, LUA_TSTRING);
  7581. String materialFile = String(lua_tostring(L, 3));
  7582. inst->loadMaterialLibraryIntoPool(pool, materialFile);
  7583. return 0;
  7584. }
  7585. static int Polycode_MaterialManager_cubemapFromXMLNode(lua_State *L) {
  7586. luaL_checktype(L, 1, LUA_TUSERDATA);
  7587. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7588. luaL_checktype(L, 2, LUA_TUSERDATA);
  7589. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 2));
  7590. PolyBase *ptrRetVal = (PolyBase*)inst->cubemapFromXMLNode(node);
  7591. if(ptrRetVal == NULL) {
  7592. lua_pushnil(L);
  7593. } else {
  7594. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7595. *userdataPtr = ptrRetVal;
  7596. }
  7597. return 1;
  7598. }
  7599. static int Polycode_MaterialManager_materialFromXMLNode(lua_State *L) {
  7600. luaL_checktype(L, 1, LUA_TUSERDATA);
  7601. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7602. luaL_checktype(L, 2, LUA_TUSERDATA);
  7603. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7604. luaL_checktype(L, 3, LUA_TUSERDATA);
  7605. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  7606. PolyBase *ptrRetVal = (PolyBase*)inst->materialFromXMLNode(resourcePool, node);
  7607. if(ptrRetVal == NULL) {
  7608. lua_pushnil(L);
  7609. } else {
  7610. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7611. *userdataPtr = ptrRetVal;
  7612. }
  7613. return 1;
  7614. }
  7615. static int Polycode_MaterialManager_createMaterial(lua_State *L) {
  7616. luaL_checktype(L, 1, LUA_TUSERDATA);
  7617. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7618. luaL_checktype(L, 2, LUA_TUSERDATA);
  7619. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7620. luaL_checktype(L, 3, LUA_TSTRING);
  7621. String materialName = String(lua_tostring(L, 3));
  7622. luaL_checktype(L, 4, LUA_TSTRING);
  7623. String shaderName = String(lua_tostring(L, 4));
  7624. PolyBase *ptrRetVal = (PolyBase*)inst->createMaterial(resourcePool, materialName, shaderName);
  7625. if(ptrRetVal == NULL) {
  7626. lua_pushnil(L);
  7627. } else {
  7628. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7629. *userdataPtr = ptrRetVal;
  7630. }
  7631. return 1;
  7632. }
  7633. static int Polycode_MaterialManager_setShaderFromXMLNode(lua_State *L) {
  7634. luaL_checktype(L, 1, LUA_TUSERDATA);
  7635. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7636. luaL_checktype(L, 2, LUA_TUSERDATA);
  7637. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7638. luaL_checktype(L, 3, LUA_TUSERDATA);
  7639. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  7640. PolyBase *ptrRetVal = (PolyBase*)inst->setShaderFromXMLNode(resourcePool, node);
  7641. if(ptrRetVal == NULL) {
  7642. lua_pushnil(L);
  7643. } else {
  7644. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7645. *userdataPtr = ptrRetVal;
  7646. }
  7647. return 1;
  7648. }
  7649. static int Polycode_MaterialManager_createShaderFromXMLNode(lua_State *L) {
  7650. luaL_checktype(L, 1, LUA_TUSERDATA);
  7651. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7652. luaL_checktype(L, 2, LUA_TUSERDATA);
  7653. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7654. luaL_checktype(L, 3, LUA_TUSERDATA);
  7655. TiXmlNode* node = (TiXmlNode*) *((PolyBase**)lua_touserdata(L, 3));
  7656. PolyBase *ptrRetVal = (PolyBase*)inst->createShaderFromXMLNode(resourcePool, node);
  7657. if(ptrRetVal == NULL) {
  7658. lua_pushnil(L);
  7659. } else {
  7660. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7661. *userdataPtr = ptrRetVal;
  7662. }
  7663. return 1;
  7664. }
  7665. static int Polycode_MaterialManager_createShader(lua_State *L) {
  7666. luaL_checktype(L, 1, LUA_TUSERDATA);
  7667. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7668. luaL_checktype(L, 2, LUA_TUSERDATA);
  7669. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7670. luaL_checktype(L, 3, LUA_TSTRING);
  7671. String shaderType = String(lua_tostring(L, 3));
  7672. luaL_checktype(L, 4, LUA_TSTRING);
  7673. String name = String(lua_tostring(L, 4));
  7674. luaL_checktype(L, 5, LUA_TSTRING);
  7675. String vpName = String(lua_tostring(L, 5));
  7676. luaL_checktype(L, 6, LUA_TSTRING);
  7677. String fpName = String(lua_tostring(L, 6));
  7678. luaL_checktype(L, 7, LUA_TBOOLEAN);
  7679. bool screenShader = lua_toboolean(L, 7) != 0;
  7680. PolyBase *ptrRetVal = (PolyBase*)inst->createShader(resourcePool, shaderType, name, vpName, fpName, screenShader);
  7681. if(ptrRetVal == NULL) {
  7682. lua_pushnil(L);
  7683. } else {
  7684. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7685. *userdataPtr = ptrRetVal;
  7686. }
  7687. return 1;
  7688. }
  7689. static int Polycode_MaterialManager_loadMaterialsFromFile(lua_State *L) {
  7690. luaL_checktype(L, 1, LUA_TUSERDATA);
  7691. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7692. luaL_checktype(L, 2, LUA_TUSERDATA);
  7693. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7694. luaL_checktype(L, 3, LUA_TSTRING);
  7695. String fileName = String(lua_tostring(L, 3));
  7696. std::vector<Material*> retVector = inst->loadMaterialsFromFile(resourcePool, fileName);
  7697. lua_newtable(L);
  7698. for(int i=0; i < retVector.size(); i++) {
  7699. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7700. *userdataPtr = (PolyBase*)retVector[i];
  7701. lua_rawseti(L, -2, i+1);
  7702. }
  7703. return 1;
  7704. }
  7705. static int Polycode_MaterialManager_loadShadersFromFile(lua_State *L) {
  7706. luaL_checktype(L, 1, LUA_TUSERDATA);
  7707. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7708. luaL_checktype(L, 2, LUA_TUSERDATA);
  7709. ResourcePool* resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  7710. luaL_checktype(L, 3, LUA_TSTRING);
  7711. String fileName = String(lua_tostring(L, 3));
  7712. std::vector<Shader*> retVector = inst->loadShadersFromFile(resourcePool, fileName);
  7713. lua_newtable(L);
  7714. for(int i=0; i < retVector.size(); i++) {
  7715. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7716. *userdataPtr = (PolyBase*)retVector[i];
  7717. lua_rawseti(L, -2, i+1);
  7718. }
  7719. return 1;
  7720. }
  7721. static int Polycode_MaterialManager_loadCubemapsFromFile(lua_State *L) {
  7722. luaL_checktype(L, 1, LUA_TUSERDATA);
  7723. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7724. luaL_checktype(L, 2, LUA_TSTRING);
  7725. String fileName = String(lua_tostring(L, 2));
  7726. std::vector<Cubemap*> retVector = inst->loadCubemapsFromFile(fileName);
  7727. lua_newtable(L);
  7728. for(int i=0; i < retVector.size(); i++) {
  7729. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7730. *userdataPtr = (PolyBase*)retVector[i];
  7731. lua_rawseti(L, -2, i+1);
  7732. }
  7733. return 1;
  7734. }
  7735. static int Polycode_MaterialManager_setAnisotropyAmount(lua_State *L) {
  7736. luaL_checktype(L, 1, LUA_TUSERDATA);
  7737. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7738. luaL_checktype(L, 2, LUA_TNUMBER);
  7739. int anisotropy = lua_tointeger(L, 2);
  7740. inst->setAnisotropyAmount(anisotropy);
  7741. return 0;
  7742. }
  7743. static int Polycode_MaterialManager_setTextureFilteringMode(lua_State *L) {
  7744. luaL_checktype(L, 1, LUA_TUSERDATA);
  7745. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7746. luaL_checktype(L, 2, LUA_TNUMBER);
  7747. int textureFilteringMode = lua_tointeger(L, 2);
  7748. inst->setTextureFilteringMode(textureFilteringMode);
  7749. return 0;
  7750. }
  7751. static int Polycode_MaterialManager_getTextureFilteringMode(lua_State *L) {
  7752. luaL_checktype(L, 1, LUA_TUSERDATA);
  7753. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7754. lua_pushinteger(L, inst->getTextureFilteringMode());
  7755. return 1;
  7756. }
  7757. static int Polycode_MaterialManager_addMaterial(lua_State *L) {
  7758. luaL_checktype(L, 1, LUA_TUSERDATA);
  7759. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7760. luaL_checktype(L, 2, LUA_TUSERDATA);
  7761. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  7762. inst->addMaterial(material);
  7763. return 0;
  7764. }
  7765. static int Polycode_MaterialManager_addShader(lua_State *L) {
  7766. luaL_checktype(L, 1, LUA_TUSERDATA);
  7767. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7768. luaL_checktype(L, 2, LUA_TUSERDATA);
  7769. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  7770. inst->addShader(shader);
  7771. return 0;
  7772. }
  7773. static int Polycode_MaterialManager_getNumShaders(lua_State *L) {
  7774. luaL_checktype(L, 1, LUA_TUSERDATA);
  7775. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7776. lua_pushinteger(L, inst->getNumShaders());
  7777. return 1;
  7778. }
  7779. static int Polycode_MaterialManager_getShaderByIndex(lua_State *L) {
  7780. luaL_checktype(L, 1, LUA_TUSERDATA);
  7781. MaterialManager *inst = (MaterialManager*) *((PolyBase**)lua_touserdata(L, 1));
  7782. luaL_checktype(L, 2, LUA_TNUMBER);
  7783. int index = lua_tointeger(L, 2);
  7784. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderByIndex(index);
  7785. if(ptrRetVal == NULL) {
  7786. lua_pushnil(L);
  7787. } else {
  7788. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7789. *userdataPtr = ptrRetVal;
  7790. }
  7791. return 1;
  7792. }
  7793. static int Polycode_delete_MaterialManager(lua_State *L) {
  7794. luaL_checktype(L, 1, LUA_TUSERDATA);
  7795. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  7796. delete ((MaterialManager*) *inst);
  7797. *inst = NULL;
  7798. return 0;
  7799. }
  7800. static int Polycode_Matrix4(lua_State *L) {
  7801. Matrix4 *inst = new Matrix4();
  7802. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7803. *userdataPtr = (PolyBase*)inst;
  7804. luaL_getmetatable(L, "Polycode.Matrix4");
  7805. lua_setmetatable(L, -2);
  7806. return 1;
  7807. }
  7808. static int Polycode_Matrix4_identity(lua_State *L) {
  7809. luaL_checktype(L, 1, LUA_TUSERDATA);
  7810. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7811. inst->identity();
  7812. return 0;
  7813. }
  7814. static int Polycode_Matrix4_rotateVector(lua_State *L) {
  7815. luaL_checktype(L, 1, LUA_TUSERDATA);
  7816. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7817. luaL_checktype(L, 2, LUA_TUSERDATA);
  7818. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7819. Vector3 *retInst = new Vector3();
  7820. *retInst = inst->rotateVector(v2);
  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_Matrix4_getPosition(lua_State *L) {
  7828. luaL_checktype(L, 1, LUA_TUSERDATA);
  7829. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7830. Vector3 *retInst = new Vector3();
  7831. *retInst = inst->getPosition();
  7832. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7833. luaL_getmetatable(L, "Polycode.Vector3");
  7834. lua_setmetatable(L, -2);
  7835. *userdataPtr = (PolyBase*)retInst;
  7836. return 1;
  7837. }
  7838. static int Polycode_Matrix4_multiplyWithPerspective(lua_State *L) {
  7839. luaL_checktype(L, 1, LUA_TUSERDATA);
  7840. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7841. luaL_checktype(L, 2, LUA_TUSERDATA);
  7842. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7843. Vector3 *retInst = new Vector3();
  7844. *retInst = inst->multiplyWithPerspective(v2);
  7845. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7846. luaL_getmetatable(L, "Polycode.Vector3");
  7847. lua_setmetatable(L, -2);
  7848. *userdataPtr = (PolyBase*)retInst;
  7849. return 1;
  7850. }
  7851. static int Polycode_Matrix4_multVector3(lua_State *L) {
  7852. luaL_checktype(L, 1, LUA_TUSERDATA);
  7853. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7854. luaL_checktype(L, 2, LUA_TUSERDATA);
  7855. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7856. Vector3 *retInst = new Vector3();
  7857. *retInst = inst->multVector3(v2);
  7858. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7859. luaL_getmetatable(L, "Polycode.Vector3");
  7860. lua_setmetatable(L, -2);
  7861. *userdataPtr = (PolyBase*)retInst;
  7862. return 1;
  7863. }
  7864. static int Polycode_Matrix4_multVector4(lua_State *L) {
  7865. luaL_checktype(L, 1, LUA_TUSERDATA);
  7866. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7867. luaL_checktype(L, 2, LUA_TUSERDATA);
  7868. Vector4 v2 = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  7869. Vector4 *retInst = new Vector4();
  7870. *retInst = inst->multVector4(v2);
  7871. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7872. luaL_getmetatable(L, "Polycode.Vector4");
  7873. lua_setmetatable(L, -2);
  7874. *userdataPtr = (PolyBase*)retInst;
  7875. return 1;
  7876. }
  7877. static int Polycode_Matrix4_Translate(lua_State *L) {
  7878. luaL_checktype(L, 1, LUA_TUSERDATA);
  7879. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7880. luaL_checktype(L, 2, LUA_TNUMBER);
  7881. Number x = lua_tonumber(L, 2);
  7882. luaL_checktype(L, 3, LUA_TNUMBER);
  7883. Number y = lua_tonumber(L, 3);
  7884. luaL_checktype(L, 4, LUA_TNUMBER);
  7885. Number z = lua_tonumber(L, 4);
  7886. inst->Translate(x, y, z);
  7887. return 0;
  7888. }
  7889. static int Polycode_Matrix4_setPosition(lua_State *L) {
  7890. luaL_checktype(L, 1, LUA_TUSERDATA);
  7891. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7892. luaL_checktype(L, 2, LUA_TNUMBER);
  7893. Number x = lua_tonumber(L, 2);
  7894. luaL_checktype(L, 3, LUA_TNUMBER);
  7895. Number y = lua_tonumber(L, 3);
  7896. luaL_checktype(L, 4, LUA_TNUMBER);
  7897. Number z = lua_tonumber(L, 4);
  7898. inst->setPosition(x, y, z);
  7899. return 0;
  7900. }
  7901. static int Polycode_Matrix4_setScale(lua_State *L) {
  7902. luaL_checktype(L, 1, LUA_TUSERDATA);
  7903. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7904. luaL_checktype(L, 2, LUA_TUSERDATA);
  7905. Vector3 scale = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  7906. inst->setScale(scale);
  7907. return 0;
  7908. }
  7909. static int Polycode_Matrix4_getEulerAngles(lua_State *L) {
  7910. luaL_checktype(L, 1, LUA_TUSERDATA);
  7911. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7912. luaL_checktype(L, 2, LUA_TUSERDATA);
  7913. Number* ax = (Number*) *((PolyBase**)lua_touserdata(L, 2));
  7914. luaL_checktype(L, 3, LUA_TUSERDATA);
  7915. Number* ay = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  7916. luaL_checktype(L, 4, LUA_TUSERDATA);
  7917. Number* az = (Number*) *((PolyBase**)lua_touserdata(L, 4));
  7918. inst->getEulerAngles(ax, ay, az);
  7919. return 0;
  7920. }
  7921. static int Polycode_Matrix4_transpose(lua_State *L) {
  7922. luaL_checktype(L, 1, LUA_TUSERDATA);
  7923. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7924. Matrix4 *retInst = new Matrix4();
  7925. *retInst = inst->transpose();
  7926. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7927. luaL_getmetatable(L, "Polycode.Matrix4");
  7928. lua_setmetatable(L, -2);
  7929. *userdataPtr = (PolyBase*)retInst;
  7930. return 1;
  7931. }
  7932. static int Polycode_Matrix4_Inverse(lua_State *L) {
  7933. luaL_checktype(L, 1, LUA_TUSERDATA);
  7934. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7935. Matrix4 *retInst = new Matrix4();
  7936. *retInst = inst->Inverse();
  7937. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7938. luaL_getmetatable(L, "Polycode.Matrix4");
  7939. lua_setmetatable(L, -2);
  7940. *userdataPtr = (PolyBase*)retInst;
  7941. return 1;
  7942. }
  7943. static int Polycode_Matrix4_inverseAffine(lua_State *L) {
  7944. luaL_checktype(L, 1, LUA_TUSERDATA);
  7945. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7946. Matrix4 *retInst = new Matrix4();
  7947. *retInst = inst->inverseAffine();
  7948. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  7949. luaL_getmetatable(L, "Polycode.Matrix4");
  7950. lua_setmetatable(L, -2);
  7951. *userdataPtr = (PolyBase*)retInst;
  7952. return 1;
  7953. }
  7954. static int Polycode_Matrix4_determinant(lua_State *L) {
  7955. luaL_checktype(L, 1, LUA_TUSERDATA);
  7956. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7957. lua_pushnumber(L, inst->determinant());
  7958. return 1;
  7959. }
  7960. static int Polycode_Matrix4_generalDeterminant(lua_State *L) {
  7961. luaL_checktype(L, 1, LUA_TUSERDATA);
  7962. Number** a = (Number**) *((PolyBase**)lua_touserdata(L, 1));
  7963. luaL_checktype(L, 2, LUA_TNUMBER);
  7964. int n = lua_tointeger(L, 2);
  7965. lua_pushnumber(L, Matrix4::generalDeterminant(a, n));
  7966. return 1;
  7967. }
  7968. static int Polycode_Matrix4_setOrthoProjection(lua_State *L) {
  7969. luaL_checktype(L, 1, LUA_TUSERDATA);
  7970. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7971. luaL_checktype(L, 2, LUA_TNUMBER);
  7972. Number left = lua_tonumber(L, 2);
  7973. luaL_checktype(L, 3, LUA_TNUMBER);
  7974. Number right = lua_tonumber(L, 3);
  7975. luaL_checktype(L, 4, LUA_TNUMBER);
  7976. Number bottom = lua_tonumber(L, 4);
  7977. luaL_checktype(L, 5, LUA_TNUMBER);
  7978. Number top = lua_tonumber(L, 5);
  7979. luaL_checktype(L, 6, LUA_TNUMBER);
  7980. Number zNear = lua_tonumber(L, 6);
  7981. luaL_checktype(L, 7, LUA_TNUMBER);
  7982. Number zFar = lua_tonumber(L, 7);
  7983. inst->setOrthoProjection(left, right, bottom, top, zNear, zFar);
  7984. return 0;
  7985. }
  7986. static int Polycode_Matrix4_setProjectionFrustum(lua_State *L) {
  7987. luaL_checktype(L, 1, LUA_TUSERDATA);
  7988. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  7989. luaL_checktype(L, 2, LUA_TNUMBER);
  7990. Number left = lua_tonumber(L, 2);
  7991. luaL_checktype(L, 3, LUA_TNUMBER);
  7992. Number right = lua_tonumber(L, 3);
  7993. luaL_checktype(L, 4, LUA_TNUMBER);
  7994. Number bottom = lua_tonumber(L, 4);
  7995. luaL_checktype(L, 5, LUA_TNUMBER);
  7996. Number top = lua_tonumber(L, 5);
  7997. luaL_checktype(L, 6, LUA_TNUMBER);
  7998. Number zNear = lua_tonumber(L, 6);
  7999. luaL_checktype(L, 7, LUA_TNUMBER);
  8000. Number zFar = lua_tonumber(L, 7);
  8001. inst->setProjectionFrustum(left, right, bottom, top, zNear, zFar);
  8002. return 0;
  8003. }
  8004. static int Polycode_Matrix4_setProjection(lua_State *L) {
  8005. luaL_checktype(L, 1, LUA_TUSERDATA);
  8006. Matrix4 *inst = (Matrix4*) *((PolyBase**)lua_touserdata(L, 1));
  8007. luaL_checktype(L, 2, LUA_TNUMBER);
  8008. Number fov = lua_tonumber(L, 2);
  8009. luaL_checktype(L, 3, LUA_TNUMBER);
  8010. Number aspect = lua_tonumber(L, 3);
  8011. luaL_checktype(L, 4, LUA_TNUMBER);
  8012. Number zNear = lua_tonumber(L, 4);
  8013. luaL_checktype(L, 5, LUA_TNUMBER);
  8014. Number zFar = lua_tonumber(L, 5);
  8015. inst->setProjection(fov, aspect, zNear, zFar);
  8016. return 0;
  8017. }
  8018. static int Polycode_delete_Matrix4(lua_State *L) {
  8019. luaL_checktype(L, 1, LUA_TUSERDATA);
  8020. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8021. delete ((Matrix4*) *inst);
  8022. *inst = NULL;
  8023. return 0;
  8024. }
  8025. static int Polycode_Mesh_get_indexedMesh(lua_State *L) {
  8026. luaL_checktype(L, 1, LUA_TUSERDATA);
  8027. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8028. lua_pushboolean(L, inst->indexedMesh);
  8029. return 1;
  8030. }
  8031. static int Polycode_Mesh_set_indexedMesh(lua_State *L) {
  8032. luaL_checktype(L, 1, LUA_TUSERDATA);
  8033. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8034. bool param = lua_toboolean(L, 2) != 0;
  8035. inst->indexedMesh = param;
  8036. return 0;
  8037. }
  8038. static int Polycode_Mesh(lua_State *L) {
  8039. luaL_checktype(L, 1, LUA_TNUMBER);
  8040. int meshType = lua_tointeger(L, 1);
  8041. Mesh *inst = new Mesh(meshType);
  8042. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8043. *userdataPtr = (PolyBase*)inst;
  8044. luaL_getmetatable(L, "Polycode.Mesh");
  8045. lua_setmetatable(L, -2);
  8046. return 1;
  8047. }
  8048. static int Polycode_Mesh_MeshFromFileName(lua_State *L) {
  8049. luaL_checktype(L, 1, LUA_TSTRING);
  8050. String fileName = String(lua_tostring(L, 1));
  8051. PolyBase *ptrRetVal = (PolyBase*)Mesh::MeshFromFileName(fileName);
  8052. if(ptrRetVal == NULL) {
  8053. lua_pushnil(L);
  8054. } else {
  8055. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8056. *userdataPtr = ptrRetVal;
  8057. }
  8058. return 1;
  8059. }
  8060. static int Polycode_Mesh_loadMesh(lua_State *L) {
  8061. luaL_checktype(L, 1, LUA_TUSERDATA);
  8062. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8063. luaL_checktype(L, 2, LUA_TSTRING);
  8064. String fileName = String(lua_tostring(L, 2));
  8065. inst->loadMesh(fileName);
  8066. return 0;
  8067. }
  8068. static int Polycode_Mesh_clearMesh(lua_State *L) {
  8069. luaL_checktype(L, 1, LUA_TUSERDATA);
  8070. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8071. inst->clearMesh();
  8072. return 0;
  8073. }
  8074. static int Polycode_Mesh_saveToFile(lua_State *L) {
  8075. luaL_checktype(L, 1, LUA_TUSERDATA);
  8076. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8077. luaL_checktype(L, 2, LUA_TSTRING);
  8078. String fileName = String(lua_tostring(L, 2));
  8079. bool writeNormals;
  8080. if(lua_isboolean(L, 3)) {
  8081. writeNormals = lua_toboolean(L, 3) != 0;
  8082. } else {
  8083. writeNormals = true;
  8084. }
  8085. bool writeTangents;
  8086. if(lua_isboolean(L, 4)) {
  8087. writeTangents = lua_toboolean(L, 4) != 0;
  8088. } else {
  8089. writeTangents = true;
  8090. }
  8091. bool writeColors;
  8092. if(lua_isboolean(L, 5)) {
  8093. writeColors = lua_toboolean(L, 5) != 0;
  8094. } else {
  8095. writeColors = true;
  8096. }
  8097. bool writeBoneWeights;
  8098. if(lua_isboolean(L, 6)) {
  8099. writeBoneWeights = lua_toboolean(L, 6) != 0;
  8100. } else {
  8101. writeBoneWeights = true;
  8102. }
  8103. bool writeUVs;
  8104. if(lua_isboolean(L, 7)) {
  8105. writeUVs = lua_toboolean(L, 7) != 0;
  8106. } else {
  8107. writeUVs = true;
  8108. }
  8109. bool writeSecondaryUVs;
  8110. if(lua_isboolean(L, 8)) {
  8111. writeSecondaryUVs = lua_toboolean(L, 8) != 0;
  8112. } else {
  8113. writeSecondaryUVs = false;
  8114. }
  8115. inst->saveToFile(fileName, writeNormals, writeTangents, writeColors, writeBoneWeights, writeUVs, writeSecondaryUVs);
  8116. return 0;
  8117. }
  8118. static int Polycode_Mesh_loadFromFile(lua_State *L) {
  8119. luaL_checktype(L, 1, LUA_TUSERDATA);
  8120. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8121. luaL_checktype(L, 2, LUA_TUSERDATA);
  8122. CoreFile* inFile = (CoreFile*) *((PolyBase**)lua_touserdata(L, 2));
  8123. inst->loadFromFile(inFile);
  8124. return 0;
  8125. }
  8126. static int Polycode_Mesh_getVertexCount(lua_State *L) {
  8127. luaL_checktype(L, 1, LUA_TUSERDATA);
  8128. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8129. lua_pushinteger(L, inst->getVertexCount());
  8130. return 1;
  8131. }
  8132. static int Polycode_Mesh_createPlane(lua_State *L) {
  8133. luaL_checktype(L, 1, LUA_TUSERDATA);
  8134. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8135. luaL_checktype(L, 2, LUA_TNUMBER);
  8136. Number w = lua_tonumber(L, 2);
  8137. luaL_checktype(L, 3, LUA_TNUMBER);
  8138. Number h = lua_tonumber(L, 3);
  8139. Number tilingValue;
  8140. if(lua_isnumber(L, 4)) {
  8141. tilingValue = lua_tonumber(L, 4);
  8142. } else {
  8143. tilingValue = 1.0;
  8144. }
  8145. inst->createPlane(w, h, tilingValue);
  8146. return 0;
  8147. }
  8148. static int Polycode_Mesh_createVPlane(lua_State *L) {
  8149. luaL_checktype(L, 1, LUA_TUSERDATA);
  8150. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8151. luaL_checktype(L, 2, LUA_TNUMBER);
  8152. Number w = lua_tonumber(L, 2);
  8153. luaL_checktype(L, 3, LUA_TNUMBER);
  8154. Number h = lua_tonumber(L, 3);
  8155. Number tilingValue;
  8156. if(lua_isnumber(L, 4)) {
  8157. tilingValue = lua_tonumber(L, 4);
  8158. } else {
  8159. tilingValue = 1.0;
  8160. }
  8161. inst->createVPlane(w, h, tilingValue);
  8162. return 0;
  8163. }
  8164. static int Polycode_Mesh_createCircle(lua_State *L) {
  8165. luaL_checktype(L, 1, LUA_TUSERDATA);
  8166. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8167. luaL_checktype(L, 2, LUA_TNUMBER);
  8168. Number w = lua_tonumber(L, 2);
  8169. luaL_checktype(L, 3, LUA_TNUMBER);
  8170. Number h = lua_tonumber(L, 3);
  8171. luaL_checktype(L, 4, LUA_TNUMBER);
  8172. int numSegments = lua_tointeger(L, 4);
  8173. Number tilingValue;
  8174. if(lua_isnumber(L, 5)) {
  8175. tilingValue = lua_tonumber(L, 5);
  8176. } else {
  8177. tilingValue = 1.0;
  8178. }
  8179. inst->createCircle(w, h, numSegments, tilingValue);
  8180. return 0;
  8181. }
  8182. static int Polycode_Mesh_createLineCircle(lua_State *L) {
  8183. luaL_checktype(L, 1, LUA_TUSERDATA);
  8184. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8185. luaL_checktype(L, 2, LUA_TNUMBER);
  8186. Number w = lua_tonumber(L, 2);
  8187. luaL_checktype(L, 3, LUA_TNUMBER);
  8188. Number h = lua_tonumber(L, 3);
  8189. luaL_checktype(L, 4, LUA_TNUMBER);
  8190. int numSegments = lua_tointeger(L, 4);
  8191. Number tilingValue;
  8192. if(lua_isnumber(L, 5)) {
  8193. tilingValue = lua_tonumber(L, 5);
  8194. } else {
  8195. tilingValue = 1.0;
  8196. }
  8197. inst->createLineCircle(w, h, numSegments, tilingValue);
  8198. return 0;
  8199. }
  8200. static int Polycode_Mesh_createTorus(lua_State *L) {
  8201. luaL_checktype(L, 1, LUA_TUSERDATA);
  8202. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8203. luaL_checktype(L, 2, LUA_TNUMBER);
  8204. Number radius = lua_tonumber(L, 2);
  8205. luaL_checktype(L, 3, LUA_TNUMBER);
  8206. Number tubeRadius = lua_tonumber(L, 3);
  8207. luaL_checktype(L, 4, LUA_TNUMBER);
  8208. int segmentsW = lua_tointeger(L, 4);
  8209. luaL_checktype(L, 5, LUA_TNUMBER);
  8210. int segmentsH = lua_tointeger(L, 5);
  8211. Number tilingValue;
  8212. if(lua_isnumber(L, 6)) {
  8213. tilingValue = lua_tonumber(L, 6);
  8214. } else {
  8215. tilingValue = 1.0;
  8216. }
  8217. inst->createTorus(radius, tubeRadius, segmentsW, segmentsH, tilingValue);
  8218. return 0;
  8219. }
  8220. static int Polycode_Mesh_createBox(lua_State *L) {
  8221. luaL_checktype(L, 1, LUA_TUSERDATA);
  8222. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8223. luaL_checktype(L, 2, LUA_TNUMBER);
  8224. Number w = lua_tonumber(L, 2);
  8225. luaL_checktype(L, 3, LUA_TNUMBER);
  8226. Number d = lua_tonumber(L, 3);
  8227. luaL_checktype(L, 4, LUA_TNUMBER);
  8228. Number h = lua_tonumber(L, 4);
  8229. Number tilingValue;
  8230. if(lua_isnumber(L, 5)) {
  8231. tilingValue = lua_tonumber(L, 5);
  8232. } else {
  8233. tilingValue = 1.0;
  8234. }
  8235. inst->createBox(w, d, h, tilingValue);
  8236. return 0;
  8237. }
  8238. static int Polycode_Mesh_createSphere(lua_State *L) {
  8239. luaL_checktype(L, 1, LUA_TUSERDATA);
  8240. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8241. luaL_checktype(L, 2, LUA_TNUMBER);
  8242. Number radius = lua_tonumber(L, 2);
  8243. luaL_checktype(L, 3, LUA_TNUMBER);
  8244. int numRings = lua_tointeger(L, 3);
  8245. luaL_checktype(L, 4, LUA_TNUMBER);
  8246. int numSegments = lua_tointeger(L, 4);
  8247. Number tilingValue;
  8248. if(lua_isnumber(L, 5)) {
  8249. tilingValue = lua_tonumber(L, 5);
  8250. } else {
  8251. tilingValue = 1.0;
  8252. }
  8253. inst->createSphere(radius, numRings, numSegments, tilingValue);
  8254. return 0;
  8255. }
  8256. static int Polycode_Mesh_createIcosphere(lua_State *L) {
  8257. luaL_checktype(L, 1, LUA_TUSERDATA);
  8258. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8259. luaL_checktype(L, 2, LUA_TNUMBER);
  8260. Number radius = lua_tonumber(L, 2);
  8261. luaL_checktype(L, 3, LUA_TNUMBER);
  8262. int subdivisions = lua_tointeger(L, 3);
  8263. inst->createIcosphere(radius, subdivisions);
  8264. return 0;
  8265. }
  8266. static int Polycode_Mesh_createOctosphere(lua_State *L) {
  8267. luaL_checktype(L, 1, LUA_TUSERDATA);
  8268. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8269. luaL_checktype(L, 2, LUA_TNUMBER);
  8270. Number radius = lua_tonumber(L, 2);
  8271. luaL_checktype(L, 3, LUA_TNUMBER);
  8272. int subdivisions = lua_tointeger(L, 3);
  8273. inst->createOctosphere(radius, subdivisions);
  8274. return 0;
  8275. }
  8276. static int Polycode_Mesh_createCylinder(lua_State *L) {
  8277. luaL_checktype(L, 1, LUA_TUSERDATA);
  8278. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8279. luaL_checktype(L, 2, LUA_TNUMBER);
  8280. Number height = lua_tonumber(L, 2);
  8281. luaL_checktype(L, 3, LUA_TNUMBER);
  8282. Number radius = lua_tonumber(L, 3);
  8283. luaL_checktype(L, 4, LUA_TNUMBER);
  8284. int numSegments = lua_tointeger(L, 4);
  8285. bool capped;
  8286. if(lua_isboolean(L, 5)) {
  8287. capped = lua_toboolean(L, 5) != 0;
  8288. } else {
  8289. capped = true;
  8290. }
  8291. Number tilingValue;
  8292. if(lua_isnumber(L, 6)) {
  8293. tilingValue = lua_tonumber(L, 6);
  8294. } else {
  8295. tilingValue = 1.0;
  8296. }
  8297. inst->createCylinder(height, radius, numSegments, capped, tilingValue);
  8298. return 0;
  8299. }
  8300. static int Polycode_Mesh_createCone(lua_State *L) {
  8301. luaL_checktype(L, 1, LUA_TUSERDATA);
  8302. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8303. luaL_checktype(L, 2, LUA_TNUMBER);
  8304. Number height = lua_tonumber(L, 2);
  8305. luaL_checktype(L, 3, LUA_TNUMBER);
  8306. Number radius = lua_tonumber(L, 3);
  8307. luaL_checktype(L, 4, LUA_TNUMBER);
  8308. int numSegments = lua_tointeger(L, 4);
  8309. Number tilingValue;
  8310. if(lua_isnumber(L, 5)) {
  8311. tilingValue = lua_tonumber(L, 5);
  8312. } else {
  8313. tilingValue = 1.0;
  8314. }
  8315. inst->createCone(height, radius, numSegments, tilingValue);
  8316. return 0;
  8317. }
  8318. static int Polycode_Mesh_recenterMesh(lua_State *L) {
  8319. luaL_checktype(L, 1, LUA_TUSERDATA);
  8320. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8321. Vector3 *retInst = new Vector3();
  8322. *retInst = inst->recenterMesh();
  8323. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8324. luaL_getmetatable(L, "Polycode.Vector3");
  8325. lua_setmetatable(L, -2);
  8326. *userdataPtr = (PolyBase*)retInst;
  8327. return 1;
  8328. }
  8329. static int Polycode_Mesh_setVertexAtOffset(lua_State *L) {
  8330. luaL_checktype(L, 1, LUA_TUSERDATA);
  8331. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8332. luaL_checktype(L, 2, LUA_TNUMBER);
  8333. int offset = lua_tointeger(L, 2);
  8334. luaL_checktype(L, 3, LUA_TNUMBER);
  8335. Number x = lua_tonumber(L, 3);
  8336. luaL_checktype(L, 4, LUA_TNUMBER);
  8337. Number y = lua_tonumber(L, 4);
  8338. luaL_checktype(L, 5, LUA_TNUMBER);
  8339. Number z = lua_tonumber(L, 5);
  8340. inst->setVertexAtOffset(offset, x, y, z);
  8341. return 0;
  8342. }
  8343. static int Polycode_Mesh_addVertexWithUVAndNormal(lua_State *L) {
  8344. luaL_checktype(L, 1, LUA_TUSERDATA);
  8345. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8346. luaL_checktype(L, 2, LUA_TNUMBER);
  8347. Number x = lua_tonumber(L, 2);
  8348. luaL_checktype(L, 3, LUA_TNUMBER);
  8349. Number y = lua_tonumber(L, 3);
  8350. luaL_checktype(L, 4, LUA_TNUMBER);
  8351. Number z = lua_tonumber(L, 4);
  8352. luaL_checktype(L, 5, LUA_TNUMBER);
  8353. Number u = lua_tonumber(L, 5);
  8354. luaL_checktype(L, 6, LUA_TNUMBER);
  8355. Number v = lua_tonumber(L, 6);
  8356. luaL_checktype(L, 7, LUA_TNUMBER);
  8357. Number nx = lua_tonumber(L, 7);
  8358. luaL_checktype(L, 8, LUA_TNUMBER);
  8359. Number ny = lua_tonumber(L, 8);
  8360. luaL_checktype(L, 9, LUA_TNUMBER);
  8361. Number nz = lua_tonumber(L, 9);
  8362. inst->addVertexWithUVAndNormal(x, y, z, u, v, nx, ny, nz);
  8363. return 0;
  8364. }
  8365. static int Polycode_Mesh_addTexCoord(lua_State *L) {
  8366. luaL_checktype(L, 1, LUA_TUSERDATA);
  8367. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8368. luaL_checktype(L, 2, LUA_TNUMBER);
  8369. Number u = lua_tonumber(L, 2);
  8370. luaL_checktype(L, 3, LUA_TNUMBER);
  8371. Number v = lua_tonumber(L, 3);
  8372. inst->addTexCoord(u, v);
  8373. return 0;
  8374. }
  8375. static int Polycode_Mesh_addTexCoord2(lua_State *L) {
  8376. luaL_checktype(L, 1, LUA_TUSERDATA);
  8377. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8378. luaL_checktype(L, 2, LUA_TNUMBER);
  8379. Number u = lua_tonumber(L, 2);
  8380. luaL_checktype(L, 3, LUA_TNUMBER);
  8381. Number v = lua_tonumber(L, 3);
  8382. inst->addTexCoord2(u, v);
  8383. return 0;
  8384. }
  8385. static int Polycode_Mesh_addTangent(lua_State *L) {
  8386. luaL_checktype(L, 1, LUA_TUSERDATA);
  8387. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8388. luaL_checktype(L, 2, LUA_TNUMBER);
  8389. Number x = lua_tonumber(L, 2);
  8390. luaL_checktype(L, 3, LUA_TNUMBER);
  8391. Number y = lua_tonumber(L, 3);
  8392. luaL_checktype(L, 4, LUA_TNUMBER);
  8393. Number z = lua_tonumber(L, 4);
  8394. inst->addTangent(x, y, z);
  8395. return 0;
  8396. }
  8397. static int Polycode_Mesh_addVertexWithUV(lua_State *L) {
  8398. luaL_checktype(L, 1, LUA_TUSERDATA);
  8399. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8400. luaL_checktype(L, 2, LUA_TNUMBER);
  8401. Number x = lua_tonumber(L, 2);
  8402. luaL_checktype(L, 3, LUA_TNUMBER);
  8403. Number y = lua_tonumber(L, 3);
  8404. luaL_checktype(L, 4, LUA_TNUMBER);
  8405. Number z = lua_tonumber(L, 4);
  8406. luaL_checktype(L, 5, LUA_TNUMBER);
  8407. Number u = lua_tonumber(L, 5);
  8408. luaL_checktype(L, 6, LUA_TNUMBER);
  8409. Number v = lua_tonumber(L, 6);
  8410. inst->addVertexWithUV(x, y, z, u, v);
  8411. return 0;
  8412. }
  8413. static int Polycode_Mesh_addVertex(lua_State *L) {
  8414. luaL_checktype(L, 1, LUA_TUSERDATA);
  8415. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8416. luaL_checktype(L, 2, LUA_TNUMBER);
  8417. Number x = lua_tonumber(L, 2);
  8418. luaL_checktype(L, 3, LUA_TNUMBER);
  8419. Number y = lua_tonumber(L, 3);
  8420. luaL_checktype(L, 4, LUA_TNUMBER);
  8421. Number z = lua_tonumber(L, 4);
  8422. inst->addVertex(x, y, z);
  8423. return 0;
  8424. }
  8425. static int Polycode_Mesh_addNormal(lua_State *L) {
  8426. luaL_checktype(L, 1, LUA_TUSERDATA);
  8427. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8428. luaL_checktype(L, 2, LUA_TNUMBER);
  8429. Number nx = lua_tonumber(L, 2);
  8430. luaL_checktype(L, 3, LUA_TNUMBER);
  8431. Number ny = lua_tonumber(L, 3);
  8432. luaL_checktype(L, 4, LUA_TNUMBER);
  8433. Number nz = lua_tonumber(L, 4);
  8434. inst->addNormal(nx, ny, nz);
  8435. return 0;
  8436. }
  8437. static int Polycode_Mesh_addBoneAssignments(lua_State *L) {
  8438. luaL_checktype(L, 1, LUA_TUSERDATA);
  8439. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8440. luaL_checktype(L, 2, LUA_TNUMBER);
  8441. Number b1Weight = lua_tonumber(L, 2);
  8442. luaL_checktype(L, 3, LUA_TNUMBER);
  8443. int b1Index = lua_tointeger(L, 3);
  8444. luaL_checktype(L, 4, LUA_TNUMBER);
  8445. Number b2Weight = lua_tonumber(L, 4);
  8446. luaL_checktype(L, 5, LUA_TNUMBER);
  8447. int b2Index = lua_tointeger(L, 5);
  8448. luaL_checktype(L, 6, LUA_TNUMBER);
  8449. Number b3Weight = lua_tonumber(L, 6);
  8450. luaL_checktype(L, 7, LUA_TNUMBER);
  8451. int b3Index = lua_tointeger(L, 7);
  8452. luaL_checktype(L, 8, LUA_TNUMBER);
  8453. Number b4Weight = lua_tonumber(L, 8);
  8454. luaL_checktype(L, 9, LUA_TNUMBER);
  8455. int b4Index = lua_tointeger(L, 9);
  8456. inst->addBoneAssignments(b1Weight, b1Index, b2Weight, b2Index, b3Weight, b3Index, b4Weight, b4Index);
  8457. return 0;
  8458. }
  8459. static int Polycode_Mesh_addColor(lua_State *L) {
  8460. luaL_checktype(L, 1, LUA_TUSERDATA);
  8461. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8462. luaL_checktype(L, 2, LUA_TNUMBER);
  8463. Number r = lua_tonumber(L, 2);
  8464. luaL_checktype(L, 3, LUA_TNUMBER);
  8465. Number g = lua_tonumber(L, 3);
  8466. luaL_checktype(L, 4, LUA_TNUMBER);
  8467. Number b = lua_tonumber(L, 4);
  8468. luaL_checktype(L, 5, LUA_TNUMBER);
  8469. Number a = lua_tonumber(L, 5);
  8470. inst->addColor(r, g, b, a);
  8471. return 0;
  8472. }
  8473. static int Polycode_Mesh_getVertexPosition(lua_State *L) {
  8474. luaL_checktype(L, 1, LUA_TUSERDATA);
  8475. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8476. luaL_checktype(L, 2, LUA_TNUMBER);
  8477. int vertexOffset = lua_tointeger(L, 2);
  8478. Vector3 *retInst = new Vector3();
  8479. *retInst = inst->getVertexPosition(vertexOffset);
  8480. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8481. luaL_getmetatable(L, "Polycode.Vector3");
  8482. lua_setmetatable(L, -2);
  8483. *userdataPtr = (PolyBase*)retInst;
  8484. return 1;
  8485. }
  8486. static int Polycode_Mesh_getVertexPositionAtIndex(lua_State *L) {
  8487. luaL_checktype(L, 1, LUA_TUSERDATA);
  8488. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8489. luaL_checktype(L, 2, LUA_TNUMBER);
  8490. int index = lua_tointeger(L, 2);
  8491. Vector3 *retInst = new Vector3();
  8492. *retInst = inst->getVertexPositionAtIndex(index);
  8493. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8494. luaL_getmetatable(L, "Polycode.Vector3");
  8495. lua_setmetatable(L, -2);
  8496. *userdataPtr = (PolyBase*)retInst;
  8497. return 1;
  8498. }
  8499. static int Polycode_Mesh_getVertexTexCoord(lua_State *L) {
  8500. luaL_checktype(L, 1, LUA_TUSERDATA);
  8501. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8502. luaL_checktype(L, 2, LUA_TNUMBER);
  8503. int vertexOffset = lua_tointeger(L, 2);
  8504. Vector2 *retInst = new Vector2();
  8505. *retInst = inst->getVertexTexCoord(vertexOffset);
  8506. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8507. luaL_getmetatable(L, "Polycode.Vector2");
  8508. lua_setmetatable(L, -2);
  8509. *userdataPtr = (PolyBase*)retInst;
  8510. return 1;
  8511. }
  8512. static int Polycode_Mesh_getVertexTexCoordAtIndex(lua_State *L) {
  8513. luaL_checktype(L, 1, LUA_TUSERDATA);
  8514. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8515. luaL_checktype(L, 2, LUA_TNUMBER);
  8516. int index = lua_tointeger(L, 2);
  8517. Vector2 *retInst = new Vector2();
  8518. *retInst = inst->getVertexTexCoordAtIndex(index);
  8519. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8520. luaL_getmetatable(L, "Polycode.Vector2");
  8521. lua_setmetatable(L, -2);
  8522. *userdataPtr = (PolyBase*)retInst;
  8523. return 1;
  8524. }
  8525. static int Polycode_Mesh_Copy(lua_State *L) {
  8526. luaL_checktype(L, 1, LUA_TUSERDATA);
  8527. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8528. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  8529. if(ptrRetVal == NULL) {
  8530. lua_pushnil(L);
  8531. } else {
  8532. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8533. *userdataPtr = ptrRetVal;
  8534. }
  8535. return 1;
  8536. }
  8537. static int Polycode_Mesh_getRadius(lua_State *L) {
  8538. luaL_checktype(L, 1, LUA_TUSERDATA);
  8539. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8540. lua_pushnumber(L, inst->getRadius());
  8541. return 1;
  8542. }
  8543. static int Polycode_Mesh_calculateNormals(lua_State *L) {
  8544. luaL_checktype(L, 1, LUA_TUSERDATA);
  8545. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8546. inst->calculateNormals();
  8547. return 0;
  8548. }
  8549. static int Polycode_Mesh_calculateTangents(lua_State *L) {
  8550. luaL_checktype(L, 1, LUA_TUSERDATA);
  8551. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8552. inst->calculateTangents();
  8553. return 0;
  8554. }
  8555. static int Polycode_Mesh_getMeshType(lua_State *L) {
  8556. luaL_checktype(L, 1, LUA_TUSERDATA);
  8557. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8558. lua_pushinteger(L, inst->getMeshType());
  8559. return 1;
  8560. }
  8561. static int Polycode_Mesh_setMeshType(lua_State *L) {
  8562. luaL_checktype(L, 1, LUA_TUSERDATA);
  8563. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8564. luaL_checktype(L, 2, LUA_TNUMBER);
  8565. int newType = lua_tointeger(L, 2);
  8566. inst->setMeshType(newType);
  8567. return 0;
  8568. }
  8569. static int Polycode_Mesh_getIndexGroupSize(lua_State *L) {
  8570. luaL_checktype(L, 1, LUA_TUSERDATA);
  8571. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8572. lua_pushinteger(L, inst->getIndexGroupSize());
  8573. return 1;
  8574. }
  8575. static int Polycode_Mesh_calculateBBox(lua_State *L) {
  8576. luaL_checktype(L, 1, LUA_TUSERDATA);
  8577. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8578. Vector3 *retInst = new Vector3();
  8579. *retInst = inst->calculateBBox();
  8580. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8581. luaL_getmetatable(L, "Polycode.Vector3");
  8582. lua_setmetatable(L, -2);
  8583. *userdataPtr = (PolyBase*)retInst;
  8584. return 1;
  8585. }
  8586. static int Polycode_Mesh_hasVertexBuffer(lua_State *L) {
  8587. luaL_checktype(L, 1, LUA_TUSERDATA);
  8588. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8589. lua_pushboolean(L, inst->hasVertexBuffer());
  8590. return 1;
  8591. }
  8592. static int Polycode_Mesh_addIndexedFace(lua_State *L) {
  8593. luaL_checktype(L, 1, LUA_TUSERDATA);
  8594. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8595. luaL_checktype(L, 2, LUA_TNUMBER);
  8596. int i1 = lua_tointeger(L, 2);
  8597. luaL_checktype(L, 3, LUA_TNUMBER);
  8598. int i2 = lua_tointeger(L, 3);
  8599. inst->addIndexedFace(i1, i2);
  8600. return 0;
  8601. }
  8602. static int Polycode_Mesh_addIndex(lua_State *L) {
  8603. luaL_checktype(L, 1, LUA_TUSERDATA);
  8604. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8605. luaL_checktype(L, 2, LUA_TNUMBER);
  8606. int index = lua_tointeger(L, 2);
  8607. inst->addIndex(index);
  8608. return 0;
  8609. }
  8610. static int Polycode_Mesh_removeVertexRange(lua_State *L) {
  8611. luaL_checktype(L, 1, LUA_TUSERDATA);
  8612. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8613. luaL_checktype(L, 2, LUA_TNUMBER);
  8614. int beginRemoveVertex = lua_tointeger(L, 2);
  8615. int vertexRemovalCount;
  8616. if(lua_isnumber(L, 3)) {
  8617. vertexRemovalCount = lua_tointeger(L, 3);
  8618. } else {
  8619. vertexRemovalCount = 3;
  8620. }
  8621. inst->removeVertexRange(beginRemoveVertex, vertexRemovalCount);
  8622. return 0;
  8623. }
  8624. static int Polycode_Mesh_removeFace(lua_State *L) {
  8625. luaL_checktype(L, 1, LUA_TUSERDATA);
  8626. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8627. luaL_checktype(L, 2, LUA_TNUMBER);
  8628. int faceIndex = lua_tointeger(L, 2);
  8629. inst->removeFace(faceIndex);
  8630. return 0;
  8631. }
  8632. static int Polycode_Mesh_removeUnusedVertices(lua_State *L) {
  8633. luaL_checktype(L, 1, LUA_TUSERDATA);
  8634. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8635. lua_pushinteger(L, inst->removeUnusedVertices());
  8636. return 1;
  8637. }
  8638. static int Polycode_Mesh_getIndexCount(lua_State *L) {
  8639. luaL_checktype(L, 1, LUA_TUSERDATA);
  8640. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8641. lua_pushinteger(L, inst->getIndexCount());
  8642. return 1;
  8643. }
  8644. static int Polycode_Mesh_subdivideToRadius(lua_State *L) {
  8645. luaL_checktype(L, 1, LUA_TUSERDATA);
  8646. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8647. luaL_checktype(L, 2, LUA_TNUMBER);
  8648. Number radius = lua_tonumber(L, 2);
  8649. luaL_checktype(L, 3, LUA_TNUMBER);
  8650. int subdivisions = lua_tointeger(L, 3);
  8651. inst->subdivideToRadius(radius, subdivisions);
  8652. return 0;
  8653. }
  8654. static int Polycode_Mesh_calculateFaceTangent(lua_State *L) {
  8655. luaL_checktype(L, 1, LUA_TUSERDATA);
  8656. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  8657. luaL_checktype(L, 2, LUA_TUSERDATA);
  8658. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  8659. luaL_checktype(L, 3, LUA_TUSERDATA);
  8660. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  8661. luaL_checktype(L, 4, LUA_TUSERDATA);
  8662. Vector2 texCoord1 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 4));
  8663. luaL_checktype(L, 5, LUA_TUSERDATA);
  8664. Vector2 texCoord2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 5));
  8665. luaL_checktype(L, 6, LUA_TUSERDATA);
  8666. Vector2 texCoord3 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 6));
  8667. Vector3 *retInst = new Vector3();
  8668. *retInst = Mesh::calculateFaceTangent(v1, v2, v3, texCoord1, texCoord2, texCoord3);
  8669. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8670. luaL_getmetatable(L, "Polycode.Vector3");
  8671. lua_setmetatable(L, -2);
  8672. *userdataPtr = (PolyBase*)retInst;
  8673. return 1;
  8674. }
  8675. static int Polycode_Mesh_saveAsOBJ(lua_State *L) {
  8676. luaL_checktype(L, 1, LUA_TUSERDATA);
  8677. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8678. luaL_checktype(L, 2, LUA_TSTRING);
  8679. String fileName = String(lua_tostring(L, 2));
  8680. inst->saveAsOBJ(fileName);
  8681. return 0;
  8682. }
  8683. static int Polycode_Mesh_normalizeBoneWeights(lua_State *L) {
  8684. luaL_checktype(L, 1, LUA_TUSERDATA);
  8685. Mesh *inst = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  8686. inst->normalizeBoneWeights();
  8687. return 0;
  8688. }
  8689. static int Polycode_delete_Mesh(lua_State *L) {
  8690. luaL_checktype(L, 1, LUA_TUSERDATA);
  8691. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8692. delete ((Mesh*) *inst);
  8693. *inst = NULL;
  8694. return 0;
  8695. }
  8696. static int Polycode_ObjectEntry_get_type(lua_State *L) {
  8697. luaL_checktype(L, 1, LUA_TUSERDATA);
  8698. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8699. lua_pushinteger(L, inst->type);
  8700. return 1;
  8701. }
  8702. static int Polycode_ObjectEntry_get_name(lua_State *L) {
  8703. luaL_checktype(L, 1, LUA_TUSERDATA);
  8704. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8705. lua_pushstring(L, inst->name.c_str());
  8706. return 1;
  8707. }
  8708. static int Polycode_ObjectEntry_get_NumberVal(lua_State *L) {
  8709. luaL_checktype(L, 1, LUA_TUSERDATA);
  8710. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8711. lua_pushnumber(L, inst->NumberVal);
  8712. return 1;
  8713. }
  8714. static int Polycode_ObjectEntry_get_intVal(lua_State *L) {
  8715. luaL_checktype(L, 1, LUA_TUSERDATA);
  8716. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8717. lua_pushinteger(L, inst->intVal);
  8718. return 1;
  8719. }
  8720. static int Polycode_ObjectEntry_get_stringVal(lua_State *L) {
  8721. luaL_checktype(L, 1, LUA_TUSERDATA);
  8722. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8723. lua_pushstring(L, inst->stringVal.c_str());
  8724. return 1;
  8725. }
  8726. static int Polycode_ObjectEntry_get_boolVal(lua_State *L) {
  8727. luaL_checktype(L, 1, LUA_TUSERDATA);
  8728. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8729. lua_pushboolean(L, inst->boolVal);
  8730. return 1;
  8731. }
  8732. static int Polycode_ObjectEntry_get_length(lua_State *L) {
  8733. luaL_checktype(L, 1, LUA_TUSERDATA);
  8734. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8735. lua_pushinteger(L, inst->length);
  8736. return 1;
  8737. }
  8738. static int Polycode_ObjectEntry_set_type(lua_State *L) {
  8739. luaL_checktype(L, 1, LUA_TUSERDATA);
  8740. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8741. int param = lua_tointeger(L, 2);
  8742. inst->type = param;
  8743. return 0;
  8744. }
  8745. static int Polycode_ObjectEntry_set_name(lua_State *L) {
  8746. luaL_checktype(L, 1, LUA_TUSERDATA);
  8747. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8748. String param = lua_tostring(L, 2);
  8749. inst->name = param;
  8750. return 0;
  8751. }
  8752. static int Polycode_ObjectEntry_set_NumberVal(lua_State *L) {
  8753. luaL_checktype(L, 1, LUA_TUSERDATA);
  8754. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8755. Number param = lua_tonumber(L, 2);
  8756. inst->NumberVal = param;
  8757. return 0;
  8758. }
  8759. static int Polycode_ObjectEntry_set_intVal(lua_State *L) {
  8760. luaL_checktype(L, 1, LUA_TUSERDATA);
  8761. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8762. int param = lua_tointeger(L, 2);
  8763. inst->intVal = param;
  8764. return 0;
  8765. }
  8766. static int Polycode_ObjectEntry_set_stringVal(lua_State *L) {
  8767. luaL_checktype(L, 1, LUA_TUSERDATA);
  8768. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8769. String param = lua_tostring(L, 2);
  8770. inst->stringVal = param;
  8771. return 0;
  8772. }
  8773. static int Polycode_ObjectEntry_set_boolVal(lua_State *L) {
  8774. luaL_checktype(L, 1, LUA_TUSERDATA);
  8775. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8776. bool param = lua_toboolean(L, 2) != 0;
  8777. inst->boolVal = param;
  8778. return 0;
  8779. }
  8780. static int Polycode_ObjectEntry_set_length(lua_State *L) {
  8781. luaL_checktype(L, 1, LUA_TUSERDATA);
  8782. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8783. int param = lua_tointeger(L, 2);
  8784. inst->length = param;
  8785. return 0;
  8786. }
  8787. static int Polycode_ObjectEntry(lua_State *L) {
  8788. ObjectEntry *inst = new ObjectEntry();
  8789. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8790. *userdataPtr = (PolyBase*)inst;
  8791. luaL_getmetatable(L, "Polycode.ObjectEntry");
  8792. lua_setmetatable(L, -2);
  8793. return 1;
  8794. }
  8795. static int Polycode_ObjectEntry_readNumber(lua_State *L) {
  8796. luaL_checktype(L, 1, LUA_TUSERDATA);
  8797. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8798. luaL_checktype(L, 2, LUA_TSTRING);
  8799. String key = String(lua_tostring(L, 2));
  8800. luaL_checktype(L, 3, LUA_TUSERDATA);
  8801. Number* out = (Number*) *((PolyBase**)lua_touserdata(L, 3));
  8802. lua_pushboolean(L, inst->readNumber(key, out));
  8803. return 1;
  8804. }
  8805. static int Polycode_ObjectEntry_readString(lua_State *L) {
  8806. luaL_checktype(L, 1, LUA_TUSERDATA);
  8807. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8808. luaL_checktype(L, 2, LUA_TSTRING);
  8809. String key = String(lua_tostring(L, 2));
  8810. luaL_checktype(L, 3, LUA_TUSERDATA);
  8811. String* out = (String*) *((PolyBase**)lua_touserdata(L, 3));
  8812. lua_pushboolean(L, inst->readString(key, out));
  8813. return 1;
  8814. }
  8815. static int Polycode_ObjectEntry_readBool(lua_State *L) {
  8816. luaL_checktype(L, 1, LUA_TUSERDATA);
  8817. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8818. luaL_checktype(L, 2, LUA_TSTRING);
  8819. String key = String(lua_tostring(L, 2));
  8820. luaL_checktype(L, 3, LUA_TUSERDATA);
  8821. bool* out = (bool*) *((PolyBase**)lua_touserdata(L, 3));
  8822. lua_pushboolean(L, inst->readBool(key, out));
  8823. return 1;
  8824. }
  8825. static int Polycode_ObjectEntry_addChild(lua_State *L) {
  8826. luaL_checktype(L, 1, LUA_TUSERDATA);
  8827. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8828. luaL_checktype(L, 2, LUA_TSTRING);
  8829. String name = String(lua_tostring(L, 2));
  8830. PolyBase *ptrRetVal = (PolyBase*)inst->addChild(name);
  8831. if(ptrRetVal == NULL) {
  8832. lua_pushnil(L);
  8833. } else {
  8834. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8835. *userdataPtr = ptrRetVal;
  8836. }
  8837. return 1;
  8838. }
  8839. static int Polycode_ObjectEntry_getTypedName(lua_State *L) {
  8840. luaL_checktype(L, 1, LUA_TUSERDATA);
  8841. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8842. lua_pushstring(L, inst->getTypedName().c_str());
  8843. return 1;
  8844. }
  8845. static int Polycode_ObjectEntry_setTypedName(lua_State *L) {
  8846. luaL_checktype(L, 1, LUA_TUSERDATA);
  8847. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8848. luaL_checktype(L, 2, LUA_TSTRING);
  8849. String str = String(lua_tostring(L, 2));
  8850. inst->setTypedName(str);
  8851. return 0;
  8852. }
  8853. static int Polycode_ObjectEntry_Clear(lua_State *L) {
  8854. luaL_checktype(L, 1, LUA_TUSERDATA);
  8855. ObjectEntry *inst = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 1));
  8856. inst->Clear();
  8857. return 0;
  8858. }
  8859. static int Polycode_delete_ObjectEntry(lua_State *L) {
  8860. luaL_checktype(L, 1, LUA_TUSERDATA);
  8861. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8862. delete ((ObjectEntry*) *inst);
  8863. *inst = NULL;
  8864. return 0;
  8865. }
  8866. static int Polycode_BinaryObjectReader_get_success(lua_State *L) {
  8867. luaL_checktype(L, 1, LUA_TUSERDATA);
  8868. BinaryObjectReader *inst = (BinaryObjectReader*) *((PolyBase**)lua_touserdata(L, 1));
  8869. lua_pushboolean(L, inst->success);
  8870. return 1;
  8871. }
  8872. static int Polycode_BinaryObjectReader_set_success(lua_State *L) {
  8873. luaL_checktype(L, 1, LUA_TUSERDATA);
  8874. BinaryObjectReader *inst = (BinaryObjectReader*) *((PolyBase**)lua_touserdata(L, 1));
  8875. bool param = lua_toboolean(L, 2) != 0;
  8876. inst->success = param;
  8877. return 0;
  8878. }
  8879. static int Polycode_BinaryObjectReader(lua_State *L) {
  8880. luaL_checktype(L, 1, LUA_TSTRING);
  8881. String fileName = String(lua_tostring(L, 1));
  8882. luaL_checktype(L, 2, LUA_TUSERDATA);
  8883. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 2));
  8884. BinaryObjectReader *inst = new BinaryObjectReader(fileName, object);
  8885. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8886. *userdataPtr = (PolyBase*)inst;
  8887. luaL_getmetatable(L, "Polycode.BinaryObjectReader");
  8888. lua_setmetatable(L, -2);
  8889. return 1;
  8890. }
  8891. static int Polycode_delete_BinaryObjectReader(lua_State *L) {
  8892. luaL_checktype(L, 1, LUA_TUSERDATA);
  8893. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8894. delete ((BinaryObjectReader*) *inst);
  8895. *inst = NULL;
  8896. return 0;
  8897. }
  8898. static int Polycode_BinaryObjectWriter(lua_State *L) {
  8899. luaL_checktype(L, 1, LUA_TUSERDATA);
  8900. Object* object = (Object*) *((PolyBase**)lua_touserdata(L, 1));
  8901. BinaryObjectWriter *inst = new BinaryObjectWriter(object);
  8902. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8903. *userdataPtr = (PolyBase*)inst;
  8904. luaL_getmetatable(L, "Polycode.BinaryObjectWriter");
  8905. lua_setmetatable(L, -2);
  8906. return 1;
  8907. }
  8908. static int Polycode_BinaryObjectWriter_parseKeysFromObjectEntry(lua_State *L) {
  8909. luaL_checktype(L, 1, LUA_TUSERDATA);
  8910. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8911. luaL_checktype(L, 2, LUA_TUSERDATA);
  8912. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8913. inst->parseKeysFromObjectEntry(entry);
  8914. return 0;
  8915. }
  8916. static int Polycode_BinaryObjectWriter_writeEntryToFile(lua_State *L) {
  8917. luaL_checktype(L, 1, LUA_TUSERDATA);
  8918. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8919. luaL_checktype(L, 2, LUA_TUSERDATA);
  8920. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  8921. inst->writeEntryToFile(entry);
  8922. return 0;
  8923. }
  8924. static int Polycode_BinaryObjectWriter_addKey(lua_State *L) {
  8925. luaL_checktype(L, 1, LUA_TUSERDATA);
  8926. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8927. luaL_checktype(L, 2, LUA_TSTRING);
  8928. String key = String(lua_tostring(L, 2));
  8929. lua_pushinteger(L, inst->addKey(key));
  8930. return 1;
  8931. }
  8932. static int Polycode_BinaryObjectWriter_getKeyIndex(lua_State *L) {
  8933. luaL_checktype(L, 1, LUA_TUSERDATA);
  8934. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8935. luaL_checktype(L, 2, LUA_TSTRING);
  8936. String key = String(lua_tostring(L, 2));
  8937. lua_pushinteger(L, inst->getKeyIndex(key));
  8938. return 1;
  8939. }
  8940. static int Polycode_BinaryObjectWriter_writeToFile(lua_State *L) {
  8941. luaL_checktype(L, 1, LUA_TUSERDATA);
  8942. BinaryObjectWriter *inst = (BinaryObjectWriter*) *((PolyBase**)lua_touserdata(L, 1));
  8943. luaL_checktype(L, 2, LUA_TSTRING);
  8944. String fileName = String(lua_tostring(L, 2));
  8945. lua_pushboolean(L, inst->writeToFile(fileName));
  8946. return 1;
  8947. }
  8948. static int Polycode_delete_BinaryObjectWriter(lua_State *L) {
  8949. luaL_checktype(L, 1, LUA_TUSERDATA);
  8950. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  8951. delete ((BinaryObjectWriter*) *inst);
  8952. *inst = NULL;
  8953. return 0;
  8954. }
  8955. static int Polycode_SceneParticle_get_lifetime(lua_State *L) {
  8956. luaL_checktype(L, 1, LUA_TUSERDATA);
  8957. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8958. lua_pushnumber(L, inst->lifetime);
  8959. return 1;
  8960. }
  8961. static int Polycode_SceneParticle_get_position(lua_State *L) {
  8962. luaL_checktype(L, 1, LUA_TUSERDATA);
  8963. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8964. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8965. *userdataPtr = (PolyBase*)&inst->position;
  8966. return 1;
  8967. }
  8968. static int Polycode_SceneParticle_get_velocity(lua_State *L) {
  8969. luaL_checktype(L, 1, LUA_TUSERDATA);
  8970. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8971. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8972. *userdataPtr = (PolyBase*)&inst->velocity;
  8973. return 1;
  8974. }
  8975. static int Polycode_SceneParticle_get_perlinPos(lua_State *L) {
  8976. luaL_checktype(L, 1, LUA_TUSERDATA);
  8977. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8978. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8979. *userdataPtr = (PolyBase*)&inst->perlinPos;
  8980. return 1;
  8981. }
  8982. static int Polycode_SceneParticle_get_rotation(lua_State *L) {
  8983. luaL_checktype(L, 1, LUA_TUSERDATA);
  8984. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8985. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  8986. *userdataPtr = (PolyBase*)&inst->rotation;
  8987. return 1;
  8988. }
  8989. static int Polycode_SceneParticle_get_brightnessDeviation(lua_State *L) {
  8990. luaL_checktype(L, 1, LUA_TUSERDATA);
  8991. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8992. lua_pushnumber(L, inst->brightnessDeviation);
  8993. return 1;
  8994. }
  8995. static int Polycode_SceneParticle_get_scale(lua_State *L) {
  8996. luaL_checktype(L, 1, LUA_TUSERDATA);
  8997. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  8998. lua_pushnumber(L, inst->scale);
  8999. return 1;
  9000. }
  9001. static int Polycode_SceneParticle_get_color(lua_State *L) {
  9002. luaL_checktype(L, 1, LUA_TUSERDATA);
  9003. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9004. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9005. *userdataPtr = (PolyBase*)&inst->color;
  9006. return 1;
  9007. }
  9008. static int Polycode_SceneParticle_get_varianceIndex(lua_State *L) {
  9009. luaL_checktype(L, 1, LUA_TUSERDATA);
  9010. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9011. lua_pushinteger(L, inst->varianceIndex);
  9012. return 1;
  9013. }
  9014. static int Polycode_SceneParticle_set_lifetime(lua_State *L) {
  9015. luaL_checktype(L, 1, LUA_TUSERDATA);
  9016. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9017. Number param = lua_tonumber(L, 2);
  9018. inst->lifetime = param;
  9019. return 0;
  9020. }
  9021. static int Polycode_SceneParticle_set_position(lua_State *L) {
  9022. luaL_checktype(L, 1, LUA_TUSERDATA);
  9023. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9024. luaL_checktype(L, 2, LUA_TUSERDATA);
  9025. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9026. inst->position = *argInst;
  9027. return 0;
  9028. }
  9029. static int Polycode_SceneParticle_set_velocity(lua_State *L) {
  9030. luaL_checktype(L, 1, LUA_TUSERDATA);
  9031. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9032. luaL_checktype(L, 2, LUA_TUSERDATA);
  9033. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9034. inst->velocity = *argInst;
  9035. return 0;
  9036. }
  9037. static int Polycode_SceneParticle_set_perlinPos(lua_State *L) {
  9038. luaL_checktype(L, 1, LUA_TUSERDATA);
  9039. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9040. luaL_checktype(L, 2, LUA_TUSERDATA);
  9041. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9042. inst->perlinPos = *argInst;
  9043. return 0;
  9044. }
  9045. static int Polycode_SceneParticle_set_rotation(lua_State *L) {
  9046. luaL_checktype(L, 1, LUA_TUSERDATA);
  9047. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9048. luaL_checktype(L, 2, LUA_TUSERDATA);
  9049. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9050. inst->rotation = *argInst;
  9051. return 0;
  9052. }
  9053. static int Polycode_SceneParticle_set_brightnessDeviation(lua_State *L) {
  9054. luaL_checktype(L, 1, LUA_TUSERDATA);
  9055. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9056. Number param = lua_tonumber(L, 2);
  9057. inst->brightnessDeviation = param;
  9058. return 0;
  9059. }
  9060. static int Polycode_SceneParticle_set_scale(lua_State *L) {
  9061. luaL_checktype(L, 1, LUA_TUSERDATA);
  9062. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9063. Number param = lua_tonumber(L, 2);
  9064. inst->scale = param;
  9065. return 0;
  9066. }
  9067. static int Polycode_SceneParticle_set_color(lua_State *L) {
  9068. luaL_checktype(L, 1, LUA_TUSERDATA);
  9069. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9070. luaL_checktype(L, 2, LUA_TUSERDATA);
  9071. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  9072. inst->color = *argInst;
  9073. return 0;
  9074. }
  9075. static int Polycode_SceneParticle_set_varianceIndex(lua_State *L) {
  9076. luaL_checktype(L, 1, LUA_TUSERDATA);
  9077. SceneParticle *inst = (SceneParticle*) *((PolyBase**)lua_touserdata(L, 1));
  9078. int param = lua_tointeger(L, 2);
  9079. inst->varianceIndex = param;
  9080. return 0;
  9081. }
  9082. static int Polycode_delete_SceneParticle(lua_State *L) {
  9083. luaL_checktype(L, 1, LUA_TUSERDATA);
  9084. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9085. delete ((SceneParticle*) *inst);
  9086. *inst = NULL;
  9087. return 0;
  9088. }
  9089. static int Polycode_SceneParticleEmitter_get_useScaleCurve(lua_State *L) {
  9090. luaL_checktype(L, 1, LUA_TUSERDATA);
  9091. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9092. lua_pushboolean(L, inst->useScaleCurve);
  9093. return 1;
  9094. }
  9095. static int Polycode_SceneParticleEmitter_get_scaleCurve(lua_State *L) {
  9096. luaL_checktype(L, 1, LUA_TUSERDATA);
  9097. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9098. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9099. *userdataPtr = (PolyBase*)&inst->scaleCurve;
  9100. return 1;
  9101. }
  9102. static int Polycode_SceneParticleEmitter_get_useColorCurves(lua_State *L) {
  9103. luaL_checktype(L, 1, LUA_TUSERDATA);
  9104. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9105. lua_pushboolean(L, inst->useColorCurves);
  9106. return 1;
  9107. }
  9108. static int Polycode_SceneParticleEmitter_get_colorCurveR(lua_State *L) {
  9109. luaL_checktype(L, 1, LUA_TUSERDATA);
  9110. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9111. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9112. *userdataPtr = (PolyBase*)&inst->colorCurveR;
  9113. return 1;
  9114. }
  9115. static int Polycode_SceneParticleEmitter_get_colorCurveG(lua_State *L) {
  9116. luaL_checktype(L, 1, LUA_TUSERDATA);
  9117. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9118. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9119. *userdataPtr = (PolyBase*)&inst->colorCurveG;
  9120. return 1;
  9121. }
  9122. static int Polycode_SceneParticleEmitter_get_colorCurveB(lua_State *L) {
  9123. luaL_checktype(L, 1, LUA_TUSERDATA);
  9124. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9125. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9126. *userdataPtr = (PolyBase*)&inst->colorCurveB;
  9127. return 1;
  9128. }
  9129. static int Polycode_SceneParticleEmitter_get_colorCurveA(lua_State *L) {
  9130. luaL_checktype(L, 1, LUA_TUSERDATA);
  9131. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9132. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9133. *userdataPtr = (PolyBase*)&inst->colorCurveA;
  9134. return 1;
  9135. }
  9136. static int Polycode_SceneParticleEmitter_get_colorDeviation(lua_State *L) {
  9137. luaL_checktype(L, 1, LUA_TUSERDATA);
  9138. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9139. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9140. *userdataPtr = (PolyBase*)&inst->colorDeviation;
  9141. return 1;
  9142. }
  9143. static int Polycode_SceneParticleEmitter_set_useScaleCurve(lua_State *L) {
  9144. luaL_checktype(L, 1, LUA_TUSERDATA);
  9145. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9146. bool param = lua_toboolean(L, 2) != 0;
  9147. inst->useScaleCurve = param;
  9148. return 0;
  9149. }
  9150. static int Polycode_SceneParticleEmitter_set_scaleCurve(lua_State *L) {
  9151. luaL_checktype(L, 1, LUA_TUSERDATA);
  9152. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9153. luaL_checktype(L, 2, LUA_TUSERDATA);
  9154. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9155. inst->scaleCurve = *argInst;
  9156. return 0;
  9157. }
  9158. static int Polycode_SceneParticleEmitter_set_useColorCurves(lua_State *L) {
  9159. luaL_checktype(L, 1, LUA_TUSERDATA);
  9160. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9161. bool param = lua_toboolean(L, 2) != 0;
  9162. inst->useColorCurves = param;
  9163. return 0;
  9164. }
  9165. static int Polycode_SceneParticleEmitter_set_colorCurveR(lua_State *L) {
  9166. luaL_checktype(L, 1, LUA_TUSERDATA);
  9167. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9168. luaL_checktype(L, 2, LUA_TUSERDATA);
  9169. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9170. inst->colorCurveR = *argInst;
  9171. return 0;
  9172. }
  9173. static int Polycode_SceneParticleEmitter_set_colorCurveG(lua_State *L) {
  9174. luaL_checktype(L, 1, LUA_TUSERDATA);
  9175. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9176. luaL_checktype(L, 2, LUA_TUSERDATA);
  9177. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9178. inst->colorCurveG = *argInst;
  9179. return 0;
  9180. }
  9181. static int Polycode_SceneParticleEmitter_set_colorCurveB(lua_State *L) {
  9182. luaL_checktype(L, 1, LUA_TUSERDATA);
  9183. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9184. luaL_checktype(L, 2, LUA_TUSERDATA);
  9185. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9186. inst->colorCurveB = *argInst;
  9187. return 0;
  9188. }
  9189. static int Polycode_SceneParticleEmitter_set_colorCurveA(lua_State *L) {
  9190. luaL_checktype(L, 1, LUA_TUSERDATA);
  9191. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9192. luaL_checktype(L, 2, LUA_TUSERDATA);
  9193. BezierCurve *argInst = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  9194. inst->colorCurveA = *argInst;
  9195. return 0;
  9196. }
  9197. static int Polycode_SceneParticleEmitter_set_colorDeviation(lua_State *L) {
  9198. luaL_checktype(L, 1, LUA_TUSERDATA);
  9199. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9200. luaL_checktype(L, 2, LUA_TUSERDATA);
  9201. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  9202. inst->colorDeviation = *argInst;
  9203. return 0;
  9204. }
  9205. static int Polycode_SceneParticleEmitter(lua_State *L) {
  9206. luaL_checktype(L, 1, LUA_TNUMBER);
  9207. int particleCount = lua_tointeger(L, 1);
  9208. luaL_checktype(L, 2, LUA_TNUMBER);
  9209. Number lifetime = lua_tonumber(L, 2);
  9210. luaL_checktype(L, 3, LUA_TNUMBER);
  9211. Number speed = lua_tonumber(L, 3);
  9212. SceneParticleEmitter *inst = new SceneParticleEmitter(particleCount, lifetime, speed);
  9213. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9214. *userdataPtr = (PolyBase*)inst;
  9215. luaL_getmetatable(L, "Polycode.SceneParticleEmitter");
  9216. lua_setmetatable(L, -2);
  9217. return 1;
  9218. }
  9219. static int Polycode_SceneParticleEmitter_setParticleCount(lua_State *L) {
  9220. luaL_checktype(L, 1, LUA_TUSERDATA);
  9221. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9222. luaL_checktype(L, 2, LUA_TNUMBER);
  9223. int newParticleCount = lua_tointeger(L, 2);
  9224. inst->setParticleCount(newParticleCount);
  9225. return 0;
  9226. }
  9227. static int Polycode_SceneParticleEmitter_getParticleCount(lua_State *L) {
  9228. luaL_checktype(L, 1, LUA_TUSERDATA);
  9229. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9230. lua_pushinteger(L, inst->getParticleCount());
  9231. return 1;
  9232. }
  9233. static int Polycode_SceneParticleEmitter_setParticleLifetime(lua_State *L) {
  9234. luaL_checktype(L, 1, LUA_TUSERDATA);
  9235. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9236. luaL_checktype(L, 2, LUA_TNUMBER);
  9237. Number lifetime = lua_tonumber(L, 2);
  9238. inst->setParticleLifetime(lifetime);
  9239. return 0;
  9240. }
  9241. static int Polycode_SceneParticleEmitter_getParticleLifetime(lua_State *L) {
  9242. luaL_checktype(L, 1, LUA_TUSERDATA);
  9243. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9244. lua_pushnumber(L, inst->getParticleLifetime());
  9245. return 1;
  9246. }
  9247. static int Polycode_SceneParticleEmitter_setDirectionDeviation(lua_State *L) {
  9248. luaL_checktype(L, 1, LUA_TUSERDATA);
  9249. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9250. luaL_checktype(L, 2, LUA_TUSERDATA);
  9251. Vector3 newDeviation = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9252. inst->setDirectionDeviation(newDeviation);
  9253. return 0;
  9254. }
  9255. static int Polycode_SceneParticleEmitter_getDirectionDeviation(lua_State *L) {
  9256. luaL_checktype(L, 1, LUA_TUSERDATA);
  9257. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9258. Vector3 *retInst = new Vector3();
  9259. *retInst = inst->getDirectionDeviation();
  9260. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9261. luaL_getmetatable(L, "Polycode.Vector3");
  9262. lua_setmetatable(L, -2);
  9263. *userdataPtr = (PolyBase*)retInst;
  9264. return 1;
  9265. }
  9266. static int Polycode_SceneParticleEmitter_setEmitterSize(lua_State *L) {
  9267. luaL_checktype(L, 1, LUA_TUSERDATA);
  9268. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9269. luaL_checktype(L, 2, LUA_TUSERDATA);
  9270. Vector3 newSize = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9271. inst->setEmitterSize(newSize);
  9272. return 0;
  9273. }
  9274. static int Polycode_SceneParticleEmitter_getEmitterSize(lua_State *L) {
  9275. luaL_checktype(L, 1, LUA_TUSERDATA);
  9276. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9277. Vector3 *retInst = new Vector3();
  9278. *retInst = inst->getEmitterSize();
  9279. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9280. luaL_getmetatable(L, "Polycode.Vector3");
  9281. lua_setmetatable(L, -2);
  9282. *userdataPtr = (PolyBase*)retInst;
  9283. return 1;
  9284. }
  9285. static int Polycode_SceneParticleEmitter_setGravity(lua_State *L) {
  9286. luaL_checktype(L, 1, LUA_TUSERDATA);
  9287. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9288. luaL_checktype(L, 2, LUA_TUSERDATA);
  9289. Vector3 newGravity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9290. inst->setGravity(newGravity);
  9291. return 0;
  9292. }
  9293. static int Polycode_SceneParticleEmitter_getGravity(lua_State *L) {
  9294. luaL_checktype(L, 1, LUA_TUSERDATA);
  9295. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9296. Vector3 *retInst = new Vector3();
  9297. *retInst = inst->getGravity();
  9298. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9299. luaL_getmetatable(L, "Polycode.Vector3");
  9300. lua_setmetatable(L, -2);
  9301. *userdataPtr = (PolyBase*)retInst;
  9302. return 1;
  9303. }
  9304. static int Polycode_SceneParticleEmitter_fixedUpdate(lua_State *L) {
  9305. luaL_checktype(L, 1, LUA_TUSERDATA);
  9306. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9307. inst->fixedUpdate();
  9308. return 0;
  9309. }
  9310. static int Polycode_SceneParticleEmitter_Render(lua_State *L) {
  9311. luaL_checktype(L, 1, LUA_TUSERDATA);
  9312. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9313. luaL_checktype(L, 2, LUA_TUSERDATA);
  9314. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  9315. inst->Render(buffer);
  9316. return 0;
  9317. }
  9318. static int Polycode_SceneParticleEmitter_updateParticles(lua_State *L) {
  9319. luaL_checktype(L, 1, LUA_TUSERDATA);
  9320. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9321. inst->updateParticles();
  9322. return 0;
  9323. }
  9324. static int Polycode_SceneParticleEmitter_rebuildParticles(lua_State *L) {
  9325. luaL_checktype(L, 1, LUA_TUSERDATA);
  9326. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9327. luaL_checktype(L, 2, LUA_TUSERDATA);
  9328. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  9329. inst->rebuildParticles(buffer);
  9330. return 0;
  9331. }
  9332. static int Polycode_SceneParticleEmitter_triggerParticles(lua_State *L) {
  9333. luaL_checktype(L, 1, LUA_TUSERDATA);
  9334. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9335. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9336. bool allAtOnce = lua_toboolean(L, 2) != 0;
  9337. inst->triggerParticles(allAtOnce);
  9338. return 0;
  9339. }
  9340. static int Polycode_SceneParticleEmitter_enableParticleSystem(lua_State *L) {
  9341. luaL_checktype(L, 1, LUA_TUSERDATA);
  9342. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9343. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9344. bool val = lua_toboolean(L, 2) != 0;
  9345. inst->enableParticleSystem(val);
  9346. return 0;
  9347. }
  9348. static int Polycode_SceneParticleEmitter_setUseFloorPlane(lua_State *L) {
  9349. luaL_checktype(L, 1, LUA_TUSERDATA);
  9350. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9351. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9352. bool val = lua_toboolean(L, 2) != 0;
  9353. inst->setUseFloorPlane(val);
  9354. return 0;
  9355. }
  9356. static int Polycode_SceneParticleEmitter_setFloorPlaneOffset(lua_State *L) {
  9357. luaL_checktype(L, 1, LUA_TUSERDATA);
  9358. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9359. luaL_checktype(L, 2, LUA_TNUMBER);
  9360. Number floorPlaneOffset = lua_tonumber(L, 2);
  9361. inst->setFloorPlaneOffset(floorPlaneOffset);
  9362. return 0;
  9363. }
  9364. static int Polycode_SceneParticleEmitter_setFloorDamping(lua_State *L) {
  9365. luaL_checktype(L, 1, LUA_TUSERDATA);
  9366. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9367. luaL_checktype(L, 2, LUA_TNUMBER);
  9368. Number floorDamping = lua_tonumber(L, 2);
  9369. inst->setFloorDamping(floorDamping);
  9370. return 0;
  9371. }
  9372. static int Polycode_SceneParticleEmitter_setParticlesInWorldSpace(lua_State *L) {
  9373. luaL_checktype(L, 1, LUA_TUSERDATA);
  9374. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9375. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9376. bool val = lua_toboolean(L, 2) != 0;
  9377. inst->setParticlesInWorldSpace(val);
  9378. return 0;
  9379. }
  9380. static int Polycode_SceneParticleEmitter_getParticlesInWorldSpace(lua_State *L) {
  9381. luaL_checktype(L, 1, LUA_TUSERDATA);
  9382. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9383. lua_pushboolean(L, inst->getParticlesInWorldSpace());
  9384. return 1;
  9385. }
  9386. static int Polycode_SceneParticleEmitter_setPerlinEnabled(lua_State *L) {
  9387. luaL_checktype(L, 1, LUA_TUSERDATA);
  9388. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9389. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9390. bool val = lua_toboolean(L, 2) != 0;
  9391. inst->setPerlinEnabled(val);
  9392. return 0;
  9393. }
  9394. static int Polycode_SceneParticleEmitter_getPerlinEnabled(lua_State *L) {
  9395. luaL_checktype(L, 1, LUA_TUSERDATA);
  9396. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9397. lua_pushboolean(L, inst->getPerlinEnabled());
  9398. return 1;
  9399. }
  9400. static int Polycode_SceneParticleEmitter_getParticleSpeed(lua_State *L) {
  9401. luaL_checktype(L, 1, LUA_TUSERDATA);
  9402. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9403. lua_pushnumber(L, inst->getParticleSpeed());
  9404. return 1;
  9405. }
  9406. static int Polycode_SceneParticleEmitter_setParticleSpeed(lua_State *L) {
  9407. luaL_checktype(L, 1, LUA_TUSERDATA);
  9408. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9409. luaL_checktype(L, 2, LUA_TNUMBER);
  9410. Number speed = lua_tonumber(L, 2);
  9411. inst->setParticleSpeed(speed);
  9412. return 0;
  9413. }
  9414. static int Polycode_SceneParticleEmitter_setPerlinValue(lua_State *L) {
  9415. luaL_checktype(L, 1, LUA_TUSERDATA);
  9416. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9417. luaL_checktype(L, 2, LUA_TUSERDATA);
  9418. Vector3 perlinValue = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9419. inst->setPerlinValue(perlinValue);
  9420. return 0;
  9421. }
  9422. static int Polycode_SceneParticleEmitter_getPerlinValue(lua_State *L) {
  9423. luaL_checktype(L, 1, LUA_TUSERDATA);
  9424. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9425. Vector3 *retInst = new Vector3();
  9426. *retInst = inst->getPerlinValue();
  9427. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9428. luaL_getmetatable(L, "Polycode.Vector3");
  9429. lua_setmetatable(L, -2);
  9430. *userdataPtr = (PolyBase*)retInst;
  9431. return 1;
  9432. }
  9433. static int Polycode_SceneParticleEmitter_setParticleType(lua_State *L) {
  9434. luaL_checktype(L, 1, LUA_TUSERDATA);
  9435. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9436. luaL_checktype(L, 2, LUA_TNUMBER);
  9437. int particleType = lua_tointeger(L, 2);
  9438. inst->setParticleType(particleType);
  9439. return 0;
  9440. }
  9441. static int Polycode_SceneParticleEmitter_getParticleType(lua_State *L) {
  9442. luaL_checktype(L, 1, LUA_TUSERDATA);
  9443. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9444. lua_pushinteger(L, inst->getParticleType());
  9445. return 1;
  9446. }
  9447. static int Polycode_SceneParticleEmitter_setParticleSize(lua_State *L) {
  9448. luaL_checktype(L, 1, LUA_TUSERDATA);
  9449. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9450. luaL_checktype(L, 2, LUA_TNUMBER);
  9451. Number particleSize = lua_tonumber(L, 2);
  9452. inst->setParticleSize(particleSize);
  9453. return 0;
  9454. }
  9455. static int Polycode_SceneParticleEmitter_getParticleSize(lua_State *L) {
  9456. luaL_checktype(L, 1, LUA_TUSERDATA);
  9457. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9458. lua_pushnumber(L, inst->getParticleSize());
  9459. return 1;
  9460. }
  9461. static int Polycode_SceneParticleEmitter_setParticleRotationSpeed(lua_State *L) {
  9462. luaL_checktype(L, 1, LUA_TUSERDATA);
  9463. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9464. luaL_checktype(L, 2, LUA_TUSERDATA);
  9465. Vector3 rotationSpeed = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9466. inst->setParticleRotationSpeed(rotationSpeed);
  9467. return 0;
  9468. }
  9469. static int Polycode_SceneParticleEmitter_getParticleRotationSpeed(lua_State *L) {
  9470. luaL_checktype(L, 1, LUA_TUSERDATA);
  9471. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9472. Vector3 *retInst = new Vector3();
  9473. *retInst = inst->getParticleRotationSpeed();
  9474. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9475. luaL_getmetatable(L, "Polycode.Vector3");
  9476. lua_setmetatable(L, -2);
  9477. *userdataPtr = (PolyBase*)retInst;
  9478. return 1;
  9479. }
  9480. static int Polycode_SceneParticleEmitter_setParticleDirection(lua_State *L) {
  9481. luaL_checktype(L, 1, LUA_TUSERDATA);
  9482. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9483. luaL_checktype(L, 2, LUA_TUSERDATA);
  9484. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9485. inst->setParticleDirection(direction);
  9486. return 0;
  9487. }
  9488. static int Polycode_SceneParticleEmitter_getParticleDirection(lua_State *L) {
  9489. luaL_checktype(L, 1, LUA_TUSERDATA);
  9490. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9491. Vector3 *retInst = new Vector3();
  9492. *retInst = inst->getParticleDirection();
  9493. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9494. luaL_getmetatable(L, "Polycode.Vector3");
  9495. lua_setmetatable(L, -2);
  9496. *userdataPtr = (PolyBase*)retInst;
  9497. return 1;
  9498. }
  9499. static int Polycode_SceneParticleEmitter_setLoopParticles(lua_State *L) {
  9500. luaL_checktype(L, 1, LUA_TUSERDATA);
  9501. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9502. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9503. bool val = lua_toboolean(L, 2) != 0;
  9504. inst->setLoopParticles(val);
  9505. return 0;
  9506. }
  9507. static int Polycode_SceneParticleEmitter_getLoopParticles(lua_State *L) {
  9508. luaL_checktype(L, 1, LUA_TUSERDATA);
  9509. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9510. lua_pushboolean(L, inst->getLoopParticles());
  9511. return 1;
  9512. }
  9513. static int Polycode_SceneParticleEmitter_addSourceMesh(lua_State *L) {
  9514. luaL_checktype(L, 1, LUA_TUSERDATA);
  9515. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9516. luaL_checktype(L, 2, LUA_TUSERDATA);
  9517. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  9518. inst->addSourceMesh(mesh);
  9519. return 0;
  9520. }
  9521. static int Polycode_SceneParticleEmitter_getNumSourceMeshes(lua_State *L) {
  9522. luaL_checktype(L, 1, LUA_TUSERDATA);
  9523. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9524. lua_pushinteger(L, inst->getNumSourceMeshes());
  9525. return 1;
  9526. }
  9527. static int Polycode_SceneParticleEmitter_getSourcesMeshAtIndex(lua_State *L) {
  9528. luaL_checktype(L, 1, LUA_TUSERDATA);
  9529. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9530. luaL_checktype(L, 2, LUA_TNUMBER);
  9531. int index = lua_tointeger(L, 2);
  9532. PolyBase *ptrRetVal = (PolyBase*)inst->getSourcesMeshAtIndex(index);
  9533. if(ptrRetVal == NULL) {
  9534. lua_pushnil(L);
  9535. } else {
  9536. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9537. *userdataPtr = ptrRetVal;
  9538. }
  9539. return 1;
  9540. }
  9541. static int Polycode_SceneParticleEmitter_removeSourceMeshAtIndex(lua_State *L) {
  9542. luaL_checktype(L, 1, LUA_TUSERDATA);
  9543. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9544. luaL_checktype(L, 2, LUA_TNUMBER);
  9545. int index = lua_tointeger(L, 2);
  9546. inst->removeSourceMeshAtIndex(index);
  9547. return 0;
  9548. }
  9549. static int Polycode_SceneParticleEmitter_positionParticle(lua_State *L) {
  9550. luaL_checktype(L, 1, LUA_TUSERDATA);
  9551. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9552. luaL_checktype(L, 2, LUA_TNUMBER);
  9553. int index = lua_tointeger(L, 2);
  9554. inst->positionParticle(index);
  9555. return 0;
  9556. }
  9557. static int Polycode_SceneParticleEmitter_Clone(lua_State *L) {
  9558. luaL_checktype(L, 1, LUA_TUSERDATA);
  9559. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9560. luaL_checktype(L, 2, LUA_TBOOLEAN);
  9561. bool deepClone = lua_toboolean(L, 2) != 0;
  9562. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9563. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  9564. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  9565. if(ptrRetVal == NULL) {
  9566. lua_pushnil(L);
  9567. } else {
  9568. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9569. *userdataPtr = ptrRetVal;
  9570. }
  9571. return 1;
  9572. }
  9573. static int Polycode_SceneParticleEmitter_applyClone(lua_State *L) {
  9574. luaL_checktype(L, 1, LUA_TUSERDATA);
  9575. SceneParticleEmitter *inst = (SceneParticleEmitter*) *((PolyBase**)lua_touserdata(L, 1));
  9576. luaL_checktype(L, 2, LUA_TUSERDATA);
  9577. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  9578. luaL_checktype(L, 3, LUA_TBOOLEAN);
  9579. bool deepClone = lua_toboolean(L, 3) != 0;
  9580. luaL_checktype(L, 4, LUA_TBOOLEAN);
  9581. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  9582. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  9583. return 0;
  9584. }
  9585. static int Polycode_delete_SceneParticleEmitter(lua_State *L) {
  9586. luaL_checktype(L, 1, LUA_TUSERDATA);
  9587. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9588. delete ((SceneParticleEmitter*) *inst);
  9589. *inst = NULL;
  9590. return 0;
  9591. }
  9592. static int Polycode_Perlin(lua_State *L) {
  9593. luaL_checktype(L, 1, LUA_TNUMBER);
  9594. int octaves = lua_tointeger(L, 1);
  9595. luaL_checktype(L, 2, LUA_TNUMBER);
  9596. Number freq = lua_tonumber(L, 2);
  9597. luaL_checktype(L, 3, LUA_TNUMBER);
  9598. Number amp = lua_tonumber(L, 3);
  9599. luaL_checktype(L, 4, LUA_TNUMBER);
  9600. int seed = lua_tointeger(L, 4);
  9601. Perlin *inst = new Perlin(octaves, freq, amp, seed);
  9602. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9603. *userdataPtr = (PolyBase*)inst;
  9604. luaL_getmetatable(L, "Polycode.Perlin");
  9605. lua_setmetatable(L, -2);
  9606. return 1;
  9607. }
  9608. static int Polycode_Perlin_Get2DTiledX(lua_State *L) {
  9609. luaL_checktype(L, 1, LUA_TUSERDATA);
  9610. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9611. luaL_checktype(L, 2, LUA_TNUMBER);
  9612. Number x = lua_tonumber(L, 2);
  9613. luaL_checktype(L, 3, LUA_TNUMBER);
  9614. Number y = lua_tonumber(L, 3);
  9615. luaL_checktype(L, 4, LUA_TNUMBER);
  9616. Number t = lua_tonumber(L, 4);
  9617. lua_pushnumber(L, inst->Get2DTiledX(x, y, t));
  9618. return 1;
  9619. }
  9620. static int Polycode_Perlin_Get(lua_State *L) {
  9621. luaL_checktype(L, 1, LUA_TUSERDATA);
  9622. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9623. luaL_checktype(L, 2, LUA_TNUMBER);
  9624. Number x = lua_tonumber(L, 2);
  9625. luaL_checktype(L, 3, LUA_TNUMBER);
  9626. Number y = lua_tonumber(L, 3);
  9627. lua_pushnumber(L, inst->Get(x, y));
  9628. return 1;
  9629. }
  9630. static int Polycode_Perlin_Get2D(lua_State *L) {
  9631. luaL_checktype(L, 1, LUA_TUSERDATA);
  9632. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9633. luaL_checktype(L, 2, LUA_TNUMBER);
  9634. Number x = lua_tonumber(L, 2);
  9635. luaL_checktype(L, 3, LUA_TNUMBER);
  9636. Number y = lua_tonumber(L, 3);
  9637. lua_pushnumber(L, inst->Get2D(x, y));
  9638. return 1;
  9639. }
  9640. static int Polycode_Perlin_Get3D(lua_State *L) {
  9641. luaL_checktype(L, 1, LUA_TUSERDATA);
  9642. Perlin *inst = (Perlin*) *((PolyBase**)lua_touserdata(L, 1));
  9643. luaL_checktype(L, 2, LUA_TNUMBER);
  9644. Number x = lua_tonumber(L, 2);
  9645. luaL_checktype(L, 3, LUA_TNUMBER);
  9646. Number y = lua_tonumber(L, 3);
  9647. luaL_checktype(L, 4, LUA_TNUMBER);
  9648. Number z = lua_tonumber(L, 4);
  9649. lua_pushnumber(L, inst->Get3D(x, y, z));
  9650. return 1;
  9651. }
  9652. static int Polycode_delete_Perlin(lua_State *L) {
  9653. luaL_checktype(L, 1, LUA_TUSERDATA);
  9654. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9655. delete ((Perlin*) *inst);
  9656. *inst = NULL;
  9657. return 0;
  9658. }
  9659. static int Polycode_Quaternion_get_x(lua_State *L) {
  9660. luaL_checktype(L, 1, LUA_TUSERDATA);
  9661. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9662. lua_pushnumber(L, inst->x);
  9663. return 1;
  9664. }
  9665. static int Polycode_Quaternion_get_y(lua_State *L) {
  9666. luaL_checktype(L, 1, LUA_TUSERDATA);
  9667. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9668. lua_pushnumber(L, inst->y);
  9669. return 1;
  9670. }
  9671. static int Polycode_Quaternion_get_z(lua_State *L) {
  9672. luaL_checktype(L, 1, LUA_TUSERDATA);
  9673. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9674. lua_pushnumber(L, inst->z);
  9675. return 1;
  9676. }
  9677. static int Polycode_Quaternion_get_w(lua_State *L) {
  9678. luaL_checktype(L, 1, LUA_TUSERDATA);
  9679. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9680. lua_pushnumber(L, inst->w);
  9681. return 1;
  9682. }
  9683. static int Polycode_Quaternion_set_x(lua_State *L) {
  9684. luaL_checktype(L, 1, LUA_TUSERDATA);
  9685. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9686. Number param = lua_tonumber(L, 2);
  9687. inst->x = param;
  9688. return 0;
  9689. }
  9690. static int Polycode_Quaternion_set_y(lua_State *L) {
  9691. luaL_checktype(L, 1, LUA_TUSERDATA);
  9692. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9693. Number param = lua_tonumber(L, 2);
  9694. inst->y = param;
  9695. return 0;
  9696. }
  9697. static int Polycode_Quaternion_set_z(lua_State *L) {
  9698. luaL_checktype(L, 1, LUA_TUSERDATA);
  9699. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9700. Number param = lua_tonumber(L, 2);
  9701. inst->z = param;
  9702. return 0;
  9703. }
  9704. static int Polycode_Quaternion_set_w(lua_State *L) {
  9705. luaL_checktype(L, 1, LUA_TUSERDATA);
  9706. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9707. Number param = lua_tonumber(L, 2);
  9708. inst->w = param;
  9709. return 0;
  9710. }
  9711. static int Polycode_Quaternion(lua_State *L) {
  9712. luaL_checktype(L, 1, LUA_TNUMBER);
  9713. Number w = lua_tonumber(L, 1);
  9714. luaL_checktype(L, 2, LUA_TNUMBER);
  9715. Number x = lua_tonumber(L, 2);
  9716. luaL_checktype(L, 3, LUA_TNUMBER);
  9717. Number y = lua_tonumber(L, 3);
  9718. luaL_checktype(L, 4, LUA_TNUMBER);
  9719. Number z = lua_tonumber(L, 4);
  9720. Quaternion *inst = new Quaternion(w, x, y, z);
  9721. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9722. *userdataPtr = (PolyBase*)inst;
  9723. luaL_getmetatable(L, "Polycode.Quaternion");
  9724. lua_setmetatable(L, -2);
  9725. return 1;
  9726. }
  9727. static int Polycode_Quaternion_setFromMatrix(lua_State *L) {
  9728. luaL_checktype(L, 1, LUA_TUSERDATA);
  9729. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9730. luaL_checktype(L, 2, LUA_TUSERDATA);
  9731. Matrix4 _mat = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  9732. inst->setFromMatrix(_mat);
  9733. return 0;
  9734. }
  9735. static int Polycode_Quaternion_Slerp(lua_State *L) {
  9736. luaL_checktype(L, 1, LUA_TNUMBER);
  9737. Number fT = lua_tonumber(L, 1);
  9738. luaL_checktype(L, 2, LUA_TUSERDATA);
  9739. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9740. luaL_checktype(L, 3, LUA_TUSERDATA);
  9741. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  9742. bool shortestPath;
  9743. if(lua_isboolean(L, 4)) {
  9744. shortestPath = lua_toboolean(L, 4) != 0;
  9745. } else {
  9746. shortestPath = false;
  9747. }
  9748. Quaternion *retInst = new Quaternion();
  9749. *retInst = Quaternion::Slerp(fT, rkP, rkQ, shortestPath);
  9750. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9751. luaL_getmetatable(L, "Polycode.Quaternion");
  9752. lua_setmetatable(L, -2);
  9753. *userdataPtr = (PolyBase*)retInst;
  9754. return 1;
  9755. }
  9756. static int Polycode_Quaternion_Dot(lua_State *L) {
  9757. luaL_checktype(L, 1, LUA_TUSERDATA);
  9758. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9759. luaL_checktype(L, 2, LUA_TUSERDATA);
  9760. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9761. lua_pushnumber(L, inst->Dot(rkQ));
  9762. return 1;
  9763. }
  9764. static int Polycode_Quaternion_Log(lua_State *L) {
  9765. luaL_checktype(L, 1, LUA_TUSERDATA);
  9766. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9767. Quaternion *retInst = new Quaternion();
  9768. *retInst = inst->Log();
  9769. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9770. luaL_getmetatable(L, "Polycode.Quaternion");
  9771. lua_setmetatable(L, -2);
  9772. *userdataPtr = (PolyBase*)retInst;
  9773. return 1;
  9774. }
  9775. static int Polycode_Quaternion_Exp(lua_State *L) {
  9776. luaL_checktype(L, 1, LUA_TUSERDATA);
  9777. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9778. Quaternion *retInst = new Quaternion();
  9779. *retInst = inst->Exp();
  9780. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9781. luaL_getmetatable(L, "Polycode.Quaternion");
  9782. lua_setmetatable(L, -2);
  9783. *userdataPtr = (PolyBase*)retInst;
  9784. return 1;
  9785. }
  9786. static int Polycode_Quaternion_Norm(lua_State *L) {
  9787. luaL_checktype(L, 1, LUA_TUSERDATA);
  9788. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9789. lua_pushnumber(L, inst->Norm());
  9790. return 1;
  9791. }
  9792. static int Polycode_Quaternion_Normalize(lua_State *L) {
  9793. luaL_checktype(L, 1, LUA_TUSERDATA);
  9794. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9795. lua_pushnumber(L, inst->Normalize());
  9796. return 1;
  9797. }
  9798. static int Polycode_Quaternion_lookAt(lua_State *L) {
  9799. luaL_checktype(L, 1, LUA_TUSERDATA);
  9800. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9801. luaL_checktype(L, 2, LUA_TUSERDATA);
  9802. Vector3 D = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9803. luaL_checktype(L, 3, LUA_TUSERDATA);
  9804. Vector3 upVector = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9805. inst->lookAt(D, upVector);
  9806. return 0;
  9807. }
  9808. static int Polycode_Quaternion_createFromMatrix(lua_State *L) {
  9809. luaL_checktype(L, 1, LUA_TUSERDATA);
  9810. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9811. luaL_checktype(L, 2, LUA_TUSERDATA);
  9812. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  9813. inst->createFromMatrix(matrix);
  9814. return 0;
  9815. }
  9816. static int Polycode_Quaternion_Squad(lua_State *L) {
  9817. luaL_checktype(L, 1, LUA_TNUMBER);
  9818. Number fT = lua_tonumber(L, 1);
  9819. luaL_checktype(L, 2, LUA_TUSERDATA);
  9820. Quaternion rkP = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9821. luaL_checktype(L, 3, LUA_TUSERDATA);
  9822. Quaternion rkA = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 3));
  9823. luaL_checktype(L, 4, LUA_TUSERDATA);
  9824. Quaternion rkB = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 4));
  9825. luaL_checktype(L, 5, LUA_TUSERDATA);
  9826. Quaternion rkQ = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 5));
  9827. luaL_checktype(L, 6, LUA_TBOOLEAN);
  9828. bool shortestPath = lua_toboolean(L, 6) != 0;
  9829. Quaternion *retInst = new Quaternion();
  9830. *retInst = Quaternion::Squad(fT, rkP, rkA, rkB, rkQ, shortestPath);
  9831. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9832. luaL_getmetatable(L, "Polycode.Quaternion");
  9833. lua_setmetatable(L, -2);
  9834. *userdataPtr = (PolyBase*)retInst;
  9835. return 1;
  9836. }
  9837. static int Polycode_Quaternion_Inverse(lua_State *L) {
  9838. luaL_checktype(L, 1, LUA_TUSERDATA);
  9839. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9840. Quaternion *retInst = new Quaternion();
  9841. *retInst = inst->Inverse();
  9842. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9843. luaL_getmetatable(L, "Polycode.Quaternion");
  9844. lua_setmetatable(L, -2);
  9845. *userdataPtr = (PolyBase*)retInst;
  9846. return 1;
  9847. }
  9848. static int Polycode_Quaternion_set(lua_State *L) {
  9849. luaL_checktype(L, 1, LUA_TUSERDATA);
  9850. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9851. luaL_checktype(L, 2, LUA_TNUMBER);
  9852. Number w = lua_tonumber(L, 2);
  9853. luaL_checktype(L, 3, LUA_TNUMBER);
  9854. Number x = lua_tonumber(L, 3);
  9855. luaL_checktype(L, 4, LUA_TNUMBER);
  9856. Number y = lua_tonumber(L, 4);
  9857. luaL_checktype(L, 5, LUA_TNUMBER);
  9858. Number z = lua_tonumber(L, 5);
  9859. inst->set(w, x, y, z);
  9860. return 0;
  9861. }
  9862. static int Polycode_Quaternion_InvSqrt(lua_State *L) {
  9863. luaL_checktype(L, 1, LUA_TUSERDATA);
  9864. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9865. luaL_checktype(L, 2, LUA_TNUMBER);
  9866. Number x = lua_tonumber(L, 2);
  9867. lua_pushnumber(L, inst->InvSqrt(x));
  9868. return 1;
  9869. }
  9870. static int Polycode_Quaternion_fromAxes(lua_State *L) {
  9871. luaL_checktype(L, 1, LUA_TUSERDATA);
  9872. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9873. luaL_checktype(L, 2, LUA_TNUMBER);
  9874. Number az = lua_tonumber(L, 2);
  9875. luaL_checktype(L, 3, LUA_TNUMBER);
  9876. Number ay = lua_tonumber(L, 3);
  9877. luaL_checktype(L, 4, LUA_TNUMBER);
  9878. Number ax = lua_tonumber(L, 4);
  9879. inst->fromAxes(az, ay, ax);
  9880. return 0;
  9881. }
  9882. static int Polycode_Quaternion_fromAngleAxis(lua_State *L) {
  9883. luaL_checktype(L, 1, LUA_TUSERDATA);
  9884. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9885. luaL_checktype(L, 2, LUA_TNUMBER);
  9886. Number rfAngle = lua_tonumber(L, 2);
  9887. luaL_checktype(L, 3, LUA_TUSERDATA);
  9888. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9889. inst->fromAngleAxis(rfAngle, rkAxis);
  9890. return 0;
  9891. }
  9892. static int Polycode_Quaternion_toEulerAngles(lua_State *L) {
  9893. luaL_checktype(L, 1, LUA_TUSERDATA);
  9894. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9895. Vector3 *retInst = new Vector3();
  9896. *retInst = inst->toEulerAngles();
  9897. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9898. luaL_getmetatable(L, "Polycode.Vector3");
  9899. lua_setmetatable(L, -2);
  9900. *userdataPtr = (PolyBase*)retInst;
  9901. return 1;
  9902. }
  9903. static int Polycode_Quaternion_toAngleAxis(lua_State *L) {
  9904. luaL_checktype(L, 1, LUA_TUSERDATA);
  9905. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9906. luaL_checktype(L, 2, LUA_TNUMBER);
  9907. Number rfAngle = lua_tonumber(L, 2);
  9908. luaL_checktype(L, 3, LUA_TUSERDATA);
  9909. Vector3 rkAxis = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  9910. inst->toAngleAxis(rfAngle, rkAxis);
  9911. return 0;
  9912. }
  9913. static int Polycode_Quaternion_createFromAxisAngle(lua_State *L) {
  9914. luaL_checktype(L, 1, LUA_TUSERDATA);
  9915. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9916. luaL_checktype(L, 2, LUA_TNUMBER);
  9917. Number x = lua_tonumber(L, 2);
  9918. luaL_checktype(L, 3, LUA_TNUMBER);
  9919. Number y = lua_tonumber(L, 3);
  9920. luaL_checktype(L, 4, LUA_TNUMBER);
  9921. Number z = lua_tonumber(L, 4);
  9922. luaL_checktype(L, 5, LUA_TNUMBER);
  9923. Number degrees = lua_tonumber(L, 5);
  9924. inst->createFromAxisAngle(x, y, z, degrees);
  9925. return 0;
  9926. }
  9927. static int Polycode_Quaternion_createMatrix(lua_State *L) {
  9928. luaL_checktype(L, 1, LUA_TUSERDATA);
  9929. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9930. Matrix4 *retInst = new Matrix4();
  9931. *retInst = inst->createMatrix();
  9932. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9933. luaL_getmetatable(L, "Polycode.Matrix4");
  9934. lua_setmetatable(L, -2);
  9935. *userdataPtr = (PolyBase*)retInst;
  9936. return 1;
  9937. }
  9938. static int Polycode_Quaternion_applyTo(lua_State *L) {
  9939. luaL_checktype(L, 1, LUA_TUSERDATA);
  9940. Quaternion *inst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 1));
  9941. luaL_checktype(L, 2, LUA_TUSERDATA);
  9942. Vector3 v = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  9943. Vector3 *retInst = new Vector3();
  9944. *retInst = inst->applyTo(v);
  9945. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9946. luaL_getmetatable(L, "Polycode.Vector3");
  9947. lua_setmetatable(L, -2);
  9948. *userdataPtr = (PolyBase*)retInst;
  9949. return 1;
  9950. }
  9951. static int Polycode_delete_Quaternion(lua_State *L) {
  9952. luaL_checktype(L, 1, LUA_TUSERDATA);
  9953. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  9954. delete ((Quaternion*) *inst);
  9955. *inst = NULL;
  9956. return 0;
  9957. }
  9958. static int Polycode_QuatTriple_get_q1(lua_State *L) {
  9959. luaL_checktype(L, 1, LUA_TUSERDATA);
  9960. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9961. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9962. *userdataPtr = (PolyBase*)&inst->q1;
  9963. return 1;
  9964. }
  9965. static int Polycode_QuatTriple_get_q2(lua_State *L) {
  9966. luaL_checktype(L, 1, LUA_TUSERDATA);
  9967. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9968. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9969. *userdataPtr = (PolyBase*)&inst->q2;
  9970. return 1;
  9971. }
  9972. static int Polycode_QuatTriple_get_q3(lua_State *L) {
  9973. luaL_checktype(L, 1, LUA_TUSERDATA);
  9974. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9975. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  9976. *userdataPtr = (PolyBase*)&inst->q3;
  9977. return 1;
  9978. }
  9979. static int Polycode_QuatTriple_get_time(lua_State *L) {
  9980. luaL_checktype(L, 1, LUA_TUSERDATA);
  9981. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9982. lua_pushnumber(L, inst->time);
  9983. return 1;
  9984. }
  9985. static int Polycode_QuatTriple_set_q1(lua_State *L) {
  9986. luaL_checktype(L, 1, LUA_TUSERDATA);
  9987. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9988. luaL_checktype(L, 2, LUA_TUSERDATA);
  9989. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9990. inst->q1 = *argInst;
  9991. return 0;
  9992. }
  9993. static int Polycode_QuatTriple_set_q2(lua_State *L) {
  9994. luaL_checktype(L, 1, LUA_TUSERDATA);
  9995. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  9996. luaL_checktype(L, 2, LUA_TUSERDATA);
  9997. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  9998. inst->q2 = *argInst;
  9999. return 0;
  10000. }
  10001. static int Polycode_QuatTriple_set_q3(lua_State *L) {
  10002. luaL_checktype(L, 1, LUA_TUSERDATA);
  10003. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  10004. luaL_checktype(L, 2, LUA_TUSERDATA);
  10005. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  10006. inst->q3 = *argInst;
  10007. return 0;
  10008. }
  10009. static int Polycode_QuatTriple_set_time(lua_State *L) {
  10010. luaL_checktype(L, 1, LUA_TUSERDATA);
  10011. QuatTriple *inst = (QuatTriple*) *((PolyBase**)lua_touserdata(L, 1));
  10012. Number param = lua_tonumber(L, 2);
  10013. inst->time = param;
  10014. return 0;
  10015. }
  10016. static int Polycode_delete_QuatTriple(lua_State *L) {
  10017. luaL_checktype(L, 1, LUA_TUSERDATA);
  10018. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10019. delete ((QuatTriple*) *inst);
  10020. *inst = NULL;
  10021. return 0;
  10022. }
  10023. static int Polycode_QuaternionCurve(lua_State *L) {
  10024. luaL_checktype(L, 1, LUA_TUSERDATA);
  10025. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  10026. luaL_checktype(L, 2, LUA_TUSERDATA);
  10027. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  10028. luaL_checktype(L, 3, LUA_TUSERDATA);
  10029. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  10030. luaL_checktype(L, 4, LUA_TUSERDATA);
  10031. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  10032. QuaternionCurve *inst = new QuaternionCurve(wCurve, xCurve, yCurve, zCurve);
  10033. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10034. *userdataPtr = (PolyBase*)inst;
  10035. luaL_getmetatable(L, "Polycode.QuaternionCurve");
  10036. lua_setmetatable(L, -2);
  10037. return 1;
  10038. }
  10039. static int Polycode_QuaternionCurve_interpolate(lua_State *L) {
  10040. luaL_checktype(L, 1, LUA_TUSERDATA);
  10041. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  10042. luaL_checktype(L, 2, LUA_TNUMBER);
  10043. Number t = lua_tonumber(L, 2);
  10044. luaL_checktype(L, 3, LUA_TBOOLEAN);
  10045. bool useShortestPath = lua_toboolean(L, 3) != 0;
  10046. Quaternion *retInst = new Quaternion();
  10047. *retInst = inst->interpolate(t, useShortestPath);
  10048. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10049. luaL_getmetatable(L, "Polycode.Quaternion");
  10050. lua_setmetatable(L, -2);
  10051. *userdataPtr = (PolyBase*)retInst;
  10052. return 1;
  10053. }
  10054. static int Polycode_QuaternionCurve_generatePointsFromCurves(lua_State *L) {
  10055. luaL_checktype(L, 1, LUA_TUSERDATA);
  10056. QuaternionCurve *inst = (QuaternionCurve*) *((PolyBase**)lua_touserdata(L, 1));
  10057. luaL_checktype(L, 2, LUA_TUSERDATA);
  10058. BezierCurve* wCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 2));
  10059. luaL_checktype(L, 3, LUA_TUSERDATA);
  10060. BezierCurve* xCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  10061. luaL_checktype(L, 4, LUA_TUSERDATA);
  10062. BezierCurve* yCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 4));
  10063. luaL_checktype(L, 5, LUA_TUSERDATA);
  10064. BezierCurve* zCurve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 5));
  10065. inst->generatePointsFromCurves(wCurve, xCurve, yCurve, zCurve);
  10066. return 0;
  10067. }
  10068. static int Polycode_delete_QuaternionCurve(lua_State *L) {
  10069. luaL_checktype(L, 1, LUA_TUSERDATA);
  10070. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10071. delete ((QuaternionCurve*) *inst);
  10072. *inst = NULL;
  10073. return 0;
  10074. }
  10075. static int Polycode_Ray_get_origin(lua_State *L) {
  10076. luaL_checktype(L, 1, LUA_TUSERDATA);
  10077. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10078. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10079. *userdataPtr = (PolyBase*)&inst->origin;
  10080. return 1;
  10081. }
  10082. static int Polycode_Ray_get_direction(lua_State *L) {
  10083. luaL_checktype(L, 1, LUA_TUSERDATA);
  10084. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10085. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10086. *userdataPtr = (PolyBase*)&inst->direction;
  10087. return 1;
  10088. }
  10089. static int Polycode_Ray_get_inv_direction(lua_State *L) {
  10090. luaL_checktype(L, 1, LUA_TUSERDATA);
  10091. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10092. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10093. *userdataPtr = (PolyBase*)&inst->inv_direction;
  10094. return 1;
  10095. }
  10096. static int Polycode_Ray_set_origin(lua_State *L) {
  10097. luaL_checktype(L, 1, LUA_TUSERDATA);
  10098. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10099. luaL_checktype(L, 2, LUA_TUSERDATA);
  10100. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10101. inst->origin = *argInst;
  10102. return 0;
  10103. }
  10104. static int Polycode_Ray_set_direction(lua_State *L) {
  10105. luaL_checktype(L, 1, LUA_TUSERDATA);
  10106. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10107. luaL_checktype(L, 2, LUA_TUSERDATA);
  10108. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10109. inst->direction = *argInst;
  10110. return 0;
  10111. }
  10112. static int Polycode_Ray_set_inv_direction(lua_State *L) {
  10113. luaL_checktype(L, 1, LUA_TUSERDATA);
  10114. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10115. luaL_checktype(L, 2, LUA_TUSERDATA);
  10116. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10117. inst->inv_direction = *argInst;
  10118. return 0;
  10119. }
  10120. static int Polycode_Ray(lua_State *L) {
  10121. Ray *inst = new Ray();
  10122. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10123. *userdataPtr = (PolyBase*)inst;
  10124. luaL_getmetatable(L, "Polycode.Ray");
  10125. lua_setmetatable(L, -2);
  10126. return 1;
  10127. }
  10128. static int Polycode_Ray_boxIntersect(lua_State *L) {
  10129. luaL_checktype(L, 1, LUA_TUSERDATA);
  10130. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10131. luaL_checktype(L, 2, LUA_TUSERDATA);
  10132. Vector3 box = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10133. luaL_checktype(L, 3, LUA_TUSERDATA);
  10134. Matrix4 transformMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  10135. Number near;
  10136. if(lua_isnumber(L, 4)) {
  10137. near = lua_tonumber(L, 4);
  10138. } else {
  10139. near = 0.0;
  10140. }
  10141. Number far;
  10142. if(lua_isnumber(L, 5)) {
  10143. far = lua_tonumber(L, 5);
  10144. } else {
  10145. far = 9999.0;
  10146. }
  10147. lua_pushnumber(L, inst->boxIntersect(box, transformMatrix, near, far));
  10148. return 1;
  10149. }
  10150. static int Polycode_Ray_planeIntersectPoint(lua_State *L) {
  10151. luaL_checktype(L, 1, LUA_TUSERDATA);
  10152. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10153. luaL_checktype(L, 2, LUA_TUSERDATA);
  10154. Vector3 planeNormal = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10155. luaL_checktype(L, 3, LUA_TNUMBER);
  10156. Number planeDistance = lua_tonumber(L, 3);
  10157. Vector3 *retInst = new Vector3();
  10158. *retInst = inst->planeIntersectPoint(planeNormal, planeDistance);
  10159. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10160. luaL_getmetatable(L, "Polycode.Vector3");
  10161. lua_setmetatable(L, -2);
  10162. *userdataPtr = (PolyBase*)retInst;
  10163. return 1;
  10164. }
  10165. static int Polycode_Ray_tranformByMatrix(lua_State *L) {
  10166. luaL_checktype(L, 1, LUA_TUSERDATA);
  10167. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10168. luaL_checktype(L, 2, LUA_TUSERDATA);
  10169. Matrix4 matrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  10170. Ray *retInst = new Ray();
  10171. *retInst = inst->tranformByMatrix(matrix);
  10172. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10173. luaL_getmetatable(L, "Polycode.Ray");
  10174. lua_setmetatable(L, -2);
  10175. *userdataPtr = (PolyBase*)retInst;
  10176. return 1;
  10177. }
  10178. static int Polycode_Ray_closestPointOnRay(lua_State *L) {
  10179. luaL_checktype(L, 1, LUA_TUSERDATA);
  10180. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10181. luaL_checktype(L, 2, LUA_TUSERDATA);
  10182. Vector3 point = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10183. Vector3 *retInst = new Vector3();
  10184. *retInst = inst->closestPointOnRay(point);
  10185. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10186. luaL_getmetatable(L, "Polycode.Vector3");
  10187. lua_setmetatable(L, -2);
  10188. *userdataPtr = (PolyBase*)retInst;
  10189. return 1;
  10190. }
  10191. static int Polycode_Ray_closestPointsBetween(lua_State *L) {
  10192. luaL_checktype(L, 1, LUA_TUSERDATA);
  10193. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10194. luaL_checktype(L, 2, LUA_TUSERDATA);
  10195. Ray ray2 = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  10196. luaL_checktype(L, 3, LUA_TUSERDATA);
  10197. Vector3* point1 = (Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  10198. luaL_checktype(L, 4, LUA_TUSERDATA);
  10199. Vector3* point2 = (Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  10200. lua_pushboolean(L, inst->closestPointsBetween(ray2, point1, point2));
  10201. return 1;
  10202. }
  10203. static int Polycode_Ray_polygonIntersect(lua_State *L) {
  10204. luaL_checktype(L, 1, LUA_TUSERDATA);
  10205. Ray *inst = (Ray*) *((PolyBase**)lua_touserdata(L, 1));
  10206. luaL_checktype(L, 2, LUA_TUSERDATA);
  10207. Vector3 v1 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  10208. luaL_checktype(L, 3, LUA_TUSERDATA);
  10209. Vector3 v2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 3));
  10210. luaL_checktype(L, 4, LUA_TUSERDATA);
  10211. Vector3 v3 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  10212. lua_pushboolean(L, inst->polygonIntersect(v1, v2, v3));
  10213. return 1;
  10214. }
  10215. static int Polycode_delete_Ray(lua_State *L) {
  10216. luaL_checktype(L, 1, LUA_TUSERDATA);
  10217. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10218. delete ((Ray*) *inst);
  10219. *inst = NULL;
  10220. return 0;
  10221. }
  10222. static int Polycode_Rectangle_get_x(lua_State *L) {
  10223. luaL_checktype(L, 1, LUA_TUSERDATA);
  10224. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10225. lua_pushnumber(L, inst->x);
  10226. return 1;
  10227. }
  10228. static int Polycode_Rectangle_get_y(lua_State *L) {
  10229. luaL_checktype(L, 1, LUA_TUSERDATA);
  10230. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10231. lua_pushnumber(L, inst->y);
  10232. return 1;
  10233. }
  10234. static int Polycode_Rectangle_get_w(lua_State *L) {
  10235. luaL_checktype(L, 1, LUA_TUSERDATA);
  10236. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10237. lua_pushnumber(L, inst->w);
  10238. return 1;
  10239. }
  10240. static int Polycode_Rectangle_get_h(lua_State *L) {
  10241. luaL_checktype(L, 1, LUA_TUSERDATA);
  10242. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10243. lua_pushnumber(L, inst->h);
  10244. return 1;
  10245. }
  10246. static int Polycode_Rectangle_set_x(lua_State *L) {
  10247. luaL_checktype(L, 1, LUA_TUSERDATA);
  10248. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10249. Number param = lua_tonumber(L, 2);
  10250. inst->x = param;
  10251. return 0;
  10252. }
  10253. static int Polycode_Rectangle_set_y(lua_State *L) {
  10254. luaL_checktype(L, 1, LUA_TUSERDATA);
  10255. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10256. Number param = lua_tonumber(L, 2);
  10257. inst->y = param;
  10258. return 0;
  10259. }
  10260. static int Polycode_Rectangle_set_w(lua_State *L) {
  10261. luaL_checktype(L, 1, LUA_TUSERDATA);
  10262. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10263. Number param = lua_tonumber(L, 2);
  10264. inst->w = param;
  10265. return 0;
  10266. }
  10267. static int Polycode_Rectangle_set_h(lua_State *L) {
  10268. luaL_checktype(L, 1, LUA_TUSERDATA);
  10269. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10270. Number param = lua_tonumber(L, 2);
  10271. inst->h = param;
  10272. return 0;
  10273. }
  10274. static int Polycode_Rectangle(lua_State *L) {
  10275. Rectangle *inst = new Rectangle();
  10276. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10277. *userdataPtr = (PolyBase*)inst;
  10278. luaL_getmetatable(L, "Polycode.Rectangle");
  10279. lua_setmetatable(L, -2);
  10280. return 1;
  10281. }
  10282. static int Polycode_Rectangle_setRect(lua_State *L) {
  10283. luaL_checktype(L, 1, LUA_TUSERDATA);
  10284. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10285. luaL_checktype(L, 2, LUA_TNUMBER);
  10286. Number x = lua_tonumber(L, 2);
  10287. luaL_checktype(L, 3, LUA_TNUMBER);
  10288. Number y = lua_tonumber(L, 3);
  10289. luaL_checktype(L, 4, LUA_TNUMBER);
  10290. Number w = lua_tonumber(L, 4);
  10291. luaL_checktype(L, 5, LUA_TNUMBER);
  10292. Number h = lua_tonumber(L, 5);
  10293. inst->setRect(x, y, w, h);
  10294. return 0;
  10295. }
  10296. static int Polycode_Rectangle_Clipped(lua_State *L) {
  10297. luaL_checktype(L, 1, LUA_TUSERDATA);
  10298. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10299. luaL_checktype(L, 2, LUA_TUSERDATA);
  10300. Polycode::Rectangle rect = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  10301. Polycode::Rectangle *retInst = new Polycode::Rectangle();
  10302. *retInst = inst->Clipped(rect);
  10303. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10304. luaL_getmetatable(L, "Polycode.Polycode::Rectangle");
  10305. lua_setmetatable(L, -2);
  10306. *userdataPtr = (PolyBase*)retInst;
  10307. return 1;
  10308. }
  10309. static int Polycode_Rectangle_minX(lua_State *L) {
  10310. luaL_checktype(L, 1, LUA_TUSERDATA);
  10311. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10312. lua_pushnumber(L, inst->minX());
  10313. return 1;
  10314. }
  10315. static int Polycode_Rectangle_maxX(lua_State *L) {
  10316. luaL_checktype(L, 1, LUA_TUSERDATA);
  10317. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10318. lua_pushnumber(L, inst->maxX());
  10319. return 1;
  10320. }
  10321. static int Polycode_Rectangle_minY(lua_State *L) {
  10322. luaL_checktype(L, 1, LUA_TUSERDATA);
  10323. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10324. lua_pushnumber(L, inst->minY());
  10325. return 1;
  10326. }
  10327. static int Polycode_Rectangle_maxY(lua_State *L) {
  10328. luaL_checktype(L, 1, LUA_TUSERDATA);
  10329. Rectangle *inst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 1));
  10330. lua_pushnumber(L, inst->maxY());
  10331. return 1;
  10332. }
  10333. static int Polycode_delete_Rectangle(lua_State *L) {
  10334. luaL_checktype(L, 1, LUA_TUSERDATA);
  10335. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10336. delete ((Rectangle*) *inst);
  10337. *inst = NULL;
  10338. return 0;
  10339. }
  10340. static int Polycode_RenderDataArray_get_type(lua_State *L) {
  10341. luaL_checktype(L, 1, LUA_TUSERDATA);
  10342. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10343. lua_pushinteger(L, inst->type);
  10344. return 1;
  10345. }
  10346. static int Polycode_RenderDataArray_get_customArrayName(lua_State *L) {
  10347. luaL_checktype(L, 1, LUA_TUSERDATA);
  10348. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10349. lua_pushstring(L, inst->customArrayName.c_str());
  10350. return 1;
  10351. }
  10352. static int Polycode_RenderDataArray_get_hasVBO(lua_State *L) {
  10353. luaL_checktype(L, 1, LUA_TUSERDATA);
  10354. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10355. lua_pushboolean(L, inst->hasVBO);
  10356. return 1;
  10357. }
  10358. static int Polycode_RenderDataArray_set_type(lua_State *L) {
  10359. luaL_checktype(L, 1, LUA_TUSERDATA);
  10360. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10361. int param = lua_tointeger(L, 2);
  10362. inst->type = param;
  10363. return 0;
  10364. }
  10365. static int Polycode_RenderDataArray_set_customArrayName(lua_State *L) {
  10366. luaL_checktype(L, 1, LUA_TUSERDATA);
  10367. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10368. String param = lua_tostring(L, 2);
  10369. inst->customArrayName = param;
  10370. return 0;
  10371. }
  10372. static int Polycode_RenderDataArray_set_hasVBO(lua_State *L) {
  10373. luaL_checktype(L, 1, LUA_TUSERDATA);
  10374. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10375. bool param = lua_toboolean(L, 2) != 0;
  10376. inst->hasVBO = param;
  10377. return 0;
  10378. }
  10379. static int Polycode_RenderDataArray(lua_State *L) {
  10380. luaL_checktype(L, 1, LUA_TNUMBER);
  10381. int type = lua_tointeger(L, 1);
  10382. RenderDataArray *inst = new RenderDataArray(type);
  10383. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10384. *userdataPtr = (PolyBase*)inst;
  10385. luaL_getmetatable(L, "Polycode.RenderDataArray");
  10386. lua_setmetatable(L, -2);
  10387. return 1;
  10388. }
  10389. static int Polycode_RenderDataArray_getArrayData(lua_State *L) {
  10390. luaL_checktype(L, 1, LUA_TUSERDATA);
  10391. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10392. PolyBase *ptrRetVal = (PolyBase*)inst->getArrayData();
  10393. if(ptrRetVal == NULL) {
  10394. lua_pushnil(L);
  10395. } else {
  10396. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10397. *userdataPtr = ptrRetVal;
  10398. }
  10399. return 1;
  10400. }
  10401. static int Polycode_RenderDataArray_getDataSize(lua_State *L) {
  10402. luaL_checktype(L, 1, LUA_TUSERDATA);
  10403. RenderDataArray *inst = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 1));
  10404. lua_pushinteger(L, inst->getDataSize());
  10405. return 1;
  10406. }
  10407. static int Polycode_delete_RenderDataArray(lua_State *L) {
  10408. luaL_checktype(L, 1, LUA_TUSERDATA);
  10409. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10410. delete ((RenderDataArray*) *inst);
  10411. *inst = NULL;
  10412. return 0;
  10413. }
  10414. static int Polycode_LightShadowInfoBinding_get_shadowMatrix(lua_State *L) {
  10415. luaL_checktype(L, 1, LUA_TUSERDATA);
  10416. LightShadowInfoBinding *inst = (LightShadowInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10417. if(!inst->shadowMatrix) {
  10418. lua_pushnil(L);
  10419. } else {
  10420. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10421. *userdataPtr = (PolyBase*)inst->shadowMatrix;
  10422. }
  10423. return 1;
  10424. }
  10425. static int Polycode_LightShadowInfoBinding_get_shadowBuffer(lua_State *L) {
  10426. luaL_checktype(L, 1, LUA_TUSERDATA);
  10427. LightShadowInfoBinding *inst = (LightShadowInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10428. if(!inst->shadowBuffer) {
  10429. lua_pushnil(L);
  10430. } else {
  10431. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10432. *userdataPtr = (PolyBase*)inst->shadowBuffer;
  10433. }
  10434. return 1;
  10435. }
  10436. static int Polycode_LightShadowInfoBinding_set_shadowMatrix(lua_State *L) {
  10437. luaL_checktype(L, 1, LUA_TUSERDATA);
  10438. LightShadowInfoBinding *inst = (LightShadowInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10439. luaL_checktype(L, 2, LUA_TUSERDATA);
  10440. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10441. inst->shadowMatrix = *argInst;
  10442. return 0;
  10443. }
  10444. static int Polycode_LightShadowInfoBinding_set_shadowBuffer(lua_State *L) {
  10445. luaL_checktype(L, 1, LUA_TUSERDATA);
  10446. LightShadowInfoBinding *inst = (LightShadowInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10447. luaL_checktype(L, 2, LUA_TUSERDATA);
  10448. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10449. inst->shadowBuffer = *argInst;
  10450. return 0;
  10451. }
  10452. static int Polycode_delete_LightShadowInfoBinding(lua_State *L) {
  10453. luaL_checktype(L, 1, LUA_TUSERDATA);
  10454. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10455. delete ((LightShadowInfoBinding*) *inst);
  10456. *inst = NULL;
  10457. return 0;
  10458. }
  10459. static int Polycode_LightInfoBinding_get_position(lua_State *L) {
  10460. luaL_checktype(L, 1, LUA_TUSERDATA);
  10461. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10462. if(!inst->position) {
  10463. lua_pushnil(L);
  10464. } else {
  10465. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10466. *userdataPtr = (PolyBase*)inst->position;
  10467. }
  10468. return 1;
  10469. }
  10470. static int Polycode_LightInfoBinding_get_direction(lua_State *L) {
  10471. luaL_checktype(L, 1, LUA_TUSERDATA);
  10472. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10473. if(!inst->direction) {
  10474. lua_pushnil(L);
  10475. } else {
  10476. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10477. *userdataPtr = (PolyBase*)inst->direction;
  10478. }
  10479. return 1;
  10480. }
  10481. static int Polycode_LightInfoBinding_get_specular(lua_State *L) {
  10482. luaL_checktype(L, 1, LUA_TUSERDATA);
  10483. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10484. if(!inst->specular) {
  10485. lua_pushnil(L);
  10486. } else {
  10487. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10488. *userdataPtr = (PolyBase*)inst->specular;
  10489. }
  10490. return 1;
  10491. }
  10492. static int Polycode_LightInfoBinding_get_diffuse(lua_State *L) {
  10493. luaL_checktype(L, 1, LUA_TUSERDATA);
  10494. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10495. if(!inst->diffuse) {
  10496. lua_pushnil(L);
  10497. } else {
  10498. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10499. *userdataPtr = (PolyBase*)inst->diffuse;
  10500. }
  10501. return 1;
  10502. }
  10503. static int Polycode_LightInfoBinding_get_spotExponent(lua_State *L) {
  10504. luaL_checktype(L, 1, LUA_TUSERDATA);
  10505. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10506. if(!inst->spotExponent) {
  10507. lua_pushnil(L);
  10508. } else {
  10509. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10510. *userdataPtr = (PolyBase*)inst->spotExponent;
  10511. }
  10512. return 1;
  10513. }
  10514. static int Polycode_LightInfoBinding_get_spotCosCutoff(lua_State *L) {
  10515. luaL_checktype(L, 1, LUA_TUSERDATA);
  10516. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10517. if(!inst->spotCosCutoff) {
  10518. lua_pushnil(L);
  10519. } else {
  10520. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10521. *userdataPtr = (PolyBase*)inst->spotCosCutoff;
  10522. }
  10523. return 1;
  10524. }
  10525. static int Polycode_LightInfoBinding_get_constantAttenuation(lua_State *L) {
  10526. luaL_checktype(L, 1, LUA_TUSERDATA);
  10527. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10528. if(!inst->constantAttenuation) {
  10529. lua_pushnil(L);
  10530. } else {
  10531. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10532. *userdataPtr = (PolyBase*)inst->constantAttenuation;
  10533. }
  10534. return 1;
  10535. }
  10536. static int Polycode_LightInfoBinding_get_linearAttenuation(lua_State *L) {
  10537. luaL_checktype(L, 1, LUA_TUSERDATA);
  10538. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10539. if(!inst->linearAttenuation) {
  10540. lua_pushnil(L);
  10541. } else {
  10542. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10543. *userdataPtr = (PolyBase*)inst->linearAttenuation;
  10544. }
  10545. return 1;
  10546. }
  10547. static int Polycode_LightInfoBinding_get_quadraticAttenuation(lua_State *L) {
  10548. luaL_checktype(L, 1, LUA_TUSERDATA);
  10549. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10550. if(!inst->quadraticAttenuation) {
  10551. lua_pushnil(L);
  10552. } else {
  10553. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10554. *userdataPtr = (PolyBase*)inst->quadraticAttenuation;
  10555. }
  10556. return 1;
  10557. }
  10558. static int Polycode_LightInfoBinding_get_shadowEnabled(lua_State *L) {
  10559. luaL_checktype(L, 1, LUA_TUSERDATA);
  10560. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10561. if(!inst->shadowEnabled) {
  10562. lua_pushnil(L);
  10563. } else {
  10564. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10565. *userdataPtr = (PolyBase*)inst->shadowEnabled;
  10566. }
  10567. return 1;
  10568. }
  10569. static int Polycode_LightInfoBinding_set_position(lua_State *L) {
  10570. luaL_checktype(L, 1, LUA_TUSERDATA);
  10571. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10572. luaL_checktype(L, 2, LUA_TUSERDATA);
  10573. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10574. inst->position = *argInst;
  10575. return 0;
  10576. }
  10577. static int Polycode_LightInfoBinding_set_direction(lua_State *L) {
  10578. luaL_checktype(L, 1, LUA_TUSERDATA);
  10579. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10580. luaL_checktype(L, 2, LUA_TUSERDATA);
  10581. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10582. inst->direction = *argInst;
  10583. return 0;
  10584. }
  10585. static int Polycode_LightInfoBinding_set_specular(lua_State *L) {
  10586. luaL_checktype(L, 1, LUA_TUSERDATA);
  10587. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10588. luaL_checktype(L, 2, LUA_TUSERDATA);
  10589. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10590. inst->specular = *argInst;
  10591. return 0;
  10592. }
  10593. static int Polycode_LightInfoBinding_set_diffuse(lua_State *L) {
  10594. luaL_checktype(L, 1, LUA_TUSERDATA);
  10595. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10596. luaL_checktype(L, 2, LUA_TUSERDATA);
  10597. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10598. inst->diffuse = *argInst;
  10599. return 0;
  10600. }
  10601. static int Polycode_LightInfoBinding_set_spotExponent(lua_State *L) {
  10602. luaL_checktype(L, 1, LUA_TUSERDATA);
  10603. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10604. luaL_checktype(L, 2, LUA_TUSERDATA);
  10605. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10606. inst->spotExponent = *argInst;
  10607. return 0;
  10608. }
  10609. static int Polycode_LightInfoBinding_set_spotCosCutoff(lua_State *L) {
  10610. luaL_checktype(L, 1, LUA_TUSERDATA);
  10611. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10612. luaL_checktype(L, 2, LUA_TUSERDATA);
  10613. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10614. inst->spotCosCutoff = *argInst;
  10615. return 0;
  10616. }
  10617. static int Polycode_LightInfoBinding_set_constantAttenuation(lua_State *L) {
  10618. luaL_checktype(L, 1, LUA_TUSERDATA);
  10619. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10620. luaL_checktype(L, 2, LUA_TUSERDATA);
  10621. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10622. inst->constantAttenuation = *argInst;
  10623. return 0;
  10624. }
  10625. static int Polycode_LightInfoBinding_set_linearAttenuation(lua_State *L) {
  10626. luaL_checktype(L, 1, LUA_TUSERDATA);
  10627. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10628. luaL_checktype(L, 2, LUA_TUSERDATA);
  10629. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10630. inst->linearAttenuation = *argInst;
  10631. return 0;
  10632. }
  10633. static int Polycode_LightInfoBinding_set_quadraticAttenuation(lua_State *L) {
  10634. luaL_checktype(L, 1, LUA_TUSERDATA);
  10635. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10636. luaL_checktype(L, 2, LUA_TUSERDATA);
  10637. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10638. inst->quadraticAttenuation = *argInst;
  10639. return 0;
  10640. }
  10641. static int Polycode_LightInfoBinding_set_shadowEnabled(lua_State *L) {
  10642. luaL_checktype(L, 1, LUA_TUSERDATA);
  10643. LightInfoBinding *inst = (LightInfoBinding*) *((PolyBase**)lua_touserdata(L, 1));
  10644. luaL_checktype(L, 2, LUA_TUSERDATA);
  10645. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  10646. inst->shadowEnabled = *argInst;
  10647. return 0;
  10648. }
  10649. static int Polycode_delete_LightInfoBinding(lua_State *L) {
  10650. luaL_checktype(L, 1, LUA_TUSERDATA);
  10651. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10652. delete ((LightInfoBinding*) *inst);
  10653. *inst = NULL;
  10654. return 0;
  10655. }
  10656. static int Polycode_delete_RenderFrame(lua_State *L) {
  10657. luaL_checktype(L, 1, LUA_TUSERDATA);
  10658. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10659. delete ((RenderFrame*) *inst);
  10660. *inst = NULL;
  10661. return 0;
  10662. }
  10663. static int Polycode_RendererThreadJob_get_jobType(lua_State *L) {
  10664. luaL_checktype(L, 1, LUA_TUSERDATA);
  10665. RendererThreadJob *inst = (RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 1));
  10666. lua_pushinteger(L, inst->jobType);
  10667. return 1;
  10668. }
  10669. static int Polycode_RendererThreadJob_set_jobType(lua_State *L) {
  10670. luaL_checktype(L, 1, LUA_TUSERDATA);
  10671. RendererThreadJob *inst = (RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 1));
  10672. int param = lua_tointeger(L, 2);
  10673. inst->jobType = param;
  10674. return 0;
  10675. }
  10676. static int Polycode_delete_RendererThreadJob(lua_State *L) {
  10677. luaL_checktype(L, 1, LUA_TUSERDATA);
  10678. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10679. delete ((RendererThreadJob*) *inst);
  10680. *inst = NULL;
  10681. return 0;
  10682. }
  10683. static int Polycode_RenderThread(lua_State *L) {
  10684. RenderThread *inst = new RenderThread();
  10685. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10686. *userdataPtr = (PolyBase*)inst;
  10687. luaL_getmetatable(L, "Polycode.RenderThread");
  10688. lua_setmetatable(L, -2);
  10689. return 1;
  10690. }
  10691. static int Polycode_RenderThread_setGraphicsInterface(lua_State *L) {
  10692. luaL_checktype(L, 1, LUA_TUSERDATA);
  10693. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10694. luaL_checktype(L, 2, LUA_TUSERDATA);
  10695. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  10696. luaL_checktype(L, 3, LUA_TUSERDATA);
  10697. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  10698. inst->setGraphicsInterface(core, graphicsInterface);
  10699. return 0;
  10700. }
  10701. static int Polycode_RenderThread_runThread(lua_State *L) {
  10702. luaL_checktype(L, 1, LUA_TUSERDATA);
  10703. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10704. inst->runThread();
  10705. return 0;
  10706. }
  10707. static int Polycode_RenderThread_enqueueFrame(lua_State *L) {
  10708. luaL_checktype(L, 1, LUA_TUSERDATA);
  10709. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10710. luaL_checktype(L, 2, LUA_TUSERDATA);
  10711. RenderFrame* frame = (RenderFrame*) *((PolyBase**)lua_touserdata(L, 2));
  10712. inst->enqueueFrame(frame);
  10713. return 0;
  10714. }
  10715. static int Polycode_RenderThread_enqueueJob(lua_State *L) {
  10716. luaL_checktype(L, 1, LUA_TUSERDATA);
  10717. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10718. luaL_checktype(L, 2, LUA_TNUMBER);
  10719. int jobType = lua_tointeger(L, 2);
  10720. luaL_checktype(L, 3, LUA_TUSERDATA);
  10721. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  10722. void* data2;
  10723. if(lua_isuserdata(L, 4)) {
  10724. data2 = (void*) *((PolyBase**)lua_touserdata(L, 4));
  10725. } else {
  10726. data2 = NULL;
  10727. }
  10728. inst->enqueueJob(jobType, data, data2);
  10729. return 0;
  10730. }
  10731. static int Polycode_RenderThread_processJob(lua_State *L) {
  10732. luaL_checktype(L, 1, LUA_TUSERDATA);
  10733. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10734. luaL_checktype(L, 2, LUA_TUSERDATA);
  10735. RendererThreadJob job = *(RendererThreadJob*) *((PolyBase**)lua_touserdata(L, 2));
  10736. inst->processJob(job);
  10737. return 0;
  10738. }
  10739. static int Polycode_RenderThread_getShaderBinding(lua_State *L) {
  10740. luaL_checktype(L, 1, LUA_TUSERDATA);
  10741. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10742. PolyBase *ptrRetVal = (PolyBase*)inst->getShaderBinding();
  10743. if(ptrRetVal == NULL) {
  10744. lua_pushnil(L);
  10745. } else {
  10746. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10747. *userdataPtr = ptrRetVal;
  10748. }
  10749. return 1;
  10750. }
  10751. static int Polycode_RenderThread_processDrawBuffer(lua_State *L) {
  10752. luaL_checktype(L, 1, LUA_TUSERDATA);
  10753. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10754. luaL_checktype(L, 2, LUA_TUSERDATA);
  10755. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10756. inst->processDrawBuffer(buffer);
  10757. return 0;
  10758. }
  10759. static int Polycode_RenderThread_getFrameInfo(lua_State *L) {
  10760. luaL_checktype(L, 1, LUA_TUSERDATA);
  10761. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10762. RenderThreadDebugInfo *retInst = new RenderThreadDebugInfo();
  10763. *retInst = inst->getFrameInfo();
  10764. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10765. luaL_getmetatable(L, "Polycode.RenderThreadDebugInfo");
  10766. lua_setmetatable(L, -2);
  10767. *userdataPtr = (PolyBase*)retInst;
  10768. return 1;
  10769. }
  10770. static int Polycode_RenderThread_clearFrameQueue(lua_State *L) {
  10771. luaL_checktype(L, 1, LUA_TUSERDATA);
  10772. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10773. inst->clearFrameQueue();
  10774. return 0;
  10775. }
  10776. static int Polycode_RenderThread_initGlobals(lua_State *L) {
  10777. luaL_checktype(L, 1, LUA_TUSERDATA);
  10778. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10779. inst->initGlobals();
  10780. return 0;
  10781. }
  10782. static int Polycode_RenderThread_lockRenderMutex(lua_State *L) {
  10783. luaL_checktype(L, 1, LUA_TUSERDATA);
  10784. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10785. inst->lockRenderMutex();
  10786. return 0;
  10787. }
  10788. static int Polycode_RenderThread_unlockRenderMutex(lua_State *L) {
  10789. luaL_checktype(L, 1, LUA_TUSERDATA);
  10790. RenderThread *inst = (RenderThread*) *((PolyBase**)lua_touserdata(L, 1));
  10791. inst->unlockRenderMutex();
  10792. return 0;
  10793. }
  10794. static int Polycode_delete_RenderThread(lua_State *L) {
  10795. luaL_checktype(L, 1, LUA_TUSERDATA);
  10796. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10797. delete ((RenderThread*) *inst);
  10798. *inst = NULL;
  10799. return 0;
  10800. }
  10801. static int Polycode_RenderThreadDebugInfo_get_buffersProcessed(lua_State *L) {
  10802. luaL_checktype(L, 1, LUA_TUSERDATA);
  10803. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10804. lua_pushinteger(L, inst->buffersProcessed);
  10805. return 1;
  10806. }
  10807. static int Polycode_RenderThreadDebugInfo_get_drawCallsProcessed(lua_State *L) {
  10808. luaL_checktype(L, 1, LUA_TUSERDATA);
  10809. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10810. lua_pushinteger(L, inst->drawCallsProcessed);
  10811. return 1;
  10812. }
  10813. static int Polycode_RenderThreadDebugInfo_get_timeTaken(lua_State *L) {
  10814. luaL_checktype(L, 1, LUA_TUSERDATA);
  10815. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10816. lua_pushinteger(L, inst->timeTaken);
  10817. return 1;
  10818. }
  10819. static int Polycode_RenderThreadDebugInfo_set_buffersProcessed(lua_State *L) {
  10820. luaL_checktype(L, 1, LUA_TUSERDATA);
  10821. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10822. int param = lua_tointeger(L, 2);
  10823. inst->buffersProcessed = param;
  10824. return 0;
  10825. }
  10826. static int Polycode_RenderThreadDebugInfo_set_drawCallsProcessed(lua_State *L) {
  10827. luaL_checktype(L, 1, LUA_TUSERDATA);
  10828. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10829. int param = lua_tointeger(L, 2);
  10830. inst->drawCallsProcessed = param;
  10831. return 0;
  10832. }
  10833. static int Polycode_RenderThreadDebugInfo_set_timeTaken(lua_State *L) {
  10834. luaL_checktype(L, 1, LUA_TUSERDATA);
  10835. RenderThreadDebugInfo *inst = (RenderThreadDebugInfo*) *((PolyBase**)lua_touserdata(L, 1));
  10836. int param = lua_tointeger(L, 2);
  10837. inst->timeTaken = param;
  10838. return 0;
  10839. }
  10840. static int Polycode_delete_RenderThreadDebugInfo(lua_State *L) {
  10841. luaL_checktype(L, 1, LUA_TUSERDATA);
  10842. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  10843. delete ((RenderThreadDebugInfo*) *inst);
  10844. *inst = NULL;
  10845. return 0;
  10846. }
  10847. static int Polycode_Renderer_setGraphicsInterface(lua_State *L) {
  10848. luaL_checktype(L, 1, LUA_TUSERDATA);
  10849. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10850. luaL_checktype(L, 2, LUA_TUSERDATA);
  10851. Core* core = (Core*) *((PolyBase**)lua_touserdata(L, 2));
  10852. luaL_checktype(L, 3, LUA_TUSERDATA);
  10853. GraphicsInterface* graphicsInterface = (GraphicsInterface*) *((PolyBase**)lua_touserdata(L, 3));
  10854. inst->setGraphicsInterface(core, graphicsInterface);
  10855. return 0;
  10856. }
  10857. static int Polycode_Renderer_getRenderThread(lua_State *L) {
  10858. luaL_checktype(L, 1, LUA_TUSERDATA);
  10859. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10860. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderThread();
  10861. if(ptrRetVal == NULL) {
  10862. lua_pushnil(L);
  10863. } else {
  10864. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10865. *userdataPtr = ptrRetVal;
  10866. }
  10867. return 1;
  10868. }
  10869. static int Polycode_Renderer_createCubemap(lua_State *L) {
  10870. luaL_checktype(L, 1, LUA_TUSERDATA);
  10871. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10872. luaL_checktype(L, 2, LUA_TUSERDATA);
  10873. Texture* t0 = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  10874. luaL_checktype(L, 3, LUA_TUSERDATA);
  10875. Texture* t1 = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  10876. luaL_checktype(L, 4, LUA_TUSERDATA);
  10877. Texture* t2 = (Texture*) *((PolyBase**)lua_touserdata(L, 4));
  10878. luaL_checktype(L, 5, LUA_TUSERDATA);
  10879. Texture* t3 = (Texture*) *((PolyBase**)lua_touserdata(L, 5));
  10880. luaL_checktype(L, 6, LUA_TUSERDATA);
  10881. Texture* t4 = (Texture*) *((PolyBase**)lua_touserdata(L, 6));
  10882. luaL_checktype(L, 7, LUA_TUSERDATA);
  10883. Texture* t5 = (Texture*) *((PolyBase**)lua_touserdata(L, 7));
  10884. PolyBase *ptrRetVal = (PolyBase*)inst->createCubemap(t0, t1, t2, t3, t4, t5);
  10885. if(ptrRetVal == NULL) {
  10886. lua_pushnil(L);
  10887. } else {
  10888. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10889. *userdataPtr = ptrRetVal;
  10890. }
  10891. return 1;
  10892. }
  10893. static int Polycode_Renderer_createTexture(lua_State *L) {
  10894. luaL_checktype(L, 1, LUA_TUSERDATA);
  10895. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10896. luaL_checktype(L, 2, LUA_TNUMBER);
  10897. int width = lua_tointeger(L, 2);
  10898. luaL_checktype(L, 3, LUA_TNUMBER);
  10899. int height = lua_tointeger(L, 3);
  10900. luaL_checktype(L, 4, LUA_TUSERDATA);
  10901. char* textureData = (char*) *((PolyBase**)lua_touserdata(L, 4));
  10902. luaL_checktype(L, 5, LUA_TBOOLEAN);
  10903. bool clamp = lua_toboolean(L, 5) != 0;
  10904. luaL_checktype(L, 6, LUA_TBOOLEAN);
  10905. bool createMipmaps = lua_toboolean(L, 6) != 0;
  10906. luaL_checktype(L, 7, LUA_TNUMBER);
  10907. int type = lua_tointeger(L, 7);
  10908. luaL_checktype(L, 8, LUA_TNUMBER);
  10909. int filteringMode = lua_tointeger(L, 8);
  10910. luaL_checktype(L, 9, LUA_TNUMBER);
  10911. int anisotropy = lua_tointeger(L, 9);
  10912. luaL_checktype(L, 10, LUA_TBOOLEAN);
  10913. bool framebufferTexture = lua_toboolean(L, 10) != 0;
  10914. PolyBase *ptrRetVal = (PolyBase*)inst->createTexture(width, height, textureData, clamp, createMipmaps, type, filteringMode, anisotropy, framebufferTexture);
  10915. if(ptrRetVal == NULL) {
  10916. lua_pushnil(L);
  10917. } else {
  10918. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10919. *userdataPtr = ptrRetVal;
  10920. }
  10921. return 1;
  10922. }
  10923. static int Polycode_Renderer_createRenderBuffer(lua_State *L) {
  10924. luaL_checktype(L, 1, LUA_TUSERDATA);
  10925. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10926. luaL_checktype(L, 2, LUA_TNUMBER);
  10927. int width = lua_tointeger(L, 2);
  10928. luaL_checktype(L, 3, LUA_TNUMBER);
  10929. int height = lua_tointeger(L, 3);
  10930. luaL_checktype(L, 4, LUA_TBOOLEAN);
  10931. bool attachDepthBuffer = lua_toboolean(L, 4) != 0;
  10932. luaL_checktype(L, 5, LUA_TBOOLEAN);
  10933. bool floatingPoint = lua_toboolean(L, 5) != 0;
  10934. PolyBase *ptrRetVal = (PolyBase*)inst->createRenderBuffer(width, height, attachDepthBuffer, floatingPoint);
  10935. if(ptrRetVal == NULL) {
  10936. lua_pushnil(L);
  10937. } else {
  10938. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10939. *userdataPtr = ptrRetVal;
  10940. }
  10941. return 1;
  10942. }
  10943. static int Polycode_Renderer_destroyRenderBuffer(lua_State *L) {
  10944. luaL_checktype(L, 1, LUA_TUSERDATA);
  10945. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10946. luaL_checktype(L, 2, LUA_TUSERDATA);
  10947. RenderBuffer* buffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10948. inst->destroyRenderBuffer(buffer);
  10949. return 0;
  10950. }
  10951. static int Polycode_Renderer_destroyTexture(lua_State *L) {
  10952. luaL_checktype(L, 1, LUA_TUSERDATA);
  10953. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10954. luaL_checktype(L, 2, LUA_TUSERDATA);
  10955. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  10956. inst->destroyTexture(texture);
  10957. return 0;
  10958. }
  10959. static int Polycode_Renderer_processDrawBuffer(lua_State *L) {
  10960. luaL_checktype(L, 1, LUA_TUSERDATA);
  10961. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10962. luaL_checktype(L, 2, LUA_TUSERDATA);
  10963. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  10964. inst->processDrawBuffer(buffer);
  10965. return 0;
  10966. }
  10967. static int Polycode_Renderer_setBackingResolutionScale(lua_State *L) {
  10968. luaL_checktype(L, 1, LUA_TUSERDATA);
  10969. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10970. luaL_checktype(L, 2, LUA_TNUMBER);
  10971. Number xScale = lua_tonumber(L, 2);
  10972. luaL_checktype(L, 3, LUA_TNUMBER);
  10973. Number yScale = lua_tonumber(L, 3);
  10974. inst->setBackingResolutionScale(xScale, yScale);
  10975. return 0;
  10976. }
  10977. static int Polycode_Renderer_getBackingResolutionScaleX(lua_State *L) {
  10978. luaL_checktype(L, 1, LUA_TUSERDATA);
  10979. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10980. lua_pushnumber(L, inst->getBackingResolutionScaleX());
  10981. return 1;
  10982. }
  10983. static int Polycode_Renderer_getBackingResolutionScaleY(lua_State *L) {
  10984. luaL_checktype(L, 1, LUA_TUSERDATA);
  10985. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10986. lua_pushnumber(L, inst->getBackingResolutionScaleY());
  10987. return 1;
  10988. }
  10989. static int Polycode_Renderer_createProgram(lua_State *L) {
  10990. luaL_checktype(L, 1, LUA_TUSERDATA);
  10991. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  10992. luaL_checktype(L, 2, LUA_TSTRING);
  10993. String fileName = String(lua_tostring(L, 2));
  10994. PolyBase *ptrRetVal = (PolyBase*)inst->createProgram(fileName);
  10995. if(ptrRetVal == NULL) {
  10996. lua_pushnil(L);
  10997. } else {
  10998. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  10999. *userdataPtr = ptrRetVal;
  11000. }
  11001. return 1;
  11002. }
  11003. static int Polycode_Renderer_createShader(lua_State *L) {
  11004. luaL_checktype(L, 1, LUA_TUSERDATA);
  11005. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11006. luaL_checktype(L, 2, LUA_TUSERDATA);
  11007. ShaderProgram* vertexProgram = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  11008. luaL_checktype(L, 3, LUA_TUSERDATA);
  11009. ShaderProgram* fragmentProgram = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 3));
  11010. PolyBase *ptrRetVal = (PolyBase*)inst->createShader(vertexProgram, fragmentProgram);
  11011. if(ptrRetVal == NULL) {
  11012. lua_pushnil(L);
  11013. } else {
  11014. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11015. *userdataPtr = ptrRetVal;
  11016. }
  11017. return 1;
  11018. }
  11019. static int Polycode_Renderer_createVertexBuffers(lua_State *L) {
  11020. luaL_checktype(L, 1, LUA_TUSERDATA);
  11021. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11022. luaL_checktype(L, 2, LUA_TUSERDATA);
  11023. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  11024. inst->createVertexBuffers(mesh);
  11025. return 0;
  11026. }
  11027. static int Polycode_Renderer_enqueueFrameJob(lua_State *L) {
  11028. luaL_checktype(L, 1, LUA_TUSERDATA);
  11029. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11030. luaL_checktype(L, 2, LUA_TNUMBER);
  11031. int jobType = lua_tointeger(L, 2);
  11032. luaL_checktype(L, 3, LUA_TUSERDATA);
  11033. void* data = (void*) *((PolyBase**)lua_touserdata(L, 3));
  11034. inst->enqueueFrameJob(jobType, data);
  11035. return 0;
  11036. }
  11037. static int Polycode_Renderer_destroyProgram(lua_State *L) {
  11038. luaL_checktype(L, 1, LUA_TUSERDATA);
  11039. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11040. luaL_checktype(L, 2, LUA_TUSERDATA);
  11041. ShaderProgram* program = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  11042. inst->destroyProgram(program);
  11043. return 0;
  11044. }
  11045. static int Polycode_Renderer_destroyShader(lua_State *L) {
  11046. luaL_checktype(L, 1, LUA_TUSERDATA);
  11047. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11048. luaL_checktype(L, 2, LUA_TUSERDATA);
  11049. Shader* shader = (Shader*) *((PolyBase**)lua_touserdata(L, 2));
  11050. inst->destroyShader(shader);
  11051. return 0;
  11052. }
  11053. static int Polycode_Renderer_destroyBuffer(lua_State *L) {
  11054. luaL_checktype(L, 1, LUA_TUSERDATA);
  11055. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11056. luaL_checktype(L, 2, LUA_TUSERDATA);
  11057. RenderDataArray* array = (RenderDataArray*) *((PolyBase**)lua_touserdata(L, 2));
  11058. inst->destroyBuffer(array);
  11059. return 0;
  11060. }
  11061. static int Polycode_Renderer_destroyShaderBinding(lua_State *L) {
  11062. luaL_checktype(L, 1, LUA_TUSERDATA);
  11063. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11064. luaL_checktype(L, 2, LUA_TUSERDATA);
  11065. ShaderBinding* binding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 2));
  11066. inst->destroyShaderBinding(binding);
  11067. return 0;
  11068. }
  11069. static int Polycode_Renderer_destroyShaderParam(lua_State *L) {
  11070. luaL_checktype(L, 1, LUA_TUSERDATA);
  11071. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11072. luaL_checktype(L, 2, LUA_TUSERDATA);
  11073. LocalShaderParam* param = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 2));
  11074. inst->destroyShaderParam(param);
  11075. return 0;
  11076. }
  11077. static int Polycode_Renderer_setTextureParam(lua_State *L) {
  11078. luaL_checktype(L, 1, LUA_TUSERDATA);
  11079. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11080. luaL_checktype(L, 2, LUA_TUSERDATA);
  11081. LocalShaderParam* param = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 2));
  11082. luaL_checktype(L, 3, LUA_TUSERDATA);
  11083. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  11084. inst->setTextureParam(param, texture);
  11085. return 0;
  11086. }
  11087. static int Polycode_Renderer_setAnisotropyAmount(lua_State *L) {
  11088. luaL_checktype(L, 1, LUA_TUSERDATA);
  11089. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11090. luaL_checktype(L, 2, LUA_TNUMBER);
  11091. Number amount = lua_tonumber(L, 2);
  11092. inst->setAnisotropyAmount(amount);
  11093. return 0;
  11094. }
  11095. static int Polycode_Renderer_getAnisotropyAmount(lua_State *L) {
  11096. luaL_checktype(L, 1, LUA_TUSERDATA);
  11097. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11098. lua_pushnumber(L, inst->getAnisotropyAmount());
  11099. return 1;
  11100. }
  11101. static int Polycode_Renderer_createMesh(lua_State *L) {
  11102. luaL_checktype(L, 1, LUA_TUSERDATA);
  11103. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11104. luaL_checktype(L, 2, LUA_TSTRING);
  11105. String fileName = String(lua_tostring(L, 2));
  11106. PolyBase *ptrRetVal = (PolyBase*)inst->createMesh(fileName);
  11107. if(ptrRetVal == NULL) {
  11108. lua_pushnil(L);
  11109. } else {
  11110. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11111. *userdataPtr = ptrRetVal;
  11112. }
  11113. return 1;
  11114. }
  11115. static int Polycode_Renderer_destroyMesh(lua_State *L) {
  11116. luaL_checktype(L, 1, LUA_TUSERDATA);
  11117. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11118. luaL_checktype(L, 2, LUA_TUSERDATA);
  11119. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  11120. inst->destroyMesh(mesh);
  11121. return 0;
  11122. }
  11123. static int Polycode_Renderer_unProject(lua_State *L) {
  11124. luaL_checktype(L, 1, LUA_TUSERDATA);
  11125. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  11126. luaL_checktype(L, 2, LUA_TUSERDATA);
  11127. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  11128. luaL_checktype(L, 3, LUA_TUSERDATA);
  11129. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  11130. luaL_checktype(L, 4, LUA_TUSERDATA);
  11131. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  11132. Vector3 *retInst = new Vector3();
  11133. *retInst = Renderer::unProject(position, modelMatrix, projectionMatrix, viewport);
  11134. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11135. luaL_getmetatable(L, "Polycode.Vector3");
  11136. lua_setmetatable(L, -2);
  11137. *userdataPtr = (PolyBase*)retInst;
  11138. return 1;
  11139. }
  11140. static int Polycode_Renderer_project(lua_State *L) {
  11141. luaL_checktype(L, 1, LUA_TUSERDATA);
  11142. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  11143. luaL_checktype(L, 2, LUA_TUSERDATA);
  11144. Matrix4 modelMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  11145. luaL_checktype(L, 3, LUA_TUSERDATA);
  11146. Matrix4 projectionMatrix = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 3));
  11147. luaL_checktype(L, 4, LUA_TUSERDATA);
  11148. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 4));
  11149. Vector3 *retInst = new Vector3();
  11150. *retInst = Renderer::project(position, modelMatrix, projectionMatrix, viewport);
  11151. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11152. luaL_getmetatable(L, "Polycode.Vector3");
  11153. lua_setmetatable(L, -2);
  11154. *userdataPtr = (PolyBase*)retInst;
  11155. return 1;
  11156. }
  11157. static int Polycode_Renderer_beginFrame(lua_State *L) {
  11158. luaL_checktype(L, 1, LUA_TUSERDATA);
  11159. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11160. inst->beginFrame();
  11161. return 0;
  11162. }
  11163. static int Polycode_Renderer_endFrame(lua_State *L) {
  11164. luaL_checktype(L, 1, LUA_TUSERDATA);
  11165. Renderer *inst = (Renderer*) *((PolyBase**)lua_touserdata(L, 1));
  11166. inst->endFrame();
  11167. return 0;
  11168. }
  11169. static int Polycode_delete_Renderer(lua_State *L) {
  11170. luaL_checktype(L, 1, LUA_TUSERDATA);
  11171. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11172. delete ((Renderer*) *inst);
  11173. *inst = NULL;
  11174. return 0;
  11175. }
  11176. static int Polycode_Resource_get_reloadOnFileModify(lua_State *L) {
  11177. luaL_checktype(L, 1, LUA_TUSERDATA);
  11178. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11179. lua_pushboolean(L, inst->reloadOnFileModify);
  11180. return 1;
  11181. }
  11182. static int Polycode_Resource_get_resourceFileTime(lua_State *L) {
  11183. luaL_checktype(L, 1, LUA_TUSERDATA);
  11184. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11185. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11186. *userdataPtr = (PolyBase*)&inst->resourceFileTime;
  11187. return 1;
  11188. }
  11189. static int Polycode_Resource_set_reloadOnFileModify(lua_State *L) {
  11190. luaL_checktype(L, 1, LUA_TUSERDATA);
  11191. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11192. bool param = lua_toboolean(L, 2) != 0;
  11193. inst->reloadOnFileModify = param;
  11194. return 0;
  11195. }
  11196. static int Polycode_Resource_set_resourceFileTime(lua_State *L) {
  11197. luaL_checktype(L, 1, LUA_TUSERDATA);
  11198. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11199. luaL_checktype(L, 2, LUA_TUSERDATA);
  11200. time_t *argInst = (time_t*) *((PolyBase**)lua_touserdata(L, 2));
  11201. inst->resourceFileTime = *argInst;
  11202. return 0;
  11203. }
  11204. static int Polycode_Resource(lua_State *L) {
  11205. luaL_checktype(L, 1, LUA_TNUMBER);
  11206. int type = lua_tointeger(L, 1);
  11207. Resource *inst = new Resource(type);
  11208. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11209. *userdataPtr = (PolyBase*)inst;
  11210. luaL_getmetatable(L, "Polycode.Resource");
  11211. lua_setmetatable(L, -2);
  11212. return 1;
  11213. }
  11214. static int Polycode_Resource_reloadResource(lua_State *L) {
  11215. luaL_checktype(L, 1, LUA_TUSERDATA);
  11216. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11217. inst->reloadResource();
  11218. return 0;
  11219. }
  11220. static int Polycode_Resource_getResourceName(lua_State *L) {
  11221. luaL_checktype(L, 1, LUA_TUSERDATA);
  11222. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11223. lua_pushstring(L, inst->getResourceName().c_str());
  11224. return 1;
  11225. }
  11226. static int Polycode_Resource_getResourceType(lua_State *L) {
  11227. luaL_checktype(L, 1, LUA_TUSERDATA);
  11228. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11229. lua_pushinteger(L, inst->getResourceType());
  11230. return 1;
  11231. }
  11232. static int Polycode_Resource_setResourceName(lua_State *L) {
  11233. luaL_checktype(L, 1, LUA_TUSERDATA);
  11234. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11235. luaL_checktype(L, 2, LUA_TSTRING);
  11236. String newName = String(lua_tostring(L, 2));
  11237. inst->setResourceName(newName);
  11238. return 0;
  11239. }
  11240. static int Polycode_Resource_setResourcePath(lua_State *L) {
  11241. luaL_checktype(L, 1, LUA_TUSERDATA);
  11242. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11243. luaL_checktype(L, 2, LUA_TSTRING);
  11244. String path = String(lua_tostring(L, 2));
  11245. inst->setResourcePath(path);
  11246. return 0;
  11247. }
  11248. static int Polycode_Resource_getResourcePath(lua_State *L) {
  11249. luaL_checktype(L, 1, LUA_TUSERDATA);
  11250. Resource *inst = (Resource*) *((PolyBase**)lua_touserdata(L, 1));
  11251. lua_pushstring(L, inst->getResourcePath().c_str());
  11252. return 1;
  11253. }
  11254. static int Polycode_delete_Resource(lua_State *L) {
  11255. luaL_checktype(L, 1, LUA_TUSERDATA);
  11256. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11257. delete ((Resource*) *inst);
  11258. *inst = NULL;
  11259. return 0;
  11260. }
  11261. static int Polycode_ScriptResourceLoader(lua_State *L) {
  11262. ScriptResourceLoader *inst = new ScriptResourceLoader();
  11263. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11264. *userdataPtr = (PolyBase*)inst;
  11265. luaL_getmetatable(L, "Polycode.ScriptResourceLoader");
  11266. lua_setmetatable(L, -2);
  11267. return 1;
  11268. }
  11269. static int Polycode_ScriptResourceLoader_loadResource(lua_State *L) {
  11270. luaL_checktype(L, 1, LUA_TUSERDATA);
  11271. ScriptResourceLoader *inst = (ScriptResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11272. luaL_checktype(L, 2, LUA_TSTRING);
  11273. String path = String(lua_tostring(L, 2));
  11274. luaL_checktype(L, 3, LUA_TUSERDATA);
  11275. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11276. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11277. if(ptrRetVal == NULL) {
  11278. lua_pushnil(L);
  11279. } else {
  11280. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11281. *userdataPtr = ptrRetVal;
  11282. }
  11283. return 1;
  11284. }
  11285. static int Polycode_delete_ScriptResourceLoader(lua_State *L) {
  11286. luaL_checktype(L, 1, LUA_TUSERDATA);
  11287. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11288. delete ((ScriptResourceLoader*) *inst);
  11289. *inst = NULL;
  11290. return 0;
  11291. }
  11292. static int Polycode_ResourcePool_get_reloadResourcesOnModify(lua_State *L) {
  11293. luaL_checktype(L, 1, LUA_TUSERDATA);
  11294. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11295. lua_pushboolean(L, inst->reloadResourcesOnModify);
  11296. return 1;
  11297. }
  11298. static int Polycode_ResourcePool_get_dispatchChangeEvents(lua_State *L) {
  11299. luaL_checktype(L, 1, LUA_TUSERDATA);
  11300. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11301. lua_pushboolean(L, inst->dispatchChangeEvents);
  11302. return 1;
  11303. }
  11304. static int Polycode_ResourcePool_get_resourceSubscribers(lua_State *L) {
  11305. luaL_checktype(L, 1, LUA_TUSERDATA);
  11306. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11307. lua_pushinteger(L, inst->resourceSubscribers);
  11308. return 1;
  11309. }
  11310. static int Polycode_ResourcePool_get_deleteOnUnsubscribe(lua_State *L) {
  11311. luaL_checktype(L, 1, LUA_TUSERDATA);
  11312. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11313. lua_pushboolean(L, inst->deleteOnUnsubscribe);
  11314. return 1;
  11315. }
  11316. static int Polycode_ResourcePool_set_reloadResourcesOnModify(lua_State *L) {
  11317. luaL_checktype(L, 1, LUA_TUSERDATA);
  11318. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11319. bool param = lua_toboolean(L, 2) != 0;
  11320. inst->reloadResourcesOnModify = param;
  11321. return 0;
  11322. }
  11323. static int Polycode_ResourcePool_set_dispatchChangeEvents(lua_State *L) {
  11324. luaL_checktype(L, 1, LUA_TUSERDATA);
  11325. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11326. bool param = lua_toboolean(L, 2) != 0;
  11327. inst->dispatchChangeEvents = param;
  11328. return 0;
  11329. }
  11330. static int Polycode_ResourcePool_set_resourceSubscribers(lua_State *L) {
  11331. luaL_checktype(L, 1, LUA_TUSERDATA);
  11332. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11333. int param = lua_tointeger(L, 2);
  11334. inst->resourceSubscribers = param;
  11335. return 0;
  11336. }
  11337. static int Polycode_ResourcePool_set_deleteOnUnsubscribe(lua_State *L) {
  11338. luaL_checktype(L, 1, LUA_TUSERDATA);
  11339. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11340. bool param = lua_toboolean(L, 2) != 0;
  11341. inst->deleteOnUnsubscribe = param;
  11342. return 0;
  11343. }
  11344. static int Polycode_ResourcePool(lua_State *L) {
  11345. luaL_checktype(L, 1, LUA_TSTRING);
  11346. String name = String(lua_tostring(L, 1));
  11347. luaL_checktype(L, 2, LUA_TUSERDATA);
  11348. ResourcePool* fallbackPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11349. ResourcePool *inst = new ResourcePool(name, fallbackPool);
  11350. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11351. *userdataPtr = (PolyBase*)inst;
  11352. luaL_getmetatable(L, "Polycode.ResourcePool");
  11353. lua_setmetatable(L, -2);
  11354. return 1;
  11355. }
  11356. static int Polycode_ResourcePool_setFallbackPool(lua_State *L) {
  11357. luaL_checktype(L, 1, LUA_TUSERDATA);
  11358. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11359. luaL_checktype(L, 2, LUA_TUSERDATA);
  11360. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11361. inst->setFallbackPool(pool);
  11362. return 0;
  11363. }
  11364. static int Polycode_ResourcePool_addResource(lua_State *L) {
  11365. luaL_checktype(L, 1, LUA_TUSERDATA);
  11366. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11367. luaL_checktype(L, 2, LUA_TUSERDATA);
  11368. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  11369. inst->addResource(resource);
  11370. return 0;
  11371. }
  11372. static int Polycode_ResourcePool_removeResource(lua_State *L) {
  11373. luaL_checktype(L, 1, LUA_TUSERDATA);
  11374. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11375. luaL_checktype(L, 2, LUA_TUSERDATA);
  11376. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  11377. inst->removeResource(resource);
  11378. return 0;
  11379. }
  11380. static int Polycode_ResourcePool_hasResource(lua_State *L) {
  11381. luaL_checktype(L, 1, LUA_TUSERDATA);
  11382. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11383. luaL_checktype(L, 2, LUA_TUSERDATA);
  11384. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  11385. lua_pushboolean(L, inst->hasResource(resource));
  11386. return 1;
  11387. }
  11388. static int Polycode_ResourcePool_loadResourcesFromFolder(lua_State *L) {
  11389. luaL_checktype(L, 1, LUA_TUSERDATA);
  11390. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11391. luaL_checktype(L, 2, LUA_TSTRING);
  11392. String folder = String(lua_tostring(L, 2));
  11393. luaL_checktype(L, 3, LUA_TBOOLEAN);
  11394. bool recursive = lua_toboolean(L, 3) != 0;
  11395. inst->loadResourcesFromFolder(folder, recursive);
  11396. return 0;
  11397. }
  11398. static int Polycode_ResourcePool_loadResource(lua_State *L) {
  11399. luaL_checktype(L, 1, LUA_TUSERDATA);
  11400. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11401. luaL_checktype(L, 2, LUA_TSTRING);
  11402. String path = String(lua_tostring(L, 2));
  11403. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path);
  11404. if(ptrRetVal == NULL) {
  11405. lua_pushnil(L);
  11406. } else {
  11407. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11408. *userdataPtr = ptrRetVal;
  11409. }
  11410. return 1;
  11411. }
  11412. static int Polycode_ResourcePool_loadResourceWithName(lua_State *L) {
  11413. luaL_checktype(L, 1, LUA_TUSERDATA);
  11414. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11415. luaL_checktype(L, 2, LUA_TSTRING);
  11416. String path = String(lua_tostring(L, 2));
  11417. luaL_checktype(L, 3, LUA_TSTRING);
  11418. String name = String(lua_tostring(L, 3));
  11419. PolyBase *ptrRetVal = (PolyBase*)inst->loadResourceWithName(path, name);
  11420. if(ptrRetVal == NULL) {
  11421. lua_pushnil(L);
  11422. } else {
  11423. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11424. *userdataPtr = ptrRetVal;
  11425. }
  11426. return 1;
  11427. }
  11428. static int Polycode_ResourcePool_getResource(lua_State *L) {
  11429. luaL_checktype(L, 1, LUA_TUSERDATA);
  11430. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11431. luaL_checktype(L, 2, LUA_TNUMBER);
  11432. int resourceType = lua_tointeger(L, 2);
  11433. luaL_checktype(L, 3, LUA_TSTRING);
  11434. String resourceName = String(lua_tostring(L, 3));
  11435. PolyBase *ptrRetVal = (PolyBase*)inst->getResource(resourceType, resourceName);
  11436. if(ptrRetVal == NULL) {
  11437. lua_pushnil(L);
  11438. } else {
  11439. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11440. *userdataPtr = ptrRetVal;
  11441. }
  11442. return 1;
  11443. }
  11444. static int Polycode_ResourcePool_getName(lua_State *L) {
  11445. luaL_checktype(L, 1, LUA_TUSERDATA);
  11446. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11447. lua_pushstring(L, inst->getName().c_str());
  11448. return 1;
  11449. }
  11450. static int Polycode_ResourcePool_setName(lua_State *L) {
  11451. luaL_checktype(L, 1, LUA_TUSERDATA);
  11452. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11453. luaL_checktype(L, 2, LUA_TSTRING);
  11454. String name = String(lua_tostring(L, 2));
  11455. inst->setName(name);
  11456. return 0;
  11457. }
  11458. static int Polycode_ResourcePool_getResourceByPath(lua_State *L) {
  11459. luaL_checktype(L, 1, LUA_TUSERDATA);
  11460. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11461. luaL_checktype(L, 2, LUA_TSTRING);
  11462. String resourcePath = String(lua_tostring(L, 2));
  11463. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceByPath(resourcePath);
  11464. if(ptrRetVal == NULL) {
  11465. lua_pushnil(L);
  11466. } else {
  11467. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11468. *userdataPtr = ptrRetVal;
  11469. }
  11470. return 1;
  11471. }
  11472. static int Polycode_ResourcePool_Update(lua_State *L) {
  11473. luaL_checktype(L, 1, LUA_TUSERDATA);
  11474. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11475. luaL_checktype(L, 2, LUA_TNUMBER);
  11476. int elapsed = lua_tointeger(L, 2);
  11477. inst->Update(elapsed);
  11478. return 0;
  11479. }
  11480. static int Polycode_ResourcePool_getResources(lua_State *L) {
  11481. luaL_checktype(L, 1, LUA_TUSERDATA);
  11482. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11483. luaL_checktype(L, 2, LUA_TNUMBER);
  11484. int resourceType = lua_tointeger(L, 2);
  11485. std::vector<Resource*> retVector = inst->getResources(resourceType);
  11486. lua_newtable(L);
  11487. for(int i=0; i < retVector.size(); i++) {
  11488. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11489. *userdataPtr = (PolyBase*)retVector[i];
  11490. lua_rawseti(L, -2, i+1);
  11491. }
  11492. return 1;
  11493. }
  11494. static int Polycode_ResourcePool_checkForChangedFiles(lua_State *L) {
  11495. luaL_checktype(L, 1, LUA_TUSERDATA);
  11496. ResourcePool *inst = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 1));
  11497. inst->checkForChangedFiles();
  11498. return 0;
  11499. }
  11500. static int Polycode_delete_ResourcePool(lua_State *L) {
  11501. luaL_checktype(L, 1, LUA_TUSERDATA);
  11502. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11503. delete ((ResourcePool*) *inst);
  11504. *inst = NULL;
  11505. return 0;
  11506. }
  11507. static int Polycode_ResourceManager(lua_State *L) {
  11508. ResourceManager *inst = new ResourceManager();
  11509. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11510. *userdataPtr = (PolyBase*)inst;
  11511. luaL_getmetatable(L, "Polycode.ResourceManager");
  11512. lua_setmetatable(L, -2);
  11513. return 1;
  11514. }
  11515. static int Polycode_ResourceManager_getGlobalPool(lua_State *L) {
  11516. luaL_checktype(L, 1, LUA_TUSERDATA);
  11517. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11518. PolyBase *ptrRetVal = (PolyBase*)inst->getGlobalPool();
  11519. if(ptrRetVal == NULL) {
  11520. lua_pushnil(L);
  11521. } else {
  11522. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11523. *userdataPtr = ptrRetVal;
  11524. }
  11525. return 1;
  11526. }
  11527. static int Polycode_ResourceManager_getResourcePoolByName(lua_State *L) {
  11528. luaL_checktype(L, 1, LUA_TUSERDATA);
  11529. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11530. luaL_checktype(L, 2, LUA_TSTRING);
  11531. String name = String(lua_tostring(L, 2));
  11532. PolyBase *ptrRetVal = (PolyBase*)inst->getResourcePoolByName(name);
  11533. if(ptrRetVal == NULL) {
  11534. lua_pushnil(L);
  11535. } else {
  11536. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11537. *userdataPtr = ptrRetVal;
  11538. }
  11539. return 1;
  11540. }
  11541. static int Polycode_ResourceManager_addResourceLoader(lua_State *L) {
  11542. luaL_checktype(L, 1, LUA_TUSERDATA);
  11543. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11544. luaL_checktype(L, 2, LUA_TUSERDATA);
  11545. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  11546. inst->addResourceLoader(loader);
  11547. return 0;
  11548. }
  11549. static int Polycode_ResourceManager_getResourceLoaderForExtension(lua_State *L) {
  11550. luaL_checktype(L, 1, LUA_TUSERDATA);
  11551. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11552. luaL_checktype(L, 2, LUA_TSTRING);
  11553. String extension = String(lua_tostring(L, 2));
  11554. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderForExtension(extension);
  11555. if(ptrRetVal == NULL) {
  11556. lua_pushnil(L);
  11557. } else {
  11558. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11559. *userdataPtr = ptrRetVal;
  11560. }
  11561. return 1;
  11562. }
  11563. static int Polycode_ResourceManager_removeResourceLoader(lua_State *L) {
  11564. luaL_checktype(L, 1, LUA_TUSERDATA);
  11565. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11566. luaL_checktype(L, 2, LUA_TUSERDATA);
  11567. ResourceLoader* loader = (ResourceLoader*) *((PolyBase**)lua_touserdata(L, 2));
  11568. inst->removeResourceLoader(loader);
  11569. return 0;
  11570. }
  11571. static int Polycode_ResourceManager_getNumResourceLoaders(lua_State *L) {
  11572. luaL_checktype(L, 1, LUA_TUSERDATA);
  11573. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11574. lua_pushinteger(L, inst->getNumResourceLoaders());
  11575. return 1;
  11576. }
  11577. static int Polycode_ResourceManager_getResourceLoaderAtIndex(lua_State *L) {
  11578. luaL_checktype(L, 1, LUA_TUSERDATA);
  11579. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11580. luaL_checktype(L, 2, LUA_TNUMBER);
  11581. int index = lua_tointeger(L, 2);
  11582. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceLoaderAtIndex(index);
  11583. if(ptrRetVal == NULL) {
  11584. lua_pushnil(L);
  11585. } else {
  11586. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11587. *userdataPtr = ptrRetVal;
  11588. }
  11589. return 1;
  11590. }
  11591. static int Polycode_ResourceManager_addResourcePool(lua_State *L) {
  11592. luaL_checktype(L, 1, LUA_TUSERDATA);
  11593. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11594. luaL_checktype(L, 2, LUA_TUSERDATA);
  11595. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11596. inst->addResourcePool(pool);
  11597. return 0;
  11598. }
  11599. static int Polycode_ResourceManager_removeResourcePool(lua_State *L) {
  11600. luaL_checktype(L, 1, LUA_TUSERDATA);
  11601. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11602. luaL_checktype(L, 2, LUA_TUSERDATA);
  11603. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11604. inst->removeResourcePool(pool);
  11605. return 0;
  11606. }
  11607. static int Polycode_ResourceManager_getResources(lua_State *L) {
  11608. luaL_checktype(L, 1, LUA_TUSERDATA);
  11609. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11610. luaL_checktype(L, 2, LUA_TNUMBER);
  11611. int resourceType = lua_tointeger(L, 2);
  11612. std::vector<Resource*> retVector = inst->getResources(resourceType);
  11613. lua_newtable(L);
  11614. for(int i=0; i < retVector.size(); i++) {
  11615. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11616. *userdataPtr = (PolyBase*)retVector[i];
  11617. lua_rawseti(L, -2, i+1);
  11618. }
  11619. return 1;
  11620. }
  11621. static int Polycode_ResourceManager_removeResource(lua_State *L) {
  11622. luaL_checktype(L, 1, LUA_TUSERDATA);
  11623. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11624. luaL_checktype(L, 2, LUA_TUSERDATA);
  11625. Resource* resource = (Resource*) *((PolyBase**)lua_touserdata(L, 2));
  11626. inst->removeResource(resource);
  11627. return 0;
  11628. }
  11629. static int Polycode_ResourceManager_subscribeToResourcePool(lua_State *L) {
  11630. luaL_checktype(L, 1, LUA_TUSERDATA);
  11631. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11632. luaL_checktype(L, 2, LUA_TUSERDATA);
  11633. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11634. inst->subscribeToResourcePool(pool);
  11635. return 0;
  11636. }
  11637. static int Polycode_ResourceManager_unsubscibeFromResourcePool(lua_State *L) {
  11638. luaL_checktype(L, 1, LUA_TUSERDATA);
  11639. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11640. luaL_checktype(L, 2, LUA_TUSERDATA);
  11641. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  11642. inst->unsubscibeFromResourcePool(pool);
  11643. return 0;
  11644. }
  11645. static int Polycode_ResourceManager_Update(lua_State *L) {
  11646. luaL_checktype(L, 1, LUA_TUSERDATA);
  11647. ResourceManager *inst = (ResourceManager*) *((PolyBase**)lua_touserdata(L, 1));
  11648. luaL_checktype(L, 2, LUA_TNUMBER);
  11649. int elapsed = lua_tointeger(L, 2);
  11650. inst->Update(elapsed);
  11651. return 0;
  11652. }
  11653. static int Polycode_delete_ResourceManager(lua_State *L) {
  11654. luaL_checktype(L, 1, LUA_TUSERDATA);
  11655. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11656. delete ((ResourceManager*) *inst);
  11657. *inst = NULL;
  11658. return 0;
  11659. }
  11660. static int Polycode_FontResourceLoader(lua_State *L) {
  11661. FontResourceLoader *inst = new FontResourceLoader();
  11662. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11663. *userdataPtr = (PolyBase*)inst;
  11664. luaL_getmetatable(L, "Polycode.FontResourceLoader");
  11665. lua_setmetatable(L, -2);
  11666. return 1;
  11667. }
  11668. static int Polycode_FontResourceLoader_loadResource(lua_State *L) {
  11669. luaL_checktype(L, 1, LUA_TUSERDATA);
  11670. FontResourceLoader *inst = (FontResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11671. luaL_checktype(L, 2, LUA_TSTRING);
  11672. String path = String(lua_tostring(L, 2));
  11673. luaL_checktype(L, 3, LUA_TUSERDATA);
  11674. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11675. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11676. if(ptrRetVal == NULL) {
  11677. lua_pushnil(L);
  11678. } else {
  11679. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11680. *userdataPtr = ptrRetVal;
  11681. }
  11682. return 1;
  11683. }
  11684. static int Polycode_delete_FontResourceLoader(lua_State *L) {
  11685. luaL_checktype(L, 1, LUA_TUSERDATA);
  11686. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11687. delete ((FontResourceLoader*) *inst);
  11688. *inst = NULL;
  11689. return 0;
  11690. }
  11691. static int Polycode_ProgramResourceLoader(lua_State *L) {
  11692. ProgramResourceLoader *inst = new ProgramResourceLoader();
  11693. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11694. *userdataPtr = (PolyBase*)inst;
  11695. luaL_getmetatable(L, "Polycode.ProgramResourceLoader");
  11696. lua_setmetatable(L, -2);
  11697. return 1;
  11698. }
  11699. static int Polycode_ProgramResourceLoader_loadResource(lua_State *L) {
  11700. luaL_checktype(L, 1, LUA_TUSERDATA);
  11701. ProgramResourceLoader *inst = (ProgramResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11702. luaL_checktype(L, 2, LUA_TSTRING);
  11703. String path = String(lua_tostring(L, 2));
  11704. luaL_checktype(L, 3, LUA_TUSERDATA);
  11705. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11706. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11707. if(ptrRetVal == NULL) {
  11708. lua_pushnil(L);
  11709. } else {
  11710. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11711. *userdataPtr = ptrRetVal;
  11712. }
  11713. return 1;
  11714. }
  11715. static int Polycode_delete_ProgramResourceLoader(lua_State *L) {
  11716. luaL_checktype(L, 1, LUA_TUSERDATA);
  11717. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11718. delete ((ProgramResourceLoader*) *inst);
  11719. *inst = NULL;
  11720. return 0;
  11721. }
  11722. static int Polycode_DebugBackTraceEntry_get_fileName(lua_State *L) {
  11723. luaL_checktype(L, 1, LUA_TUSERDATA);
  11724. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11725. lua_pushstring(L, inst->fileName.c_str());
  11726. return 1;
  11727. }
  11728. static int Polycode_DebugBackTraceEntry_get_lineNumber(lua_State *L) {
  11729. luaL_checktype(L, 1, LUA_TUSERDATA);
  11730. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11731. lua_pushinteger(L, inst->lineNumber);
  11732. return 1;
  11733. }
  11734. static int Polycode_DebugBackTraceEntry_set_fileName(lua_State *L) {
  11735. luaL_checktype(L, 1, LUA_TUSERDATA);
  11736. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11737. String param = lua_tostring(L, 2);
  11738. inst->fileName = param;
  11739. return 0;
  11740. }
  11741. static int Polycode_DebugBackTraceEntry_set_lineNumber(lua_State *L) {
  11742. luaL_checktype(L, 1, LUA_TUSERDATA);
  11743. DebugBackTraceEntry *inst = (DebugBackTraceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  11744. int param = lua_tointeger(L, 2);
  11745. inst->lineNumber = param;
  11746. return 0;
  11747. }
  11748. static int Polycode_delete_DebugBackTraceEntry(lua_State *L) {
  11749. luaL_checktype(L, 1, LUA_TUSERDATA);
  11750. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11751. delete ((DebugBackTraceEntry*) *inst);
  11752. *inst = NULL;
  11753. return 0;
  11754. }
  11755. static int Polycode_MeshResourceLoader(lua_State *L) {
  11756. MeshResourceLoader *inst = new MeshResourceLoader();
  11757. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11758. *userdataPtr = (PolyBase*)inst;
  11759. luaL_getmetatable(L, "Polycode.MeshResourceLoader");
  11760. lua_setmetatable(L, -2);
  11761. return 1;
  11762. }
  11763. static int Polycode_MeshResourceLoader_loadResource(lua_State *L) {
  11764. luaL_checktype(L, 1, LUA_TUSERDATA);
  11765. MeshResourceLoader *inst = (MeshResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11766. luaL_checktype(L, 2, LUA_TSTRING);
  11767. String path = String(lua_tostring(L, 2));
  11768. luaL_checktype(L, 3, LUA_TUSERDATA);
  11769. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11770. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11771. if(ptrRetVal == NULL) {
  11772. lua_pushnil(L);
  11773. } else {
  11774. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11775. *userdataPtr = ptrRetVal;
  11776. }
  11777. return 1;
  11778. }
  11779. static int Polycode_delete_MeshResourceLoader(lua_State *L) {
  11780. luaL_checktype(L, 1, LUA_TUSERDATA);
  11781. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11782. delete ((MeshResourceLoader*) *inst);
  11783. *inst = NULL;
  11784. return 0;
  11785. }
  11786. static int Polycode_MaterialResourceLoader(lua_State *L) {
  11787. MaterialResourceLoader *inst = new MaterialResourceLoader();
  11788. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11789. *userdataPtr = (PolyBase*)inst;
  11790. luaL_getmetatable(L, "Polycode.MaterialResourceLoader");
  11791. lua_setmetatable(L, -2);
  11792. return 1;
  11793. }
  11794. static int Polycode_MaterialResourceLoader_loadResource(lua_State *L) {
  11795. luaL_checktype(L, 1, LUA_TUSERDATA);
  11796. MaterialResourceLoader *inst = (MaterialResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11797. luaL_checktype(L, 2, LUA_TSTRING);
  11798. String path = String(lua_tostring(L, 2));
  11799. luaL_checktype(L, 3, LUA_TUSERDATA);
  11800. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11801. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11802. if(ptrRetVal == NULL) {
  11803. lua_pushnil(L);
  11804. } else {
  11805. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11806. *userdataPtr = ptrRetVal;
  11807. }
  11808. return 1;
  11809. }
  11810. static int Polycode_delete_MaterialResourceLoader(lua_State *L) {
  11811. luaL_checktype(L, 1, LUA_TUSERDATA);
  11812. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11813. delete ((MaterialResourceLoader*) *inst);
  11814. *inst = NULL;
  11815. return 0;
  11816. }
  11817. static int Polycode_TextureResourceLoader(lua_State *L) {
  11818. TextureResourceLoader *inst = new TextureResourceLoader();
  11819. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11820. *userdataPtr = (PolyBase*)inst;
  11821. luaL_getmetatable(L, "Polycode.TextureResourceLoader");
  11822. lua_setmetatable(L, -2);
  11823. return 1;
  11824. }
  11825. static int Polycode_TextureResourceLoader_loadResource(lua_State *L) {
  11826. luaL_checktype(L, 1, LUA_TUSERDATA);
  11827. TextureResourceLoader *inst = (TextureResourceLoader*) *((PolyBase**)lua_touserdata(L, 1));
  11828. luaL_checktype(L, 2, LUA_TSTRING);
  11829. String path = String(lua_tostring(L, 2));
  11830. luaL_checktype(L, 3, LUA_TUSERDATA);
  11831. ResourcePool* targetPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  11832. PolyBase *ptrRetVal = (PolyBase*)inst->loadResource(path, targetPool);
  11833. if(ptrRetVal == NULL) {
  11834. lua_pushnil(L);
  11835. } else {
  11836. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11837. *userdataPtr = ptrRetVal;
  11838. }
  11839. return 1;
  11840. }
  11841. static int Polycode_delete_TextureResourceLoader(lua_State *L) {
  11842. luaL_checktype(L, 1, LUA_TUSERDATA);
  11843. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  11844. delete ((TextureResourceLoader*) *inst);
  11845. *inst = NULL;
  11846. return 0;
  11847. }
  11848. static int Polycode_Scene_get_clearColor(lua_State *L) {
  11849. luaL_checktype(L, 1, LUA_TUSERDATA);
  11850. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11851. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11852. *userdataPtr = (PolyBase*)&inst->clearColor;
  11853. return 1;
  11854. }
  11855. static int Polycode_Scene_get_useClearColor(lua_State *L) {
  11856. luaL_checktype(L, 1, LUA_TUSERDATA);
  11857. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11858. lua_pushboolean(L, inst->useClearColor);
  11859. return 1;
  11860. }
  11861. static int Polycode_Scene_get_useClearDepth(lua_State *L) {
  11862. luaL_checktype(L, 1, LUA_TUSERDATA);
  11863. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11864. lua_pushboolean(L, inst->useClearDepth);
  11865. return 1;
  11866. }
  11867. static int Polycode_Scene_get_ambientColor(lua_State *L) {
  11868. luaL_checktype(L, 1, LUA_TUSERDATA);
  11869. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11870. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11871. *userdataPtr = (PolyBase*)&inst->ambientColor;
  11872. return 1;
  11873. }
  11874. static int Polycode_Scene_get_fogColor(lua_State *L) {
  11875. luaL_checktype(L, 1, LUA_TUSERDATA);
  11876. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11877. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11878. *userdataPtr = (PolyBase*)&inst->fogColor;
  11879. return 1;
  11880. }
  11881. static int Polycode_Scene_get_enabled(lua_State *L) {
  11882. luaL_checktype(L, 1, LUA_TUSERDATA);
  11883. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11884. lua_pushboolean(L, inst->enabled);
  11885. return 1;
  11886. }
  11887. static int Polycode_Scene_get_ownsChildren(lua_State *L) {
  11888. luaL_checktype(L, 1, LUA_TUSERDATA);
  11889. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11890. lua_pushboolean(L, inst->ownsChildren);
  11891. return 1;
  11892. }
  11893. static int Polycode_Scene_get_rootEntity(lua_State *L) {
  11894. luaL_checktype(L, 1, LUA_TUSERDATA);
  11895. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11896. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11897. *userdataPtr = (PolyBase*)&inst->rootEntity;
  11898. return 1;
  11899. }
  11900. static int Polycode_Scene_get_sceneMouseRect(lua_State *L) {
  11901. luaL_checktype(L, 1, LUA_TUSERDATA);
  11902. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11903. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  11904. *userdataPtr = (PolyBase*)&inst->sceneMouseRect;
  11905. return 1;
  11906. }
  11907. static int Polycode_Scene_get_remapMouse(lua_State *L) {
  11908. luaL_checktype(L, 1, LUA_TUSERDATA);
  11909. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11910. lua_pushboolean(L, inst->remapMouse);
  11911. return 1;
  11912. }
  11913. static int Polycode_Scene_get_constrainPickingToViewport(lua_State *L) {
  11914. luaL_checktype(L, 1, LUA_TUSERDATA);
  11915. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11916. lua_pushboolean(L, inst->constrainPickingToViewport);
  11917. return 1;
  11918. }
  11919. static int Polycode_Scene_set_clearColor(lua_State *L) {
  11920. luaL_checktype(L, 1, LUA_TUSERDATA);
  11921. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11922. luaL_checktype(L, 2, LUA_TUSERDATA);
  11923. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11924. inst->clearColor = *argInst;
  11925. return 0;
  11926. }
  11927. static int Polycode_Scene_set_useClearColor(lua_State *L) {
  11928. luaL_checktype(L, 1, LUA_TUSERDATA);
  11929. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11930. bool param = lua_toboolean(L, 2) != 0;
  11931. inst->useClearColor = param;
  11932. return 0;
  11933. }
  11934. static int Polycode_Scene_set_useClearDepth(lua_State *L) {
  11935. luaL_checktype(L, 1, LUA_TUSERDATA);
  11936. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11937. bool param = lua_toboolean(L, 2) != 0;
  11938. inst->useClearDepth = param;
  11939. return 0;
  11940. }
  11941. static int Polycode_Scene_set_ambientColor(lua_State *L) {
  11942. luaL_checktype(L, 1, LUA_TUSERDATA);
  11943. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11944. luaL_checktype(L, 2, LUA_TUSERDATA);
  11945. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11946. inst->ambientColor = *argInst;
  11947. return 0;
  11948. }
  11949. static int Polycode_Scene_set_fogColor(lua_State *L) {
  11950. luaL_checktype(L, 1, LUA_TUSERDATA);
  11951. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11952. luaL_checktype(L, 2, LUA_TUSERDATA);
  11953. Color *argInst = (Color*) *((PolyBase**)lua_touserdata(L, 2));
  11954. inst->fogColor = *argInst;
  11955. return 0;
  11956. }
  11957. static int Polycode_Scene_set_enabled(lua_State *L) {
  11958. luaL_checktype(L, 1, LUA_TUSERDATA);
  11959. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11960. bool param = lua_toboolean(L, 2) != 0;
  11961. inst->enabled = param;
  11962. return 0;
  11963. }
  11964. static int Polycode_Scene_set_ownsChildren(lua_State *L) {
  11965. luaL_checktype(L, 1, LUA_TUSERDATA);
  11966. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11967. bool param = lua_toboolean(L, 2) != 0;
  11968. inst->ownsChildren = param;
  11969. return 0;
  11970. }
  11971. static int Polycode_Scene_set_rootEntity(lua_State *L) {
  11972. luaL_checktype(L, 1, LUA_TUSERDATA);
  11973. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11974. luaL_checktype(L, 2, LUA_TUSERDATA);
  11975. Entity *argInst = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  11976. inst->rootEntity = *argInst;
  11977. return 0;
  11978. }
  11979. static int Polycode_Scene_set_sceneMouseRect(lua_State *L) {
  11980. luaL_checktype(L, 1, LUA_TUSERDATA);
  11981. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11982. luaL_checktype(L, 2, LUA_TUSERDATA);
  11983. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  11984. inst->sceneMouseRect = *argInst;
  11985. return 0;
  11986. }
  11987. static int Polycode_Scene_set_remapMouse(lua_State *L) {
  11988. luaL_checktype(L, 1, LUA_TUSERDATA);
  11989. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11990. bool param = lua_toboolean(L, 2) != 0;
  11991. inst->remapMouse = param;
  11992. return 0;
  11993. }
  11994. static int Polycode_Scene_set_constrainPickingToViewport(lua_State *L) {
  11995. luaL_checktype(L, 1, LUA_TUSERDATA);
  11996. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  11997. bool param = lua_toboolean(L, 2) != 0;
  11998. inst->constrainPickingToViewport = param;
  11999. return 0;
  12000. }
  12001. static int Polycode_Scene(lua_State *L) {
  12002. luaL_checktype(L, 1, LUA_TNUMBER);
  12003. int sceneType = lua_tointeger(L, 1);
  12004. bool virtualScene;
  12005. if(lua_isboolean(L, 2)) {
  12006. virtualScene = lua_toboolean(L, 2) != 0;
  12007. } else {
  12008. virtualScene = false;
  12009. }
  12010. Scene *inst = new Scene(sceneType, virtualScene);
  12011. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12012. *userdataPtr = (PolyBase*)inst;
  12013. luaL_getmetatable(L, "Polycode.Scene");
  12014. lua_setmetatable(L, -2);
  12015. return 1;
  12016. }
  12017. static int Polycode_Scene_addEntity(lua_State *L) {
  12018. luaL_checktype(L, 1, LUA_TUSERDATA);
  12019. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12020. luaL_checktype(L, 2, LUA_TUSERDATA);
  12021. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12022. inst->addEntity(entity);
  12023. return 0;
  12024. }
  12025. static int Polycode_Scene_addChild(lua_State *L) {
  12026. luaL_checktype(L, 1, LUA_TUSERDATA);
  12027. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12028. luaL_checktype(L, 2, LUA_TUSERDATA);
  12029. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12030. inst->addChild(entity);
  12031. return 0;
  12032. }
  12033. static int Polycode_Scene_removeEntity(lua_State *L) {
  12034. luaL_checktype(L, 1, LUA_TUSERDATA);
  12035. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12036. luaL_checktype(L, 2, LUA_TUSERDATA);
  12037. Entity* entity = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12038. inst->removeEntity(entity);
  12039. return 0;
  12040. }
  12041. static int Polycode_Scene_getDefaultCamera(lua_State *L) {
  12042. luaL_checktype(L, 1, LUA_TUSERDATA);
  12043. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12044. PolyBase *ptrRetVal = (PolyBase*)inst->getDefaultCamera();
  12045. if(ptrRetVal == NULL) {
  12046. lua_pushnil(L);
  12047. } else {
  12048. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12049. *userdataPtr = ptrRetVal;
  12050. }
  12051. return 1;
  12052. }
  12053. static int Polycode_Scene_getActiveCamera(lua_State *L) {
  12054. luaL_checktype(L, 1, LUA_TUSERDATA);
  12055. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12056. PolyBase *ptrRetVal = (PolyBase*)inst->getActiveCamera();
  12057. if(ptrRetVal == NULL) {
  12058. lua_pushnil(L);
  12059. } else {
  12060. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12061. *userdataPtr = ptrRetVal;
  12062. }
  12063. return 1;
  12064. }
  12065. static int Polycode_Scene_setActiveCamera(lua_State *L) {
  12066. luaL_checktype(L, 1, LUA_TUSERDATA);
  12067. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12068. luaL_checktype(L, 2, LUA_TUSERDATA);
  12069. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  12070. inst->setActiveCamera(camera);
  12071. return 0;
  12072. }
  12073. static int Polycode_Scene_enableFog(lua_State *L) {
  12074. luaL_checktype(L, 1, LUA_TUSERDATA);
  12075. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12076. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12077. bool enable = lua_toboolean(L, 2) != 0;
  12078. inst->enableFog(enable);
  12079. return 0;
  12080. }
  12081. static int Polycode_Scene_setFogProperties(lua_State *L) {
  12082. luaL_checktype(L, 1, LUA_TUSERDATA);
  12083. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12084. luaL_checktype(L, 2, LUA_TNUMBER);
  12085. int fogMode = lua_tointeger(L, 2);
  12086. luaL_checktype(L, 3, LUA_TUSERDATA);
  12087. Color color = *(Color*) *((PolyBase**)lua_touserdata(L, 3));
  12088. luaL_checktype(L, 4, LUA_TNUMBER);
  12089. Number density = lua_tonumber(L, 4);
  12090. luaL_checktype(L, 5, LUA_TNUMBER);
  12091. Number startDepth = lua_tonumber(L, 5);
  12092. luaL_checktype(L, 6, LUA_TNUMBER);
  12093. Number endDepth = lua_tonumber(L, 6);
  12094. inst->setFogProperties(fogMode, color, density, startDepth, endDepth);
  12095. return 0;
  12096. }
  12097. static int Polycode_Scene_setSceneType(lua_State *L) {
  12098. luaL_checktype(L, 1, LUA_TUSERDATA);
  12099. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12100. luaL_checktype(L, 2, LUA_TNUMBER);
  12101. int newType = lua_tointeger(L, 2);
  12102. inst->setSceneType(newType);
  12103. return 0;
  12104. }
  12105. static int Polycode_Scene_fixedUpdate(lua_State *L) {
  12106. luaL_checktype(L, 1, LUA_TUSERDATA);
  12107. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12108. inst->fixedUpdate();
  12109. return 0;
  12110. }
  12111. static int Polycode_Scene_Update(lua_State *L) {
  12112. luaL_checktype(L, 1, LUA_TUSERDATA);
  12113. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12114. inst->Update();
  12115. return 0;
  12116. }
  12117. static int Polycode_Scene_setVirtual(lua_State *L) {
  12118. luaL_checktype(L, 1, LUA_TUSERDATA);
  12119. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12120. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12121. bool val = lua_toboolean(L, 2) != 0;
  12122. inst->setVirtual(val);
  12123. return 0;
  12124. }
  12125. static int Polycode_Scene_isVirtual(lua_State *L) {
  12126. luaL_checktype(L, 1, LUA_TUSERDATA);
  12127. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12128. lua_pushboolean(L, inst->isVirtual());
  12129. return 1;
  12130. }
  12131. static int Polycode_Scene_isEnabled(lua_State *L) {
  12132. luaL_checktype(L, 1, LUA_TUSERDATA);
  12133. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12134. lua_pushboolean(L, inst->isEnabled());
  12135. return 1;
  12136. }
  12137. static int Polycode_Scene_setEnabled(lua_State *L) {
  12138. luaL_checktype(L, 1, LUA_TUSERDATA);
  12139. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12140. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12141. bool enabled = lua_toboolean(L, 2) != 0;
  12142. inst->setEnabled(enabled);
  12143. return 0;
  12144. }
  12145. static int Polycode_Scene_Render(lua_State *L) {
  12146. luaL_checktype(L, 1, LUA_TUSERDATA);
  12147. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12148. luaL_checktype(L, 2, LUA_TUSERDATA);
  12149. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  12150. luaL_checktype(L, 3, LUA_TUSERDATA);
  12151. RenderBuffer* targetFramebuffer = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 3));
  12152. luaL_checktype(L, 4, LUA_TUSERDATA);
  12153. Material* overrideMaterial = (Material*) *((PolyBase**)lua_touserdata(L, 4));
  12154. luaL_checktype(L, 5, LUA_TBOOLEAN);
  12155. bool sendLights = lua_toboolean(L, 5) != 0;
  12156. inst->Render(targetCamera, targetFramebuffer, overrideMaterial, sendLights);
  12157. return 0;
  12158. }
  12159. static int Polycode_Scene_setOverrideMaterial(lua_State *L) {
  12160. luaL_checktype(L, 1, LUA_TUSERDATA);
  12161. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12162. luaL_checktype(L, 2, LUA_TUSERDATA);
  12163. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  12164. inst->setOverrideMaterial(material);
  12165. return 0;
  12166. }
  12167. static int Polycode_Scene_projectRayFromCameraAndViewportCoordinate(lua_State *L) {
  12168. luaL_checktype(L, 1, LUA_TUSERDATA);
  12169. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12170. luaL_checktype(L, 2, LUA_TUSERDATA);
  12171. Camera* camera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  12172. luaL_checktype(L, 3, LUA_TUSERDATA);
  12173. Vector2 coordinate = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  12174. Ray *retInst = new Ray();
  12175. *retInst = inst->projectRayFromCameraAndViewportCoordinate(camera, coordinate);
  12176. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12177. luaL_getmetatable(L, "Polycode.Ray");
  12178. lua_setmetatable(L, -2);
  12179. *userdataPtr = (PolyBase*)retInst;
  12180. return 1;
  12181. }
  12182. static int Polycode_Scene_addLight(lua_State *L) {
  12183. luaL_checktype(L, 1, LUA_TUSERDATA);
  12184. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12185. luaL_checktype(L, 2, LUA_TUSERDATA);
  12186. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  12187. inst->addLight(light);
  12188. return 0;
  12189. }
  12190. static int Polycode_Scene_removeLight(lua_State *L) {
  12191. luaL_checktype(L, 1, LUA_TUSERDATA);
  12192. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12193. luaL_checktype(L, 2, LUA_TUSERDATA);
  12194. SceneLight* light = (SceneLight*) *((PolyBase**)lua_touserdata(L, 2));
  12195. inst->removeLight(light);
  12196. return 0;
  12197. }
  12198. static int Polycode_Scene_getNumLights(lua_State *L) {
  12199. luaL_checktype(L, 1, LUA_TUSERDATA);
  12200. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12201. lua_pushinteger(L, inst->getNumLights());
  12202. return 1;
  12203. }
  12204. static int Polycode_Scene_getLight(lua_State *L) {
  12205. luaL_checktype(L, 1, LUA_TUSERDATA);
  12206. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12207. luaL_checktype(L, 2, LUA_TNUMBER);
  12208. int index = lua_tointeger(L, 2);
  12209. PolyBase *ptrRetVal = (PolyBase*)inst->getLight(index);
  12210. if(ptrRetVal == NULL) {
  12211. lua_pushnil(L);
  12212. } else {
  12213. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12214. *userdataPtr = ptrRetVal;
  12215. }
  12216. return 1;
  12217. }
  12218. static int Polycode_Scene_doVisibilityChecking(lua_State *L) {
  12219. luaL_checktype(L, 1, LUA_TUSERDATA);
  12220. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12221. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12222. bool val = lua_toboolean(L, 2) != 0;
  12223. inst->doVisibilityChecking(val);
  12224. return 0;
  12225. }
  12226. static int Polycode_Scene_doesVisibilityChecking(lua_State *L) {
  12227. luaL_checktype(L, 1, LUA_TUSERDATA);
  12228. Scene *inst = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12229. lua_pushboolean(L, inst->doesVisibilityChecking());
  12230. return 1;
  12231. }
  12232. static int Polycode_delete_Scene(lua_State *L) {
  12233. luaL_checktype(L, 1, LUA_TUSERDATA);
  12234. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12235. delete ((Scene*) *inst);
  12236. *inst = NULL;
  12237. return 0;
  12238. }
  12239. static int Polycode_SceneEntityInstanceResourceEntry(lua_State *L) {
  12240. luaL_checktype(L, 1, LUA_TUSERDATA);
  12241. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12242. SceneEntityInstanceResourceEntry *inst = new SceneEntityInstanceResourceEntry(instance);
  12243. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12244. *userdataPtr = (PolyBase*)inst;
  12245. luaL_getmetatable(L, "Polycode.SceneEntityInstanceResourceEntry");
  12246. lua_setmetatable(L, -2);
  12247. return 1;
  12248. }
  12249. static int Polycode_SceneEntityInstanceResourceEntry_getInstance(lua_State *L) {
  12250. luaL_checktype(L, 1, LUA_TUSERDATA);
  12251. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  12252. PolyBase *ptrRetVal = (PolyBase*)inst->getInstance();
  12253. if(ptrRetVal == NULL) {
  12254. lua_pushnil(L);
  12255. } else {
  12256. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12257. *userdataPtr = ptrRetVal;
  12258. }
  12259. return 1;
  12260. }
  12261. static int Polycode_SceneEntityInstanceResourceEntry_reloadResource(lua_State *L) {
  12262. luaL_checktype(L, 1, LUA_TUSERDATA);
  12263. SceneEntityInstanceResourceEntry *inst = (SceneEntityInstanceResourceEntry*) *((PolyBase**)lua_touserdata(L, 1));
  12264. inst->reloadResource();
  12265. return 0;
  12266. }
  12267. static int Polycode_delete_SceneEntityInstanceResourceEntry(lua_State *L) {
  12268. luaL_checktype(L, 1, LUA_TUSERDATA);
  12269. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12270. delete ((SceneEntityInstanceResourceEntry*) *inst);
  12271. *inst = NULL;
  12272. return 0;
  12273. }
  12274. static int Polycode_SceneEntityInstance_get_cloneUsingReload(lua_State *L) {
  12275. luaL_checktype(L, 1, LUA_TUSERDATA);
  12276. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12277. lua_pushboolean(L, inst->cloneUsingReload);
  12278. return 1;
  12279. }
  12280. static int Polycode_SceneEntityInstance_get_fileName(lua_State *L) {
  12281. luaL_checktype(L, 1, LUA_TUSERDATA);
  12282. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12283. lua_pushstring(L, inst->fileName.c_str());
  12284. return 1;
  12285. }
  12286. static int Polycode_SceneEntityInstance_set_cloneUsingReload(lua_State *L) {
  12287. luaL_checktype(L, 1, LUA_TUSERDATA);
  12288. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12289. bool param = lua_toboolean(L, 2) != 0;
  12290. inst->cloneUsingReload = param;
  12291. return 0;
  12292. }
  12293. static int Polycode_SceneEntityInstance_set_fileName(lua_State *L) {
  12294. luaL_checktype(L, 1, LUA_TUSERDATA);
  12295. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12296. String param = lua_tostring(L, 2);
  12297. inst->fileName = param;
  12298. return 0;
  12299. }
  12300. static int Polycode_SceneEntityInstance(lua_State *L) {
  12301. luaL_checktype(L, 1, LUA_TUSERDATA);
  12302. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12303. luaL_checktype(L, 2, LUA_TSTRING);
  12304. String fileName = String(lua_tostring(L, 2));
  12305. SceneEntityInstance *inst = new SceneEntityInstance(parentScene, fileName);
  12306. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12307. *userdataPtr = (PolyBase*)inst;
  12308. luaL_getmetatable(L, "Polycode.SceneEntityInstance");
  12309. lua_setmetatable(L, -2);
  12310. return 1;
  12311. }
  12312. static int Polycode_SceneEntityInstance_BlankSceneEntityInstance(lua_State *L) {
  12313. luaL_checktype(L, 1, LUA_TUSERDATA);
  12314. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  12315. PolyBase *ptrRetVal = (PolyBase*)SceneEntityInstance::BlankSceneEntityInstance(parentScene);
  12316. if(ptrRetVal == NULL) {
  12317. lua_pushnil(L);
  12318. } else {
  12319. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12320. *userdataPtr = ptrRetVal;
  12321. }
  12322. return 1;
  12323. }
  12324. static int Polycode_SceneEntityInstance_Clone(lua_State *L) {
  12325. luaL_checktype(L, 1, LUA_TUSERDATA);
  12326. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12327. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12328. bool deepClone = lua_toboolean(L, 2) != 0;
  12329. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12330. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12331. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12332. if(ptrRetVal == NULL) {
  12333. lua_pushnil(L);
  12334. } else {
  12335. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12336. *userdataPtr = ptrRetVal;
  12337. }
  12338. return 1;
  12339. }
  12340. static int Polycode_SceneEntityInstance_applyClone(lua_State *L) {
  12341. luaL_checktype(L, 1, LUA_TUSERDATA);
  12342. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12343. luaL_checktype(L, 2, LUA_TUSERDATA);
  12344. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12345. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12346. bool deepClone = lua_toboolean(L, 3) != 0;
  12347. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12348. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12349. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12350. return 0;
  12351. }
  12352. static int Polycode_SceneEntityInstance_reloadEntityInstance(lua_State *L) {
  12353. luaL_checktype(L, 1, LUA_TUSERDATA);
  12354. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12355. inst->reloadEntityInstance();
  12356. return 0;
  12357. }
  12358. static int Polycode_SceneEntityInstance_clearInstance(lua_State *L) {
  12359. luaL_checktype(L, 1, LUA_TUSERDATA);
  12360. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12361. inst->clearInstance();
  12362. return 0;
  12363. }
  12364. static int Polycode_SceneEntityInstance_parseObjectIntoCurve(lua_State *L) {
  12365. luaL_checktype(L, 1, LUA_TUSERDATA);
  12366. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12367. luaL_checktype(L, 2, LUA_TUSERDATA);
  12368. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  12369. luaL_checktype(L, 3, LUA_TUSERDATA);
  12370. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 3));
  12371. inst->parseObjectIntoCurve(entry, curve);
  12372. return 0;
  12373. }
  12374. static int Polycode_SceneEntityInstance_loadObjectEntryIntoEntity(lua_State *L) {
  12375. luaL_checktype(L, 1, LUA_TUSERDATA);
  12376. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12377. luaL_checktype(L, 2, LUA_TUSERDATA);
  12378. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  12379. Entity* targetEntity;
  12380. if(lua_isuserdata(L, 3)) {
  12381. targetEntity = (Entity*) *((PolyBase**)lua_touserdata(L, 3));
  12382. } else {
  12383. targetEntity = NULL;
  12384. }
  12385. int entityFileVersion;
  12386. if(lua_isnumber(L, 4)) {
  12387. entityFileVersion = lua_tointeger(L, 4);
  12388. } else {
  12389. entityFileVersion = 1;
  12390. }
  12391. PolyBase *ptrRetVal = (PolyBase*)inst->loadObjectEntryIntoEntity(entry, targetEntity, entityFileVersion);
  12392. if(ptrRetVal == NULL) {
  12393. lua_pushnil(L);
  12394. } else {
  12395. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12396. *userdataPtr = ptrRetVal;
  12397. }
  12398. return 1;
  12399. }
  12400. static int Polycode_SceneEntityInstance_loadFromFile(lua_State *L) {
  12401. luaL_checktype(L, 1, LUA_TUSERDATA);
  12402. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12403. luaL_checktype(L, 2, LUA_TSTRING);
  12404. String fileName = String(lua_tostring(L, 2));
  12405. lua_pushboolean(L, inst->loadFromFile(fileName));
  12406. return 1;
  12407. }
  12408. static int Polycode_SceneEntityInstance_applySceneMesh(lua_State *L) {
  12409. luaL_checktype(L, 1, LUA_TUSERDATA);
  12410. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12411. luaL_checktype(L, 2, LUA_TUSERDATA);
  12412. ObjectEntry* entry = (ObjectEntry*) *((PolyBase**)lua_touserdata(L, 2));
  12413. luaL_checktype(L, 3, LUA_TUSERDATA);
  12414. SceneMesh* sceneMesh = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 3));
  12415. inst->applySceneMesh(entry, sceneMesh);
  12416. return 0;
  12417. }
  12418. static int Polycode_SceneEntityInstance_linkResourcePool(lua_State *L) {
  12419. luaL_checktype(L, 1, LUA_TUSERDATA);
  12420. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12421. luaL_checktype(L, 2, LUA_TUSERDATA);
  12422. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  12423. inst->linkResourcePool(pool);
  12424. return 0;
  12425. }
  12426. static int Polycode_SceneEntityInstance_getNumLinkedResourePools(lua_State *L) {
  12427. luaL_checktype(L, 1, LUA_TUSERDATA);
  12428. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12429. lua_pushinteger(L, inst->getNumLinkedResourePools());
  12430. return 1;
  12431. }
  12432. static int Polycode_SceneEntityInstance_getLinkedResourcePoolAtIndex(lua_State *L) {
  12433. luaL_checktype(L, 1, LUA_TUSERDATA);
  12434. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12435. luaL_checktype(L, 2, LUA_TNUMBER);
  12436. int index = lua_tointeger(L, 2);
  12437. PolyBase *ptrRetVal = (PolyBase*)inst->getLinkedResourcePoolAtIndex(index);
  12438. if(ptrRetVal == NULL) {
  12439. lua_pushnil(L);
  12440. } else {
  12441. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12442. *userdataPtr = ptrRetVal;
  12443. }
  12444. return 1;
  12445. }
  12446. static int Polycode_SceneEntityInstance_unlinkResourcePool(lua_State *L) {
  12447. luaL_checktype(L, 1, LUA_TUSERDATA);
  12448. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12449. luaL_checktype(L, 2, LUA_TUSERDATA);
  12450. ResourcePool* pool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  12451. inst->unlinkResourcePool(pool);
  12452. return 0;
  12453. }
  12454. static int Polycode_SceneEntityInstance_getResourceEntry(lua_State *L) {
  12455. luaL_checktype(L, 1, LUA_TUSERDATA);
  12456. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12457. PolyBase *ptrRetVal = (PolyBase*)inst->getResourceEntry();
  12458. if(ptrRetVal == NULL) {
  12459. lua_pushnil(L);
  12460. } else {
  12461. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12462. *userdataPtr = ptrRetVal;
  12463. }
  12464. return 1;
  12465. }
  12466. static int Polycode_SceneEntityInstance_getTopLevelResourcePool(lua_State *L) {
  12467. luaL_checktype(L, 1, LUA_TUSERDATA);
  12468. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12469. PolyBase *ptrRetVal = (PolyBase*)inst->getTopLevelResourcePool();
  12470. if(ptrRetVal == NULL) {
  12471. lua_pushnil(L);
  12472. } else {
  12473. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12474. *userdataPtr = ptrRetVal;
  12475. }
  12476. return 1;
  12477. }
  12478. static int Polycode_SceneEntityInstance_hasLayerID(lua_State *L) {
  12479. luaL_checktype(L, 1, LUA_TUSERDATA);
  12480. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12481. luaL_checktype(L, 2, LUA_TUSERDATA);
  12482. char layerID = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  12483. lua_pushboolean(L, inst->hasLayerID(layerID));
  12484. return 1;
  12485. }
  12486. static int Polycode_SceneEntityInstance_getNumLayers(lua_State *L) {
  12487. luaL_checktype(L, 1, LUA_TUSERDATA);
  12488. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12489. lua_pushinteger(L, inst->getNumLayers());
  12490. return 1;
  12491. }
  12492. static int Polycode_SceneEntityInstance_getLayerAtIndex(lua_State *L) {
  12493. luaL_checktype(L, 1, LUA_TUSERDATA);
  12494. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12495. luaL_checktype(L, 2, LUA_TNUMBER);
  12496. int index = lua_tointeger(L, 2);
  12497. PolyBase *ptrRetVal = (PolyBase*)inst->getLayerAtIndex(index);
  12498. if(ptrRetVal == NULL) {
  12499. lua_pushnil(L);
  12500. } else {
  12501. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12502. *userdataPtr = ptrRetVal;
  12503. }
  12504. return 1;
  12505. }
  12506. static int Polycode_SceneEntityInstance_removeLayer(lua_State *L) {
  12507. luaL_checktype(L, 1, LUA_TUSERDATA);
  12508. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12509. luaL_checktype(L, 2, LUA_TUSERDATA);
  12510. SceneEntityInstanceLayer* layer = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 2));
  12511. inst->removeLayer(layer);
  12512. return 0;
  12513. }
  12514. static int Polycode_SceneEntityInstance_createNewLayer(lua_State *L) {
  12515. luaL_checktype(L, 1, LUA_TUSERDATA);
  12516. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12517. luaL_checktype(L, 2, LUA_TSTRING);
  12518. String name = String(lua_tostring(L, 2));
  12519. PolyBase *ptrRetVal = (PolyBase*)inst->createNewLayer(name);
  12520. if(ptrRetVal == NULL) {
  12521. lua_pushnil(L);
  12522. } else {
  12523. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12524. *userdataPtr = ptrRetVal;
  12525. }
  12526. return 1;
  12527. }
  12528. static int Polycode_SceneEntityInstance_getFileName(lua_State *L) {
  12529. luaL_checktype(L, 1, LUA_TUSERDATA);
  12530. SceneEntityInstance *inst = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12531. lua_pushstring(L, inst->getFileName().c_str());
  12532. return 1;
  12533. }
  12534. static int Polycode_delete_SceneEntityInstance(lua_State *L) {
  12535. luaL_checktype(L, 1, LUA_TUSERDATA);
  12536. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12537. delete ((SceneEntityInstance*) *inst);
  12538. *inst = NULL;
  12539. return 0;
  12540. }
  12541. static int Polycode_SceneEntityInstanceLayer_get_name(lua_State *L) {
  12542. luaL_checktype(L, 1, LUA_TUSERDATA);
  12543. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12544. lua_pushstring(L, inst->name.c_str());
  12545. return 1;
  12546. }
  12547. static int Polycode_SceneEntityInstanceLayer_get_layerID(lua_State *L) {
  12548. luaL_checktype(L, 1, LUA_TUSERDATA);
  12549. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12550. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12551. *userdataPtr = (PolyBase*)&inst->layerID;
  12552. return 1;
  12553. }
  12554. static int Polycode_SceneEntityInstanceLayer_get_visible(lua_State *L) {
  12555. luaL_checktype(L, 1, LUA_TUSERDATA);
  12556. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12557. lua_pushboolean(L, inst->visible);
  12558. return 1;
  12559. }
  12560. static int Polycode_SceneEntityInstanceLayer_get_instance(lua_State *L) {
  12561. luaL_checktype(L, 1, LUA_TUSERDATA);
  12562. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12563. if(!inst->instance) {
  12564. lua_pushnil(L);
  12565. } else {
  12566. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12567. *userdataPtr = (PolyBase*)inst->instance;
  12568. }
  12569. return 1;
  12570. }
  12571. static int Polycode_SceneEntityInstanceLayer_set_name(lua_State *L) {
  12572. luaL_checktype(L, 1, LUA_TUSERDATA);
  12573. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12574. String param = lua_tostring(L, 2);
  12575. inst->name = param;
  12576. return 0;
  12577. }
  12578. static int Polycode_SceneEntityInstanceLayer_set_layerID(lua_State *L) {
  12579. luaL_checktype(L, 1, LUA_TUSERDATA);
  12580. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12581. luaL_checktype(L, 2, LUA_TUSERDATA);
  12582. char *argInst = (char*) *((PolyBase**)lua_touserdata(L, 2));
  12583. inst->layerID = *argInst;
  12584. return 0;
  12585. }
  12586. static int Polycode_SceneEntityInstanceLayer_set_visible(lua_State *L) {
  12587. luaL_checktype(L, 1, LUA_TUSERDATA);
  12588. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12589. bool param = lua_toboolean(L, 2) != 0;
  12590. inst->visible = param;
  12591. return 0;
  12592. }
  12593. static int Polycode_SceneEntityInstanceLayer_set_instance(lua_State *L) {
  12594. luaL_checktype(L, 1, LUA_TUSERDATA);
  12595. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12596. luaL_checktype(L, 2, LUA_TUSERDATA);
  12597. SceneEntityInstance* *argInst = (SceneEntityInstance**) *((PolyBase**)lua_touserdata(L, 2));
  12598. inst->instance = *argInst;
  12599. return 0;
  12600. }
  12601. static int Polycode_SceneEntityInstanceLayer(lua_State *L) {
  12602. luaL_checktype(L, 1, LUA_TUSERDATA);
  12603. SceneEntityInstance* instance = (SceneEntityInstance*) *((PolyBase**)lua_touserdata(L, 1));
  12604. luaL_checktype(L, 2, LUA_TSTRING);
  12605. String name = String(lua_tostring(L, 2));
  12606. SceneEntityInstanceLayer *inst = new SceneEntityInstanceLayer(instance, name);
  12607. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12608. *userdataPtr = (PolyBase*)inst;
  12609. luaL_getmetatable(L, "Polycode.SceneEntityInstanceLayer");
  12610. lua_setmetatable(L, -2);
  12611. return 1;
  12612. }
  12613. static int Polycode_SceneEntityInstanceLayer_setLayerVisibility(lua_State *L) {
  12614. luaL_checktype(L, 1, LUA_TUSERDATA);
  12615. SceneEntityInstanceLayer *inst = (SceneEntityInstanceLayer*) *((PolyBase**)lua_touserdata(L, 1));
  12616. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12617. bool val = lua_toboolean(L, 2) != 0;
  12618. inst->setLayerVisibility(val);
  12619. return 0;
  12620. }
  12621. static int Polycode_delete_SceneEntityInstanceLayer(lua_State *L) {
  12622. luaL_checktype(L, 1, LUA_TUSERDATA);
  12623. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12624. delete ((SceneEntityInstanceLayer*) *inst);
  12625. *inst = NULL;
  12626. return 0;
  12627. }
  12628. static int Polycode_SceneImage(lua_State *L) {
  12629. luaL_checktype(L, 1, LUA_TSTRING);
  12630. String fileName = String(lua_tostring(L, 1));
  12631. SceneImage *inst = new SceneImage(fileName);
  12632. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12633. *userdataPtr = (PolyBase*)inst;
  12634. luaL_getmetatable(L, "Polycode.SceneImage");
  12635. lua_setmetatable(L, -2);
  12636. return 1;
  12637. }
  12638. static int Polycode_SceneImage_SceneImageWithImage(lua_State *L) {
  12639. luaL_checktype(L, 1, LUA_TUSERDATA);
  12640. Image* image = (Image*) *((PolyBase**)lua_touserdata(L, 1));
  12641. PolyBase *ptrRetVal = (PolyBase*)SceneImage::SceneImageWithImage(image);
  12642. if(ptrRetVal == NULL) {
  12643. lua_pushnil(L);
  12644. } else {
  12645. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12646. *userdataPtr = ptrRetVal;
  12647. }
  12648. return 1;
  12649. }
  12650. static int Polycode_SceneImage_SceneImageWithTexture(lua_State *L) {
  12651. luaL_checktype(L, 1, LUA_TUSERDATA);
  12652. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  12653. PolyBase *ptrRetVal = (PolyBase*)SceneImage::SceneImageWithTexture(texture);
  12654. if(ptrRetVal == NULL) {
  12655. lua_pushnil(L);
  12656. } else {
  12657. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12658. *userdataPtr = ptrRetVal;
  12659. }
  12660. return 1;
  12661. }
  12662. static int Polycode_SceneImage_Clone(lua_State *L) {
  12663. luaL_checktype(L, 1, LUA_TUSERDATA);
  12664. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  12665. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12666. bool deepClone = lua_toboolean(L, 2) != 0;
  12667. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12668. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12669. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12670. if(ptrRetVal == NULL) {
  12671. lua_pushnil(L);
  12672. } else {
  12673. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12674. *userdataPtr = ptrRetVal;
  12675. }
  12676. return 1;
  12677. }
  12678. static int Polycode_SceneImage_applyClone(lua_State *L) {
  12679. luaL_checktype(L, 1, LUA_TUSERDATA);
  12680. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  12681. luaL_checktype(L, 2, LUA_TUSERDATA);
  12682. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12683. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12684. bool deepClone = lua_toboolean(L, 3) != 0;
  12685. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12686. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12687. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12688. return 0;
  12689. }
  12690. static int Polycode_SceneImage_setImageCoordinates(lua_State *L) {
  12691. luaL_checktype(L, 1, LUA_TUSERDATA);
  12692. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  12693. luaL_checktype(L, 2, LUA_TNUMBER);
  12694. Number x = lua_tonumber(L, 2);
  12695. luaL_checktype(L, 3, LUA_TNUMBER);
  12696. Number y = lua_tonumber(L, 3);
  12697. luaL_checktype(L, 4, LUA_TNUMBER);
  12698. Number width = lua_tonumber(L, 4);
  12699. luaL_checktype(L, 5, LUA_TNUMBER);
  12700. Number height = lua_tonumber(L, 5);
  12701. Number realWidth;
  12702. if(lua_isnumber(L, 6)) {
  12703. realWidth = lua_tonumber(L, 6);
  12704. } else {
  12705. realWidth = - 1;
  12706. }
  12707. Number realHeight;
  12708. if(lua_isnumber(L, 7)) {
  12709. realHeight = lua_tonumber(L, 7);
  12710. } else {
  12711. realHeight = - 1;
  12712. }
  12713. inst->setImageCoordinates(x, y, width, height, realWidth, realHeight);
  12714. return 0;
  12715. }
  12716. static int Polycode_SceneImage_getImageWidth(lua_State *L) {
  12717. luaL_checktype(L, 1, LUA_TUSERDATA);
  12718. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  12719. lua_pushnumber(L, inst->getImageWidth());
  12720. return 1;
  12721. }
  12722. static int Polycode_SceneImage_getImageHeight(lua_State *L) {
  12723. luaL_checktype(L, 1, LUA_TUSERDATA);
  12724. SceneImage *inst = (SceneImage*) *((PolyBase**)lua_touserdata(L, 1));
  12725. lua_pushnumber(L, inst->getImageHeight());
  12726. return 1;
  12727. }
  12728. static int Polycode_delete_SceneImage(lua_State *L) {
  12729. luaL_checktype(L, 1, LUA_TUSERDATA);
  12730. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12731. delete ((SceneImage*) *inst);
  12732. *inst = NULL;
  12733. return 0;
  12734. }
  12735. static int Polycode_SceneLabel_get_positionAtBaseline(lua_State *L) {
  12736. luaL_checktype(L, 1, LUA_TUSERDATA);
  12737. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12738. lua_pushboolean(L, inst->positionAtBaseline);
  12739. return 1;
  12740. }
  12741. static int Polycode_SceneLabel_set_positionAtBaseline(lua_State *L) {
  12742. luaL_checktype(L, 1, LUA_TUSERDATA);
  12743. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12744. bool param = lua_toboolean(L, 2) != 0;
  12745. inst->positionAtBaseline = param;
  12746. return 0;
  12747. }
  12748. static int Polycode_SceneLabel(lua_State *L) {
  12749. luaL_checktype(L, 1, LUA_TSTRING);
  12750. String text = String(lua_tostring(L, 1));
  12751. luaL_checktype(L, 2, LUA_TNUMBER);
  12752. int size = lua_tointeger(L, 2);
  12753. String fontName;
  12754. if(lua_isstring(L, 3)) {
  12755. fontName = lua_tostring(L, 3);
  12756. } else {
  12757. fontName = "sans";
  12758. }
  12759. int amode;
  12760. if(lua_isnumber(L, 4)) {
  12761. amode = lua_tointeger(L, 4);
  12762. } else {
  12763. amode = 0;
  12764. }
  12765. Number actualHeight;
  12766. if(lua_isnumber(L, 5)) {
  12767. actualHeight = lua_tonumber(L, 5);
  12768. } else {
  12769. actualHeight = 0.0;
  12770. }
  12771. bool premultiplyAlpha;
  12772. if(lua_isboolean(L, 6)) {
  12773. premultiplyAlpha = lua_toboolean(L, 6) != 0;
  12774. } else {
  12775. premultiplyAlpha = false;
  12776. }
  12777. luaL_checktype(L, 7, LUA_TUSERDATA);
  12778. Color backgroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 7));
  12779. luaL_checktype(L, 8, LUA_TUSERDATA);
  12780. Color foregroundColor = *(Color*) *((PolyBase**)lua_touserdata(L, 8));
  12781. SceneLabel *inst = new SceneLabel(text, size, fontName, amode, actualHeight, premultiplyAlpha, backgroundColor, foregroundColor);
  12782. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12783. *userdataPtr = (PolyBase*)inst;
  12784. luaL_getmetatable(L, "Polycode.SceneLabel");
  12785. lua_setmetatable(L, -2);
  12786. return 1;
  12787. }
  12788. static int Polycode_SceneLabel_getText(lua_State *L) {
  12789. luaL_checktype(L, 1, LUA_TUSERDATA);
  12790. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12791. lua_pushstring(L, inst->getText().c_str());
  12792. return 1;
  12793. }
  12794. static int Polycode_SceneLabel_setLabelActualHeight(lua_State *L) {
  12795. luaL_checktype(L, 1, LUA_TUSERDATA);
  12796. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12797. luaL_checktype(L, 2, LUA_TNUMBER);
  12798. Number actualHeight = lua_tonumber(L, 2);
  12799. inst->setLabelActualHeight(actualHeight);
  12800. return 0;
  12801. }
  12802. static int Polycode_SceneLabel_getLabelActualHeight(lua_State *L) {
  12803. luaL_checktype(L, 1, LUA_TUSERDATA);
  12804. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12805. lua_pushnumber(L, inst->getLabelActualHeight());
  12806. return 1;
  12807. }
  12808. static int Polycode_SceneLabel_Render(lua_State *L) {
  12809. luaL_checktype(L, 1, LUA_TUSERDATA);
  12810. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12811. luaL_checktype(L, 2, LUA_TUSERDATA);
  12812. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  12813. inst->Render(buffer);
  12814. return 0;
  12815. }
  12816. static int Polycode_SceneLabel_getTextWidthForString(lua_State *L) {
  12817. luaL_checktype(L, 1, LUA_TUSERDATA);
  12818. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12819. luaL_checktype(L, 2, LUA_TSTRING);
  12820. String text = String(lua_tostring(L, 2));
  12821. lua_pushinteger(L, inst->getTextWidthForString(text));
  12822. return 1;
  12823. }
  12824. static int Polycode_SceneLabel_setText(lua_State *L) {
  12825. luaL_checktype(L, 1, LUA_TUSERDATA);
  12826. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12827. luaL_checktype(L, 2, LUA_TSTRING);
  12828. String newText = String(lua_tostring(L, 2));
  12829. inst->setText(newText);
  12830. return 0;
  12831. }
  12832. static int Polycode_SceneLabel_Clone(lua_State *L) {
  12833. luaL_checktype(L, 1, LUA_TUSERDATA);
  12834. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12835. luaL_checktype(L, 2, LUA_TBOOLEAN);
  12836. bool deepClone = lua_toboolean(L, 2) != 0;
  12837. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12838. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  12839. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  12840. if(ptrRetVal == NULL) {
  12841. lua_pushnil(L);
  12842. } else {
  12843. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12844. *userdataPtr = ptrRetVal;
  12845. }
  12846. return 1;
  12847. }
  12848. static int Polycode_SceneLabel_applyClone(lua_State *L) {
  12849. luaL_checktype(L, 1, LUA_TUSERDATA);
  12850. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12851. luaL_checktype(L, 2, LUA_TUSERDATA);
  12852. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  12853. luaL_checktype(L, 3, LUA_TBOOLEAN);
  12854. bool deepClone = lua_toboolean(L, 3) != 0;
  12855. luaL_checktype(L, 4, LUA_TBOOLEAN);
  12856. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  12857. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  12858. return 0;
  12859. }
  12860. static int Polycode_SceneLabel_updateFromLabel(lua_State *L) {
  12861. luaL_checktype(L, 1, LUA_TUSERDATA);
  12862. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12863. inst->updateFromLabel();
  12864. return 0;
  12865. }
  12866. static int Polycode_SceneLabel_getLabel(lua_State *L) {
  12867. luaL_checktype(L, 1, LUA_TUSERDATA);
  12868. SceneLabel *inst = (SceneLabel*) *((PolyBase**)lua_touserdata(L, 1));
  12869. PolyBase *ptrRetVal = (PolyBase*)inst->getLabel();
  12870. if(ptrRetVal == NULL) {
  12871. lua_pushnil(L);
  12872. } else {
  12873. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12874. *userdataPtr = ptrRetVal;
  12875. }
  12876. return 1;
  12877. }
  12878. static int Polycode_delete_SceneLabel(lua_State *L) {
  12879. luaL_checktype(L, 1, LUA_TUSERDATA);
  12880. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  12881. delete ((SceneLabel*) *inst);
  12882. *inst = NULL;
  12883. return 0;
  12884. }
  12885. static int Polycode_SceneLight(lua_State *L) {
  12886. luaL_checktype(L, 1, LUA_TNUMBER);
  12887. int type = lua_tointeger(L, 1);
  12888. luaL_checktype(L, 2, LUA_TUSERDATA);
  12889. Scene* parentScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  12890. luaL_checktype(L, 3, LUA_TNUMBER);
  12891. Number intensity = lua_tonumber(L, 3);
  12892. Number constantAttenuation;
  12893. if(lua_isnumber(L, 4)) {
  12894. constantAttenuation = lua_tonumber(L, 4);
  12895. } else {
  12896. constantAttenuation = 1;
  12897. }
  12898. Number linearAttenuation;
  12899. if(lua_isnumber(L, 5)) {
  12900. linearAttenuation = lua_tonumber(L, 5);
  12901. } else {
  12902. linearAttenuation = 1;
  12903. }
  12904. Number quadraticAttenuation;
  12905. if(lua_isnumber(L, 6)) {
  12906. quadraticAttenuation = lua_tonumber(L, 6);
  12907. } else {
  12908. quadraticAttenuation = 1;
  12909. }
  12910. SceneLight *inst = new SceneLight(type, parentScene, intensity, constantAttenuation, linearAttenuation, quadraticAttenuation);
  12911. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12912. *userdataPtr = (PolyBase*)inst;
  12913. luaL_getmetatable(L, "Polycode.SceneLight");
  12914. lua_setmetatable(L, -2);
  12915. return 1;
  12916. }
  12917. static int Polycode_SceneLight_getIntensity(lua_State *L) {
  12918. luaL_checktype(L, 1, LUA_TUSERDATA);
  12919. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12920. lua_pushnumber(L, inst->getIntensity());
  12921. return 1;
  12922. }
  12923. static int Polycode_SceneLight_setIntensity(lua_State *L) {
  12924. luaL_checktype(L, 1, LUA_TUSERDATA);
  12925. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12926. luaL_checktype(L, 2, LUA_TNUMBER);
  12927. Number newIntensity = lua_tonumber(L, 2);
  12928. inst->setIntensity(newIntensity);
  12929. return 0;
  12930. }
  12931. static int Polycode_SceneLight_setAttenuation(lua_State *L) {
  12932. luaL_checktype(L, 1, LUA_TUSERDATA);
  12933. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12934. luaL_checktype(L, 2, LUA_TNUMBER);
  12935. Number constantAttenuation = lua_tonumber(L, 2);
  12936. luaL_checktype(L, 3, LUA_TNUMBER);
  12937. Number linearAttenuation = lua_tonumber(L, 3);
  12938. luaL_checktype(L, 4, LUA_TNUMBER);
  12939. Number quadraticAttenuation = lua_tonumber(L, 4);
  12940. inst->setAttenuation(constantAttenuation, linearAttenuation, quadraticAttenuation);
  12941. return 0;
  12942. }
  12943. static int Polycode_SceneLight_getConstantAttenuation(lua_State *L) {
  12944. luaL_checktype(L, 1, LUA_TUSERDATA);
  12945. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12946. lua_pushnumber(L, inst->getConstantAttenuation());
  12947. return 1;
  12948. }
  12949. static int Polycode_SceneLight_getLinearAttenuation(lua_State *L) {
  12950. luaL_checktype(L, 1, LUA_TUSERDATA);
  12951. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12952. lua_pushnumber(L, inst->getLinearAttenuation());
  12953. return 1;
  12954. }
  12955. static int Polycode_SceneLight_getQuadraticAttenuation(lua_State *L) {
  12956. luaL_checktype(L, 1, LUA_TUSERDATA);
  12957. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12958. lua_pushnumber(L, inst->getQuadraticAttenuation());
  12959. return 1;
  12960. }
  12961. static int Polycode_SceneLight_getType(lua_State *L) {
  12962. luaL_checktype(L, 1, LUA_TUSERDATA);
  12963. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12964. lua_pushinteger(L, inst->getType());
  12965. return 1;
  12966. }
  12967. static int Polycode_SceneLight_renderDepthMap(lua_State *L) {
  12968. luaL_checktype(L, 1, LUA_TUSERDATA);
  12969. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12970. luaL_checktype(L, 2, LUA_TUSERDATA);
  12971. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  12972. inst->renderDepthMap(scene);
  12973. return 0;
  12974. }
  12975. static int Polycode_SceneLight_getZBufferTexture(lua_State *L) {
  12976. luaL_checktype(L, 1, LUA_TUSERDATA);
  12977. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12978. PolyBase *ptrRetVal = (PolyBase*)inst->getZBufferTexture();
  12979. if(ptrRetVal == NULL) {
  12980. lua_pushnil(L);
  12981. } else {
  12982. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  12983. *userdataPtr = ptrRetVal;
  12984. }
  12985. return 1;
  12986. }
  12987. static int Polycode_SceneLight_setSpecularLightColor(lua_State *L) {
  12988. luaL_checktype(L, 1, LUA_TUSERDATA);
  12989. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  12990. luaL_checktype(L, 2, LUA_TNUMBER);
  12991. Number r = lua_tonumber(L, 2);
  12992. luaL_checktype(L, 3, LUA_TNUMBER);
  12993. Number g = lua_tonumber(L, 3);
  12994. luaL_checktype(L, 4, LUA_TNUMBER);
  12995. Number b = lua_tonumber(L, 4);
  12996. luaL_checktype(L, 5, LUA_TNUMBER);
  12997. Number a = lua_tonumber(L, 5);
  12998. inst->setSpecularLightColor(r, g, b, a);
  12999. return 0;
  13000. }
  13001. static int Polycode_SceneLight_setDiffuseLightColor(lua_State *L) {
  13002. luaL_checktype(L, 1, LUA_TUSERDATA);
  13003. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13004. luaL_checktype(L, 2, LUA_TNUMBER);
  13005. Number r = lua_tonumber(L, 2);
  13006. luaL_checktype(L, 3, LUA_TNUMBER);
  13007. Number g = lua_tonumber(L, 3);
  13008. luaL_checktype(L, 4, LUA_TNUMBER);
  13009. Number b = lua_tonumber(L, 4);
  13010. Number a;
  13011. if(lua_isnumber(L, 5)) {
  13012. a = lua_tonumber(L, 5);
  13013. } else {
  13014. a = 1.0;
  13015. }
  13016. inst->setDiffuseLightColor(r, g, b, a);
  13017. return 0;
  13018. }
  13019. static int Polycode_SceneLight_setLightColor(lua_State *L) {
  13020. luaL_checktype(L, 1, LUA_TUSERDATA);
  13021. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13022. luaL_checktype(L, 2, LUA_TNUMBER);
  13023. Number r = lua_tonumber(L, 2);
  13024. luaL_checktype(L, 3, LUA_TNUMBER);
  13025. Number g = lua_tonumber(L, 3);
  13026. luaL_checktype(L, 4, LUA_TNUMBER);
  13027. Number b = lua_tonumber(L, 4);
  13028. Number a;
  13029. if(lua_isnumber(L, 5)) {
  13030. a = lua_tonumber(L, 5);
  13031. } else {
  13032. a = 1.0;
  13033. }
  13034. inst->setLightColor(r, g, b, a);
  13035. return 0;
  13036. }
  13037. static int Polycode_SceneLight_setSpotlightProperties(lua_State *L) {
  13038. luaL_checktype(L, 1, LUA_TUSERDATA);
  13039. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13040. luaL_checktype(L, 2, LUA_TNUMBER);
  13041. Number spotlightCutoff = lua_tonumber(L, 2);
  13042. luaL_checktype(L, 3, LUA_TNUMBER);
  13043. Number spotlightExponent = lua_tonumber(L, 3);
  13044. inst->setSpotlightProperties(spotlightCutoff, spotlightExponent);
  13045. return 0;
  13046. }
  13047. static int Polycode_SceneLight_getSpotlightCutoff(lua_State *L) {
  13048. luaL_checktype(L, 1, LUA_TUSERDATA);
  13049. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13050. lua_pushnumber(L, inst->getSpotlightCutoff());
  13051. return 1;
  13052. }
  13053. static int Polycode_SceneLight_getSpotlightExponent(lua_State *L) {
  13054. luaL_checktype(L, 1, LUA_TUSERDATA);
  13055. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13056. lua_pushnumber(L, inst->getSpotlightExponent());
  13057. return 1;
  13058. }
  13059. static int Polycode_SceneLight_enableShadows(lua_State *L) {
  13060. luaL_checktype(L, 1, LUA_TUSERDATA);
  13061. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13062. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13063. bool val = lua_toboolean(L, 2) != 0;
  13064. int resolution;
  13065. if(lua_isnumber(L, 3)) {
  13066. resolution = lua_tointeger(L, 3);
  13067. } else {
  13068. resolution = 256;
  13069. }
  13070. inst->enableShadows(val, resolution);
  13071. return 0;
  13072. }
  13073. static int Polycode_SceneLight_setShadowMapFOV(lua_State *L) {
  13074. luaL_checktype(L, 1, LUA_TUSERDATA);
  13075. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13076. luaL_checktype(L, 2, LUA_TNUMBER);
  13077. Number fov = lua_tonumber(L, 2);
  13078. inst->setShadowMapFOV(fov);
  13079. return 0;
  13080. }
  13081. static int Polycode_SceneLight_getShadowMapFOV(lua_State *L) {
  13082. luaL_checktype(L, 1, LUA_TUSERDATA);
  13083. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13084. lua_pushnumber(L, inst->getShadowMapFOV());
  13085. return 1;
  13086. }
  13087. static int Polycode_SceneLight_getShadowMapResolution(lua_State *L) {
  13088. luaL_checktype(L, 1, LUA_TUSERDATA);
  13089. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13090. lua_pushinteger(L, inst->getShadowMapResolution());
  13091. return 1;
  13092. }
  13093. static int Polycode_SceneLight_areShadowsEnabled(lua_State *L) {
  13094. luaL_checktype(L, 1, LUA_TUSERDATA);
  13095. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13096. lua_pushboolean(L, inst->areShadowsEnabled());
  13097. return 1;
  13098. }
  13099. static int Polycode_SceneLight_getLightType(lua_State *L) {
  13100. luaL_checktype(L, 1, LUA_TUSERDATA);
  13101. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13102. lua_pushinteger(L, inst->getLightType());
  13103. return 1;
  13104. }
  13105. static int Polycode_SceneLight_setLightImportance(lua_State *L) {
  13106. luaL_checktype(L, 1, LUA_TUSERDATA);
  13107. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13108. luaL_checktype(L, 2, LUA_TNUMBER);
  13109. int newImportance = lua_tointeger(L, 2);
  13110. inst->setLightImportance(newImportance);
  13111. return 0;
  13112. }
  13113. static int Polycode_SceneLight_getLightImportance(lua_State *L) {
  13114. luaL_checktype(L, 1, LUA_TUSERDATA);
  13115. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13116. lua_pushinteger(L, inst->getLightImportance());
  13117. return 1;
  13118. }
  13119. static int Polycode_SceneLight_setLightType(lua_State *L) {
  13120. luaL_checktype(L, 1, LUA_TUSERDATA);
  13121. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13122. luaL_checktype(L, 2, LUA_TNUMBER);
  13123. int lightType = lua_tointeger(L, 2);
  13124. inst->setLightType(lightType);
  13125. return 0;
  13126. }
  13127. static int Polycode_SceneLight_Clone(lua_State *L) {
  13128. luaL_checktype(L, 1, LUA_TUSERDATA);
  13129. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13130. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13131. bool deepClone = lua_toboolean(L, 2) != 0;
  13132. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13133. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13134. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13135. if(ptrRetVal == NULL) {
  13136. lua_pushnil(L);
  13137. } else {
  13138. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13139. *userdataPtr = ptrRetVal;
  13140. }
  13141. return 1;
  13142. }
  13143. static int Polycode_SceneLight_applyClone(lua_State *L) {
  13144. luaL_checktype(L, 1, LUA_TUSERDATA);
  13145. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13146. luaL_checktype(L, 2, LUA_TUSERDATA);
  13147. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13148. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13149. bool deepClone = lua_toboolean(L, 3) != 0;
  13150. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13151. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13152. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13153. return 0;
  13154. }
  13155. static int Polycode_SceneLight_getParentScene(lua_State *L) {
  13156. luaL_checktype(L, 1, LUA_TUSERDATA);
  13157. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13158. PolyBase *ptrRetVal = (PolyBase*)inst->getParentScene();
  13159. if(ptrRetVal == NULL) {
  13160. lua_pushnil(L);
  13161. } else {
  13162. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13163. *userdataPtr = ptrRetVal;
  13164. }
  13165. return 1;
  13166. }
  13167. static int Polycode_SceneLight_setParentScene(lua_State *L) {
  13168. luaL_checktype(L, 1, LUA_TUSERDATA);
  13169. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13170. luaL_checktype(L, 2, LUA_TUSERDATA);
  13171. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  13172. inst->setParentScene(scene);
  13173. return 0;
  13174. }
  13175. static int Polycode_SceneLight_getSpotlightCamera(lua_State *L) {
  13176. luaL_checktype(L, 1, LUA_TUSERDATA);
  13177. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13178. PolyBase *ptrRetVal = (PolyBase*)inst->getSpotlightCamera();
  13179. if(ptrRetVal == NULL) {
  13180. lua_pushnil(L);
  13181. } else {
  13182. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13183. *userdataPtr = ptrRetVal;
  13184. }
  13185. return 1;
  13186. }
  13187. static int Polycode_SceneLight_getLightInfo(lua_State *L) {
  13188. luaL_checktype(L, 1, LUA_TUSERDATA);
  13189. SceneLight *inst = (SceneLight*) *((PolyBase**)lua_touserdata(L, 1));
  13190. LightInfo *retInst = new LightInfo();
  13191. *retInst = inst->getLightInfo();
  13192. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13193. luaL_getmetatable(L, "Polycode.LightInfo");
  13194. lua_setmetatable(L, -2);
  13195. *userdataPtr = (PolyBase*)retInst;
  13196. return 1;
  13197. }
  13198. static int Polycode_delete_SceneLight(lua_State *L) {
  13199. luaL_checktype(L, 1, LUA_TUSERDATA);
  13200. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13201. delete ((SceneLight*) *inst);
  13202. *inst = NULL;
  13203. return 0;
  13204. }
  13205. static int Polycode_SceneCurve_get_renderCurve(lua_State *L) {
  13206. luaL_checktype(L, 1, LUA_TUSERDATA);
  13207. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13208. lua_pushboolean(L, inst->renderCurve);
  13209. return 1;
  13210. }
  13211. static int Polycode_SceneCurve_get_curveResolution(lua_State *L) {
  13212. luaL_checktype(L, 1, LUA_TUSERDATA);
  13213. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13214. lua_pushinteger(L, inst->curveResolution);
  13215. return 1;
  13216. }
  13217. static int Polycode_SceneCurve_set_renderCurve(lua_State *L) {
  13218. luaL_checktype(L, 1, LUA_TUSERDATA);
  13219. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13220. bool param = lua_toboolean(L, 2) != 0;
  13221. inst->renderCurve = param;
  13222. return 0;
  13223. }
  13224. static int Polycode_SceneCurve_set_curveResolution(lua_State *L) {
  13225. luaL_checktype(L, 1, LUA_TUSERDATA);
  13226. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13227. int param = lua_tointeger(L, 2);
  13228. inst->curveResolution = param;
  13229. return 0;
  13230. }
  13231. static int Polycode_SceneCurve(lua_State *L) {
  13232. SceneCurve *inst = new SceneCurve();
  13233. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13234. *userdataPtr = (PolyBase*)inst;
  13235. luaL_getmetatable(L, "Polycode.SceneCurve");
  13236. lua_setmetatable(L, -2);
  13237. return 1;
  13238. }
  13239. static int Polycode_SceneCurve_SceneCurveWithCurve(lua_State *L) {
  13240. luaL_checktype(L, 1, LUA_TUSERDATA);
  13241. BezierCurve* curve = (BezierCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13242. PolyBase *ptrRetVal = (PolyBase*)SceneCurve::SceneCurveWithCurve(curve);
  13243. if(ptrRetVal == NULL) {
  13244. lua_pushnil(L);
  13245. } else {
  13246. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13247. *userdataPtr = ptrRetVal;
  13248. }
  13249. return 1;
  13250. }
  13251. static int Polycode_SceneCurve_getWorldPointAt(lua_State *L) {
  13252. luaL_checktype(L, 1, LUA_TUSERDATA);
  13253. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13254. luaL_checktype(L, 2, LUA_TNUMBER);
  13255. Number t = lua_tonumber(L, 2);
  13256. Vector3 *retInst = new Vector3();
  13257. *retInst = inst->getWorldPointAt(t);
  13258. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13259. luaL_getmetatable(L, "Polycode.Vector3");
  13260. lua_setmetatable(L, -2);
  13261. *userdataPtr = (PolyBase*)retInst;
  13262. return 1;
  13263. }
  13264. static int Polycode_SceneCurve_Update(lua_State *L) {
  13265. luaL_checktype(L, 1, LUA_TUSERDATA);
  13266. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13267. inst->Update();
  13268. return 0;
  13269. }
  13270. static int Polycode_SceneCurve_Clone(lua_State *L) {
  13271. luaL_checktype(L, 1, LUA_TUSERDATA);
  13272. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13273. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13274. bool deepClone = lua_toboolean(L, 2) != 0;
  13275. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13276. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13277. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13278. if(ptrRetVal == NULL) {
  13279. lua_pushnil(L);
  13280. } else {
  13281. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13282. *userdataPtr = ptrRetVal;
  13283. }
  13284. return 1;
  13285. }
  13286. static int Polycode_SceneCurve_applyClone(lua_State *L) {
  13287. luaL_checktype(L, 1, LUA_TUSERDATA);
  13288. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13289. luaL_checktype(L, 2, LUA_TUSERDATA);
  13290. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13291. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13292. bool deepClone = lua_toboolean(L, 3) != 0;
  13293. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13294. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13295. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13296. return 0;
  13297. }
  13298. static int Polycode_SceneCurve_getCurve(lua_State *L) {
  13299. luaL_checktype(L, 1, LUA_TUSERDATA);
  13300. SceneCurve *inst = (SceneCurve*) *((PolyBase**)lua_touserdata(L, 1));
  13301. PolyBase *ptrRetVal = (PolyBase*)inst->getCurve();
  13302. if(ptrRetVal == NULL) {
  13303. lua_pushnil(L);
  13304. } else {
  13305. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13306. *userdataPtr = ptrRetVal;
  13307. }
  13308. return 1;
  13309. }
  13310. static int Polycode_delete_SceneCurve(lua_State *L) {
  13311. luaL_checktype(L, 1, LUA_TUSERDATA);
  13312. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13313. delete ((SceneCurve*) *inst);
  13314. *inst = NULL;
  13315. return 0;
  13316. }
  13317. static int Polycode_SceneLine(lua_State *L) {
  13318. luaL_checktype(L, 1, LUA_TUSERDATA);
  13319. Entity* ent1 = (Entity*) *((PolyBase**)lua_touserdata(L, 1));
  13320. luaL_checktype(L, 2, LUA_TUSERDATA);
  13321. Entity* ent2 = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13322. SceneLine *inst = new SceneLine(ent1, ent2);
  13323. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13324. *userdataPtr = (PolyBase*)inst;
  13325. luaL_getmetatable(L, "Polycode.SceneLine");
  13326. lua_setmetatable(L, -2);
  13327. return 1;
  13328. }
  13329. static int Polycode_SceneLine_SceneLineWithPositions(lua_State *L) {
  13330. luaL_checktype(L, 1, LUA_TUSERDATA);
  13331. Vector3 startp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  13332. luaL_checktype(L, 2, LUA_TUSERDATA);
  13333. Vector3 endp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  13334. PolyBase *ptrRetVal = (PolyBase*)SceneLine::SceneLineWithPositions(startp, endp);
  13335. if(ptrRetVal == NULL) {
  13336. lua_pushnil(L);
  13337. } else {
  13338. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13339. *userdataPtr = ptrRetVal;
  13340. }
  13341. return 1;
  13342. }
  13343. static int Polycode_SceneLine_setStart(lua_State *L) {
  13344. luaL_checktype(L, 1, LUA_TUSERDATA);
  13345. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  13346. luaL_checktype(L, 2, LUA_TUSERDATA);
  13347. Vector3 startp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  13348. inst->setStart(startp);
  13349. return 0;
  13350. }
  13351. static int Polycode_SceneLine_setEnd(lua_State *L) {
  13352. luaL_checktype(L, 1, LUA_TUSERDATA);
  13353. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  13354. luaL_checktype(L, 2, LUA_TUSERDATA);
  13355. Vector3 endp = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  13356. inst->setEnd(endp);
  13357. return 0;
  13358. }
  13359. static int Polycode_SceneLine_Update(lua_State *L) {
  13360. luaL_checktype(L, 1, LUA_TUSERDATA);
  13361. SceneLine *inst = (SceneLine*) *((PolyBase**)lua_touserdata(L, 1));
  13362. inst->Update();
  13363. return 0;
  13364. }
  13365. static int Polycode_delete_SceneLine(lua_State *L) {
  13366. luaL_checktype(L, 1, LUA_TUSERDATA);
  13367. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13368. delete ((SceneLine*) *inst);
  13369. *inst = NULL;
  13370. return 0;
  13371. }
  13372. static int Polycode_SceneManager(lua_State *L) {
  13373. SceneManager *inst = new SceneManager();
  13374. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13375. *userdataPtr = (PolyBase*)inst;
  13376. luaL_getmetatable(L, "Polycode.SceneManager");
  13377. lua_setmetatable(L, -2);
  13378. return 1;
  13379. }
  13380. static int Polycode_SceneManager_addScene(lua_State *L) {
  13381. luaL_checktype(L, 1, LUA_TUSERDATA);
  13382. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13383. luaL_checktype(L, 2, LUA_TUSERDATA);
  13384. Scene* newScene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  13385. inst->addScene(newScene);
  13386. return 0;
  13387. }
  13388. static int Polycode_SceneManager_removeScene(lua_State *L) {
  13389. luaL_checktype(L, 1, LUA_TUSERDATA);
  13390. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13391. luaL_checktype(L, 2, LUA_TUSERDATA);
  13392. Scene* scene = (Scene*) *((PolyBase**)lua_touserdata(L, 2));
  13393. inst->removeScene(scene);
  13394. return 0;
  13395. }
  13396. static int Polycode_SceneManager_Update(lua_State *L) {
  13397. luaL_checktype(L, 1, LUA_TUSERDATA);
  13398. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13399. inst->Update();
  13400. return 0;
  13401. }
  13402. static int Polycode_SceneManager_fixedUpdate(lua_State *L) {
  13403. luaL_checktype(L, 1, LUA_TUSERDATA);
  13404. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13405. inst->fixedUpdate();
  13406. return 0;
  13407. }
  13408. static int Polycode_SceneManager_Render(lua_State *L) {
  13409. luaL_checktype(L, 1, LUA_TUSERDATA);
  13410. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13411. luaL_checktype(L, 2, LUA_TUSERDATA);
  13412. Polycode::Rectangle viewport = *(Polycode::Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  13413. inst->Render(viewport);
  13414. return 0;
  13415. }
  13416. static int Polycode_SceneManager_renderVirtual(lua_State *L) {
  13417. luaL_checktype(L, 1, LUA_TUSERDATA);
  13418. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13419. inst->renderVirtual();
  13420. return 0;
  13421. }
  13422. static int Polycode_SceneManager_registerRenderTexture(lua_State *L) {
  13423. luaL_checktype(L, 1, LUA_TUSERDATA);
  13424. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13425. luaL_checktype(L, 2, LUA_TUSERDATA);
  13426. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  13427. inst->registerRenderTexture(renderTexture);
  13428. return 0;
  13429. }
  13430. static int Polycode_SceneManager_unregisterRenderTexture(lua_State *L) {
  13431. luaL_checktype(L, 1, LUA_TUSERDATA);
  13432. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13433. luaL_checktype(L, 2, LUA_TUSERDATA);
  13434. SceneRenderTexture* renderTexture = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 2));
  13435. inst->unregisterRenderTexture(renderTexture);
  13436. return 0;
  13437. }
  13438. static int Polycode_SceneManager_setRenderer(lua_State *L) {
  13439. luaL_checktype(L, 1, LUA_TUSERDATA);
  13440. SceneManager *inst = (SceneManager*) *((PolyBase**)lua_touserdata(L, 1));
  13441. luaL_checktype(L, 2, LUA_TUSERDATA);
  13442. Renderer* renderer = (Renderer*) *((PolyBase**)lua_touserdata(L, 2));
  13443. inst->setRenderer(renderer);
  13444. return 0;
  13445. }
  13446. static int Polycode_delete_SceneManager(lua_State *L) {
  13447. luaL_checktype(L, 1, LUA_TUSERDATA);
  13448. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13449. delete ((SceneManager*) *inst);
  13450. *inst = NULL;
  13451. return 0;
  13452. }
  13453. static int Polycode_SceneMesh_get_lineWidth(lua_State *L) {
  13454. luaL_checktype(L, 1, LUA_TUSERDATA);
  13455. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13456. lua_pushnumber(L, inst->lineWidth);
  13457. return 1;
  13458. }
  13459. static int Polycode_SceneMesh_get_lineSmooth(lua_State *L) {
  13460. luaL_checktype(L, 1, LUA_TUSERDATA);
  13461. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13462. lua_pushboolean(L, inst->lineSmooth);
  13463. return 1;
  13464. }
  13465. static int Polycode_SceneMesh_get_pointSmooth(lua_State *L) {
  13466. luaL_checktype(L, 1, LUA_TUSERDATA);
  13467. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13468. lua_pushboolean(L, inst->pointSmooth);
  13469. return 1;
  13470. }
  13471. static int Polycode_SceneMesh_get_ownsMesh(lua_State *L) {
  13472. luaL_checktype(L, 1, LUA_TUSERDATA);
  13473. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13474. lua_pushboolean(L, inst->ownsMesh);
  13475. return 1;
  13476. }
  13477. static int Polycode_SceneMesh_get_ownsSkeleton(lua_State *L) {
  13478. luaL_checktype(L, 1, LUA_TUSERDATA);
  13479. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13480. lua_pushboolean(L, inst->ownsSkeleton);
  13481. return 1;
  13482. }
  13483. static int Polycode_SceneMesh_get_useGeometryHitDetection(lua_State *L) {
  13484. luaL_checktype(L, 1, LUA_TUSERDATA);
  13485. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13486. lua_pushboolean(L, inst->useGeometryHitDetection);
  13487. return 1;
  13488. }
  13489. static int Polycode_SceneMesh_get_alphaTest(lua_State *L) {
  13490. luaL_checktype(L, 1, LUA_TUSERDATA);
  13491. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13492. lua_pushboolean(L, inst->alphaTest);
  13493. return 1;
  13494. }
  13495. static int Polycode_SceneMesh_get_backfaceCulled(lua_State *L) {
  13496. luaL_checktype(L, 1, LUA_TUSERDATA);
  13497. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13498. lua_pushboolean(L, inst->backfaceCulled);
  13499. return 1;
  13500. }
  13501. static int Polycode_SceneMesh_get_sendBoneMatricesToMaterial(lua_State *L) {
  13502. luaL_checktype(L, 1, LUA_TUSERDATA);
  13503. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13504. lua_pushboolean(L, inst->sendBoneMatricesToMaterial);
  13505. return 1;
  13506. }
  13507. static int Polycode_SceneMesh_set_lineWidth(lua_State *L) {
  13508. luaL_checktype(L, 1, LUA_TUSERDATA);
  13509. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13510. Number param = lua_tonumber(L, 2);
  13511. inst->lineWidth = param;
  13512. return 0;
  13513. }
  13514. static int Polycode_SceneMesh_set_lineSmooth(lua_State *L) {
  13515. luaL_checktype(L, 1, LUA_TUSERDATA);
  13516. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13517. bool param = lua_toboolean(L, 2) != 0;
  13518. inst->lineSmooth = param;
  13519. return 0;
  13520. }
  13521. static int Polycode_SceneMesh_set_pointSmooth(lua_State *L) {
  13522. luaL_checktype(L, 1, LUA_TUSERDATA);
  13523. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13524. bool param = lua_toboolean(L, 2) != 0;
  13525. inst->pointSmooth = param;
  13526. return 0;
  13527. }
  13528. static int Polycode_SceneMesh_set_ownsMesh(lua_State *L) {
  13529. luaL_checktype(L, 1, LUA_TUSERDATA);
  13530. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13531. bool param = lua_toboolean(L, 2) != 0;
  13532. inst->ownsMesh = param;
  13533. return 0;
  13534. }
  13535. static int Polycode_SceneMesh_set_ownsSkeleton(lua_State *L) {
  13536. luaL_checktype(L, 1, LUA_TUSERDATA);
  13537. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13538. bool param = lua_toboolean(L, 2) != 0;
  13539. inst->ownsSkeleton = param;
  13540. return 0;
  13541. }
  13542. static int Polycode_SceneMesh_set_useGeometryHitDetection(lua_State *L) {
  13543. luaL_checktype(L, 1, LUA_TUSERDATA);
  13544. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13545. bool param = lua_toboolean(L, 2) != 0;
  13546. inst->useGeometryHitDetection = param;
  13547. return 0;
  13548. }
  13549. static int Polycode_SceneMesh_set_alphaTest(lua_State *L) {
  13550. luaL_checktype(L, 1, LUA_TUSERDATA);
  13551. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13552. bool param = lua_toboolean(L, 2) != 0;
  13553. inst->alphaTest = param;
  13554. return 0;
  13555. }
  13556. static int Polycode_SceneMesh_set_backfaceCulled(lua_State *L) {
  13557. luaL_checktype(L, 1, LUA_TUSERDATA);
  13558. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13559. bool param = lua_toboolean(L, 2) != 0;
  13560. inst->backfaceCulled = param;
  13561. return 0;
  13562. }
  13563. static int Polycode_SceneMesh_set_sendBoneMatricesToMaterial(lua_State *L) {
  13564. luaL_checktype(L, 1, LUA_TUSERDATA);
  13565. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13566. bool param = lua_toboolean(L, 2) != 0;
  13567. inst->sendBoneMatricesToMaterial = param;
  13568. return 0;
  13569. }
  13570. static int Polycode_SceneMesh(lua_State *L) {
  13571. luaL_checktype(L, 1, LUA_TSTRING);
  13572. String fileName = String(lua_tostring(L, 1));
  13573. SceneMesh *inst = new SceneMesh(fileName);
  13574. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13575. *userdataPtr = (PolyBase*)inst;
  13576. luaL_getmetatable(L, "Polycode.SceneMesh");
  13577. lua_setmetatable(L, -2);
  13578. return 1;
  13579. }
  13580. static int Polycode_SceneMesh_SceneMeshFromMesh(lua_State *L) {
  13581. luaL_checktype(L, 1, LUA_TUSERDATA);
  13582. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 1));
  13583. PolyBase *ptrRetVal = (PolyBase*)SceneMesh::SceneMeshFromMesh(mesh);
  13584. if(ptrRetVal == NULL) {
  13585. lua_pushnil(L);
  13586. } else {
  13587. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13588. *userdataPtr = ptrRetVal;
  13589. }
  13590. return 1;
  13591. }
  13592. static int Polycode_SceneMesh_SceneMeshWithType(lua_State *L) {
  13593. luaL_checktype(L, 1, LUA_TNUMBER);
  13594. int meshType = lua_tointeger(L, 1);
  13595. PolyBase *ptrRetVal = (PolyBase*)SceneMesh::SceneMeshWithType(meshType);
  13596. if(ptrRetVal == NULL) {
  13597. lua_pushnil(L);
  13598. } else {
  13599. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13600. *userdataPtr = ptrRetVal;
  13601. }
  13602. return 1;
  13603. }
  13604. static int Polycode_SceneMesh_Render(lua_State *L) {
  13605. luaL_checktype(L, 1, LUA_TUSERDATA);
  13606. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13607. luaL_checktype(L, 2, LUA_TUSERDATA);
  13608. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  13609. inst->Render(buffer);
  13610. return 0;
  13611. }
  13612. static int Polycode_SceneMesh_getShaderPass(lua_State *L) {
  13613. luaL_checktype(L, 1, LUA_TUSERDATA);
  13614. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13615. luaL_checktype(L, 2, LUA_TNUMBER);
  13616. int index = lua_tointeger(L, 2);
  13617. ShaderPass *retInst = new ShaderPass();
  13618. *retInst = inst->getShaderPass(index);
  13619. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13620. luaL_getmetatable(L, "Polycode.ShaderPass");
  13621. lua_setmetatable(L, -2);
  13622. *userdataPtr = (PolyBase*)retInst;
  13623. return 1;
  13624. }
  13625. static int Polycode_SceneMesh_getNumShaderPasses(lua_State *L) {
  13626. luaL_checktype(L, 1, LUA_TUSERDATA);
  13627. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13628. lua_pushinteger(L, inst->getNumShaderPasses());
  13629. return 1;
  13630. }
  13631. static int Polycode_SceneMesh_addShaderPass(lua_State *L) {
  13632. luaL_checktype(L, 1, LUA_TUSERDATA);
  13633. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13634. luaL_checktype(L, 2, LUA_TUSERDATA);
  13635. ShaderPass pass = *(ShaderPass*) *((PolyBase**)lua_touserdata(L, 2));
  13636. inst->addShaderPass(pass);
  13637. return 0;
  13638. }
  13639. static int Polycode_SceneMesh_removeShaderPass(lua_State *L) {
  13640. luaL_checktype(L, 1, LUA_TUSERDATA);
  13641. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13642. luaL_checktype(L, 2, LUA_TNUMBER);
  13643. int shaderIndex = lua_tointeger(L, 2);
  13644. inst->removeShaderPass(shaderIndex);
  13645. return 0;
  13646. }
  13647. static int Polycode_SceneMesh_getMesh(lua_State *L) {
  13648. luaL_checktype(L, 1, LUA_TUSERDATA);
  13649. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13650. PolyBase *ptrRetVal = (PolyBase*)inst->getMesh();
  13651. if(ptrRetVal == NULL) {
  13652. lua_pushnil(L);
  13653. } else {
  13654. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13655. *userdataPtr = ptrRetVal;
  13656. }
  13657. return 1;
  13658. }
  13659. static int Polycode_SceneMesh_getMaterial(lua_State *L) {
  13660. luaL_checktype(L, 1, LUA_TUSERDATA);
  13661. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13662. PolyBase *ptrRetVal = (PolyBase*)inst->getMaterial();
  13663. if(ptrRetVal == NULL) {
  13664. lua_pushnil(L);
  13665. } else {
  13666. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13667. *userdataPtr = ptrRetVal;
  13668. }
  13669. return 1;
  13670. }
  13671. static int Polycode_SceneMesh_loadSkeleton(lua_State *L) {
  13672. luaL_checktype(L, 1, LUA_TUSERDATA);
  13673. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13674. luaL_checktype(L, 2, LUA_TSTRING);
  13675. String fileName = String(lua_tostring(L, 2));
  13676. PolyBase *ptrRetVal = (PolyBase*)inst->loadSkeleton(fileName);
  13677. if(ptrRetVal == NULL) {
  13678. lua_pushnil(L);
  13679. } else {
  13680. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13681. *userdataPtr = ptrRetVal;
  13682. }
  13683. return 1;
  13684. }
  13685. static int Polycode_SceneMesh_clearMaterial(lua_State *L) {
  13686. luaL_checktype(L, 1, LUA_TUSERDATA);
  13687. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13688. inst->clearMaterial();
  13689. return 0;
  13690. }
  13691. static int Polycode_SceneMesh_setMaterial(lua_State *L) {
  13692. luaL_checktype(L, 1, LUA_TUSERDATA);
  13693. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13694. luaL_checktype(L, 2, LUA_TUSERDATA);
  13695. Material* material = (Material*) *((PolyBase**)lua_touserdata(L, 2));
  13696. inst->setMaterial(material);
  13697. return 0;
  13698. }
  13699. static int Polycode_SceneMesh_rebuildAttributes(lua_State *L) {
  13700. luaL_checktype(L, 1, LUA_TUSERDATA);
  13701. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13702. inst->rebuildAttributes();
  13703. return 0;
  13704. }
  13705. static int Polycode_SceneMesh_setMaterialByName(lua_State *L) {
  13706. luaL_checktype(L, 1, LUA_TUSERDATA);
  13707. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13708. luaL_checktype(L, 2, LUA_TSTRING);
  13709. String materialName = String(lua_tostring(L, 2));
  13710. ResourcePool* resourcePool;
  13711. if(lua_isuserdata(L, 3)) {
  13712. resourcePool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 3));
  13713. } else {
  13714. resourcePool = NULL;
  13715. }
  13716. inst->setMaterialByName(materialName, resourcePool);
  13717. return 0;
  13718. }
  13719. static int Polycode_SceneMesh_setMesh(lua_State *L) {
  13720. luaL_checktype(L, 1, LUA_TUSERDATA);
  13721. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13722. luaL_checktype(L, 2, LUA_TUSERDATA);
  13723. Mesh* mesh = (Mesh*) *((PolyBase**)lua_touserdata(L, 2));
  13724. inst->setMesh(mesh);
  13725. return 0;
  13726. }
  13727. static int Polycode_SceneMesh_setSkeleton(lua_State *L) {
  13728. luaL_checktype(L, 1, LUA_TUSERDATA);
  13729. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13730. luaL_checktype(L, 2, LUA_TUSERDATA);
  13731. Skeleton* skeleton = (Skeleton*) *((PolyBase**)lua_touserdata(L, 2));
  13732. inst->setSkeleton(skeleton);
  13733. return 0;
  13734. }
  13735. static int Polycode_SceneMesh_getSkeleton(lua_State *L) {
  13736. luaL_checktype(L, 1, LUA_TUSERDATA);
  13737. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13738. PolyBase *ptrRetVal = (PolyBase*)inst->getSkeleton();
  13739. if(ptrRetVal == NULL) {
  13740. lua_pushnil(L);
  13741. } else {
  13742. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13743. *userdataPtr = ptrRetVal;
  13744. }
  13745. return 1;
  13746. }
  13747. static int Polycode_SceneMesh_applySkeletonLocally(lua_State *L) {
  13748. luaL_checktype(L, 1, LUA_TUSERDATA);
  13749. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13750. inst->applySkeletonLocally();
  13751. return 0;
  13752. }
  13753. static int Polycode_SceneMesh_setLineWidth(lua_State *L) {
  13754. luaL_checktype(L, 1, LUA_TUSERDATA);
  13755. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13756. luaL_checktype(L, 2, LUA_TNUMBER);
  13757. Number newWidth = lua_tonumber(L, 2);
  13758. inst->setLineWidth(newWidth);
  13759. return 0;
  13760. }
  13761. static int Polycode_SceneMesh_getFilename(lua_State *L) {
  13762. luaL_checktype(L, 1, LUA_TUSERDATA);
  13763. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13764. lua_pushstring(L, inst->getFilename().c_str());
  13765. return 1;
  13766. }
  13767. static int Polycode_SceneMesh_setFilename(lua_State *L) {
  13768. luaL_checktype(L, 1, LUA_TUSERDATA);
  13769. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13770. luaL_checktype(L, 2, LUA_TSTRING);
  13771. String fileName = String(lua_tostring(L, 2));
  13772. inst->setFilename(fileName);
  13773. return 0;
  13774. }
  13775. static int Polycode_SceneMesh_loadFromFile(lua_State *L) {
  13776. luaL_checktype(L, 1, LUA_TUSERDATA);
  13777. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13778. luaL_checktype(L, 2, LUA_TSTRING);
  13779. String fileName = String(lua_tostring(L, 2));
  13780. inst->loadFromFile(fileName);
  13781. return 0;
  13782. }
  13783. static int Polycode_SceneMesh_customHitDetection(lua_State *L) {
  13784. luaL_checktype(L, 1, LUA_TUSERDATA);
  13785. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13786. luaL_checktype(L, 2, LUA_TUSERDATA);
  13787. Ray ray = *(Ray*) *((PolyBase**)lua_touserdata(L, 2));
  13788. lua_pushboolean(L, inst->customHitDetection(ray));
  13789. return 1;
  13790. }
  13791. static int Polycode_SceneMesh_setForceMaterial(lua_State *L) {
  13792. luaL_checktype(L, 1, LUA_TUSERDATA);
  13793. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13794. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13795. bool forceMaterial = lua_toboolean(L, 2) != 0;
  13796. inst->setForceMaterial(forceMaterial);
  13797. return 0;
  13798. }
  13799. static int Polycode_SceneMesh_getForceMaterial(lua_State *L) {
  13800. luaL_checktype(L, 1, LUA_TUSERDATA);
  13801. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13802. lua_pushboolean(L, inst->getForceMaterial());
  13803. return 1;
  13804. }
  13805. static int Polycode_SceneMesh_Clone(lua_State *L) {
  13806. luaL_checktype(L, 1, LUA_TUSERDATA);
  13807. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13808. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13809. bool deepClone = lua_toboolean(L, 2) != 0;
  13810. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13811. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13812. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13813. if(ptrRetVal == NULL) {
  13814. lua_pushnil(L);
  13815. } else {
  13816. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13817. *userdataPtr = ptrRetVal;
  13818. }
  13819. return 1;
  13820. }
  13821. static int Polycode_SceneMesh_applyClone(lua_State *L) {
  13822. luaL_checktype(L, 1, LUA_TUSERDATA);
  13823. SceneMesh *inst = (SceneMesh*) *((PolyBase**)lua_touserdata(L, 1));
  13824. luaL_checktype(L, 2, LUA_TUSERDATA);
  13825. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13826. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13827. bool deepClone = lua_toboolean(L, 3) != 0;
  13828. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13829. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13830. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13831. return 0;
  13832. }
  13833. static int Polycode_delete_SceneMesh(lua_State *L) {
  13834. luaL_checktype(L, 1, LUA_TUSERDATA);
  13835. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13836. delete ((SceneMesh*) *inst);
  13837. *inst = NULL;
  13838. return 0;
  13839. }
  13840. static int Polycode_ScenePrimitive(lua_State *L) {
  13841. luaL_checktype(L, 1, LUA_TNUMBER);
  13842. int type = lua_tointeger(L, 1);
  13843. Number v1;
  13844. if(lua_isnumber(L, 2)) {
  13845. v1 = lua_tonumber(L, 2);
  13846. } else {
  13847. v1 = 1.0f;
  13848. }
  13849. Number v2;
  13850. if(lua_isnumber(L, 3)) {
  13851. v2 = lua_tonumber(L, 3);
  13852. } else {
  13853. v2 = 1.0f;
  13854. }
  13855. Number v3;
  13856. if(lua_isnumber(L, 4)) {
  13857. v3 = lua_tonumber(L, 4);
  13858. } else {
  13859. v3 = 1.0f;
  13860. }
  13861. Number v4;
  13862. if(lua_isnumber(L, 5)) {
  13863. v4 = lua_tonumber(L, 5);
  13864. } else {
  13865. v4 = 1.0f;
  13866. }
  13867. Number v5;
  13868. if(lua_isnumber(L, 6)) {
  13869. v5 = lua_tonumber(L, 6);
  13870. } else {
  13871. v5 = 1.0f;
  13872. }
  13873. ScenePrimitive *inst = new ScenePrimitive(type, v1, v2, v3, v4, v5);
  13874. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13875. *userdataPtr = (PolyBase*)inst;
  13876. luaL_getmetatable(L, "Polycode.ScenePrimitive");
  13877. lua_setmetatable(L, -2);
  13878. return 1;
  13879. }
  13880. static int Polycode_ScenePrimitive_setPrimitiveOptions(lua_State *L) {
  13881. luaL_checktype(L, 1, LUA_TUSERDATA);
  13882. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13883. luaL_checktype(L, 2, LUA_TNUMBER);
  13884. int type = lua_tointeger(L, 2);
  13885. Number v1;
  13886. if(lua_isnumber(L, 3)) {
  13887. v1 = lua_tonumber(L, 3);
  13888. } else {
  13889. v1 = 1.0f;
  13890. }
  13891. Number v2;
  13892. if(lua_isnumber(L, 4)) {
  13893. v2 = lua_tonumber(L, 4);
  13894. } else {
  13895. v2 = 1.0f;
  13896. }
  13897. Number v3;
  13898. if(lua_isnumber(L, 5)) {
  13899. v3 = lua_tonumber(L, 5);
  13900. } else {
  13901. v3 = 1.0f;
  13902. }
  13903. Number v4;
  13904. if(lua_isnumber(L, 6)) {
  13905. v4 = lua_tonumber(L, 6);
  13906. } else {
  13907. v4 = 1.0f;
  13908. }
  13909. Number v5;
  13910. if(lua_isnumber(L, 7)) {
  13911. v5 = lua_tonumber(L, 7);
  13912. } else {
  13913. v5 = 1.0f;
  13914. }
  13915. inst->setPrimitiveOptions(type, v1, v2, v3, v4, v5);
  13916. return 0;
  13917. }
  13918. static int Polycode_ScenePrimitive_recreatePrimitive(lua_State *L) {
  13919. luaL_checktype(L, 1, LUA_TUSERDATA);
  13920. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13921. inst->recreatePrimitive();
  13922. return 0;
  13923. }
  13924. static int Polycode_ScenePrimitive_getPrimitiveType(lua_State *L) {
  13925. luaL_checktype(L, 1, LUA_TUSERDATA);
  13926. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13927. lua_pushinteger(L, inst->getPrimitiveType());
  13928. return 1;
  13929. }
  13930. static int Polycode_ScenePrimitive_getPrimitiveParameter1(lua_State *L) {
  13931. luaL_checktype(L, 1, LUA_TUSERDATA);
  13932. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13933. lua_pushnumber(L, inst->getPrimitiveParameter1());
  13934. return 1;
  13935. }
  13936. static int Polycode_ScenePrimitive_getPrimitiveParameter2(lua_State *L) {
  13937. luaL_checktype(L, 1, LUA_TUSERDATA);
  13938. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13939. lua_pushnumber(L, inst->getPrimitiveParameter2());
  13940. return 1;
  13941. }
  13942. static int Polycode_ScenePrimitive_getPrimitiveParameter3(lua_State *L) {
  13943. luaL_checktype(L, 1, LUA_TUSERDATA);
  13944. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13945. lua_pushnumber(L, inst->getPrimitiveParameter3());
  13946. return 1;
  13947. }
  13948. static int Polycode_ScenePrimitive_getPrimitiveParameter4(lua_State *L) {
  13949. luaL_checktype(L, 1, LUA_TUSERDATA);
  13950. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13951. lua_pushnumber(L, inst->getPrimitiveParameter4());
  13952. return 1;
  13953. }
  13954. static int Polycode_ScenePrimitive_getPrimitiveParameter5(lua_State *L) {
  13955. luaL_checktype(L, 1, LUA_TUSERDATA);
  13956. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13957. lua_pushnumber(L, inst->getPrimitiveParameter5());
  13958. return 1;
  13959. }
  13960. static int Polycode_ScenePrimitive_Clone(lua_State *L) {
  13961. luaL_checktype(L, 1, LUA_TUSERDATA);
  13962. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13963. luaL_checktype(L, 2, LUA_TBOOLEAN);
  13964. bool deepClone = lua_toboolean(L, 2) != 0;
  13965. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13966. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  13967. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  13968. if(ptrRetVal == NULL) {
  13969. lua_pushnil(L);
  13970. } else {
  13971. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  13972. *userdataPtr = ptrRetVal;
  13973. }
  13974. return 1;
  13975. }
  13976. static int Polycode_ScenePrimitive_applyClone(lua_State *L) {
  13977. luaL_checktype(L, 1, LUA_TUSERDATA);
  13978. ScenePrimitive *inst = (ScenePrimitive*) *((PolyBase**)lua_touserdata(L, 1));
  13979. luaL_checktype(L, 2, LUA_TUSERDATA);
  13980. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  13981. luaL_checktype(L, 3, LUA_TBOOLEAN);
  13982. bool deepClone = lua_toboolean(L, 3) != 0;
  13983. luaL_checktype(L, 4, LUA_TBOOLEAN);
  13984. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  13985. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  13986. return 0;
  13987. }
  13988. static int Polycode_delete_ScenePrimitive(lua_State *L) {
  13989. luaL_checktype(L, 1, LUA_TUSERDATA);
  13990. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  13991. delete ((ScenePrimitive*) *inst);
  13992. *inst = NULL;
  13993. return 0;
  13994. }
  13995. static int Polycode_SceneRenderTexture_get_enabled(lua_State *L) {
  13996. luaL_checktype(L, 1, LUA_TUSERDATA);
  13997. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  13998. lua_pushboolean(L, inst->enabled);
  13999. return 1;
  14000. }
  14001. static int Polycode_SceneRenderTexture_set_enabled(lua_State *L) {
  14002. luaL_checktype(L, 1, LUA_TUSERDATA);
  14003. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14004. bool param = lua_toboolean(L, 2) != 0;
  14005. inst->enabled = param;
  14006. return 0;
  14007. }
  14008. static int Polycode_SceneRenderTexture(lua_State *L) {
  14009. luaL_checktype(L, 1, LUA_TUSERDATA);
  14010. Scene* targetScene = (Scene*) *((PolyBase**)lua_touserdata(L, 1));
  14011. luaL_checktype(L, 2, LUA_TUSERDATA);
  14012. Camera* targetCamera = (Camera*) *((PolyBase**)lua_touserdata(L, 2));
  14013. luaL_checktype(L, 3, LUA_TNUMBER);
  14014. int renderWidth = lua_tointeger(L, 3);
  14015. luaL_checktype(L, 4, LUA_TNUMBER);
  14016. int renderHeight = lua_tointeger(L, 4);
  14017. luaL_checktype(L, 5, LUA_TBOOLEAN);
  14018. bool floatingPoint = lua_toboolean(L, 5) != 0;
  14019. SceneRenderTexture *inst = new SceneRenderTexture(targetScene, targetCamera, renderWidth, renderHeight, floatingPoint);
  14020. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14021. *userdataPtr = (PolyBase*)inst;
  14022. luaL_getmetatable(L, "Polycode.SceneRenderTexture");
  14023. lua_setmetatable(L, -2);
  14024. return 1;
  14025. }
  14026. static int Polycode_SceneRenderTexture_getTargetTexture(lua_State *L) {
  14027. luaL_checktype(L, 1, LUA_TUSERDATA);
  14028. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14029. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetTexture();
  14030. if(ptrRetVal == NULL) {
  14031. lua_pushnil(L);
  14032. } else {
  14033. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14034. *userdataPtr = ptrRetVal;
  14035. }
  14036. return 1;
  14037. }
  14038. static int Polycode_SceneRenderTexture_getFilterColorBufferTexture(lua_State *L) {
  14039. luaL_checktype(L, 1, LUA_TUSERDATA);
  14040. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14041. PolyBase *ptrRetVal = (PolyBase*)inst->getFilterColorBufferTexture();
  14042. if(ptrRetVal == NULL) {
  14043. lua_pushnil(L);
  14044. } else {
  14045. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14046. *userdataPtr = ptrRetVal;
  14047. }
  14048. return 1;
  14049. }
  14050. static int Polycode_SceneRenderTexture_getFilterZBufferTexture(lua_State *L) {
  14051. luaL_checktype(L, 1, LUA_TUSERDATA);
  14052. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14053. PolyBase *ptrRetVal = (PolyBase*)inst->getFilterZBufferTexture();
  14054. if(ptrRetVal == NULL) {
  14055. lua_pushnil(L);
  14056. } else {
  14057. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14058. *userdataPtr = ptrRetVal;
  14059. }
  14060. return 1;
  14061. }
  14062. static int Polycode_SceneRenderTexture_Render(lua_State *L) {
  14063. luaL_checktype(L, 1, LUA_TUSERDATA);
  14064. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14065. inst->Render();
  14066. return 0;
  14067. }
  14068. static int Polycode_SceneRenderTexture_saveToImage(lua_State *L) {
  14069. luaL_checktype(L, 1, LUA_TUSERDATA);
  14070. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14071. PolyBase *ptrRetVal = (PolyBase*)inst->saveToImage();
  14072. if(ptrRetVal == NULL) {
  14073. lua_pushnil(L);
  14074. } else {
  14075. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14076. *userdataPtr = ptrRetVal;
  14077. }
  14078. return 1;
  14079. }
  14080. static int Polycode_SceneRenderTexture_resizeRenderTexture(lua_State *L) {
  14081. luaL_checktype(L, 1, LUA_TUSERDATA);
  14082. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14083. luaL_checktype(L, 2, LUA_TNUMBER);
  14084. int newWidth = lua_tointeger(L, 2);
  14085. luaL_checktype(L, 3, LUA_TNUMBER);
  14086. int newHeight = lua_tointeger(L, 3);
  14087. inst->resizeRenderTexture(newWidth, newHeight);
  14088. return 0;
  14089. }
  14090. static int Polycode_SceneRenderTexture_getTargetScene(lua_State *L) {
  14091. luaL_checktype(L, 1, LUA_TUSERDATA);
  14092. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14093. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetScene();
  14094. if(ptrRetVal == NULL) {
  14095. lua_pushnil(L);
  14096. } else {
  14097. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14098. *userdataPtr = ptrRetVal;
  14099. }
  14100. return 1;
  14101. }
  14102. static int Polycode_SceneRenderTexture_getTargetCamera(lua_State *L) {
  14103. luaL_checktype(L, 1, LUA_TUSERDATA);
  14104. SceneRenderTexture *inst = (SceneRenderTexture*) *((PolyBase**)lua_touserdata(L, 1));
  14105. PolyBase *ptrRetVal = (PolyBase*)inst->getTargetCamera();
  14106. if(ptrRetVal == NULL) {
  14107. lua_pushnil(L);
  14108. } else {
  14109. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14110. *userdataPtr = ptrRetVal;
  14111. }
  14112. return 1;
  14113. }
  14114. static int Polycode_delete_SceneRenderTexture(lua_State *L) {
  14115. luaL_checktype(L, 1, LUA_TUSERDATA);
  14116. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14117. delete ((SceneRenderTexture*) *inst);
  14118. *inst = NULL;
  14119. return 0;
  14120. }
  14121. static int Polycode_SceneSound(lua_State *L) {
  14122. luaL_checktype(L, 1, LUA_TSTRING);
  14123. String fileName = String(lua_tostring(L, 1));
  14124. luaL_checktype(L, 2, LUA_TNUMBER);
  14125. Number referenceDistance = lua_tonumber(L, 2);
  14126. luaL_checktype(L, 3, LUA_TNUMBER);
  14127. Number maxDistance = lua_tonumber(L, 3);
  14128. bool directionalSound;
  14129. if(lua_isboolean(L, 4)) {
  14130. directionalSound = lua_toboolean(L, 4) != 0;
  14131. } else {
  14132. directionalSound = false;
  14133. }
  14134. SceneSound *inst = new SceneSound(fileName, referenceDistance, maxDistance, directionalSound);
  14135. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14136. *userdataPtr = (PolyBase*)inst;
  14137. luaL_getmetatable(L, "Polycode.SceneSound");
  14138. lua_setmetatable(L, -2);
  14139. return 1;
  14140. }
  14141. static int Polycode_SceneSound_Update(lua_State *L) {
  14142. luaL_checktype(L, 1, LUA_TUSERDATA);
  14143. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14144. inst->Update();
  14145. return 0;
  14146. }
  14147. static int Polycode_SceneSound_Clone(lua_State *L) {
  14148. luaL_checktype(L, 1, LUA_TUSERDATA);
  14149. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14150. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14151. bool deepClone = lua_toboolean(L, 2) != 0;
  14152. luaL_checktype(L, 3, LUA_TBOOLEAN);
  14153. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  14154. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  14155. if(ptrRetVal == NULL) {
  14156. lua_pushnil(L);
  14157. } else {
  14158. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14159. *userdataPtr = ptrRetVal;
  14160. }
  14161. return 1;
  14162. }
  14163. static int Polycode_SceneSound_applyClone(lua_State *L) {
  14164. luaL_checktype(L, 1, LUA_TUSERDATA);
  14165. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14166. luaL_checktype(L, 2, LUA_TUSERDATA);
  14167. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  14168. luaL_checktype(L, 3, LUA_TBOOLEAN);
  14169. bool deepClone = lua_toboolean(L, 3) != 0;
  14170. luaL_checktype(L, 4, LUA_TBOOLEAN);
  14171. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  14172. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  14173. return 0;
  14174. }
  14175. static int Polycode_SceneSound_isDirectionalSound(lua_State *L) {
  14176. luaL_checktype(L, 1, LUA_TUSERDATA);
  14177. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14178. lua_pushboolean(L, inst->isDirectionalSound());
  14179. return 1;
  14180. }
  14181. static int Polycode_SceneSound_setDirectionalSound(lua_State *L) {
  14182. luaL_checktype(L, 1, LUA_TUSERDATA);
  14183. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14184. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14185. bool val = lua_toboolean(L, 2) != 0;
  14186. inst->setDirectionalSound(val);
  14187. return 0;
  14188. }
  14189. static int Polycode_SceneSound_getSound(lua_State *L) {
  14190. luaL_checktype(L, 1, LUA_TUSERDATA);
  14191. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14192. PolyBase *ptrRetVal = (PolyBase*)inst->getSound();
  14193. if(ptrRetVal == NULL) {
  14194. lua_pushnil(L);
  14195. } else {
  14196. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14197. *userdataPtr = ptrRetVal;
  14198. }
  14199. return 1;
  14200. }
  14201. static int Polycode_SceneSound_setLoopOnLoad(lua_State *L) {
  14202. luaL_checktype(L, 1, LUA_TUSERDATA);
  14203. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14204. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14205. bool val = lua_toboolean(L, 2) != 0;
  14206. inst->setLoopOnLoad(val);
  14207. return 0;
  14208. }
  14209. static int Polycode_SceneSound_getLoopOnLoad(lua_State *L) {
  14210. luaL_checktype(L, 1, LUA_TUSERDATA);
  14211. SceneSound *inst = (SceneSound*) *((PolyBase**)lua_touserdata(L, 1));
  14212. lua_pushboolean(L, inst->getLoopOnLoad());
  14213. return 1;
  14214. }
  14215. static int Polycode_delete_SceneSound(lua_State *L) {
  14216. luaL_checktype(L, 1, LUA_TUSERDATA);
  14217. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14218. delete ((SceneSound*) *inst);
  14219. *inst = NULL;
  14220. return 0;
  14221. }
  14222. static int Polycode_SceneSoundListener(lua_State *L) {
  14223. SceneSoundListener *inst = new SceneSoundListener();
  14224. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14225. *userdataPtr = (PolyBase*)inst;
  14226. luaL_getmetatable(L, "Polycode.SceneSoundListener");
  14227. lua_setmetatable(L, -2);
  14228. return 1;
  14229. }
  14230. static int Polycode_SceneSoundListener_Update(lua_State *L) {
  14231. luaL_checktype(L, 1, LUA_TUSERDATA);
  14232. SceneSoundListener *inst = (SceneSoundListener*) *((PolyBase**)lua_touserdata(L, 1));
  14233. inst->Update();
  14234. return 0;
  14235. }
  14236. static int Polycode_delete_SceneSoundListener(lua_State *L) {
  14237. luaL_checktype(L, 1, LUA_TUSERDATA);
  14238. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14239. delete ((SceneSoundListener*) *inst);
  14240. *inst = NULL;
  14241. return 0;
  14242. }
  14243. static int Polycode_SceneSprite(lua_State *L) {
  14244. luaL_checktype(L, 1, LUA_TUSERDATA);
  14245. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14246. SceneSprite *inst = new SceneSprite(spriteSet);
  14247. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14248. *userdataPtr = (PolyBase*)inst;
  14249. luaL_getmetatable(L, "Polycode.SceneSprite");
  14250. lua_setmetatable(L, -2);
  14251. return 1;
  14252. }
  14253. static int Polycode_SceneSprite_Clone(lua_State *L) {
  14254. luaL_checktype(L, 1, LUA_TUSERDATA);
  14255. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14256. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14257. bool deepClone = lua_toboolean(L, 2) != 0;
  14258. luaL_checktype(L, 3, LUA_TBOOLEAN);
  14259. bool ignoreEditorOnly = lua_toboolean(L, 3) != 0;
  14260. PolyBase *ptrRetVal = (PolyBase*)inst->Clone(deepClone, ignoreEditorOnly);
  14261. if(ptrRetVal == NULL) {
  14262. lua_pushnil(L);
  14263. } else {
  14264. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14265. *userdataPtr = ptrRetVal;
  14266. }
  14267. return 1;
  14268. }
  14269. static int Polycode_SceneSprite_applyClone(lua_State *L) {
  14270. luaL_checktype(L, 1, LUA_TUSERDATA);
  14271. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14272. luaL_checktype(L, 2, LUA_TUSERDATA);
  14273. Entity* clone = (Entity*) *((PolyBase**)lua_touserdata(L, 2));
  14274. luaL_checktype(L, 3, LUA_TBOOLEAN);
  14275. bool deepClone = lua_toboolean(L, 3) != 0;
  14276. luaL_checktype(L, 4, LUA_TBOOLEAN);
  14277. bool ignoreEditorOnly = lua_toboolean(L, 4) != 0;
  14278. inst->applyClone(clone, deepClone, ignoreEditorOnly);
  14279. return 0;
  14280. }
  14281. static int Polycode_SceneSprite_getSpriteSet(lua_State *L) {
  14282. luaL_checktype(L, 1, LUA_TUSERDATA);
  14283. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14284. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteSet();
  14285. if(ptrRetVal == NULL) {
  14286. lua_pushnil(L);
  14287. } else {
  14288. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14289. *userdataPtr = ptrRetVal;
  14290. }
  14291. return 1;
  14292. }
  14293. static int Polycode_SceneSprite_getCurrentSprite(lua_State *L) {
  14294. luaL_checktype(L, 1, LUA_TUSERDATA);
  14295. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14296. PolyBase *ptrRetVal = (PolyBase*)inst->getCurrentSprite();
  14297. if(ptrRetVal == NULL) {
  14298. lua_pushnil(L);
  14299. } else {
  14300. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14301. *userdataPtr = ptrRetVal;
  14302. }
  14303. return 1;
  14304. }
  14305. static int Polycode_SceneSprite_setSpriteSet(lua_State *L) {
  14306. luaL_checktype(L, 1, LUA_TUSERDATA);
  14307. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14308. luaL_checktype(L, 2, LUA_TUSERDATA);
  14309. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  14310. inst->setSpriteSet(spriteSet);
  14311. return 0;
  14312. }
  14313. static int Polycode_SceneSprite_setSpriteByName(lua_State *L) {
  14314. luaL_checktype(L, 1, LUA_TUSERDATA);
  14315. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14316. luaL_checktype(L, 2, LUA_TSTRING);
  14317. String spriteName = String(lua_tostring(L, 2));
  14318. inst->setSpriteByName(spriteName);
  14319. return 0;
  14320. }
  14321. static int Polycode_SceneSprite_setCurrentFrame(lua_State *L) {
  14322. luaL_checktype(L, 1, LUA_TUSERDATA);
  14323. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14324. luaL_checktype(L, 2, LUA_TNUMBER);
  14325. int frameIndex = lua_tointeger(L, 2);
  14326. inst->setCurrentFrame(frameIndex);
  14327. return 0;
  14328. }
  14329. static int Polycode_SceneSprite_getCurrentFrame(lua_State *L) {
  14330. luaL_checktype(L, 1, LUA_TUSERDATA);
  14331. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14332. lua_pushinteger(L, inst->getCurrentFrame());
  14333. return 1;
  14334. }
  14335. static int Polycode_SceneSprite_Update(lua_State *L) {
  14336. luaL_checktype(L, 1, LUA_TUSERDATA);
  14337. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14338. inst->Update();
  14339. return 0;
  14340. }
  14341. static int Polycode_SceneSprite_Render(lua_State *L) {
  14342. luaL_checktype(L, 1, LUA_TUSERDATA);
  14343. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14344. luaL_checktype(L, 2, LUA_TUSERDATA);
  14345. GPUDrawBuffer* buffer = (GPUDrawBuffer*) *((PolyBase**)lua_touserdata(L, 2));
  14346. inst->Render(buffer);
  14347. return 0;
  14348. }
  14349. static int Polycode_SceneSprite_getSpriteBoundingBox(lua_State *L) {
  14350. luaL_checktype(L, 1, LUA_TUSERDATA);
  14351. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14352. Vector3 *retInst = new Vector3();
  14353. *retInst = inst->getSpriteBoundingBox();
  14354. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14355. luaL_getmetatable(L, "Polycode.Vector3");
  14356. lua_setmetatable(L, -2);
  14357. *userdataPtr = (PolyBase*)retInst;
  14358. return 1;
  14359. }
  14360. static int Polycode_SceneSprite_setPaused(lua_State *L) {
  14361. luaL_checktype(L, 1, LUA_TUSERDATA);
  14362. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14363. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14364. bool val = lua_toboolean(L, 2) != 0;
  14365. inst->setPaused(val);
  14366. return 0;
  14367. }
  14368. static int Polycode_SceneSprite_isPaused(lua_State *L) {
  14369. luaL_checktype(L, 1, LUA_TUSERDATA);
  14370. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14371. lua_pushboolean(L, inst->isPaused());
  14372. return 1;
  14373. }
  14374. static int Polycode_SceneSprite_setSprite(lua_State *L) {
  14375. luaL_checktype(L, 1, LUA_TUSERDATA);
  14376. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14377. luaL_checktype(L, 2, LUA_TUSERDATA);
  14378. Sprite* spriteEntry = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  14379. inst->setSprite(spriteEntry);
  14380. return 0;
  14381. }
  14382. static int Polycode_SceneSprite_setSpriteState(lua_State *L) {
  14383. luaL_checktype(L, 1, LUA_TUSERDATA);
  14384. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14385. luaL_checktype(L, 2, LUA_TUSERDATA);
  14386. SpriteState* spriteState = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  14387. luaL_checktype(L, 3, LUA_TNUMBER);
  14388. int startingFrame = lua_tointeger(L, 3);
  14389. luaL_checktype(L, 4, LUA_TBOOLEAN);
  14390. bool playOnce = lua_toboolean(L, 4) != 0;
  14391. inst->setSpriteState(spriteState, startingFrame, playOnce);
  14392. return 0;
  14393. }
  14394. static int Polycode_SceneSprite_setSpriteStateByName(lua_State *L) {
  14395. luaL_checktype(L, 1, LUA_TUSERDATA);
  14396. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14397. luaL_checktype(L, 2, LUA_TSTRING);
  14398. String name = String(lua_tostring(L, 2));
  14399. luaL_checktype(L, 3, LUA_TNUMBER);
  14400. int startingFrame = lua_tointeger(L, 3);
  14401. luaL_checktype(L, 4, LUA_TBOOLEAN);
  14402. bool playOnce = lua_toboolean(L, 4) != 0;
  14403. inst->setSpriteStateByName(name, startingFrame, playOnce);
  14404. return 0;
  14405. }
  14406. static int Polycode_SceneSprite_getCurrentSpriteState(lua_State *L) {
  14407. luaL_checktype(L, 1, LUA_TUSERDATA);
  14408. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14409. PolyBase *ptrRetVal = (PolyBase*)inst->getCurrentSpriteState();
  14410. if(ptrRetVal == NULL) {
  14411. lua_pushnil(L);
  14412. } else {
  14413. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14414. *userdataPtr = ptrRetVal;
  14415. }
  14416. return 1;
  14417. }
  14418. static int Polycode_SceneSprite_getStartOnRandomFrame(lua_State *L) {
  14419. luaL_checktype(L, 1, LUA_TUSERDATA);
  14420. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14421. lua_pushboolean(L, inst->getStartOnRandomFrame());
  14422. return 1;
  14423. }
  14424. static int Polycode_SceneSprite_setStartOnRandomFrame(lua_State *L) {
  14425. luaL_checktype(L, 1, LUA_TUSERDATA);
  14426. SceneSprite *inst = (SceneSprite*) *((PolyBase**)lua_touserdata(L, 1));
  14427. luaL_checktype(L, 2, LUA_TBOOLEAN);
  14428. bool val = lua_toboolean(L, 2) != 0;
  14429. inst->setStartOnRandomFrame(val);
  14430. return 0;
  14431. }
  14432. static int Polycode_delete_SceneSprite(lua_State *L) {
  14433. luaL_checktype(L, 1, LUA_TUSERDATA);
  14434. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14435. delete ((SceneSprite*) *inst);
  14436. *inst = NULL;
  14437. return 0;
  14438. }
  14439. static int Polycode_Sprite(lua_State *L) {
  14440. luaL_checktype(L, 1, LUA_TSTRING);
  14441. String name = String(lua_tostring(L, 1));
  14442. Sprite *inst = new Sprite(name);
  14443. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14444. *userdataPtr = (PolyBase*)inst;
  14445. luaL_getmetatable(L, "Polycode.Sprite");
  14446. lua_setmetatable(L, -2);
  14447. return 1;
  14448. }
  14449. static int Polycode_Sprite_getName(lua_State *L) {
  14450. luaL_checktype(L, 1, LUA_TUSERDATA);
  14451. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14452. lua_pushstring(L, inst->getName().c_str());
  14453. return 1;
  14454. }
  14455. static int Polycode_Sprite_setName(lua_State *L) {
  14456. luaL_checktype(L, 1, LUA_TUSERDATA);
  14457. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14458. luaL_checktype(L, 2, LUA_TSTRING);
  14459. String name = String(lua_tostring(L, 2));
  14460. inst->setName(name);
  14461. return 0;
  14462. }
  14463. static int Polycode_Sprite_addSpriteState(lua_State *L) {
  14464. luaL_checktype(L, 1, LUA_TUSERDATA);
  14465. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14466. luaL_checktype(L, 2, LUA_TUSERDATA);
  14467. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  14468. inst->addSpriteState(state);
  14469. return 0;
  14470. }
  14471. static int Polycode_Sprite_removeSpriteState(lua_State *L) {
  14472. luaL_checktype(L, 1, LUA_TUSERDATA);
  14473. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14474. luaL_checktype(L, 2, LUA_TUSERDATA);
  14475. SpriteState* state = (SpriteState*) *((PolyBase**)lua_touserdata(L, 2));
  14476. inst->removeSpriteState(state);
  14477. return 0;
  14478. }
  14479. static int Polycode_Sprite_getNumStates(lua_State *L) {
  14480. luaL_checktype(L, 1, LUA_TUSERDATA);
  14481. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14482. lua_pushinteger(L, inst->getNumStates());
  14483. return 1;
  14484. }
  14485. static int Polycode_Sprite_getState(lua_State *L) {
  14486. luaL_checktype(L, 1, LUA_TUSERDATA);
  14487. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14488. luaL_checktype(L, 2, LUA_TNUMBER);
  14489. int index = lua_tointeger(L, 2);
  14490. PolyBase *ptrRetVal = (PolyBase*)inst->getState(index);
  14491. if(ptrRetVal == NULL) {
  14492. lua_pushnil(L);
  14493. } else {
  14494. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14495. *userdataPtr = ptrRetVal;
  14496. }
  14497. return 1;
  14498. }
  14499. static int Polycode_Sprite_getStateByName(lua_State *L) {
  14500. luaL_checktype(L, 1, LUA_TUSERDATA);
  14501. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14502. luaL_checktype(L, 2, LUA_TSTRING);
  14503. String name = String(lua_tostring(L, 2));
  14504. PolyBase *ptrRetVal = (PolyBase*)inst->getStateByName(name);
  14505. if(ptrRetVal == NULL) {
  14506. lua_pushnil(L);
  14507. } else {
  14508. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14509. *userdataPtr = ptrRetVal;
  14510. }
  14511. return 1;
  14512. }
  14513. static int Polycode_Sprite_setParentSpritSet(lua_State *L) {
  14514. luaL_checktype(L, 1, LUA_TUSERDATA);
  14515. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14516. luaL_checktype(L, 2, LUA_TUSERDATA);
  14517. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 2));
  14518. inst->setParentSpritSet(spriteSet);
  14519. return 0;
  14520. }
  14521. static int Polycode_Sprite_getParentSpriteSet(lua_State *L) {
  14522. luaL_checktype(L, 1, LUA_TUSERDATA);
  14523. Sprite *inst = (Sprite*) *((PolyBase**)lua_touserdata(L, 1));
  14524. PolyBase *ptrRetVal = (PolyBase*)inst->getParentSpriteSet();
  14525. if(ptrRetVal == NULL) {
  14526. lua_pushnil(L);
  14527. } else {
  14528. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14529. *userdataPtr = ptrRetVal;
  14530. }
  14531. return 1;
  14532. }
  14533. static int Polycode_delete_Sprite(lua_State *L) {
  14534. luaL_checktype(L, 1, LUA_TUSERDATA);
  14535. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14536. delete ((Sprite*) *inst);
  14537. *inst = NULL;
  14538. return 0;
  14539. }
  14540. static int Polycode_SpriteSet(lua_State *L) {
  14541. luaL_checktype(L, 1, LUA_TSTRING);
  14542. String fileName = String(lua_tostring(L, 1));
  14543. luaL_checktype(L, 2, LUA_TUSERDATA);
  14544. ResourcePool* parentPool = (ResourcePool*) *((PolyBase**)lua_touserdata(L, 2));
  14545. SpriteSet *inst = new SpriteSet(fileName, parentPool);
  14546. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14547. *userdataPtr = (PolyBase*)inst;
  14548. luaL_getmetatable(L, "Polycode.SpriteSet");
  14549. lua_setmetatable(L, -2);
  14550. return 1;
  14551. }
  14552. static int Polycode_SpriteSet_setTexture(lua_State *L) {
  14553. luaL_checktype(L, 1, LUA_TUSERDATA);
  14554. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14555. luaL_checktype(L, 2, LUA_TUSERDATA);
  14556. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  14557. inst->setTexture(texture);
  14558. return 0;
  14559. }
  14560. static int Polycode_SpriteSet_getTexture(lua_State *L) {
  14561. luaL_checktype(L, 1, LUA_TUSERDATA);
  14562. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14563. PolyBase *ptrRetVal = (PolyBase*)inst->getTexture();
  14564. if(ptrRetVal == NULL) {
  14565. lua_pushnil(L);
  14566. } else {
  14567. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14568. *userdataPtr = ptrRetVal;
  14569. }
  14570. return 1;
  14571. }
  14572. static int Polycode_SpriteSet_loadTexture(lua_State *L) {
  14573. luaL_checktype(L, 1, LUA_TUSERDATA);
  14574. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14575. luaL_checktype(L, 2, LUA_TSTRING);
  14576. String imageFileName = String(lua_tostring(L, 2));
  14577. PolyBase *ptrRetVal = (PolyBase*)inst->loadTexture(imageFileName);
  14578. if(ptrRetVal == NULL) {
  14579. lua_pushnil(L);
  14580. } else {
  14581. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14582. *userdataPtr = ptrRetVal;
  14583. }
  14584. return 1;
  14585. }
  14586. static int Polycode_SpriteSet_addSpriteEntry(lua_State *L) {
  14587. luaL_checktype(L, 1, LUA_TUSERDATA);
  14588. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14589. luaL_checktype(L, 2, LUA_TUSERDATA);
  14590. Sprite* newEntry = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  14591. inst->addSpriteEntry(newEntry);
  14592. return 0;
  14593. }
  14594. static int Polycode_SpriteSet_getNumSpriteEntries(lua_State *L) {
  14595. luaL_checktype(L, 1, LUA_TUSERDATA);
  14596. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14597. lua_pushinteger(L, inst->getNumSpriteEntries());
  14598. return 1;
  14599. }
  14600. static int Polycode_SpriteSet_getSpriteEntry(lua_State *L) {
  14601. luaL_checktype(L, 1, LUA_TUSERDATA);
  14602. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14603. luaL_checktype(L, 2, LUA_TNUMBER);
  14604. int index = lua_tointeger(L, 2);
  14605. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteEntry(index);
  14606. if(ptrRetVal == NULL) {
  14607. lua_pushnil(L);
  14608. } else {
  14609. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14610. *userdataPtr = ptrRetVal;
  14611. }
  14612. return 1;
  14613. }
  14614. static int Polycode_SpriteSet_removeSprite(lua_State *L) {
  14615. luaL_checktype(L, 1, LUA_TUSERDATA);
  14616. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14617. luaL_checktype(L, 2, LUA_TUSERDATA);
  14618. Sprite* sprite = (Sprite*) *((PolyBase**)lua_touserdata(L, 2));
  14619. inst->removeSprite(sprite);
  14620. return 0;
  14621. }
  14622. static int Polycode_SpriteSet_loadSpriteSet(lua_State *L) {
  14623. luaL_checktype(L, 1, LUA_TUSERDATA);
  14624. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14625. luaL_checktype(L, 2, LUA_TSTRING);
  14626. String fileName = String(lua_tostring(L, 2));
  14627. inst->loadSpriteSet(fileName);
  14628. return 0;
  14629. }
  14630. static int Polycode_SpriteSet_addSpriteFrame(lua_State *L) {
  14631. luaL_checktype(L, 1, LUA_TUSERDATA);
  14632. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14633. luaL_checktype(L, 2, LUA_TUSERDATA);
  14634. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  14635. bool assignID;
  14636. if(lua_isboolean(L, 3)) {
  14637. assignID = lua_toboolean(L, 3) != 0;
  14638. } else {
  14639. assignID = true;
  14640. }
  14641. inst->addSpriteFrame(frame, assignID);
  14642. return 0;
  14643. }
  14644. static int Polycode_SpriteSet_getNumFrames(lua_State *L) {
  14645. luaL_checktype(L, 1, LUA_TUSERDATA);
  14646. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14647. lua_pushinteger(L, inst->getNumFrames());
  14648. return 1;
  14649. }
  14650. static int Polycode_SpriteSet_getSpriteFrame(lua_State *L) {
  14651. luaL_checktype(L, 1, LUA_TUSERDATA);
  14652. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14653. luaL_checktype(L, 2, LUA_TNUMBER);
  14654. int index = lua_tointeger(L, 2);
  14655. SpriteFrame *retInst = new SpriteFrame();
  14656. *retInst = inst->getSpriteFrame(index);
  14657. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14658. luaL_getmetatable(L, "Polycode.SpriteFrame");
  14659. lua_setmetatable(L, -2);
  14660. *userdataPtr = (PolyBase*)retInst;
  14661. return 1;
  14662. }
  14663. static int Polycode_SpriteSet_getSpriteFrameByID(lua_State *L) {
  14664. luaL_checktype(L, 1, LUA_TUSERDATA);
  14665. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14666. luaL_checktype(L, 2, LUA_TNUMBER);
  14667. int frameID = lua_tointeger(L, 2);
  14668. SpriteFrame *retInst = new SpriteFrame();
  14669. *retInst = inst->getSpriteFrameByID(frameID);
  14670. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14671. luaL_getmetatable(L, "Polycode.SpriteFrame");
  14672. lua_setmetatable(L, -2);
  14673. *userdataPtr = (PolyBase*)retInst;
  14674. return 1;
  14675. }
  14676. static int Polycode_SpriteSet_removeFrameByID(lua_State *L) {
  14677. luaL_checktype(L, 1, LUA_TUSERDATA);
  14678. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14679. luaL_checktype(L, 2, LUA_TNUMBER);
  14680. int frameID = lua_tointeger(L, 2);
  14681. inst->removeFrameByID(frameID);
  14682. return 0;
  14683. }
  14684. static int Polycode_SpriteSet_setSpriteFrame(lua_State *L) {
  14685. luaL_checktype(L, 1, LUA_TUSERDATA);
  14686. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14687. luaL_checktype(L, 2, LUA_TUSERDATA);
  14688. SpriteFrame frame = *(SpriteFrame*) *((PolyBase**)lua_touserdata(L, 2));
  14689. inst->setSpriteFrame(frame);
  14690. return 0;
  14691. }
  14692. static int Polycode_SpriteSet_clearFrames(lua_State *L) {
  14693. luaL_checktype(L, 1, LUA_TUSERDATA);
  14694. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14695. inst->clearFrames();
  14696. return 0;
  14697. }
  14698. static int Polycode_SpriteSet_createGridFrames(lua_State *L) {
  14699. luaL_checktype(L, 1, LUA_TUSERDATA);
  14700. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14701. luaL_checktype(L, 2, LUA_TNUMBER);
  14702. int xCount = lua_tointeger(L, 2);
  14703. luaL_checktype(L, 3, LUA_TNUMBER);
  14704. int yCount = lua_tointeger(L, 3);
  14705. luaL_checktype(L, 4, LUA_TUSERDATA);
  14706. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 4));
  14707. inst->createGridFrames(xCount, yCount, defaultAnchor);
  14708. return 0;
  14709. }
  14710. static int Polycode_SpriteSet_createFramesFromIslands(lua_State *L) {
  14711. luaL_checktype(L, 1, LUA_TUSERDATA);
  14712. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14713. luaL_checktype(L, 2, LUA_TNUMBER);
  14714. int minDistance = lua_tointeger(L, 2);
  14715. luaL_checktype(L, 3, LUA_TUSERDATA);
  14716. Vector2 defaultAnchor = *(Vector2*) *((PolyBase**)lua_touserdata(L, 3));
  14717. inst->createFramesFromIslands(minDistance, defaultAnchor);
  14718. return 0;
  14719. }
  14720. static int Polycode_SpriteSet_getSpriteByName(lua_State *L) {
  14721. luaL_checktype(L, 1, LUA_TUSERDATA);
  14722. SpriteSet *inst = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14723. luaL_checktype(L, 2, LUA_TSTRING);
  14724. String spriteName = String(lua_tostring(L, 2));
  14725. PolyBase *ptrRetVal = (PolyBase*)inst->getSpriteByName(spriteName);
  14726. if(ptrRetVal == NULL) {
  14727. lua_pushnil(L);
  14728. } else {
  14729. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14730. *userdataPtr = ptrRetVal;
  14731. }
  14732. return 1;
  14733. }
  14734. static int Polycode_delete_SpriteSet(lua_State *L) {
  14735. luaL_checktype(L, 1, LUA_TUSERDATA);
  14736. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14737. delete ((SpriteSet*) *inst);
  14738. *inst = NULL;
  14739. return 0;
  14740. }
  14741. static int Polycode_SpriteFrame_get_coordinates(lua_State *L) {
  14742. luaL_checktype(L, 1, LUA_TUSERDATA);
  14743. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14744. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14745. *userdataPtr = (PolyBase*)&inst->coordinates;
  14746. return 1;
  14747. }
  14748. static int Polycode_SpriteFrame_get_anchorPoint(lua_State *L) {
  14749. luaL_checktype(L, 1, LUA_TUSERDATA);
  14750. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14751. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14752. *userdataPtr = (PolyBase*)&inst->anchorPoint;
  14753. return 1;
  14754. }
  14755. static int Polycode_SpriteFrame_get_frameID(lua_State *L) {
  14756. luaL_checktype(L, 1, LUA_TUSERDATA);
  14757. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14758. lua_pushinteger(L, inst->frameID);
  14759. return 1;
  14760. }
  14761. static int Polycode_SpriteFrame_set_coordinates(lua_State *L) {
  14762. luaL_checktype(L, 1, LUA_TUSERDATA);
  14763. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14764. luaL_checktype(L, 2, LUA_TUSERDATA);
  14765. Rectangle *argInst = (Rectangle*) *((PolyBase**)lua_touserdata(L, 2));
  14766. inst->coordinates = *argInst;
  14767. return 0;
  14768. }
  14769. static int Polycode_SpriteFrame_set_anchorPoint(lua_State *L) {
  14770. luaL_checktype(L, 1, LUA_TUSERDATA);
  14771. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14772. luaL_checktype(L, 2, LUA_TUSERDATA);
  14773. Vector2 *argInst = (Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  14774. inst->anchorPoint = *argInst;
  14775. return 0;
  14776. }
  14777. static int Polycode_SpriteFrame_set_frameID(lua_State *L) {
  14778. luaL_checktype(L, 1, LUA_TUSERDATA);
  14779. SpriteFrame *inst = (SpriteFrame*) *((PolyBase**)lua_touserdata(L, 1));
  14780. int param = lua_tointeger(L, 2);
  14781. inst->frameID = param;
  14782. return 0;
  14783. }
  14784. static int Polycode_delete_SpriteFrame(lua_State *L) {
  14785. luaL_checktype(L, 1, LUA_TUSERDATA);
  14786. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14787. delete ((SpriteFrame*) *inst);
  14788. *inst = NULL;
  14789. return 0;
  14790. }
  14791. static int Polycode_SpriteState(lua_State *L) {
  14792. luaL_checktype(L, 1, LUA_TUSERDATA);
  14793. SpriteSet* spriteSet = (SpriteSet*) *((PolyBase**)lua_touserdata(L, 1));
  14794. luaL_checktype(L, 2, LUA_TSTRING);
  14795. String name = String(lua_tostring(L, 2));
  14796. SpriteState *inst = new SpriteState(spriteSet, name);
  14797. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14798. *userdataPtr = (PolyBase*)inst;
  14799. luaL_getmetatable(L, "Polycode.SpriteState");
  14800. lua_setmetatable(L, -2);
  14801. return 1;
  14802. }
  14803. static int Polycode_SpriteState_setName(lua_State *L) {
  14804. luaL_checktype(L, 1, LUA_TUSERDATA);
  14805. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14806. luaL_checktype(L, 2, LUA_TSTRING);
  14807. String name = String(lua_tostring(L, 2));
  14808. inst->setName(name);
  14809. return 0;
  14810. }
  14811. static int Polycode_SpriteState_getName(lua_State *L) {
  14812. luaL_checktype(L, 1, LUA_TUSERDATA);
  14813. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14814. lua_pushstring(L, inst->getName().c_str());
  14815. return 1;
  14816. }
  14817. static int Polycode_SpriteState_getNumFrameIDs(lua_State *L) {
  14818. luaL_checktype(L, 1, LUA_TUSERDATA);
  14819. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14820. lua_pushinteger(L, inst->getNumFrameIDs());
  14821. return 1;
  14822. }
  14823. static int Polycode_SpriteState_getFrameIDAtIndex(lua_State *L) {
  14824. luaL_checktype(L, 1, LUA_TUSERDATA);
  14825. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14826. luaL_checktype(L, 2, LUA_TNUMBER);
  14827. int index = lua_tointeger(L, 2);
  14828. lua_pushinteger(L, inst->getFrameIDAtIndex(index));
  14829. return 1;
  14830. }
  14831. static int Polycode_SpriteState_getMeshForFrameIndex(lua_State *L) {
  14832. luaL_checktype(L, 1, LUA_TUSERDATA);
  14833. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14834. luaL_checktype(L, 2, LUA_TNUMBER);
  14835. int index = lua_tointeger(L, 2);
  14836. PolyBase *ptrRetVal = (PolyBase*)inst->getMeshForFrameIndex(index);
  14837. if(ptrRetVal == NULL) {
  14838. lua_pushnil(L);
  14839. } else {
  14840. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14841. *userdataPtr = ptrRetVal;
  14842. }
  14843. return 1;
  14844. }
  14845. static int Polycode_SpriteState_insertFrame(lua_State *L) {
  14846. luaL_checktype(L, 1, LUA_TUSERDATA);
  14847. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14848. luaL_checktype(L, 2, LUA_TNUMBER);
  14849. int index = lua_tointeger(L, 2);
  14850. luaL_checktype(L, 3, LUA_TNUMBER);
  14851. int frameID = lua_tointeger(L, 3);
  14852. inst->insertFrame(index, frameID);
  14853. return 0;
  14854. }
  14855. static int Polycode_SpriteState_removeFrameByIndex(lua_State *L) {
  14856. luaL_checktype(L, 1, LUA_TUSERDATA);
  14857. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14858. luaL_checktype(L, 2, LUA_TNUMBER);
  14859. int frameIndex = lua_tointeger(L, 2);
  14860. inst->removeFrameByIndex(frameIndex);
  14861. return 0;
  14862. }
  14863. static int Polycode_SpriteState_clearFrames(lua_State *L) {
  14864. luaL_checktype(L, 1, LUA_TUSERDATA);
  14865. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14866. inst->clearFrames();
  14867. return 0;
  14868. }
  14869. static int Polycode_SpriteState_setPixelsPerUnit(lua_State *L) {
  14870. luaL_checktype(L, 1, LUA_TUSERDATA);
  14871. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14872. luaL_checktype(L, 2, LUA_TNUMBER);
  14873. Number ppu = lua_tonumber(L, 2);
  14874. inst->setPixelsPerUnit(ppu);
  14875. return 0;
  14876. }
  14877. static int Polycode_SpriteState_getPixelsPerUnit(lua_State *L) {
  14878. luaL_checktype(L, 1, LUA_TUSERDATA);
  14879. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14880. lua_pushnumber(L, inst->getPixelsPerUnit());
  14881. return 1;
  14882. }
  14883. static int Polycode_SpriteState_rebuildStateMeshes(lua_State *L) {
  14884. luaL_checktype(L, 1, LUA_TUSERDATA);
  14885. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14886. inst->rebuildStateMeshes();
  14887. return 0;
  14888. }
  14889. static int Polycode_SpriteState_setStateFPS(lua_State *L) {
  14890. luaL_checktype(L, 1, LUA_TUSERDATA);
  14891. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14892. luaL_checktype(L, 2, LUA_TNUMBER);
  14893. Number fps = lua_tonumber(L, 2);
  14894. inst->setStateFPS(fps);
  14895. return 0;
  14896. }
  14897. static int Polycode_SpriteState_getStateFPS(lua_State *L) {
  14898. luaL_checktype(L, 1, LUA_TUSERDATA);
  14899. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14900. lua_pushnumber(L, inst->getStateFPS());
  14901. return 1;
  14902. }
  14903. static int Polycode_SpriteState_getLargestFrameBoundingBox(lua_State *L) {
  14904. luaL_checktype(L, 1, LUA_TUSERDATA);
  14905. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14906. Vector3 *retInst = new Vector3();
  14907. *retInst = inst->getLargestFrameBoundingBox();
  14908. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14909. luaL_getmetatable(L, "Polycode.Vector3");
  14910. lua_setmetatable(L, -2);
  14911. *userdataPtr = (PolyBase*)retInst;
  14912. return 1;
  14913. }
  14914. static int Polycode_SpriteState_setBoundingBox(lua_State *L) {
  14915. luaL_checktype(L, 1, LUA_TUSERDATA);
  14916. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14917. luaL_checktype(L, 2, LUA_TUSERDATA);
  14918. Vector2 boundingBox = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  14919. inst->setBoundingBox(boundingBox);
  14920. return 0;
  14921. }
  14922. static int Polycode_SpriteState_getBoundingBox(lua_State *L) {
  14923. luaL_checktype(L, 1, LUA_TUSERDATA);
  14924. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14925. Vector2 *retInst = new Vector2();
  14926. *retInst = inst->getBoundingBox();
  14927. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14928. luaL_getmetatable(L, "Polycode.Vector2");
  14929. lua_setmetatable(L, -2);
  14930. *userdataPtr = (PolyBase*)retInst;
  14931. return 1;
  14932. }
  14933. static int Polycode_SpriteState_getSpriteOffset(lua_State *L) {
  14934. luaL_checktype(L, 1, LUA_TUSERDATA);
  14935. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14936. Vector2 *retInst = new Vector2();
  14937. *retInst = inst->getSpriteOffset();
  14938. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14939. luaL_getmetatable(L, "Polycode.Vector2");
  14940. lua_setmetatable(L, -2);
  14941. *userdataPtr = (PolyBase*)retInst;
  14942. return 1;
  14943. }
  14944. static int Polycode_SpriteState_setSpriteOffset(lua_State *L) {
  14945. luaL_checktype(L, 1, LUA_TUSERDATA);
  14946. SpriteState *inst = (SpriteState*) *((PolyBase**)lua_touserdata(L, 1));
  14947. luaL_checktype(L, 2, LUA_TUSERDATA);
  14948. Vector2 offset = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  14949. inst->setSpriteOffset(offset);
  14950. return 0;
  14951. }
  14952. static int Polycode_delete_SpriteState(lua_State *L) {
  14953. luaL_checktype(L, 1, LUA_TUSERDATA);
  14954. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14955. delete ((SpriteState*) *inst);
  14956. *inst = NULL;
  14957. return 0;
  14958. }
  14959. static int Polycode_delete_JSScriptInstance(lua_State *L) {
  14960. luaL_checktype(L, 1, LUA_TUSERDATA);
  14961. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14962. delete ((JSScriptInstance*) *inst);
  14963. *inst = NULL;
  14964. return 0;
  14965. }
  14966. static int Polycode_LuaScriptInstance_get_tableRef(lua_State *L) {
  14967. luaL_checktype(L, 1, LUA_TUSERDATA);
  14968. LuaScriptInstance *inst = (LuaScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  14969. lua_pushinteger(L, inst->tableRef);
  14970. return 1;
  14971. }
  14972. static int Polycode_LuaScriptInstance_set_tableRef(lua_State *L) {
  14973. luaL_checktype(L, 1, LUA_TUSERDATA);
  14974. LuaScriptInstance *inst = (LuaScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  14975. int param = lua_tointeger(L, 2);
  14976. inst->tableRef = param;
  14977. return 0;
  14978. }
  14979. static int Polycode_delete_LuaScriptInstance(lua_State *L) {
  14980. luaL_checktype(L, 1, LUA_TUSERDATA);
  14981. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  14982. delete ((LuaScriptInstance*) *inst);
  14983. *inst = NULL;
  14984. return 0;
  14985. }
  14986. static int Polycode_ScriptInstance_get_script(lua_State *L) {
  14987. luaL_checktype(L, 1, LUA_TUSERDATA);
  14988. ScriptInstance *inst = (ScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  14989. if(!inst->script) {
  14990. lua_pushnil(L);
  14991. } else {
  14992. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  14993. *userdataPtr = (PolyBase*)inst->script;
  14994. }
  14995. return 1;
  14996. }
  14997. static int Polycode_ScriptInstance_set_script(lua_State *L) {
  14998. luaL_checktype(L, 1, LUA_TUSERDATA);
  14999. ScriptInstance *inst = (ScriptInstance*) *((PolyBase**)lua_touserdata(L, 1));
  15000. luaL_checktype(L, 2, LUA_TUSERDATA);
  15001. Script* *argInst = (Script**) *((PolyBase**)lua_touserdata(L, 2));
  15002. inst->script = *argInst;
  15003. return 0;
  15004. }
  15005. static int Polycode_delete_ScriptInstance(lua_State *L) {
  15006. luaL_checktype(L, 1, LUA_TUSERDATA);
  15007. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15008. delete ((ScriptInstance*) *inst);
  15009. *inst = NULL;
  15010. return 0;
  15011. }
  15012. static int Polycode_ProgramParam_get_name(lua_State *L) {
  15013. luaL_checktype(L, 1, LUA_TUSERDATA);
  15014. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15015. lua_pushstring(L, inst->name.c_str());
  15016. return 1;
  15017. }
  15018. static int Polycode_ProgramParam_get_type(lua_State *L) {
  15019. luaL_checktype(L, 1, LUA_TUSERDATA);
  15020. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15021. lua_pushinteger(L, inst->type);
  15022. return 1;
  15023. }
  15024. static int Polycode_ProgramParam_get_globalParam(lua_State *L) {
  15025. luaL_checktype(L, 1, LUA_TUSERDATA);
  15026. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15027. if(!inst->globalParam) {
  15028. lua_pushnil(L);
  15029. } else {
  15030. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15031. *userdataPtr = (PolyBase*)inst->globalParam;
  15032. }
  15033. return 1;
  15034. }
  15035. static int Polycode_ProgramParam_set_name(lua_State *L) {
  15036. luaL_checktype(L, 1, LUA_TUSERDATA);
  15037. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15038. String param = lua_tostring(L, 2);
  15039. inst->name = param;
  15040. return 0;
  15041. }
  15042. static int Polycode_ProgramParam_set_type(lua_State *L) {
  15043. luaL_checktype(L, 1, LUA_TUSERDATA);
  15044. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15045. int param = lua_tointeger(L, 2);
  15046. inst->type = param;
  15047. return 0;
  15048. }
  15049. static int Polycode_ProgramParam_set_globalParam(lua_State *L) {
  15050. luaL_checktype(L, 1, LUA_TUSERDATA);
  15051. ProgramParam *inst = (ProgramParam*) *((PolyBase**)lua_touserdata(L, 1));
  15052. luaL_checktype(L, 2, LUA_TUSERDATA);
  15053. LocalShaderParam* *argInst = (LocalShaderParam**) *((PolyBase**)lua_touserdata(L, 2));
  15054. inst->globalParam = *argInst;
  15055. return 0;
  15056. }
  15057. static int Polycode_ProgramParam(lua_State *L) {
  15058. ProgramParam *inst = new ProgramParam();
  15059. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15060. *userdataPtr = (PolyBase*)inst;
  15061. luaL_getmetatable(L, "Polycode.ProgramParam");
  15062. lua_setmetatable(L, -2);
  15063. return 1;
  15064. }
  15065. static int Polycode_ProgramParam_createParamData(lua_State *L) {
  15066. luaL_checktype(L, 1, LUA_TNUMBER);
  15067. int type = lua_tointeger(L, 1);
  15068. PolyBase *ptrRetVal = (PolyBase*)ProgramParam::createParamData(type);
  15069. if(ptrRetVal == NULL) {
  15070. lua_pushnil(L);
  15071. } else {
  15072. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15073. *userdataPtr = ptrRetVal;
  15074. }
  15075. return 1;
  15076. }
  15077. static int Polycode_delete_ProgramParam(lua_State *L) {
  15078. luaL_checktype(L, 1, LUA_TUSERDATA);
  15079. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15080. delete ((ProgramParam*) *inst);
  15081. *inst = NULL;
  15082. return 0;
  15083. }
  15084. static int Polycode_ProgramAttribute_get_size(lua_State *L) {
  15085. luaL_checktype(L, 1, LUA_TUSERDATA);
  15086. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  15087. lua_pushinteger(L, inst->size);
  15088. return 1;
  15089. }
  15090. static int Polycode_ProgramAttribute_get_name(lua_State *L) {
  15091. luaL_checktype(L, 1, LUA_TUSERDATA);
  15092. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  15093. lua_pushstring(L, inst->name.c_str());
  15094. return 1;
  15095. }
  15096. static int Polycode_ProgramAttribute_set_size(lua_State *L) {
  15097. luaL_checktype(L, 1, LUA_TUSERDATA);
  15098. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  15099. int param = lua_tointeger(L, 2);
  15100. inst->size = param;
  15101. return 0;
  15102. }
  15103. static int Polycode_ProgramAttribute_set_name(lua_State *L) {
  15104. luaL_checktype(L, 1, LUA_TUSERDATA);
  15105. ProgramAttribute *inst = (ProgramAttribute*) *((PolyBase**)lua_touserdata(L, 1));
  15106. String param = lua_tostring(L, 2);
  15107. inst->name = param;
  15108. return 0;
  15109. }
  15110. static int Polycode_ProgramAttribute(lua_State *L) {
  15111. ProgramAttribute *inst = new ProgramAttribute();
  15112. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15113. *userdataPtr = (PolyBase*)inst;
  15114. luaL_getmetatable(L, "Polycode.ProgramAttribute");
  15115. lua_setmetatable(L, -2);
  15116. return 1;
  15117. }
  15118. static int Polycode_delete_ProgramAttribute(lua_State *L) {
  15119. luaL_checktype(L, 1, LUA_TUSERDATA);
  15120. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15121. delete ((ProgramAttribute*) *inst);
  15122. *inst = NULL;
  15123. return 0;
  15124. }
  15125. static int Polycode_ShaderRenderTarget_get_id(lua_State *L) {
  15126. luaL_checktype(L, 1, LUA_TUSERDATA);
  15127. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15128. lua_pushstring(L, inst->id.c_str());
  15129. return 1;
  15130. }
  15131. static int Polycode_ShaderRenderTarget_get_width(lua_State *L) {
  15132. luaL_checktype(L, 1, LUA_TUSERDATA);
  15133. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15134. lua_pushnumber(L, inst->width);
  15135. return 1;
  15136. }
  15137. static int Polycode_ShaderRenderTarget_get_height(lua_State *L) {
  15138. luaL_checktype(L, 1, LUA_TUSERDATA);
  15139. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15140. lua_pushnumber(L, inst->height);
  15141. return 1;
  15142. }
  15143. static int Polycode_ShaderRenderTarget_get_sizeMode(lua_State *L) {
  15144. luaL_checktype(L, 1, LUA_TUSERDATA);
  15145. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15146. lua_pushinteger(L, inst->sizeMode);
  15147. return 1;
  15148. }
  15149. static int Polycode_ShaderRenderTarget_get_buffer(lua_State *L) {
  15150. luaL_checktype(L, 1, LUA_TUSERDATA);
  15151. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15152. if(!inst->buffer) {
  15153. lua_pushnil(L);
  15154. } else {
  15155. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15156. *userdataPtr = (PolyBase*)inst->buffer;
  15157. }
  15158. return 1;
  15159. }
  15160. static int Polycode_ShaderRenderTarget_get_normalizedWidth(lua_State *L) {
  15161. luaL_checktype(L, 1, LUA_TUSERDATA);
  15162. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15163. lua_pushnumber(L, inst->normalizedWidth);
  15164. return 1;
  15165. }
  15166. static int Polycode_ShaderRenderTarget_get_normalizedHeight(lua_State *L) {
  15167. luaL_checktype(L, 1, LUA_TUSERDATA);
  15168. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15169. lua_pushnumber(L, inst->normalizedHeight);
  15170. return 1;
  15171. }
  15172. static int Polycode_ShaderRenderTarget_set_id(lua_State *L) {
  15173. luaL_checktype(L, 1, LUA_TUSERDATA);
  15174. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15175. String param = lua_tostring(L, 2);
  15176. inst->id = param;
  15177. return 0;
  15178. }
  15179. static int Polycode_ShaderRenderTarget_set_width(lua_State *L) {
  15180. luaL_checktype(L, 1, LUA_TUSERDATA);
  15181. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15182. Number param = lua_tonumber(L, 2);
  15183. inst->width = param;
  15184. return 0;
  15185. }
  15186. static int Polycode_ShaderRenderTarget_set_height(lua_State *L) {
  15187. luaL_checktype(L, 1, LUA_TUSERDATA);
  15188. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15189. Number param = lua_tonumber(L, 2);
  15190. inst->height = param;
  15191. return 0;
  15192. }
  15193. static int Polycode_ShaderRenderTarget_set_sizeMode(lua_State *L) {
  15194. luaL_checktype(L, 1, LUA_TUSERDATA);
  15195. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15196. int param = lua_tointeger(L, 2);
  15197. inst->sizeMode = param;
  15198. return 0;
  15199. }
  15200. static int Polycode_ShaderRenderTarget_set_buffer(lua_State *L) {
  15201. luaL_checktype(L, 1, LUA_TUSERDATA);
  15202. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15203. luaL_checktype(L, 2, LUA_TUSERDATA);
  15204. RenderBuffer* *argInst = (RenderBuffer**) *((PolyBase**)lua_touserdata(L, 2));
  15205. inst->buffer = *argInst;
  15206. return 0;
  15207. }
  15208. static int Polycode_ShaderRenderTarget_set_normalizedWidth(lua_State *L) {
  15209. luaL_checktype(L, 1, LUA_TUSERDATA);
  15210. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15211. Number param = lua_tonumber(L, 2);
  15212. inst->normalizedWidth = param;
  15213. return 0;
  15214. }
  15215. static int Polycode_ShaderRenderTarget_set_normalizedHeight(lua_State *L) {
  15216. luaL_checktype(L, 1, LUA_TUSERDATA);
  15217. ShaderRenderTarget *inst = (ShaderRenderTarget*) *((PolyBase**)lua_touserdata(L, 1));
  15218. Number param = lua_tonumber(L, 2);
  15219. inst->normalizedHeight = param;
  15220. return 0;
  15221. }
  15222. static int Polycode_ShaderRenderTarget(lua_State *L) {
  15223. ShaderRenderTarget *inst = new ShaderRenderTarget();
  15224. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15225. *userdataPtr = (PolyBase*)inst;
  15226. luaL_getmetatable(L, "Polycode.ShaderRenderTarget");
  15227. lua_setmetatable(L, -2);
  15228. return 1;
  15229. }
  15230. static int Polycode_delete_ShaderRenderTarget(lua_State *L) {
  15231. luaL_checktype(L, 1, LUA_TUSERDATA);
  15232. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15233. delete ((ShaderRenderTarget*) *inst);
  15234. *inst = NULL;
  15235. return 0;
  15236. }
  15237. static int Polycode_RenderTargetBinding_get_id(lua_State *L) {
  15238. luaL_checktype(L, 1, LUA_TUSERDATA);
  15239. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15240. lua_pushstring(L, inst->id.c_str());
  15241. return 1;
  15242. }
  15243. static int Polycode_RenderTargetBinding_get_name(lua_State *L) {
  15244. luaL_checktype(L, 1, LUA_TUSERDATA);
  15245. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15246. lua_pushstring(L, inst->name.c_str());
  15247. return 1;
  15248. }
  15249. static int Polycode_RenderTargetBinding_get_mode(lua_State *L) {
  15250. luaL_checktype(L, 1, LUA_TUSERDATA);
  15251. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15252. lua_pushinteger(L, inst->mode);
  15253. return 1;
  15254. }
  15255. static int Polycode_RenderTargetBinding_get_buffer(lua_State *L) {
  15256. luaL_checktype(L, 1, LUA_TUSERDATA);
  15257. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15258. if(!inst->buffer) {
  15259. lua_pushnil(L);
  15260. } else {
  15261. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15262. *userdataPtr = (PolyBase*)inst->buffer;
  15263. }
  15264. return 1;
  15265. }
  15266. static int Polycode_RenderTargetBinding_set_id(lua_State *L) {
  15267. luaL_checktype(L, 1, LUA_TUSERDATA);
  15268. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15269. String param = lua_tostring(L, 2);
  15270. inst->id = param;
  15271. return 0;
  15272. }
  15273. static int Polycode_RenderTargetBinding_set_name(lua_State *L) {
  15274. luaL_checktype(L, 1, LUA_TUSERDATA);
  15275. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15276. String param = lua_tostring(L, 2);
  15277. inst->name = param;
  15278. return 0;
  15279. }
  15280. static int Polycode_RenderTargetBinding_set_mode(lua_State *L) {
  15281. luaL_checktype(L, 1, LUA_TUSERDATA);
  15282. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15283. int param = lua_tointeger(L, 2);
  15284. inst->mode = param;
  15285. return 0;
  15286. }
  15287. static int Polycode_RenderTargetBinding_set_buffer(lua_State *L) {
  15288. luaL_checktype(L, 1, LUA_TUSERDATA);
  15289. RenderTargetBinding *inst = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15290. luaL_checktype(L, 2, LUA_TUSERDATA);
  15291. RenderBuffer* *argInst = (RenderBuffer**) *((PolyBase**)lua_touserdata(L, 2));
  15292. inst->buffer = *argInst;
  15293. return 0;
  15294. }
  15295. static int Polycode_delete_RenderTargetBinding(lua_State *L) {
  15296. luaL_checktype(L, 1, LUA_TUSERDATA);
  15297. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15298. delete ((RenderTargetBinding*) *inst);
  15299. *inst = NULL;
  15300. return 0;
  15301. }
  15302. static int Polycode_Shader_get_numSpotLights(lua_State *L) {
  15303. luaL_checktype(L, 1, LUA_TUSERDATA);
  15304. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15305. lua_pushinteger(L, inst->numSpotLights);
  15306. return 1;
  15307. }
  15308. static int Polycode_Shader_get_numPointLights(lua_State *L) {
  15309. luaL_checktype(L, 1, LUA_TUSERDATA);
  15310. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15311. lua_pushinteger(L, inst->numPointLights);
  15312. return 1;
  15313. }
  15314. static int Polycode_Shader_get_screenShader(lua_State *L) {
  15315. luaL_checktype(L, 1, LUA_TUSERDATA);
  15316. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15317. lua_pushboolean(L, inst->screenShader);
  15318. return 1;
  15319. }
  15320. static int Polycode_Shader_get_vertexProgram(lua_State *L) {
  15321. luaL_checktype(L, 1, LUA_TUSERDATA);
  15322. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15323. if(!inst->vertexProgram) {
  15324. lua_pushnil(L);
  15325. } else {
  15326. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15327. *userdataPtr = (PolyBase*)inst->vertexProgram;
  15328. }
  15329. return 1;
  15330. }
  15331. static int Polycode_Shader_get_fragmentProgram(lua_State *L) {
  15332. luaL_checktype(L, 1, LUA_TUSERDATA);
  15333. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15334. if(!inst->fragmentProgram) {
  15335. lua_pushnil(L);
  15336. } else {
  15337. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15338. *userdataPtr = (PolyBase*)inst->fragmentProgram;
  15339. }
  15340. return 1;
  15341. }
  15342. static int Polycode_Shader_get_name(lua_State *L) {
  15343. luaL_checktype(L, 1, LUA_TUSERDATA);
  15344. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15345. lua_pushstring(L, inst->name.c_str());
  15346. return 1;
  15347. }
  15348. static int Polycode_Shader_set_numSpotLights(lua_State *L) {
  15349. luaL_checktype(L, 1, LUA_TUSERDATA);
  15350. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15351. int param = lua_tointeger(L, 2);
  15352. inst->numSpotLights = param;
  15353. return 0;
  15354. }
  15355. static int Polycode_Shader_set_numPointLights(lua_State *L) {
  15356. luaL_checktype(L, 1, LUA_TUSERDATA);
  15357. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15358. int param = lua_tointeger(L, 2);
  15359. inst->numPointLights = param;
  15360. return 0;
  15361. }
  15362. static int Polycode_Shader_set_screenShader(lua_State *L) {
  15363. luaL_checktype(L, 1, LUA_TUSERDATA);
  15364. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15365. bool param = lua_toboolean(L, 2) != 0;
  15366. inst->screenShader = param;
  15367. return 0;
  15368. }
  15369. static int Polycode_Shader_set_vertexProgram(lua_State *L) {
  15370. luaL_checktype(L, 1, LUA_TUSERDATA);
  15371. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15372. luaL_checktype(L, 2, LUA_TUSERDATA);
  15373. ShaderProgram* *argInst = (ShaderProgram**) *((PolyBase**)lua_touserdata(L, 2));
  15374. inst->vertexProgram = *argInst;
  15375. return 0;
  15376. }
  15377. static int Polycode_Shader_set_fragmentProgram(lua_State *L) {
  15378. luaL_checktype(L, 1, LUA_TUSERDATA);
  15379. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15380. luaL_checktype(L, 2, LUA_TUSERDATA);
  15381. ShaderProgram* *argInst = (ShaderProgram**) *((PolyBase**)lua_touserdata(L, 2));
  15382. inst->fragmentProgram = *argInst;
  15383. return 0;
  15384. }
  15385. static int Polycode_Shader_set_name(lua_State *L) {
  15386. luaL_checktype(L, 1, LUA_TUSERDATA);
  15387. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15388. String param = lua_tostring(L, 2);
  15389. inst->name = param;
  15390. return 0;
  15391. }
  15392. static int Polycode_Shader_getType(lua_State *L) {
  15393. luaL_checktype(L, 1, LUA_TUSERDATA);
  15394. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15395. lua_pushinteger(L, inst->getType());
  15396. return 1;
  15397. }
  15398. static int Polycode_Shader_setName(lua_State *L) {
  15399. luaL_checktype(L, 1, LUA_TUSERDATA);
  15400. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15401. luaL_checktype(L, 2, LUA_TSTRING);
  15402. String name = String(lua_tostring(L, 2));
  15403. inst->setName(name);
  15404. return 0;
  15405. }
  15406. static int Polycode_Shader_getName(lua_State *L) {
  15407. luaL_checktype(L, 1, LUA_TUSERDATA);
  15408. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15409. lua_pushstring(L, inst->getName().c_str());
  15410. return 1;
  15411. }
  15412. static int Polycode_Shader_getParamPointer(lua_State *L) {
  15413. luaL_checktype(L, 1, LUA_TUSERDATA);
  15414. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15415. luaL_checktype(L, 2, LUA_TSTRING);
  15416. String name = String(lua_tostring(L, 2));
  15417. PolyBase *ptrRetVal = (PolyBase*)inst->getParamPointer(name);
  15418. if(ptrRetVal == NULL) {
  15419. lua_pushnil(L);
  15420. } else {
  15421. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15422. *userdataPtr = ptrRetVal;
  15423. }
  15424. return 1;
  15425. }
  15426. static int Polycode_Shader_getAttribPointer(lua_State *L) {
  15427. luaL_checktype(L, 1, LUA_TUSERDATA);
  15428. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15429. luaL_checktype(L, 2, LUA_TSTRING);
  15430. String name = String(lua_tostring(L, 2));
  15431. PolyBase *ptrRetVal = (PolyBase*)inst->getAttribPointer(name);
  15432. if(ptrRetVal == NULL) {
  15433. lua_pushnil(L);
  15434. } else {
  15435. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15436. *userdataPtr = ptrRetVal;
  15437. }
  15438. return 1;
  15439. }
  15440. static int Polycode_Shader_reload(lua_State *L) {
  15441. luaL_checktype(L, 1, LUA_TUSERDATA);
  15442. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15443. inst->reload();
  15444. return 0;
  15445. }
  15446. static int Polycode_Shader_getExpectedParamType(lua_State *L) {
  15447. luaL_checktype(L, 1, LUA_TUSERDATA);
  15448. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15449. luaL_checktype(L, 2, LUA_TSTRING);
  15450. String name = String(lua_tostring(L, 2));
  15451. lua_pushinteger(L, inst->getExpectedParamType(name));
  15452. return 1;
  15453. }
  15454. static int Polycode_Shader_setVertexProgram(lua_State *L) {
  15455. luaL_checktype(L, 1, LUA_TUSERDATA);
  15456. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15457. luaL_checktype(L, 2, LUA_TUSERDATA);
  15458. ShaderProgram* vp = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  15459. inst->setVertexProgram(vp);
  15460. return 0;
  15461. }
  15462. static int Polycode_Shader_setFragmentProgram(lua_State *L) {
  15463. luaL_checktype(L, 1, LUA_TUSERDATA);
  15464. Shader *inst = (Shader*) *((PolyBase**)lua_touserdata(L, 1));
  15465. luaL_checktype(L, 2, LUA_TUSERDATA);
  15466. ShaderProgram* fp = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 2));
  15467. inst->setFragmentProgram(fp);
  15468. return 0;
  15469. }
  15470. static int Polycode_delete_Shader(lua_State *L) {
  15471. luaL_checktype(L, 1, LUA_TUSERDATA);
  15472. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15473. delete ((Shader*) *inst);
  15474. *inst = NULL;
  15475. return 0;
  15476. }
  15477. static int Polycode_LocalShaderParam_get_name(lua_State *L) {
  15478. luaL_checktype(L, 1, LUA_TUSERDATA);
  15479. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15480. lua_pushstring(L, inst->name.c_str());
  15481. return 1;
  15482. }
  15483. static int Polycode_LocalShaderParam_get_type(lua_State *L) {
  15484. luaL_checktype(L, 1, LUA_TUSERDATA);
  15485. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15486. lua_pushinteger(L, inst->type);
  15487. return 1;
  15488. }
  15489. static int Polycode_LocalShaderParam_get_ownsPointer(lua_State *L) {
  15490. luaL_checktype(L, 1, LUA_TUSERDATA);
  15491. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15492. lua_pushboolean(L, inst->ownsPointer);
  15493. return 1;
  15494. }
  15495. static int Polycode_LocalShaderParam_get_arraySize(lua_State *L) {
  15496. luaL_checktype(L, 1, LUA_TUSERDATA);
  15497. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15498. lua_pushinteger(L, inst->arraySize);
  15499. return 1;
  15500. }
  15501. static int Polycode_LocalShaderParam_get_param(lua_State *L) {
  15502. luaL_checktype(L, 1, LUA_TUSERDATA);
  15503. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15504. if(!inst->param) {
  15505. lua_pushnil(L);
  15506. } else {
  15507. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15508. *userdataPtr = (PolyBase*)inst->param;
  15509. }
  15510. return 1;
  15511. }
  15512. static int Polycode_LocalShaderParam_set_name(lua_State *L) {
  15513. luaL_checktype(L, 1, LUA_TUSERDATA);
  15514. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15515. String param = lua_tostring(L, 2);
  15516. inst->name = param;
  15517. return 0;
  15518. }
  15519. static int Polycode_LocalShaderParam_set_type(lua_State *L) {
  15520. luaL_checktype(L, 1, LUA_TUSERDATA);
  15521. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15522. int param = lua_tointeger(L, 2);
  15523. inst->type = param;
  15524. return 0;
  15525. }
  15526. static int Polycode_LocalShaderParam_set_ownsPointer(lua_State *L) {
  15527. luaL_checktype(L, 1, LUA_TUSERDATA);
  15528. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15529. bool param = lua_toboolean(L, 2) != 0;
  15530. inst->ownsPointer = param;
  15531. return 0;
  15532. }
  15533. static int Polycode_LocalShaderParam_set_arraySize(lua_State *L) {
  15534. luaL_checktype(L, 1, LUA_TUSERDATA);
  15535. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15536. int param = lua_tointeger(L, 2);
  15537. inst->arraySize = param;
  15538. return 0;
  15539. }
  15540. static int Polycode_LocalShaderParam_set_param(lua_State *L) {
  15541. luaL_checktype(L, 1, LUA_TUSERDATA);
  15542. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15543. luaL_checktype(L, 2, LUA_TUSERDATA);
  15544. ProgramParam* *argInst = (ProgramParam**) *((PolyBase**)lua_touserdata(L, 2));
  15545. inst->param = *argInst;
  15546. return 0;
  15547. }
  15548. static int Polycode_LocalShaderParam(lua_State *L) {
  15549. LocalShaderParam *inst = new LocalShaderParam();
  15550. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15551. *userdataPtr = (PolyBase*)inst;
  15552. luaL_getmetatable(L, "Polycode.LocalShaderParam");
  15553. lua_setmetatable(L, -2);
  15554. return 1;
  15555. }
  15556. static int Polycode_LocalShaderParam_Copy(lua_State *L) {
  15557. luaL_checktype(L, 1, LUA_TUSERDATA);
  15558. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15559. PolyBase *ptrRetVal = (PolyBase*)inst->Copy();
  15560. if(ptrRetVal == NULL) {
  15561. lua_pushnil(L);
  15562. } else {
  15563. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15564. *userdataPtr = ptrRetVal;
  15565. }
  15566. return 1;
  15567. }
  15568. static int Polycode_LocalShaderParam_getNumber(lua_State *L) {
  15569. luaL_checktype(L, 1, LUA_TUSERDATA);
  15570. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15571. lua_pushnumber(L, inst->getNumber());
  15572. return 1;
  15573. }
  15574. static int Polycode_LocalShaderParam_getVector2(lua_State *L) {
  15575. luaL_checktype(L, 1, LUA_TUSERDATA);
  15576. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15577. Vector2 *retInst = new Vector2();
  15578. *retInst = inst->getVector2();
  15579. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15580. luaL_getmetatable(L, "Polycode.Vector2");
  15581. lua_setmetatable(L, -2);
  15582. *userdataPtr = (PolyBase*)retInst;
  15583. return 1;
  15584. }
  15585. static int Polycode_LocalShaderParam_getVector3(lua_State *L) {
  15586. luaL_checktype(L, 1, LUA_TUSERDATA);
  15587. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15588. Vector3 *retInst = new Vector3();
  15589. *retInst = inst->getVector3();
  15590. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15591. luaL_getmetatable(L, "Polycode.Vector3");
  15592. lua_setmetatable(L, -2);
  15593. *userdataPtr = (PolyBase*)retInst;
  15594. return 1;
  15595. }
  15596. static int Polycode_LocalShaderParam_getMatrix4(lua_State *L) {
  15597. luaL_checktype(L, 1, LUA_TUSERDATA);
  15598. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15599. Matrix4 *retInst = new Matrix4();
  15600. *retInst = inst->getMatrix4();
  15601. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15602. luaL_getmetatable(L, "Polycode.Matrix4");
  15603. lua_setmetatable(L, -2);
  15604. *userdataPtr = (PolyBase*)retInst;
  15605. return 1;
  15606. }
  15607. static int Polycode_LocalShaderParam_getColor(lua_State *L) {
  15608. luaL_checktype(L, 1, LUA_TUSERDATA);
  15609. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15610. Color *retInst = new Color();
  15611. *retInst = inst->getColor();
  15612. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15613. luaL_getmetatable(L, "Polycode.Color");
  15614. lua_setmetatable(L, -2);
  15615. *userdataPtr = (PolyBase*)retInst;
  15616. return 1;
  15617. }
  15618. static int Polycode_LocalShaderParam_setNumber(lua_State *L) {
  15619. luaL_checktype(L, 1, LUA_TUSERDATA);
  15620. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15621. luaL_checktype(L, 2, LUA_TNUMBER);
  15622. Number x = lua_tonumber(L, 2);
  15623. inst->setNumber(x);
  15624. return 0;
  15625. }
  15626. static int Polycode_LocalShaderParam_setVector2(lua_State *L) {
  15627. luaL_checktype(L, 1, LUA_TUSERDATA);
  15628. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15629. luaL_checktype(L, 2, LUA_TUSERDATA);
  15630. Vector2 x = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  15631. inst->setVector2(x);
  15632. return 0;
  15633. }
  15634. static int Polycode_LocalShaderParam_setVector3(lua_State *L) {
  15635. luaL_checktype(L, 1, LUA_TUSERDATA);
  15636. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15637. luaL_checktype(L, 2, LUA_TUSERDATA);
  15638. Vector3 x = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  15639. inst->setVector3(x);
  15640. return 0;
  15641. }
  15642. static int Polycode_LocalShaderParam_setMatrix4(lua_State *L) {
  15643. luaL_checktype(L, 1, LUA_TUSERDATA);
  15644. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15645. luaL_checktype(L, 2, LUA_TUSERDATA);
  15646. Matrix4 x = *(Matrix4*) *((PolyBase**)lua_touserdata(L, 2));
  15647. inst->setMatrix4(x);
  15648. return 0;
  15649. }
  15650. static int Polycode_LocalShaderParam_setColor(lua_State *L) {
  15651. luaL_checktype(L, 1, LUA_TUSERDATA);
  15652. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15653. luaL_checktype(L, 2, LUA_TUSERDATA);
  15654. Color x = *(Color*) *((PolyBase**)lua_touserdata(L, 2));
  15655. inst->setColor(x);
  15656. return 0;
  15657. }
  15658. static int Polycode_LocalShaderParam_setTexture(lua_State *L) {
  15659. luaL_checktype(L, 1, LUA_TUSERDATA);
  15660. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15661. luaL_checktype(L, 2, LUA_TUSERDATA);
  15662. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 2));
  15663. inst->setTexture(texture);
  15664. return 0;
  15665. }
  15666. static int Polycode_LocalShaderParam_getTexture(lua_State *L) {
  15667. luaL_checktype(L, 1, LUA_TUSERDATA);
  15668. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15669. PolyBase *ptrRetVal = (PolyBase*)inst->getTexture();
  15670. if(ptrRetVal == NULL) {
  15671. lua_pushnil(L);
  15672. } else {
  15673. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15674. *userdataPtr = ptrRetVal;
  15675. }
  15676. return 1;
  15677. }
  15678. static int Polycode_LocalShaderParam_setCubemap(lua_State *L) {
  15679. luaL_checktype(L, 1, LUA_TUSERDATA);
  15680. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15681. luaL_checktype(L, 2, LUA_TUSERDATA);
  15682. Cubemap* cubemap = (Cubemap*) *((PolyBase**)lua_touserdata(L, 2));
  15683. inst->setCubemap(cubemap);
  15684. return 0;
  15685. }
  15686. static int Polycode_LocalShaderParam_getCubemap(lua_State *L) {
  15687. luaL_checktype(L, 1, LUA_TUSERDATA);
  15688. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15689. PolyBase *ptrRetVal = (PolyBase*)inst->getCubemap();
  15690. if(ptrRetVal == NULL) {
  15691. lua_pushnil(L);
  15692. } else {
  15693. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15694. *userdataPtr = ptrRetVal;
  15695. }
  15696. return 1;
  15697. }
  15698. static int Polycode_LocalShaderParam_setParamValueFromString(lua_State *L) {
  15699. luaL_checktype(L, 1, LUA_TUSERDATA);
  15700. LocalShaderParam *inst = (LocalShaderParam*) *((PolyBase**)lua_touserdata(L, 1));
  15701. luaL_checktype(L, 2, LUA_TNUMBER);
  15702. int type = lua_tointeger(L, 2);
  15703. luaL_checktype(L, 3, LUA_TSTRING);
  15704. String pvalue = String(lua_tostring(L, 3));
  15705. inst->setParamValueFromString(type, pvalue);
  15706. return 0;
  15707. }
  15708. static int Polycode_delete_LocalShaderParam(lua_State *L) {
  15709. luaL_checktype(L, 1, LUA_TUSERDATA);
  15710. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15711. delete ((LocalShaderParam*) *inst);
  15712. *inst = NULL;
  15713. return 0;
  15714. }
  15715. static int Polycode_ShaderProgram_get_type(lua_State *L) {
  15716. luaL_checktype(L, 1, LUA_TUSERDATA);
  15717. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  15718. lua_pushinteger(L, inst->type);
  15719. return 1;
  15720. }
  15721. static int Polycode_ShaderProgram_set_type(lua_State *L) {
  15722. luaL_checktype(L, 1, LUA_TUSERDATA);
  15723. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  15724. int param = lua_tointeger(L, 2);
  15725. inst->type = param;
  15726. return 0;
  15727. }
  15728. static int Polycode_ShaderProgram(lua_State *L) {
  15729. luaL_checktype(L, 1, LUA_TSTRING);
  15730. String fileName = String(lua_tostring(L, 1));
  15731. ShaderProgram *inst = new ShaderProgram(fileName);
  15732. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15733. *userdataPtr = (PolyBase*)inst;
  15734. luaL_getmetatable(L, "Polycode.ShaderProgram");
  15735. lua_setmetatable(L, -2);
  15736. return 1;
  15737. }
  15738. static int Polycode_ShaderProgram_reloadProgram(lua_State *L) {
  15739. luaL_checktype(L, 1, LUA_TUSERDATA);
  15740. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  15741. inst->reloadProgram();
  15742. return 0;
  15743. }
  15744. static int Polycode_ShaderProgram_reloadResource(lua_State *L) {
  15745. luaL_checktype(L, 1, LUA_TUSERDATA);
  15746. ShaderProgram *inst = (ShaderProgram*) *((PolyBase**)lua_touserdata(L, 1));
  15747. inst->reloadResource();
  15748. return 0;
  15749. }
  15750. static int Polycode_delete_ShaderProgram(lua_State *L) {
  15751. luaL_checktype(L, 1, LUA_TUSERDATA);
  15752. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15753. delete ((ShaderProgram*) *inst);
  15754. *inst = NULL;
  15755. return 0;
  15756. }
  15757. static int Polycode_AttributeBinding_get_name(lua_State *L) {
  15758. luaL_checktype(L, 1, LUA_TUSERDATA);
  15759. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15760. lua_pushstring(L, inst->name.c_str());
  15761. return 1;
  15762. }
  15763. static int Polycode_AttributeBinding_get_vertexData(lua_State *L) {
  15764. luaL_checktype(L, 1, LUA_TUSERDATA);
  15765. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15766. if(!inst->vertexData) {
  15767. lua_pushnil(L);
  15768. } else {
  15769. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15770. *userdataPtr = (PolyBase*)inst->vertexData;
  15771. }
  15772. return 1;
  15773. }
  15774. static int Polycode_AttributeBinding_get_attribute(lua_State *L) {
  15775. luaL_checktype(L, 1, LUA_TUSERDATA);
  15776. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15777. if(!inst->attribute) {
  15778. lua_pushnil(L);
  15779. } else {
  15780. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15781. *userdataPtr = (PolyBase*)inst->attribute;
  15782. }
  15783. return 1;
  15784. }
  15785. static int Polycode_AttributeBinding_get_enabled(lua_State *L) {
  15786. luaL_checktype(L, 1, LUA_TUSERDATA);
  15787. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15788. lua_pushboolean(L, inst->enabled);
  15789. return 1;
  15790. }
  15791. static int Polycode_AttributeBinding_set_name(lua_State *L) {
  15792. luaL_checktype(L, 1, LUA_TUSERDATA);
  15793. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15794. String param = lua_tostring(L, 2);
  15795. inst->name = param;
  15796. return 0;
  15797. }
  15798. static int Polycode_AttributeBinding_set_vertexData(lua_State *L) {
  15799. luaL_checktype(L, 1, LUA_TUSERDATA);
  15800. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15801. luaL_checktype(L, 2, LUA_TUSERDATA);
  15802. VertexDataArray* *argInst = (VertexDataArray**) *((PolyBase**)lua_touserdata(L, 2));
  15803. inst->vertexData = *argInst;
  15804. return 0;
  15805. }
  15806. static int Polycode_AttributeBinding_set_attribute(lua_State *L) {
  15807. luaL_checktype(L, 1, LUA_TUSERDATA);
  15808. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15809. luaL_checktype(L, 2, LUA_TUSERDATA);
  15810. ProgramAttribute* *argInst = (ProgramAttribute**) *((PolyBase**)lua_touserdata(L, 2));
  15811. inst->attribute = *argInst;
  15812. return 0;
  15813. }
  15814. static int Polycode_AttributeBinding_set_enabled(lua_State *L) {
  15815. luaL_checktype(L, 1, LUA_TUSERDATA);
  15816. AttributeBinding *inst = (AttributeBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15817. bool param = lua_toboolean(L, 2) != 0;
  15818. inst->enabled = param;
  15819. return 0;
  15820. }
  15821. static int Polycode_AttributeBinding(lua_State *L) {
  15822. AttributeBinding *inst = new AttributeBinding();
  15823. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15824. *userdataPtr = (PolyBase*)inst;
  15825. luaL_getmetatable(L, "Polycode.AttributeBinding");
  15826. lua_setmetatable(L, -2);
  15827. return 1;
  15828. }
  15829. static int Polycode_delete_AttributeBinding(lua_State *L) {
  15830. luaL_checktype(L, 1, LUA_TUSERDATA);
  15831. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  15832. delete ((AttributeBinding*) *inst);
  15833. *inst = NULL;
  15834. return 0;
  15835. }
  15836. static int Polycode_ShaderBinding_get_resetAttributes(lua_State *L) {
  15837. luaL_checktype(L, 1, LUA_TUSERDATA);
  15838. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15839. lua_pushboolean(L, inst->resetAttributes);
  15840. return 1;
  15841. }
  15842. static int Polycode_ShaderBinding_get_targetShader(lua_State *L) {
  15843. luaL_checktype(L, 1, LUA_TUSERDATA);
  15844. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15845. if(!inst->targetShader) {
  15846. lua_pushnil(L);
  15847. } else {
  15848. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15849. *userdataPtr = (PolyBase*)inst->targetShader;
  15850. }
  15851. return 1;
  15852. }
  15853. static int Polycode_ShaderBinding_get_accessMutex(lua_State *L) {
  15854. luaL_checktype(L, 1, LUA_TUSERDATA);
  15855. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15856. if(!inst->accessMutex) {
  15857. lua_pushnil(L);
  15858. } else {
  15859. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15860. *userdataPtr = (PolyBase*)inst->accessMutex;
  15861. }
  15862. return 1;
  15863. }
  15864. static int Polycode_ShaderBinding_set_resetAttributes(lua_State *L) {
  15865. luaL_checktype(L, 1, LUA_TUSERDATA);
  15866. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15867. bool param = lua_toboolean(L, 2) != 0;
  15868. inst->resetAttributes = param;
  15869. return 0;
  15870. }
  15871. static int Polycode_ShaderBinding_set_targetShader(lua_State *L) {
  15872. luaL_checktype(L, 1, LUA_TUSERDATA);
  15873. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15874. luaL_checktype(L, 2, LUA_TUSERDATA);
  15875. Shader* *argInst = (Shader**) *((PolyBase**)lua_touserdata(L, 2));
  15876. inst->targetShader = *argInst;
  15877. return 0;
  15878. }
  15879. static int Polycode_ShaderBinding_set_accessMutex(lua_State *L) {
  15880. luaL_checktype(L, 1, LUA_TUSERDATA);
  15881. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15882. luaL_checktype(L, 2, LUA_TUSERDATA);
  15883. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  15884. inst->accessMutex = *argInst;
  15885. return 0;
  15886. }
  15887. static int Polycode_ShaderBinding(lua_State *L) {
  15888. ShaderBinding *inst = new ShaderBinding();
  15889. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15890. *userdataPtr = (PolyBase*)inst;
  15891. luaL_getmetatable(L, "Polycode.ShaderBinding");
  15892. lua_setmetatable(L, -2);
  15893. return 1;
  15894. }
  15895. static int Polycode_ShaderBinding_copyTo(lua_State *L) {
  15896. luaL_checktype(L, 1, LUA_TUSERDATA);
  15897. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15898. luaL_checktype(L, 2, LUA_TUSERDATA);
  15899. ShaderBinding* targetBinding = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 2));
  15900. inst->copyTo(targetBinding);
  15901. return 0;
  15902. }
  15903. static int Polycode_ShaderBinding_addParam(lua_State *L) {
  15904. luaL_checktype(L, 1, LUA_TUSERDATA);
  15905. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15906. luaL_checktype(L, 2, LUA_TNUMBER);
  15907. int type = lua_tointeger(L, 2);
  15908. luaL_checktype(L, 3, LUA_TSTRING);
  15909. String name = String(lua_tostring(L, 3));
  15910. PolyBase *ptrRetVal = (PolyBase*)inst->addParam(type, name);
  15911. if(ptrRetVal == NULL) {
  15912. lua_pushnil(L);
  15913. } else {
  15914. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15915. *userdataPtr = ptrRetVal;
  15916. }
  15917. return 1;
  15918. }
  15919. static int Polycode_ShaderBinding_addParamPointer(lua_State *L) {
  15920. luaL_checktype(L, 1, LUA_TUSERDATA);
  15921. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15922. luaL_checktype(L, 2, LUA_TNUMBER);
  15923. int type = lua_tointeger(L, 2);
  15924. luaL_checktype(L, 3, LUA_TSTRING);
  15925. String name = String(lua_tostring(L, 3));
  15926. luaL_checktype(L, 4, LUA_TUSERDATA);
  15927. void* ptr = (void*) *((PolyBase**)lua_touserdata(L, 4));
  15928. PolyBase *ptrRetVal = (PolyBase*)inst->addParamPointer(type, name, ptr);
  15929. if(ptrRetVal == NULL) {
  15930. lua_pushnil(L);
  15931. } else {
  15932. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15933. *userdataPtr = ptrRetVal;
  15934. }
  15935. return 1;
  15936. }
  15937. static int Polycode_ShaderBinding_getNumLocalParams(lua_State *L) {
  15938. luaL_checktype(L, 1, LUA_TUSERDATA);
  15939. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15940. lua_pushinteger(L, inst->getNumLocalParams());
  15941. return 1;
  15942. }
  15943. static int Polycode_ShaderBinding_getLocalParam(lua_State *L) {
  15944. luaL_checktype(L, 1, LUA_TUSERDATA);
  15945. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15946. luaL_checktype(L, 2, LUA_TNUMBER);
  15947. int index = lua_tointeger(L, 2);
  15948. PolyBase *ptrRetVal = (PolyBase*)inst->getLocalParam(index);
  15949. if(ptrRetVal == NULL) {
  15950. lua_pushnil(L);
  15951. } else {
  15952. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15953. *userdataPtr = ptrRetVal;
  15954. }
  15955. return 1;
  15956. }
  15957. static int Polycode_ShaderBinding_getLocalParamByName(lua_State *L) {
  15958. luaL_checktype(L, 1, LUA_TUSERDATA);
  15959. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15960. luaL_checktype(L, 2, LUA_TSTRING);
  15961. String name = String(lua_tostring(L, 2));
  15962. PolyBase *ptrRetVal = (PolyBase*)inst->getLocalParamByName(name);
  15963. if(ptrRetVal == NULL) {
  15964. lua_pushnil(L);
  15965. } else {
  15966. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15967. *userdataPtr = ptrRetVal;
  15968. }
  15969. return 1;
  15970. }
  15971. static int Polycode_ShaderBinding_removeParam(lua_State *L) {
  15972. luaL_checktype(L, 1, LUA_TUSERDATA);
  15973. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15974. luaL_checktype(L, 2, LUA_TSTRING);
  15975. String name = String(lua_tostring(L, 2));
  15976. inst->removeParam(name);
  15977. return 0;
  15978. }
  15979. static int Polycode_ShaderBinding_loadTextureForParam(lua_State *L) {
  15980. luaL_checktype(L, 1, LUA_TUSERDATA);
  15981. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15982. luaL_checktype(L, 2, LUA_TSTRING);
  15983. String paramName = String(lua_tostring(L, 2));
  15984. luaL_checktype(L, 3, LUA_TSTRING);
  15985. String fileName = String(lua_tostring(L, 3));
  15986. PolyBase *ptrRetVal = (PolyBase*)inst->loadTextureForParam(paramName, fileName);
  15987. if(ptrRetVal == NULL) {
  15988. lua_pushnil(L);
  15989. } else {
  15990. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  15991. *userdataPtr = ptrRetVal;
  15992. }
  15993. return 1;
  15994. }
  15995. static int Polycode_ShaderBinding_setTextureForParam(lua_State *L) {
  15996. luaL_checktype(L, 1, LUA_TUSERDATA);
  15997. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  15998. luaL_checktype(L, 2, LUA_TSTRING);
  15999. String paramName = String(lua_tostring(L, 2));
  16000. luaL_checktype(L, 3, LUA_TUSERDATA);
  16001. Texture* texture = (Texture*) *((PolyBase**)lua_touserdata(L, 3));
  16002. inst->setTextureForParam(paramName, texture);
  16003. return 0;
  16004. }
  16005. static int Polycode_ShaderBinding_setCubemapForParam(lua_State *L) {
  16006. luaL_checktype(L, 1, LUA_TUSERDATA);
  16007. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16008. luaL_checktype(L, 2, LUA_TSTRING);
  16009. String paramName = String(lua_tostring(L, 2));
  16010. luaL_checktype(L, 3, LUA_TUSERDATA);
  16011. Cubemap* cubemap = (Cubemap*) *((PolyBase**)lua_touserdata(L, 3));
  16012. inst->setCubemapForParam(paramName, cubemap);
  16013. return 0;
  16014. }
  16015. static int Polycode_ShaderBinding_getNumAttributeBindings(lua_State *L) {
  16016. luaL_checktype(L, 1, LUA_TUSERDATA);
  16017. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16018. lua_pushinteger(L, inst->getNumAttributeBindings());
  16019. return 1;
  16020. }
  16021. static int Polycode_ShaderBinding_getAttributeBinding(lua_State *L) {
  16022. luaL_checktype(L, 1, LUA_TUSERDATA);
  16023. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16024. luaL_checktype(L, 2, LUA_TNUMBER);
  16025. int index = lua_tointeger(L, 2);
  16026. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBinding(index);
  16027. if(ptrRetVal == NULL) {
  16028. lua_pushnil(L);
  16029. } else {
  16030. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16031. *userdataPtr = ptrRetVal;
  16032. }
  16033. return 1;
  16034. }
  16035. static int Polycode_ShaderBinding_addAttributeBinding(lua_State *L) {
  16036. luaL_checktype(L, 1, LUA_TUSERDATA);
  16037. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16038. luaL_checktype(L, 2, LUA_TSTRING);
  16039. String name = String(lua_tostring(L, 2));
  16040. luaL_checktype(L, 3, LUA_TUSERDATA);
  16041. VertexDataArray* dataArray = (VertexDataArray*) *((PolyBase**)lua_touserdata(L, 3));
  16042. PolyBase *ptrRetVal = (PolyBase*)inst->addAttributeBinding(name, dataArray);
  16043. if(ptrRetVal == NULL) {
  16044. lua_pushnil(L);
  16045. } else {
  16046. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16047. *userdataPtr = ptrRetVal;
  16048. }
  16049. return 1;
  16050. }
  16051. static int Polycode_ShaderBinding_getAttributeBindingByName(lua_State *L) {
  16052. luaL_checktype(L, 1, LUA_TUSERDATA);
  16053. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16054. luaL_checktype(L, 2, LUA_TSTRING);
  16055. String name = String(lua_tostring(L, 2));
  16056. PolyBase *ptrRetVal = (PolyBase*)inst->getAttributeBindingByName(name);
  16057. if(ptrRetVal == NULL) {
  16058. lua_pushnil(L);
  16059. } else {
  16060. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16061. *userdataPtr = ptrRetVal;
  16062. }
  16063. return 1;
  16064. }
  16065. static int Polycode_ShaderBinding_addRenderTargetBinding(lua_State *L) {
  16066. luaL_checktype(L, 1, LUA_TUSERDATA);
  16067. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16068. luaL_checktype(L, 2, LUA_TUSERDATA);
  16069. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  16070. inst->addRenderTargetBinding(binding);
  16071. return 0;
  16072. }
  16073. static int Polycode_ShaderBinding_removeRenderTargetBinding(lua_State *L) {
  16074. luaL_checktype(L, 1, LUA_TUSERDATA);
  16075. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16076. luaL_checktype(L, 2, LUA_TUSERDATA);
  16077. RenderTargetBinding* binding = (RenderTargetBinding*) *((PolyBase**)lua_touserdata(L, 2));
  16078. inst->removeRenderTargetBinding(binding);
  16079. return 0;
  16080. }
  16081. static int Polycode_ShaderBinding_getNumRenderTargetBindings(lua_State *L) {
  16082. luaL_checktype(L, 1, LUA_TUSERDATA);
  16083. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16084. lua_pushinteger(L, inst->getNumRenderTargetBindings());
  16085. return 1;
  16086. }
  16087. static int Polycode_ShaderBinding_getRenderTargetBinding(lua_State *L) {
  16088. luaL_checktype(L, 1, LUA_TUSERDATA);
  16089. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16090. luaL_checktype(L, 2, LUA_TNUMBER);
  16091. int index = lua_tointeger(L, 2);
  16092. PolyBase *ptrRetVal = (PolyBase*)inst->getRenderTargetBinding(index);
  16093. if(ptrRetVal == NULL) {
  16094. lua_pushnil(L);
  16095. } else {
  16096. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16097. *userdataPtr = ptrRetVal;
  16098. }
  16099. return 1;
  16100. }
  16101. static int Polycode_ShaderBinding_getNumInTargetBindings(lua_State *L) {
  16102. luaL_checktype(L, 1, LUA_TUSERDATA);
  16103. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16104. lua_pushinteger(L, inst->getNumInTargetBindings());
  16105. return 1;
  16106. }
  16107. static int Polycode_ShaderBinding_getInTargetBinding(lua_State *L) {
  16108. luaL_checktype(L, 1, LUA_TUSERDATA);
  16109. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16110. luaL_checktype(L, 2, LUA_TNUMBER);
  16111. int index = lua_tointeger(L, 2);
  16112. PolyBase *ptrRetVal = (PolyBase*)inst->getInTargetBinding(index);
  16113. if(ptrRetVal == NULL) {
  16114. lua_pushnil(L);
  16115. } else {
  16116. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16117. *userdataPtr = ptrRetVal;
  16118. }
  16119. return 1;
  16120. }
  16121. static int Polycode_ShaderBinding_getNumColorTargetBindings(lua_State *L) {
  16122. luaL_checktype(L, 1, LUA_TUSERDATA);
  16123. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16124. lua_pushinteger(L, inst->getNumColorTargetBindings());
  16125. return 1;
  16126. }
  16127. static int Polycode_ShaderBinding_getColorTargetBinding(lua_State *L) {
  16128. luaL_checktype(L, 1, LUA_TUSERDATA);
  16129. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16130. luaL_checktype(L, 2, LUA_TNUMBER);
  16131. int index = lua_tointeger(L, 2);
  16132. PolyBase *ptrRetVal = (PolyBase*)inst->getColorTargetBinding(index);
  16133. if(ptrRetVal == NULL) {
  16134. lua_pushnil(L);
  16135. } else {
  16136. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16137. *userdataPtr = ptrRetVal;
  16138. }
  16139. return 1;
  16140. }
  16141. static int Polycode_ShaderBinding_getNumDepthTargetBindings(lua_State *L) {
  16142. luaL_checktype(L, 1, LUA_TUSERDATA);
  16143. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16144. lua_pushinteger(L, inst->getNumDepthTargetBindings());
  16145. return 1;
  16146. }
  16147. static int Polycode_ShaderBinding_getDepthTargetBinding(lua_State *L) {
  16148. luaL_checktype(L, 1, LUA_TUSERDATA);
  16149. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16150. luaL_checktype(L, 2, LUA_TNUMBER);
  16151. int index = lua_tointeger(L, 2);
  16152. PolyBase *ptrRetVal = (PolyBase*)inst->getDepthTargetBinding(index);
  16153. if(ptrRetVal == NULL) {
  16154. lua_pushnil(L);
  16155. } else {
  16156. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16157. *userdataPtr = ptrRetVal;
  16158. }
  16159. return 1;
  16160. }
  16161. static int Polycode_ShaderBinding_getNumOutTargetBindings(lua_State *L) {
  16162. luaL_checktype(L, 1, LUA_TUSERDATA);
  16163. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16164. lua_pushinteger(L, inst->getNumOutTargetBindings());
  16165. return 1;
  16166. }
  16167. static int Polycode_ShaderBinding_getOutTargetBinding(lua_State *L) {
  16168. luaL_checktype(L, 1, LUA_TUSERDATA);
  16169. ShaderBinding *inst = (ShaderBinding*) *((PolyBase**)lua_touserdata(L, 1));
  16170. luaL_checktype(L, 2, LUA_TNUMBER);
  16171. int index = lua_tointeger(L, 2);
  16172. PolyBase *ptrRetVal = (PolyBase*)inst->getOutTargetBinding(index);
  16173. if(ptrRetVal == NULL) {
  16174. lua_pushnil(L);
  16175. } else {
  16176. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16177. *userdataPtr = ptrRetVal;
  16178. }
  16179. return 1;
  16180. }
  16181. static int Polycode_delete_ShaderBinding(lua_State *L) {
  16182. luaL_checktype(L, 1, LUA_TUSERDATA);
  16183. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16184. delete ((ShaderBinding*) *inst);
  16185. *inst = NULL;
  16186. return 0;
  16187. }
  16188. static int Polycode_SkeletonAnimation(lua_State *L) {
  16189. luaL_checktype(L, 1, LUA_TSTRING);
  16190. String name = String(lua_tostring(L, 1));
  16191. luaL_checktype(L, 2, LUA_TNUMBER);
  16192. Number duration = lua_tonumber(L, 2);
  16193. SkeletonAnimation *inst = new SkeletonAnimation(name, duration);
  16194. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16195. *userdataPtr = (PolyBase*)inst;
  16196. luaL_getmetatable(L, "Polycode.SkeletonAnimation");
  16197. lua_setmetatable(L, -2);
  16198. return 1;
  16199. }
  16200. static int Polycode_SkeletonAnimation_addBoneTrack(lua_State *L) {
  16201. luaL_checktype(L, 1, LUA_TUSERDATA);
  16202. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16203. luaL_checktype(L, 2, LUA_TUSERDATA);
  16204. BoneTrack* boneTrack = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 2));
  16205. inst->addBoneTrack(boneTrack);
  16206. return 0;
  16207. }
  16208. static int Polycode_SkeletonAnimation_getName(lua_State *L) {
  16209. luaL_checktype(L, 1, LUA_TUSERDATA);
  16210. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16211. lua_pushstring(L, inst->getName().c_str());
  16212. return 1;
  16213. }
  16214. static int Polycode_SkeletonAnimation_Play(lua_State *L) {
  16215. luaL_checktype(L, 1, LUA_TUSERDATA);
  16216. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16217. luaL_checktype(L, 2, LUA_TBOOLEAN);
  16218. bool once = lua_toboolean(L, 2) != 0;
  16219. inst->Play(once);
  16220. return 0;
  16221. }
  16222. static int Polycode_SkeletonAnimation_Stop(lua_State *L) {
  16223. luaL_checktype(L, 1, LUA_TUSERDATA);
  16224. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16225. inst->Stop();
  16226. return 0;
  16227. }
  16228. static int Polycode_SkeletonAnimation_Reset(lua_State *L) {
  16229. luaL_checktype(L, 1, LUA_TUSERDATA);
  16230. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16231. inst->Reset();
  16232. return 0;
  16233. }
  16234. static int Polycode_SkeletonAnimation_Update(lua_State *L) {
  16235. luaL_checktype(L, 1, LUA_TUSERDATA);
  16236. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16237. inst->Update();
  16238. return 0;
  16239. }
  16240. static int Polycode_SkeletonAnimation_setSpeed(lua_State *L) {
  16241. luaL_checktype(L, 1, LUA_TUSERDATA);
  16242. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16243. luaL_checktype(L, 2, LUA_TNUMBER);
  16244. Number speed = lua_tonumber(L, 2);
  16245. inst->setSpeed(speed);
  16246. return 0;
  16247. }
  16248. static int Polycode_SkeletonAnimation_setWeight(lua_State *L) {
  16249. luaL_checktype(L, 1, LUA_TUSERDATA);
  16250. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16251. luaL_checktype(L, 2, LUA_TNUMBER);
  16252. Number newWeight = lua_tonumber(L, 2);
  16253. inst->setWeight(newWeight);
  16254. return 0;
  16255. }
  16256. static int Polycode_SkeletonAnimation_getWeight(lua_State *L) {
  16257. luaL_checktype(L, 1, LUA_TUSERDATA);
  16258. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16259. lua_pushnumber(L, inst->getWeight());
  16260. return 1;
  16261. }
  16262. static int Polycode_SkeletonAnimation_isPlaying(lua_State *L) {
  16263. luaL_checktype(L, 1, LUA_TUSERDATA);
  16264. SkeletonAnimation *inst = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 1));
  16265. lua_pushboolean(L, inst->isPlaying());
  16266. return 1;
  16267. }
  16268. static int Polycode_delete_SkeletonAnimation(lua_State *L) {
  16269. luaL_checktype(L, 1, LUA_TUSERDATA);
  16270. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16271. delete ((SkeletonAnimation*) *inst);
  16272. *inst = NULL;
  16273. return 0;
  16274. }
  16275. static int Polycode_Skeleton(lua_State *L) {
  16276. luaL_checktype(L, 1, LUA_TSTRING);
  16277. String fileName = String(lua_tostring(L, 1));
  16278. Skeleton *inst = new Skeleton(fileName);
  16279. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16280. *userdataPtr = (PolyBase*)inst;
  16281. luaL_getmetatable(L, "Polycode.Skeleton");
  16282. lua_setmetatable(L, -2);
  16283. return 1;
  16284. }
  16285. static int Polycode_Skeleton_BlankSkeleton(lua_State *L) {
  16286. PolyBase *ptrRetVal = (PolyBase*)Skeleton::BlankSkeleton();
  16287. if(ptrRetVal == NULL) {
  16288. lua_pushnil(L);
  16289. } else {
  16290. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16291. *userdataPtr = ptrRetVal;
  16292. }
  16293. return 1;
  16294. }
  16295. static int Polycode_Skeleton_loadSkeleton(lua_State *L) {
  16296. luaL_checktype(L, 1, LUA_TUSERDATA);
  16297. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16298. luaL_checktype(L, 2, LUA_TSTRING);
  16299. String fileName = String(lua_tostring(L, 2));
  16300. inst->loadSkeleton(fileName);
  16301. return 0;
  16302. }
  16303. static int Polycode_Skeleton_playAnimationByName(lua_State *L) {
  16304. luaL_checktype(L, 1, LUA_TUSERDATA);
  16305. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16306. luaL_checktype(L, 2, LUA_TSTRING);
  16307. String animName = String(lua_tostring(L, 2));
  16308. Number weight;
  16309. if(lua_isnumber(L, 3)) {
  16310. weight = lua_tonumber(L, 3);
  16311. } else {
  16312. weight = 1.0;
  16313. }
  16314. bool once;
  16315. if(lua_isboolean(L, 4)) {
  16316. once = lua_toboolean(L, 4) != 0;
  16317. } else {
  16318. once = false;
  16319. }
  16320. bool restartIfPlaying;
  16321. if(lua_isboolean(L, 5)) {
  16322. restartIfPlaying = lua_toboolean(L, 5) != 0;
  16323. } else {
  16324. restartIfPlaying = false;
  16325. }
  16326. inst->playAnimationByName(animName, weight, once, restartIfPlaying);
  16327. return 0;
  16328. }
  16329. static int Polycode_Skeleton_playAnimation(lua_State *L) {
  16330. luaL_checktype(L, 1, LUA_TUSERDATA);
  16331. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16332. luaL_checktype(L, 2, LUA_TUSERDATA);
  16333. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  16334. Number weight;
  16335. if(lua_isnumber(L, 3)) {
  16336. weight = lua_tonumber(L, 3);
  16337. } else {
  16338. weight = 1.0;
  16339. }
  16340. bool once;
  16341. if(lua_isboolean(L, 4)) {
  16342. once = lua_toboolean(L, 4) != 0;
  16343. } else {
  16344. once = false;
  16345. }
  16346. bool restartIfPlaying;
  16347. if(lua_isboolean(L, 5)) {
  16348. restartIfPlaying = lua_toboolean(L, 5) != 0;
  16349. } else {
  16350. restartIfPlaying = false;
  16351. }
  16352. inst->playAnimation(animation, weight, once, restartIfPlaying);
  16353. return 0;
  16354. }
  16355. static int Polycode_Skeleton_setBaseAnimationByName(lua_State *L) {
  16356. luaL_checktype(L, 1, LUA_TUSERDATA);
  16357. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16358. luaL_checktype(L, 2, LUA_TSTRING);
  16359. String animName = String(lua_tostring(L, 2));
  16360. inst->setBaseAnimationByName(animName);
  16361. return 0;
  16362. }
  16363. static int Polycode_Skeleton_setBaseAnimation(lua_State *L) {
  16364. luaL_checktype(L, 1, LUA_TUSERDATA);
  16365. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16366. luaL_checktype(L, 2, LUA_TUSERDATA);
  16367. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  16368. inst->setBaseAnimation(animation);
  16369. return 0;
  16370. }
  16371. static int Polycode_Skeleton_stopAllAnimations(lua_State *L) {
  16372. luaL_checktype(L, 1, LUA_TUSERDATA);
  16373. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16374. inst->stopAllAnimations();
  16375. return 0;
  16376. }
  16377. static int Polycode_Skeleton_getBaseAnimation(lua_State *L) {
  16378. luaL_checktype(L, 1, LUA_TUSERDATA);
  16379. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16380. PolyBase *ptrRetVal = (PolyBase*)inst->getBaseAnimation();
  16381. if(ptrRetVal == NULL) {
  16382. lua_pushnil(L);
  16383. } else {
  16384. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16385. *userdataPtr = ptrRetVal;
  16386. }
  16387. return 1;
  16388. }
  16389. static int Polycode_Skeleton_addAnimation(lua_State *L) {
  16390. luaL_checktype(L, 1, LUA_TUSERDATA);
  16391. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16392. luaL_checktype(L, 2, LUA_TSTRING);
  16393. String name = String(lua_tostring(L, 2));
  16394. luaL_checktype(L, 3, LUA_TSTRING);
  16395. String fileName = String(lua_tostring(L, 3));
  16396. inst->addAnimation(name, fileName);
  16397. return 0;
  16398. }
  16399. static int Polycode_Skeleton_getAnimation(lua_State *L) {
  16400. luaL_checktype(L, 1, LUA_TUSERDATA);
  16401. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16402. luaL_checktype(L, 2, LUA_TSTRING);
  16403. String name = String(lua_tostring(L, 2));
  16404. PolyBase *ptrRetVal = (PolyBase*)inst->getAnimation(name);
  16405. if(ptrRetVal == NULL) {
  16406. lua_pushnil(L);
  16407. } else {
  16408. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16409. *userdataPtr = ptrRetVal;
  16410. }
  16411. return 1;
  16412. }
  16413. static int Polycode_Skeleton_stopAnimationByName(lua_State *L) {
  16414. luaL_checktype(L, 1, LUA_TUSERDATA);
  16415. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16416. luaL_checktype(L, 2, LUA_TSTRING);
  16417. String name = String(lua_tostring(L, 2));
  16418. inst->stopAnimationByName(name);
  16419. return 0;
  16420. }
  16421. static int Polycode_Skeleton_stopAnimation(lua_State *L) {
  16422. luaL_checktype(L, 1, LUA_TUSERDATA);
  16423. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16424. luaL_checktype(L, 2, LUA_TUSERDATA);
  16425. SkeletonAnimation* animation = (SkeletonAnimation*) *((PolyBase**)lua_touserdata(L, 2));
  16426. inst->stopAnimation(animation);
  16427. return 0;
  16428. }
  16429. static int Polycode_Skeleton_Update(lua_State *L) {
  16430. luaL_checktype(L, 1, LUA_TUSERDATA);
  16431. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16432. inst->Update();
  16433. return 0;
  16434. }
  16435. static int Polycode_Skeleton_getBoneByName(lua_State *L) {
  16436. luaL_checktype(L, 1, LUA_TUSERDATA);
  16437. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16438. luaL_checktype(L, 2, LUA_TSTRING);
  16439. String name = String(lua_tostring(L, 2));
  16440. PolyBase *ptrRetVal = (PolyBase*)inst->getBoneByName(name);
  16441. if(ptrRetVal == NULL) {
  16442. lua_pushnil(L);
  16443. } else {
  16444. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16445. *userdataPtr = ptrRetVal;
  16446. }
  16447. return 1;
  16448. }
  16449. static int Polycode_Skeleton_bonesVisible(lua_State *L) {
  16450. luaL_checktype(L, 1, LUA_TUSERDATA);
  16451. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16452. luaL_checktype(L, 2, LUA_TBOOLEAN);
  16453. bool val = lua_toboolean(L, 2) != 0;
  16454. inst->bonesVisible(val);
  16455. return 0;
  16456. }
  16457. static int Polycode_Skeleton_getNumBones(lua_State *L) {
  16458. luaL_checktype(L, 1, LUA_TUSERDATA);
  16459. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16460. lua_pushinteger(L, inst->getNumBones());
  16461. return 1;
  16462. }
  16463. static int Polycode_Skeleton_getBone(lua_State *L) {
  16464. luaL_checktype(L, 1, LUA_TUSERDATA);
  16465. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16466. luaL_checktype(L, 2, LUA_TNUMBER);
  16467. int index = lua_tointeger(L, 2);
  16468. PolyBase *ptrRetVal = (PolyBase*)inst->getBone(index);
  16469. if(ptrRetVal == NULL) {
  16470. lua_pushnil(L);
  16471. } else {
  16472. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16473. *userdataPtr = ptrRetVal;
  16474. }
  16475. return 1;
  16476. }
  16477. static int Polycode_Skeleton_addBone(lua_State *L) {
  16478. luaL_checktype(L, 1, LUA_TUSERDATA);
  16479. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16480. luaL_checktype(L, 2, LUA_TUSERDATA);
  16481. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  16482. inst->addBone(bone);
  16483. return 0;
  16484. }
  16485. static int Polycode_Skeleton_removeBone(lua_State *L) {
  16486. luaL_checktype(L, 1, LUA_TUSERDATA);
  16487. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16488. luaL_checktype(L, 2, LUA_TUSERDATA);
  16489. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  16490. inst->removeBone(bone);
  16491. return 0;
  16492. }
  16493. static int Polycode_Skeleton_getBoneIndexByBone(lua_State *L) {
  16494. luaL_checktype(L, 1, LUA_TUSERDATA);
  16495. Skeleton *inst = (Skeleton*) *((PolyBase**)lua_touserdata(L, 1));
  16496. luaL_checktype(L, 2, LUA_TUSERDATA);
  16497. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 2));
  16498. lua_pushinteger(L, inst->getBoneIndexByBone(bone));
  16499. return 1;
  16500. }
  16501. static int Polycode_delete_Skeleton(lua_State *L) {
  16502. luaL_checktype(L, 1, LUA_TUSERDATA);
  16503. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16504. delete ((Skeleton*) *inst);
  16505. *inst = NULL;
  16506. return 0;
  16507. }
  16508. static int Polycode_BoneTrack_get_scaleX(lua_State *L) {
  16509. luaL_checktype(L, 1, LUA_TUSERDATA);
  16510. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16511. if(!inst->scaleX) {
  16512. lua_pushnil(L);
  16513. } else {
  16514. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16515. *userdataPtr = (PolyBase*)inst->scaleX;
  16516. }
  16517. return 1;
  16518. }
  16519. static int Polycode_BoneTrack_get_scaleY(lua_State *L) {
  16520. luaL_checktype(L, 1, LUA_TUSERDATA);
  16521. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16522. if(!inst->scaleY) {
  16523. lua_pushnil(L);
  16524. } else {
  16525. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16526. *userdataPtr = (PolyBase*)inst->scaleY;
  16527. }
  16528. return 1;
  16529. }
  16530. static int Polycode_BoneTrack_get_scaleZ(lua_State *L) {
  16531. luaL_checktype(L, 1, LUA_TUSERDATA);
  16532. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16533. if(!inst->scaleZ) {
  16534. lua_pushnil(L);
  16535. } else {
  16536. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16537. *userdataPtr = (PolyBase*)inst->scaleZ;
  16538. }
  16539. return 1;
  16540. }
  16541. static int Polycode_BoneTrack_get_QuatW(lua_State *L) {
  16542. luaL_checktype(L, 1, LUA_TUSERDATA);
  16543. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16544. if(!inst->QuatW) {
  16545. lua_pushnil(L);
  16546. } else {
  16547. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16548. *userdataPtr = (PolyBase*)inst->QuatW;
  16549. }
  16550. return 1;
  16551. }
  16552. static int Polycode_BoneTrack_get_QuatX(lua_State *L) {
  16553. luaL_checktype(L, 1, LUA_TUSERDATA);
  16554. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16555. if(!inst->QuatX) {
  16556. lua_pushnil(L);
  16557. } else {
  16558. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16559. *userdataPtr = (PolyBase*)inst->QuatX;
  16560. }
  16561. return 1;
  16562. }
  16563. static int Polycode_BoneTrack_get_QuatY(lua_State *L) {
  16564. luaL_checktype(L, 1, LUA_TUSERDATA);
  16565. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16566. if(!inst->QuatY) {
  16567. lua_pushnil(L);
  16568. } else {
  16569. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16570. *userdataPtr = (PolyBase*)inst->QuatY;
  16571. }
  16572. return 1;
  16573. }
  16574. static int Polycode_BoneTrack_get_QuatZ(lua_State *L) {
  16575. luaL_checktype(L, 1, LUA_TUSERDATA);
  16576. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16577. if(!inst->QuatZ) {
  16578. lua_pushnil(L);
  16579. } else {
  16580. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16581. *userdataPtr = (PolyBase*)inst->QuatZ;
  16582. }
  16583. return 1;
  16584. }
  16585. static int Polycode_BoneTrack_get_LocX(lua_State *L) {
  16586. luaL_checktype(L, 1, LUA_TUSERDATA);
  16587. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16588. if(!inst->LocX) {
  16589. lua_pushnil(L);
  16590. } else {
  16591. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16592. *userdataPtr = (PolyBase*)inst->LocX;
  16593. }
  16594. return 1;
  16595. }
  16596. static int Polycode_BoneTrack_get_LocY(lua_State *L) {
  16597. luaL_checktype(L, 1, LUA_TUSERDATA);
  16598. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16599. if(!inst->LocY) {
  16600. lua_pushnil(L);
  16601. } else {
  16602. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16603. *userdataPtr = (PolyBase*)inst->LocY;
  16604. }
  16605. return 1;
  16606. }
  16607. static int Polycode_BoneTrack_get_LocZ(lua_State *L) {
  16608. luaL_checktype(L, 1, LUA_TUSERDATA);
  16609. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16610. if(!inst->LocZ) {
  16611. lua_pushnil(L);
  16612. } else {
  16613. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16614. *userdataPtr = (PolyBase*)inst->LocZ;
  16615. }
  16616. return 1;
  16617. }
  16618. static int Polycode_BoneTrack_get_position(lua_State *L) {
  16619. luaL_checktype(L, 1, LUA_TUSERDATA);
  16620. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16621. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16622. *userdataPtr = (PolyBase*)&inst->position;
  16623. return 1;
  16624. }
  16625. static int Polycode_BoneTrack_get_scale(lua_State *L) {
  16626. luaL_checktype(L, 1, LUA_TUSERDATA);
  16627. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16628. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16629. *userdataPtr = (PolyBase*)&inst->scale;
  16630. return 1;
  16631. }
  16632. static int Polycode_BoneTrack_get_boneQuat(lua_State *L) {
  16633. luaL_checktype(L, 1, LUA_TUSERDATA);
  16634. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16635. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16636. *userdataPtr = (PolyBase*)&inst->boneQuat;
  16637. return 1;
  16638. }
  16639. static int Polycode_BoneTrack_get_quatCurve(lua_State *L) {
  16640. luaL_checktype(L, 1, LUA_TUSERDATA);
  16641. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16642. if(!inst->quatCurve) {
  16643. lua_pushnil(L);
  16644. } else {
  16645. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16646. *userdataPtr = (PolyBase*)inst->quatCurve;
  16647. }
  16648. return 1;
  16649. }
  16650. static int Polycode_BoneTrack_get_weight(lua_State *L) {
  16651. luaL_checktype(L, 1, LUA_TUSERDATA);
  16652. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16653. lua_pushnumber(L, inst->weight);
  16654. return 1;
  16655. }
  16656. static int Polycode_BoneTrack_set_scaleX(lua_State *L) {
  16657. luaL_checktype(L, 1, LUA_TUSERDATA);
  16658. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16659. luaL_checktype(L, 2, LUA_TUSERDATA);
  16660. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16661. inst->scaleX = *argInst;
  16662. return 0;
  16663. }
  16664. static int Polycode_BoneTrack_set_scaleY(lua_State *L) {
  16665. luaL_checktype(L, 1, LUA_TUSERDATA);
  16666. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16667. luaL_checktype(L, 2, LUA_TUSERDATA);
  16668. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16669. inst->scaleY = *argInst;
  16670. return 0;
  16671. }
  16672. static int Polycode_BoneTrack_set_scaleZ(lua_State *L) {
  16673. luaL_checktype(L, 1, LUA_TUSERDATA);
  16674. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16675. luaL_checktype(L, 2, LUA_TUSERDATA);
  16676. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16677. inst->scaleZ = *argInst;
  16678. return 0;
  16679. }
  16680. static int Polycode_BoneTrack_set_QuatW(lua_State *L) {
  16681. luaL_checktype(L, 1, LUA_TUSERDATA);
  16682. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16683. luaL_checktype(L, 2, LUA_TUSERDATA);
  16684. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16685. inst->QuatW = *argInst;
  16686. return 0;
  16687. }
  16688. static int Polycode_BoneTrack_set_QuatX(lua_State *L) {
  16689. luaL_checktype(L, 1, LUA_TUSERDATA);
  16690. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16691. luaL_checktype(L, 2, LUA_TUSERDATA);
  16692. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16693. inst->QuatX = *argInst;
  16694. return 0;
  16695. }
  16696. static int Polycode_BoneTrack_set_QuatY(lua_State *L) {
  16697. luaL_checktype(L, 1, LUA_TUSERDATA);
  16698. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16699. luaL_checktype(L, 2, LUA_TUSERDATA);
  16700. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16701. inst->QuatY = *argInst;
  16702. return 0;
  16703. }
  16704. static int Polycode_BoneTrack_set_QuatZ(lua_State *L) {
  16705. luaL_checktype(L, 1, LUA_TUSERDATA);
  16706. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16707. luaL_checktype(L, 2, LUA_TUSERDATA);
  16708. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16709. inst->QuatZ = *argInst;
  16710. return 0;
  16711. }
  16712. static int Polycode_BoneTrack_set_LocX(lua_State *L) {
  16713. luaL_checktype(L, 1, LUA_TUSERDATA);
  16714. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16715. luaL_checktype(L, 2, LUA_TUSERDATA);
  16716. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16717. inst->LocX = *argInst;
  16718. return 0;
  16719. }
  16720. static int Polycode_BoneTrack_set_LocY(lua_State *L) {
  16721. luaL_checktype(L, 1, LUA_TUSERDATA);
  16722. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16723. luaL_checktype(L, 2, LUA_TUSERDATA);
  16724. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16725. inst->LocY = *argInst;
  16726. return 0;
  16727. }
  16728. static int Polycode_BoneTrack_set_LocZ(lua_State *L) {
  16729. luaL_checktype(L, 1, LUA_TUSERDATA);
  16730. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16731. luaL_checktype(L, 2, LUA_TUSERDATA);
  16732. BezierCurve* *argInst = (BezierCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16733. inst->LocZ = *argInst;
  16734. return 0;
  16735. }
  16736. static int Polycode_BoneTrack_set_position(lua_State *L) {
  16737. luaL_checktype(L, 1, LUA_TUSERDATA);
  16738. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16739. luaL_checktype(L, 2, LUA_TUSERDATA);
  16740. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16741. inst->position = *argInst;
  16742. return 0;
  16743. }
  16744. static int Polycode_BoneTrack_set_scale(lua_State *L) {
  16745. luaL_checktype(L, 1, LUA_TUSERDATA);
  16746. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16747. luaL_checktype(L, 2, LUA_TUSERDATA);
  16748. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16749. inst->scale = *argInst;
  16750. return 0;
  16751. }
  16752. static int Polycode_BoneTrack_set_boneQuat(lua_State *L) {
  16753. luaL_checktype(L, 1, LUA_TUSERDATA);
  16754. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16755. luaL_checktype(L, 2, LUA_TUSERDATA);
  16756. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  16757. inst->boneQuat = *argInst;
  16758. return 0;
  16759. }
  16760. static int Polycode_BoneTrack_set_quatCurve(lua_State *L) {
  16761. luaL_checktype(L, 1, LUA_TUSERDATA);
  16762. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16763. luaL_checktype(L, 2, LUA_TUSERDATA);
  16764. QuaternionCurve* *argInst = (QuaternionCurve**) *((PolyBase**)lua_touserdata(L, 2));
  16765. inst->quatCurve = *argInst;
  16766. return 0;
  16767. }
  16768. static int Polycode_BoneTrack_set_weight(lua_State *L) {
  16769. luaL_checktype(L, 1, LUA_TUSERDATA);
  16770. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16771. Number param = lua_tonumber(L, 2);
  16772. inst->weight = param;
  16773. return 0;
  16774. }
  16775. static int Polycode_BoneTrack(lua_State *L) {
  16776. luaL_checktype(L, 1, LUA_TUSERDATA);
  16777. Bone* bone = (Bone*) *((PolyBase**)lua_touserdata(L, 1));
  16778. luaL_checktype(L, 2, LUA_TNUMBER);
  16779. Number length = lua_tonumber(L, 2);
  16780. BoneTrack *inst = new BoneTrack(bone, length);
  16781. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16782. *userdataPtr = (PolyBase*)inst;
  16783. luaL_getmetatable(L, "Polycode.BoneTrack");
  16784. lua_setmetatable(L, -2);
  16785. return 1;
  16786. }
  16787. static int Polycode_BoneTrack_Play(lua_State *L) {
  16788. luaL_checktype(L, 1, LUA_TUSERDATA);
  16789. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16790. bool once;
  16791. if(lua_isboolean(L, 2)) {
  16792. once = lua_toboolean(L, 2) != 0;
  16793. } else {
  16794. once = false;
  16795. }
  16796. inst->Play(once);
  16797. return 0;
  16798. }
  16799. static int Polycode_BoneTrack_Stop(lua_State *L) {
  16800. luaL_checktype(L, 1, LUA_TUSERDATA);
  16801. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16802. inst->Stop();
  16803. return 0;
  16804. }
  16805. static int Polycode_BoneTrack_Update(lua_State *L) {
  16806. luaL_checktype(L, 1, LUA_TUSERDATA);
  16807. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16808. luaL_checktype(L, 2, LUA_TNUMBER);
  16809. Number elapsed = lua_tonumber(L, 2);
  16810. inst->Update(elapsed);
  16811. return 0;
  16812. }
  16813. static int Polycode_BoneTrack_Reset(lua_State *L) {
  16814. luaL_checktype(L, 1, LUA_TUSERDATA);
  16815. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16816. inst->Reset();
  16817. return 0;
  16818. }
  16819. static int Polycode_BoneTrack_setSpeed(lua_State *L) {
  16820. luaL_checktype(L, 1, LUA_TUSERDATA);
  16821. BoneTrack *inst = (BoneTrack*) *((PolyBase**)lua_touserdata(L, 1));
  16822. luaL_checktype(L, 2, LUA_TNUMBER);
  16823. Number speed = lua_tonumber(L, 2);
  16824. inst->setSpeed(speed);
  16825. return 0;
  16826. }
  16827. static int Polycode_delete_BoneTrack(lua_State *L) {
  16828. luaL_checktype(L, 1, LUA_TUSERDATA);
  16829. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  16830. delete ((BoneTrack*) *inst);
  16831. *inst = NULL;
  16832. return 0;
  16833. }
  16834. static int Polycode_Sound(lua_State *L) {
  16835. luaL_checktype(L, 1, LUA_TSTRING);
  16836. String fileName = String(lua_tostring(L, 1));
  16837. Sound *inst = new Sound(fileName);
  16838. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  16839. *userdataPtr = (PolyBase*)inst;
  16840. luaL_getmetatable(L, "Polycode.Sound");
  16841. lua_setmetatable(L, -2);
  16842. return 1;
  16843. }
  16844. static int Polycode_Sound_getSampleAsNumber(lua_State *L) {
  16845. luaL_checktype(L, 1, LUA_TUSERDATA);
  16846. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16847. luaL_checktype(L, 2, LUA_TNUMBER);
  16848. int offset = lua_tointeger(L, 2);
  16849. luaL_checktype(L, 3, LUA_TNUMBER);
  16850. int channel = lua_tointeger(L, 3);
  16851. luaL_checktype(L, 4, LUA_TUSERDATA);
  16852. Vector3 listener = *(Vector3*) *((PolyBase**)lua_touserdata(L, 4));
  16853. luaL_checktype(L, 5, LUA_TUSERDATA);
  16854. Quaternion orientation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 5));
  16855. lua_pushnumber(L, inst->getSampleAsNumber(offset, channel, listener, orientation));
  16856. return 1;
  16857. }
  16858. static int Polycode_Sound_loadFile(lua_State *L) {
  16859. luaL_checktype(L, 1, LUA_TUSERDATA);
  16860. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16861. luaL_checktype(L, 2, LUA_TSTRING);
  16862. String fileName = String(lua_tostring(L, 2));
  16863. inst->loadFile(fileName);
  16864. return 0;
  16865. }
  16866. static int Polycode_Sound_Play(lua_State *L) {
  16867. luaL_checktype(L, 1, LUA_TUSERDATA);
  16868. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16869. bool loop;
  16870. if(lua_isboolean(L, 2)) {
  16871. loop = lua_toboolean(L, 2) != 0;
  16872. } else {
  16873. loop = false;
  16874. }
  16875. bool restartSound;
  16876. if(lua_isboolean(L, 3)) {
  16877. restartSound = lua_toboolean(L, 3) != 0;
  16878. } else {
  16879. restartSound = true;
  16880. }
  16881. inst->Play(loop, restartSound);
  16882. return 0;
  16883. }
  16884. static int Polycode_Sound_Stop(lua_State *L) {
  16885. luaL_checktype(L, 1, LUA_TUSERDATA);
  16886. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16887. inst->Stop();
  16888. return 0;
  16889. }
  16890. static int Polycode_Sound_setVolume(lua_State *L) {
  16891. luaL_checktype(L, 1, LUA_TUSERDATA);
  16892. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16893. luaL_checktype(L, 2, LUA_TNUMBER);
  16894. Number newVolume = lua_tonumber(L, 2);
  16895. inst->setVolume(newVolume);
  16896. return 0;
  16897. }
  16898. static int Polycode_Sound_getVolume(lua_State *L) {
  16899. luaL_checktype(L, 1, LUA_TUSERDATA);
  16900. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16901. lua_pushnumber(L, inst->getVolume());
  16902. return 1;
  16903. }
  16904. static int Polycode_Sound_setPitch(lua_State *L) {
  16905. luaL_checktype(L, 1, LUA_TUSERDATA);
  16906. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16907. luaL_checktype(L, 2, LUA_TNUMBER);
  16908. Number newPitch = lua_tonumber(L, 2);
  16909. inst->setPitch(newPitch);
  16910. return 0;
  16911. }
  16912. static int Polycode_Sound_getPitch(lua_State *L) {
  16913. luaL_checktype(L, 1, LUA_TUSERDATA);
  16914. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16915. lua_pushnumber(L, inst->getPitch());
  16916. return 1;
  16917. }
  16918. static int Polycode_Sound_isPlaying(lua_State *L) {
  16919. luaL_checktype(L, 1, LUA_TUSERDATA);
  16920. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16921. lua_pushboolean(L, inst->isPlaying());
  16922. return 1;
  16923. }
  16924. static int Polycode_Sound_isLooped(lua_State *L) {
  16925. luaL_checktype(L, 1, LUA_TUSERDATA);
  16926. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16927. lua_pushboolean(L, inst->isLooped());
  16928. return 1;
  16929. }
  16930. static int Polycode_Sound_setIsPositional(lua_State *L) {
  16931. luaL_checktype(L, 1, LUA_TUSERDATA);
  16932. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16933. luaL_checktype(L, 2, LUA_TBOOLEAN);
  16934. bool isPositional = lua_toboolean(L, 2) != 0;
  16935. inst->setIsPositional(isPositional);
  16936. return 0;
  16937. }
  16938. static int Polycode_Sound_setSoundPosition(lua_State *L) {
  16939. luaL_checktype(L, 1, LUA_TUSERDATA);
  16940. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16941. luaL_checktype(L, 2, LUA_TUSERDATA);
  16942. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16943. inst->setSoundPosition(position);
  16944. return 0;
  16945. }
  16946. static int Polycode_Sound_setSoundVelocity(lua_State *L) {
  16947. luaL_checktype(L, 1, LUA_TUSERDATA);
  16948. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16949. luaL_checktype(L, 2, LUA_TUSERDATA);
  16950. Vector3 velocity = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16951. inst->setSoundVelocity(velocity);
  16952. return 0;
  16953. }
  16954. static int Polycode_Sound_setSoundDirection(lua_State *L) {
  16955. luaL_checktype(L, 1, LUA_TUSERDATA);
  16956. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16957. luaL_checktype(L, 2, LUA_TUSERDATA);
  16958. Vector3 direction = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  16959. inst->setSoundDirection(direction);
  16960. return 0;
  16961. }
  16962. static int Polycode_Sound_setOffset(lua_State *L) {
  16963. luaL_checktype(L, 1, LUA_TUSERDATA);
  16964. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16965. luaL_checktype(L, 2, LUA_TNUMBER);
  16966. int offset = lua_tointeger(L, 2);
  16967. inst->setOffset(offset);
  16968. return 0;
  16969. }
  16970. static int Polycode_Sound_getFileName(lua_State *L) {
  16971. luaL_checktype(L, 1, LUA_TUSERDATA);
  16972. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16973. lua_pushstring(L, inst->getFileName().c_str());
  16974. return 1;
  16975. }
  16976. static int Polycode_Sound_getPlaybackDuration(lua_State *L) {
  16977. luaL_checktype(L, 1, LUA_TUSERDATA);
  16978. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16979. lua_pushnumber(L, inst->getPlaybackDuration());
  16980. return 1;
  16981. }
  16982. static int Polycode_Sound_getPlaybackTime(lua_State *L) {
  16983. luaL_checktype(L, 1, LUA_TUSERDATA);
  16984. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16985. lua_pushnumber(L, inst->getPlaybackTime());
  16986. return 1;
  16987. }
  16988. static int Polycode_Sound_seekTo(lua_State *L) {
  16989. luaL_checktype(L, 1, LUA_TUSERDATA);
  16990. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16991. luaL_checktype(L, 2, LUA_TNUMBER);
  16992. Number time = lua_tonumber(L, 2);
  16993. inst->seekTo(time);
  16994. return 0;
  16995. }
  16996. static int Polycode_Sound_getOffset(lua_State *L) {
  16997. luaL_checktype(L, 1, LUA_TUSERDATA);
  16998. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  16999. lua_pushinteger(L, inst->getOffset());
  17000. return 1;
  17001. }
  17002. static int Polycode_Sound_getSampleLength(lua_State *L) {
  17003. luaL_checktype(L, 1, LUA_TUSERDATA);
  17004. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17005. lua_pushinteger(L, inst->getSampleLength());
  17006. return 1;
  17007. }
  17008. static int Polycode_Sound_getFrequency(lua_State *L) {
  17009. luaL_checktype(L, 1, LUA_TUSERDATA);
  17010. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17011. lua_pushinteger(L, inst->getFrequency());
  17012. return 1;
  17013. }
  17014. static int Polycode_Sound_setPositionalProperties(lua_State *L) {
  17015. luaL_checktype(L, 1, LUA_TUSERDATA);
  17016. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17017. luaL_checktype(L, 2, LUA_TNUMBER);
  17018. Number referenceDistance = lua_tonumber(L, 2);
  17019. luaL_checktype(L, 3, LUA_TNUMBER);
  17020. Number maxDistance = lua_tonumber(L, 3);
  17021. inst->setPositionalProperties(referenceDistance, maxDistance);
  17022. return 0;
  17023. }
  17024. static int Polycode_Sound_setReferenceDistance(lua_State *L) {
  17025. luaL_checktype(L, 1, LUA_TUSERDATA);
  17026. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17027. luaL_checktype(L, 2, LUA_TNUMBER);
  17028. Number referenceDistance = lua_tonumber(L, 2);
  17029. inst->setReferenceDistance(referenceDistance);
  17030. return 0;
  17031. }
  17032. static int Polycode_Sound_setMaxDistance(lua_State *L) {
  17033. luaL_checktype(L, 1, LUA_TUSERDATA);
  17034. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17035. luaL_checktype(L, 2, LUA_TNUMBER);
  17036. Number maxDistance = lua_tonumber(L, 2);
  17037. inst->setMaxDistance(maxDistance);
  17038. return 0;
  17039. }
  17040. static int Polycode_Sound_getReferenceDistance(lua_State *L) {
  17041. luaL_checktype(L, 1, LUA_TUSERDATA);
  17042. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17043. lua_pushnumber(L, inst->getReferenceDistance());
  17044. return 1;
  17045. }
  17046. static int Polycode_Sound_getMaxDistance(lua_State *L) {
  17047. luaL_checktype(L, 1, LUA_TUSERDATA);
  17048. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17049. lua_pushnumber(L, inst->getMaxDistance());
  17050. return 1;
  17051. }
  17052. static int Polycode_Sound_loadBytes(lua_State *L) {
  17053. luaL_checktype(L, 1, LUA_TUSERDATA);
  17054. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17055. luaL_checktype(L, 2, LUA_TUSERDATA);
  17056. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  17057. luaL_checktype(L, 3, LUA_TNUMBER);
  17058. int size = lua_tointeger(L, 3);
  17059. luaL_checktype(L, 4, LUA_TNUMBER);
  17060. int channels = lua_tointeger(L, 4);
  17061. luaL_checktype(L, 5, LUA_TNUMBER);
  17062. int freq = lua_tointeger(L, 5);
  17063. luaL_checktype(L, 6, LUA_TUSERDATA);
  17064. SoundFormat format = *(SoundFormat*) *((PolyBase**)lua_touserdata(L, 6));
  17065. lua_pushboolean(L, inst->loadBytes(data, size, channels, freq, format));
  17066. return 1;
  17067. }
  17068. static int Polycode_Sound_loadWAV(lua_State *L) {
  17069. luaL_checktype(L, 1, LUA_TUSERDATA);
  17070. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17071. luaL_checktype(L, 2, LUA_TSTRING);
  17072. String fileName = String(lua_tostring(L, 2));
  17073. lua_pushboolean(L, inst->loadWAV(fileName));
  17074. return 1;
  17075. }
  17076. static int Polycode_Sound_loadOGG(lua_State *L) {
  17077. luaL_checktype(L, 1, LUA_TUSERDATA);
  17078. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17079. luaL_checktype(L, 2, LUA_TSTRING);
  17080. String fileName = String(lua_tostring(L, 2));
  17081. lua_pushboolean(L, inst->loadOGG(fileName));
  17082. return 1;
  17083. }
  17084. static int Polycode_Sound_soundCheck(lua_State *L) {
  17085. luaL_checktype(L, 1, LUA_TUSERDATA);
  17086. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17087. luaL_checktype(L, 2, LUA_TBOOLEAN);
  17088. bool result = lua_toboolean(L, 2) != 0;
  17089. luaL_checktype(L, 3, LUA_TSTRING);
  17090. String err = String(lua_tostring(L, 3));
  17091. inst->soundCheck(result, err);
  17092. return 0;
  17093. }
  17094. static int Polycode_Sound_updateStream(lua_State *L) {
  17095. luaL_checktype(L, 1, LUA_TUSERDATA);
  17096. Sound *inst = (Sound*) *((PolyBase**)lua_touserdata(L, 1));
  17097. luaL_checktype(L, 2, LUA_TNUMBER);
  17098. int streamCount = lua_tointeger(L, 2);
  17099. inst->updateStream(streamCount);
  17100. return 0;
  17101. }
  17102. static int Polycode_delete_Sound(lua_State *L) {
  17103. luaL_checktype(L, 1, LUA_TUSERDATA);
  17104. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17105. delete ((Sound*) *inst);
  17106. *inst = NULL;
  17107. return 0;
  17108. }
  17109. static int Polycode_AudioStreamingSource(lua_State *L) {
  17110. luaL_checktype(L, 1, LUA_TNUMBER);
  17111. int channels = lua_tointeger(L, 1);
  17112. luaL_checktype(L, 2, LUA_TNUMBER);
  17113. int freq = lua_tointeger(L, 2);
  17114. AudioStreamingSource *inst = new AudioStreamingSource(channels, freq);
  17115. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17116. *userdataPtr = (PolyBase*)inst;
  17117. luaL_getmetatable(L, "Polycode.AudioStreamingSource");
  17118. lua_setmetatable(L, -2);
  17119. return 1;
  17120. }
  17121. static int Polycode_AudioStreamingSource_getNumChannels(lua_State *L) {
  17122. luaL_checktype(L, 1, LUA_TUSERDATA);
  17123. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  17124. lua_pushinteger(L, inst->getNumChannels());
  17125. return 1;
  17126. }
  17127. static int Polycode_AudioStreamingSource_getFrequency(lua_State *L) {
  17128. luaL_checktype(L, 1, LUA_TUSERDATA);
  17129. AudioStreamingSource *inst = (AudioStreamingSource*) *((PolyBase**)lua_touserdata(L, 1));
  17130. lua_pushinteger(L, inst->getFrequency());
  17131. return 1;
  17132. }
  17133. static int Polycode_delete_AudioStreamingSource(lua_State *L) {
  17134. luaL_checktype(L, 1, LUA_TUSERDATA);
  17135. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17136. delete ((AudioStreamingSource*) *inst);
  17137. *inst = NULL;
  17138. return 0;
  17139. }
  17140. static int Polycode_AudioMixer_get_globalVolume(lua_State *L) {
  17141. luaL_checktype(L, 1, LUA_TUSERDATA);
  17142. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17143. lua_pushnumber(L, inst->globalVolume);
  17144. return 1;
  17145. }
  17146. static int Polycode_AudioMixer_get_listenerPosition(lua_State *L) {
  17147. luaL_checktype(L, 1, LUA_TUSERDATA);
  17148. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17149. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17150. *userdataPtr = (PolyBase*)&inst->listenerPosition;
  17151. return 1;
  17152. }
  17153. static int Polycode_AudioMixer_get_listenerOrientation(lua_State *L) {
  17154. luaL_checktype(L, 1, LUA_TUSERDATA);
  17155. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17156. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17157. *userdataPtr = (PolyBase*)&inst->listenerOrientation;
  17158. return 1;
  17159. }
  17160. static int Polycode_AudioMixer_get_mixerMutex(lua_State *L) {
  17161. luaL_checktype(L, 1, LUA_TUSERDATA);
  17162. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17163. if(!inst->mixerMutex) {
  17164. lua_pushnil(L);
  17165. } else {
  17166. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17167. *userdataPtr = (PolyBase*)inst->mixerMutex;
  17168. }
  17169. return 1;
  17170. }
  17171. static int Polycode_AudioMixer_set_globalVolume(lua_State *L) {
  17172. luaL_checktype(L, 1, LUA_TUSERDATA);
  17173. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17174. Number param = lua_tonumber(L, 2);
  17175. inst->globalVolume = param;
  17176. return 0;
  17177. }
  17178. static int Polycode_AudioMixer_set_listenerPosition(lua_State *L) {
  17179. luaL_checktype(L, 1, LUA_TUSERDATA);
  17180. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17181. luaL_checktype(L, 2, LUA_TUSERDATA);
  17182. Vector3 *argInst = (Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  17183. inst->listenerPosition = *argInst;
  17184. return 0;
  17185. }
  17186. static int Polycode_AudioMixer_set_listenerOrientation(lua_State *L) {
  17187. luaL_checktype(L, 1, LUA_TUSERDATA);
  17188. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17189. luaL_checktype(L, 2, LUA_TUSERDATA);
  17190. Quaternion *argInst = (Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  17191. inst->listenerOrientation = *argInst;
  17192. return 0;
  17193. }
  17194. static int Polycode_AudioMixer_set_mixerMutex(lua_State *L) {
  17195. luaL_checktype(L, 1, LUA_TUSERDATA);
  17196. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17197. luaL_checktype(L, 2, LUA_TUSERDATA);
  17198. CoreMutex* *argInst = (CoreMutex**) *((PolyBase**)lua_touserdata(L, 2));
  17199. inst->mixerMutex = *argInst;
  17200. return 0;
  17201. }
  17202. static int Polycode_AudioMixer(lua_State *L) {
  17203. AudioMixer *inst = new AudioMixer();
  17204. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17205. *userdataPtr = (PolyBase*)inst;
  17206. luaL_getmetatable(L, "Polycode.AudioMixer");
  17207. lua_setmetatable(L, -2);
  17208. return 1;
  17209. }
  17210. static int Polycode_AudioMixer_mixIntoBuffer(lua_State *L) {
  17211. luaL_checktype(L, 1, LUA_TUSERDATA);
  17212. AudioMixer *inst = (AudioMixer*) *((PolyBase**)lua_touserdata(L, 1));
  17213. luaL_checktype(L, 2, LUA_TUSERDATA);
  17214. int16_t* buffer = (int16_t*) *((PolyBase**)lua_touserdata(L, 2));
  17215. luaL_checktype(L, 3, LUA_TNUMBER);
  17216. int numSamples = lua_tointeger(L, 3);
  17217. inst->mixIntoBuffer(buffer, numSamples);
  17218. return 0;
  17219. }
  17220. static int Polycode_delete_AudioMixer(lua_State *L) {
  17221. luaL_checktype(L, 1, LUA_TUSERDATA);
  17222. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17223. delete ((AudioMixer*) *inst);
  17224. *inst = NULL;
  17225. return 0;
  17226. }
  17227. static int Polycode_SoundManager(lua_State *L) {
  17228. SoundManager *inst = new SoundManager();
  17229. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17230. *userdataPtr = (PolyBase*)inst;
  17231. luaL_getmetatable(L, "Polycode.SoundManager");
  17232. lua_setmetatable(L, -2);
  17233. return 1;
  17234. }
  17235. static int Polycode_SoundManager_setListenerPosition(lua_State *L) {
  17236. luaL_checktype(L, 1, LUA_TUSERDATA);
  17237. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17238. luaL_checktype(L, 2, LUA_TUSERDATA);
  17239. Vector3 position = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  17240. inst->setListenerPosition(position);
  17241. return 0;
  17242. }
  17243. static int Polycode_SoundManager_setListenerOrientation(lua_State *L) {
  17244. luaL_checktype(L, 1, LUA_TUSERDATA);
  17245. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17246. luaL_checktype(L, 2, LUA_TUSERDATA);
  17247. Quaternion orientation = *(Quaternion*) *((PolyBase**)lua_touserdata(L, 2));
  17248. inst->setListenerOrientation(orientation);
  17249. return 0;
  17250. }
  17251. static int Polycode_SoundManager_recordSound(lua_State *L) {
  17252. luaL_checktype(L, 1, LUA_TUSERDATA);
  17253. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17254. luaL_checktype(L, 2, LUA_TNUMBER);
  17255. int rate = lua_tointeger(L, 2);
  17256. luaL_checktype(L, 3, LUA_TNUMBER);
  17257. int sampleSize = lua_tointeger(L, 3);
  17258. lua_pushboolean(L, inst->recordSound(rate, sampleSize));
  17259. return 1;
  17260. }
  17261. static int Polycode_SoundManager_stopRecording(lua_State *L) {
  17262. luaL_checktype(L, 1, LUA_TUSERDATA);
  17263. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17264. bool generateFloatBuffer;
  17265. if(lua_isboolean(L, 2)) {
  17266. generateFloatBuffer = lua_toboolean(L, 2) != 0;
  17267. } else {
  17268. generateFloatBuffer = false;
  17269. }
  17270. PolyBase *ptrRetVal = (PolyBase*)inst->stopRecording(generateFloatBuffer);
  17271. if(ptrRetVal == NULL) {
  17272. lua_pushnil(L);
  17273. } else {
  17274. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17275. *userdataPtr = ptrRetVal;
  17276. }
  17277. return 1;
  17278. }
  17279. static int Polycode_SoundManager_setAudioInterface(lua_State *L) {
  17280. luaL_checktype(L, 1, LUA_TUSERDATA);
  17281. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17282. luaL_checktype(L, 2, LUA_TUSERDATA);
  17283. AudioInterface* audioInterface = (AudioInterface*) *((PolyBase**)lua_touserdata(L, 2));
  17284. inst->setAudioInterface(audioInterface);
  17285. return 0;
  17286. }
  17287. static int Polycode_SoundManager_Update(lua_State *L) {
  17288. luaL_checktype(L, 1, LUA_TUSERDATA);
  17289. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17290. inst->Update();
  17291. return 0;
  17292. }
  17293. static int Polycode_SoundManager_setGlobalVolume(lua_State *L) {
  17294. luaL_checktype(L, 1, LUA_TUSERDATA);
  17295. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17296. luaL_checktype(L, 2, LUA_TNUMBER);
  17297. Number globalVolume = lua_tonumber(L, 2);
  17298. inst->setGlobalVolume(globalVolume);
  17299. return 0;
  17300. }
  17301. static int Polycode_SoundManager_registerSound(lua_State *L) {
  17302. luaL_checktype(L, 1, LUA_TUSERDATA);
  17303. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17304. luaL_checktype(L, 2, LUA_TUSERDATA);
  17305. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  17306. inst->registerSound(sound);
  17307. return 0;
  17308. }
  17309. static int Polycode_SoundManager_unregisterSound(lua_State *L) {
  17310. luaL_checktype(L, 1, LUA_TUSERDATA);
  17311. SoundManager *inst = (SoundManager*) *((PolyBase**)lua_touserdata(L, 1));
  17312. luaL_checktype(L, 2, LUA_TUSERDATA);
  17313. Sound* sound = (Sound*) *((PolyBase**)lua_touserdata(L, 2));
  17314. inst->unregisterSound(sound);
  17315. return 0;
  17316. }
  17317. static int Polycode_delete_SoundManager(lua_State *L) {
  17318. luaL_checktype(L, 1, LUA_TUSERDATA);
  17319. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17320. delete ((SoundManager*) *inst);
  17321. *inst = NULL;
  17322. return 0;
  17323. }
  17324. static int Polycode_String_get_contents(lua_State *L) {
  17325. luaL_checktype(L, 1, LUA_TUSERDATA);
  17326. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17327. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17328. *userdataPtr = (PolyBase*)&inst->contents;
  17329. return 1;
  17330. }
  17331. static int Polycode_String_get_w_contents(lua_State *L) {
  17332. luaL_checktype(L, 1, LUA_TUSERDATA);
  17333. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17334. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17335. *userdataPtr = (PolyBase*)&inst->w_contents;
  17336. return 1;
  17337. }
  17338. static int Polycode_String_set_contents(lua_State *L) {
  17339. luaL_checktype(L, 1, LUA_TUSERDATA);
  17340. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17341. luaL_checktype(L, 2, LUA_TUSERDATA);
  17342. string *argInst = (string*) *((PolyBase**)lua_touserdata(L, 2));
  17343. inst->contents = *argInst;
  17344. return 0;
  17345. }
  17346. static int Polycode_String_set_w_contents(lua_State *L) {
  17347. luaL_checktype(L, 1, LUA_TUSERDATA);
  17348. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17349. luaL_checktype(L, 2, LUA_TUSERDATA);
  17350. wstring *argInst = (wstring*) *((PolyBase**)lua_touserdata(L, 2));
  17351. inst->w_contents = *argInst;
  17352. return 0;
  17353. }
  17354. static int Polycode_String(lua_State *L) {
  17355. String *inst = new String();
  17356. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17357. *userdataPtr = (PolyBase*)inst;
  17358. luaL_getmetatable(L, "Polycode.String");
  17359. lua_setmetatable(L, -2);
  17360. return 1;
  17361. }
  17362. static int Polycode_String_size(lua_State *L) {
  17363. luaL_checktype(L, 1, LUA_TUSERDATA);
  17364. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17365. size_t *retInst = new size_t();
  17366. *retInst = inst->size();
  17367. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17368. luaL_getmetatable(L, "Polycode.size_t");
  17369. lua_setmetatable(L, -2);
  17370. *userdataPtr = (PolyBase*)retInst;
  17371. return 1;
  17372. }
  17373. static int Polycode_String_length(lua_State *L) {
  17374. luaL_checktype(L, 1, LUA_TUSERDATA);
  17375. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17376. size_t *retInst = new size_t();
  17377. *retInst = inst->length();
  17378. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17379. luaL_getmetatable(L, "Polycode.size_t");
  17380. lua_setmetatable(L, -2);
  17381. *userdataPtr = (PolyBase*)retInst;
  17382. return 1;
  17383. }
  17384. static int Polycode_String_substr(lua_State *L) {
  17385. luaL_checktype(L, 1, LUA_TUSERDATA);
  17386. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17387. luaL_checktype(L, 2, LUA_TUSERDATA);
  17388. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 2));
  17389. luaL_checktype(L, 3, LUA_TUSERDATA);
  17390. size_t n = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  17391. lua_pushstring(L, inst->substr(pos, n).c_str());
  17392. return 1;
  17393. }
  17394. static int Polycode_String_rfind(lua_State *L) {
  17395. luaL_checktype(L, 1, LUA_TUSERDATA);
  17396. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17397. luaL_checktype(L, 2, LUA_TSTRING);
  17398. String str = String(lua_tostring(L, 2));
  17399. luaL_checktype(L, 3, LUA_TUSERDATA);
  17400. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  17401. size_t *retInst = new size_t();
  17402. *retInst = inst->rfind(str, pos);
  17403. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17404. luaL_getmetatable(L, "Polycode.size_t");
  17405. lua_setmetatable(L, -2);
  17406. *userdataPtr = (PolyBase*)retInst;
  17407. return 1;
  17408. }
  17409. static int Polycode_String_find(lua_State *L) {
  17410. luaL_checktype(L, 1, LUA_TUSERDATA);
  17411. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17412. luaL_checktype(L, 2, LUA_TSTRING);
  17413. String str = String(lua_tostring(L, 2));
  17414. luaL_checktype(L, 3, LUA_TUSERDATA);
  17415. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  17416. size_t *retInst = new size_t();
  17417. *retInst = inst->find(str, pos);
  17418. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17419. luaL_getmetatable(L, "Polycode.size_t");
  17420. lua_setmetatable(L, -2);
  17421. *userdataPtr = (PolyBase*)retInst;
  17422. return 1;
  17423. }
  17424. static int Polycode_String_find_last_of(lua_State *L) {
  17425. luaL_checktype(L, 1, LUA_TUSERDATA);
  17426. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17427. luaL_checktype(L, 2, LUA_TSTRING);
  17428. String str = String(lua_tostring(L, 2));
  17429. luaL_checktype(L, 3, LUA_TUSERDATA);
  17430. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  17431. size_t *retInst = new size_t();
  17432. *retInst = inst->find_last_of(str, pos);
  17433. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17434. luaL_getmetatable(L, "Polycode.size_t");
  17435. lua_setmetatable(L, -2);
  17436. *userdataPtr = (PolyBase*)retInst;
  17437. return 1;
  17438. }
  17439. static int Polycode_String_find_first_of(lua_State *L) {
  17440. luaL_checktype(L, 1, LUA_TUSERDATA);
  17441. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17442. luaL_checktype(L, 2, LUA_TSTRING);
  17443. String str = String(lua_tostring(L, 2));
  17444. luaL_checktype(L, 3, LUA_TUSERDATA);
  17445. size_t pos = *(size_t*) *((PolyBase**)lua_touserdata(L, 3));
  17446. size_t *retInst = new size_t();
  17447. *retInst = inst->find_first_of(str, pos);
  17448. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17449. luaL_getmetatable(L, "Polycode.size_t");
  17450. lua_setmetatable(L, -2);
  17451. *userdataPtr = (PolyBase*)retInst;
  17452. return 1;
  17453. }
  17454. static int Polycode_String_toLowerCase(lua_State *L) {
  17455. luaL_checktype(L, 1, LUA_TUSERDATA);
  17456. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17457. lua_pushstring(L, inst->toLowerCase().c_str());
  17458. return 1;
  17459. }
  17460. static int Polycode_String_toUpperCase(lua_State *L) {
  17461. luaL_checktype(L, 1, LUA_TUSERDATA);
  17462. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17463. lua_pushstring(L, inst->toUpperCase().c_str());
  17464. return 1;
  17465. }
  17466. static int Polycode_String_split(lua_State *L) {
  17467. luaL_checktype(L, 1, LUA_TUSERDATA);
  17468. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17469. luaL_checktype(L, 2, LUA_TSTRING);
  17470. String delim = String(lua_tostring(L, 2));
  17471. return 0;
  17472. }
  17473. static int Polycode_String_replace(lua_State *L) {
  17474. luaL_checktype(L, 1, LUA_TUSERDATA);
  17475. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17476. luaL_checktype(L, 2, LUA_TSTRING);
  17477. String what = String(lua_tostring(L, 2));
  17478. luaL_checktype(L, 3, LUA_TSTRING);
  17479. String withWhat = String(lua_tostring(L, 3));
  17480. lua_pushstring(L, inst->replace(what, withWhat).c_str());
  17481. return 1;
  17482. }
  17483. static int Polycode_String_NumberToString(lua_State *L) {
  17484. luaL_checktype(L, 1, LUA_TNUMBER);
  17485. Number value = lua_tonumber(L, 1);
  17486. int precision;
  17487. if(lua_isnumber(L, 2)) {
  17488. precision = lua_tointeger(L, 2);
  17489. } else {
  17490. precision = 2;
  17491. }
  17492. lua_pushstring(L, String::NumberToString(value, precision).c_str());
  17493. return 1;
  17494. }
  17495. static int Polycode_String_toNumber(lua_State *L) {
  17496. luaL_checktype(L, 1, LUA_TUSERDATA);
  17497. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17498. lua_pushnumber(L, inst->toNumber());
  17499. return 1;
  17500. }
  17501. static int Polycode_String_toInteger(lua_State *L) {
  17502. luaL_checktype(L, 1, LUA_TUSERDATA);
  17503. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17504. lua_pushinteger(L, inst->toInteger());
  17505. return 1;
  17506. }
  17507. static int Polycode_String_IntToString(lua_State *L) {
  17508. luaL_checktype(L, 1, LUA_TNUMBER);
  17509. int value = lua_tointeger(L, 1);
  17510. lua_pushstring(L, String::IntToString(value).c_str());
  17511. return 1;
  17512. }
  17513. static int Polycode_String_c_str(lua_State *L) {
  17514. luaL_checktype(L, 1, LUA_TUSERDATA);
  17515. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17516. PolyBase *ptrRetVal = (PolyBase*)inst->c_str();
  17517. if(ptrRetVal == NULL) {
  17518. lua_pushnil(L);
  17519. } else {
  17520. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17521. *userdataPtr = ptrRetVal;
  17522. }
  17523. return 1;
  17524. }
  17525. static int Polycode_String_getDataWithEncoding(lua_State *L) {
  17526. luaL_checktype(L, 1, LUA_TUSERDATA);
  17527. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17528. luaL_checktype(L, 2, LUA_TNUMBER);
  17529. int encoding = lua_tointeger(L, 2);
  17530. PolyBase *ptrRetVal = (PolyBase*)inst->getDataWithEncoding(encoding);
  17531. if(ptrRetVal == NULL) {
  17532. lua_pushnil(L);
  17533. } else {
  17534. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17535. *userdataPtr = ptrRetVal;
  17536. }
  17537. return 1;
  17538. }
  17539. static int Polycode_String_getWDataWithEncoding(lua_State *L) {
  17540. luaL_checktype(L, 1, LUA_TUSERDATA);
  17541. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17542. luaL_checktype(L, 2, LUA_TNUMBER);
  17543. int encoding = lua_tointeger(L, 2);
  17544. PolyBase *ptrRetVal = (PolyBase*)inst->getWDataWithEncoding(encoding);
  17545. if(ptrRetVal == NULL) {
  17546. lua_pushnil(L);
  17547. } else {
  17548. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17549. *userdataPtr = ptrRetVal;
  17550. }
  17551. return 1;
  17552. }
  17553. static int Polycode_String_append(lua_State *L) {
  17554. luaL_checktype(L, 1, LUA_TUSERDATA);
  17555. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17556. luaL_checktype(L, 2, LUA_TUSERDATA);
  17557. char c = *(char*) *((PolyBase**)lua_touserdata(L, 2));
  17558. inst->append(c);
  17559. return 0;
  17560. }
  17561. static int Polycode_String_getDataSizeWithEncoding(lua_State *L) {
  17562. luaL_checktype(L, 1, LUA_TUSERDATA);
  17563. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17564. luaL_checktype(L, 2, LUA_TNUMBER);
  17565. int encoding = lua_tointeger(L, 2);
  17566. size_t *retInst = new size_t();
  17567. *retInst = inst->getDataSizeWithEncoding(encoding);
  17568. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17569. luaL_getmetatable(L, "Polycode.size_t");
  17570. lua_setmetatable(L, -2);
  17571. *userdataPtr = (PolyBase*)retInst;
  17572. return 1;
  17573. }
  17574. static int Polycode_String_setDataWithEncoding(lua_State *L) {
  17575. luaL_checktype(L, 1, LUA_TUSERDATA);
  17576. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17577. luaL_checktype(L, 2, LUA_TUSERDATA);
  17578. char* data = (char*) *((PolyBase**)lua_touserdata(L, 2));
  17579. luaL_checktype(L, 3, LUA_TNUMBER);
  17580. int encoding = lua_tointeger(L, 3);
  17581. inst->setDataWithEncoding(data, encoding);
  17582. return 0;
  17583. }
  17584. static int Polycode_String_isNumber(lua_State *L) {
  17585. luaL_checktype(L, 1, LUA_TUSERDATA);
  17586. String *inst = (String*) *((PolyBase**)lua_touserdata(L, 1));
  17587. lua_pushboolean(L, inst->isNumber());
  17588. return 1;
  17589. }
  17590. static int Polycode_delete_String(lua_State *L) {
  17591. luaL_checktype(L, 1, LUA_TUSERDATA);
  17592. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17593. delete ((String*) *inst);
  17594. *inst = NULL;
  17595. return 0;
  17596. }
  17597. static int Polycode_RenderBuffer_get_colorTexture(lua_State *L) {
  17598. luaL_checktype(L, 1, LUA_TUSERDATA);
  17599. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17600. if(!inst->colorTexture) {
  17601. lua_pushnil(L);
  17602. } else {
  17603. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17604. *userdataPtr = (PolyBase*)inst->colorTexture;
  17605. }
  17606. return 1;
  17607. }
  17608. static int Polycode_RenderBuffer_get_depthTexture(lua_State *L) {
  17609. luaL_checktype(L, 1, LUA_TUSERDATA);
  17610. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17611. if(!inst->depthTexture) {
  17612. lua_pushnil(L);
  17613. } else {
  17614. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17615. *userdataPtr = (PolyBase*)inst->depthTexture;
  17616. }
  17617. return 1;
  17618. }
  17619. static int Polycode_RenderBuffer_set_colorTexture(lua_State *L) {
  17620. luaL_checktype(L, 1, LUA_TUSERDATA);
  17621. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17622. luaL_checktype(L, 2, LUA_TUSERDATA);
  17623. Texture* *argInst = (Texture**) *((PolyBase**)lua_touserdata(L, 2));
  17624. inst->colorTexture = *argInst;
  17625. return 0;
  17626. }
  17627. static int Polycode_RenderBuffer_set_depthTexture(lua_State *L) {
  17628. luaL_checktype(L, 1, LUA_TUSERDATA);
  17629. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17630. luaL_checktype(L, 2, LUA_TUSERDATA);
  17631. Texture* *argInst = (Texture**) *((PolyBase**)lua_touserdata(L, 2));
  17632. inst->depthTexture = *argInst;
  17633. return 0;
  17634. }
  17635. static int Polycode_RenderBuffer(lua_State *L) {
  17636. luaL_checktype(L, 1, LUA_TNUMBER);
  17637. int width = lua_tointeger(L, 1);
  17638. luaL_checktype(L, 2, LUA_TNUMBER);
  17639. int height = lua_tointeger(L, 2);
  17640. luaL_checktype(L, 3, LUA_TBOOLEAN);
  17641. bool attachDepthBuffer = lua_toboolean(L, 3) != 0;
  17642. luaL_checktype(L, 4, LUA_TBOOLEAN);
  17643. bool floatingPoint = lua_toboolean(L, 4) != 0;
  17644. RenderBuffer *inst = new RenderBuffer(width, height, attachDepthBuffer, floatingPoint);
  17645. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17646. *userdataPtr = (PolyBase*)inst;
  17647. luaL_getmetatable(L, "Polycode.RenderBuffer");
  17648. lua_setmetatable(L, -2);
  17649. return 1;
  17650. }
  17651. static int Polycode_RenderBuffer_getWidth(lua_State *L) {
  17652. luaL_checktype(L, 1, LUA_TUSERDATA);
  17653. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17654. lua_pushinteger(L, inst->getWidth());
  17655. return 1;
  17656. }
  17657. static int Polycode_RenderBuffer_getHeight(lua_State *L) {
  17658. luaL_checktype(L, 1, LUA_TUSERDATA);
  17659. RenderBuffer *inst = (RenderBuffer*) *((PolyBase**)lua_touserdata(L, 1));
  17660. lua_pushinteger(L, inst->getHeight());
  17661. return 1;
  17662. }
  17663. static int Polycode_delete_RenderBuffer(lua_State *L) {
  17664. luaL_checktype(L, 1, LUA_TUSERDATA);
  17665. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17666. delete ((RenderBuffer*) *inst);
  17667. *inst = NULL;
  17668. return 0;
  17669. }
  17670. static int Polycode_Texture_get_clamp(lua_State *L) {
  17671. luaL_checktype(L, 1, LUA_TUSERDATA);
  17672. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17673. lua_pushboolean(L, inst->clamp);
  17674. return 1;
  17675. }
  17676. static int Polycode_Texture_get_textureData(lua_State *L) {
  17677. luaL_checktype(L, 1, LUA_TUSERDATA);
  17678. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17679. if(!inst->textureData) {
  17680. lua_pushnil(L);
  17681. } else {
  17682. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17683. *userdataPtr = (PolyBase*)inst->textureData;
  17684. }
  17685. return 1;
  17686. }
  17687. static int Polycode_Texture_get_type(lua_State *L) {
  17688. luaL_checktype(L, 1, LUA_TUSERDATA);
  17689. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17690. lua_pushinteger(L, inst->type);
  17691. return 1;
  17692. }
  17693. static int Polycode_Texture_get_filteringMode(lua_State *L) {
  17694. luaL_checktype(L, 1, LUA_TUSERDATA);
  17695. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17696. lua_pushinteger(L, inst->filteringMode);
  17697. return 1;
  17698. }
  17699. static int Polycode_Texture_get_createMipmaps(lua_State *L) {
  17700. luaL_checktype(L, 1, LUA_TUSERDATA);
  17701. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17702. lua_pushboolean(L, inst->createMipmaps);
  17703. return 1;
  17704. }
  17705. static int Polycode_Texture_get_anisotropy(lua_State *L) {
  17706. luaL_checktype(L, 1, LUA_TUSERDATA);
  17707. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17708. lua_pushinteger(L, inst->anisotropy);
  17709. return 1;
  17710. }
  17711. static int Polycode_Texture_get_framebufferTexture(lua_State *L) {
  17712. luaL_checktype(L, 1, LUA_TUSERDATA);
  17713. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17714. lua_pushboolean(L, inst->framebufferTexture);
  17715. return 1;
  17716. }
  17717. static int Polycode_Texture_get_depthTexture(lua_State *L) {
  17718. luaL_checktype(L, 1, LUA_TUSERDATA);
  17719. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17720. lua_pushboolean(L, inst->depthTexture);
  17721. return 1;
  17722. }
  17723. static int Polycode_Texture_set_clamp(lua_State *L) {
  17724. luaL_checktype(L, 1, LUA_TUSERDATA);
  17725. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17726. bool param = lua_toboolean(L, 2) != 0;
  17727. inst->clamp = param;
  17728. return 0;
  17729. }
  17730. static int Polycode_Texture_set_textureData(lua_State *L) {
  17731. luaL_checktype(L, 1, LUA_TUSERDATA);
  17732. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17733. luaL_checktype(L, 2, LUA_TUSERDATA);
  17734. char* *argInst = (char**) *((PolyBase**)lua_touserdata(L, 2));
  17735. inst->textureData = *argInst;
  17736. return 0;
  17737. }
  17738. static int Polycode_Texture_set_type(lua_State *L) {
  17739. luaL_checktype(L, 1, LUA_TUSERDATA);
  17740. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17741. int param = lua_tointeger(L, 2);
  17742. inst->type = param;
  17743. return 0;
  17744. }
  17745. static int Polycode_Texture_set_filteringMode(lua_State *L) {
  17746. luaL_checktype(L, 1, LUA_TUSERDATA);
  17747. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17748. int param = lua_tointeger(L, 2);
  17749. inst->filteringMode = param;
  17750. return 0;
  17751. }
  17752. static int Polycode_Texture_set_createMipmaps(lua_State *L) {
  17753. luaL_checktype(L, 1, LUA_TUSERDATA);
  17754. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17755. bool param = lua_toboolean(L, 2) != 0;
  17756. inst->createMipmaps = param;
  17757. return 0;
  17758. }
  17759. static int Polycode_Texture_set_anisotropy(lua_State *L) {
  17760. luaL_checktype(L, 1, LUA_TUSERDATA);
  17761. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17762. int param = lua_tointeger(L, 2);
  17763. inst->anisotropy = param;
  17764. return 0;
  17765. }
  17766. static int Polycode_Texture_set_framebufferTexture(lua_State *L) {
  17767. luaL_checktype(L, 1, LUA_TUSERDATA);
  17768. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17769. bool param = lua_toboolean(L, 2) != 0;
  17770. inst->framebufferTexture = param;
  17771. return 0;
  17772. }
  17773. static int Polycode_Texture_set_depthTexture(lua_State *L) {
  17774. luaL_checktype(L, 1, LUA_TUSERDATA);
  17775. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17776. bool param = lua_toboolean(L, 2) != 0;
  17777. inst->depthTexture = param;
  17778. return 0;
  17779. }
  17780. static int Polycode_Texture_reloadResource(lua_State *L) {
  17781. luaL_checktype(L, 1, LUA_TUSERDATA);
  17782. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17783. inst->reloadResource();
  17784. return 0;
  17785. }
  17786. static int Polycode_Texture_setImageData(lua_State *L) {
  17787. luaL_checktype(L, 1, LUA_TUSERDATA);
  17788. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17789. luaL_checktype(L, 2, LUA_TUSERDATA);
  17790. Image* data = (Image*) *((PolyBase**)lua_touserdata(L, 2));
  17791. inst->setImageData(data);
  17792. return 0;
  17793. }
  17794. static int Polycode_Texture_getTextureData(lua_State *L) {
  17795. luaL_checktype(L, 1, LUA_TUSERDATA);
  17796. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17797. PolyBase *ptrRetVal = (PolyBase*)inst->getTextureData();
  17798. if(ptrRetVal == NULL) {
  17799. lua_pushnil(L);
  17800. } else {
  17801. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17802. *userdataPtr = ptrRetVal;
  17803. }
  17804. return 1;
  17805. }
  17806. static int Polycode_Texture_getWidth(lua_State *L) {
  17807. luaL_checktype(L, 1, LUA_TUSERDATA);
  17808. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17809. lua_pushinteger(L, inst->getWidth());
  17810. return 1;
  17811. }
  17812. static int Polycode_Texture_getHeight(lua_State *L) {
  17813. luaL_checktype(L, 1, LUA_TUSERDATA);
  17814. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17815. lua_pushinteger(L, inst->getHeight());
  17816. return 1;
  17817. }
  17818. static int Polycode_Texture_setCreateMipmaps(lua_State *L) {
  17819. luaL_checktype(L, 1, LUA_TUSERDATA);
  17820. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17821. luaL_checktype(L, 2, LUA_TBOOLEAN);
  17822. bool createMipmapsIn = lua_toboolean(L, 2) != 0;
  17823. inst->setCreateMipmaps(createMipmapsIn);
  17824. return 0;
  17825. }
  17826. static int Polycode_Texture_getCreateMipmaps(lua_State *L) {
  17827. luaL_checktype(L, 1, LUA_TUSERDATA);
  17828. Texture *inst = (Texture*) *((PolyBase**)lua_touserdata(L, 1));
  17829. lua_pushboolean(L, inst->getCreateMipmaps());
  17830. return 1;
  17831. }
  17832. static int Polycode_delete_Texture(lua_State *L) {
  17833. luaL_checktype(L, 1, LUA_TUSERDATA);
  17834. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17835. delete ((Texture*) *inst);
  17836. *inst = NULL;
  17837. return 0;
  17838. }
  17839. static int Polycode_Timer(lua_State *L) {
  17840. luaL_checktype(L, 1, LUA_TBOOLEAN);
  17841. bool triggerMode = lua_toboolean(L, 1) != 0;
  17842. luaL_checktype(L, 2, LUA_TNUMBER);
  17843. int msecs = lua_tointeger(L, 2);
  17844. Timer *inst = new Timer(triggerMode, msecs);
  17845. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17846. *userdataPtr = (PolyBase*)inst;
  17847. luaL_getmetatable(L, "Polycode.Timer");
  17848. lua_setmetatable(L, -2);
  17849. return 1;
  17850. }
  17851. static int Polycode_Timer_Pause(lua_State *L) {
  17852. luaL_checktype(L, 1, LUA_TUSERDATA);
  17853. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17854. luaL_checktype(L, 2, LUA_TBOOLEAN);
  17855. bool paused = lua_toboolean(L, 2) != 0;
  17856. inst->Pause(paused);
  17857. return 0;
  17858. }
  17859. static int Polycode_Timer_isPaused(lua_State *L) {
  17860. luaL_checktype(L, 1, LUA_TUSERDATA);
  17861. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17862. lua_pushboolean(L, inst->isPaused());
  17863. return 1;
  17864. }
  17865. static int Polycode_Timer_getTicks(lua_State *L) {
  17866. luaL_checktype(L, 1, LUA_TUSERDATA);
  17867. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17868. lua_pushinteger(L, inst->getTicks());
  17869. return 1;
  17870. }
  17871. static int Polycode_Timer_Update(lua_State *L) {
  17872. luaL_checktype(L, 1, LUA_TUSERDATA);
  17873. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17874. luaL_checktype(L, 2, LUA_TNUMBER);
  17875. int ticks = lua_tointeger(L, 2);
  17876. inst->Update(ticks);
  17877. return 0;
  17878. }
  17879. static int Polycode_Timer_Reset(lua_State *L) {
  17880. luaL_checktype(L, 1, LUA_TUSERDATA);
  17881. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17882. inst->Reset();
  17883. return 0;
  17884. }
  17885. static int Polycode_Timer_hasElapsed(lua_State *L) {
  17886. luaL_checktype(L, 1, LUA_TUSERDATA);
  17887. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17888. lua_pushboolean(L, inst->hasElapsed());
  17889. return 1;
  17890. }
  17891. static int Polycode_Timer_getElapsedf(lua_State *L) {
  17892. luaL_checktype(L, 1, LUA_TUSERDATA);
  17893. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17894. lua_pushnumber(L, inst->getElapsedf());
  17895. return 1;
  17896. }
  17897. static int Polycode_Timer_setTimerInterval(lua_State *L) {
  17898. luaL_checktype(L, 1, LUA_TUSERDATA);
  17899. Timer *inst = (Timer*) *((PolyBase**)lua_touserdata(L, 1));
  17900. luaL_checktype(L, 2, LUA_TNUMBER);
  17901. int msecs = lua_tointeger(L, 2);
  17902. inst->setTimerInterval(msecs);
  17903. return 0;
  17904. }
  17905. static int Polycode_delete_Timer(lua_State *L) {
  17906. luaL_checktype(L, 1, LUA_TUSERDATA);
  17907. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  17908. delete ((Timer*) *inst);
  17909. *inst = NULL;
  17910. return 0;
  17911. }
  17912. static int Polycode_Vector2_get_x(lua_State *L) {
  17913. luaL_checktype(L, 1, LUA_TUSERDATA);
  17914. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17915. lua_pushnumber(L, inst->x);
  17916. return 1;
  17917. }
  17918. static int Polycode_Vector2_get_y(lua_State *L) {
  17919. luaL_checktype(L, 1, LUA_TUSERDATA);
  17920. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17921. lua_pushnumber(L, inst->y);
  17922. return 1;
  17923. }
  17924. static int Polycode_Vector2_set_x(lua_State *L) {
  17925. luaL_checktype(L, 1, LUA_TUSERDATA);
  17926. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17927. Number param = lua_tonumber(L, 2);
  17928. inst->x = param;
  17929. return 0;
  17930. }
  17931. static int Polycode_Vector2_set_y(lua_State *L) {
  17932. luaL_checktype(L, 1, LUA_TUSERDATA);
  17933. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17934. Number param = lua_tonumber(L, 2);
  17935. inst->y = param;
  17936. return 0;
  17937. }
  17938. static int Polycode_Vector2(lua_State *L) {
  17939. luaL_checktype(L, 1, LUA_TNUMBER);
  17940. Number x = lua_tonumber(L, 1);
  17941. luaL_checktype(L, 2, LUA_TNUMBER);
  17942. Number y = lua_tonumber(L, 2);
  17943. Vector2 *inst = new Vector2(x, y);
  17944. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  17945. *userdataPtr = (PolyBase*)inst;
  17946. luaL_getmetatable(L, "Polycode.Vector2");
  17947. lua_setmetatable(L, -2);
  17948. return 1;
  17949. }
  17950. static int Polycode_Vector2_set(lua_State *L) {
  17951. luaL_checktype(L, 1, LUA_TUSERDATA);
  17952. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17953. luaL_checktype(L, 2, LUA_TNUMBER);
  17954. Number x = lua_tonumber(L, 2);
  17955. luaL_checktype(L, 3, LUA_TNUMBER);
  17956. Number y = lua_tonumber(L, 3);
  17957. inst->set(x, y);
  17958. return 0;
  17959. }
  17960. static int Polycode_Vector2_distance(lua_State *L) {
  17961. luaL_checktype(L, 1, LUA_TUSERDATA);
  17962. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17963. luaL_checktype(L, 2, LUA_TUSERDATA);
  17964. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  17965. lua_pushnumber(L, inst->distance(vec2));
  17966. return 1;
  17967. }
  17968. static int Polycode_Vector2_length(lua_State *L) {
  17969. luaL_checktype(L, 1, LUA_TUSERDATA);
  17970. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17971. lua_pushnumber(L, inst->length());
  17972. return 1;
  17973. }
  17974. static int Polycode_Vector2_dot(lua_State *L) {
  17975. luaL_checktype(L, 1, LUA_TUSERDATA);
  17976. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17977. luaL_checktype(L, 2, LUA_TUSERDATA);
  17978. Vector2 u = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  17979. lua_pushnumber(L, inst->dot(u));
  17980. return 1;
  17981. }
  17982. static int Polycode_Vector2_crossProduct(lua_State *L) {
  17983. luaL_checktype(L, 1, LUA_TUSERDATA);
  17984. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17985. luaL_checktype(L, 2, LUA_TUSERDATA);
  17986. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  17987. lua_pushnumber(L, inst->crossProduct(vec2));
  17988. return 1;
  17989. }
  17990. static int Polycode_Vector2_angle(lua_State *L) {
  17991. luaL_checktype(L, 1, LUA_TUSERDATA);
  17992. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  17993. luaL_checktype(L, 2, LUA_TUSERDATA);
  17994. Vector2 vec2 = *(Vector2*) *((PolyBase**)lua_touserdata(L, 2));
  17995. lua_pushnumber(L, inst->angle(vec2));
  17996. return 1;
  17997. }
  17998. static int Polycode_Vector2_Normalize(lua_State *L) {
  17999. luaL_checktype(L, 1, LUA_TUSERDATA);
  18000. Vector2 *inst = (Vector2*) *((PolyBase**)lua_touserdata(L, 1));
  18001. inst->Normalize();
  18002. return 0;
  18003. }
  18004. static int Polycode_delete_Vector2(lua_State *L) {
  18005. luaL_checktype(L, 1, LUA_TUSERDATA);
  18006. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  18007. delete ((Vector2*) *inst);
  18008. *inst = NULL;
  18009. return 0;
  18010. }
  18011. static int Polycode_Vector3_get_x(lua_State *L) {
  18012. luaL_checktype(L, 1, LUA_TUSERDATA);
  18013. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18014. lua_pushnumber(L, inst->x);
  18015. return 1;
  18016. }
  18017. static int Polycode_Vector3_get_y(lua_State *L) {
  18018. luaL_checktype(L, 1, LUA_TUSERDATA);
  18019. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18020. lua_pushnumber(L, inst->y);
  18021. return 1;
  18022. }
  18023. static int Polycode_Vector3_get_z(lua_State *L) {
  18024. luaL_checktype(L, 1, LUA_TUSERDATA);
  18025. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18026. lua_pushnumber(L, inst->z);
  18027. return 1;
  18028. }
  18029. static int Polycode_Vector3_set_x(lua_State *L) {
  18030. luaL_checktype(L, 1, LUA_TUSERDATA);
  18031. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18032. Number param = lua_tonumber(L, 2);
  18033. inst->x = param;
  18034. return 0;
  18035. }
  18036. static int Polycode_Vector3_set_y(lua_State *L) {
  18037. luaL_checktype(L, 1, LUA_TUSERDATA);
  18038. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18039. Number param = lua_tonumber(L, 2);
  18040. inst->y = param;
  18041. return 0;
  18042. }
  18043. static int Polycode_Vector3_set_z(lua_State *L) {
  18044. luaL_checktype(L, 1, LUA_TUSERDATA);
  18045. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18046. Number param = lua_tonumber(L, 2);
  18047. inst->z = param;
  18048. return 0;
  18049. }
  18050. static int Polycode_Vector3(lua_State *L) {
  18051. luaL_checktype(L, 1, LUA_TNUMBER);
  18052. Number x = lua_tonumber(L, 1);
  18053. luaL_checktype(L, 2, LUA_TNUMBER);
  18054. Number y = lua_tonumber(L, 2);
  18055. luaL_checktype(L, 3, LUA_TNUMBER);
  18056. Number z = lua_tonumber(L, 3);
  18057. Vector3 *inst = new Vector3(x, y, z);
  18058. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  18059. *userdataPtr = (PolyBase*)inst;
  18060. luaL_getmetatable(L, "Polycode.Vector3");
  18061. lua_setmetatable(L, -2);
  18062. return 1;
  18063. }
  18064. static int Polycode_Vector3_set(lua_State *L) {
  18065. luaL_checktype(L, 1, LUA_TUSERDATA);
  18066. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18067. luaL_checktype(L, 2, LUA_TNUMBER);
  18068. Number x = lua_tonumber(L, 2);
  18069. luaL_checktype(L, 3, LUA_TNUMBER);
  18070. Number y = lua_tonumber(L, 3);
  18071. luaL_checktype(L, 4, LUA_TNUMBER);
  18072. Number z = lua_tonumber(L, 4);
  18073. inst->set(x, y, z);
  18074. return 0;
  18075. }
  18076. static int Polycode_Vector3_distance(lua_State *L) {
  18077. luaL_checktype(L, 1, LUA_TUSERDATA);
  18078. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18079. luaL_checktype(L, 2, LUA_TUSERDATA);
  18080. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  18081. lua_pushnumber(L, inst->distance(vec2));
  18082. return 1;
  18083. }
  18084. static int Polycode_Vector3_angleBetween(lua_State *L) {
  18085. luaL_checktype(L, 1, LUA_TUSERDATA);
  18086. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18087. luaL_checktype(L, 2, LUA_TUSERDATA);
  18088. Vector3 dest = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  18089. lua_pushnumber(L, inst->angleBetween(dest));
  18090. return 1;
  18091. }
  18092. static int Polycode_Vector3_length(lua_State *L) {
  18093. luaL_checktype(L, 1, LUA_TUSERDATA);
  18094. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18095. lua_pushnumber(L, inst->length());
  18096. return 1;
  18097. }
  18098. static int Polycode_Vector3_lengthSquared(lua_State *L) {
  18099. luaL_checktype(L, 1, LUA_TUSERDATA);
  18100. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18101. lua_pushnumber(L, inst->lengthSquared());
  18102. return 1;
  18103. }
  18104. static int Polycode_Vector3_setLength(lua_State *L) {
  18105. luaL_checktype(L, 1, LUA_TUSERDATA);
  18106. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18107. luaL_checktype(L, 2, LUA_TNUMBER);
  18108. Number newLength = lua_tonumber(L, 2);
  18109. Vector3 *retInst = new Vector3();
  18110. *retInst = inst->setLength(newLength);
  18111. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  18112. luaL_getmetatable(L, "Polycode.Vector3");
  18113. lua_setmetatable(L, -2);
  18114. *userdataPtr = (PolyBase*)retInst;
  18115. return 1;
  18116. }
  18117. static int Polycode_Vector3_dot(lua_State *L) {
  18118. luaL_checktype(L, 1, LUA_TUSERDATA);
  18119. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18120. luaL_checktype(L, 2, LUA_TUSERDATA);
  18121. Vector3 u = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  18122. lua_pushnumber(L, inst->dot(u));
  18123. return 1;
  18124. }
  18125. static int Polycode_Vector3_crossProduct(lua_State *L) {
  18126. luaL_checktype(L, 1, LUA_TUSERDATA);
  18127. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18128. luaL_checktype(L, 2, LUA_TUSERDATA);
  18129. Vector3 vec2 = *(Vector3*) *((PolyBase**)lua_touserdata(L, 2));
  18130. Vector3 *retInst = new Vector3();
  18131. *retInst = inst->crossProduct(vec2);
  18132. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  18133. luaL_getmetatable(L, "Polycode.Vector3");
  18134. lua_setmetatable(L, -2);
  18135. *userdataPtr = (PolyBase*)retInst;
  18136. return 1;
  18137. }
  18138. static int Polycode_Vector3_Normalize(lua_State *L) {
  18139. luaL_checktype(L, 1, LUA_TUSERDATA);
  18140. Vector3 *inst = (Vector3*) *((PolyBase**)lua_touserdata(L, 1));
  18141. inst->Normalize();
  18142. return 0;
  18143. }
  18144. static int Polycode_delete_Vector3(lua_State *L) {
  18145. luaL_checktype(L, 1, LUA_TUSERDATA);
  18146. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  18147. delete ((Vector3*) *inst);
  18148. *inst = NULL;
  18149. return 0;
  18150. }
  18151. static int Polycode_Vector4_get_x(lua_State *L) {
  18152. luaL_checktype(L, 1, LUA_TUSERDATA);
  18153. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18154. lua_pushnumber(L, inst->x);
  18155. return 1;
  18156. }
  18157. static int Polycode_Vector4_get_y(lua_State *L) {
  18158. luaL_checktype(L, 1, LUA_TUSERDATA);
  18159. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18160. lua_pushnumber(L, inst->y);
  18161. return 1;
  18162. }
  18163. static int Polycode_Vector4_get_z(lua_State *L) {
  18164. luaL_checktype(L, 1, LUA_TUSERDATA);
  18165. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18166. lua_pushnumber(L, inst->z);
  18167. return 1;
  18168. }
  18169. static int Polycode_Vector4_get_w(lua_State *L) {
  18170. luaL_checktype(L, 1, LUA_TUSERDATA);
  18171. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18172. lua_pushnumber(L, inst->w);
  18173. return 1;
  18174. }
  18175. static int Polycode_Vector4_set_x(lua_State *L) {
  18176. luaL_checktype(L, 1, LUA_TUSERDATA);
  18177. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18178. Number param = lua_tonumber(L, 2);
  18179. inst->x = param;
  18180. return 0;
  18181. }
  18182. static int Polycode_Vector4_set_y(lua_State *L) {
  18183. luaL_checktype(L, 1, LUA_TUSERDATA);
  18184. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18185. Number param = lua_tonumber(L, 2);
  18186. inst->y = param;
  18187. return 0;
  18188. }
  18189. static int Polycode_Vector4_set_z(lua_State *L) {
  18190. luaL_checktype(L, 1, LUA_TUSERDATA);
  18191. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18192. Number param = lua_tonumber(L, 2);
  18193. inst->z = param;
  18194. return 0;
  18195. }
  18196. static int Polycode_Vector4_set_w(lua_State *L) {
  18197. luaL_checktype(L, 1, LUA_TUSERDATA);
  18198. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18199. Number param = lua_tonumber(L, 2);
  18200. inst->w = param;
  18201. return 0;
  18202. }
  18203. static int Polycode_Vector4(lua_State *L) {
  18204. luaL_checktype(L, 1, LUA_TNUMBER);
  18205. Number x = lua_tonumber(L, 1);
  18206. luaL_checktype(L, 2, LUA_TNUMBER);
  18207. Number y = lua_tonumber(L, 2);
  18208. luaL_checktype(L, 3, LUA_TNUMBER);
  18209. Number z = lua_tonumber(L, 3);
  18210. luaL_checktype(L, 4, LUA_TNUMBER);
  18211. Number w = lua_tonumber(L, 4);
  18212. Vector4 *inst = new Vector4(x, y, z, w);
  18213. PolyBase **userdataPtr = (PolyBase**)lua_newuserdata(L, sizeof(PolyBase*));
  18214. *userdataPtr = (PolyBase*)inst;
  18215. luaL_getmetatable(L, "Polycode.Vector4");
  18216. lua_setmetatable(L, -2);
  18217. return 1;
  18218. }
  18219. static int Polycode_Vector4_set(lua_State *L) {
  18220. luaL_checktype(L, 1, LUA_TUSERDATA);
  18221. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18222. luaL_checktype(L, 2, LUA_TNUMBER);
  18223. Number x = lua_tonumber(L, 2);
  18224. luaL_checktype(L, 3, LUA_TNUMBER);
  18225. Number y = lua_tonumber(L, 3);
  18226. luaL_checktype(L, 4, LUA_TNUMBER);
  18227. Number z = lua_tonumber(L, 4);
  18228. luaL_checktype(L, 5, LUA_TNUMBER);
  18229. Number w = lua_tonumber(L, 5);
  18230. inst->set(x, y, z, w);
  18231. return 0;
  18232. }
  18233. static int Polycode_Vector4_dot(lua_State *L) {
  18234. luaL_checktype(L, 1, LUA_TUSERDATA);
  18235. Vector4 *inst = (Vector4*) *((PolyBase**)lua_touserdata(L, 1));
  18236. luaL_checktype(L, 2, LUA_TUSERDATA);
  18237. Vector4 u = *(Vector4*) *((PolyBase**)lua_touserdata(L, 2));
  18238. lua_pushnumber(L, inst->dot(u));
  18239. return 1;
  18240. }
  18241. static int Polycode_delete_Vector4(lua_State *L) {
  18242. luaL_checktype(L, 1, LUA_TUSERDATA);
  18243. PolyBase **inst = (PolyBase**)lua_touserdata(L, 1);
  18244. delete ((Vector4*) *inst);
  18245. *inst = NULL;
  18246. return 0;
  18247. }
  18248. }