lib.wx.xr-frame.d.ts 517 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379
  1. /*! *****************************************************************************
  2. Copyright (c) 2023 Tencent, Inc. All rights reserved.
  3. Permission is hereby granted, free of charge, to any person obtaining a copy of
  4. this software and associated documentation files (the "Software"), to deal in
  5. the Software without restriction, including without limitation the rights to
  6. use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
  7. of the Software, and to permit persons to whom the Software is furnished to do
  8. so, subject to the following conditions:
  9. The above copyright notice and this permission notice shall be included in all
  10. copies or substantial portions of the Software.
  11. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  12. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  15. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  16. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  17. SOFTWARE.
  18. ***************************************************************************** */
  19. /// <reference path="./lib.wx.phys3D.d.ts" />
  20. declare type HTMLCanvasElement = any
  21. declare type ImageData = any
  22. declare type HTMLImageElement = any
  23. declare module 'XrFrame' {
  24. import * as xrFrameSystem from 'XrFrame/xrFrameSystem'
  25. import { IComponentSchema, IEntityComponents } from 'XrFrame/xrFrameSystem'
  26. export {
  27. IComponentSchema,
  28. IEntityComponents,
  29. IEffectAsset,
  30. IRenderStates,
  31. ISubMesh,
  32. IVideoTextureOptions,
  33. IRenderTarget,
  34. IRenderTextureOptions,
  35. IGLTFModelOptions,
  36. IEnvDataOptions,
  37. IKeyframeAnimationData,
  38. IKeyframeAnimationInfo,
  39. IKeyframeAnimationOptions,
  40. IAtlasOptions,
  41. IAtlasCreationOptions,
  42. IPostProcessOptions,
  43. IDataValueHandler,
  44. ITextureWrapper,
  45. ITextureOptions,
  46. IEngineSettings,
  47. IHandle,
  48. IVertexLayoutOptions,
  49. IVertexDataDescriptorOptions,
  50. IUniformDescriptorOptions,
  51. IImage,
  52. IRealDownloader,
  53. IDownloader,
  54. IFontSetting,
  55. IFeatures,
  56. IRect,
  57. IViewAction,
  58. IView,
  59. IAttachment,
  60. IRenderPassDescriptor,
  61. IGlyphInfo,
  62. IEventBridge,
  63. INativeMap,
  64. ILongIntNativeMap,
  65. ITransformData,
  66. IAssetsData,
  67. ICameraData,
  68. IGLTFData,
  69. ILightData,
  70. IAssetMaterialData,
  71. IMeshData,
  72. ITextData,
  73. IAssetRenderTextureData,
  74. IEnvData,
  75. IAnimatorData,
  76. IAnimationPlayOptions,
  77. IAnimatorAutoPlay,
  78. ICameraOrbitControlData,
  79. IARTrackerData,
  80. IARTrackerRawData,
  81. IShapeData,
  82. ISphereShapeData,
  83. IMeshShapeData,
  84. ICapsuleShapeData,
  85. ICubeShapeData,
  86. IRigidbodyData,
  87. IShapeInteractData,
  88. IShapeGizmosData,
  89. IAssetPostProcessData,
  90. IParticleData,
  91. IAssetsSystemData,
  92. INodeSystemData,
  93. ITickSystemData,
  94. IAnimationSystemData,
  95. IVideoSystemData,
  96. IRenderSystemData,
  97. IPhysicsSystemData,
  98. IShapeDragEvent,
  99. IShapeTouchEvent,
  100. IARSystemData,
  101. IARRawData,
  102. IShareSystemData,
  103. IShareCaptureOptions,
  104. IShareRecordOptions,
  105. IGizmoSystemData,
  106. ILoaderOptionsSchema,
  107. ITextureLoaderOptions,
  108. IImageLoaderOptions,
  109. ICubeTextureLoaderOptions,
  110. IVideoTextureLoaderOptions,
  111. IEnvDataLoaderOptions,
  112. IGLTFLoaderOptions,
  113. IKeyframeLoaderOptions,
  114. IRawLoaderOptions,
  115. IAtlasLoaderOptions,
  116. TEventCallback,
  117. TDirection,
  118. Texture,
  119. UniformDescriptor,
  120. UniformBlock,
  121. VertexLayout,
  122. TCameraBackground,
  123. TTrackMode,
  124. EVideoState,
  125. EVertexFormat,
  126. EVertexStep,
  127. EIndexType,
  128. ETextureType,
  129. ETextureFormat,
  130. EWrapMode,
  131. EFilterMode,
  132. EUniformType,
  133. ECullMode,
  134. EFaceWinding,
  135. ECompareFunc,
  136. EStencilOp,
  137. EBlendFactor,
  138. EBlendEquation,
  139. EColorMask,
  140. EPixelType,
  141. ELoadAction,
  142. EDataModelType,
  143. EMeshRenderType,
  144. EPrimitiveType,
  145. EShadowMode,
  146. EShadowFitMode,
  147. EVertexLayoutUsage,
  148. EVertexBatchOperator,
  149. EAnimationBlendType,
  150. EUseDefaultAddedAction,
  151. EUseDefaultRetainedAction,
  152. EUseDefaultRemovedAction,
  153. EEventType,
  154. EARTrackerState,
  155. EShapeType,
  156. ECapsuleShapeDirection,
  157. EShareRecordState
  158. } from 'XrFrame/xrFrameSystem'
  159. export type Component<IData> = xrFrameSystem.Component<IData>
  160. export type Element = xrFrameSystem.Element
  161. export type EventManager = xrFrameSystem.EventManager
  162. export type Effect = xrFrameSystem.Effect
  163. export type Geometry = xrFrameSystem.Geometry
  164. export type Material = xrFrameSystem.Material
  165. export type VideoTexture = xrFrameSystem.VideoTexture
  166. export type RenderTexture = xrFrameSystem.RenderTexture
  167. export type GLTFModel = xrFrameSystem.GLTFModel
  168. export type EnvData = xrFrameSystem.EnvData
  169. export type Animation = xrFrameSystem.Animation
  170. export type KeyframeAnimation = xrFrameSystem.KeyframeAnimation
  171. export type Atlas = xrFrameSystem.Atlas
  172. export type PostProcess = xrFrameSystem.PostProcess
  173. export type Vector2 = xrFrameSystem.Vector2
  174. export type Vector3 = xrFrameSystem.Vector3
  175. export type Vector4 = xrFrameSystem.Vector4
  176. export type Quaternion = xrFrameSystem.Quaternion
  177. export type Matrix3 = xrFrameSystem.Matrix3
  178. export type Matrix4 = xrFrameSystem.Matrix4
  179. export type Color = xrFrameSystem.Color
  180. export type OBB = xrFrameSystem.OBB
  181. export type BoundBall = xrFrameSystem.BoundBall
  182. export type BoundBox = xrFrameSystem.BoundBox
  183. export type Spherical = xrFrameSystem.Spherical
  184. export type Transform = xrFrameSystem.Transform
  185. export type AssetLoad = xrFrameSystem.AssetLoad
  186. export type Assets = xrFrameSystem.Assets
  187. export type Camera = xrFrameSystem.Camera
  188. export type GLTF = xrFrameSystem.GLTF
  189. export type Light = xrFrameSystem.Light
  190. export type AssetMaterial = xrFrameSystem.AssetMaterial
  191. export type Mesh = xrFrameSystem.Mesh
  192. export type Text = xrFrameSystem.Text
  193. export type Particle = xrFrameSystem.Particle
  194. export type AssetRenderTexture = xrFrameSystem.AssetRenderTexture
  195. export type Env = xrFrameSystem.Env
  196. export type Animator = xrFrameSystem.Animator
  197. export type CameraOrbitControl = xrFrameSystem.CameraOrbitControl
  198. export type ARTracker = xrFrameSystem.ARTracker
  199. export type Shape = xrFrameSystem.Shape
  200. export type SphereShape = xrFrameSystem.SphereShape
  201. export type MeshShape = xrFrameSystem.MeshShape
  202. export type CapsuleShape = xrFrameSystem.CapsuleShape
  203. export type CubeShape = xrFrameSystem.CubeShape
  204. export type Rigidbody = xrFrameSystem.Rigidbody
  205. export type ShapeInteract = xrFrameSystem.ShapeInteract
  206. export type ShapeGizmos = xrFrameSystem.ShapeGizmos
  207. export type AssetPostProcess = xrFrameSystem.AssetPostProcess
  208. export type Scene = xrFrameSystem.Scene
  209. export type XRNode = xrFrameSystem.XRNode
  210. export type XRShadow = xrFrameSystem.XRShadow
  211. export type XRCamera = xrFrameSystem.XRCamera
  212. export type XRMesh = xrFrameSystem.XRMesh
  213. export type XRLight = xrFrameSystem.XRLight
  214. export type XRGLTF = xrFrameSystem.XRGLTF
  215. export type XRMaterial = xrFrameSystem.XRMaterial
  216. export type XRAssetRenderTexture = xrFrameSystem.XRAssetRenderTexture
  217. export type XRAssetLoad = xrFrameSystem.XRAssetLoad
  218. export type XRAssets = xrFrameSystem.XRAssets
  219. export type XREnv = xrFrameSystem.XREnv
  220. export type XRARTracker = xrFrameSystem.XRARTracker
  221. export type XRText = xrFrameSystem.XRText
  222. export type XRParticle = xrFrameSystem.XRParticle
  223. export type XRAssetPostProcess = xrFrameSystem.XRAssetPostProcess
  224. export type AssetsSystem = xrFrameSystem.AssetsSystem
  225. export type NodeSystem = xrFrameSystem.NodeSystem
  226. export type TickSystem = xrFrameSystem.TickSystem
  227. export type AnimationSystem = xrFrameSystem.AnimationSystem
  228. export type VideoSystem = xrFrameSystem.VideoSystem
  229. export type RenderSystem = xrFrameSystem.RenderSystem
  230. export type PhysicsSystem = xrFrameSystem.PhysicsSystem
  231. export type ARSystem = xrFrameSystem.ARSystem
  232. export type ShareSystem = xrFrameSystem.ShareSystem
  233. export type GizmoSystem = xrFrameSystem.GizmoSystem
  234. export type AssetLoader<T, ILoadOptions> = xrFrameSystem.AssetLoader<
  235. T,
  236. ILoadOptions
  237. >
  238. export type TextureLoader = xrFrameSystem.TextureLoader
  239. export type ImageLoader = xrFrameSystem.ImageLoader
  240. export type CubeTextureLoader = xrFrameSystem.CubeTextureLoader
  241. export type VideoTextureLoader = xrFrameSystem.VideoTextureLoader
  242. export type EnvDataLoader = xrFrameSystem.EnvDataLoader
  243. export type GLTFLoader = xrFrameSystem.GLTFLoader
  244. export type KeyframeLoader = xrFrameSystem.KeyframeLoader
  245. export type RawLoader = xrFrameSystem.RawLoader
  246. export type AtlasLoader = xrFrameSystem.AtlasLoader
  247. export interface IXrFrameSystem {
  248. registerComponent: typeof xrFrameSystem.registerComponent
  249. registerElement: typeof xrFrameSystem.registerElement
  250. registerDataValue: typeof xrFrameSystem.registerDataValue
  251. isTextureWrapper: typeof xrFrameSystem.isTextureWrapper
  252. genLspMeta: typeof xrFrameSystem.genLspMeta
  253. registerEffect: typeof xrFrameSystem.registerEffect
  254. registerGeometry: typeof xrFrameSystem.registerGeometry
  255. registerTexture: typeof xrFrameSystem.registerTexture
  256. registerMaterial: typeof xrFrameSystem.registerMaterial
  257. registerUniformDesc: typeof xrFrameSystem.registerUniformDesc
  258. registerVertexDataDesc: typeof xrFrameSystem.registerVertexDataDesc
  259. registerVertexLayout: typeof xrFrameSystem.registerVertexLayout
  260. // EDracoDataType: typeof xrFrameSystem.// EDracoDataType;
  261. // EDracoDecodeType: typeof xrFrameSystem.// EDracoDecodeType;
  262. // EDracoErrorCode: typeof xrFrameSystem.// EDracoErrorCode;
  263. // EDracoGeometryType: typeof xrFrameSystem.// EDracoGeometryType;
  264. // DracoDecoded: typeof xrFrameSystem.// DracoDecoded;
  265. registerAssetLoader: typeof xrFrameSystem.registerAssetLoader
  266. Component: typeof xrFrameSystem.Component
  267. Element: typeof xrFrameSystem.Element
  268. EventManager: typeof xrFrameSystem.EventManager
  269. Effect: typeof xrFrameSystem.Effect
  270. Geometry: typeof xrFrameSystem.Geometry
  271. Material: typeof xrFrameSystem.Material
  272. VideoTexture: typeof xrFrameSystem.VideoTexture
  273. RenderTexture: typeof xrFrameSystem.RenderTexture
  274. GLTFModel: typeof xrFrameSystem.GLTFModel
  275. EnvData: typeof xrFrameSystem.EnvData
  276. Animation: typeof xrFrameSystem.Animation
  277. KeyframeAnimation: typeof xrFrameSystem.KeyframeAnimation
  278. Atlas: typeof xrFrameSystem.Atlas
  279. PostProcess: typeof xrFrameSystem.PostProcess
  280. Vector2: typeof xrFrameSystem.Vector2
  281. Vector3: typeof xrFrameSystem.Vector3
  282. Vector4: typeof xrFrameSystem.Vector4
  283. Quaternion: typeof xrFrameSystem.Quaternion
  284. Matrix3: typeof xrFrameSystem.Matrix3
  285. Matrix4: typeof xrFrameSystem.Matrix4
  286. Color: typeof xrFrameSystem.Color
  287. OBB: typeof xrFrameSystem.OBB
  288. BoundBall: typeof xrFrameSystem.BoundBall
  289. BoundBox: typeof xrFrameSystem.BoundBox
  290. Spherical: typeof xrFrameSystem.Spherical
  291. Transform: typeof xrFrameSystem.Transform
  292. AssetLoad: typeof xrFrameSystem.AssetLoad
  293. Assets: typeof xrFrameSystem.Assets
  294. Camera: typeof xrFrameSystem.Camera
  295. GLTF: typeof xrFrameSystem.GLTF
  296. Light: typeof xrFrameSystem.Light
  297. AssetMaterial: typeof xrFrameSystem.AssetMaterial
  298. Mesh: typeof xrFrameSystem.Mesh
  299. Text: typeof xrFrameSystem.Text
  300. Particle: typeof xrFrameSystem.Particle
  301. AssetRenderTexture: typeof xrFrameSystem.AssetRenderTexture
  302. Env: typeof xrFrameSystem.Env
  303. Animator: typeof xrFrameSystem.Animator
  304. CameraOrbitControl: typeof xrFrameSystem.CameraOrbitControl
  305. ARTracker: typeof xrFrameSystem.ARTracker
  306. Shape: typeof xrFrameSystem.Shape
  307. SphereShape: typeof xrFrameSystem.SphereShape
  308. MeshShape: typeof xrFrameSystem.MeshShape
  309. CapsuleShape: typeof xrFrameSystem.CapsuleShape
  310. CubeShape: typeof xrFrameSystem.CubeShape
  311. Rigidbody: typeof xrFrameSystem.Rigidbody
  312. ShapeInteract: typeof xrFrameSystem.ShapeInteract
  313. ShapeGizmos: typeof xrFrameSystem.ShapeGizmos
  314. AssetPostProcess: typeof xrFrameSystem.AssetPostProcess
  315. Scene: typeof xrFrameSystem.Scene
  316. XRNode: typeof xrFrameSystem.XRNode
  317. XRShadow: typeof xrFrameSystem.XRShadow
  318. XRCamera: typeof xrFrameSystem.XRCamera
  319. XRMesh: typeof xrFrameSystem.XRMesh
  320. XRLight: typeof xrFrameSystem.XRLight
  321. XRGLTF: typeof xrFrameSystem.XRGLTF
  322. XRMaterial: typeof xrFrameSystem.XRMaterial
  323. XRAssetRenderTexture: typeof xrFrameSystem.XRAssetRenderTexture
  324. XRAssetLoad: typeof xrFrameSystem.XRAssetLoad
  325. XRAssets: typeof xrFrameSystem.XRAssets
  326. XREnv: typeof xrFrameSystem.XREnv
  327. XRARTracker: typeof xrFrameSystem.XRARTracker
  328. XRText: typeof xrFrameSystem.XRText
  329. XRParticle: typeof xrFrameSystem.XRParticle
  330. XRAssetPostProcess: typeof xrFrameSystem.XRAssetPostProcess
  331. AssetsSystem: typeof xrFrameSystem.AssetsSystem
  332. NodeSystem: typeof xrFrameSystem.NodeSystem
  333. TickSystem: typeof xrFrameSystem.TickSystem
  334. AnimationSystem: typeof xrFrameSystem.AnimationSystem
  335. VideoSystem: typeof xrFrameSystem.VideoSystem
  336. RenderSystem: typeof xrFrameSystem.RenderSystem
  337. PhysicsSystem: typeof xrFrameSystem.PhysicsSystem
  338. ARSystem: typeof xrFrameSystem.ARSystem
  339. ShareSystem: typeof xrFrameSystem.ShareSystem
  340. GizmoSystem: typeof xrFrameSystem.GizmoSystem
  341. AssetLoader: typeof xrFrameSystem.AssetLoader
  342. TextureLoader: typeof xrFrameSystem.TextureLoader
  343. ImageLoader: typeof xrFrameSystem.ImageLoader
  344. CubeTextureLoader: typeof xrFrameSystem.CubeTextureLoader
  345. VideoTextureLoader: typeof xrFrameSystem.VideoTextureLoader
  346. EnvDataLoader: typeof xrFrameSystem.EnvDataLoader
  347. GLTFLoader: typeof xrFrameSystem.GLTFLoader
  348. KeyframeLoader: typeof xrFrameSystem.KeyframeLoader
  349. RawLoader: typeof xrFrameSystem.RawLoader
  350. AtlasLoader: typeof xrFrameSystem.AtlasLoader
  351. EVideoState: typeof xrFrameSystem.EVideoState
  352. EVertexFormat: typeof xrFrameSystem.EVertexFormat
  353. EVertexStep: typeof xrFrameSystem.EVertexStep
  354. EIndexType: typeof xrFrameSystem.EIndexType
  355. ETextureType: typeof xrFrameSystem.ETextureType
  356. ETextureFormat: typeof xrFrameSystem.ETextureFormat
  357. EWrapMode: typeof xrFrameSystem.EWrapMode
  358. EFilterMode: typeof xrFrameSystem.EFilterMode
  359. EUniformType: typeof xrFrameSystem.EUniformType
  360. ECullMode: typeof xrFrameSystem.ECullMode
  361. EFaceWinding: typeof xrFrameSystem.EFaceWinding
  362. ECompareFunc: typeof xrFrameSystem.ECompareFunc
  363. EStencilOp: typeof xrFrameSystem.EStencilOp
  364. EBlendFactor: typeof xrFrameSystem.EBlendFactor
  365. EBlendEquation: typeof xrFrameSystem.EBlendEquation
  366. EColorMask: typeof xrFrameSystem.EColorMask
  367. EPixelType: typeof xrFrameSystem.EPixelType
  368. ELoadAction: typeof xrFrameSystem.ELoadAction
  369. EDataModelType: typeof xrFrameSystem.EDataModelType
  370. EMeshRenderType: typeof xrFrameSystem.EMeshRenderType
  371. EPrimitiveType: typeof xrFrameSystem.EPrimitiveType
  372. EShadowMode: typeof xrFrameSystem.EShadowMode
  373. EShadowFitMode: typeof xrFrameSystem.EShadowFitMode
  374. EVertexLayoutUsage: typeof xrFrameSystem.EVertexLayoutUsage
  375. EVertexBatchOperator: typeof xrFrameSystem.EVertexBatchOperator
  376. EAnimationBlendType: typeof xrFrameSystem.EAnimationBlendType
  377. EUseDefaultAddedAction: typeof xrFrameSystem.EUseDefaultAddedAction
  378. EUseDefaultRetainedAction: typeof xrFrameSystem.EUseDefaultRetainedAction
  379. EUseDefaultRemovedAction: typeof xrFrameSystem.EUseDefaultRemovedAction
  380. EEventType: typeof xrFrameSystem.EEventType
  381. EARTrackerState: typeof xrFrameSystem.EARTrackerState
  382. EShapeType: typeof xrFrameSystem.EShapeType
  383. ECapsuleShapeDirection: typeof xrFrameSystem.ECapsuleShapeDirection
  384. EShareRecordState: typeof xrFrameSystem.EShareRecordState
  385. useParamsEaseFuncs: typeof xrFrameSystem.useParamsEaseFuncs
  386. noneParamsEaseFuncs: typeof xrFrameSystem.noneParamsEaseFuncs
  387. TransformSchema: IComponentSchema
  388. AssetLoadSchema: IComponentSchema
  389. AssetsSchema: IComponentSchema
  390. CameraSchema: IComponentSchema
  391. GLTFSchema: IComponentSchema
  392. LightSchema: IComponentSchema
  393. AssetMaterialSchema: IComponentSchema
  394. MeshSchema: IComponentSchema
  395. TextSchema: IComponentSchema
  396. AssetRenderTextureSchema: IComponentSchema
  397. EnvSchema: IComponentSchema
  398. AnimatorSchema: IComponentSchema
  399. CameraOrbitControlSchema: IComponentSchema
  400. ARTrackSchema: IComponentSchema
  401. SphereShapeSchema: IComponentSchema
  402. MeshShapeSchema: IComponentSchema
  403. CapsuleShapeSchema: IComponentSchema
  404. CubeShapeSchema: IComponentSchema
  405. RigidbodySchema: IComponentSchema
  406. ShapeInteractSchema: IComponentSchema
  407. ParticleSchema: IComponentSchema
  408. RenderSystemSchema: IComponentSchema
  409. ARSystemSchema: IComponentSchema
  410. BasicDefaultComponents: IEntityComponents
  411. SceneDefaultComponents: IEntityComponents
  412. NodeDefaultComponents: IEntityComponents
  413. ShadowDefaultComponents: IEntityComponents
  414. CameraDefaultComponents: IEntityComponents
  415. MeshDefaultComponents: IEntityComponents
  416. LightDefaultComponents: IEntityComponents
  417. GLTFDefaultComponents: IEntityComponents
  418. AssetMaterialDefaultComponents: IEntityComponents
  419. AssetRenderTextureDefaultComponents: IEntityComponents
  420. AssetsDefaultComponents: IEntityComponents
  421. EnvDefaultComponents: IEntityComponents
  422. ARTrackerDefaultComponents: IEntityComponents
  423. TextDefaultComponents: IEntityComponents
  424. ParticleDefaultComponents: IEntityComponents
  425. AssetPostProcessDefaultComponents: IEntityComponents
  426. BasicDataMapping: { [key: string]: string[] }
  427. SceneDataMapping: { [key: string]: string[] }
  428. NodeDataMapping: { [key: string]: string[] }
  429. ShadowDataMapping: { [key: string]: string[] }
  430. CameraDataMapping: { [key: string]: string[] }
  431. MeshDataMapping: { [key: string]: string[] }
  432. LightDataMapping: { [key: string]: string[] }
  433. GLTFDataMapping: { [key: string]: string[] }
  434. AssetMaterialDataMapping: { [key: string]: string[] }
  435. AssetRenderTextureDataMapping: { [key: string]: string[] }
  436. AssetLoadDataMapping: { [key: string]: string[] }
  437. EnvDataMapping: { [key: string]: string[] }
  438. ARTrackerDataMapping: { [key: string]: string[] }
  439. TextDataMapping: { [key: string]: string[] }
  440. ParticleDataMapping: { [key: string]: string[] }
  441. AssetPostProcessDataMapping: { [key: string]: string[] }
  442. }
  443. }
  444. declare module 'XrFrame/xrFrameSystem' {
  445. /**
  446. * xrFrameSystem.ts
  447. *
  448. * * @Date : 4/28/2022, 5:02:28 PM
  449. */
  450. import { Kanata } from 'XrFrame/ext'
  451. export {
  452. default as Component,
  453. registerComponent,
  454. IComponentSchema
  455. } from 'XrFrame/core/Component'
  456. export {
  457. default as Element,
  458. registerElement,
  459. IEntityComponents,
  460. BasicDefaultComponents,
  461. BasicDataMapping
  462. } from 'XrFrame/core/Element'
  463. export {
  464. registerDataValue,
  465. IDataValueHandler,
  466. ITextureWrapper,
  467. isTextureWrapper
  468. } from 'XrFrame/core/DataValue'
  469. export {
  470. default as EventManager,
  471. TEventCallback
  472. } from 'XrFrame/core/EventManager'
  473. export { genLspMeta } from 'XrFrame/genLspMeta'
  474. export * from 'XrFrame/components'
  475. export * from 'XrFrame/elements'
  476. export * from 'XrFrame/systems'
  477. export * from 'XrFrame/loader'
  478. export {
  479. default as Effect,
  480. IEffectAsset,
  481. IRenderStates
  482. } from 'XrFrame/assets/Effect'
  483. export { default as Geometry, ISubMesh } from 'XrFrame/assets/Geometry'
  484. export { default as Material } from 'XrFrame/assets/Material'
  485. export {
  486. default as VideoTexture,
  487. IVideoTextureOptions,
  488. EVideoState
  489. } from 'XrFrame/assets/VideoTexture'
  490. export {
  491. default as RenderTexture,
  492. IRenderTarget,
  493. IRenderTextureOptions
  494. } from 'XrFrame/assets/RenderTexture'
  495. export {
  496. default as GLTFModel,
  497. IGLTFModelOptions
  498. } from 'XrFrame/assets/GLTFModel'
  499. export { default as EnvData, IEnvDataOptions } from 'XrFrame/assets/EnvData'
  500. export {
  501. default as Animation,
  502. TDirection
  503. } from 'XrFrame/animation/Animation'
  504. export {
  505. default as KeyframeAnimation,
  506. IKeyframeAnimationData,
  507. IKeyframeAnimationInfo,
  508. IKeyframeAnimationOptions
  509. } from 'XrFrame/animation/KeyframeAnimation'
  510. export {
  511. default as Atlas,
  512. IAtlasOptions,
  513. IAtlasCreationOptions
  514. } from 'XrFrame/assets/Atlas'
  515. export {
  516. default as PostProcess,
  517. IPostProcessOptions
  518. } from 'XrFrame/assets/PostProcess'
  519. export {
  520. registerEffect,
  521. registerGeometry,
  522. registerTexture,
  523. registerMaterial,
  524. registerUniformDesc,
  525. registerVertexDataDesc,
  526. registerVertexLayout
  527. } from 'XrFrame/assets/factories'
  528. export {
  529. useParamsEaseFuncs,
  530. noneParamsEaseFuncs
  531. } from 'XrFrame/assets/easeFunctions'
  532. export * from 'XrFrame/physics/exports'
  533. export { default as Vector2 } from 'XrFrame/math/vector2'
  534. export { default as Vector3 } from 'XrFrame/math/vector3'
  535. export { default as Vector4 } from 'XrFrame/math/vector4'
  536. export { default as Quaternion } from 'XrFrame/math/quaternion'
  537. export { default as Matrix3 } from 'XrFrame/math/matrix3'
  538. export { default as Matrix4 } from 'XrFrame/math/matrix4'
  539. export { default as Color } from 'XrFrame/math/color'
  540. export { default as OBB } from 'XrFrame/math/OBB'
  541. export { default as BoundBall } from 'XrFrame/math/boundBall'
  542. export { default as BoundBox } from 'XrFrame/math/boundBox'
  543. export { default as Spherical } from 'XrFrame/math/Spherical'
  544. export {
  545. ITextureOptions,
  546. IEngineSettings,
  547. EVertexFormat,
  548. EVertexStep,
  549. EIndexType,
  550. ETextureType,
  551. ETextureFormat,
  552. EWrapMode,
  553. EFilterMode,
  554. EUniformType,
  555. ECullMode,
  556. EFaceWinding,
  557. ECompareFunc,
  558. EStencilOp,
  559. EBlendFactor,
  560. EBlendEquation,
  561. EColorMask,
  562. EPixelType,
  563. ELoadAction,
  564. EDataModelType,
  565. EMeshRenderType,
  566. EPrimitiveType,
  567. EShadowMode,
  568. EShadowFitMode,
  569. EVertexLayoutUsage,
  570. EVertexBatchOperator,
  571. EAnimationBlendType,
  572. EUseDefaultAddedAction,
  573. EUseDefaultRetainedAction,
  574. EUseDefaultRemovedAction,
  575. IHandle,
  576. IVertexLayoutOptions,
  577. IVertexDataDescriptorOptions,
  578. IUniformDescriptorOptions,
  579. IImage,
  580. IRealDownloader,
  581. IDownloader,
  582. IFontSetting,
  583. IFeatures,
  584. IRect,
  585. IViewAction,
  586. IView,
  587. IAttachment,
  588. IRenderPassDescriptor,
  589. EEventType,
  590. IGlyphInfo,
  591. IEventBridge,
  592. INativeMap,
  593. ILongIntNativeMap
  594. } from 'XrFrame/kanata/lib/kanata'
  595. export type Texture = Kanata.Texture
  596. export type UniformDescriptor = Kanata.UniformDescriptor
  597. export type UniformBlock = Kanata.UniformBlock
  598. export type VertexLayout = Kanata.VertexLayout
  599. }
  600. declare module 'XrFrame/ext' {
  601. /**
  602. * ext.ts
  603. *
  604. * * @Date : 2022/3/17下午1:43:48
  605. */
  606. import * as Kanata from 'XrFrame/kanata/lib/kanata'
  607. const exparser: any
  608. type Scene = import('XrFrame/core/Scene').default
  609. const _wx: any
  610. const Phys3D: any
  611. function addKanata(scene: Scene, kanata: Kanata.IKanataInstance): void
  612. function removeKanata(scene: Scene): void
  613. function getKanata(scene: Scene): Kanata.IKanataInstance
  614. function __getKanataSuperHackDontUseIt(): Kanata.IKanataInstance
  615. export {
  616. Kanata,
  617. exparser,
  618. Phys3D,
  619. _wx,
  620. addKanata,
  621. removeKanata,
  622. getKanata,
  623. __getKanataSuperHackDontUseIt
  624. }
  625. }
  626. declare module 'XrFrame/core/Component' {
  627. type Element = import('XrFrame/core/Element').default
  628. /**
  629. * `Component`属性的注解接口。
  630. *
  631. * `key`是可以写在组件对应于`xml`中的属性的名字。
  632. * `type`是属性的类型,由{@link registerDataValue}注册。
  633. * 可选的`defaultValue`可以定义默认值。
  634. */
  635. export interface IComponentSchema {
  636. [key: string]: {
  637. type: string
  638. defaultValue?: any
  639. }
  640. }
  641. /**
  642. * 组件,系统核心之一。
  643. *
  644. * 组件就是`wxml`的标签上写的那些`attribute`,比如`<xr-element transform="position: 1 1 1" />`中,`transform`就是一个组件,`position`是它的一个属性。
  645. * 这些属性可以在`schema`中被定义,变化时会触发对应的生命周期。
  646. * 自定义组件最后使用{@link registerComponent},组件的属性可以使用代理规则来简化,比如以上的标签可以简化为`<xr-element position="1 1 1" />`,详见{@link Element}。
  647. *
  648. * @template IData 组件数据的类型,应当和`schema`中一致,用于TS类型推断。
  649. */
  650. export default class Component<IData> {
  651. /**
  652. * @internal
  653. */
  654. static TYPE: string
  655. static EVENTS: string[]
  656. /**
  657. * @internal
  658. */
  659. static SPLIT_DATA(dataStr: string): {
  660. [key: string]: string
  661. }
  662. /**
  663. * 自定义组件的`schema`。
  664. */
  665. readonly schema: IComponentSchema
  666. /**
  667. * 自定义组件的更新优先级。
  668. */
  669. readonly priority: number
  670. __DATA_TYPE: IData
  671. protected _version: number
  672. protected _currentData: IData
  673. /**
  674. * 挂载的元素。
  675. */
  676. get el(): import('XrFrame/core/Element').default
  677. /**
  678. * 当前场景。
  679. */
  680. get scene(): import('XrFrame/core/Scene').default
  681. /**
  682. * 当前版本,每次有数据更新都会增加,可以用作和其他组件合作的依据。
  683. */
  684. get version(): number
  685. /**
  686. * 不通过`xml`而是直接设置`data`,注意值的类型需要和`schema`中一致。
  687. */
  688. setData(data: Partial<IData>): void
  689. /**
  690. * 设置一个数据。
  691. */
  692. setDataOne<T extends keyof IData>(key: T, value: IData[T]): void
  693. /**
  694. * 获取一个当前值。
  695. */
  696. getData<T extends keyof IData>(key: T): IData[T]
  697. /**
  698. * @internal
  699. */
  700. /**
  701. * @internal
  702. */
  703. /**
  704. * @internal
  705. */
  706. /**
  707. * @internal
  708. * 仅针对某些hack情况!
  709. */
  710. /**
  711. * @internal
  712. */
  713. /**
  714. * @internal
  715. */
  716. /**
  717. * @internal
  718. */
  719. /**
  720. * @internal
  721. */
  722. /**
  723. * @internal
  724. */
  725. /**
  726. * @internal
  727. */
  728. /**
  729. * 所挂载的`element`被挂载到场景时触发的回调。
  730. */
  731. onAdd(parent: Element, data: IData): void
  732. /**
  733. * 数据更新时触发的回调。
  734. */
  735. onUpdate(data: IData, preData: IData): void
  736. /**
  737. * 渲染每帧触发的回调。
  738. * @param deltaTime 单位为毫秒(ms)。
  739. */
  740. onTick(deltaTime: number, data: IData): void
  741. /**
  742. * 所挂载的`element`从父节点`parent`被移除时,或者自己从`element`上被移除时,触发的回调。
  743. * 一般用于消除功能的运作。
  744. * **如果一个组件的元素直接被销毁了,那这个组件就不会经历onRemove而是直接进入onRelease。**
  745. */
  746. onRemove(parent: Element, data: IData): void
  747. /**
  748. * 从被挂载的`element`上被移除,或是`element`被销毁时,触发的回调。
  749. * 一般用于释放持有的资源。
  750. */
  751. onRelease(data: IData): void
  752. }
  753. export const TABLE: {
  754. [type: string]: new () => Component<any>
  755. }
  756. /**
  757. * @internal
  758. */
  759. export function getComponent(type: string): new () => Component<any>
  760. /**
  761. * 向系统中注册一个组件,然后可以在`xml`中使用。
  762. */
  763. export function registerComponent(
  764. type: string,
  765. clz: new () => Component<any>
  766. ): void
  767. export {}
  768. }
  769. declare module 'XrFrame/core/Element' {
  770. /**
  771. * Element.ts
  772. *
  773. * * @Date : 2022/4/1上午10:34:06
  774. */
  775. import Component from 'XrFrame/core/Component'
  776. import EventManager, {
  777. TFrameworkEventTrigger
  778. } from 'XrFrame/core/EventManager'
  779. /**
  780. * `Element`的默认组件集接口。
  781. *
  782. * `name`是组件注册时的名字,`key`是要默认设置的组件的属性名字,值是默认值,但应当和`xml`中一致,为**字符串**。
  783. */
  784. export interface IEntityComponents {
  785. [name: string]: {
  786. [key: string]: string
  787. }
  788. }
  789. /**
  790. * 空的默认组件集。
  791. */
  792. export const BasicDefaultComponents: IEntityComponents
  793. /**
  794. * 空的默认组件映射。
  795. */
  796. export const BasicDataMapping: {
  797. [key: string]: string[]
  798. }
  799. /**
  800. * 元素,系统核心之一。
  801. *
  802. * 本质上就是对应于`xml`中标签,所有的标签的实现都是继承自`Element`的,其一般不包含逻辑,仅仅是通过`defaultComponents`和`dataMapping`定义组件的集合与映射。
  803. * 自定义元素最后使用{#@link registerElement}。
  804. */
  805. export default class Element {
  806. static TYPE: string
  807. /**
  808. * `Element`的默认组件集合,详见{@link IEntityComponents}。
  809. */
  810. readonly defaultComponents: IEntityComponents
  811. /**
  812. * `Element`的数据映射。它是为了给组件的属性提供一个方便的用法,比如:
  813. * ```ts
  814. * {
  815. * position: [transform, position]
  816. * }
  817. * ```
  818. * 就是将`xml`中写在这个`Element`的`position`直接映射到了`transform`组件的`position`属性上。
  819. *
  820. * **通常来讲,所有的驼峰如`nodeId`都会被映射为小写加中划线`node-id`**。
  821. */
  822. readonly dataMapping: {
  823. [key: string]: string[]
  824. }
  825. /**
  826. * @internal
  827. */
  828. readonly neverTick: boolean
  829. /**
  830. * 名字,写在`xml`上的那个`name`,不唯一。
  831. */
  832. get name(): string
  833. set name(value: string)
  834. /**
  835. * @internal
  836. */
  837. /**
  838. * 元素是否在`xml`中,若是`xr-shadow`下的节点,则为`false`。
  839. */
  840. get inXML(): boolean
  841. /**
  842. * 场景实例。
  843. */
  844. get scene(): import('XrFrame/core/Scene').default
  845. /**
  846. * 父元素。
  847. */
  848. get parent(): Element
  849. /**
  850. * 事件管理器。
  851. */
  852. get event(): EventManager
  853. constructor(_type: string, triggerEvent: TFrameworkEventTrigger)
  854. /**
  855. * 获取第`index`个子元素。
  856. */
  857. getChildAtIndex<T extends Element = Element>(index: number): T
  858. /**
  859. * 通过`filter`获取子元素。
  860. */
  861. getChildByFilter<T extends Element = Element>(
  862. filter: (child: Element) => boolean
  863. ): T
  864. /**
  865. * 通过`filter`获取子元素列表。
  866. */
  867. getChildrenByFilter(filter: (child: Element) => boolean): Element[]
  868. /**
  869. * 通过元素的类获取子元素。
  870. */
  871. getChildByClass<T extends Element = Element>(
  872. clz: new (...args: any[]) => T
  873. ): T
  874. /**
  875. * 通过元素的名字`name`获取子元素。
  876. */
  877. getChildByName<T extends Element = Element>(name: string): T
  878. /**
  879. * 通过元素的名字`name`获取子元素们。
  880. */
  881. getChildrenByName(name: string): Element[]
  882. /**
  883. * 递归遍历元素的所有子孙节点。
  884. */
  885. dfs<T extends any>(
  886. callback: (element: Element, params?: T) => T,
  887. defaultParams?: T,
  888. excludeRoot?: boolean,
  889. stop?: (element: Element, params?: T) => boolean
  890. ): void
  891. /**
  892. * 手动添加一个`Component`。
  893. */
  894. addComponent<T extends Component<any>>(
  895. clz: new () => T,
  896. options?: T['__DATA_TYPE']
  897. ): T
  898. /**
  899. * 获取一个`Component`,可以使用类或者名字获取。
  900. */
  901. getComponent<T extends Component<any>>(clzName: string): T
  902. getComponent<T extends Component<any>>(clz: new () => T): T
  903. /**
  904. * 手动移除一个`Component`,注意保证其不在`xml`上。
  905. */
  906. removeComponent(clz: new () => Component<any>): void
  907. /**
  908. * 设置一个属性,对应于`xml`标签中的那些属性,值为字符串。
  909. * **一般建议使用`component`的`setData`方法**!!!
  910. */
  911. setAttribute(name: string, value: string): void
  912. /**
  913. * @internal
  914. */
  915. /**
  916. * @internal
  917. */
  918. /**
  919. * @internal
  920. */
  921. /**
  922. * @internal
  923. */
  924. _associateValue(_v: any): void
  925. /**
  926. * 手动添加一个子节点,**注意需要保证当前节点是`xr-shadow`或其子节点**。
  927. */
  928. addChild(child: Element): void
  929. /**
  930. * 手动移除一个子节点,**注意需要保证当前节点是`xr-shadow`或其子节点**。
  931. * **只调用removeChild没有办法走进子节点的onRelease里**,需要手动调用子节点的release才行。
  932. */
  933. removeChild(child: Element): void
  934. /**
  935. * 仅限自己创建的节点使用,否则后果自负。
  936. */
  937. setId(id: string): void
  938. /**
  939. * 仅限自己创建的节点使用,否则后果自负。
  940. */
  941. release(): void
  942. /**
  943. * @internal
  944. */
  945. _appendChild(_child: Element, custom?: boolean): void
  946. /**
  947. * @internal
  948. */
  949. _removeChild(_child: Element, _index?: number, custom?: boolean): void
  950. /**
  951. * @internal
  952. */
  953. _insertBefore(_child: Element, _before?: Element, _index?: number): void
  954. /**
  955. * @internal
  956. */
  957. _replaceChild(
  958. _child: Element,
  959. _oldChild?: Element,
  960. _index?: number
  961. ): void
  962. /**
  963. * @internal
  964. */
  965. _spliceBefore(
  966. _before: number | Element,
  967. _deleteCount: number,
  968. _list: Element
  969. ): void
  970. /**
  971. * @internal
  972. */
  973. _spliceAppend(_list: Element): void
  974. /**
  975. * @internal
  976. */
  977. _spliceRemove(_before: Element, _deleteCount: number): void
  978. /**
  979. * @internal
  980. */
  981. _setId(_id: string): void
  982. /**
  983. * @internal
  984. */
  985. _setStyleScope(_styleScope: number): void
  986. /**
  987. * @internal
  988. */
  989. _setStyle(_styleText: string): void
  990. /**
  991. * @internal
  992. */
  993. _addClass(_elementClass: string, _styleScope?: number): void
  994. /**
  995. * @internal
  996. */
  997. _removeClass(_elementClass: string, _styleScope?: number): void
  998. /**
  999. * @internal
  1000. */
  1001. /**
  1002. * @internal
  1003. */
  1004. _setAttribute(_name: string, _value: string): void
  1005. _removeAttribute(_name: string): void
  1006. _setText(_content: string): void
  1007. }
  1008. export const TABLE: {
  1009. [type: string]: typeof Element
  1010. }
  1011. export function getElement(type: string): typeof Element
  1012. /**
  1013. * 注册一个自定义元素。
  1014. * 注意注册的`type`在`xml`中使用时需要加上`xr-`前缀,比如注册`custom`类型的元素,使用时需要时`xr-custom`。
  1015. */
  1016. export function registerElement(type: string, clz: typeof Element): void
  1017. }
  1018. declare module 'XrFrame/core/DataValue' {
  1019. /**
  1020. * DataValue.ts
  1021. *
  1022. * * @Date : 2022/3/17下午2:22:19
  1023. */
  1024. import { Kanata } from 'XrFrame/ext'
  1025. import Scene from 'XrFrame/core/Scene'
  1026. /**
  1027. * 详见{@link registerDataValue}。
  1028. */
  1029. export interface IDataValueHandler<TDataValue> {
  1030. create(value: string, defaultValue: any, scene: Scene): TDataValue
  1031. }
  1032. export interface ITextureWrapper {
  1033. texture: Kanata.Texture
  1034. }
  1035. export function isTextureWrapper(value: any): value is ITextureWrapper
  1036. export function isDataValueHandlerExisted(type: string): boolean
  1037. /**
  1038. * 为组件在`xml`中写的属性值按类型注册解析器,由于`xml`传入的值全部都是字符串,所以需要解析,比如:
  1039. * ```ts
  1040. * registerDataValue('number', {create: (value: string, defaultValue: any, scene: Scene) => {
  1041. * return value === undefined ? defaultValue : parseFloat(value));
  1042. * }});
  1043. * ```
  1044. * 就是注册了`number`类型,后续在组件的`schema`中写的`number`类型数据,就会走这个解析器。
  1045. * **注意最后一个参数`scene`可以用于获取资源等,比如`scene.assets.getAssetWithState(type, value, defaultValue)`。**
  1046. * **如果是被资源加载器加载的资源,则会在资源加载器注册时自动注册数据类型,详见{@link AssetLoader}**。
  1047. *
  1048. * 已经注册的类型可见[组件数据解析](../../../component/xr-frame/core/data-values)。
  1049. */
  1050. export function registerDataValue<TDataValue>(
  1051. type: string,
  1052. handler: IDataValueHandler<TDataValue>
  1053. ): void
  1054. export function parseDataValue<TDataValue>(
  1055. type: string,
  1056. value: string,
  1057. defaultValue: any,
  1058. scene: Scene
  1059. ): TDataValue
  1060. }
  1061. declare module 'XrFrame/core/EventManager' {
  1062. /**
  1063. * EventManager.ts
  1064. *
  1065. * * @Date : 2022/3/17下午3:54:03
  1066. */
  1067. import Observable from 'XrFrame/core/Observable'
  1068. type Element = import('XrFrame/core/Element').default
  1069. /**
  1070. * 事件管理器的回调。
  1071. */
  1072. export type TEventCallback<TParams> = (
  1073. params: TParams,
  1074. sender: Element
  1075. ) => void
  1076. export type TFrameworkEventTrigger = (
  1077. name: string,
  1078. details: any,
  1079. options: {
  1080. bubbles?: boolean
  1081. composed?: boolean
  1082. capturePhase?: boolean
  1083. }
  1084. ) => void
  1085. /**
  1086. * 事件管理器。
  1087. *
  1088. * 每个`Element`都有自己的事件管理器,通过参数可以触发到`xml`。
  1089. */
  1090. export default class EventManager {
  1091. isEventManager: boolean
  1092. protected _observables: {
  1093. [type: string]: Observable
  1094. }
  1095. protected _caches: {
  1096. [type: string]: {
  1097. value: any
  1098. toXML: boolean
  1099. bubbles: boolean
  1100. }
  1101. }
  1102. protected _wxmlBind: {
  1103. [type: string]: boolean
  1104. }
  1105. constructor(_el: Element, _triggerElementEvent: TFrameworkEventTrigger)
  1106. /**
  1107. * 添加一个事件监听器。
  1108. */
  1109. add<TEvent = any>(
  1110. type: string,
  1111. callback: TEventCallback<TEvent>,
  1112. priority?: number
  1113. ): this
  1114. /**
  1115. * 添加一个事件监听器,触发一次后自动移除。
  1116. */
  1117. addOnce<TEvent = any>(
  1118. type: string,
  1119. callback: TEventCallback<TEvent>,
  1120. priority?: number
  1121. ): this
  1122. /**
  1123. * 移除一个事件监听器。
  1124. */
  1125. remove<TEvent = any>(
  1126. type: string,
  1127. callback: TEventCallback<TEvent>
  1128. ): this
  1129. /**
  1130. * 判断一个事件是否被注册。
  1131. * 注册是指用户绑定过了至少一个事件处理器,无论是来自于wxml还是JS。
  1132. */
  1133. has(type: string): boolean
  1134. /**
  1135. * 获取一个事件监听者数量。
  1136. * @internal
  1137. */
  1138. getCount(type: string): number
  1139. /**
  1140. * 清空某事件的所有监听器。
  1141. */
  1142. clear(type: string): this
  1143. /**
  1144. * 触发一个事件。
  1145. *
  1146. * @param type 要触发的事件类型。
  1147. * @param event 事件的值。
  1148. * @param immediately 是否要将事件立即分发,如果不则会先缓存,之后在每一帧更新前统一分发,避免不必要的分发。
  1149. * @param toXML 是否要派发到`xml`绑定的事件中。
  1150. * @param bubbles 是否要进行事件冒泡。
  1151. */
  1152. trigger<TEvent = any>(
  1153. type: string,
  1154. event?: TEvent,
  1155. immediately?: boolean,
  1156. toXML?: boolean,
  1157. bubbles?: boolean
  1158. ): this
  1159. /**
  1160. * 分发某个缓存的事件,一般不需要自行触发。
  1161. */
  1162. flush(type: string): this
  1163. /**
  1164. * 分发所有缓存的事件,一般不需要自行触发。
  1165. */
  1166. flushAll(): this
  1167. }
  1168. export {}
  1169. }
  1170. declare module 'XrFrame/genLspMeta' {
  1171. import { Scene } from 'XrFrame/elements'
  1172. export interface IXRFrameMeta {
  1173. elements: {
  1174. name: string[]
  1175. meta: {
  1176. [name: string]: IXRFrameElement
  1177. }
  1178. }
  1179. components: {
  1180. name: string[]
  1181. meta: {
  1182. [name: string]: IXRFrameComponent
  1183. }
  1184. }
  1185. }
  1186. export interface IXRFrameElement {
  1187. defaultComps: string[]
  1188. mappings: {
  1189. name: string[]
  1190. meta: {
  1191. [name: string]: string[]
  1192. }
  1193. }
  1194. events: string[]
  1195. limitComps?: string[]
  1196. }
  1197. export interface IXRFrameComponent {
  1198. keys: string[]
  1199. meta: {
  1200. [key: string]: IXRFrameData
  1201. }
  1202. events: string[]
  1203. }
  1204. export interface IXRFrameData {
  1205. type: string
  1206. defaultValue: any
  1207. map?: IXRFrameMap
  1208. enum?: IXRFrameEnum
  1209. }
  1210. export interface IXRFrameMap {
  1211. keys: string[]
  1212. meta: {
  1213. [key: string]: {
  1214. type: string
  1215. defaultValue?: string | number
  1216. enum?: IXRFrameEnum
  1217. }
  1218. }
  1219. }
  1220. export interface IXRFrameEnum {
  1221. values: Array<{
  1222. value: string | number
  1223. desc?: string
  1224. }>
  1225. }
  1226. export function genLspMeta(scene: Scene): IXRFrameMeta
  1227. }
  1228. declare module 'XrFrame/components' {
  1229. export {
  1230. default as Transform,
  1231. ITransformData,
  1232. TransformSchema
  1233. } from 'XrFrame/components/Transform'
  1234. export {
  1235. default as AssetLoad,
  1236. AssetLoadSchema
  1237. } from 'XrFrame/components/AssetLoad'
  1238. export {
  1239. default as Assets,
  1240. IAssetsData,
  1241. AssetsSchema
  1242. } from 'XrFrame/components/Assets'
  1243. export {
  1244. default as Camera,
  1245. ICameraData,
  1246. CameraSchema,
  1247. TCameraBackground
  1248. } from 'XrFrame/components/Camera'
  1249. export {
  1250. default as GLTF,
  1251. IGLTFData,
  1252. GLTFSchema
  1253. } from 'XrFrame/components/GLTF'
  1254. export {
  1255. default as Light,
  1256. ILightData,
  1257. LightSchema
  1258. } from 'XrFrame/components/Light'
  1259. export {
  1260. default as AssetMaterial,
  1261. IAssetMaterialData,
  1262. AssetMaterialSchema
  1263. } from 'XrFrame/components/AssetMaterial'
  1264. export {
  1265. default as Mesh,
  1266. IMeshData,
  1267. MeshSchema
  1268. } from 'XrFrame/components/Mesh'
  1269. export {
  1270. default as Text,
  1271. ITextData,
  1272. TextSchema
  1273. } from 'XrFrame/components/text/Text'
  1274. export { default as Particle } from 'XrFrame/components/particle/Particle'
  1275. export {
  1276. IParticleData,
  1277. ParticleSchema
  1278. } from 'XrFrame/components/particle/BasicParticle'
  1279. export {
  1280. default as AssetRenderTexture,
  1281. IAssetRenderTextureData,
  1282. AssetRenderTextureSchema
  1283. } from 'XrFrame/components/AssetRenderTexture'
  1284. export { default as Env, IEnvData, EnvSchema } from 'XrFrame/components/Env'
  1285. export {
  1286. default as Animator,
  1287. IAnimatorData,
  1288. AnimatorSchema,
  1289. IAnimationPlayOptions,
  1290. IAnimatorAutoPlay
  1291. } from 'XrFrame/components/Animator'
  1292. export {
  1293. default as CameraOrbitControl,
  1294. ICameraOrbitControlData,
  1295. CameraOrbitControlSchema
  1296. } from 'XrFrame/components/CameraOrbitControl'
  1297. export {
  1298. default as ARTracker,
  1299. IARTrackerData,
  1300. ARTrackSchema,
  1301. TTrackMode,
  1302. EARTrackerState,
  1303. IARTrackerRawData
  1304. } from 'XrFrame/components/ARTracker'
  1305. export {
  1306. default as Shape,
  1307. IShapeData,
  1308. EShapeType
  1309. } from 'XrFrame/components/physics/Shape'
  1310. export {
  1311. default as SphereShape,
  1312. ISphereShapeData,
  1313. SphereShapeSchema
  1314. } from 'XrFrame/components/physics/SphereShape'
  1315. export {
  1316. default as MeshShape,
  1317. IMeshShapeData,
  1318. MeshShapeSchema
  1319. } from 'XrFrame/components/physics/MeshShape'
  1320. export {
  1321. default as CapsuleShape,
  1322. ICapsuleShapeData,
  1323. CapsuleShapeSchema,
  1324. ECapsuleShapeDirection
  1325. } from 'XrFrame/components/physics/CapsuleShape'
  1326. export {
  1327. default as CubeShape,
  1328. ICubeShapeData,
  1329. CubeShapeSchema
  1330. } from 'XrFrame/components/physics/CubeShape'
  1331. export {
  1332. default as Rigidbody,
  1333. IRigidbodyData,
  1334. RigidbodySchema
  1335. } from 'XrFrame/components/physics/Rigidbody'
  1336. export {
  1337. default as ShapeInteract,
  1338. IShapeInteractData,
  1339. ShapeInteractSchema
  1340. } from 'XrFrame/components/physics/ShapeInteract'
  1341. export {
  1342. default as ShapeGizmos,
  1343. IShapeGizmosData
  1344. } from 'XrFrame/components/gizmo/ShapeGizmos'
  1345. export {
  1346. default as AssetPostProcess,
  1347. IAssetPostProcessData
  1348. } from 'XrFrame/components/AssetPostProcess'
  1349. }
  1350. declare module 'XrFrame/elements' {
  1351. export {
  1352. default as Scene,
  1353. SceneDataMapping,
  1354. SceneDefaultComponents
  1355. } from 'XrFrame/core/Scene'
  1356. export {
  1357. default as XRNode,
  1358. NodeDataMapping,
  1359. NodeDefaultComponents
  1360. } from 'XrFrame/elements/xr-node'
  1361. export {
  1362. default as XRShadow,
  1363. ShadowDataMapping,
  1364. ShadowDefaultComponents
  1365. } from 'XrFrame/elements/xr-shadow'
  1366. export {
  1367. default as XRCamera,
  1368. CameraDataMapping,
  1369. CameraDefaultComponents
  1370. } from 'XrFrame/elements/xr-camera'
  1371. export {
  1372. default as XRMesh,
  1373. MeshDataMapping,
  1374. MeshDefaultComponents
  1375. } from 'XrFrame/elements/xr-mesh'
  1376. export {
  1377. default as XRLight,
  1378. LightDataMapping,
  1379. LightDefaultComponents
  1380. } from 'XrFrame/elements/xr-light'
  1381. export {
  1382. default as XRGLTF,
  1383. GLTFDataMapping,
  1384. GLTFDefaultComponents
  1385. } from 'XrFrame/elements/xr-gltf'
  1386. export {
  1387. default as XRMaterial,
  1388. AssetMaterialDataMapping,
  1389. AssetMaterialDefaultComponents
  1390. } from 'XrFrame/elements/xr-asset-material'
  1391. export {
  1392. default as XRAssetRenderTexture,
  1393. AssetRenderTextureDataMapping,
  1394. AssetRenderTextureDefaultComponents
  1395. } from 'XrFrame/elements/xr-asset-render-texture'
  1396. export {
  1397. default as XRAssetLoad,
  1398. AssetLoadDataMapping
  1399. } from 'XrFrame/elements/xr-asset-load'
  1400. export {
  1401. default as XRAssets,
  1402. AssetsDefaultComponents
  1403. } from 'XrFrame/elements/xr-assets'
  1404. export {
  1405. default as XREnv,
  1406. EnvDataMapping,
  1407. EnvDefaultComponents
  1408. } from 'XrFrame/elements/xr-env'
  1409. export {
  1410. default as XRARTracker,
  1411. ARTrackerDataMapping,
  1412. ARTrackerDefaultComponents
  1413. } from 'XrFrame/elements/xr-ar-tracker'
  1414. export {
  1415. default as XRText,
  1416. TextDataMapping,
  1417. TextDefaultComponents
  1418. } from 'XrFrame/elements/xr-text'
  1419. export {
  1420. default as XRParticle,
  1421. ParticleDataMapping,
  1422. ParticleDefaultComponents
  1423. } from 'XrFrame/elements/xr-particle'
  1424. export {
  1425. default as XRAssetPostProcess,
  1426. AssetPostProcessDataMapping,
  1427. AssetPostProcessDefaultComponents
  1428. } from 'XrFrame/elements/xr-asset-post-process'
  1429. }
  1430. declare module 'XrFrame/systems' {
  1431. export {
  1432. default as AssetsSystem,
  1433. IAssetsSystemData
  1434. } from 'XrFrame/systems/AssetsSystem'
  1435. export {
  1436. default as NodeSystem,
  1437. INodeSystemData
  1438. } from 'XrFrame/systems/NodeSystem'
  1439. export {
  1440. default as TickSystem,
  1441. ITickSystemData
  1442. } from 'XrFrame/systems/TickSystem'
  1443. export {
  1444. default as AnimationSystem,
  1445. IAnimationSystemData
  1446. } from 'XrFrame/systems/AnimationSystem'
  1447. export {
  1448. default as VideoSystem,
  1449. IVideoSystemData
  1450. } from 'XrFrame/systems/VideoSystem'
  1451. export {
  1452. default as RenderSystem,
  1453. IRenderSystemData,
  1454. RenderSystemSchema
  1455. } from 'XrFrame/systems/RenderSystem'
  1456. export {
  1457. default as PhysicsSystem,
  1458. IPhysicsSystemData,
  1459. IShapeDragEvent,
  1460. IShapeTouchEvent
  1461. } from 'XrFrame/systems/PhysicsSystem'
  1462. export {
  1463. default as ARSystem,
  1464. IARSystemData,
  1465. ARSystemSchema,
  1466. IARRawData
  1467. } from 'XrFrame/systems/ARSystem'
  1468. export {
  1469. default as ShareSystem,
  1470. IShareSystemData,
  1471. IShareCaptureOptions,
  1472. IShareRecordOptions,
  1473. EShareRecordState
  1474. } from 'XrFrame/systems/ShareSystem'
  1475. export {
  1476. default as GizmoSystem,
  1477. IGizmoSystemData
  1478. } from 'XrFrame/systems/GizmoSystem'
  1479. }
  1480. declare module 'XrFrame/loader' {
  1481. export {
  1482. default as AssetLoader,
  1483. ILoaderOptionsSchema,
  1484. registerAssetLoader
  1485. } from 'XrFrame/loader/AssetLoader'
  1486. export {
  1487. default as TextureLoader,
  1488. ITextureLoaderOptions
  1489. } from 'XrFrame/loader/TextureLoader'
  1490. export {
  1491. default as ImageLoader,
  1492. IImageLoaderOptions
  1493. } from 'XrFrame/loader/ImageLoader'
  1494. export {
  1495. default as CubeTextureLoader,
  1496. ICubeTextureLoaderOptions
  1497. } from 'XrFrame/loader/CubeTextureLoader'
  1498. export {
  1499. default as VideoTextureLoader,
  1500. IVideoTextureLoaderOptions
  1501. } from 'XrFrame/loader/VideoTextureLoader'
  1502. export {
  1503. default as EnvDataLoader,
  1504. IEnvDataLoaderOptions
  1505. } from 'XrFrame/loader/EnvDataLoader'
  1506. export {
  1507. default as GLTFLoader,
  1508. IGLTFLoaderOptions
  1509. } from 'XrFrame/loader/GlTFLoader'
  1510. export {
  1511. default as KeyframeLoader,
  1512. IKeyframeLoaderOptions
  1513. } from 'XrFrame/loader/KeyframeLoader'
  1514. export {
  1515. default as RawLoader,
  1516. IRawLoaderOptions
  1517. } from 'XrFrame/loader/RawLoader'
  1518. export {
  1519. default as AtlasLoader,
  1520. IAtlasLoaderOptions
  1521. } from 'XrFrame/loader/AtlasLoader'
  1522. }
  1523. declare module 'XrFrame/assets/Effect' {
  1524. /**
  1525. * Effect.ts
  1526. *
  1527. * * @Date : 2022/3/16下午4:44:48
  1528. */
  1529. import { ITextureWrapper } from 'XrFrame/core/DataValue'
  1530. import { Kanata } from 'XrFrame/ext'
  1531. import { IAssetWithState } from 'XrFrame/loader/types'
  1532. type Scene = import('XrFrame/core/Scene').default
  1533. /**
  1534. * 支持定制的渲染状态。
  1535. *
  1536. * 大部分状态会定制的开发者应该看名字就懂,就不详细说明了。
  1537. */
  1538. export interface IRenderStates {
  1539. /**
  1540. * 渲染队列,大于等于`2500`为透明物体,否则为非透明物体。
  1541. */
  1542. renderQueue?: number
  1543. blendOn?: boolean
  1544. /**
  1545. * 不要使用,使用`blendSrcRGB`。
  1546. */
  1547. blendSrc?: Kanata.EBlendFactor
  1548. blendSrcRGB?: Kanata.EBlendFactor
  1549. blendSrcAlpha?: Kanata.EBlendFactor
  1550. /**
  1551. * 不要使用,使用`blendDstRGB`。
  1552. */
  1553. blendDst?: Kanata.EBlendFactor
  1554. blendDstRGB?: Kanata.EBlendFactor
  1555. blendDstAlpha?: Kanata.EBlendFactor
  1556. blendFunc?: Kanata.EBlendEquation
  1557. cullOn?: boolean
  1558. cullFace?: Kanata.ECullMode
  1559. depthWrite?: boolean
  1560. depthTestOn?: boolean
  1561. depthTestComp?: Kanata.ECompareFunc
  1562. /**
  1563. * 在基础库版本`v2.31.1`以上支持。
  1564. */
  1565. colorWrite?: number
  1566. stencilWriteMask?: number
  1567. stencilTestOn?: boolean
  1568. stencilRef?: number
  1569. stencilReadMask?: number
  1570. stencilComp?: Kanata.ECompareFunc
  1571. stencilPass?: Kanata.EStencilOp
  1572. stencilFail?: Kanata.EStencilOp
  1573. stencilZFail?: Kanata.EStencilOp
  1574. primitiveType?: Kanata.EPrimitiveType
  1575. }
  1576. /**
  1577. * `Effect`资源的参数接口。
  1578. */
  1579. export interface IEffectAsset {
  1580. /**
  1581. * 名字,应当和`registerEffect`时的名字一致。
  1582. */
  1583. name: string
  1584. /**
  1585. * 属性,传给UniformBlock的一部分。
  1586. */
  1587. properties?: Array<{
  1588. /**
  1589. * 属性名字。
  1590. */
  1591. key: string
  1592. /**
  1593. * 属性类型。
  1594. */
  1595. type: Kanata.EUniformType
  1596. /**
  1597. * 如果属性是一个数组,比如`FLOAT4`数组,可以指定数组大小。
  1598. */
  1599. num?: number
  1600. /**
  1601. * 属性默认值,需要和类型匹配。
  1602. */
  1603. default: number[]
  1604. /**
  1605. * 属性对应的宏,当默认值被覆盖时,此宏开关会被开启,注意一定要有`WX_`前缀!
  1606. */
  1607. macro?: string
  1608. }>
  1609. /**
  1610. * 纹理资源,传给UniformBlock的另一部分。
  1611. */
  1612. images?: Array<{
  1613. /**
  1614. * 属性名字。
  1615. */
  1616. key: string
  1617. /**
  1618. * 属性默认值,是`Texture`类型资源的`asset-id`。
  1619. */
  1620. default: string
  1621. /**
  1622. * 属性对应的宏,当默认值被覆盖时,此宏开关会被开启,注意一定要有`WX_`前缀!
  1623. */
  1624. macro?: string
  1625. }>
  1626. /**
  1627. * 使用该`Effect`的`Material`的默认渲染队列。
  1628. * 透明物体需要大于`2500`!
  1629. */
  1630. defaultRenderQueue: number
  1631. /**
  1632. * 渲染时的`passes`,渲染时指定的`lightMode`的每个`pass`都会被按顺序绘制。
  1633. */
  1634. passes: Array<{
  1635. /**
  1636. * 渲染的光照模式。
  1637. */
  1638. lightMode:
  1639. | 'ForwardBase'
  1640. | 'ForwardAdd'
  1641. | 'ShadowCaster'
  1642. | 'PostProcess'
  1643. | 'Skybox'
  1644. | string
  1645. /**
  1646. * 这个pass的渲染状态是否可以被`Material`覆盖。
  1647. */
  1648. useMaterialRenderStates: boolean
  1649. /**
  1650. * 这个pass的默认渲染状态。
  1651. */
  1652. renderStates?: IRenderStates
  1653. /**
  1654. * 这个pass的使用的`shader`在`shaders`中的索引,第一个是顶点着色器,第二个是片段着色器。
  1655. */
  1656. shaders: [number, number]
  1657. }>
  1658. /**
  1659. * 所有的`shader`列表。
  1660. */
  1661. shaders: string[]
  1662. }
  1663. /**
  1664. * 特效资源,定义了渲染所需的大部分参数,被{@link Material}所引用。
  1665. */
  1666. export default class Effect {
  1667. protected _scene: Scene
  1668. readonly description: IEffectAsset
  1669. /**
  1670. * 获取名称。
  1671. */
  1672. get name(): string
  1673. /**
  1674. * 获取场景实例。
  1675. */
  1676. get scene(): import('XrFrame/core/Scene').default
  1677. /**
  1678. * Backend对应的对象。
  1679. * @internal
  1680. */
  1681. get kanataEffect(): import('XrFrame/kanata/lib/index').Effect
  1682. /**
  1683. * 有几个Pass。
  1684. */
  1685. get passCount(): number
  1686. /**
  1687. * 正在加载中的纹理。
  1688. * @internal
  1689. */
  1690. get loadingTextures(): {
  1691. [key: string]: IAssetWithState<
  1692. import('XrFrame/kanata/lib/index').Texture | ITextureWrapper
  1693. >
  1694. }
  1695. /**
  1696. * 用于UniformBlock构建时传入
  1697. * @internal
  1698. */
  1699. _shaderUniformBlockDesc?: Kanata.UniformDescriptor
  1700. /**
  1701. * 是否没有properties。
  1702. * @internal
  1703. */
  1704. _isNoProperties: boolean
  1705. /**
  1706. * 是否没有images。
  1707. * @internal
  1708. */
  1709. _isNoImages: boolean
  1710. /**
  1711. * 根据特效配置生成特效资源。
  1712. * **注意,不建议自己创建,请使用`scene.createEffect`。**
  1713. *
  1714. * @param description 配置。
  1715. */
  1716. constructor(_scene: Scene, description: IEffectAsset)
  1717. /**
  1718. * 材质调用方法,拷贝默认UniformBlock。
  1719. * @internal
  1720. */
  1721. /**
  1722. * @internal
  1723. */
  1724. /**
  1725. * 预编译
  1726. */
  1727. warmUp(): boolean
  1728. }
  1729. export {}
  1730. }
  1731. declare module 'XrFrame/assets/Geometry' {
  1732. import { Kanata } from 'XrFrame/ext'
  1733. import BoundBall from 'XrFrame/math/boundBall'
  1734. import BoundBox from 'XrFrame/math/boundBox'
  1735. import Vector3 from 'XrFrame/math/vector3'
  1736. type Scene = import('XrFrame/core/Scene').default
  1737. /**
  1738. * `Geometry`中的Submesh定义。
  1739. */
  1740. export interface ISubMesh {
  1741. /**
  1742. * 子mesh的顶点偏移。
  1743. */
  1744. offset: number
  1745. /**
  1746. * 子mesh的顶点数量。
  1747. */
  1748. length: number
  1749. /**
  1750. * 子mesh的材质索引。
  1751. */
  1752. materialIndex: number
  1753. }
  1754. /**
  1755. * 几何资源,用于定义渲染中的图元数据。
  1756. */
  1757. export default class Geometry {
  1758. protected _scene: Scene
  1759. /**
  1760. * @internal
  1761. */
  1762. static readonly RAWLENGTH = 10
  1763. /**
  1764. * @internal
  1765. * 从 96 切换到 76 个,换取多余的 uniform 上限
  1766. */
  1767. static readonly MAX_BONECOUNT = 76
  1768. /**
  1769. * @internal
  1770. */
  1771. /**
  1772. * 获取IndexBuffer。
  1773. */
  1774. get indexBuffer(): import('XrFrame/kanata/lib/index').IndexBuffer
  1775. /**
  1776. * 获取VertexBuffer。
  1777. */
  1778. get vertexBuffer(): import('XrFrame/kanata/lib/index').VertexBuffer
  1779. /**
  1780. * 获取IndexData。
  1781. * 这种类型的索引数据用于合批,只对于开启了`dynamicBatch`的Renderer有效。
  1782. * 注意如果已经获取过`indexBuffer`,将无效。
  1783. */
  1784. get indexData(): import('XrFrame/kanata/lib/index').IndexData
  1785. /**
  1786. * 获取VertexData。
  1787. * 这种类型的顶点数据用于合批,只对于开启了`dynamicBatch`的Renderer有效。
  1788. * 注意如果已经获取过`vertexBuffer`,将无效。
  1789. */
  1790. get vertexData(): import('XrFrame/kanata/lib/index').VertexData
  1791. /**
  1792. * 该mesh是否有效,有些情况可能会造成这种现象,例如vertexLayout和buffer数量不匹配
  1793. * 渲染时应该对该值做检查以防护
  1794. * @internal
  1795. */
  1796. get valid(): boolean
  1797. /**
  1798. * 包围球,只读。
  1799. */
  1800. get boundBall(): BoundBall
  1801. /**
  1802. * 包围盒,只读。
  1803. */
  1804. get boundBox(): BoundBox
  1805. /**
  1806. * 获取所有的SubMesh,不要修改。
  1807. * @internal
  1808. */
  1809. get subMeshes(): ISubMesh[]
  1810. /**
  1811. * 构造一个`Geometry`。
  1812. */
  1813. constructor(
  1814. _scene: Scene,
  1815. vertexLayout: Kanata.VertexLayout,
  1816. vBuffer: ArrayBufferView,
  1817. iBuffer: ArrayBufferView,
  1818. indexType?: Kanata.EIndexType
  1819. )
  1820. /**
  1821. * 更新VertexBuffer和IndexBuffer。
  1822. * @internal
  1823. */
  1824. uploadBufferData(
  1825. vBufferOffset: number,
  1826. vBufferLength: number,
  1827. iBufferOffset: number,
  1828. iBufferLength: number
  1829. ): void
  1830. /**
  1831. * 更新VertexBuffer。
  1832. * 仅在获取了`vertexBuffer`后有效。
  1833. */
  1834. uploadVertexBuffer(offset: number, buffer: ArrayBufferView): void
  1835. /**
  1836. * 更新IndexBuffer。
  1837. * 仅在获取了`indexBuffer`后有效。
  1838. */
  1839. uploadIndexBuffer(
  1840. offset: number,
  1841. buffer: Uint16Array | Uint32Array
  1842. ): void
  1843. /**
  1844. * 获取当前mesh有多少subMesh
  1845. */
  1846. getSubMeshCount(): number
  1847. /**
  1848. * 获取指定序号的subMesh的索引起始点
  1849. *
  1850. * @returns {number} 索引起始点,返回-1代表SubMesh不存在
  1851. */
  1852. getIndiceStart(subMeshIndex: number): number
  1853. /**
  1854. * 获取指定序号的subMesh的索引长度
  1855. *
  1856. * @returns {number} 索引长度,返回-1代表SubMesh不存在
  1857. */
  1858. getIndiceLength(subMeshIndex: number): number
  1859. /**
  1860. * 获取指定序号的subMesh的材质序号
  1861. *
  1862. * @returns {number} 材质序号,返回-1代表subMesh不存在
  1863. */
  1864. getMaterialIndex(subMeshIndex: number): number
  1865. /**
  1866. * 获取VertexLayout。
  1867. */
  1868. getVertexLayout(): Kanata.VertexLayout
  1869. /**
  1870. * 修改subMesh。
  1871. *
  1872. * @param length 索引长度
  1873. * @param offset 索引起始偏移
  1874. */
  1875. modifySubMesh(
  1876. subMeshIndex: number,
  1877. length: number,
  1878. offset: number
  1879. ): boolean
  1880. /**
  1881. * 增加subMesh。
  1882. *
  1883. * @param length 索引长度
  1884. * @param offset 索引起始偏移
  1885. */
  1886. addSubMesh(length: number, offset: number, materialIndex?: number): void
  1887. /**
  1888. * 动态更新包围盒,默认会自动计算包围球。
  1889. */
  1890. setBoundBox(
  1891. center: Vector3,
  1892. size: Vector3,
  1893. autoUpdateBall?: boolean
  1894. ): void
  1895. /**
  1896. * 动态更新包围球。
  1897. */
  1898. setBoundBall(center: Vector3, radius: number): void
  1899. /**
  1900. * 获取第一个顶点Buffer原始数据,可能没有值。
  1901. * @internal
  1902. */
  1903. /**
  1904. * 获取索引Buffer原始数据。
  1905. * @internal
  1906. */
  1907. }
  1908. export {}
  1909. }
  1910. declare module 'XrFrame/assets/Material' {
  1911. /**
  1912. * Material.ts
  1913. *
  1914. * * @Date : 2022/3/24上午11:21:54
  1915. */
  1916. import { Kanata } from 'XrFrame/ext'
  1917. import Effect, { IRenderStates } from 'XrFrame/assets/Effect'
  1918. import Vector2 from 'XrFrame/math/vector2'
  1919. import Vector3 from 'XrFrame/math/vector3'
  1920. import Vector4 from 'XrFrame/math/vector4'
  1921. import Matrix3 from 'XrFrame/math/matrix3'
  1922. import Matrix4 from 'XrFrame/math/matrix4'
  1923. import EnvData from 'XrFrame/assets/EnvData'
  1924. type Scene = import('XrFrame/core/Scene').default
  1925. /**
  1926. * 材质资源,一般被代理到{@link XRMaterial}元素。
  1927. */
  1928. export default class Material {
  1929. /**
  1930. * @internal
  1931. */
  1932. get kanataMaterial(): import('XrFrame/kanata/lib/index').Material
  1933. /**
  1934. * @internal
  1935. */
  1936. get uniforms(): import('XrFrame/kanata/lib/index').UniformBlock
  1937. set alphaMode(value: 'OPAQUE' | 'BLEND' | 'MASK')
  1938. set alphaCutOff(value: number)
  1939. /**
  1940. * 透明物体需要大于`2500`!
  1941. */
  1942. get renderQueue(): number
  1943. set renderQueue(value: number)
  1944. constructor(_scene: Scene)
  1945. /**
  1946. * 通过效果初始化材质。
  1947. */
  1948. initByEffect(
  1949. effect: Effect,
  1950. defaultUniforms?: {
  1951. [key: string]: ArrayLike<number> | number | Kanata.Texture
  1952. }
  1953. ): void
  1954. /**
  1955. * 获取一个Float
  1956. */
  1957. getFloat(key: string): number
  1958. /**
  1959. * 设置一个Float
  1960. *
  1961. * @returns 是否设置成功
  1962. */
  1963. setFloat(key: string, value: number): boolean
  1964. /**
  1965. * 设置一个Vector。
  1966. *
  1967. * @returns 是否设置成功。
  1968. */
  1969. setVector(key: string, value: Vector2 | Vector3 | Vector4): boolean
  1970. /**
  1971. * 获取一个Vector值的拷贝。
  1972. */
  1973. getVector(key: string): Vector2 | Vector3 | Vector4
  1974. /**
  1975. * 设置一个Matrix
  1976. *
  1977. * @returns 是否设置成功
  1978. */
  1979. setMatrix(key: string, value: Matrix3 | Matrix4): boolean
  1980. /**
  1981. * 获取一个Vector值的拷贝。
  1982. */
  1983. getMatrix(key: string): Matrix3 | Matrix4
  1984. /**
  1985. * 设置一张贴图。
  1986. *
  1987. * @returns 是否设置成功。
  1988. */
  1989. setTexture(key: string, value: Kanata.Texture): boolean
  1990. /**
  1991. * 设置一张贴图。
  1992. *
  1993. * @returns 是否设置成功。
  1994. */
  1995. setTextureAsset(key: string, assetId: string): boolean
  1996. resetTexture(key: string): import('XrFrame/kanata/lib/index').Texture
  1997. /**
  1998. * 直接通过Backend纹理ID设置纹理,注意需要自己持有纹理引用。
  1999. * @internal
  2000. *
  2001. * @returns 是否设置成功。
  2002. */
  2003. setFontTexture(key: string, id: number): boolean
  2004. /**
  2005. * 获取材质中已设置的贴图。
  2006. */
  2007. getTexture(key: string): Kanata.Texture
  2008. /**
  2009. * 设置渲染状态。
  2010. * 只有标记了`useMaterialRenderStates`的Pass会受到影响
  2011. */
  2012. setRenderState<TKey extends keyof IRenderStates>(
  2013. key: TKey,
  2014. value: IRenderStates[TKey]
  2015. ): boolean
  2016. /**
  2017. * 批量设置渲染状态。
  2018. * 只有标记了`useMaterialRenderStates`的Pass会受到影响。
  2019. */
  2020. setRenderStates(states: IRenderStates): boolean
  2021. /**
  2022. * 清除渲染状态。
  2023. * 清除材质的渲染状态,转而从effect中使用默认值。
  2024. */
  2025. clearRenderState<TKey extends keyof IRenderStates>(key: TKey): boolean
  2026. /**
  2027. * 批量清除渲染状态。
  2028. * 清除材质的渲染状态,转而从effect中使用默认值。
  2029. */
  2030. clearRenderStates(states: { [key: string]: any }): boolean
  2031. /**
  2032. * 获取渲染状态。
  2033. */
  2034. getRenderState(key: string): number | boolean
  2035. /**
  2036. * 设置宏。
  2037. */
  2038. setMacro(key: string, value: boolean | number): void
  2039. /**
  2040. * 批量设置宏。
  2041. */
  2042. setMacros(marcos: { [key: string]: number | boolean }): void
  2043. /**
  2044. * 获取宏。
  2045. */
  2046. getMacro(key: string): boolean
  2047. /**
  2048. * 拷贝自身,生成一份新的材质数据。
  2049. */
  2050. clone(): Material
  2051. /**
  2052. * @internal
  2053. */
  2054. /**
  2055. * @internal
  2056. */
  2057. /**
  2058. * @internal
  2059. */
  2060. }
  2061. export {}
  2062. }
  2063. declare module 'XrFrame/assets/VideoTexture' {
  2064. import { Kanata } from 'XrFrame/ext'
  2065. type Scene = import('XrFrame/core/Scene').default
  2066. /**
  2067. * 视频纹理{@link VideoTexture}的创建参数。
  2068. */
  2069. export interface IVideoTextureOptions {
  2070. /**
  2071. * 视频地址。
  2072. */
  2073. src: string
  2074. /**
  2075. * 视频未加载成功时,可选的首帧图片地址。
  2076. */
  2077. placeHolder?: Kanata.IImage
  2078. /**
  2079. * 是否要在加载完毕后自动播放。
  2080. */
  2081. autoPlay?: boolean
  2082. /**
  2083. * 是否要循环播放。
  2084. */
  2085. loop?: boolean
  2086. /**
  2087. * 是否禁止音频,默认禁止。
  2088. */
  2089. abortAudio?: boolean
  2090. /**
  2091. * 是否在小程序压后台时自动暂停,默认暂停。
  2092. */
  2093. autoPause?: boolean
  2094. }
  2095. export enum EVideoState {
  2096. Idle = 0,
  2097. WaitPlay = 1,
  2098. Playing = 2,
  2099. Paused = 3,
  2100. Released = 4
  2101. }
  2102. /**
  2103. * 视频纹理。
  2104. */
  2105. export default class VideoTexture {
  2106. onEnd?: () => void
  2107. get texture(): import('XrFrame/kanata/lib/index').Texture
  2108. get width(): number
  2109. get height(): number
  2110. get autoPause(): boolean
  2111. /**
  2112. * 当前视频纹理播放状态。
  2113. */
  2114. get state(): EVideoState
  2115. /**
  2116. * @param onReady 创建成功时的回调。
  2117. * @param onEnd 播放结束时的回调。
  2118. */
  2119. constructor(
  2120. scene: Scene,
  2121. options: IVideoTextureOptions,
  2122. onReady: (vt: VideoTexture, error?: Error) => void,
  2123. onEnd?: () => void
  2124. )
  2125. /**
  2126. * @internal
  2127. */
  2128. /**
  2129. * 播放视频。
  2130. */
  2131. play(): Promise<void>
  2132. /**
  2133. * 从某处开始播放。
  2134. *
  2135. * @param pos 事件,单位为s
  2136. */
  2137. seek(pos: number): Promise<any>
  2138. /**
  2139. * 暂停当前播放的视频。
  2140. * 需要在基础库`v2.33.0`及以上支持。
  2141. */
  2142. pause(): Promise<void>
  2143. /**
  2144. * 唤醒已暂停的视频。
  2145. * 需要在基础库`v2.33.0`及以上支持。
  2146. */
  2147. resume(): Promise<void>
  2148. /**
  2149. * 停止播放视频。
  2150. */
  2151. stop(): void
  2152. /**
  2153. * 释放视频。
  2154. */
  2155. release(): void
  2156. }
  2157. export {}
  2158. }
  2159. declare module 'XrFrame/assets/RenderTexture' {
  2160. import { Kanata } from 'XrFrame/ext'
  2161. type Scene = import('XrFrame/core/Scene').default
  2162. export interface IRenderTarget {
  2163. width: number
  2164. height: number
  2165. renderPass: Kanata.RenderPass
  2166. }
  2167. /**
  2168. * `RenderTexture`资源参数接口。
  2169. */
  2170. export interface IRenderTextureOptions {
  2171. width: number
  2172. height: number
  2173. isHDR?: boolean
  2174. }
  2175. /**
  2176. * 渲染纹理组件,可作为{@link Camera.renderTarget}。
  2177. */
  2178. export default class RenderTexture {
  2179. static IS(obj: any): obj is RenderTexture
  2180. readonly isRenderTexture: boolean
  2181. /**
  2182. * 获取深度模板纹理。
  2183. * @internal
  2184. */
  2185. get depthStencil(): import('XrFrame/kanata/lib/index').Texture
  2186. /**
  2187. * 获取第一个色彩纹理。
  2188. * @internal
  2189. */
  2190. get texture(): import('XrFrame/kanata/lib/index').Texture
  2191. /**
  2192. * 获取深度纹理。
  2193. * @internal
  2194. */
  2195. get depthTexture(): import('XrFrame/kanata/lib/index').Texture
  2196. /**
  2197. * 获取Backend实例。
  2198. * @internal
  2199. */
  2200. get renderPass(): import('XrFrame/kanata/lib/index').RenderPass
  2201. /**
  2202. * 贴图高。
  2203. */
  2204. get height(): number
  2205. /**
  2206. * 贴图宽。
  2207. */
  2208. get width(): number
  2209. get id(): number
  2210. constructor(_scene: Scene, options: IRenderTextureOptions)
  2211. }
  2212. export {}
  2213. }
  2214. declare module 'XrFrame/assets/GLTFModel' {
  2215. /**
  2216. * GlTF.ts
  2217. *
  2218. * * @Date : 2022/4/1下午3:34:15
  2219. */
  2220. import NativeAnimation from 'XrFrame/animation/NativeAnimation'
  2221. import Mesh from 'XrFrame/components/Mesh'
  2222. import Element from 'XrFrame/core/Element'
  2223. import { Kanata } from 'XrFrame/ext'
  2224. import { GLTFRootLoaded } from 'XrFrame/loader/glTF/GLTFRootNode'
  2225. import { GLTFTreeNode } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  2226. import { IGLTFLoaderOptions } from 'XrFrame/loader/GlTFLoader'
  2227. import Vector3 from 'XrFrame/math/vector3'
  2228. import Quaternion from 'XrFrame/math/quaternion'
  2229. type Scene = import('XrFrame/core/Scene').default
  2230. /**
  2231. * 收集glTF实例化过程中创建的对象,避免其GC。
  2232. * @deprecated
  2233. */
  2234. export class GLTFInstanceResourceCollector {
  2235. add(res: Kanata.IHandle): void
  2236. release(): void
  2237. }
  2238. /**
  2239. * 在{@link GLTFModel.instantiate}中传入的设置项。
  2240. */
  2241. export interface IGLTFModelOptions {
  2242. /**
  2243. * 是否投射阴影。
  2244. */
  2245. castShadow: boolean
  2246. /**
  2247. * 是否接受阴影。
  2248. */
  2249. receiveShadow: boolean
  2250. /**
  2251. * 是否**不**参与剔除。
  2252. */
  2253. neverCull: boolean
  2254. }
  2255. export type TQS = [pos: Vector3, quat: Quaternion, scale: Vector3]
  2256. /**
  2257. * 加载完毕的GLTF模型,可以在节点下创建{@link GLTF | GLTF组件}来将其实例化。
  2258. */
  2259. export default class GLTFModel {
  2260. /**
  2261. * 如果IGLTFLoaderOptions里开启了preserveRaw,则会将原始json保存下来。
  2262. */
  2263. readonly jsonRaw: object | undefined
  2264. constructor(_scene: Scene, model: GLTFRootLoaded)
  2265. /**
  2266. * 使用GLB文件加载而成的buffer,来生成GLTF模型。
  2267. */
  2268. static createFromBuffer(
  2269. scene: Scene,
  2270. buffer: ArrayBuffer,
  2271. options: IGLTFLoaderOptions
  2272. ): Promise<GLTFModel>
  2273. /**
  2274. * 实例化一个GLTF模型,将其加入到指定节点下,并返回一系列得到的物件。
  2275. * @internal
  2276. *
  2277. * @returns subRoots GLTF场景的根节点对应的元素,因为一个GLTF可能有多个场景,所以可能有多个根节点。
  2278. * @returns treeNodeMap GLTF节点对应到元素的映射表。
  2279. * @returns animations 实例化产生的动画片段,需要手动将其加入{@link Animator}组件。
  2280. * @returns meshes 实例化产生的所有{@link Mesh}组件。
  2281. */
  2282. instantiate(
  2283. parent: Element,
  2284. options: IGLTFModelOptions
  2285. ): [
  2286. subRoots: Element[],
  2287. treeNodeMap: Map<GLTFTreeNode, Element>,
  2288. animations: NativeAnimation[],
  2289. meshes: Array<[mesh: Mesh, transform: TQS]>
  2290. ]
  2291. }
  2292. export {}
  2293. }
  2294. declare module 'XrFrame/assets/EnvData' {
  2295. /**
  2296. * EnvData.ts
  2297. *
  2298. * * @Date : 5/11/2022, 4:07:41 PM
  2299. */
  2300. import { Kanata } from 'XrFrame/ext'
  2301. /**
  2302. * `EnvData`的参数接口。
  2303. */
  2304. export interface IEnvDataOptions {
  2305. /**
  2306. * 天空盒。
  2307. */
  2308. skybox?: {
  2309. /**
  2310. * 是否只使用贴图的上半部分,一般在和`specular`共用贴图的时候为`true`。
  2311. */
  2312. half: boolean
  2313. /**
  2314. * 贴图。
  2315. */
  2316. map: Kanata.Texture
  2317. }
  2318. /**
  2319. * 环境漫反射部分。
  2320. */
  2321. diffuse?: {
  2322. /**
  2323. * 球谐系数SH9。
  2324. */
  2325. coefficients: Float32Array
  2326. }
  2327. /**
  2328. * 环境高光反射部分。
  2329. */
  2330. specular?: {
  2331. /**
  2332. * 贴图类型,目前只支持2D。
  2333. */
  2334. type: '2D'
  2335. /**
  2336. * 是否使用`rgbd`编码来。
  2337. */
  2338. rgbd: boolean
  2339. /**
  2340. * 是否使用mipmap。
  2341. */
  2342. mipmaps: boolean
  2343. /**
  2344. * 使用的mipmap级数。
  2345. */
  2346. mipmapCount?: number
  2347. /**
  2348. * 贴图。
  2349. */
  2350. map: Kanata.Texture
  2351. }
  2352. }
  2353. /**
  2354. * 环境数据资源,一般用[xr-frame-cli](https://github.com/wechat-miniprogram/xr-frame-cli)生成。
  2355. */
  2356. export default class EnvData {
  2357. get useHalfSkyMap(): boolean
  2358. get skyboxMap(): import('XrFrame/kanata/lib/index').Texture
  2359. get hasDiffuse(): boolean
  2360. get diffuseSH(): Float32Array
  2361. get hasSpecular(): boolean
  2362. get specularRGBD(): boolean
  2363. get specularMipmaps(): boolean
  2364. get specularMipmapCount(): number
  2365. get specularMap(): import('XrFrame/kanata/lib/index').Texture
  2366. constructor(options: IEnvDataOptions)
  2367. destroy(): void
  2368. }
  2369. }
  2370. declare module 'XrFrame/animation/Animation' {
  2371. /**
  2372. * Animation.ts
  2373. *
  2374. * * @Date : 6/17/2022, 3:17:12 PM
  2375. */
  2376. type Scene = import('XrFrame/core/Scene').default
  2377. type Element = import('XrFrame/core/Element').default
  2378. /**
  2379. * 动画播放的方向,如果是`both`,则会在`loop`开启时的每次循环中自动反转。
  2380. */
  2381. export type TDirection = 'forwards' | 'backwards' | 'both'
  2382. /**
  2383. * 动画资源基类,被{@link Animator}使用,可以继承它来实现具体的动画。
  2384. *
  2385. * @template IData 动画初始化接受的数据。
  2386. * @template IOptions 动画播放时接受的额外追加选项。
  2387. */
  2388. export default class Animation<IData = any, IOptions = any> {
  2389. __DATA_TYPE: IData
  2390. __OPTIONS_TYPE: IOptions
  2391. /**
  2392. * 动画所有的片段名字,必须在`onInit`中被初始化。
  2393. */
  2394. clipNames: string[]
  2395. /**
  2396. * 场景实例。
  2397. */
  2398. get scene(): import('XrFrame/core/Scene').default
  2399. /**
  2400. * @param _scene 场景实例。
  2401. * @param data 初始化动画数据。
  2402. */
  2403. constructor(_scene: Scene, data: IData)
  2404. /**
  2405. * 动画初始化时执行的生命周期,只会执行一次。
  2406. *
  2407. * @param data 初始化动画数据。
  2408. */
  2409. onInit(data: IData): void
  2410. /**
  2411. * 动画开始播放时执行的生命周期。
  2412. *
  2413. * @param el 本次播放作用于的`element`,一个动画可能作用于多个`element`,可以在这里区分。
  2414. * @param clipName 本次播放的片段名字。
  2415. * @param options 本次播放时的附加选项。
  2416. *
  2417. * @returns 返回本次播放片段的参数,必须包括时长`duration`(s),可选循环次数`loop`、延迟`delay`和方向`direction`。
  2418. */
  2419. onPlay(
  2420. el: Element,
  2421. clipName: string,
  2422. options: IOptions
  2423. ): {
  2424. duration: number
  2425. loop?: number
  2426. delay?: number
  2427. direction?: TDirection
  2428. }
  2429. /**
  2430. * 在动画更新时执行的回调。
  2431. *
  2432. * @param el 本次播放作用于的`element`。
  2433. * @param progress 播放进度,范围为线性的`0~1`。
  2434. * @param reverse 本次播放是否反向。
  2435. */
  2436. onUpdate(el: Element, progress: number, reverse: boolean): void
  2437. /**
  2438. * 在动画暂停时执行的回调。
  2439. *
  2440. * @param el 本次播放作用于的`element`。
  2441. */
  2442. onPause(el: Element): void
  2443. /**
  2444. * 在动画从暂停状态唤醒时执行的回调。
  2445. *
  2446. * @param el 本次播放作用于的`element`。
  2447. */
  2448. onResume(el: Element): void
  2449. /**
  2450. * 在动画停止时执行的回调。
  2451. *
  2452. * @param el 本次播放作用于的`element`。
  2453. */
  2454. onStop(el: Element): void
  2455. }
  2456. export {}
  2457. }
  2458. declare module 'XrFrame/animation/KeyframeAnimation' {
  2459. import Animation, { TDirection } from 'XrFrame/animation/Animation'
  2460. type Element = import('XrFrame/core/Element').default
  2461. /**
  2462. * `Keyframe`动画数据的动画部分。
  2463. */
  2464. export interface IKeyframeAnimationInfo {
  2465. /**
  2466. * 指定动画使用的Keyframe。
  2467. */
  2468. keyframe: string
  2469. /**
  2470. * 动画长度(s)。
  2471. */
  2472. duration: number
  2473. /**
  2474. * 动画插值方式,详见{@link noneParamsEaseFuncs}和{@link useParamsEaseFuncs}。
  2475. */
  2476. ease: string
  2477. /**
  2478. * 如果是可以接受参数的插值方式,指定参数。
  2479. */
  2480. easeParams?: number[]
  2481. /**
  2482. * 循环次数,`0`为不循环,`-1`为永远循环。
  2483. */
  2484. loop?: number
  2485. /**
  2486. * 播放延迟。
  2487. */
  2488. delay?: number
  2489. /**
  2490. * 播放方向。
  2491. */
  2492. direction?: TDirection
  2493. }
  2494. /**
  2495. * `Keyframe`动画数据的动画部分。
  2496. */
  2497. export interface IKeyframeAnimationData {
  2498. /**
  2499. * 关键帧定义部分,可以参考[basic-animation](https://mmbizwxaminiprogram-1258344707.cos.ap-guangzhou.myqcloud.com/xr-frame/doc/basic-animation.json)。
  2500. *
  2501. * `name`为关键帧名字。
  2502. * `key`为`0~100`的进度。
  2503. * `prop`为属性序列,其规则为`[componentName].[prop1].[prop2].[prop3]...`,但是有一些特殊的缩写:
  2504. * `position`、`scale`、`rotation`是`transform`组件下对应的属性,`material.u_xxx`则是设置材质的uniform。
  2505. * `prop`的值,可以是数字或者数字数组。
  2506. */
  2507. keyframe: {
  2508. [name: string]: {
  2509. [key: string]: {
  2510. [prop: string]: number | number[]
  2511. }
  2512. }
  2513. }
  2514. /**
  2515. * 动画部分。
  2516. */
  2517. animation: {
  2518. [name: string]: IKeyframeAnimationInfo
  2519. }
  2520. }
  2521. export enum EKeyframeAnimationPropType {
  2522. Default = 0,
  2523. Math = 1,
  2524. Uniform = 2,
  2525. ComponentData = 3
  2526. }
  2527. /**
  2528. * `Keyframe`动画的追加播放参数。
  2529. */
  2530. export interface IKeyframeAnimationOptions {
  2531. /**
  2532. * 改变插值方式。
  2533. */
  2534. ease?: string
  2535. /**
  2536. * 改变插值系数。
  2537. */
  2538. easeParams?: number[]
  2539. }
  2540. /**
  2541. * 解析完的`Keyframe`部分实例,准备好数据以备正式播放。
  2542. *
  2543. * 开发者不需要关心,内部使用。
  2544. */
  2545. export class Keyframe {
  2546. /**
  2547. * @internal
  2548. */
  2549. get times(): number[]
  2550. constructor(options: IKeyframeAnimationData['keyframe']['name'])
  2551. start(el: Element): (p: number) => void
  2552. }
  2553. /**
  2554. * `Keyframe`动画。
  2555. */
  2556. export default class KeyframeAnimation extends Animation<
  2557. IKeyframeAnimationData,
  2558. IKeyframeAnimationOptions
  2559. > {
  2560. onInit(data: IKeyframeAnimationData): void
  2561. onPlay(
  2562. el: Element,
  2563. clipName: string,
  2564. options: IKeyframeAnimationOptions
  2565. ): IKeyframeAnimationInfo
  2566. onUpdate(el: Element, progress: number, reverse: boolean): void
  2567. onPause(el: Element): void
  2568. onResume(el: Element): void
  2569. onStop(el: Element): void
  2570. }
  2571. export {}
  2572. }
  2573. declare module 'XrFrame/assets/Atlas' {
  2574. /**
  2575. * Atlas.ts
  2576. *
  2577. * * @Date : 10/12/2022, 5:23:59 PM
  2578. */
  2579. import { Kanata } from 'XrFrame/ext'
  2580. import Matrix3 from 'XrFrame/math/matrix3'
  2581. import Vector4 from 'XrFrame/math/vector4'
  2582. type Scene = import('XrFrame/core/Scene').default
  2583. /**
  2584. * `Atlas`的初始化参数类型。
  2585. */
  2586. export interface IAtlasOptions {
  2587. /**
  2588. * 图片。
  2589. */
  2590. image?: Kanata.IImage
  2591. /**
  2592. * 也可以直接传入一张纹理。
  2593. */
  2594. texture?: Kanata.Texture
  2595. /**
  2596. * 帧定义,若不指定`uv`则会自动按比例计算。
  2597. */
  2598. frames: {
  2599. [key: string]: {
  2600. /**
  2601. * 帧的区块信息。
  2602. */
  2603. frame: {
  2604. x: number
  2605. y: number
  2606. w: number
  2607. h: number
  2608. }
  2609. /**
  2610. * 会自动生成,开发者无需关心。
  2611. *
  2612. * @hidden
  2613. */
  2614. uvMatrix?: Matrix3
  2615. /**
  2616. * 会自动生成,开发者无需关心。
  2617. *
  2618. * @hidden
  2619. */
  2620. uvST?: Vector4
  2621. }
  2622. }
  2623. /**
  2624. * 原信息,主要定义图片尺寸。
  2625. */
  2626. meta: {
  2627. size: {
  2628. w: number
  2629. h: number
  2630. }
  2631. }
  2632. }
  2633. /**
  2634. * 图集资源创建参数。
  2635. */
  2636. export interface IAtlasCreationOptions {
  2637. /**
  2638. * 单元宽度。
  2639. */
  2640. cellWidth?: number
  2641. /**
  2642. * 单元高度。
  2643. */
  2644. cellHeight?: number
  2645. /**
  2646. * 单元间的间隙。
  2647. */
  2648. space?: number
  2649. /**
  2650. * 每行有多少帧(单元)。
  2651. */
  2652. framesPerLine: number
  2653. /**
  2654. * 需要从哪一帧开始。
  2655. */
  2656. frameStart?: number
  2657. /**
  2658. * 需要几帧。
  2659. */
  2660. frameCount?: number
  2661. }
  2662. /**
  2663. * 图集资源。
  2664. * @version 2.27.1
  2665. *
  2666. * 一般通过{@link AtlasLoader}加载自动生成。
  2667. * 推荐使用[Shoebox](https://www.renderhjs.net/shoebox/)等工具生成。
  2668. */
  2669. export default class Atlas {
  2670. isAtlas: boolean
  2671. protected _AUTO_ID: number
  2672. protected _image: Kanata.IImage
  2673. protected _texture: Kanata.Texture
  2674. protected _frames: IAtlasOptions['frames']
  2675. protected _meta: IAtlasOptions['meta']
  2676. protected _updatable: boolean
  2677. protected _root: string
  2678. protected _area: number
  2679. protected _needReBuild: boolean
  2680. /**
  2681. * 根据宽高和行数、列数来创建一个空的图集。
  2682. * 这个图集将被行列分成若干个格子帧,开发者可以根据实际状况去使用`updateFrame`更新这些格子。
  2683. * 自动生成的帧的名字为`${row}${col}`,比如第一行第一列为`'11'`。
  2684. *
  2685. * @param onUpdate 初始化时的回调,可以用于一开始绘制图像
  2686. */
  2687. static CREATE_FROM_GRIDS(
  2688. scene: Scene,
  2689. options: {
  2690. width: number
  2691. height: number
  2692. rows: number
  2693. cols: number
  2694. space?: number
  2695. },
  2696. onUpdate?: (
  2697. texture: Kanata.Texture,
  2698. region: {
  2699. col: number
  2700. row: number
  2701. x: number
  2702. y: number
  2703. w: number
  2704. h: number
  2705. },
  2706. frameName: string
  2707. ) => void
  2708. ): Atlas
  2709. /**
  2710. * 根据纹理和配置,来通过纹理创建一个不可修改的图集。通常用于精灵动画。
  2711. * 这个图集将被行列分成若干个格子帧,每一帧的名字为`0`、`1`、`2`......
  2712. */
  2713. static CREATE_FROM_TEXTURE(
  2714. scene: Scene,
  2715. texture: Kanata.Texture,
  2716. options: IAtlasCreationOptions
  2717. ): Atlas
  2718. /**
  2719. * 获取元信息。
  2720. */
  2721. get meta(): {
  2722. size: {
  2723. w: number
  2724. h: number
  2725. }
  2726. }
  2727. /**
  2728. * 获取帧集合。
  2729. */
  2730. get frames(): {
  2731. [key: string]: {
  2732. /**
  2733. * 帧的区块信息。
  2734. */
  2735. frame: {
  2736. x: number
  2737. y: number
  2738. w: number
  2739. h: number
  2740. }
  2741. /**
  2742. * 会自动生成,开发者无需关心。
  2743. *
  2744. * @hidden
  2745. */
  2746. uvMatrix?: Matrix3
  2747. /**
  2748. * 会自动生成,开发者无需关心。
  2749. *
  2750. * @hidden
  2751. */
  2752. uvST?: Vector4
  2753. }
  2754. }
  2755. /**
  2756. * 获取整体的纹理。
  2757. */
  2758. get texture(): import('XrFrame/kanata/lib/index').Texture
  2759. /**
  2760. * 构建一个图集。
  2761. *
  2762. * @param options 初始化参数。
  2763. */
  2764. constructor(_scene: Scene, options: IAtlasOptions)
  2765. /**
  2766. * 获取某一帧的数据。
  2767. */
  2768. getFrame(frameName: string): {
  2769. x: number
  2770. y: number
  2771. w: number
  2772. h: number
  2773. }
  2774. /**
  2775. * 获取某一帧的uv变换矩阵。
  2776. */
  2777. getUVMatrix(frameName: string): Matrix3
  2778. protected _buildUVMatrix(frame: {
  2779. x: number
  2780. y: number
  2781. w: number
  2782. h: number
  2783. }): Matrix3
  2784. /**
  2785. * 获取某一帧的uvST。
  2786. * [sx, sy, tx, ty]。
  2787. */
  2788. getUVST(frameName: string): Vector4
  2789. protected _buildUVST(frame: {
  2790. x: number
  2791. y: number
  2792. w: number
  2793. h: number
  2794. }): Vector4
  2795. /**
  2796. * 更新某一frame,通过`onUpdate`方法参数中的`texture`和`region`来更新上此帧所占据区域内的图像。
  2797. */
  2798. updateFrame(
  2799. frameName: string,
  2800. onUpdate: (
  2801. texture: Kanata.Texture,
  2802. region: {
  2803. x: number
  2804. y: number
  2805. w: number
  2806. h: number
  2807. },
  2808. frameName: string
  2809. ) => void
  2810. ): void
  2811. }
  2812. export {}
  2813. }
  2814. declare module 'XrFrame/assets/PostProcess' {
  2815. /**
  2816. * PostProcess.ts
  2817. *
  2818. * * @Date : 10/14/2022, 4:34:55 PM
  2819. */
  2820. type Scene = import('XrFrame/core/Scene').default
  2821. /**
  2822. * 后处理资源初始化参数。
  2823. */
  2824. export interface IPostProcessOptions {
  2825. /**
  2826. * 类型,目前支持的类型请见[内置后处理资源](https://developers.weixin.qq.com/miniprogram/dev/component/xr-frame/builtin/post-process)。
  2827. */
  2828. type: string
  2829. /**
  2830. * 是否开启HDR。
  2831. */
  2832. isHDR?: boolean
  2833. /**
  2834. * 对应类型的数据。
  2835. */
  2836. data?: {
  2837. [key: string]: any
  2838. }
  2839. }
  2840. /**
  2841. * 后处理资源。
  2842. *
  2843. * 一般由{@link AssetPostProcess}加载。
  2844. */
  2845. export default class PostProcess {
  2846. /**
  2847. * 类型。
  2848. */
  2849. get type(): string
  2850. /**
  2851. * 是否开启了HDR。
  2852. */
  2853. get isHDR(): boolean
  2854. /**
  2855. * 数据,可以修改。
  2856. */
  2857. get data(): {
  2858. [key: string]: any
  2859. }
  2860. constructor(_scene: Scene, options: IPostProcessOptions)
  2861. }
  2862. export {}
  2863. }
  2864. declare module 'XrFrame/assets/factories' {
  2865. /**
  2866. * factories.ts
  2867. *
  2868. * * @Date : 2022/3/23下午4:04:18
  2869. */
  2870. import Scene from 'XrFrame/core/Scene'
  2871. import Effect from 'XrFrame/assets/Effect'
  2872. import Geometry from 'XrFrame/assets/Geometry'
  2873. import Material from 'XrFrame/assets/Material'
  2874. export const TABLE: {
  2875. [type: string]: {
  2876. [id: string]: (scene: Scene) => any
  2877. }
  2878. }
  2879. /**
  2880. * @internal
  2881. */
  2882. export function getAssetFactory<T = any>(
  2883. type: string,
  2884. id: string
  2885. ): (scene: Scene) => T
  2886. /**
  2887. * 注册`Geometry`资源。
  2888. */
  2889. export const registerGeometry: (
  2890. id: string,
  2891. factory: (scene: Scene) => Geometry
  2892. ) => void
  2893. /**
  2894. * 注册`Effect`资源。
  2895. */
  2896. export const registerEffect: (
  2897. id: string,
  2898. factory: (scene: Scene) => Effect
  2899. ) => void
  2900. /**
  2901. * 注册`Texture`资源。
  2902. */
  2903. export const registerTexture: (
  2904. id: string,
  2905. factory: (scene: Scene) => import('XrFrame/kanata/lib/index').Texture
  2906. ) => void
  2907. /**
  2908. * 注册`TextureCube`资源。
  2909. */
  2910. export const registerTextureCube: (
  2911. id: string,
  2912. factory: (scene: Scene) => import('XrFrame/kanata/lib/index').Texture
  2913. ) => void
  2914. /**
  2915. * 注册`VertexDataDescriptor`资源。
  2916. */
  2917. export const registerVertexDataDesc: (
  2918. id: string,
  2919. factory: (
  2920. scene: Scene
  2921. ) => import('XrFrame/kanata/lib/index').VertexDataDescriptor
  2922. ) => void
  2923. /**
  2924. * 注册`UniformDescriptor`资源。
  2925. */
  2926. export const registerUniformDesc: (
  2927. id: string,
  2928. factory: (
  2929. scene: Scene
  2930. ) => import('XrFrame/kanata/lib/index').UniformDescriptor
  2931. ) => void
  2932. /**
  2933. * 注册`VertexLayout`资源。
  2934. */
  2935. export const registerVertexLayout: (
  2936. id: string,
  2937. factory: (
  2938. scene: Scene
  2939. ) => import('XrFrame/kanata/lib/index').VertexLayout
  2940. ) => void
  2941. /**
  2942. * 注册`Material`资源。
  2943. */
  2944. export const registerMaterial: (
  2945. id: string,
  2946. factory: (scene: Scene) => Material
  2947. ) => void
  2948. }
  2949. declare module 'XrFrame/assets/easeFunctions' {
  2950. /**
  2951. * easeFunctions.ts
  2952. *
  2953. * * @Date : 6/21/2022, 11:24:27 AM
  2954. */
  2955. type TEaseFunction = (progress: number) => number
  2956. /**
  2957. * 可以自定义参数的插值函数。
  2958. */
  2959. export const useParamsEaseFuncs: {
  2960. /**
  2961. * 二次贝塞尔曲线。
  2962. *
  2963. * @param params p1x, p1y, p2x, p2y。
  2964. * @returns 最终的插值函数。
  2965. */
  2966. 'cubic-bezier': (
  2967. times: number[],
  2968. params: number[]
  2969. ) => (x: number) => number
  2970. /**
  2971. * 步进插值曲线。
  2972. *
  2973. * @param params 一个参数,总步数。
  2974. * @returns 最终的插值函数。
  2975. */
  2976. steps: (times: number[], params: number[]) => (x: number) => number
  2977. }
  2978. /**
  2979. * 不需要自定义参数的一些内置插值曲线。
  2980. */
  2981. export const noneParamsEaseFuncs: {
  2982. linear: (x: any) => any
  2983. 'ease-in': (x: number) => number
  2984. 'ease-out': (x: number) => number
  2985. 'ease-in-out': (x: number) => number
  2986. 'ease-in-quad': (x: any) => number
  2987. 'ease-out-quad': (x: any) => number
  2988. 'ease-in-out-quad': (x: any) => number
  2989. 'ease-in-cubic': (x: any) => number
  2990. 'ease-out-cubic': (x: any) => number
  2991. 'ease-in-out-cubic': (x: any) => number
  2992. 'ease-in-quart': (x: any) => number
  2993. 'ease-out-quart': (x: any) => number
  2994. 'ease-in-out-quart': (x: any) => number
  2995. 'ease-in-quint': (x: any) => number
  2996. 'ease-out-quint': (x: any) => number
  2997. 'ease-in-out-quint': (x: any) => number
  2998. 'ease-in-sine': (x: any) => number
  2999. 'ease-out-sine': (x: any) => number
  3000. 'ease-in-out-sine': (x: any) => number
  3001. 'ease-in-expo': (x: any) => number
  3002. 'ease-out-expo': (x: any) => number
  3003. 'ease-in-out-expo': (x: any) => number
  3004. 'ease-in-circ': (x: any) => number
  3005. 'ease-out-circ': (x: any) => number
  3006. 'ease-in-out-circ': (x: any) => number
  3007. 'ease-in-back': (x: any) => number
  3008. 'ease-out-back': (x: any) => number
  3009. 'ease-in-out-back': (x: any) => number
  3010. 'ease-in-elastic': (x: any) => number
  3011. 'ease-out-elastic': (x: any) => number
  3012. 'ease-in-out-elastic': (x: any) => number
  3013. 'ease-in-bounce': (x: any) => number
  3014. 'ease-out-bounce': TEaseFunction
  3015. 'ease-in-out-bounce': (x: any) => number
  3016. }
  3017. export {}
  3018. }
  3019. declare module 'XrFrame/physics/exports' {
  3020. export { default as RaycastHit } from 'XrFrame/physics/RaycastHit'
  3021. export { ICollideEvent, IOverlapEvent } from 'XrFrame/physics/Collision'
  3022. export { IContactPoint } from 'XrFrame/physics/ContactPoint'
  3023. export { RaycastDesc } from 'XrFrame/physics/raycast'
  3024. }
  3025. declare module 'XrFrame/math/vector2' {
  3026. export default class Vector2 {
  3027. /**
  3028. * x值
  3029. *
  3030. * @type {number}
  3031. * @memberof Vector2
  3032. */
  3033. get x(): number
  3034. set x(val: number)
  3035. /**
  3036. * y值
  3037. *
  3038. * @type {number}
  3039. * @memberof Vector2
  3040. */
  3041. get y(): number
  3042. set y(val: number)
  3043. /**
  3044. * 零向量,不要对该对象进行修改
  3045. *
  3046. * @readonly
  3047. * @static
  3048. * @type {V3ReadOnly}
  3049. * @memberof Vector3
  3050. */
  3051. static readonly ZERO: Vector2
  3052. /**
  3053. * 一向量,不要对该对象进行修改
  3054. *
  3055. * @readonly
  3056. * @static
  3057. * @type {V3ReadOnly}
  3058. * @memberof Vector3
  3059. */
  3060. static readonly ONE: Vector2
  3061. _raw: Float32Array
  3062. /**
  3063. * 使用一个数组创建
  3064. * 此操作会拷贝一份数组
  3065. *
  3066. * @static
  3067. * @param {number[]} array 数据源,长度必须为2,否则会抛出异常
  3068. * @returns {Vector2} 创建出来的向量
  3069. * @memberof Vector2
  3070. */
  3071. static createFromArray(array: number[]): Vector2
  3072. /**
  3073. * 使用某个已有的typedArray创建
  3074. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  3075. *
  3076. * @static
  3077. * @param {Float32Array} array 数据源
  3078. * @param {number} [offset=0] 数据源中的偏移
  3079. * @returns {Vector2} 创建出来的向量
  3080. * @memberof Vector2
  3081. */
  3082. static createFromTypedArray(
  3083. array: Float32Array,
  3084. offset?: number
  3085. ): Vector2
  3086. /**
  3087. * 返回向量数据
  3088. *
  3089. * @returns {number[]} 矩阵数据,以JSArray返回
  3090. * @memberof Vector2
  3091. */
  3092. toArray(): number[]
  3093. /**
  3094. * 判断与目标向量的值是否相等
  3095. *
  3096. * @param {V2ReadOnly} v 目标向量
  3097. * @returns {boolean} 是否相等,这里误差小于10^-6视为相等
  3098. * @memberof Vector2
  3099. */
  3100. equal(v: Vector2): boolean
  3101. /**
  3102. * 拷贝目标向量的值到该向量
  3103. *
  3104. * @param {V2ReadOnly} val 目标向量
  3105. * @returns {Vector2} 自身
  3106. * @memberof Vector2
  3107. */
  3108. set(val: Vector2): Vector2
  3109. /**
  3110. * 设置向量的值
  3111. *
  3112. * @param {number} x x值
  3113. * @param {number} y y值
  3114. * @returns {Vector2} 自身
  3115. * @memberof Vector2
  3116. */
  3117. setValue(x: number, y: number): Vector2
  3118. /**
  3119. * 向量加法
  3120. *
  3121. * @param {V2ReadOnly} v 目标向量
  3122. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3123. * @returns {Vector2} 计算结果
  3124. * @memberof Vector2
  3125. */
  3126. add(v: Vector2, dst?: Vector2): Vector2
  3127. /**
  3128. * 向量减法
  3129. *
  3130. * @param {V2ReadOnly} v 目标向量
  3131. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3132. * @returns {Vector2} 计算结果
  3133. * @memberof Vector2
  3134. */
  3135. sub(v: Vector2, dst?: Vector2): Vector2
  3136. /**
  3137. * 向量归一化,如该向量为零向量,则结果依然为零向量
  3138. *
  3139. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3140. * @returns {Vector2} 计算结果
  3141. * @memberof Vector2
  3142. */
  3143. normalize(dst?: Vector2): Vector2
  3144. /**
  3145. * 向量缩放
  3146. *
  3147. * @param {number} f 缩放比
  3148. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3149. * @returns {Vector2} 计算结果
  3150. * @memberof Vector2
  3151. */
  3152. scale(f: number, dst?: Vector2): Vector2
  3153. /**
  3154. * 在该向量与目标向量之间计算插值
  3155. *
  3156. * @param {V2ReadOnly} v 目标向量
  3157. * @param {number} f 插值系数
  3158. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3159. * @returns {Vector2} 计算结果
  3160. * @memberof Vector2
  3161. */
  3162. lerp(v: Vector2, f: number, dst?: Vector2): Vector2
  3163. /**
  3164. * 取反
  3165. * @returns
  3166. */
  3167. negate(): this
  3168. /**
  3169. * 向量点乘
  3170. *
  3171. * @param {V2ReadOnly} v 目标向量
  3172. * @returns {number} 计算结果
  3173. * @memberof Vector2
  3174. */
  3175. dot(v: Vector2): number
  3176. /**
  3177. * 向量的模
  3178. *
  3179. * @returns {number} 计算结果
  3180. * @memberof Vector2
  3181. */
  3182. length(): number
  3183. /**
  3184. * 拷贝该向量
  3185. *
  3186. * @returns {Vector2} 拷贝出来的对象
  3187. * @memberof Vector2
  3188. */
  3189. clone(): Vector2
  3190. /**
  3191. * 是否为零向量
  3192. *
  3193. * @returns {boolean}
  3194. * @memberof Vector2
  3195. */
  3196. isZero(): boolean
  3197. /**
  3198. * 获取向量旋转角,以角度表示
  3199. *
  3200. * @returns {number} 旋转角,以角度表示
  3201. * @memberof Vector2
  3202. */
  3203. getAngle(): number
  3204. setArray(value: ArrayLike<number>, offset?: number): Vector2
  3205. }
  3206. }
  3207. declare module 'XrFrame/math/vector3' {
  3208. import QuatReadOnly from 'XrFrame/math/quaternion'
  3209. import M4ReadOnly from 'XrFrame/math/matrix4'
  3210. export default class Vector3 {
  3211. /**
  3212. * x值
  3213. *
  3214. * @type {number}
  3215. * @memberof Vector3
  3216. */
  3217. get x(): number
  3218. set x(val: number)
  3219. /**
  3220. * y值
  3221. *
  3222. * @type {number}
  3223. * @memberof Vector3
  3224. */
  3225. get y(): number
  3226. set y(val: number)
  3227. /**
  3228. * z值
  3229. *
  3230. * @type {number}
  3231. * @memberof Vector3
  3232. */
  3233. get z(): number
  3234. set z(val: number)
  3235. /**
  3236. * 零向量,不要对该对象进行修改
  3237. *
  3238. * @readonly
  3239. * @static
  3240. * @type {Vector3}
  3241. * @memberof Vector3
  3242. */
  3243. static readonly ZERO: Vector3
  3244. /**
  3245. * 一向量,不要对该对象进行修改
  3246. *
  3247. * @readonly
  3248. * @static
  3249. * @type {Vector3}
  3250. * @memberof Vector3
  3251. */
  3252. static readonly ONE: Vector3
  3253. /**
  3254. * 上方向,不要对该对象进行修改
  3255. *
  3256. * @static
  3257. * @type {Vector3}
  3258. * @memberof Vector3
  3259. */
  3260. static readonly Up: Vector3
  3261. /**
  3262. * 前方向,基于左手坐标系,不要对该对象进行修改
  3263. *
  3264. * @static
  3265. * @type {Vector3}
  3266. * @memberof Vector3
  3267. */
  3268. static readonly ForwardLH: Vector3
  3269. _raw: Float32Array
  3270. /**
  3271. * 使用一个数组创建
  3272. * 此操作会拷贝一份数组
  3273. *
  3274. * @static
  3275. * @param {number[]} array 数据源,长度必须为3,否则会抛出异常
  3276. * @returns {Vector3} 创建出来的向量
  3277. * @memberof Vector3
  3278. */
  3279. static createFromArray(array: number[]): Vector3
  3280. /**
  3281. * 使用某个已有的typedArray创建
  3282. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  3283. *
  3284. * @static
  3285. * @param {Float32Array} array 数据源
  3286. * @param {number} [offset=0] 数据源中的偏移
  3287. * @returns {Vector3}
  3288. * @memberof Vector3
  3289. */
  3290. static createFromTypedArray(
  3291. array: Float32Array,
  3292. offset?: number
  3293. ): Vector3
  3294. /**
  3295. * 使用四元数进行向量旋转
  3296. *
  3297. * @static
  3298. * @param {Vector3} source 源向量
  3299. * @param {QuatReadOnly} rotation 用于旋转的四元数
  3300. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3301. * @returns {Vector3} 计算结果
  3302. * @memberof Vector3
  3303. */
  3304. static transformQuat(
  3305. source: Vector3,
  3306. rotation: QuatReadOnly,
  3307. dst?: Vector3
  3308. ): Vector3
  3309. static transformCoordinate(
  3310. coordinate: Vector3,
  3311. transform: M4ReadOnly,
  3312. dst?: Vector3
  3313. ): Vector3
  3314. /**
  3315. * 返回向量数据
  3316. *
  3317. * @returns {number[]} 矩阵数据,以JSArray返回
  3318. * @memberof Vector3
  3319. */
  3320. toArray(): [number, number, number]
  3321. /**
  3322. * 判断与目标向量的值是否相等
  3323. *
  3324. * @param {Vector3} v 目标向量
  3325. * @returns {boolean} 是否相等,这里误差小于10^-6视为相等
  3326. * @memberof Vector3
  3327. */
  3328. equal(v: Vector3): boolean
  3329. /**
  3330. * 拷贝目标向量的值到该向量
  3331. *
  3332. * @param {Vector3} val 目标向量
  3333. * @returns {Vector3} 自身
  3334. * @memberof Vector3
  3335. */
  3336. set(v: Vector3): Vector3
  3337. /**
  3338. * 设置向量的值
  3339. *
  3340. * @param {number} x x
  3341. * @param {number} y y
  3342. * @param {number} z z
  3343. * @returns {Vector3} 自身
  3344. * @memberof Vector3
  3345. */
  3346. setValue(x: number, y: number, z: number): Vector3
  3347. setFromArray(xyz: number[]): Vector3
  3348. /**
  3349. * 向量加法
  3350. *
  3351. * @param {Vector3} v 目标向量
  3352. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3353. * @returns {Vector3} 计算结果
  3354. * @memberof Vector3
  3355. */
  3356. add(v: Vector3, dst?: Vector3): Vector3
  3357. /**
  3358. * 向量减法
  3359. *
  3360. * @param {Vector3} v 目标向量
  3361. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3362. * @returns {Vector3} 计算结果
  3363. * @memberof Vector3
  3364. */
  3365. sub(v: Vector3, dst?: Vector3): Vector3
  3366. /**
  3367. * 向量叉乘
  3368. *
  3369. * @param {Vector3} v 目标向量
  3370. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3371. * @returns {Vector3} 计算结果
  3372. * @memberof Vector3
  3373. */
  3374. cross(v: Vector3, dst?: Vector3): Vector3
  3375. /**
  3376. * 向量归一化
  3377. *
  3378. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3379. * @returns {Vector3} 计算结果
  3380. * @memberof Vector3
  3381. */
  3382. normalize(dst?: Vector3): Vector3
  3383. /**
  3384. * 向量缩放
  3385. *
  3386. * @param {number} f 缩放比
  3387. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3388. * @returns {Vector3} 计算结果
  3389. * @memberof Vector3
  3390. */
  3391. scale(f: number, dst?: Vector3): Vector3
  3392. /**
  3393. * 向量缩放
  3394. *
  3395. * @param {number} x x缩放比
  3396. * @param {number} y y缩放比
  3397. * @param {number} z z缩放比
  3398. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3399. * @returns {Vector3} 计算结果
  3400. * @memberof Vector3
  3401. */
  3402. scaleXYZ(x: number, y: number, z: number, dst?: Vector3): Vector3
  3403. /**
  3404. * 在该向量与目标向量之间计算插值
  3405. *
  3406. * @param {Vector3} v 目标向量
  3407. * @param {number} f 插值系数
  3408. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3409. * @returns {Vector3} 计算结果
  3410. * @memberof Vector3
  3411. */
  3412. lerp(v: Vector3, f: number, dst?: Vector3): Vector3
  3413. /**
  3414. * 取反
  3415. * @returns
  3416. */
  3417. negate(): this
  3418. abs(): this
  3419. /**
  3420. * 向量点乘
  3421. *
  3422. * @param {Vector3} v 目标向量
  3423. * @returns {number} 计算结果
  3424. * @memberof Vector3
  3425. */
  3426. dot(v: Vector3): number
  3427. /**
  3428. * 向量的模
  3429. *
  3430. * @returns {number} 计算结果
  3431. * @memberof Vector3
  3432. */
  3433. length(): number
  3434. /**
  3435. * 拷贝该向量
  3436. *
  3437. * @returns {Vector3} 拷贝出来的对象
  3438. * @memberof Vector3
  3439. */
  3440. clone(): Vector3
  3441. /**
  3442. * 是否为零向量
  3443. *
  3444. * @returns {boolean}
  3445. * @memberof Vector3
  3446. */
  3447. isZero(): boolean
  3448. /**
  3449. * 获取到目标点的距离
  3450. *
  3451. * @param {Vector3} p 目标点
  3452. * @returns {number} 计算结果
  3453. * @memberof Vector3
  3454. */
  3455. distanceTo(p: Vector3): number
  3456. /**
  3457. * 获取到目标点的角度
  3458. *
  3459. * @param {Vector3} location 目标点
  3460. * @returns {number} 计算结果
  3461. * @memberof Vector3
  3462. */
  3463. angleTo(location: Vector3, dst?: Vector3): Vector3
  3464. setFromMatrixColumn(m: M4ReadOnly, index: number): Vector3
  3465. fromArray(array: Float32Array, offset: number): Vector3
  3466. setFromMatrixScale(m: M4ReadOnly): Vector3
  3467. /**
  3468. * create by janzen
  3469. * Sets this vector to the position elements of the transformation matrix
  3470. */
  3471. setFromMatrixPosition(worldMatrix: M4ReadOnly): Vector3
  3472. /**
  3473. * create by janzen
  3474. * Multiplies this vector (with an implicit 1 in the 4th dimension) and m, and divides by perspective.
  3475. */
  3476. applyMatrix4(m: M4ReadOnly): Vector3
  3477. /**
  3478. * create by roamye
  3479. * Multiplies this vector (with an implicit 1 in the 4th dimension) and m, and divides by perspective.
  3480. */
  3481. applyMatrix4Raw(m: Float32Array): this
  3482. applyQuaternion(q: QuatReadOnly): this
  3483. /**
  3484. * create by janzen
  3485. * Transforms the direction of this vector by a matrix (the upper left 3 x 3 subset of a m) and then normalizes the result.
  3486. */
  3487. transformDirection(m: M4ReadOnly): Vector3
  3488. /**
  3489. * create by roamye
  3490. * Transforms the direction of this vector by a matrix (the upper left 3 x 3 subset of a m) and then normalizes the result.
  3491. */
  3492. transformDirectionRaw(raw: Float32Array): Vector3
  3493. /**
  3494. * created by shanexyzhou
  3495. * 从物理引擎内的RawVec3f生成Vector3
  3496. */
  3497. static fromPhysics(v: any): Vector3
  3498. fromPhysics(v: any): Vector3
  3499. static Phys3D?: typeof phys3D
  3500. static clearPhysicsPool(): void
  3501. /**
  3502. * created by shanexyzhou
  3503. * 生成物理引擎内的RawVec3f
  3504. */
  3505. toPhysics(): any
  3506. setArray(value: ArrayLike<number>, offset?: number): Vector3
  3507. print(): void
  3508. }
  3509. export class Vector3ReadOnly extends Vector3 {
  3510. get x(): number
  3511. set x(v: number)
  3512. get y(): number
  3513. set y(v: number)
  3514. get z(): number
  3515. set z(v: number)
  3516. constructor(array?: Float32Array, offset?: number)
  3517. set(): this
  3518. setValue(): this
  3519. }
  3520. }
  3521. declare module 'XrFrame/math/vector4' {
  3522. export default class Vector4 {
  3523. /**
  3524. * x值
  3525. *
  3526. * @type {number}
  3527. * @memberof Vector4
  3528. */
  3529. get x(): number
  3530. set x(val: number)
  3531. /**
  3532. * y值
  3533. *
  3534. * @type {number}
  3535. * @memberof Vector4
  3536. */
  3537. get y(): number
  3538. set y(val: number)
  3539. /**
  3540. * z值
  3541. *
  3542. * @type {number}
  3543. * @memberof Vector4
  3544. */
  3545. get z(): number
  3546. set z(val: number)
  3547. /**
  3548. * w值
  3549. *
  3550. * @type {number}
  3551. * @memberof Vector4
  3552. */
  3553. get w(): number
  3554. set w(val: number)
  3555. /**
  3556. * 零向量,不要对该对象进行修改
  3557. *
  3558. * @static
  3559. * @readonly
  3560. * @type {Vector4}
  3561. * @memberof Vector4
  3562. */
  3563. static readonly ZERO: Vector4
  3564. /**
  3565. * 一向量,不要对该对象进行修改
  3566. *
  3567. * @readonly
  3568. * @static
  3569. * @type {V3ReadOnly}
  3570. * @memberof Vector3
  3571. */
  3572. static readonly ONE: Vector4
  3573. _raw: Float32Array
  3574. /**
  3575. * 使用一个数组创建
  3576. * 此操作会拷贝一份数组
  3577. *
  3578. * @static
  3579. * @param {number[]} array 数据源,长度必须为4,否则会抛出异常
  3580. * @returns {Vector4} 创建出来的向量
  3581. * @memberof Vector4
  3582. */
  3583. static createFromArray(array: number[]): Vector4
  3584. /**
  3585. * 使用某个已有的typedArray创建
  3586. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  3587. *
  3588. * @static
  3589. * @param {Float32Array} array 数据源
  3590. * @param {number} [offset=0] 数据源中的偏移
  3591. * @returns {Vector4}
  3592. * @memberof Vector4
  3593. */
  3594. static createFromTypedArray(
  3595. array: Float32Array,
  3596. offset?: number
  3597. ): Vector4
  3598. /**
  3599. * 返回向量数据
  3600. *
  3601. * @returns {number[]} 矩阵数据,以JSArray返回
  3602. * @memberof Vector4
  3603. */
  3604. toArray(): number[]
  3605. /**
  3606. * 判断与目标向量的值是否相等
  3607. *
  3608. * @param {Vector4} v 目标向量
  3609. * @returns {boolean} 是否相等,这里误差小于10^-6视为相等
  3610. * @memberof Vector4
  3611. */
  3612. equal(v: Vector4): boolean
  3613. /**
  3614. * 拷贝目标向量的值到该向量
  3615. *
  3616. * @param {Vector4} val 目标向量
  3617. * @returns {Vector4} 自身
  3618. * @memberof Vector4
  3619. */
  3620. set(v: Vector4): Vector4
  3621. /**
  3622. * 设置向量的值
  3623. *
  3624. * @param {number} x x值
  3625. * @param {number} y y值
  3626. * @param {number} z z值
  3627. * @param {number} w w值
  3628. * @returns {Vector4} 自身
  3629. * @memberof Vector4
  3630. */
  3631. setValue(x: number, y: number, z: number, w: number): Vector4
  3632. /**
  3633. * 向量加法
  3634. *
  3635. * @param {Vector4} v 目标向量
  3636. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3637. * @returns {Vector4} 计算结果
  3638. * @memberof Vector4
  3639. */
  3640. add(v: Vector4, dst?: Vector4): Vector4
  3641. /**
  3642. * 向量减法
  3643. *
  3644. * @param {Vector4} v 目标向量
  3645. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3646. * @returns {Vector4} 计算结果
  3647. * @memberof Vector4
  3648. */
  3649. sub(v: Vector4, dst?: Vector4): Vector4
  3650. /**
  3651. * 向量缩放
  3652. *
  3653. * @param {number} f 缩放比
  3654. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3655. * @returns {Vector4} 计算结果
  3656. * @memberof Vector4
  3657. */
  3658. scale(f: number, dst?: Vector4): Vector4
  3659. /**
  3660. * 在该向量与目标向量之间计算插值
  3661. *
  3662. * @param {Vector4} v 目标向量
  3663. * @param {number} f 插值系数
  3664. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3665. * @returns {Vector4} 计算结果
  3666. * @memberof Vector4
  3667. */
  3668. lerp(v: Vector4, f: number, dst?: Vector4): Vector4
  3669. /**
  3670. * 取反
  3671. * @returns
  3672. */
  3673. negate(): this
  3674. /**
  3675. * 向量点乘
  3676. *
  3677. * @param {Vector4} v 目标向量
  3678. * @returns {number} 计算结果
  3679. * @memberof Vector4
  3680. */
  3681. dot(v: Vector4): number
  3682. /**
  3683. * 是否为零向量
  3684. *
  3685. * @returns {boolean}
  3686. * @memberof Vector4
  3687. */
  3688. isZero(): boolean
  3689. /**
  3690. * 拷贝该向量
  3691. *
  3692. * @returns {Vector4} 拷贝出来的对象
  3693. * @memberof Vector4
  3694. */
  3695. clone(): Vector4
  3696. setArray(value: ArrayLike<number>, offset?: number): Vector4
  3697. }
  3698. }
  3699. declare module 'XrFrame/math/quaternion' {
  3700. import Vector3 from 'XrFrame/math/vector3'
  3701. import V3ReadOnly from 'XrFrame/math/vector3'
  3702. import QuatReadOnly from 'XrFrame/math/quaternion'
  3703. import M4ReadOnly from 'XrFrame/math/matrix4'
  3704. /**
  3705. * @public
  3706. */
  3707. export default class Quaternion {
  3708. set x(val: number)
  3709. /**
  3710. * y值
  3711. *
  3712. * @type {number}
  3713. * @memberof Quaternion
  3714. */
  3715. get y(): number
  3716. set y(val: number)
  3717. /**
  3718. * z值
  3719. *
  3720. * @type {number}
  3721. * @memberof Quaternion
  3722. */
  3723. get z(): number
  3724. set z(val: number)
  3725. /**
  3726. * w值
  3727. *
  3728. * @type {number}
  3729. * @memberof Quaternion
  3730. */
  3731. get w(): number
  3732. set w(val: number)
  3733. /**
  3734. * 默认四元数,不要对该对象进行修改
  3735. *
  3736. * @readonly
  3737. * @static
  3738. * @type {QuatReadOnly}
  3739. * @memberof Quaternion
  3740. */
  3741. static readonly DEFAULT: QuatReadOnly
  3742. _raw: Float32Array
  3743. /**
  3744. * 从旋转矩阵创建
  3745. *
  3746. * @static
  3747. * @param {Matrix4} mat
  3748. * @param {Quaternion} [dst]
  3749. * @returns {Quaternion}
  3750. * @memberof Quaternion
  3751. */
  3752. static createFromMatrix4(mat: M4ReadOnly, dst?: Quaternion): Quaternion
  3753. /**
  3754. * 从轴向旋转创建
  3755. *
  3756. * @static
  3757. * @param {V3ReadOnly} axis 旋转轴
  3758. * @param {number} rad 旋转幅度
  3759. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3760. * @returns {Quaternion} 计算结果
  3761. * @memberof Quaternion
  3762. */
  3763. static createFromAxisAngle(
  3764. axis: V3ReadOnly,
  3765. rad: number,
  3766. dst?: Quaternion
  3767. ): Quaternion
  3768. /**
  3769. * 由视角方向创建四元数
  3770. *
  3771. * @static
  3772. * @param {V3ReadOnly} forward 前方向
  3773. * @param {V3ReadOnly} up 上方向
  3774. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3775. * @returns {Quaternion} 计算结果
  3776. * @memberof Quaternion
  3777. */
  3778. static lookRotation(
  3779. forward: V3ReadOnly,
  3780. up: V3ReadOnly,
  3781. dst?: Quaternion
  3782. ): Quaternion
  3783. /**
  3784. * 使用数值创建
  3785. *
  3786. * @static
  3787. * @param {number} x x
  3788. * @param {number} y y
  3789. * @param {number} z z
  3790. * @param {number} w w
  3791. * @returns {Quaternion} 创建出来的四元数
  3792. * @memberof Quaternion
  3793. */
  3794. static createFromNumber(
  3795. x: number,
  3796. y: number,
  3797. z: number,
  3798. w: number
  3799. ): Quaternion
  3800. /**
  3801. * 使用一个数组创建
  3802. * 此操作会拷贝一份数组
  3803. *
  3804. * @static
  3805. * @param {number[]} array 数据源,长度必须为4,否则会抛出异常
  3806. * @returns {Quaternion}
  3807. * @memberof Quaternion
  3808. */
  3809. static createFromArray(array: number[]): Quaternion
  3810. /**
  3811. * 使用某个已有的typedArray创建
  3812. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  3813. *
  3814. * @static
  3815. * @param {Float32Array} array 数据源
  3816. * @param {number} [offset=0] 数据源中的偏移
  3817. * @returns {Quaternion}
  3818. * @memberof Quaternion
  3819. */
  3820. static createFromTypedArray(
  3821. array: Float32Array,
  3822. offset?: number
  3823. ): Quaternion
  3824. /**
  3825. * 通过俩个向量创建四元数
  3826. * @param vFrom
  3827. * @param vTo
  3828. * @returns
  3829. */
  3830. static createFromUnitVectors(vFrom: Vector3, vTo: Vector3): QuatReadOnly
  3831. /**
  3832. * 拷贝目标四元数的值到自身
  3833. *
  3834. * @param {Quaternion} quat 目标四元数
  3835. * @returns {Quaternion} 自身
  3836. * @memberof Quaternion
  3837. */
  3838. set(quat: Quaternion): Quaternion
  3839. /**
  3840. * 设置四元数的值
  3841. *
  3842. * @param {number} x
  3843. * @param {number} y
  3844. * @param {number} z
  3845. * @param {number} w
  3846. * @returns {Quaternion} 自身
  3847. * @memberof Quaternion
  3848. */
  3849. setValue(x: number, y: number, z: number, w: number): Quaternion
  3850. /**
  3851. * 球面插值
  3852. *
  3853. * @param {Quaternion} right 目标四元数
  3854. * @param {number} t 插值系数,越接近 1 则结果越接近目标
  3855. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3856. * @returns {Quaternion} 计算结果
  3857. * @memberof Quaternion
  3858. */
  3859. slerp(right: QuatReadOnly, t: number, dst?: Quaternion): Quaternion
  3860. /**
  3861. * 四元数反转
  3862. *
  3863. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3864. * @returns {Quaternion} 计算结果
  3865. * @memberof Quaternion
  3866. */
  3867. invert(dst?: Quaternion): Quaternion
  3868. /**
  3869. * 四元数相加
  3870. *
  3871. * @param {Quaternion} quat 目标四元数
  3872. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3873. * @returns {Quaternion} 计算结果
  3874. * @memberof Quaternion
  3875. */
  3876. add(quat: QuatReadOnly, dst?: Quaternion): Quaternion
  3877. /**
  3878. * 四元数相减
  3879. *
  3880. * @param {Quaternion} quat 目标四元数
  3881. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3882. * @returns {Quaternion} 计算结果
  3883. * @memberof Quaternion
  3884. */
  3885. sub(quat: QuatReadOnly, dst?: Quaternion): Quaternion
  3886. /**
  3887. * 四元数相乘
  3888. *
  3889. * @param {Quaternion} quat 目标四元数
  3890. * @param {Quaternion} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3891. * @returns {Quaternion} 计算结果
  3892. * @memberof Quaternion
  3893. */
  3894. multiply(quat: QuatReadOnly, dst?: Quaternion): Quaternion
  3895. premultiply(q: QuatReadOnly): QuatReadOnly
  3896. /**
  3897. * 点乘
  3898. * @param q
  3899. */
  3900. dot(q: QuatReadOnly): number
  3901. length(): number
  3902. normalize(): this
  3903. setFromUnitVectors(vFrom: any, vTo: any): this
  3904. setFromYawRollPitch(yaw: number, roll: number, pitch: number): void
  3905. setFromEulerAngles(euler: Vector3): void
  3906. /**
  3907. * 相对角度
  3908. * @param q
  3909. */
  3910. angleTo(q: QuatReadOnly): number
  3911. /**
  3912. * 转向对应的角度
  3913. * @param q
  3914. * @param step
  3915. */
  3916. rotateTowards(q: any, step: any): QuatReadOnly
  3917. /**
  3918. * 拷贝四元数
  3919. *
  3920. * @returns {Quaternion} 拷贝后的对象
  3921. * @memberof Quaternion
  3922. */
  3923. clone(): Quaternion
  3924. /**
  3925. * 四元数是否为默认四元数(表示零旋转)
  3926. *
  3927. * @returns {boolean}
  3928. * @memberof Quaternion
  3929. */
  3930. isDefault(): boolean
  3931. /**
  3932. * 将该四元数转换成欧拉角,x代表Pitch,y代表Yaw,z代表Roll
  3933. * 旋转的顺序为YXZ
  3934. *
  3935. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  3936. * @returns {Vector3} 计算结果
  3937. * @memberof Quaternion
  3938. */
  3939. toEulerAngles(dst?: Vector3): Vector3
  3940. /**
  3941. * 判断与目标四元数的值是否相等
  3942. *
  3943. * @param {QuatReadOnly} quat 目标四元数
  3944. * @returns {boolean}
  3945. * @memberof Quaternion
  3946. */
  3947. equal(quat: QuatReadOnly): boolean
  3948. /**
  3949. * created by shanexyzhou
  3950. * 从物理引擎内的RawQuaternion生成Quaternion
  3951. */
  3952. static fromPhysics(v: phys3D.RawQuaternion): Quaternion
  3953. fromPhysics(v: phys3D.RawQuaternion): Quaternion
  3954. static Phys3D?: typeof phys3D
  3955. static clearPhysicsPool(): void
  3956. /**
  3957. * created by shanexyzhou
  3958. * 生成物理引擎内的RawQuaternion
  3959. */
  3960. toPhysics(): phys3D.RawQuaternion
  3961. setArray(value: ArrayLike<number>, offset?: number): Quaternion
  3962. transformVector3(vec: Vector3): Vector3
  3963. /**
  3964. * 对[1,1,1]向量进行转换。
  3965. */
  3966. toAxisUnit(): Vector3
  3967. }
  3968. }
  3969. declare module 'XrFrame/math/matrix3' {
  3970. import Vector2 from 'XrFrame/math/vector2'
  3971. import V2ReadOnly from 'XrFrame/math/vector2'
  3972. export default class Matrix3 {
  3973. get raw(): Float32Array
  3974. _raw: Float32Array
  3975. /**
  3976. * 使用一个数组创建
  3977. * 此操作会拷贝一份数组
  3978. *
  3979. * @static
  3980. * @param {number[]} array 数据源,长度必须为9,否则会抛出异常
  3981. * @returns {Matrix3} 创建出来的矩阵
  3982. * @memberof Matrix3
  3983. */
  3984. static createFromArray(array: number[]): Matrix3
  3985. /**
  3986. * 使用某个已有的typedArray创建
  3987. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  3988. *
  3989. * @static
  3990. * @param {Float32Array} array 数据源
  3991. * @param {number} [offset=0] 数据源中的偏移
  3992. * @returns {Matrix3} 创建出来的矩阵
  3993. * @memberof Matrix3
  3994. */
  3995. static createFromTypedArray(
  3996. array: Float32Array,
  3997. offset?: number
  3998. ): Matrix3
  3999. /**
  4000. * 返回矩阵数据
  4001. *
  4002. * @returns {number[]} 矩阵数据,以JSArray返回
  4003. * @memberof Matrix3
  4004. */
  4005. toArray(): number[]
  4006. /**
  4007. * 将该矩阵进行位移变换
  4008. *
  4009. * @param {number} tx x轴位移
  4010. * @param {number} ty y轴位移
  4011. * @param {Matrix3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4012. * @returns {Matrix3} 计算结果
  4013. * @memberof Matrix3
  4014. */
  4015. translate(tx: number, ty: number, dst?: Matrix3): Matrix3
  4016. /**
  4017. * 将该矩阵进行缩放变换
  4018. *
  4019. * @param {number} sx x轴缩放
  4020. * @param {number} sy y轴缩放
  4021. * @param {Matrix3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4022. * @returns {Matrix3} 计算结果
  4023. * @memberof Matrix3
  4024. */
  4025. scale(sx: number, sy: number, dst?: Matrix3): Matrix3
  4026. /**
  4027. * 将该矩阵进行旋转变换
  4028. *
  4029. * @param {number} radians 旋转幅度,用弧度表示
  4030. * @param {Matrix3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4031. * @returns {Matrix3} 计算结果
  4032. * @memberof Matrix3
  4033. */
  4034. rotate(radians: number, dst?: Matrix3): Matrix3
  4035. /**
  4036. * 求该矩阵的逆
  4037. *
  4038. * @param {Matrix3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4039. * @returns {Matrix3} 计算结果
  4040. * @memberof Matrix3
  4041. */
  4042. inverse(dst?: Matrix3): Matrix3
  4043. /**
  4044. * 将该矩阵与另一个矩阵相乘
  4045. *
  4046. * @param {Matrix3} m 右乘矩阵
  4047. * @param {Matrix3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4048. * @returns {Matrix3} 计算结果
  4049. * @memberof Matrix3
  4050. */
  4051. multiply(m: Matrix3, dst?: Matrix3): Matrix3
  4052. /**
  4053. * 矩阵变换作用于点
  4054. *
  4055. * @param {Vector2} v 点
  4056. * @param {Vector2} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4057. * @returns {Vector2} 计算结果
  4058. * @memberof Matrix3
  4059. */
  4060. transformPoint(v: V2ReadOnly, dst?: Vector2): Vector2
  4061. setArray(value: ArrayLike<number>, offset?: number): Matrix3
  4062. }
  4063. }
  4064. declare module 'XrFrame/math/matrix4' {
  4065. import Vector3 from 'XrFrame/math/vector3'
  4066. import Vector4 from 'XrFrame/math/vector4'
  4067. import V3ReadOnly from 'XrFrame/math/vector3'
  4068. import V4ReadOnly from 'XrFrame/math/vector4'
  4069. import QuatReadOnly from 'XrFrame/math/quaternion'
  4070. import M3ReadOnly from 'XrFrame/math/matrix3'
  4071. /**
  4072. * @public
  4073. */
  4074. export default class Matrix4 {
  4075. _raw: Float32Array
  4076. /**
  4077. * 构造相机矩阵
  4078. *
  4079. * @static
  4080. * @param {Vector3} position 相机位置
  4081. * @param {Vector3} target 相机目标位置
  4082. * @param {Vector3} up 上方向
  4083. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4084. * @returns {Matrix4} 计算结果
  4085. * @memberof Matrix4
  4086. */
  4087. static lookAt(
  4088. position: V3ReadOnly,
  4089. target: V3ReadOnly,
  4090. up: V3ReadOnly,
  4091. dst?: Matrix4
  4092. ): Matrix4
  4093. /**
  4094. * 构造透视投影矩阵
  4095. *
  4096. * @static
  4097. * @param {number} fieldOfViewRadians 视野大小,用弧度表示
  4098. * @param {number} aspect 宽高比
  4099. * @param {number} near 近平面
  4100. * @param {number} far 远平面
  4101. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4102. * @returns {Matrix4} 计算结果
  4103. * @memberof Matrix4
  4104. */
  4105. static perspective(
  4106. fieldOfViewRadians: number,
  4107. aspect: number,
  4108. near: number,
  4109. far: number,
  4110. dst?: Matrix4
  4111. ): Matrix4
  4112. /**
  4113. * 构造正交投影矩阵
  4114. *
  4115. * @static
  4116. * @param {number} left 左平面
  4117. * @param {number} right 右平面
  4118. * @param {number} bottom 上平面
  4119. * @param {number} top 下平面
  4120. * @param {number} near 近平面
  4121. * @param {number} far 远平面
  4122. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4123. * @returns {Matrix4} 计算结果
  4124. * @memberof Matrix4
  4125. */
  4126. static orthographic(
  4127. left: number,
  4128. right: number,
  4129. bottom: number,
  4130. top: number,
  4131. near: number,
  4132. far: number,
  4133. dst?: Matrix4
  4134. ): Matrix4
  4135. /**
  4136. * 将四元数转换为旋转矩阵
  4137. *
  4138. * @static
  4139. * @param {Quaternion} quat 四元数
  4140. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4141. * @returns {Matrix4} 计算结果
  4142. * @memberof Matrix4
  4143. */
  4144. static fromQuaternion(quat: QuatReadOnly, dst?: Matrix4): Matrix4
  4145. /**
  4146. * 使用一个数组创建
  4147. * 此操作会拷贝一份数组
  4148. *
  4149. * @static
  4150. * @param {number[]} array 数据源,长度必须为16,否则会抛出异常
  4151. * @returns {Matrix4} 创建出来的矩阵
  4152. * @memberof Matrix4
  4153. */
  4154. static createFromArray(array: number[]): Matrix4
  4155. /**
  4156. * 使用某个已有的typedArray创建
  4157. * 此操作不会拷贝数据,而是在原来的内存区域上操作
  4158. *
  4159. * @static
  4160. * @param {Float32Array} array 数据源
  4161. * @param {number} [offset=0] 数据源中的偏移
  4162. * @returns {Matrix4} 创建出来的矩阵
  4163. * @memberof Matrix4
  4164. */
  4165. static createFromTypedArray(
  4166. array: Float32Array,
  4167. offset?: number
  4168. ): Matrix4
  4169. /**
  4170. * 创建绕X轴旋转的矩阵
  4171. *
  4172. * @static
  4173. * @param {number} rad 旋转幅度,用弧度表示
  4174. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4175. * @returns {Matrix4} 计算结果
  4176. * @memberof Matrix4
  4177. */
  4178. static createRotationX(rad: number, dst?: Matrix4): Matrix4
  4179. /**
  4180. * 创建绕Y轴旋转的矩阵
  4181. *
  4182. * @static
  4183. * @param {number} rad 旋转幅度,用弧度表示
  4184. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4185. * @returns {Matrix4} 计算结果
  4186. * @memberof Matrix4
  4187. */
  4188. static createRotationY(rad: number, dst?: Matrix4): Matrix4
  4189. /**
  4190. * 创建绕Z轴旋转的矩阵
  4191. *
  4192. * @static
  4193. * @param {number} rad 旋转轴
  4194. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4195. * @returns {Matrix4} 计算结果
  4196. * @memberof Matrix4
  4197. */
  4198. static createRotationZ(rad: number, dst?: Matrix4): Matrix4
  4199. /**
  4200. * 创建绕指定轴旋转的矩阵
  4201. *
  4202. * @static
  4203. * @param {Vector3} axis 旋转轴
  4204. * @param {number} angleInRadians 旋转幅度,用弧度表示
  4205. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4206. * @returns {Matrix4} 计算结果
  4207. * @memberof Matrix4
  4208. */
  4209. static createRotationAxis(
  4210. axis: V3ReadOnly,
  4211. angleInRadians: number,
  4212. dst?: Matrix4
  4213. ): Matrix4
  4214. /**
  4215. * 将位移旋转缩放合成一个RST矩阵,旋转用矩阵表示
  4216. *
  4217. * @static
  4218. * @param {V3ReadOnly} translation 位移向量
  4219. * @param {M4ReadOnly} rotation 旋转矩阵
  4220. * @param {V3ReadOnly} scale 缩放向量
  4221. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4222. * @returns {Matrix4} 计算结果
  4223. * @memberof Matrix4
  4224. */
  4225. static composeTRS(
  4226. translation: V3ReadOnly,
  4227. rotation: Matrix4,
  4228. scale: V3ReadOnly,
  4229. dst?: Matrix4
  4230. ): Matrix4
  4231. /**
  4232. * 将位移旋转缩放合成一个RST矩阵,旋转用四元数表示
  4233. *
  4234. * @static
  4235. * @param {V3ReadOnly} translation 位移向量
  4236. * @param {QuatReadOnly} rotation 旋转四元数
  4237. * @param {V3ReadOnly} scale 缩放向量
  4238. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4239. * @returns {Matrix4} 计算结果
  4240. * @memberof Matrix4
  4241. */
  4242. static composeTQS(
  4243. translation: V3ReadOnly,
  4244. rotation: QuatReadOnly,
  4245. scale: V3ReadOnly,
  4246. dst?: Matrix4
  4247. ): Matrix4
  4248. /**
  4249. * 从二维RST矩阵扩展到三维RST矩阵
  4250. *
  4251. * @static
  4252. * @param {Matrix3} m3 二维RST矩阵
  4253. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4254. * @returns {Matrix4} 计算结果
  4255. * @memberof Matrix4
  4256. */
  4257. static composeFromRST3(m3: M3ReadOnly, dst?: Matrix4): Matrix4
  4258. /**
  4259. * 返回矩阵数据
  4260. *
  4261. * @returns {number[]} 矩阵数据,以JSArray返回
  4262. * @memberof Matrix4
  4263. */
  4264. toArray(): number[]
  4265. /**
  4266. * 将该矩阵进行位移变换
  4267. *
  4268. * @param {number} tx x轴位移
  4269. * @param {number} ty y轴位移
  4270. * @param {number} tz z轴位移
  4271. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4272. * @returns {Matrix4} 计算结果
  4273. * @memberof Matrix4
  4274. */
  4275. translate(tx: number, ty: number, tz: number, dst?: Matrix4): Matrix4
  4276. /**
  4277. * 将该矩阵进行缩放变换
  4278. *
  4279. * @param {number} sx x轴缩放
  4280. * @param {number} sy y轴缩放
  4281. * @param {number} sz z轴缩放
  4282. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4283. * @returns {Matrix4} 计算结果
  4284. * @memberof Matrix4
  4285. */
  4286. scale(sx: number, sy: number, sz: number, dst?: Matrix4): Matrix4
  4287. /**
  4288. * 将该矩阵绕x轴旋转
  4289. *
  4290. * @param {number} rx 旋转幅度,用弧度表示
  4291. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4292. * @returns {Matrix4} 计算结果
  4293. * @memberof Matrix4
  4294. */
  4295. xRotate(rx: number, dst?: Matrix4): Matrix4
  4296. /**
  4297. * 将该矩阵绕y轴旋转
  4298. *
  4299. * @param {number} ry 旋转幅度,用弧度表示
  4300. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4301. * @returns {Matrix4} 计算结果
  4302. * @memberof Matrix4
  4303. */
  4304. yRotate(ry: number, dst?: Matrix4): Matrix4
  4305. /**
  4306. * 将该矩阵绕z轴旋转
  4307. *
  4308. * @param {number} rz 旋转幅度,用弧度表示
  4309. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4310. * @returns {Matrix4} 计算结果
  4311. * @memberof Matrix4
  4312. */
  4313. zRotate(rz: number, dst?: Matrix4): Matrix4
  4314. /**
  4315. * 将该矩阵绕指定轴旋转
  4316. *
  4317. * @param {Vector3} axis 轴向量
  4318. * @param {number} angleInRadians 旋转幅度,用弧度表示
  4319. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4320. * @returns {Matrix4} 计算结果
  4321. * @memberof Matrix4
  4322. */
  4323. axisRotate(
  4324. axis: V3ReadOnly,
  4325. angleInRadians: number,
  4326. dst?: Matrix4
  4327. ): Matrix4
  4328. /**
  4329. * 将该矩阵使用指定四元数旋转
  4330. *
  4331. * @param {Quaternion} quaternion 四元数
  4332. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4333. * @returns {Matrix4} 计算结果
  4334. * @memberof Matrix4
  4335. */
  4336. rotateByQuaternion(quaternion: QuatReadOnly, dst?: Matrix4): Matrix4
  4337. /**
  4338. * 求该矩阵的逆
  4339. *
  4340. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4341. * @returns {Matrix4} 计算结果
  4342. * @memberof Matrix4
  4343. */
  4344. inverse(dst?: Matrix4): Matrix4
  4345. /**
  4346. * 求该矩阵的转置
  4347. *
  4348. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4349. * @returns {Matrix4} 计算结果
  4350. * @memberof Matrix4
  4351. */
  4352. transpose(dst?: Matrix4): Matrix4
  4353. /**
  4354. * 将该矩阵与另一个矩阵相乘
  4355. *
  4356. * @param {Matrix4} m 右乘矩阵
  4357. * @param {Matrix4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4358. * @returns {Matrix4} 计算结果
  4359. * @memberof Matrix4
  4360. */
  4361. multiply(m: Matrix4, dst?: Matrix4): Matrix4
  4362. /**
  4363. * 矩阵变换作用于向量
  4364. *
  4365. * @param {Vector4} v 向量
  4366. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4367. * @returns {Vector4} 计算结果
  4368. * @memberof Matrix4
  4369. */
  4370. transformVector(v: V4ReadOnly, dst?: Vector4): Vector4
  4371. /**
  4372. * 矩阵变换作用于方向
  4373. *
  4374. * @param {Vector3} dir 方向
  4375. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4376. * @returns {Vector3} 计算结果
  4377. * @memberof Matrix4
  4378. */
  4379. transformDirection(dir: V3ReadOnly, dst?: Vector3): Vector3
  4380. /**
  4381. * 矩阵变换作用于点
  4382. *
  4383. * @param {Vector3} p 点
  4384. * @param {Vector3} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4385. * @returns {Vector3} 计算结果
  4386. * @memberof Matrix4
  4387. */
  4388. transformPoint(p: V3ReadOnly, dst?: Vector3): Vector3
  4389. /**
  4390. * 拷贝目标矩阵的值到该矩阵
  4391. *
  4392. * @param {M4ReadOnly} val 目标
  4393. * @returns {Matrix4} 自身
  4394. * @memberof Matrix4
  4395. */
  4396. set(val: Matrix4): Matrix4
  4397. /**
  4398. * 拷贝该矩阵
  4399. *
  4400. * @returns {Matrix4} 拷贝出来的对象
  4401. * @memberof Matrix4
  4402. */
  4403. clone(): Matrix4
  4404. /**
  4405. * 分解RTS矩阵为位移、旋转、缩放向量,返回是否成功
  4406. *
  4407. * @param {Vector3} dstTranslation 目标位移向量
  4408. * @param {Matrix4} dstRotationMatrix 目标旋转矩阵
  4409. * @param {Vector3} dstScale 目标缩放分量
  4410. * @returns {boolean} 分解是否成功,如不成功,可能是缩放分量为0
  4411. * @memberof Matrix4
  4412. */
  4413. decomposeTransRotMatScale(
  4414. dstTranslation: Vector3,
  4415. dstRotationMatrix: Matrix4,
  4416. dstScale: Vector3
  4417. ): boolean
  4418. /**
  4419. * 设置该矩阵某行某列的值
  4420. *
  4421. * @param {number} value 值
  4422. * @param {number} column 列数
  4423. * @param {number} row 行数
  4424. * @returns {Matrix4} 自身
  4425. * @memberof Matrix4
  4426. */
  4427. setValue(value: number, column: number, row: number): Matrix4
  4428. /**
  4429. * 获取矩阵某行某列的值
  4430. *
  4431. *
  4432. * @param {number} column 列数
  4433. * @param {number} row 行数
  4434. * @returns {number} 自身
  4435. * @memberof Matrix4
  4436. */
  4437. getValue(column: number, row: number): number
  4438. /**
  4439. * 设置矩阵某列
  4440. *
  4441. * @param {V4ReadOnly} vec 列向量
  4442. * @param {number} column 列数
  4443. * @returns {Matrix4} 自身
  4444. * @memberof Matrix4
  4445. */
  4446. setColumn(vec: V4ReadOnly, column: number): Matrix4
  4447. /**
  4448. * 获取矩阵某列
  4449. *
  4450. * @param {number} column 列数
  4451. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4452. * @returns {Vector4} 该列数据
  4453. * @memberof Matrix4
  4454. */
  4455. getColumn(column: number, dst?: Vector4): Vector4
  4456. /**
  4457. * 设置矩阵某行
  4458. *
  4459. * @param {V4ReadOnly} vec 行向量
  4460. * @param {number} row 行数
  4461. * @returns {Matrix4} 自身
  4462. * @memberof Matrix4
  4463. */
  4464. setRow(vec: V4ReadOnly, row: number): Matrix4
  4465. /**
  4466. * 获取矩阵某行
  4467. *
  4468. * @param {number} row 行数
  4469. * @param {Vector4} [dst] 计算结果输出到的目标对象,如不传则新建一个
  4470. * @returns {Vector4} 该行数据
  4471. * @memberof Matrix4
  4472. */
  4473. getRow(row: number, dst?: Vector4): Vector4
  4474. setArray(value: ArrayLike<number>, offset?: number): Matrix4
  4475. print(): void
  4476. }
  4477. }
  4478. declare module 'XrFrame/math/color' {
  4479. import Vector3 from 'XrFrame/math/vector3'
  4480. export enum BlendType {
  4481. Alpha = 0,
  4482. RGB = 1,
  4483. RGBA = 2,
  4484. None = 3
  4485. }
  4486. export const GetColorFromHex: (str: any) => number
  4487. /**
  4488. * @public
  4489. */
  4490. export default class Color {
  4491. get r(): number
  4492. set r(val: number)
  4493. get g(): number
  4494. set g(val: number)
  4495. get b(): number
  4496. set b(val: number)
  4497. get a(): number
  4498. set a(val: number)
  4499. static get WHITE(): Color
  4500. static get BLACK(): Color
  4501. static get TRANSPARENT(): Color
  4502. static BlendType: typeof BlendType
  4503. static blendColorHex(
  4504. colorHexA: number,
  4505. colorHexB: number,
  4506. type?: BlendType
  4507. ): number
  4508. static multiplyColorHex(
  4509. colorHexA: number,
  4510. colorHexB: number,
  4511. type?: BlendType
  4512. ): number
  4513. static getValue32FromRGBA(
  4514. r: number,
  4515. g: number,
  4516. b: number,
  4517. a: number
  4518. ): number
  4519. static getValue32FromHSVA(): void
  4520. static percentRoundFn(num: number): number
  4521. static diffc(v: number, c: number, diff: number): number
  4522. static rgb2hsv(r: number, g: number, b: number, dst?: Vector3): Vector3
  4523. static hsvV2rgb(h: number, s: number, v: number, dst?: Vector3): Vector3
  4524. static randomMix(
  4525. colorHexA: number,
  4526. colorHexB: number,
  4527. randomSeed?: number
  4528. ): number
  4529. static fromHex(hex: number): Color
  4530. static fromHexString(hexString: string): Color
  4531. static fromFloatArray(arr: number[]): Color
  4532. equals(target: Color): boolean
  4533. set(val: Color): void
  4534. setRGBA(r: number, g: number, b: number, a: number): void
  4535. setValue32(v32: number): void
  4536. toNormalizedArray(): [number, number, number, number]
  4537. toRGBAString(): string
  4538. mix(color: Color, dst?: Color): Color
  4539. }
  4540. }
  4541. declare module 'XrFrame/math/OBB' {
  4542. import Vector3 from 'XrFrame/math/vector3'
  4543. export default class OBB {
  4544. constructor()
  4545. setValues(
  4546. cenX: number,
  4547. cenY: number,
  4548. cenZ: number,
  4549. forward: Vector3,
  4550. w: number,
  4551. h: number,
  4552. d: number
  4553. ): void
  4554. get center(): Vector3
  4555. set center(pos: Vector3)
  4556. get width(): number
  4557. set width(w: number)
  4558. get height(): number
  4559. set height(h: number)
  4560. get depth(): number
  4561. set depth(d: number)
  4562. setForward(forward: Vector3): void
  4563. get AxisX(): Vector3
  4564. get AxisY(): Vector3
  4565. get AxisZ(): Vector3
  4566. }
  4567. }
  4568. declare module 'XrFrame/math/boundBall' {
  4569. import Vector3 from 'XrFrame/math/vector3'
  4570. import V3ReadOnly from 'XrFrame/math/vector3'
  4571. export default class BoundBall {
  4572. static readonly OFFSETS: Readonly<{
  4573. center: number
  4574. radius: number
  4575. }>
  4576. /**
  4577. * 包围球中心
  4578. *
  4579. * @type {V3ReadOnly}
  4580. * @memberof BoundBall
  4581. */
  4582. get center(): V3ReadOnly
  4583. set center(val: V3ReadOnly)
  4584. /**
  4585. * 包围球半径
  4586. *
  4587. * @type {number}
  4588. * @memberof BoundBall
  4589. */
  4590. get radius(): number
  4591. set radius(val: number)
  4592. _raw: Float32Array
  4593. _offset: number
  4594. protected _center?: Vector3
  4595. constructor(raw?: Float32Array, offset?: number)
  4596. /**
  4597. * 使用中心和半径创建包围球
  4598. *
  4599. * @static
  4600. * @param {V3ReadOnly} center
  4601. * @param {number} radius
  4602. * @returns {BoundBall}
  4603. * @memberof BoundBall
  4604. */
  4605. static createFromCenterAndRadius(
  4606. center: V3ReadOnly,
  4607. radius: number
  4608. ): BoundBall
  4609. /**
  4610. * 设置值
  4611. *
  4612. * @param {V3ReadOnly} center
  4613. * @param {number} radius
  4614. * @returns {BoundBall}
  4615. * @memberof BoundBall
  4616. */
  4617. setValue(center: V3ReadOnly, radius: number): BoundBall
  4618. /**
  4619. * 使用一系列点初始化
  4620. *
  4621. * @param {V3ReadOnly[]} points
  4622. * @returns {BoundBall} 自身
  4623. * @memberof BoundBall
  4624. */
  4625. initByPoints(points: V3ReadOnly[]): BoundBall
  4626. initByPointRadius(center: V3ReadOnly, radius: number): void
  4627. }
  4628. }
  4629. declare module 'XrFrame/math/boundBox' {
  4630. import Vector3 from 'XrFrame/math/vector3'
  4631. import V3ReadOnly from 'XrFrame/math/vector3'
  4632. export default class BoundBox {
  4633. static readonly OFFSETS: Readonly<{
  4634. center: number
  4635. size: number
  4636. }>
  4637. /**
  4638. * 包围盒中心
  4639. *
  4640. * @type {Vector3}
  4641. * @memberof BoundBox
  4642. */
  4643. get center(): V3ReadOnly
  4644. set center(val: V3ReadOnly)
  4645. /**
  4646. * 包围盒尺寸
  4647. *
  4648. * @memberof BoundBox
  4649. */
  4650. get size(): V3ReadOnly
  4651. set size(val: V3ReadOnly)
  4652. _raw: Float32Array
  4653. _offset: number
  4654. protected _center?: Vector3
  4655. protected _size?: Vector3
  4656. constructor(raw?: Float32Array, offset?: number)
  4657. /**
  4658. * 使用中心和尺寸创建包围球
  4659. *
  4660. * @static
  4661. * @param {V3ReadOnly} center 中心
  4662. * @param {V3ReadOnly} size 尺寸
  4663. * @returns {BoundBall}
  4664. * @memberof BoundBall
  4665. */
  4666. static createFromCenterAndSize(
  4667. center: V3ReadOnly,
  4668. size: V3ReadOnly
  4669. ): BoundBox
  4670. /**
  4671. * 设置值
  4672. *
  4673. * @param {V3ReadOnly} center
  4674. * @param {V3ReadOnly} size
  4675. * @returns {BoundBox}
  4676. * @memberof BoundBox
  4677. */
  4678. setValue(center: V3ReadOnly, size: V3ReadOnly): BoundBox
  4679. initByPoints(points: Vector3[], length?: number): void
  4680. startInitByPoints(): void
  4681. addPoint(corner: Vector3): void
  4682. endInitByPoints(): void
  4683. }
  4684. }
  4685. declare module 'XrFrame/math/Spherical' {
  4686. /**
  4687. * Spherical.ts
  4688. *
  4689. * * @Date : 2022/1/14下午4:49:50
  4690. */
  4691. import Vector3 from 'XrFrame/math/vector3'
  4692. /**
  4693. * 球面坐标系。
  4694. */
  4695. export default class Spherical {
  4696. static EPS: number
  4697. isSpherical: boolean
  4698. /**
  4699. * 球面半径。
  4700. */
  4701. radius: number
  4702. /**
  4703. * 点在球面上的横向旋转角度。
  4704. */
  4705. phi: number
  4706. /**
  4707. * 点在球面上的纵向旋转角度。
  4708. */
  4709. theta: number
  4710. /**
  4711. * 球面球心。
  4712. */
  4713. center: Vector3
  4714. constructor(radius?: number, phi?: number, theta?: number)
  4715. set(radius: number, phi: number, theta: number): this
  4716. clone(): Spherical
  4717. copy(other: Spherical): this
  4718. /**
  4719. * restrict phi to be between EPS and PI-EPS。
  4720. */
  4721. makeSafe(): this
  4722. /**
  4723. * 从笛卡尔坐标系的Vector3转换。
  4724. */
  4725. setFromVector3(vector: Vector3): this
  4726. /**
  4727. * 从笛卡尔坐标系的x、y、z转换。
  4728. */
  4729. setFromCartesianCoords(x: number, y: number, z: number): this
  4730. /**
  4731. * 转换到笛卡尔坐标系的Vector3。
  4732. */
  4733. toVector3(vector?: Vector3): Vector3
  4734. }
  4735. }
  4736. declare module 'XrFrame/kanata/lib/kanata' {
  4737. import * as IKanata from 'XrFrame/kanata/lib/frontend'
  4738. import { IEngineSettings } from 'XrFrame/kanata/lib/backend/interface'
  4739. export * from 'XrFrame/kanata/lib/backend/interface'
  4740. export {
  4741. ITextureOptions,
  4742. IRenderPassDescriptor
  4743. } from 'XrFrame/kanata/lib/index'
  4744. export type AnimatorComponent = IKanata.AnimatorComponent
  4745. export type CameraComponent = IKanata.CameraComponent
  4746. export type LightCameraComponent = IKanata.LightCameraComponent
  4747. export type CullingComponent = IKanata.CullingComponent
  4748. export type MeshRendererComponent = IKanata.MeshRendererComponent
  4749. export type SkinnedSkeletonComponent = IKanata.SkinnedSkeletonComponent
  4750. export type DynamicBonesComponent = IKanata.DynamicBonesComponent
  4751. export type Entity2D = IKanata.Entity2D
  4752. export type Entity3D = IKanata.Entity3D
  4753. export type AnimationClipModel = IKanata.AnimationClipModel
  4754. export type AnimationClipBinding = IKanata.AnimationClipBinding
  4755. export type AnimatorControllerModel = IKanata.AnimatorControllerModel
  4756. export type AnimatorControllerStateModel =
  4757. IKanata.AnimatorControllerStateModel
  4758. export type DataBuffer = IKanata.DataBuffer
  4759. export type DataModel = IKanata.DataModel
  4760. export type Effect = IKanata.Effect
  4761. export type Material = IKanata.Material
  4762. export type SkeletonBoneInverseModel = IKanata.SkeletonBoneInverseModel
  4763. export type UniformBlock = IKanata.UniformBlock
  4764. export type UniformDescriptor = IKanata.UniformDescriptor
  4765. export type IndexBuffer = IKanata.IndexBuffer
  4766. export type IndexData = IKanata.IndexData
  4767. export type VertexBuffer = IKanata.VertexBuffer
  4768. export type VertexData = IKanata.VertexData
  4769. export type VertexLayout = IKanata.VertexLayout
  4770. export type VertexDataDescriptor = IKanata.VertexDataDescriptor
  4771. export type View = IKanata.View
  4772. export type ScalableList = IKanata.ScalableList
  4773. export type RenderPass = IKanata.RenderPass
  4774. export type Texture = IKanata.Texture
  4775. export type RenderEnv = IKanata.RenderEnv
  4776. export interface IKanataInstance {
  4777. Image: typeof IKanata.Image
  4778. Downloader: typeof IKanata.Downloader
  4779. IS_VALID: typeof IKanata.IS_VALID
  4780. GET_MAIN_CANVAS: typeof IKanata.GET_MAIN_CANVAS
  4781. Phys3D: typeof IKanata.Phys3D
  4782. AnimatorComponent: typeof IKanata.AnimatorComponent
  4783. CameraComponent: typeof IKanata.CameraComponent
  4784. LightCameraComponent: typeof IKanata.LightCameraComponent
  4785. CullingComponent: typeof IKanata.CullingComponent
  4786. MeshRendererComponent: typeof IKanata.MeshRendererComponent
  4787. SkinnedSkeletonComponent: typeof IKanata.SkinnedSkeletonComponent
  4788. DynamicBonesComponent: typeof IKanata.DynamicBonesComponent
  4789. Entity2D: typeof IKanata.Entity2D
  4790. Entity3D: typeof IKanata.Entity3D
  4791. AnimationClipModel: typeof IKanata.AnimationClipModel
  4792. AnimationClipBinding: typeof IKanata.AnimationClipBinding
  4793. AnimatorControllerModel: typeof IKanata.AnimatorControllerModel
  4794. AnimatorControllerStateModel: typeof IKanata.AnimatorControllerStateModel
  4795. DataBuffer: typeof IKanata.DataBuffer
  4796. DataModel: typeof IKanata.DataModel
  4797. Effect: typeof IKanata.Effect
  4798. Material: typeof IKanata.Material
  4799. SkeletonBoneInverseModel: typeof IKanata.SkeletonBoneInverseModel
  4800. UniformBlock: typeof IKanata.UniformBlock
  4801. UniformDescriptor: typeof IKanata.UniformDescriptor
  4802. IndexBuffer: typeof IKanata.IndexBuffer
  4803. IndexData: typeof IKanata.IndexData
  4804. VertexBuffer: typeof IKanata.VertexBuffer
  4805. VertexData: typeof IKanata.VertexData
  4806. VertexLayout: typeof IKanata.VertexLayout
  4807. VertexDataDescriptor: typeof IKanata.VertexDataDescriptor
  4808. View: typeof IKanata.View
  4809. ScalableList: typeof IKanata.ScalableList
  4810. crossContext: typeof IKanata.crossContext
  4811. RenderPass: typeof IKanata.RenderPass
  4812. Texture: typeof IKanata.Texture
  4813. RenderEnv: typeof IKanata.RenderEnv
  4814. renderEnv: typeof IKanata.renderEnv
  4815. createWeakRef: typeof IKanata.createWeakRef
  4816. createWeakRefSentry: typeof IKanata.createWeakRefSentry
  4817. createNativeUUMap: typeof IKanata.createNativeUUMap
  4818. createNativeSUMap: typeof IKanata.createNativeSUMap
  4819. createNativeULUMap: typeof IKanata.createNativeULUMap
  4820. loadTTFFont: typeof IKanata.loadTTFFont
  4821. getGlyphInfo: typeof IKanata.getGlyphInfo
  4822. refreshNodesWorldTransform: typeof IKanata.refreshNodesWorldTransform
  4823. setGlobalPhysicSystem: typeof IKanata.setGlobalPhysicSystem
  4824. bindRigidBodyToNode: typeof IKanata.bindRigidBodyToNode
  4825. bindCCTToNode: typeof IKanata.bindCCTToNode
  4826. unbindRigidBody: typeof IKanata.unbindRigidBody
  4827. unbindCCT: typeof IKanata.unbindCCT
  4828. decodeBase64: typeof IKanata.decodeBase64
  4829. initDraco: typeof IKanata.initDraco
  4830. decodeDraco: typeof IKanata.decodeDraco
  4831. setNodeName: typeof IKanata.setNodeName
  4832. setRenderComponentName: typeof IKanata.setRenderComponentName
  4833. debugPrint: typeof IKanata.debugPrint
  4834. eventBridge: typeof IKanata.eventBridge
  4835. destroy: typeof IKanata.destroy
  4836. update: typeof IKanata.update
  4837. }
  4838. export function CREATE_INSTANCE(
  4839. MAIN_CANVAS: HTMLCanvasElement,
  4840. ENGINE_SETTINGS: IEngineSettings,
  4841. ENGINE_MODE: 'Game' | 'Editor',
  4842. IS_SUB_CONTEXT: boolean,
  4843. HOST: string,
  4844. FIX_INSTANCE: boolean
  4845. ): IKanataInstance
  4846. export function RELEASE_INSTANCE(MAIN_CANVAS: HTMLCanvasElement): void
  4847. }
  4848. declare module 'XrFrame/core/Scene' {
  4849. /**
  4850. * Scene.ts
  4851. *
  4852. * * @Date : 2022/3/16下午3:32:57
  4853. */
  4854. import Transform from 'XrFrame/components/Transform'
  4855. import { Kanata } from 'XrFrame/ext'
  4856. import AssetsSystem from 'XrFrame/systems/AssetsSystem'
  4857. import RenderSystem from 'XrFrame/systems/RenderSystem'
  4858. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  4859. import Material from 'XrFrame/assets/Material'
  4860. import RenderTexture, {
  4861. IRenderTextureOptions
  4862. } from 'XrFrame/assets/RenderTexture'
  4863. import Effect, { IEffectAsset } from 'XrFrame/assets/Effect'
  4864. import Geometry from 'XrFrame/assets/Geometry'
  4865. import AnimationSystem from 'XrFrame/systems/AnimationSystem'
  4866. import PhysicsSystem from 'XrFrame/systems/PhysicsSystem'
  4867. import ARSystem from 'XrFrame/systems/ARSystem'
  4868. import { XRShadow } from 'XrFrame/elements'
  4869. import { GizmoSystem, ShareSystem, VideoSystem } from 'XrFrame/systems'
  4870. import VideoTexture, {
  4871. IVideoTextureOptions
  4872. } from 'XrFrame/assets/VideoTexture'
  4873. import PostProcess, {
  4874. IPostProcessOptions
  4875. } from 'XrFrame/assets/PostProcess'
  4876. /**
  4877. * 场景的默认组件,均为系统。
  4878. */
  4879. export const SceneDefaultComponents: IEntityComponents
  4880. /**
  4881. * 场景的默认映射。
  4882. */
  4883. export const SceneDataMapping: {
  4884. [key: string]: string[]
  4885. }
  4886. export interface TDict<T> {
  4887. [key: string]: T
  4888. }
  4889. /**
  4890. * 场景,系统核心之一。
  4891. *
  4892. * `Scene`是元素的一种,对应于`xr-scene`标签。
  4893. * 作为整个`xr-frame`组件的根节点,它提供了整个组件运作的一些基本能力,挂在了各大系统,驱动生命周期循环。
  4894. */
  4895. export default class Scene extends Element {
  4896. readonly defaultComponents: IEntityComponents
  4897. readonly isScene: boolean
  4898. /**
  4899. * 场景是否已经就绪。
  4900. */
  4901. get ready(): boolean
  4902. /**
  4903. * 自身。
  4904. */
  4905. get scene(): this
  4906. /**
  4907. * 一个可以用于快速挂载自己创建的`Element`的`shadow`节点。
  4908. */
  4909. get rootShadow(): XRShadow
  4910. /**
  4911. * 资源系统。
  4912. */
  4913. get assets(): AssetsSystem
  4914. /**
  4915. * 渲染系统。
  4916. */
  4917. get render(): RenderSystem
  4918. /**
  4919. * 动画系统。
  4920. */
  4921. get animation(): AnimationSystem
  4922. /**
  4923. * 视频系统。
  4924. */
  4925. get video(): VideoSystem
  4926. /**
  4927. * 物理系统。
  4928. */
  4929. get physics(): PhysicsSystem
  4930. /**
  4931. * AR系统。
  4932. */
  4933. get ar(): ARSystem
  4934. /**
  4935. * Gizmo系统。
  4936. */
  4937. get gizmo(): GizmoSystem
  4938. /**
  4939. * 分享系统。
  4940. */
  4941. get share(): ShareSystem
  4942. /**
  4943. * 渲染分辨率宽,一般物理点击事件之类的都是参考这个。
  4944. */
  4945. get width(): number
  4946. /**
  4947. * 渲染分辨率高,一般物理点击事件之类的都是参考这个。
  4948. */
  4949. get height(): number
  4950. /**
  4951. * 显示分辨率宽。
  4952. */
  4953. get frameWidth(): number
  4954. /**
  4955. * 显示分辨率高。
  4956. */
  4957. get frameHeight(): number
  4958. /**
  4959. * 当前时间戳(ms)。
  4960. */
  4961. get timestamp(): number
  4962. /**
  4963. * @internal
  4964. */
  4965. get renderPass(): Kanata.RenderPass
  4966. /**
  4967. * @internal
  4968. */
  4969. get rootNode(): import('XrFrame/kanata/lib/index').Entity3D
  4970. /**
  4971. * @internal
  4972. */
  4973. get backendVersion(): number[]
  4974. /**
  4975. * @internal
  4976. */
  4977. versionBefore(major: number, minor: number): boolean
  4978. /**
  4979. * @internal
  4980. */
  4981. get backendCommit(): string
  4982. /**
  4983. * @internal
  4984. */
  4985. get backendUsePuppetSokol(): boolean
  4986. /**
  4987. * @internal
  4988. */
  4989. /**
  4990. * @internal
  4991. */
  4992. /**
  4993. * @internal
  4994. */
  4995. /**
  4996. * 创建一个`Element`,但注意**其只能作为`xr-shadow`的子孙节点**,否则可能会出错!
  4997. *
  4998. * @param attributes 初始化的属性,同于`xml`中对应的标签属性。
  4999. */
  5000. createElement<T extends Element>(
  5001. clz: new (...args: any) => T,
  5002. attributes?: {
  5003. [name: string]: string
  5004. }
  5005. ): T
  5006. /**
  5007. * @internal
  5008. */
  5009. /**
  5010. * @internal
  5011. */
  5012. /**
  5013. * @internal
  5014. */
  5015. /**
  5016. * @internal
  5017. */
  5018. /**
  5019. * @internal
  5020. */
  5021. /**
  5022. * 通过在`wxml`的元素上设置的`id`索引一个元素,`id`是唯一的。
  5023. */
  5024. getElementById(id: string): Element
  5025. /**
  5026. * 通过在`wxml`的元素上设置的`node-id`索引一个`Transform`组件,`node-id`是唯一的。
  5027. */
  5028. getNodeById(nodeId: string): Transform
  5029. /**
  5030. * @internal
  5031. */
  5032. /**
  5033. * 手动创建一个`Image`资源。
  5034. *
  5035. * @param autoRelease 此图片在第一次时候后是否释放原始数据,默认释放。
  5036. */
  5037. createImage(autoRelease?: boolean): Kanata.IImage
  5038. /**
  5039. * 手动创建一个`Texture`资源。
  5040. */
  5041. createTexture(options: Kanata.ITextureOptions): Kanata.Texture
  5042. /**
  5043. * 手动创建一个`Effect`资源。
  5044. */
  5045. createEffect(description: IEffectAsset): Effect
  5046. /**
  5047. * 手动创建一个`UniformBlockDescriptor`资源。
  5048. */
  5049. createUniformBlockDesc(
  5050. options: Kanata.IUniformDescriptorOptions
  5051. ): Kanata.UniformDescriptor
  5052. /**
  5053. * 手动创建一个`UniformBlock`资源。
  5054. */
  5055. createUniformBlock(
  5056. descriptor: Kanata.UniformDescriptor
  5057. ): Kanata.UniformBlock
  5058. /**
  5059. * 手动创建一个`Material`资源。
  5060. */
  5061. createMaterial(
  5062. effect: Effect,
  5063. defaultUniforms?: {
  5064. [key: string]: number | ArrayLike<number> | Kanata.Texture
  5065. }
  5066. ): Material
  5067. /**
  5068. * 手动创建一个`VertexLayout`资源。
  5069. */
  5070. createVertexLayout(
  5071. options: Kanata.IVertexLayoutOptions
  5072. ): Kanata.VertexLayout
  5073. /**
  5074. * 手动创建一个`Geometry`资源。
  5075. */
  5076. createGeometry(
  5077. vertexLayout: Kanata.VertexLayout,
  5078. vBuffer: ArrayBufferView,
  5079. iBuffer: ArrayBufferView,
  5080. indexType?: Kanata.EIndexType
  5081. ): Geometry
  5082. /**
  5083. * 手动创建一个`RenderTexture`资源。
  5084. */
  5085. createRenderTexture(options?: IRenderTextureOptions): RenderTexture
  5086. /**
  5087. * 手动创建一个`VideoTexture`资源。
  5088. */
  5089. createVideoTexture(
  5090. options?: IVideoTextureOptions
  5091. ): Promise<VideoTexture>
  5092. /**
  5093. * 手动创建一个`PostProcess`资源。
  5094. */
  5095. createPostProcess(options: IPostProcessOptions): PostProcess
  5096. }
  5097. }
  5098. declare module 'XrFrame/core/Observable' {
  5099. export default class Observable<TParams = any, TSender = any> {
  5100. isObservable: boolean
  5101. /**
  5102. * 拥有的监听者数量。
  5103. */
  5104. get count(): number
  5105. /**
  5106. * 添加一个回调到队列中。
  5107. */
  5108. add(
  5109. callback: (params: TParams, sender?: TSender) => void | boolean,
  5110. priority?: number,
  5111. isOnce?: boolean
  5112. ): this
  5113. /**
  5114. * 添加一个回调到队列中,并再被触发执行一次后自动移除。
  5115. */
  5116. addOnce(
  5117. callback: (params: TParams, sender?: TSender) => void | boolean,
  5118. priority?: number
  5119. ): this
  5120. /**
  5121. * 清空队列。
  5122. */
  5123. clear(): this
  5124. /**
  5125. * 从队列中移除一个回调。
  5126. */
  5127. remove(
  5128. callback: (params: TParams, sender?: TSender) => void | boolean
  5129. ): this
  5130. /**
  5131. * 通过一个参数触发一次广播,调用所有回调。
  5132. */
  5133. notify(params: TParams, sender?: TSender): this
  5134. }
  5135. }
  5136. declare module 'XrFrame/components/Transform' {
  5137. /**
  5138. * Transform.ts
  5139. *
  5140. * * @Date : 2022/3/16下午3:48:05
  5141. */
  5142. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5143. import Element from 'XrFrame/core/Element'
  5144. import Matrix4 from 'XrFrame/math/matrix4'
  5145. import Quaternion from 'XrFrame/math/quaternion'
  5146. import Vector3 from 'XrFrame/math/vector3'
  5147. /**
  5148. * {@link Transform}组件数据接口。
  5149. */
  5150. export interface ITransformData {
  5151. /**
  5152. * 设置一个唯一的节点Id,区别于`xml`上的那个`id`。
  5153. * `xml`中的数据类型为`string`。
  5154. */
  5155. nodeId: string
  5156. /**
  5157. * 节点的位移。
  5158. * `xml`中的数据类型为`number-array`,默认为`0 0 0`。
  5159. */
  5160. position: number[]
  5161. /**
  5162. * 节点的旋转,注意此处为**角度**。
  5163. * `xml`中的数据类型为`number-array`,默认为`0 0 0`。
  5164. */
  5165. rotation: number[]
  5166. /**
  5167. * 节点的位缩放。
  5168. * `xml`中的数据类型为`number-array`,默认为`1 1 1`。
  5169. */
  5170. scale: number[]
  5171. /**
  5172. * 节点的可见性,可以控制该节点以及所有子节点是否可见。
  5173. * `xml`中的数据类型为`boolean`,默认为`true`。
  5174. */
  5175. visible?: boolean
  5176. /**
  5177. * 节点的层级,作为控制节点以及子节点是否可见的一部分,配合{@link Camera.cullMask}使用。
  5178. * 判定规则为自顶层节点向下,只有全部通过了判定才能显示。
  5179. * `xml`中的数据类型为`number`,默认为`0`。
  5180. */
  5181. layer?: number
  5182. }
  5183. /**
  5184. * {@link Transform}的`schema`,详见{@link ITransformData}。
  5185. */
  5186. export const TransformSchema: IComponentSchema
  5187. /**
  5188. * 3D变换组件,作为场景中3D节点的根基,一般被代理到{@link XRNode}元素。
  5189. */
  5190. export default class Transform extends Component<ITransformData> {
  5191. /**
  5192. * 详见{@link TransformSchema}。
  5193. */
  5194. readonly schema: IComponentSchema
  5195. readonly priority: number
  5196. get node(): import('XrFrame/kanata/lib/index').Entity3D
  5197. /**
  5198. * 获取世界矩阵,**注意不可修改**。
  5199. */
  5200. get worldMatrix(): Matrix4
  5201. /**
  5202. * 获取世界绝对位移,**注意不可修改**。
  5203. */
  5204. get worldPosition(): Vector3
  5205. /**
  5206. * 获取世界绝对旋转,**注意不可修改**。
  5207. */
  5208. get worldQuaternion(): Quaternion
  5209. /**
  5210. * 获取世界绝对缩放,**注意不可修改**。
  5211. */
  5212. get worldScale(): Vector3
  5213. /**
  5214. * 获取世界前向向量,**注意不可修改**。
  5215. */
  5216. get worldForward(): Vector3
  5217. /**
  5218. * 获取世界上向向量,**注意不可修改**。
  5219. */
  5220. get worldUp(): Vector3
  5221. /**
  5222. * 获取世界右向向量,**注意不可修改**。
  5223. */
  5224. get worldRight(): Vector3
  5225. get position(): Vector3
  5226. /**
  5227. * 注意如果这里直接修改,使用**弧度**。
  5228. */
  5229. get rotation(): Vector3
  5230. get quaternion(): Quaternion
  5231. get scale(): Vector3
  5232. get visible(): boolean
  5233. set visible(value: boolean)
  5234. get layer(): number
  5235. set layer(value: number)
  5236. /**
  5237. * @internal
  5238. */
  5239. /**
  5240. * 直接设置本地矩阵。
  5241. */
  5242. setLocalMatrix(mat: Matrix4): void
  5243. onAdd(parent: Element, data: ITransformData): void
  5244. onUpdate(data: ITransformData, preData: ITransformData): void
  5245. onRemove(parent: Element, data: ITransformData): void
  5246. onRelease(data: ITransformData): void
  5247. }
  5248. }
  5249. declare module 'XrFrame/components/AssetLoad' {
  5250. /**
  5251. * AssetLoad.ts
  5252. *
  5253. * * @Date : 2022/3/31下午4:56:14
  5254. */
  5255. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5256. import Element from 'XrFrame/core/Element'
  5257. import { IAssetLoadData } from 'XrFrame/loader/types'
  5258. /**
  5259. * {@link AssetLoad}的`schema`,详见{@link IAssetLoadData}。
  5260. */
  5261. export const AssetLoadSchema: IComponentSchema
  5262. /**
  5263. * 用于加载资源的组件,一般被代理到{@link XRAssetLoad}元素。
  5264. */
  5265. export default class AssetLoad extends Component<IAssetLoadData> {
  5266. /**
  5267. * 详见{@link AssetLoadSchema}。
  5268. */
  5269. readonly schema: IComponentSchema
  5270. /**
  5271. * @internal
  5272. */
  5273. get loadParams(): IAssetLoadData<any>
  5274. onAdd(parent: Element, data: IAssetLoadData): void
  5275. onUpdate(data: IAssetLoadData, preData: IAssetLoadData): void
  5276. onRemove(parent: Element, data: IAssetLoadData<any>): void
  5277. }
  5278. }
  5279. declare module 'XrFrame/components/Assets' {
  5280. /**
  5281. * Assets.ts
  5282. *
  5283. * * @Date : 2022/3/24下午3:18:14
  5284. */
  5285. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5286. import { IAssetLoadData } from 'XrFrame/loader/types'
  5287. export interface IAssetsData {}
  5288. export const AssetsSchema: IComponentSchema
  5289. /**
  5290. * 资源加载组组件,会统计作为其子节点的{@link AssetLoad}组件的加载状态,派发事件。
  5291. * 一般被代理到{@link XRAssets}元素。
  5292. *
  5293. * 事件`progress`会在资源加载进度更新时触发,值为`{progress: number, asset: IAssetLoadData}`。
  5294. * 事件`loaded`会在所有资源加载完成是触发,值为`{assets: {[key: string]: IAssetLoadData}, errors: {[key: string]: Error}}`。
  5295. * 详见{@link IAssetLoadData}。
  5296. */
  5297. export default class Assets extends Component<IAssetsData> {
  5298. static EVENTS: string[]
  5299. readonly schema: IComponentSchema
  5300. }
  5301. }
  5302. declare module 'XrFrame/components/Camera' {
  5303. /**
  5304. * Camera.ts
  5305. *
  5306. * * @Date : 2022/3/17下午5:25:34
  5307. */
  5308. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5309. import Element from 'XrFrame/core/Element'
  5310. import { Kanata } from 'XrFrame/ext'
  5311. import Vector3 from 'XrFrame/math/vector3'
  5312. import Matrix4 from 'XrFrame/math/matrix4'
  5313. import RenderTexture, { IRenderTarget } from 'XrFrame/assets/RenderTexture'
  5314. import Transform from 'XrFrame/components/Transform'
  5315. import Light from 'XrFrame/components/Light'
  5316. import PostProcess from 'XrFrame/assets/PostProcess'
  5317. /**
  5318. * 相机背景渲染模式。
  5319. *
  5320. * `default`模式只执行默认清屏。
  5321. * `skybox`模式配合{@link Env}组件使用。
  5322. * `ar`模式配合{@link ARSystem}使用。
  5323. */
  5324. export type TCameraBackground = 'default' | 'skybox' | 'ar'
  5325. /**
  5326. * {@link Camera}组件数据接口。
  5327. */
  5328. export interface ICameraData {
  5329. /**
  5330. * 相机对准的目标节点,如果不设置则为自由模式。
  5331. * `xml`中的数据类型为节点对应的`nodeId`。
  5332. */
  5333. target?: Transform
  5334. /**
  5335. * 相机的渲染目标,如果不设置则渲染到屏幕。
  5336. * `xml`中的数据类型为`render-texture`资源。
  5337. */
  5338. renderTarget?: RenderTexture
  5339. /**
  5340. * 深度,决定在多相机时的渲染顺序。
  5341. * `xml`中的数据类型为`number`。
  5342. */
  5343. depth: number
  5344. /**
  5345. * 掩码,一般和{@link Transform.layer}一起使用,决定那些节点要被渲染。
  5346. * `xml`中的数据类型为`number`。
  5347. */
  5348. cullMask: number
  5349. /**
  5350. * 是否为透视相机。
  5351. * `xml`中的数据类型为`boolean`,默认为`true`。
  5352. */
  5353. isPerspective: boolean
  5354. /**
  5355. * 视场角。
  5356. * `xml`中的数据类型为`number`,默认为`60`。
  5357. */
  5358. fov: number
  5359. /**
  5360. * 近平面。
  5361. * `xml`中的数据类型为`number`,默认为`0.1`。
  5362. */
  5363. near: number
  5364. /**
  5365. * 远平面。
  5366. * `xml`中的数据类型为`number`,默认为`100`。
  5367. */
  5368. far: number
  5369. /**
  5370. * 非透视模式,即正交模式时,可视范围大小。
  5371. * `xml`中的数据类型为`number`,默认为`4`。
  5372. */
  5373. orthSize: number
  5374. /**
  5375. * 背景清屏模式。
  5376. * `xml`中的数据类型为`string`,默认为`default`。
  5377. */
  5378. background: TCameraBackground
  5379. /**
  5380. * 是否为AR相机,配合{@link ARSystem}使用。
  5381. * `xml`中的数据类型为`boolean`,默认为`false`。
  5382. * **非常需要注意当设置为`true`时不能同时设置`target`数据!**
  5383. */
  5384. isARCamera: boolean
  5385. /**
  5386. * 清屏是否要清深度。
  5387. * `xml`中的数据类型为`boolean`,默认为`true`。
  5388. */
  5389. isClearDepth: boolean
  5390. /**
  5391. * 清屏是否要清模板值。
  5392. * `xml`中的数据类型为`boolean`,默认为`true`。
  5393. */
  5394. isClearStencil: boolean
  5395. /**
  5396. * 清屏是否要清颜色。
  5397. * `xml`中的数据类型为`boolean`,默认为`true`。
  5398. */
  5399. isClearColor: boolean
  5400. /**
  5401. * 清屏深度。
  5402. * `xml`中的数据类型为`number`,默认为`1`。
  5403. */
  5404. clearDepth: number
  5405. /**
  5406. * 清屏模板值。
  5407. * `xml`中的数据类型为`number`,默认为`0`。
  5408. */
  5409. clearStencil: number
  5410. /**
  5411. * 清屏颜色。
  5412. * `xml`中的数据类型为`color`,默认为`0 0 0 1`。
  5413. */
  5414. clearColor: number[]
  5415. /**
  5416. * 后处理,一个后处理资源id的数组。
  5417. * `xml`中的数据类型为`array`,默认为空。
  5418. */
  5419. postProcess: string[]
  5420. /**
  5421. * 允许的渲染标记,配合{@link RenderSystem}的`changeFeatures`一起使用。
  5422. * `xml`中的数据类型为`array`,默认为空。
  5423. */
  5424. allowFeatures: string[]
  5425. }
  5426. /**
  5427. * {@link Camera}的`schema`,详见{@link ICameraData}。
  5428. */
  5429. export const CameraSchema: IComponentSchema
  5430. /**
  5431. * 相机组件,一般被代理到{@link XRCamera}元素。
  5432. */
  5433. export default class Camera extends Component<ICameraData> {
  5434. /**
  5435. * 详见{@link CameraSchema}。
  5436. */
  5437. readonly schema: IComponentSchema
  5438. readonly priority: number
  5439. /**
  5440. * 相机深度。
  5441. */
  5442. get depth(): number
  5443. /**
  5444. * @internal
  5445. */
  5446. get renderTarget(): IRenderTarget
  5447. /**
  5448. * @internal
  5449. */
  5450. get view(): import('XrFrame/kanata/lib/index').View
  5451. /**
  5452. * @internal
  5453. */
  5454. get id(): number
  5455. /**
  5456. * @internal。
  5457. */
  5458. get bgStates(): {
  5459. [key: string]: any
  5460. }
  5461. /**
  5462. * @internal。
  5463. */
  5464. get bgStatesClear(): boolean
  5465. get background(): TCameraBackground
  5466. get target(): Transform
  5467. get near(): number
  5468. get far(): number
  5469. get cullMask(): number
  5470. get postProcess(): PostProcess[]
  5471. get hdr(): boolean
  5472. get allowFeatures(): string[]
  5473. /**
  5474. * 当前渲染特性集合。
  5475. */
  5476. get features(): {
  5477. [key: string]: string | number | boolean
  5478. }
  5479. /**
  5480. * @internal
  5481. */
  5482. cull(cullResult: Kanata.ScalableList, lightMode: string): void
  5483. /**
  5484. * @internal
  5485. */
  5486. clear(): void
  5487. /**
  5488. * @internal
  5489. */
  5490. draw(renderList: Kanata.ScalableList, lightMode: string): void
  5491. /**
  5492. * @internal
  5493. */
  5494. drawLight(
  5495. light: Light,
  5496. renderList: Kanata.ScalableList,
  5497. lightMode: string
  5498. ): void
  5499. /**
  5500. * 将世界坐标系位置转换到齐次裁剪空间。
  5501. */
  5502. convertWorldPositionToClip(worldPos: Vector3, dst?: Vector3): Vector3
  5503. /**
  5504. * 将齐次裁剪空间转换到世界坐标系位置。
  5505. */
  5506. convertClipPositionToWorld(clipPos: Vector3, dst?: Vector3): Vector3
  5507. /**
  5508. * 修改viewMatrix的设置类型。
  5509. *
  5510. * @param manual 是否要设置为手动模式。
  5511. * @param mat4 手动模式下,要设置的值。
  5512. */
  5513. changeViewMatrix(manual: boolean, mat4?: Matrix4 | Float32Array): void
  5514. /**
  5515. * 修改projectMatrix的设置类型。
  5516. *
  5517. * @param manual 是否要设置为手动模式。
  5518. * @param mat4 手动模式下,要设置的值。
  5519. */
  5520. changeProjectMatrix(
  5521. manual: boolean,
  5522. mat4?: Matrix4 | Float32Array
  5523. ): void
  5524. /**
  5525. * 修改相机背景的渲染状态。
  5526. *
  5527. * @param states 同{@link Material.setRenderStates}
  5528. */
  5529. setBackgroundRenderStates(states: { [key: string]: any }): void
  5530. /**
  5531. * 清空相机背景渲染状态。
  5532. */
  5533. clearBackgroundRenderStates(): void
  5534. onAdd(parent: Element, data: ICameraData): void
  5535. onUpdate(data: ICameraData, preData: ICameraData): void
  5536. onTick(deltaTime: number, data: ICameraData): void
  5537. onRemove(parent: Element, data: ICameraData): void
  5538. onRelease(data: ICameraData): void
  5539. protected _processData(data: ICameraData, preData: ICameraData): void
  5540. }
  5541. }
  5542. declare module 'XrFrame/components/GLTF' {
  5543. import GLTFModel, { TQS } from 'XrFrame/assets/GLTFModel'
  5544. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5545. import Element from 'XrFrame/core/Element'
  5546. import BoundBox from 'XrFrame/math/boundBox'
  5547. import Mesh from 'XrFrame/components/Mesh'
  5548. /**
  5549. * @see {@link GLTF}
  5550. */
  5551. export interface IGLTFData {
  5552. /**
  5553. * 已加载完毕的GLTF模型。
  5554. */
  5555. model: GLTFModel
  5556. /**
  5557. * 是否投射阴影,默认false。
  5558. */
  5559. castShadow?: boolean
  5560. /**
  5561. * 是否接受阴影,默认false。
  5562. */
  5563. receiveShadow?: boolean
  5564. /**
  5565. * 是否不参与剔除,默认false(即参与剔除)。
  5566. */
  5567. neverCull?: boolean
  5568. /**
  5569. * 修改GLTF的默认renderStates。
  5570. */
  5571. states?: Array<[string, string]>
  5572. }
  5573. export const GLTFSchema: IComponentSchema
  5574. interface ElementGLTFInfo {
  5575. el: Element
  5576. hasMesh: boolean
  5577. meshName?: string
  5578. meshes?: Mesh[]
  5579. }
  5580. /**
  5581. * 将一个{@link GLTFModel | GLTF模型}实例化并渲染出来。
  5582. * {@link XRGLTF | xr-gltf}标签会自动生成该组件。
  5583. *
  5584. * > 会在当前元素下新建一系列子元素,作为GLTF模型的每个场景的根节点。
  5585. * > 会在当前元素上新建{@link Animator}组件,并向其添加实例化生成的动画片段。
  5586. *
  5587. * @see {@link IGLTFData}
  5588. */
  5589. export default class GLTFComponent extends Component<IGLTFData> {
  5590. static EVENTS: string[]
  5591. readonly schema: IComponentSchema
  5592. readonly priority: number
  5593. _subRoots: Element[]
  5594. _nodeMap: Map<string, ElementGLTFInfo>
  5595. onUpdate(data: IGLTFData, preData: IGLTFData): void
  5596. onRemove(parent: Element, data: IGLTFData): void
  5597. onRelease(data: IGLTFData): void
  5598. /**
  5599. * 根据GLTF模型中节点的`name`字段来获取内部元素。
  5600. */
  5601. getInternalNodeByName(name: string): Element | undefined
  5602. /**
  5603. * @internal
  5604. */
  5605. /**
  5606. * 获取GLTF模型实例化过程中生成的所有{@link Mesh}组件。
  5607. */
  5608. get meshes(): Mesh[]
  5609. /**
  5610. * 计算GLTF模型整体的包围盒,返回**模型空间**内的计算结果。
  5611. * 每次调用都会重新计算。
  5612. */
  5613. calcTotalBoundBox(): BoundBox
  5614. /**
  5615. * 根据GLTF模型中**引用**了Mesh的**Node节点**的`name`字段,来获取对应Mesh下的所有Primitive。
  5616. * 一个GLTF模型中的Primitive节点对应返回中的一个`xr-frame Mesh组件`实例。
  5617. * **如果没有该名字的节点,或者节点未引用Mesh,会返回空数组。*
  5618. * @param name Node节点的`name`(而非Mesh节点)
  5619. */
  5620. getPrimitivesByNodeName(name: string): Mesh[]
  5621. /**
  5622. * 根据GLTF模型中Mesh节点的`name`字段,来获取引用了该Mesh的**所有**Node节点下的所有Primitive。
  5623. * 在xr-frame实现中,每个引用了该Mesh的GLTFNode节点拥有**独立**的一份Primitives副本,**每个**Node节点下的**每个**Primitive对应一个`xr-frame Mesh组件`。
  5624. * **如果没有引用了该Mesh的Node节点,会返回空数组。*
  5625. * @param name Mesh节点的`name`
  5626. * @returns 一个数组,数组中的一个元素对应一个引用了该Mesh的GLTFNode节点,元素中nodeName为GLTFNode节点的`name`字段。
  5627. */
  5628. getPrimitivesByMeshName(name: string): Array<{
  5629. nodeName: string
  5630. primitives: Mesh[]
  5631. }>
  5632. }
  5633. export {}
  5634. }
  5635. declare module 'XrFrame/components/Light' {
  5636. /**
  5637. * Light.ts
  5638. *
  5639. * * @Date : 2022/3/16下午4:45:56
  5640. */
  5641. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5642. import Element from 'XrFrame/core/Element'
  5643. import { Kanata } from 'XrFrame/ext'
  5644. /**
  5645. * 光照类型枚举。
  5646. */
  5647. export enum ELightType {
  5648. /**
  5649. * 环境光,默认只有一个生效。
  5650. */
  5651. Ambient = 'ambient',
  5652. /**
  5653. * 平行光,默认第一个会成为主平行光。
  5654. */
  5655. Directional = 'directional',
  5656. /**
  5657. * 点光。
  5658. */
  5659. Point = 'point',
  5660. /**
  5661. * 聚光。
  5662. */
  5663. Spot = 'spot'
  5664. }
  5665. /**
  5666. * {@link Light}组件数据接口。
  5667. */
  5668. export interface ILightData {
  5669. /**
  5670. * 类型。
  5671. * `xml`中的数据类型`string`,默认为`directional`。
  5672. */
  5673. type: ELightType
  5674. /**
  5675. * 颜色。
  5676. * `xml`中的数据类型`color`,默认为`[1, 1, 1, 1]`。
  5677. */
  5678. color: number[]
  5679. /**
  5680. * 强度。
  5681. * `xml`中的数据类型`number`,默认为`1`。
  5682. */
  5683. intensity: number
  5684. /**
  5685. * 范围,仅在点光和聚光有效。
  5686. * `xml`中的数据类型`number`,默认为`1`。
  5687. */
  5688. range: number
  5689. /**
  5690. * 仅在聚光有效。
  5691. * `xml`中的数据类型`number`,默认为`1`。
  5692. */
  5693. innerConeAngle: number
  5694. /**
  5695. * 仅在聚光有效。
  5696. * `xml`中的数据类型`number`,默认为`1`。
  5697. */
  5698. outerConeAngle: number
  5699. /**
  5700. * 是否要产生阴影,仅对平行光有效。
  5701. * `xml`中的数据类型`boolean`,默认为`false`。
  5702. */
  5703. castShadow?: boolean
  5704. /**
  5705. * 产生阴影的最大距离,仅对平行光有效。
  5706. * `xml`中的数据类型`number`,默认为`10`。
  5707. */
  5708. shadowDistance?: number
  5709. /**
  5710. * 阴影采样时的容许偏移,仅对平行光有效。
  5711. * `xml`中的数据类型`number`,默认为`0.002`。
  5712. */
  5713. shadowBias?: number
  5714. }
  5715. /**
  5716. * {@link Light}的`schema`,详见{@link ILightData}。
  5717. */
  5718. export const LightSchema: IComponentSchema
  5719. /**
  5720. * 灯光组件,一般被代理到{@link XRLight}元素。
  5721. *
  5722. * 注意整个场景只能存在一个`ambient`光源,第一个`directional`光源将会成为主光源,也只有这个光源能够产生阴影。
  5723. * 目前最多支持四个追加光源。
  5724. */
  5725. export default class Light extends Component<ILightData> {
  5726. /**
  5727. * 详见{@link LightSchema}。
  5728. */
  5729. readonly schema: IComponentSchema
  5730. readonly priority: number
  5731. get type(): ELightType
  5732. get color(): number[]
  5733. get intensity(): number
  5734. get range(): number
  5735. get innerConeAngle(): number
  5736. get outerConeAngle(): number
  5737. get castShadow(): boolean
  5738. get shadowDistance(): number
  5739. get shadowBias(): number
  5740. /**
  5741. * @internal
  5742. */
  5743. get lightCamera(): import('XrFrame/kanata/lib/index').LightCameraComponent
  5744. /**
  5745. * @internal
  5746. */
  5747. onAdd(parent: Element, data: ILightData): void
  5748. onUpdate(data: ILightData, preData: ILightData): void
  5749. onTick(deltaTime: number, data: ILightData): void
  5750. onRemove(parent: Element, data: ILightData): void
  5751. onRelease(data: ILightData): void
  5752. /**
  5753. * @internal
  5754. */
  5755. }
  5756. }
  5757. declare module 'XrFrame/components/AssetMaterial' {
  5758. import Effect from 'XrFrame/assets/Effect'
  5759. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5760. import Element from 'XrFrame/core/Element'
  5761. import EnvData from 'XrFrame/assets/EnvData'
  5762. /**
  5763. * `AssetMaterial`数据接口。
  5764. */
  5765. export interface IAssetMaterialData {
  5766. /**
  5767. * 被引用时的资源Id。
  5768. * `xml`中的数据类型为`string`。
  5769. */
  5770. assetId: string
  5771. /**
  5772. * 基于的效果。
  5773. * `xml`中的数据类型为`effect`资源,默认为`simple`。
  5774. */
  5775. effect: Effect
  5776. /**
  5777. * 初始要写入的`uniforms`,类型根据`effect`中的定义决定。
  5778. * `xml`中的数据类型为`map`。
  5779. */
  5780. uniforms: Array<[string, string]>
  5781. /**
  5782. * 初始要写入的渲染状态`states`。
  5783. * `xml`中的数据类型为`map`。
  5784. * 目前支持`renderQueue`、`cullOn`、`depthTestOn`、`depthTestWrite`、`alphaMode`、`alphaCutOff`。
  5785. * `alphaMode`和`alphaCutOff`遵循glTF标准。
  5786. */
  5787. states: Array<[string, string]>
  5788. /**
  5789. * 要覆盖的渲染顺序。
  5790. * `xml`中的数据类型为`number`,无默认值。
  5791. * 大于等于`2500`视为透明物体。
  5792. */
  5793. renderQueue: number
  5794. /**
  5795. * 用于覆盖全局的、材质维度的环境数据。
  5796. */
  5797. envData?: EnvData
  5798. }
  5799. /**
  5800. * {@link AssetMaterial}的`schema`,详见{@link IAssetMaterialData}。
  5801. */
  5802. export const AssetMaterialSchema: IComponentSchema
  5803. /**
  5804. * 材质资源创建组件,为了在`xml`中创建{@link Material}资源,一般被代理到{@link XRAssetMaterial}元素。
  5805. */
  5806. export default class AssetMaterial extends Component<IAssetMaterialData> {
  5807. /**
  5808. * 详见{@link AssetMaterialSchema}。
  5809. */
  5810. readonly schema: IComponentSchema
  5811. onAdd(parent: Element, data: IAssetMaterialData): void
  5812. onUpdate(data: IAssetMaterialData, preData: IAssetMaterialData): void
  5813. onRemove(parent: Element, data: IAssetMaterialData): void
  5814. }
  5815. }
  5816. declare module 'XrFrame/components/Mesh' {
  5817. /**
  5818. * Model.ts
  5819. *
  5820. * * @Date : 2022/3/16下午4:48:09
  5821. */
  5822. import Geometry from 'XrFrame/assets/Geometry'
  5823. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5824. import Element from 'XrFrame/core/Element'
  5825. import { Kanata } from 'XrFrame/ext'
  5826. import Material from 'XrFrame/assets/Material'
  5827. import Transform from 'XrFrame/components/Transform'
  5828. import EnvData from 'XrFrame/assets/EnvData'
  5829. /**
  5830. * `Mesh`数据接口。
  5831. */
  5832. export interface IMeshData {
  5833. /**
  5834. * 是否强制不被剔除。
  5835. * `xml`中的数据类型为`boolean`,默认为`false`。
  5836. */
  5837. neverCull?: boolean
  5838. /**
  5839. * 在主光源产生阴影开启阴影时,是否要产生阴影。
  5840. * `xml`中的数据类型为`boolean`,默认为`false`。
  5841. */
  5842. castShadow?: boolean
  5843. /**
  5844. * 在主光源产生阴影开启阴影时,是否要接受阴影。
  5845. * `xml`中的数据类型为`boolean`,默认为`false`。
  5846. */
  5847. receiveShadow?: boolean
  5848. /**
  5849. * 渲染使用的几何数据。
  5850. * `xml`中的数据类型为`geometry`资源。
  5851. */
  5852. geometry: Geometry
  5853. /**
  5854. * 渲染使用的材质数据。
  5855. * `xml`中的数据类型为`material`资源。
  5856. */
  5857. material?: Material
  5858. /**
  5859. * 覆盖`material`中的默认`uniforms`,如果覆盖了,则会先创建一个材质副本。
  5860. * `xml`中同{@link IAssetMaterialData.uniforms}。
  5861. */
  5862. uniforms?: Array<[string, string]>
  5863. /**
  5864. * 覆盖`material`中的默认`states`,如果覆盖了,则会先创建一个材质副本。
  5865. * `xml`中同{@link IAssetMaterialData.states}。
  5866. */
  5867. states?: Array<[string, string]>
  5868. /**
  5869. * 用于覆盖`material`中的,全局的、材质维度的环境数据。
  5870. * * `xml`中同{@link IAssetMaterialData.envData}。
  5871. */
  5872. envData?: EnvData
  5873. }
  5874. /**
  5875. * {@link Mesh}的`schema`,详见{@link IMeshData}。
  5876. */
  5877. export const MeshSchema: IComponentSchema
  5878. /**
  5879. * Mesh组件,整合{@link Geometry}和{@link Material}进行渲染,一般被代理到{@link XRMesh}元素。
  5880. */
  5881. export default class Mesh extends Component<IMeshData> {
  5882. /**
  5883. * 详见{@link MeshSchema}。
  5884. */
  5885. readonly schema: IComponentSchema
  5886. readonly priority: number
  5887. protected _cull: Kanata.CullingComponent
  5888. protected _mesh: Kanata.MeshRendererComponent
  5889. protected _sourceMaterial: Material
  5890. protected _geometry: Geometry
  5891. protected _material: Material
  5892. protected _trs: Transform
  5893. /**
  5894. * 几何数据。
  5895. */
  5896. get geometry(): Geometry
  5897. /**
  5898. * 材质。
  5899. */
  5900. get material(): Material
  5901. set material(value: Material)
  5902. /**
  5903. * MorphTargets的权重,最多32个,可以获取后直接修改。
  5904. */
  5905. get morphWeights(): Float32Array
  5906. /**
  5907. * @internal
  5908. */
  5909. get id(): number
  5910. /**
  5911. * @internal
  5912. */
  5913. onAdd(parent: Element, data: IMeshData): void
  5914. onTick(deltaTime: number, data: IMeshData): void
  5915. onUpdate(data: IMeshData, preData: IMeshData): void
  5916. onRemove(parent: Element, data: IMeshData): void
  5917. onRelease(data: IMeshData): void
  5918. /**
  5919. * @internal
  5920. */
  5921. protected _getMarcos(geometry: Geometry): {}
  5922. /**
  5923. * @internal
  5924. */
  5925. protected _getUniformDesc(): Kanata.UniformDescriptor
  5926. /**
  5927. * @internal
  5928. */
  5929. protected _getMeshType(): Kanata.EMeshRenderType
  5930. }
  5931. }
  5932. declare module 'XrFrame/components/text/Text' {
  5933. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  5934. import Element from 'XrFrame/core/Element'
  5935. import { Kanata } from 'XrFrame/ext'
  5936. import Material from 'XrFrame/assets/Material'
  5937. import Transform from 'XrFrame/components/Transform'
  5938. import {
  5939. IRenderData,
  5940. EHorzAlignment,
  5941. EVertAlignment
  5942. } from 'XrFrame/components/text/types'
  5943. import { IGlyph } from 'XrFrame/glyph'
  5944. import { Typesetting } from 'XrFrame/components/text/typesetting'
  5945. import { FillRenderData } from 'XrFrame/components/text/fillRenderData'
  5946. /**
  5947. * `Text`数据接口。
  5948. */
  5949. export interface ITextData {
  5950. /**
  5951. * 文本内容
  5952. * `xml`中的数据类型为`string`
  5953. */
  5954. value?: string
  5955. /**
  5956. * 文本大小
  5957. * `xml`中的数据类型为`number`
  5958. */
  5959. size?: number
  5960. /**
  5961. * 文本颜色
  5962. * `xml`中的数据类型为`number-array`,默认为`0 0 0 1`。
  5963. */
  5964. color?: number[]
  5965. /**
  5966. * 文本轴点
  5967. * `xml`中的数据类型为`number-array`,默认为`0 1`。
  5968. */
  5969. anchor?: number[]
  5970. /**
  5971. * 文本框宽度
  5972. * `xml`中的数据类型为`number`
  5973. */
  5974. width?: number
  5975. /**
  5976. * 文本框高度
  5977. * `xml`中的数据类型为`number`
  5978. */
  5979. height?: number
  5980. /**
  5981. * 文本框行高,为比例
  5982. * `xml`中的数据类型为`number`
  5983. */
  5984. lineHeight?: number
  5985. /**
  5986. * 文本内边距
  5987. * `xml`中的数据类型为`number-array`,默认为`0 0 0`。
  5988. */
  5989. padding?: number[]
  5990. /**
  5991. * 文本水平定位
  5992. * `xml`中的数据类型为`string`,默认为`left`。
  5993. */
  5994. horzAlign?: string
  5995. /**
  5996. * 文本垂直定位
  5997. * `xml`中的数据类型为`string`,默认为`top`。
  5998. */
  5999. vertAlign?: string
  6000. /**
  6001. * 是否不参与剔除,默认false(即参与剔除)。
  6002. */
  6003. neverCull?: boolean
  6004. /**
  6005. * 覆盖`material`中的默认`uniforms`,如果覆盖了,则会先创建一个材质副本。
  6006. * `xml`中同{@link IMaterialData.uniforms}。
  6007. */
  6008. uniforms?: Array<[string, string]>
  6009. /**
  6010. * 覆盖`material`中的默认`states`,如果覆盖了,则会先创建一个材质副本。
  6011. * `xml`中同{@link IMaterialData.states}。
  6012. */
  6013. states?: Array<[string, string]>
  6014. }
  6015. export const TextSchema: IComponentSchema
  6016. export const textAttributes: Array<{
  6017. name: string
  6018. format: number
  6019. offset: number
  6020. usage: number
  6021. }>
  6022. export const textStride = 32
  6023. export const textVertexSize = 8
  6024. export default class Text extends Component<ITextData> {
  6025. readonly schema: IComponentSchema
  6026. readonly priority: number
  6027. protected _cull: Kanata.CullingComponent
  6028. protected _mesh: Kanata.MeshRendererComponent
  6029. protected _sourceMaterial: Material
  6030. protected _material: Material
  6031. protected _trs: Transform
  6032. protected _value: string
  6033. protected _size: number
  6034. protected _color: number[]
  6035. protected _anchor: number[]
  6036. protected _width: number | undefined
  6037. protected _height: number | undefined
  6038. protected _lineHeight: number
  6039. protected _padding: number[]
  6040. protected _horzAlign: EHorzAlignment
  6041. protected _vertAlign: EVertAlignment
  6042. protected _glyphs: IGlyph[]
  6043. protected _renderDatas: IRenderData[]
  6044. static QueryGlyphs: (
  6045. scene: import('XrFrame/core/Scene').default,
  6046. characters: string,
  6047. italic: boolean,
  6048. bold: boolean,
  6049. fontSize: number,
  6050. fontFamily: string
  6051. ) => IGlyph[]
  6052. static Typesetting: typeof Typesetting
  6053. static FillRenderData: typeof FillRenderData
  6054. get id(): number
  6055. onAdd(parent: Element, data: ITextData): void
  6056. onTick(deltaTime: number, data: ITextData): void
  6057. onUpdate(data: ITextData, preData: ITextData): void
  6058. onRemove(parent: Element, data: ITextData): void
  6059. onRelease(data: ITextData): void
  6060. protected _getUniformDesc(): Kanata.UniformDescriptor
  6061. protected _getMeshType(): Kanata.EMeshRenderType
  6062. protected _getVertexLayout(): Kanata.VertexLayout
  6063. }
  6064. }
  6065. declare module 'XrFrame/components/particle/Particle' {
  6066. import Element from 'XrFrame/core/Element'
  6067. import Material from 'XrFrame/assets/Material'
  6068. import BasicParticle, {
  6069. IParticleData
  6070. } from 'XrFrame/components/particle/BasicParticle'
  6071. import ParticleInstance from 'XrFrame/components/particle/ParticleInstance'
  6072. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  6073. export default class Particle extends BasicParticle {
  6074. static EVENTS: string[]
  6075. readonly priority: number
  6076. subEmitters: any
  6077. get material(): Material
  6078. set material(value: Material)
  6079. get id(): number
  6080. get data(): IParticleData
  6081. set data(value: IParticleData)
  6082. get particleEmitter(): BasicShapeEmitter
  6083. /**
  6084. * 粒子系统开始播放。
  6085. *
  6086. * @param delay 设定粒子延时几秒后再播放。
  6087. */
  6088. start(delay?: number): void
  6089. /**
  6090. * 停止粒子系统与其子发射器的播放。
  6091. */
  6092. stop(): void
  6093. /**
  6094. * @internal
  6095. */
  6096. onAdd(parent: Element, data: IParticleData): void
  6097. /**
  6098. * 设置粒子系统的内置粒子effect。
  6099. */
  6100. protected createMaterial(): Material
  6101. /**
  6102. * 初始化粒子系统的状态。
  6103. */
  6104. initParticle(data: IParticleData): void
  6105. /**
  6106. * 重置粒子系统的状态。
  6107. */
  6108. resetParticle(): void
  6109. /**
  6110. * @internal
  6111. */
  6112. protected _prepareSubEmitterArray(): void
  6113. /**
  6114. * 停止所有粒子子系统的发射状态。
  6115. */
  6116. protected stopSubEmitters(): void
  6117. /**
  6118. * 粒子子发射系统从依附的粒子系统中剥离。
  6119. */
  6120. protected removeFromRoot(): void
  6121. /**
  6122. * @internal
  6123. */
  6124. onTick(deltaTime: number, data: IParticleData): void
  6125. /**
  6126. * @internal
  6127. */
  6128. onUpdate(data: IParticleData, preData: IParticleData): void
  6129. /**
  6130. * @internal
  6131. */
  6132. onRemove(parent: Element, data: IParticleData): void
  6133. /**
  6134. * @internal
  6135. */
  6136. onRelease(data: IParticleData): void
  6137. /**
  6138. * @internal
  6139. */
  6140. protected _updateRenderData(
  6141. deltaTime: number,
  6142. isPreWarm?: boolean
  6143. ): void
  6144. /**
  6145. * 创建一个粒子实例。
  6146. */
  6147. protected createParticle(): ParticleInstance
  6148. /**
  6149. * 启动处于END状态的粒子子发射器。
  6150. * @param {ParticleInstance} instance 粒子实例
  6151. */
  6152. protected particleSubEmitter(instance: ParticleInstance): void
  6153. /**
  6154. * 回收当前粒子实例,并放入储备粒子队列。
  6155. * @param {ParticleInstance} particle 粒子实例
  6156. */
  6157. protected recycleParticle(particle: ParticleInstance): void
  6158. /**
  6159. * 更新每一个粒子的状态。
  6160. * @param {number} instancesSum 新生成的粒子数
  6161. */
  6162. protected update(instancesSum: number): void
  6163. /**
  6164. * 初始化粒子实例。
  6165. * @param {ParticleInstance} instance 需要初始化的粒子实例
  6166. */
  6167. protected initInstanceProperty(instance: ParticleInstance): void
  6168. /**
  6169. * 更新运动过程中粒子实例的各项属性以及子发射器状态。
  6170. * @param {Array} instances 粒子实例数组
  6171. */
  6172. protected updateInstanceProperty(instances: any): void
  6173. /**
  6174. * 更新粒子实例的各项属性。
  6175. * @param {ParticleInstance} instance 待更新的粒子实例
  6176. */
  6177. protected processInstance(instance: ParticleInstance): void
  6178. }
  6179. }
  6180. declare module 'XrFrame/components/particle/BasicParticle' {
  6181. import Material from 'XrFrame/assets/Material'
  6182. import Component from 'XrFrame/core/Component'
  6183. import { IComponentSchema } from 'XrFrame/core/Component'
  6184. import {
  6185. BoxShapeEmitter,
  6186. PointShapeEmitter,
  6187. SphereShapeEmitter
  6188. } from 'XrFrame/components/emitter'
  6189. import { Kanata } from 'XrFrame/ext'
  6190. import Transform from 'XrFrame/components/Transform'
  6191. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  6192. import Vector3 from 'XrFrame/math/vector3'
  6193. import Particle from 'XrFrame/components/particle/Particle'
  6194. import { Scene } from 'XrFrame/elements'
  6195. import { SubEmitter } from 'XrFrame/components/emitter/SubEmitter'
  6196. import ParticleInstance from 'XrFrame/components/particle/ParticleInstance'
  6197. import Atlas from 'XrFrame/assets/Atlas'
  6198. import Vector4 from 'XrFrame/math/vector4'
  6199. import Geometry from 'XrFrame/assets/Geometry'
  6200. /**
  6201. * {@link Particle}组件数据接口。
  6202. */
  6203. export interface IParticleData {
  6204. neverCull?: boolean
  6205. /**
  6206. * 渲染模式。
  6207. */
  6208. renderMode?: string
  6209. uniforms?: Array<[string, string]>
  6210. states?: Array<[string, string]>
  6211. /**
  6212. * 纹理信息。
  6213. */
  6214. texture?: Kanata.Texture
  6215. /**
  6216. * 最大粒子数目。
  6217. */
  6218. capacity?: number
  6219. /**
  6220. * 每秒粒子发射数。
  6221. */
  6222. emitRate?: number
  6223. /**
  6224. * 初始角度。
  6225. */
  6226. angle?: number[]
  6227. /**
  6228. * 粒子系统启动延时秒数。
  6229. */
  6230. delay?: number
  6231. /**
  6232. * y轴方向上的每秒位移。
  6233. */
  6234. gravity?: number
  6235. /**
  6236. * 初始大小。
  6237. */
  6238. size?: number[]
  6239. /**
  6240. * 粒子在x轴方向上的大小尺度。
  6241. */
  6242. scaleX?: number[]
  6243. /**
  6244. * 粒子在y轴方向上的大小尺度。
  6245. */
  6246. scaleY?: number[]
  6247. /**
  6248. * 速度。
  6249. */
  6250. speed?: number[]
  6251. /**
  6252. * 生命周期时长。
  6253. */
  6254. lifeTime?: number[]
  6255. /**
  6256. * 粒子初始颜色左区间。
  6257. */
  6258. startColor?: number[]
  6259. /**
  6260. * 粒子初始颜色右区间。
  6261. */
  6262. startColor2?: number[]
  6263. /**
  6264. * 粒子结束时颜色。
  6265. */
  6266. endColor?: number[]
  6267. /**
  6268. * 角速度。
  6269. */
  6270. angularSpeed?: number[]
  6271. /**
  6272. * 发射器类型。
  6273. */
  6274. emitterType?: string
  6275. /**
  6276. * 发射器属性配置。
  6277. */
  6278. emitterProps?: Array<[string, string]>
  6279. /**
  6280. * 粒子系统生命周期时长。
  6281. */
  6282. stopDuration?: number
  6283. /**
  6284. * 粒子预渲染周期数。
  6285. */
  6286. prewarmCycles?: number
  6287. /**
  6288. * 速度阻尼系数。
  6289. */
  6290. speedDampen?: number
  6291. /**
  6292. * 动画图集信息。
  6293. */
  6294. atlas?: Atlas
  6295. /**
  6296. * 图集切换速度。
  6297. */
  6298. atlasSpeed?: number
  6299. /**
  6300. * 是否随机播放图集。
  6301. */
  6302. atlasRandom?: boolean
  6303. /**
  6304. * 是否循环播放图集。
  6305. */
  6306. atlasLoop?: boolean
  6307. /**
  6308. * 指定图集帧名。
  6309. */
  6310. atlasFrames?: string[]
  6311. /**
  6312. * 网格信息。
  6313. */
  6314. mesh?: Geometry
  6315. sizeChange?: Array<[string, string]>
  6316. colorChange?: Array<[string, string]>
  6317. speedChange?: Array<[string, string]>
  6318. burstCount?: number
  6319. burstTime?: number
  6320. burstCycle?: number
  6321. burstInterval?: number
  6322. }
  6323. /**
  6324. * {@link Particle}的`schema`定义。
  6325. * @see 解析后的接口详见 {@link IParticleData}
  6326. */
  6327. export const ParticleSchema: IComponentSchema
  6328. /**
  6329. * BillBoard渲染模式。
  6330. */
  6331. export const enum BillBoardMode {
  6332. BILLBOARDMODE_DEFAULT = 0,
  6333. BILLBOARDMODE_Y = 1,
  6334. BILLBOARDMODE_STRETCHED = 2
  6335. }
  6336. export default class BasicParticle extends Component<IParticleData> {
  6337. /**
  6338. * 详见{@link ParticleSchema}。
  6339. */
  6340. readonly schema: IComponentSchema
  6341. protected static count: number
  6342. protected _systemId: number
  6343. protected _data: IParticleData
  6344. protected particleScene: Scene
  6345. protected particleEl: any
  6346. protected _instances: ParticleInstance[]
  6347. protected _stockInstances: ParticleInstance[]
  6348. protected _capacity: number
  6349. protected _delay: number
  6350. protected _updateSpeed: number
  6351. protected _stopDuration: number
  6352. protected _emitRate: number
  6353. protected _gravity: number
  6354. protected _preWarmCycles: number
  6355. protected _preWarmStepOffset: number
  6356. protected _particleEmitterType: string
  6357. protected _particleEmitter: BasicShapeEmitter
  6358. protected _particleEmitterProperties: any
  6359. protected particleStride: number
  6360. protected particleVertexSize: number
  6361. protected byteStride: number
  6362. protected ParticleAttributes: any
  6363. protected _burstCount: number
  6364. protected _burstTime: number
  6365. protected _burstCycle: number
  6366. protected _burstInterval: number
  6367. protected _burstCountTime: number
  6368. protected _burstCountCycle: number
  6369. protected _burstCountInterval: number
  6370. protected _minLifeTime: number
  6371. protected _maxLifeTime: number
  6372. protected _minScaleX: number
  6373. protected _maxScaleX: number
  6374. protected _minScaleY: number
  6375. protected _maxScaleY: number
  6376. protected _minSize: number
  6377. protected _maxSize: number
  6378. protected _minSpeed: number
  6379. protected _maxSpeed: number
  6380. protected _particleLengthScale: number
  6381. protected _startColor: number[]
  6382. protected _startColor2: number[]
  6383. protected _endColor: number[]
  6384. protected _sizeGradients: any
  6385. protected _alphaGradients: any
  6386. protected _colorRemapGradients: any
  6387. protected _speedScaleGradients: any
  6388. protected _limitSpeedGradients: any
  6389. protected _speedDampenFactor: number
  6390. protected _dragGradients: any
  6391. protected _useSpriteSheet: boolean
  6392. protected _startSpriteCellIndex: number
  6393. protected _endSpriteCellIndex: number
  6394. protected _useRandomSpriteCellIndex: boolean
  6395. protected _useSpriteCellLoop: boolean
  6396. protected _spriteChangeSpeed: number
  6397. protected _spriteFrameInfo: Vector4[]
  6398. protected _spriteNameToCellIndex: Map<string, number>
  6399. protected _textureData: Kanata.Texture
  6400. protected _atlasObj: Atlas
  6401. protected _atlasTexture: Kanata.Texture
  6402. protected _cull: Kanata.CullingComponent
  6403. protected _mesh: Kanata.MeshRendererComponent
  6404. protected _sourceMaterial: Material
  6405. protected _material: Material
  6406. protected _trs: Transform
  6407. protected _vertexBuffer: Kanata.VertexBuffer
  6408. protected _indexBuffer: Kanata.IndexBuffer
  6409. protected _renderMesh: Geometry
  6410. protected _vertexCount: number
  6411. protected _vertexData: Float32Array
  6412. protected _eachIndexSize: number
  6413. protected _indexSize: number
  6414. protected _vertexSize: number
  6415. protected _useBillboard: boolean
  6416. protected _useRenderMesh: boolean
  6417. protected _billboardMode: number
  6418. protected _useRampGradients: boolean
  6419. protected _rampGradients: any
  6420. protected _rampGradientsTexture: Kanata.Texture
  6421. protected _colorGradients: any
  6422. protected _vertexLayoutDirty: boolean
  6423. protected _startAngle: number
  6424. protected _startAngle2: number
  6425. protected _minAngularSpeed: number
  6426. protected _maxAngularSpeed: number
  6427. protected _subEmitters: any[]
  6428. protected _emitterPosition: Vector3
  6429. get material(): Material
  6430. /**
  6431. * @internal
  6432. */
  6433. get useBillboard(): boolean
  6434. set useBillboard(value: boolean)
  6435. get useRampGradients(): boolean
  6436. set useRampGradients(value: boolean)
  6437. get billboardMode(): number
  6438. set billboardMode(value: number)
  6439. get useSpriteSheet(): boolean
  6440. set useSpriteSheet(value: boolean)
  6441. get useRandomSpriteCellIndex(): boolean
  6442. get useSpriteCellLoop(): boolean
  6443. get spriteChangeSpeed(): number
  6444. get emitterPosition(): Vector3
  6445. set emitterPosition(value: Vector3)
  6446. /**
  6447. * @internal
  6448. */
  6449. protected _parseAttribute(): void
  6450. /**
  6451. * 获取一个拷贝的粒子系统。
  6452. */
  6453. clone(): Particle
  6454. /**
  6455. * 获取一个粒子子发射器。
  6456. */
  6457. createSubEmitter(data: IParticleData): SubEmitter
  6458. /**
  6459. * 创建一个点发射器。
  6460. * @param {Vector3} direction1 粒子运动方向左区间
  6461. * @param {Vector3} direction2 粒子运动方向右区间
  6462. * @return {PointShapeEmitter} 点发射器
  6463. */
  6464. createPointEmitter(
  6465. direction1: Vector3,
  6466. direction2: Vector3
  6467. ): PointShapeEmitter
  6468. /**
  6469. * 创建一个箱形发射器。
  6470. * @param {Vector3} direction1 粒子运动方向左区间
  6471. * @param {Vector3} direction2 粒子运动方向右区间
  6472. * @param {Vector3} minEmitBox 粒子生成位置最小允许坐标
  6473. * @param {Vector3} maxEmitBox 粒子生成位置最大允许坐标
  6474. * @return {BoxShapeEmitter} 箱形发射器
  6475. */
  6476. createBoxEmitter(
  6477. direction1: Vector3,
  6478. direction2: Vector3,
  6479. minEmitBox: Vector3,
  6480. maxEmitBox: Vector3
  6481. ): BoxShapeEmitter
  6482. /**
  6483. * 创建一个球形发射器。
  6484. * @param {number} radius 球形半径
  6485. * @param {number} radiusRange 球形区域内的覆盖范围[0-1]
  6486. * @param {number} arc 粒子在球形内生成的角度区间[0-360]
  6487. * @param {number} randomizeDirection 粒子运动方向偏离程度[0-1]
  6488. * @return {SphereShapeEmitter} 球形发射器
  6489. */
  6490. createSphereEmitter(
  6491. radius: number,
  6492. radiusRange: number,
  6493. arc: number,
  6494. randomizeDirection: number
  6495. ): SphereShapeEmitter
  6496. protected _parseProperties(data: IParticleData): void
  6497. protected _chooseEmitterProcess(): void
  6498. protected _createVertexBuffers(): void
  6499. protected _createIndexBuffer(): void
  6500. protected _appendParticleVertices(
  6501. offset: any,
  6502. instance?: ParticleInstance
  6503. ): void
  6504. protected _appendParticleVertex(
  6505. index: any,
  6506. instance: ParticleInstance,
  6507. offsetX: any,
  6508. offsetY: any,
  6509. offsetZ: any,
  6510. u: any,
  6511. v: any
  6512. ): void
  6513. protected _rebuildMesh(neverCull: boolean): void
  6514. protected _getUniformDesc(): Kanata.UniformDescriptor
  6515. protected _getMeshType(): Kanata.EMeshRenderType
  6516. protected _getVertexLayout(
  6517. attributes: any,
  6518. stride: any
  6519. ): Kanata.VertexLayout
  6520. protected _setMeshData(
  6521. material: Material,
  6522. uniforms?: Array<[string, string]>,
  6523. states?: Array<[string, string]>
  6524. ): void
  6525. /**
  6526. * 添加粒子运动过程中的颜色变化规则。
  6527. * @param {number} gradient 指定所处粒子生命周期的阶段
  6528. * @param {Vector4} color1 指定粒子颜色的左区间
  6529. * @param {Vector4} color2 指定粒子颜色的右区间
  6530. */
  6531. addColorGradient(
  6532. gradient: number,
  6533. color1: Vector4,
  6534. color2?: Vector4
  6535. ): void
  6536. /**
  6537. * 添加粒子运动过程中的速度变化规则。
  6538. * @param {number} gradient 指定所处粒子生命周期的阶段
  6539. * @param {Vector4} speed 指定粒子速度的左区间
  6540. * @param {Vector4} speed2 指定粒子速度的右区间
  6541. */
  6542. addSpeedScaleGradient(
  6543. gradient: number,
  6544. speed: number,
  6545. speed2?: number
  6546. ): void
  6547. /**
  6548. * 添加粒子运动过程中的速度限制规则。
  6549. * @param {number} gradient 指定所处粒子生命周期的阶段
  6550. * @param {number} limitSpeed 指定粒子限制速度的左区间
  6551. * @param {number} limitSpeed2 指定粒子限制速度的右区间
  6552. */
  6553. addLimitSpeedGradient(
  6554. gradient: number,
  6555. limitSpeed: number,
  6556. limitSpeed2?: number
  6557. ): void
  6558. /**
  6559. * 添加粒子运动过程中的阻力规则。
  6560. * @param {number} gradient 指定所处粒子生命周期的阶段
  6561. * @param {number} speed 指定粒子受到的阻力大小的左区间[0-1]
  6562. * @param {number} speed2 指定粒子受到的阻力大小的右区间[0-1]
  6563. */
  6564. addDragGradient(gradient: number, drag: number, drag2?: number): void
  6565. /**
  6566. * 添加粒子运动过程中的透明度变化规则。
  6567. * @param {number} gradient 指定所处粒子生命周期的阶段
  6568. * @param {number} alpha 指定粒子颜色透明度的左区间[0-1]
  6569. * @param {number} alpha2 指定粒子颜色透明度的右区间[0-1]
  6570. */
  6571. addAlphaGradient(gradient: number, alpha: number, alpha2?: number): void
  6572. /**
  6573. * 添加粒子运动过程中的尺寸变化规则。
  6574. * @param {number} gradient 指定所处粒子生命周期的阶段
  6575. * @param {number} size 指定粒子尺寸的左区间
  6576. * @param {number} size2 指定粒子尺寸的右区间
  6577. */
  6578. addSizeGradient(gradient: number, size: number, size2?: number): void
  6579. /**
  6580. * 添加粒子运动过程中的透明度变化范围。
  6581. * @param {number} gradient 指定所处粒子生命周期的阶段
  6582. * @param {number} min 指定粒子透明度值的左区间
  6583. * @param {number} max 指定粒子透明度值的右区间
  6584. */
  6585. addColorRemapGradient(gradient: number, min: number, max?: number): void
  6586. /**
  6587. * 将存储不同时间段相关属性系数的数组按时间点从小到大进行排序。
  6588. * @param {Array} factorGradients 存储不同时间段相关属性系数的数组
  6589. * @param {number} gradient 一般代表粒子所处生命周期的阶段
  6590. * @param {number} factor 左区间值
  6591. * @param {number} factor2 右区间值
  6592. */
  6593. protected addFactorGradient(
  6594. factorGradients: any,
  6595. gradient: any,
  6596. factor: any,
  6597. factor2: any
  6598. ): void
  6599. /**
  6600. * 添加粒子运动过程中的根据透明度影响的颜色变化规则,将通过颜色变化图纹理进行采样。
  6601. * @param {number} gradient 指定粒子颜色变化图的具体位置,对应具体值应为(1-alpha)
  6602. * @param {number} color 指定该位置的颜色
  6603. */
  6604. addRampGradient(gradient: any, color: any): void
  6605. /**
  6606. * 根据颜色变化数组,生成对应的颜色变化纹理
  6607. */
  6608. protected createRampGradientTexture(): void
  6609. /**
  6610. * @internal
  6611. */
  6612. protected lerpNumberArrayToVector(
  6613. vector: any,
  6614. numberArray1: any,
  6615. numberArray2: any,
  6616. step: any,
  6617. length?: number
  6618. ): void
  6619. }
  6620. }
  6621. declare module 'XrFrame/components/AssetRenderTexture' {
  6622. /**
  6623. * AssetRenderTexture.ts
  6624. *
  6625. * * @Date : 8/29/2022, 11:27:00 AM
  6626. */
  6627. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  6628. import Element from 'XrFrame/core/Element'
  6629. /**
  6630. * `AssetRenderTexture`资源数据接口。
  6631. */
  6632. export interface IAssetRenderTextureData {
  6633. assetId?: string
  6634. width: number
  6635. height: number
  6636. isHDR?: boolean
  6637. }
  6638. /**
  6639. * {@link AssetRenderTexture}的`schema`,详见{@link IAssetRenderTextureData}。
  6640. */
  6641. export const AssetRenderTextureSchema: IComponentSchema
  6642. /**
  6643. * 渲染纹理创建组件,用于在`xml`中创建{@link RenderTexture}资源,一般被代理到{@link XRAssetRenderTexture}元素。
  6644. */
  6645. export default class AssetRenderTexture extends Component<IAssetRenderTextureData> {
  6646. /**
  6647. * 详见{@link AssetRenderTextureSchema}。
  6648. */
  6649. readonly schema: IComponentSchema
  6650. readonly isAssetRenderTexture: boolean
  6651. onAdd(parent: Element, data: IAssetRenderTextureData): void
  6652. /**
  6653. * 移除AssetRenderTexture。
  6654. */
  6655. onRemove(parent: Element, data: IAssetRenderTextureData): void
  6656. }
  6657. }
  6658. declare module 'XrFrame/components/Env' {
  6659. /**
  6660. * Env.ts
  6661. *
  6662. * * @Date : 5/11/2022, 5:21:48 PM
  6663. */
  6664. import { Kanata } from 'XrFrame/ext'
  6665. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  6666. import EnvData from 'XrFrame/assets/EnvData'
  6667. import Element from 'XrFrame/core/Element'
  6668. import { ITextureWrapper } from 'XrFrame/core/DataValue'
  6669. /**
  6670. * {@link Env}组件数据接口。
  6671. */
  6672. export interface IEnvData {
  6673. /**
  6674. * 要使用的环境数据资源。
  6675. * `xml`中的数据类型为`env-data`资源。
  6676. */
  6677. envData?: EnvData
  6678. /**
  6679. * 可以用于覆盖`envData`中的`skybox`。
  6680. * `xml`中的数据类型为`texture`资源。
  6681. */
  6682. skyMap?: Kanata.Texture | ITextureWrapper
  6683. /**
  6684. * 是否用2D模式渲染天空盒,此时必须为`skyMap`必须**不**为`CubeTexture`。
  6685. */
  6686. isSky2D?: boolean
  6687. /**
  6688. * 环境旋转角度。
  6689. * `xml`中的数据类型为`number`,默认为`0`。
  6690. */
  6691. rotation: number
  6692. /**
  6693. * 漫反射部分曝光。
  6694. * `xml`中的数据类型为`number`,默认为`1`。
  6695. */
  6696. diffuseExp: number
  6697. /**
  6698. * 镜面反射部分曝光。
  6699. * `xml`中的数据类型为`number`,默认为`1`。
  6700. */
  6701. specularExp: number
  6702. }
  6703. /**
  6704. * {@link Env}的`schema`,详见{@link IEnvData}。
  6705. */
  6706. export const EnvSchema: IComponentSchema
  6707. /**
  6708. * 一般被代理到{@link XRARTracker}元素。
  6709. */
  6710. export default class Env extends Component<IEnvData> {
  6711. /**
  6712. * 详见{@link EnvSchema}。
  6713. */
  6714. readonly schema: IComponentSchema
  6715. get useHalfSkyMap(): boolean
  6716. get skyMap(): import('XrFrame/kanata/lib/index').Texture
  6717. get isSky2D(): boolean
  6718. get isSkyRT(): boolean
  6719. get rotation(): number
  6720. get hasDiffuse(): boolean
  6721. get diffuseSH(): Float32Array
  6722. get diffuseExp(): number
  6723. get hasSpecular(): boolean
  6724. get specularRGBD(): boolean
  6725. get specularMipmaps(): boolean
  6726. get specularMipmapCount(): number
  6727. get specularMap(): import('XrFrame/kanata/lib/index').Texture
  6728. get specularExp(): number
  6729. onAdd(parent: Element, data: IEnvData): void
  6730. onUpdate(data: IEnvData, preData: IEnvData): void
  6731. onRemove(parent: Element, data: IEnvData): void
  6732. }
  6733. }
  6734. declare module 'XrFrame/components/Animator' {
  6735. /**
  6736. * Animator.ts
  6737. *
  6738. * * @Date : 6/17/2022, 2:52:44 PM
  6739. */
  6740. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  6741. import Animation from 'XrFrame/animation/Animation'
  6742. import Element from 'XrFrame/core/Element'
  6743. type Scene = import('XrFrame/core/Scene').default
  6744. /**
  6745. * 使用`Animator`播放动画时可以传入的默认选项。
  6746. */
  6747. export interface IAnimationPlayOptions {
  6748. /**
  6749. * 播放速度,默认为`1`。
  6750. */
  6751. speed?: number
  6752. /**
  6753. * 循环次数,默认为`0`。
  6754. */
  6755. loop?: number
  6756. /**
  6757. * 播放延迟,默认为`0`。
  6758. */
  6759. delay?: number
  6760. /**
  6761. * 播放方向,默认为`forwards`。
  6762. */
  6763. direction?: 'forwards' | 'backwards' | 'both'
  6764. }
  6765. export enum EAnimationPlayState {
  6766. Playing = 0,
  6767. Paused = 1,
  6768. Stopt = 2
  6769. }
  6770. /**
  6771. * 自动播放配置。
  6772. */
  6773. export interface IAnimatorAutoPlay {
  6774. /**
  6775. * 片段名称。
  6776. */
  6777. clip?: string
  6778. /**
  6779. * 速度。
  6780. */
  6781. speed?: string
  6782. /**
  6783. * 循环次数。
  6784. */
  6785. loop?: string
  6786. /**
  6787. * 延迟。
  6788. */
  6789. delay?: string
  6790. /**
  6791. * 方向。
  6792. */
  6793. direction?: 'forwards' | 'backwards' | 'both'
  6794. /**
  6795. * 其他追加配置。
  6796. */
  6797. [key: string]: string | undefined
  6798. }
  6799. /**
  6800. * {@link Animator}组件数据接口。
  6801. */
  6802. export interface IAnimatorData {
  6803. /**
  6804. * 默认的`Keyframe`动画资源。
  6805. * `xml`中为资源id。
  6806. */
  6807. keyframe: Animation
  6808. /**
  6809. * 默认的片段名字映射,由于一个动画可以有多个片段,所以能通过映射由`Animator`中播放的名字 -> 动画资源中片段的名字。
  6810. * `xml`中为`dict`数据。
  6811. */
  6812. clipMap?: {
  6813. [key: string]: string
  6814. }
  6815. /**
  6816. * 默认自动播放的参数,详见{@Link IAnimatorAutoPlay}。
  6817. * `xml`中为`dict`数据。
  6818. */
  6819. autoPlay?: IAnimatorAutoPlay
  6820. }
  6821. /**
  6822. * {@link Animator}的`schema`定义。
  6823. * @see 解析后的接口详见 {@link IAnimatorData}
  6824. */
  6825. export const AnimatorSchema: {
  6826. keyframe: {
  6827. type: string
  6828. }
  6829. clipMap: {
  6830. type: string
  6831. }
  6832. autoPlay: {
  6833. type: string
  6834. }
  6835. }
  6836. export default class Animator extends Component<IAnimatorData> {
  6837. static EVENTS: string[]
  6838. /**
  6839. * 详见{@link AnimatorSchema}。
  6840. */
  6841. readonly schema: IComponentSchema
  6842. readonly priority: number
  6843. onAdd(parent: Element, data: IAnimatorData): void
  6844. onUpdate(data: IAnimatorData, preData: IAnimatorData): void
  6845. onRemove(parent: Element, data: IAnimatorData): void
  6846. onRelease(data: IAnimatorData): void
  6847. /**
  6848. * 手动添加一个动画。
  6849. *
  6850. * @param clipMap 可选的动画片段名字映射。
  6851. */
  6852. addAnimation<T extends Animation>(
  6853. anim: T,
  6854. clipMap?: {
  6855. [name: string]: string
  6856. }
  6857. ): T
  6858. /**
  6859. * 直接通过类`clz`和初始化数据`data`创建一个动画并添加到自身内。
  6860. */
  6861. createAnimation<T extends Animation>(
  6862. clz: new (scene: Scene, data: T['__DATA_TYPE']) => T,
  6863. data: T['__DATA_TYPE'],
  6864. clipMap?: {
  6865. [name: string]: string
  6866. }
  6867. ): T
  6868. /**
  6869. * 移除一个动画
  6870. */
  6871. removeAnimation(anim: Animation): void
  6872. /**
  6873. * @internal
  6874. */
  6875. /**
  6876. * 播放一个动画片段,**可以同时播放多个片段**。
  6877. *
  6878. * @param name 动画片段名称。
  6879. * @param options 播放选项。
  6880. */
  6881. play(
  6882. name: string,
  6883. options?: IAnimationPlayOptions & {
  6884. [key: string]: any
  6885. }
  6886. ): void
  6887. /**
  6888. * 播放动画片段到某一进度并停下。
  6889. *
  6890. * @param name 片段名称。
  6891. * @param progress 停到的某个进度,0~1。
  6892. */
  6893. pauseToFrame(name: string, progress: number): void
  6894. /**
  6895. * 暂停播放。
  6896. *
  6897. * @param name 需要暂停的片段,如果不填则暂停所有正在播放的片段。
  6898. */
  6899. pause(name?: string): void
  6900. /**
  6901. * 唤醒暂停的动画。
  6902. *
  6903. * @param name 需要唤醒的片段,如果不填则唤醒所有暂停的片段。
  6904. */
  6905. resume(name?: string): void
  6906. /**
  6907. * 停止播放。
  6908. *
  6909. * @param name 需要停止的片段,如果不填则停止所有正在播放的片段。
  6910. */
  6911. stop(name?: string): void
  6912. }
  6913. export {}
  6914. }
  6915. declare module 'XrFrame/components/CameraOrbitControl' {
  6916. /**
  6917. * CameraOrbitControl.ts
  6918. *
  6919. * * @Date : 5/19/2022, 1:22:59 PM
  6920. */
  6921. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  6922. import Element from 'XrFrame/core/Element'
  6923. import Vector3 from 'XrFrame/math/vector3'
  6924. /**
  6925. * {@link CameraOrbitControl}组件数据接口。
  6926. */
  6927. export interface ICameraOrbitControlData {
  6928. /**
  6929. * 是否锁定横向旋转。
  6930. */
  6931. isLockX: boolean
  6932. /**
  6933. * 是否锁定纵向旋转。
  6934. */
  6935. isLockY: boolean
  6936. /**
  6937. * 是否锁定缩放。
  6938. */
  6939. isLockZoom: boolean
  6940. /**
  6941. * 是否锁定旋转。
  6942. */
  6943. isLockRotate: boolean
  6944. /**
  6945. * 是否锁定移动。
  6946. */
  6947. isLockMove: boolean
  6948. /**
  6949. * 允许的最大缩放值。
  6950. */
  6951. zoomMax: number
  6952. /**
  6953. * 允许的最小缩放值。
  6954. */
  6955. zoomMin: number
  6956. /**
  6957. * 平移速度。
  6958. */
  6959. panSpeed: number
  6960. /**
  6961. * 旋转速度。
  6962. */
  6963. rotateSpeed: number
  6964. /**
  6965. * 缩放速度。
  6966. */
  6967. zoomSpeed: number
  6968. /**
  6969. * 开启阻尼缓动。
  6970. */
  6971. enableDamping: boolean
  6972. /**
  6973. * 阻尼系数。
  6974. */
  6975. dampingFactor: number
  6976. }
  6977. /**
  6978. * {@link CameraOrbitControl}的`schema`,详见{@link ICameraOrbitControlData}。
  6979. */
  6980. export const CameraOrbitControlSchema: IComponentSchema
  6981. export default class CameraOrbitControl extends Component<ICameraOrbitControlData> {
  6982. /**
  6983. * 详见{@link CameraOrbitControlSchema}。
  6984. */
  6985. readonly schema: IComponentSchema
  6986. /**
  6987. * 是否锁定横向旋转。
  6988. */
  6989. isLockX: boolean
  6990. /**
  6991. * 是否锁定纵向旋转。
  6992. */
  6993. isLockY: boolean
  6994. /**
  6995. * 是否锁定缩放。
  6996. */
  6997. isLockZoom: boolean
  6998. /**
  6999. * 是否锁定旋转。
  7000. */
  7001. isLockRotate: boolean
  7002. /**
  7003. * 是否锁定移动。
  7004. */
  7005. isLockMove: boolean
  7006. /**
  7007. * 是否已经开启。
  7008. */
  7009. isEnabled: boolean
  7010. /**
  7011. * 允许的最大缩放值。
  7012. */
  7013. zoomMax: number
  7014. /**
  7015. * 允许的最小缩放值。
  7016. */
  7017. zoomMin: number
  7018. /**
  7019. * 允许的最大平移边界。
  7020. */
  7021. panMax: Vector3
  7022. /**
  7023. * 允许的最小平移边界。
  7024. */
  7025. panMin: Vector3
  7026. /**
  7027. * 平移速度。
  7028. */
  7029. panSpeed: number
  7030. /**
  7031. * 旋转速度。
  7032. */
  7033. rotateSpeed: number
  7034. /**
  7035. * 缩放速度。
  7036. */
  7037. zoomSpeed: number
  7038. /**
  7039. * 开启阻尼缓动。
  7040. */
  7041. enableDamping: boolean
  7042. /**
  7043. * 阻尼系数。
  7044. */
  7045. dampingFactor: number
  7046. /**
  7047. * 当前是否正在缓动。
  7048. */
  7049. get damping(): boolean
  7050. /**
  7051. * 获取当前目标。
  7052. */
  7053. get target(): Vector3
  7054. /**
  7055. * 添加到世界,继承请先`super.onAdd()`。
  7056. */
  7057. onAdd(parent: Element, data: ICameraOrbitControlData): void
  7058. /**
  7059. * 每一帧更新,继承请先`super.onUpdate()`。
  7060. */
  7061. onUpdate(data: ICameraOrbitControlData): void
  7062. onTick(deltaTime: number, data: ICameraOrbitControlData): void
  7063. /**
  7064. * 销毁,继承请先`super.onUpdate()`。
  7065. */
  7066. onRemove(): void
  7067. /**
  7068. * 启动控制器。
  7069. */
  7070. enable(): void
  7071. /**
  7072. * 关闭控制器。
  7073. */
  7074. disable(): void
  7075. }
  7076. }
  7077. declare module 'XrFrame/components/ARTracker' {
  7078. /**
  7079. * ARTracker.ts
  7080. *
  7081. * * @Date : 6/24/2022, 11:35:30 AM
  7082. */
  7083. import { Kanata } from 'XrFrame/ext'
  7084. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  7085. import Element from 'XrFrame/core/Element'
  7086. import Vector3 from 'XrFrame/math/vector3'
  7087. /**
  7088. * {@link ARSystem}和{@link ARTracker}的跟踪模式。
  7089. * 其中`threeDof`需要基础库`2.30.4`以上支持。
  7090. */
  7091. export type TTrackMode =
  7092. | 'Plane'
  7093. | 'Marker'
  7094. | 'OSD'
  7095. | 'Face'
  7096. | 'Hand'
  7097. | 'Body'
  7098. | 'threeDof'
  7099. /**
  7100. * {@link ARTracker}的识别状态。
  7101. * @version v2.29.1
  7102. */
  7103. export enum EARTrackerState {
  7104. Init = 0,
  7105. Detecting = 1,
  7106. Detected = 2,
  7107. Error = 3
  7108. }
  7109. /**
  7110. * `Face`/`Body`/`Hand`模式下,{@link ARTracker}存储的原始数据类型。
  7111. */
  7112. export interface IARTrackerRawData {
  7113. /**
  7114. * 原点,屏幕空间。
  7115. */
  7116. origin: {
  7117. x: number
  7118. y: number
  7119. }
  7120. /**
  7121. * 尺寸,屏幕空间。
  7122. */
  7123. size: {
  7124. width: number
  7125. height: number
  7126. }
  7127. /**
  7128. * 置信度。
  7129. */
  7130. score: number
  7131. /**
  7132. * 在`Hand`模式下,手势分类,正常`0~18`,无效为`-1`。
  7133. */
  7134. gesture?: number
  7135. /**
  7136. * 在`Face`模式下,人脸旋转角度。
  7137. */
  7138. angle?: {
  7139. pitch: number
  7140. roll: number
  7141. yaw: number
  7142. z_score: number
  7143. }
  7144. /**
  7145. * 关键点置信度。
  7146. */
  7147. confidence: number[]
  7148. /**
  7149. * 关键点,屏幕空间。
  7150. */
  7151. points: Array<{
  7152. x: number
  7153. y: number
  7154. }>
  7155. /**
  7156. * 支持3D时,3D关键点,世界空间。
  7157. */
  7158. points3d: Array<{
  7159. x: number
  7160. y: number
  7161. z: number
  7162. }>
  7163. }
  7164. /**
  7165. * {@link ARTracker}组件数据接口。
  7166. */
  7167. export interface IARTrackerData {
  7168. /**
  7169. * 跟踪模式,必须在{@link ARSystem}已开启的模式列表中。
  7170. * `xml`中数据为`string`类型。
  7171. */
  7172. mode: TTrackMode
  7173. /**
  7174. * 要追踪的图片资源,优先使用。
  7175. * `xml`中数据为`image`类型。
  7176. */
  7177. image?: Kanata.IImage
  7178. /**
  7179. * 要追踪的图片地址,如果`image`没有定义,则使用这个。
  7180. * `xml`中数据为`string`类型。
  7181. */
  7182. src?: string
  7183. /**
  7184. * 在`Face`模式下,给定一个**特征点索引**列表,详见官网对应文档。
  7185. * 系统会自动同步位置和缩放到`ARTracker`下对应的顺序的子节点。
  7186. * `-1`代表不同步位置,只同步缩放。
  7187. */
  7188. autoSync?: number[]
  7189. }
  7190. /**
  7191. * {@link ARTracker}的`schema`,详见{@link IARTrackerData}。
  7192. */
  7193. export const ARTrackSchema: {
  7194. mode: {
  7195. type: string
  7196. }
  7197. image: {
  7198. type: string
  7199. }
  7200. src: {
  7201. type: string
  7202. }
  7203. autoSync: {
  7204. type: string
  7205. }
  7206. }
  7207. /**
  7208. * AR追踪组件,配合{@link ARSystem}和{@link Camera}的`isARCamera`属性一起使用。
  7209. * 一般被代理到{@link XRARTracker}元素。
  7210. *
  7211. * 其提供了追踪的能力,节点将会自动同步识别到的追踪目标的位置和旋转,
  7212. */
  7213. export default class ARTracker extends Component<IARTrackerData> {
  7214. static EVENTS: string[]
  7215. /**
  7216. * 详见{@link ARTrackSchema}。
  7217. */
  7218. readonly schema: IComponentSchema
  7219. /**
  7220. * 跟踪模式。
  7221. */
  7222. get mode(): TTrackMode
  7223. /**
  7224. * 当前识别状态。
  7225. *
  7226. * @version v2.29.1
  7227. */
  7228. get state(): EARTrackerState
  7229. /**
  7230. * 如果为错误状态,错误信息。
  7231. *
  7232. * @version v2.29.1
  7233. */
  7234. get errorMessage(): string
  7235. /**
  7236. * 是否已经检测到了目标。
  7237. */
  7238. get arActive(): boolean
  7239. /**
  7240. * `Body`/`Hand`模式下,获取当前的置信度。
  7241. * 一般为`0~1`。
  7242. */
  7243. get score(): number
  7244. /**
  7245. * 在`Hand`模式下,手势分类,正常`0~18`,无效为`-1`。
  7246. */
  7247. get gesture(): number
  7248. /**
  7249. * @internal
  7250. */
  7251. get filePath(): string
  7252. /**
  7253. * @internal
  7254. */
  7255. get trackId(): number
  7256. onAdd(parent: Element, data: IARTrackerData): void
  7257. onUpdate(data: IARTrackerData, preData: IARTrackerData): void
  7258. onRemove(parent: Element, data: IARTrackerData): void
  7259. /**
  7260. * 在`Face`/`Body`/`Hand`模式下,获取某个特征点的位置。
  7261. *
  7262. * @param point 特征点索引,需要在`0~105`,否则返回`undefined`。
  7263. * @param relativeToTracker 仅在`ar-system`的`pose3d`属性为`false`时生效。是否相对于`ARTracker`本身,默认为`true`,否则返回世界空间坐标。
  7264. * @returns 只有在`arActive`时才有值,否则返回`undefined`。
  7265. */
  7266. getPosition(
  7267. point: number,
  7268. output?: Vector3,
  7269. relativeToTracker?: boolean
  7270. ): Vector3
  7271. /**
  7272. * @internal
  7273. */
  7274. /**
  7275. * @internal
  7276. */
  7277. }
  7278. }
  7279. declare module 'XrFrame/components/physics/Shape' {
  7280. import Component from 'XrFrame/core/Component'
  7281. import Element from 'XrFrame/core/Element'
  7282. import Vector3 from 'XrFrame/math/vector3'
  7283. import { Kanata } from 'XrFrame/ext'
  7284. import type Rigidbody from 'XrFrame/components/physics/Rigidbody'
  7285. import type GLTFComponent from 'XrFrame/components/GLTF'
  7286. import Quaternion from 'XrFrame/math/quaternion'
  7287. import { Delegate } from 'XrFrame/physics/event'
  7288. import { ICollideEvent, IOverlapEvent } from 'XrFrame/physics/Collision'
  7289. import { TQS } from 'XrFrame/assets/GLTFModel'
  7290. export const shapeMap: Map<phys3D.Collider, Shape<any>>
  7291. export enum EShapeType {
  7292. /**
  7293. * @internal
  7294. */
  7295. None = 0,
  7296. /**
  7297. * @see {@link CubeShape}
  7298. */
  7299. Cube = 1,
  7300. /**
  7301. * @internal
  7302. */
  7303. CharacterController = 2,
  7304. /**
  7305. * @see {@link CapsuleShape}
  7306. */
  7307. Capsule = 3,
  7308. /**
  7309. * @see {@link MeshShape}
  7310. */
  7311. Mesh = 4,
  7312. /**
  7313. * @see {@link SphereShape}
  7314. */
  7315. Sphere = 5
  7316. }
  7317. export interface IShapeData {
  7318. /**
  7319. * 轮廓中心相对元素{@link Transform}中心的偏移量。
  7320. * @default [0, 0, 0]
  7321. */
  7322. center?: [number, number, number]
  7323. /**
  7324. * 轮廓是否自动贴合{@link Mesh | Mesh组件}或{@link GLTF | GLTF组件}的大小。
  7325. * 如果当前元素下不存在Mesh组件和GLTF组件则不生效。
  7326. *
  7327. * > {@link MeshShape}永远会开启这项。
  7328. *
  7329. * @default false
  7330. */
  7331. autoFit?: boolean
  7332. /**
  7333. * 是否禁用shape。
  7334. *
  7335. * @default false
  7336. */
  7337. disabled?: boolean
  7338. }
  7339. export const ShapeSchema: {
  7340. center: {
  7341. type: string
  7342. }
  7343. autoFit: {
  7344. type: string
  7345. }
  7346. disabled: {
  7347. type: string
  7348. }
  7349. }
  7350. export enum ShapeImplType {
  7351. None = 0,
  7352. Basic = 1,
  7353. GLTFAbstract = 2
  7354. }
  7355. /**
  7356. * 轮廓组件的基类。
  7357. * 为元素添加*该组件的子类*可以创建一个可用于交互的轮廓。
  7358. *
  7359. * > 💡 只要创建了轮廓,在点击该物体时就可以触发事件:
  7360. * > + touch-shape: 点击物体事件,回调参数为{@link IShapeTouchEvent};
  7361. * > + drag-shape: 拖拽物体事件,回调参数为{@link IShapeDragEvent};
  7362. * > + untouch-shape: 松开物体事件,回调参数为{@link IShapeTouchEvent};
  7363. * >
  7364. * > 绑定事件的方法可参考以下代码:
  7365. * >
  7366. * > ``` <xr-node sphere-shape bind:touch-shape="handleTouchShape"></xr-node> ```
  7367. *
  7368. * > 💡 如果想要将轮廓可视化来确认轮廓大小,可以在同一个元素下添加{@link ShapeGizmos}组件,或在标签上添加`shape-gizmo`属性(对MeshShape不起作用)。
  7369. *
  7370. * @abstract
  7371. */
  7372. export default abstract class Shape<
  7373. T extends IShapeData = any
  7374. > extends Component<IShapeData> {
  7375. static EVENTS: string[]
  7376. readonly priority: number
  7377. implType: ShapeImplType
  7378. protected _type: EShapeType
  7379. protected _onCollisionEnterDelegate?: Delegate<ICollideEvent>
  7380. protected _onCollisionExitDelegate?: Delegate<ICollideEvent>
  7381. protected _onCollisionStayDelegate?: Delegate<ICollideEvent>
  7382. protected _onTriggerEnterDelegate?: Delegate<IOverlapEvent>
  7383. protected _onTriggerExitDelegate?: Delegate<IOverlapEvent>
  7384. protected _onTriggerStayDelegate?: Delegate<IOverlapEvent>
  7385. get type(): EShapeType
  7386. onAdd(parent: Element, data: T): void
  7387. onUpdate(data: T, preData: T): void
  7388. onTick(dateTime: number, data: T): void
  7389. protected abstract getImplClass(
  7390. implType: ShapeImplType
  7391. ): new () => ShapeImpl | null
  7392. onRemove(parent: Element, data: IShapeData): void
  7393. onRelease(data: IShapeData): void
  7394. shadowRoot?: GLTFAbstractShape<T>
  7395. setAsShadow(root: GLTFAbstractShape<T>, transform: TQS): void
  7396. getGLTFRootShape(): Shape<T> | undefined
  7397. getBasicImpl(): BasicShape<T> | undefined
  7398. getShadowShapes(): Array<Shape<T>>
  7399. initDelegates(el: Element): void
  7400. resetListeners(): void
  7401. }
  7402. export interface ShapeImpl {
  7403. el: Element
  7404. onElementAdd?(parent: Element): void
  7405. update(data: IShapeData, preData: IShapeData): void
  7406. onElementRemove(parent: Element): void
  7407. onTick(dateTime: number, data: IShapeData): any
  7408. create?(el: Element, shape: Shape<any>, data: IShapeData): any
  7409. cleanUp(): any
  7410. enable(): any
  7411. disable(): any
  7412. }
  7413. export abstract class BasicShape<T extends IShapeData>
  7414. implements ShapeImpl
  7415. {
  7416. el: Element
  7417. shapeComp: Shape<T>
  7418. nativeComp: phys3D.Collider
  7419. rigidbodyComp?: Rigidbody
  7420. _isShadow: boolean
  7421. _root: GLTFAbstractShape<T>
  7422. _positionInGLTF: Vector3
  7423. _quatInGLTF: Quaternion
  7424. protected afterCreateNativeComp(): void
  7425. protected destroyNativeComp(): void
  7426. onElementAdd(parent: Element): void
  7427. protected abstract autoFit(data: T): void
  7428. protected abstract applyData(data: T): void
  7429. update(data: T, preData: T): void
  7430. onElementRemove(parent: Element): void
  7431. onRelease(data: T): void
  7432. onTick(dateTime: number, data: IShapeData): void
  7433. cleanUp(): void
  7434. /**
  7435. * @internal
  7436. */
  7437. get entity(): Kanata.Entity3D
  7438. enable(): void
  7439. disable(): void
  7440. }
  7441. export abstract class GLTFAbstractShape<T extends IShapeData>
  7442. implements ShapeImpl
  7443. {
  7444. el: Element
  7445. shapeComp: Shape<T>
  7446. protected gltf: GLTFComponent
  7447. shadowShapes: Array<Shape<T>>
  7448. update(data: T, preData: T): void
  7449. onElementRemove(parent: Element): void
  7450. onTick(dateTime: number, data: T): void
  7451. create(el: Element, shape: Shape<T>, data: T): void
  7452. protected abstract getShapeClass(): new () => Shape<T>
  7453. cleanUp(): void
  7454. protected abstract createShadowShape(el: Element, data: T): Shape<T>
  7455. enable(): void
  7456. disable(): void
  7457. }
  7458. }
  7459. declare module 'XrFrame/components/physics/SphereShape' {
  7460. import Shape, {
  7461. BasicShape,
  7462. EShapeType,
  7463. IShapeData,
  7464. ShapeImpl,
  7465. ShapeImplType
  7466. } from 'XrFrame/components/physics/Shape'
  7467. import Vector3 from 'XrFrame/math/vector3'
  7468. import Element from 'XrFrame/core/Element'
  7469. import { IComponentSchema } from 'XrFrame/core/Component'
  7470. /**
  7471. * @see {@link SphereShapes}
  7472. */
  7473. export interface ISphereShapeData extends IShapeData {
  7474. /**
  7475. * 球形轮廓的半径。
  7476. * @default 1
  7477. */
  7478. radius?: number
  7479. }
  7480. export const SphereShapeSchema: IComponentSchema
  7481. /**
  7482. * 为当前元素创建一个可交互的球状轮廓。
  7483. * 可通过在标签上添加`sphere-shape`属性来为元素添加该组件。
  7484. *
  7485. * @see {@link ISphereShapeData}
  7486. */
  7487. export default class SphereShape extends Shape<ISphereShapeData> {
  7488. static EVENTS: string[]
  7489. readonly schema: IComponentSchema
  7490. protected _type: EShapeType
  7491. protected getImplClass(implType: ShapeImplType): new () => ShapeImpl
  7492. }
  7493. export class BasicSphereShape extends BasicShape<ISphereShapeData> {
  7494. nativeComp: phys3D.SphereCollider
  7495. /**
  7496. * 轮廓相对于元素中心点的偏移量。
  7497. */
  7498. get center(): Vector3
  7499. set center(v: Vector3)
  7500. /**
  7501. * 球形轮廓的半径。
  7502. */
  7503. get radius(): number
  7504. set radius(v: number)
  7505. create(el: Element, shape: SphereShape, data: ISphereShapeData): void
  7506. protected autoFit(data: ISphereShapeData): void
  7507. protected applyData(data: ISphereShapeData): void
  7508. }
  7509. }
  7510. declare module 'XrFrame/components/physics/MeshShape' {
  7511. import Shape, {
  7512. IShapeData,
  7513. EShapeType,
  7514. ShapeImplType,
  7515. ShapeImpl,
  7516. BasicShape
  7517. } from 'XrFrame/components/physics/Shape'
  7518. import Element from 'XrFrame/core/Element'
  7519. import { IComponentSchema } from 'XrFrame/core/Component'
  7520. /**
  7521. * @see {@link MeshShape}
  7522. */
  7523. export interface IMeshShapeData extends IShapeData {
  7524. /**
  7525. * 是否使用凸多边形来包围Mesh。
  7526. * *如果元素有`shape-interact`属性,则会强制开启。*
  7527. * @default false
  7528. */
  7529. convex?: boolean
  7530. }
  7531. export const MeshShapeSchema: IComponentSchema
  7532. /**
  7533. * 利用当前元素下的{@link Mesh | Mesh组件}或{@link GLTF | GLTF组件},创建一个完全贴合的轮廓。如果当前元素下不存在Mesh组件或GLTF组件,则不生效。
  7534. * 可通过在标签上添加`mesh-shape`属性来为元素添加该组件。
  7535. *
  7536. * > ⚠️ 如果Mesh或GLTF内部结构非常复杂,创建和维持该组件可能会占用较多的资源。如果发现该组件会导致小程序性能下降,可以考虑改用其他轮廓类型,并开启{@link IShapeData.autoFit | autoFit}属性。
  7537. *
  7538. * > ⚠️ MeshShape使用的Mesh的顶点数量不能超过65535个。如果超过了,推荐使用CubeShape+autoFit来代替。
  7539. *
  7540. * @see {@link IMeshShapeData}
  7541. */
  7542. export default class MeshShape extends Shape<IMeshShapeData> {
  7543. static EVENTS: string[]
  7544. readonly schema: IComponentSchema
  7545. protected _type: EShapeType
  7546. protected getImplClass(implType: ShapeImplType): new () => ShapeImpl
  7547. }
  7548. export class BasicMeshShape extends BasicShape<IMeshShapeData> {
  7549. nativeComp: phys3D.MeshCollider
  7550. create(el: Element, shape: MeshShape, data: IMeshShapeData): void
  7551. onTick(dateTime: number, data: IShapeData): void
  7552. protected autoFit(data: IMeshShapeData): void
  7553. protected applyData(data: IMeshShapeData): void
  7554. }
  7555. }
  7556. declare module 'XrFrame/components/physics/CapsuleShape' {
  7557. import Shape, {
  7558. BasicShape,
  7559. EShapeType,
  7560. IShapeData,
  7561. ShapeImpl,
  7562. ShapeImplType
  7563. } from 'XrFrame/components/physics/Shape'
  7564. import Vector3 from 'XrFrame/math/vector3'
  7565. import Element from 'XrFrame/core/Element'
  7566. import { IComponentSchema } from 'XrFrame/core/Component'
  7567. /**
  7568. * @see {@link CapsuleShape}
  7569. */
  7570. export interface ICapsuleShapeData extends IShapeData {
  7571. /**
  7572. * 胶囊体两端球体的半径。
  7573. * @default 0.5
  7574. */
  7575. radius?: number
  7576. /**
  7577. * 胶囊体的长度。
  7578. * @default 2
  7579. */
  7580. height?: number
  7581. /**
  7582. * 胶囊体的朝向。
  7583. * @default ECapsuleShapeDirection["Y-Axis"]
  7584. */
  7585. direction?: ECapsuleShapeDirection
  7586. }
  7587. export const CapsuleShapeSchema: IComponentSchema
  7588. /**
  7589. * 胶囊体轮廓的朝向。
  7590. *
  7591. * @category Physics
  7592. */
  7593. export enum ECapsuleShapeDirection {
  7594. 'X-Axis' = 0,
  7595. 'Y-Axis' = 1,
  7596. 'Z-Axis' = 2
  7597. }
  7598. /**
  7599. * 为当前元素创建一个可交互的胶囊体轮廓。
  7600. * 可通过在标签上添加`capsule-shape`属性来为元素添加该组件。
  7601. *
  7602. * @see {@link ICapsuleShapeData}
  7603. */
  7604. export default class CapsuleShape extends Shape<ICapsuleShapeData> {
  7605. static EVENTS: string[]
  7606. readonly schema: IComponentSchema
  7607. protected _type: EShapeType
  7608. protected getImplClass(implType: ShapeImplType): new () => ShapeImpl
  7609. }
  7610. export class BasicCapsuleShape extends BasicShape<ICapsuleShapeData> {
  7611. nativeComp: phys3D.CapsuleCollider
  7612. /**
  7613. * 轮廓相对于元素中心点的偏移量。
  7614. */
  7615. get center(): Vector3
  7616. set center(v: Vector3)
  7617. /**
  7618. * 胶囊体两端球体的半径。
  7619. */
  7620. get radius(): number
  7621. set radius(v: number)
  7622. static defaultHeight: number
  7623. /**
  7624. * 胶囊体的长度。
  7625. */
  7626. get height(): number
  7627. set height(v: number)
  7628. /**
  7629. * 胶囊体的朝向。
  7630. */
  7631. get direction(): ECapsuleShapeDirection
  7632. set direction(v: ECapsuleShapeDirection)
  7633. create(el: Element, shape: CapsuleShape, data: ICapsuleShapeData): void
  7634. protected autoFit(data: ICapsuleShapeData): void
  7635. protected applyData(data: ICapsuleShapeData): void
  7636. }
  7637. }
  7638. declare module 'XrFrame/components/physics/CubeShape' {
  7639. import Shape, {
  7640. BasicShape,
  7641. EShapeType,
  7642. IShapeData,
  7643. ShapeImpl,
  7644. ShapeImplType
  7645. } from 'XrFrame/components/physics/Shape'
  7646. import Vector3 from 'XrFrame/math/vector3'
  7647. import Element from 'XrFrame/core/Element'
  7648. import { IComponentSchema } from 'XrFrame/core/Component'
  7649. /**
  7650. * @see {@link CubeShape}
  7651. */
  7652. export interface ICubeShapeData extends IShapeData {
  7653. /**
  7654. * 长方体沿x,y,z轴的长度。
  7655. * @default [1, 1, 1]
  7656. */
  7657. size?: [number, number, number]
  7658. }
  7659. export const CubeShapeSchema: IComponentSchema
  7660. /**
  7661. * 为当前元素创建一个可交互的长方体轮廓。
  7662. * 可通过在标签上添加`cube-shape`属性来为元素添加该组件。
  7663. *
  7664. * @see {@link ICubeShapeData}
  7665. */
  7666. export default class CubeShape extends Shape<ICubeShapeData> {
  7667. static EVENTS: string[]
  7668. readonly schema: IComponentSchema
  7669. protected _type: EShapeType
  7670. protected getImplClass(implType: ShapeImplType): new () => ShapeImpl
  7671. }
  7672. export class BasicCubeShape extends BasicShape<ICubeShapeData> {
  7673. nativeComp: phys3D.BoxCollider
  7674. /**
  7675. * 轮廓相对于元素中心点的偏移量。
  7676. */
  7677. get center(): Vector3
  7678. set center(v: Vector3)
  7679. /**
  7680. * 长方体沿x,y,z轴的长度。
  7681. */
  7682. get size(): Vector3
  7683. set size(v: Vector3)
  7684. create(el: Element, shape: CubeShape, data: ICubeShapeData): void
  7685. protected autoFit(data: ICubeShapeData): void
  7686. protected applyData(data: ICubeShapeData): void
  7687. }
  7688. }
  7689. declare module 'XrFrame/components/physics/Rigidbody' {
  7690. import Vector3 from 'XrFrame/math/vector3'
  7691. import Quaternion from 'XrFrame/math/quaternion'
  7692. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  7693. import {
  7694. CollisionDetectionMode,
  7695. ForceMode
  7696. } from 'XrFrame/components/physics/types'
  7697. import Element from 'XrFrame/core/Element'
  7698. export interface IRigidbodyData {
  7699. /**
  7700. * 是否禁用刚体。
  7701. * @default false
  7702. */
  7703. disabled?: boolean
  7704. /**
  7705. * 物体的质量。
  7706. * @limit mass > 0
  7707. * @default 1
  7708. */
  7709. mass?: number
  7710. /**
  7711. * 刚体是否受重力影响。
  7712. * @default true
  7713. */
  7714. useGravity?: boolean
  7715. /**
  7716. * 限制刚体在某个轴上的位移和旋转。
  7717. * 具体值参考{@link RigidbodyConstraints}
  7718. */
  7719. constraintsMask?: number
  7720. /**
  7721. * 是否为*运动学(Kinematic)* 刚体。
  7722. * 设置为*运动学*刚体后,除非手动调用{@link movePosition},否则物体不会在*物理模拟*阶段发生位移或旋转。可以理解为,刚体的行为完全在用户的控制之下。
  7723. * @default false
  7724. */
  7725. kinematic?: boolean
  7726. }
  7727. export const RigidbodySchema: {
  7728. mass: {
  7729. type: string
  7730. }
  7731. useGravity: {
  7732. type: string
  7733. }
  7734. constraintsMask: {
  7735. type: string
  7736. }
  7737. disabled: {
  7738. type: string
  7739. }
  7740. kinematic: {
  7741. type: string
  7742. }
  7743. }
  7744. /**
  7745. * 刚体组件。
  7746. *
  7747. * 让物体在物理系统中成为一个有质量的刚体。只有添加了这个组件之后,物体才有可能在物理系统的*物理模拟*阶段发生位移和旋转。
  7748. * @category Physics
  7749. */
  7750. export default class Rigidbody extends Component<IRigidbodyData> {
  7751. readonly schema: IComponentSchema
  7752. readonly priority: number
  7753. /**
  7754. * 刚体的质量。
  7755. * @limit mass > 0
  7756. * @default 1
  7757. */
  7758. get mass(): number
  7759. set mass(v: number)
  7760. /**
  7761. * 线性阻尼。
  7762. * 影响物体的{@link velocity | 线性速度}。
  7763. * @limit linearDamping >= 0
  7764. * @default 0
  7765. */
  7766. get linearDamping(): number
  7767. set linearDamping(v: number)
  7768. /**
  7769. * 角速度阻尼。
  7770. * 影响物体的{@link angularVelocity | 角速度}。
  7771. * @limit angularDamping >= 0
  7772. * @default 0.05
  7773. */
  7774. get angularDamping(): number
  7775. set angularDamping(v: number)
  7776. /**
  7777. * 刚体是否受重力影响。
  7778. * @default true
  7779. */
  7780. get useGravity(): boolean
  7781. set useGravity(v: boolean)
  7782. /**
  7783. * 是否为*运动学(Kinematic)* 刚体。
  7784. * 设置为*运动学*刚体后,除非手动调用{@link movePosition},否则物体不会在*物理模拟*阶段发生位移或旋转。可以理解为,刚体的行为完全在用户的控制之下。
  7785. * @default false
  7786. */
  7787. get isKinematic(): boolean
  7788. set isKinematic(v: boolean)
  7789. /**
  7790. * @unimplemented
  7791. * @default true
  7792. */
  7793. get detectCollisions(): boolean
  7794. set detectCollisions(v: boolean)
  7795. /**
  7796. * 设置刚体的碰撞检测模式。
  7797. * 详见{@link CollisionDetectionMode}。
  7798. * @default {@link CollisionDetectionMode.Discrete}
  7799. */
  7800. get collisionDetectionMode(): CollisionDetectionMode
  7801. set collisionDetectionMode(v: CollisionDetectionMode)
  7802. /**
  7803. * 限制物体的旋转(X轴,Y轴,Z轴)。
  7804. * @default [false, false, false]
  7805. */
  7806. get rotationConstraints(): boolean[]
  7807. set rotationConstraints(v: boolean[])
  7808. /**
  7809. * 限制物体的位移(X轴,Y轴,Z轴)。
  7810. * @default [false, false, false]
  7811. */
  7812. get positionConstraints(): boolean[]
  7813. set positionConstraints(v: boolean[])
  7814. /**
  7815. * 直接获取或修改刚体在*物理系统*中的位置。
  7816. * 物理系统中的位置是独立于Transform组件的。
  7817. *
  7818. * \**如果你不清楚修改这一项的后果,请不要手动修改它。修改{@link Transform.position}来代替。*
  7819. */
  7820. get position(): Vector3
  7821. set position(v: Vector3)
  7822. /**
  7823. * 直接获取或修改刚体在*物理系统*中的旋转(以四元数表示)。
  7824. * 物理系统中的旋转是独立于节点系统中的Transform的,详见{@link //TODO}。
  7825. *
  7826. * \**如果你不清楚修改这一项的后果,请不要手动修改它。修改{@link Transform3D.euler}或{@link Transform3D.quaternion}来代替。*
  7827. */
  7828. get rotation(): Quaternion
  7829. set rotation(v: Quaternion)
  7830. /**
  7831. * 刚体的角速度。
  7832. */
  7833. get angularVelocity(): Vector3
  7834. set angularVelocity(v: Vector3)
  7835. /**
  7836. * 刚体的质心相对于LocalTransform的偏移量。
  7837. * 如果不手动设置这一项,会自动根据刚体附着的轮廓来计算质心。
  7838. * @see {@link resetCenterOfMass}
  7839. */
  7840. get centerOfMass(): Vector3
  7841. set centerOfMass(v: Vector3)
  7842. /**
  7843. * 是否允许*物理模拟*过程中对刚体进行旋转。
  7844. * @default true
  7845. */
  7846. get freezeRotation(): boolean
  7847. set freezeRotation(v: boolean)
  7848. /**
  7849. * 刚体的转动惯量。
  7850. * 如果不手动设置的话,会自动根据刚体上附着的轮廓计算得出。
  7851. * @see {@link resetInertiaTensor}
  7852. */
  7853. get inertiaTensor(): number
  7854. set inertiaTensor(v: number)
  7855. /**
  7856. * 最大角速度(弧度)。
  7857. * @default 7
  7858. */
  7859. get maxAngularVelocity(): number
  7860. set maxAngularVelocity(v: number)
  7861. /**
  7862. * 最大分离速度。
  7863. * *物理模拟*解决碰撞(相交)的过程中,最大能允许的分离速度。
  7864. * @default Infinity
  7865. */
  7866. get maxDepenetrationVelocity(): number
  7867. set maxDepenetrationVelocity(v: number)
  7868. /**
  7869. * 设置刚体进入休眠的动能阈值。
  7870. * @default 0.005
  7871. */
  7872. get sleepThreshold(): number
  7873. set sleepThreshold(v: number)
  7874. /**
  7875. * 设置*物理模拟*过程中解决碰撞的迭代次数。
  7876. * 更高的迭代次数,会消耗更多性能,产生更自然的物理碰撞效果。
  7877. * 如果发现静息状态的刚体(比如说放在地面上),会发生抖动,可以考虑提高这项数值。
  7878. *
  7879. * @limit solverIterations > 0
  7880. * @default 6
  7881. */
  7882. get solverIterations(): number
  7883. set solverIterations(v: number)
  7884. /**
  7885. * 设置*物理模拟*过程中计算碰撞后速度的迭代次数。
  7886. * 更高的迭代次数,会消耗更多性能,产生更准确的分离速度。
  7887. *
  7888. * @limit solverVelocityIterations > 0
  7889. * @default 1
  7890. */
  7891. get solverVelocityIterations(): number
  7892. set solverVelocityIterations(v: number)
  7893. /**
  7894. * 刚体的线性速度。
  7895. *
  7896. * \**修改这一项会造成速度突变,一般情况下可以使用{@link addForce}来代替。*
  7897. */
  7898. get velocity(): Vector3
  7899. set velocity(v: Vector3)
  7900. /**
  7901. * @internal
  7902. */
  7903. constructor()
  7904. applyData(data: IRigidbodyData): void
  7905. onTick(dateTime: number, data: IRigidbodyData): void
  7906. onAdd(parent: Element, data: IRigidbodyData): void
  7907. onUpdate(data: IRigidbodyData, preData: IRigidbodyData): void
  7908. onRemove(parent: Element, data: IRigidbodyData): void
  7909. onRelease(data: IRigidbodyData): void
  7910. enable(): void
  7911. disable(): void
  7912. /** @internal */
  7913. get nativeComp(): phys3D.DynamicRigidbody
  7914. /**
  7915. * @returns 刚体质心在世界坐标中的位置。
  7916. */
  7917. getWorldCenterOfMass(): Vector3
  7918. /**
  7919. * 为刚体施加力,会影响刚体的{@link velocity | 线性速度}。
  7920. * @param force 世界坐标下矢量形式的力,作用在物体质心上。
  7921. * @param mode 力的类型。
  7922. */
  7923. addForce(force: Vector3, mode: ForceMode): void
  7924. /**
  7925. * 为刚体施加力矩,会影响刚体的{@link angularVelocity | 角速度}。
  7926. * @param torque 世界坐标下矢量形式的力矩。
  7927. * @param mode 力矩的类型。
  7928. */
  7929. addTorque(torque: Vector3, mode: ForceMode): void
  7930. /**
  7931. * @returns 刚体是否处于休眠状态。
  7932. * @see {@link sleep}
  7933. */
  7934. isSleeping(): boolean
  7935. /**
  7936. * 强迫刚体进入休眠状态(至少一帧),休眠状态详见{@link //todo}。
  7937. * \**如果下一帧发生碰撞则会立刻醒来。*
  7938. */
  7939. sleep(): void
  7940. /**
  7941. * 强制唤醒刚体(离开休眠状态)。
  7942. * @see {@link sleep}
  7943. */
  7944. wakeUp(): void
  7945. /**
  7946. * 生成一次模拟爆炸的力。
  7947. * 爆炸范围可以视作一个球状物体,如果球体和刚体产生*相交*,则会在刚体上产生推力。
  7948. * 推力的大小和*相交点*与球心的距离有关,推力的方向从球心指向相交点,推力作用位于*相交点*。
  7949. *
  7950. * 视刚体有无附着的轮廓,分为两种情况:
  7951. * + 无轮廓(或爆炸球心在刚体轮廓内)
  7952. * 相交的判定使用刚体的质心;相交点也取刚体的质心。
  7953. * + 有轮廓
  7954. * 相交的判定使用刚体的所有轮廓;相交点取轮廓距离球心最近的那一点。
  7955. * @param explosionForce 爆炸力的大小。
  7956. * @param explosionPosition 爆炸球体的球心位置。
  7957. * @param explosionRadius 爆炸球体的半径。
  7958. * @param upwardsModifier 使用相对数值来修改推力的*作用位置*的y坐标。
  7959. * @param mode 力的类型。
  7960. * @limit explosionForce > 0
  7961. */
  7962. AddExplosionForce(
  7963. explosionForce: number,
  7964. explosionPosition: Vector3,
  7965. explosionRadius: number,
  7966. upwardsModifier: number,
  7967. mode: ForceMode
  7968. ): void
  7969. /**
  7970. * 为刚体施加力,会影响刚体的{@link velocity | 线性速度}和{@link angularVelocity | 角速度}。
  7971. * @param force 世界坐标下矢量形式的力,作用在position位置上。
  7972. * @param position 力的作用位置。
  7973. * @param mode 力的类型。
  7974. */
  7975. AddForceAtPosition(
  7976. force: Vector3,
  7977. position: Vector3,
  7978. mode: ForceMode
  7979. ): void
  7980. /**
  7981. * 为刚体施加力,会影响刚体的{@link velocity | 线性速度}。
  7982. * @param force **局部**坐标下矢量形式的力,作用在物体质心上。
  7983. * @param mode 力的类型。
  7984. */
  7985. addRelativeForce(force: Vector3, mode: ForceMode): void
  7986. /**
  7987. * 为刚体施加力矩,会影响刚体的{@link angularVelocity | 角速度}。
  7988. * @param torque **局部**坐标下矢量形式的力矩。
  7989. * @param mode 力矩的类型。
  7990. */
  7991. addRelativeTorque(torque: Vector3, mode: ForceMode): void
  7992. /**
  7993. * 测试刚体**表面上**距离某点最近的位置。
  7994. * 如果给予的position在刚体内部,会返回position。
  7995. * 如果刚体无附着的轮廓,会返回[Infinity, Infinity, Infinity]。
  7996. */
  7997. closestPointOnBounds(position: Vector3): Vector3
  7998. /**
  7999. * 获取刚体内某一点在世界坐标下的速度。
  8000. * @param worldPoint 世界坐标下的位置(其实在刚体外也可以)。
  8001. */
  8002. getPointVelocity(worldPoint: Vector3): Vector3
  8003. /**
  8004. * 获取刚体内某一点在**局部**坐标下的速度。
  8005. * @param relativePoint **局部**坐标下的位置(其实在刚体外也可以)。
  8006. */
  8007. getRelativePointVelocity(relativePoint: Vector3): Vector3
  8008. /**
  8009. * 对于***非**运动学刚体*来说,等于直接修改{@link position};
  8010. * 对于*运动学刚体*来说,位置变化会在下一帧生效。可以视作物体在这一帧的*物理模拟*中沿直线路径**移动**到了目的地。
  8011. * @param position 位移的终点
  8012. * @see {@link isKinematic}
  8013. */
  8014. movePosition(position: Vector3): void
  8015. /**
  8016. * @unimplemented 暂未支持,请使用{@link rotation}属性或{@link Transform3D.quaternion}代替。
  8017. */
  8018. moveRotation(rotation: Quaternion): void
  8019. /**
  8020. * 手动触发,根据刚体附着的轮廓重新计算刚体的质心。
  8021. * @see {@link centerOfMass}
  8022. */
  8023. resetCenterOfMass(): void
  8024. /**
  8025. * 手动触发,根据刚体附着的轮廓重新计算刚体的转动惯量。
  8026. * @see {@link inertiaTensor}
  8027. */
  8028. resetInertiaTensor(): void
  8029. /**
  8030. * 根据给定的密度和刚体附着的轮廓,来计算刚体的质量。
  8031. * @see {@link mass}
  8032. */
  8033. setDensity(density: number): void
  8034. }
  8035. }
  8036. declare module 'XrFrame/components/physics/ShapeInteract' {
  8037. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  8038. import Element from 'XrFrame/core/Element'
  8039. import { CombineMode } from 'XrFrame/components/physics/types'
  8040. export enum EShapeInteractType {
  8041. None = 0,
  8042. Overlap = 1,
  8043. Collide = 2
  8044. }
  8045. export interface IShapeInteractData {
  8046. /**
  8047. * 是否禁用Shape间交互。
  8048. *
  8049. * @default false
  8050. */
  8051. disabled?: boolean
  8052. /**
  8053. * 是否能与其他Shape发生物理碰撞。
  8054. *
  8055. * @default false
  8056. */
  8057. collide?: boolean
  8058. /**
  8059. * 弹性系数,决定碰撞时的能量损失比例。
  8060. *
  8061. * 弹性系数 = 1时,碰撞无能量损失。
  8062. * @limit 0 <= bounciness <= 1
  8063. * @default 0
  8064. */
  8065. bounciness?: number
  8066. /**
  8067. * 静摩擦系数
  8068. * @limit 0 <= staticFriction <= 1
  8069. * @default 0.6
  8070. */
  8071. staticFriction?: number
  8072. /**
  8073. * 动摩擦系数。
  8074. * @limit 0 <= dynamicFriction <= 1
  8075. * @default 0.6
  8076. */
  8077. dynamicFriction?: number
  8078. }
  8079. export const ShapeInteractSchema: {
  8080. disabled: {
  8081. type: string
  8082. }
  8083. collide: {
  8084. type: string
  8085. }
  8086. bounciness: {
  8087. type: string
  8088. }
  8089. staticFriction: {
  8090. type: string
  8091. }
  8092. dynamicFriction: {
  8093. type: string
  8094. }
  8095. }
  8096. /**
  8097. * 拥有ShapeInterace组件的Shape才能与其他Shape发生交互。
  8098. * 将`collide`属性设置为true来与其他Shape进行物理碰撞,仅当两个Shape的collide属性**都为true**时它们才能发生碰撞。
  8099. */
  8100. export default class ShapeInteract extends Component<IShapeInteractData> {
  8101. readonly schema: IComponentSchema
  8102. _disabled: boolean
  8103. _collide: boolean
  8104. get dynamicFriction(): number
  8105. set dynamicFriction(value)
  8106. /**
  8107. * 静摩擦系数
  8108. * @limit 0 <= staticFriction <= 1
  8109. * @default 0.6
  8110. */
  8111. get staticFriction(): number
  8112. set staticFriction(value)
  8113. /**
  8114. * 弹性系数,决定碰撞时的能量损失比例。
  8115. *
  8116. * 弹性系数 = 1时,碰撞无能量损失。
  8117. * @limit 0 <= bounciness <= 1
  8118. * @default 0
  8119. */
  8120. get bounciness(): number
  8121. set bounciness(value)
  8122. /**
  8123. * 如何结合发生碰撞的两个物体的摩擦系数。
  8124. * @default {@link CombineMode.Average}
  8125. */
  8126. get frictionCombine(): CombineMode
  8127. set frictionCombine(v: CombineMode)
  8128. /**
  8129. * 如何结合发生碰撞的两个物体的弹性系数。
  8130. * @default {@link CombineMode.Average}
  8131. */
  8132. get bounceCombine(): CombineMode
  8133. set bounceCombine(v: CombineMode)
  8134. constructor()
  8135. /**
  8136. * @internal
  8137. */
  8138. get material(): phys3D.Material
  8139. onAdd(parent: Element, data: IShapeInteractData): void
  8140. onUpdate(data: IShapeInteractData, preData: IShapeInteractData): void
  8141. getInteractType(): EShapeInteractType
  8142. }
  8143. }
  8144. declare module 'XrFrame/components/gizmo/ShapeGizmos' {
  8145. import Component from 'XrFrame/core/Component'
  8146. import Element from 'XrFrame/core/Element'
  8147. import CapsuleGizmo from 'XrFrame/components/gizmo/CapsuleGizmo'
  8148. import Shape, { ShapeImplType } from 'XrFrame/components/physics/Shape'
  8149. import CubeGizmo from 'XrFrame/components/gizmo/CubeGizmo'
  8150. /**
  8151. * @see {@link ShapeGizmos}
  8152. */
  8153. export interface IShapeGizmosData {}
  8154. export const ShapeGizmosSchema: {}
  8155. interface GizmoInfo {
  8156. shape: Shape<any>
  8157. gizmoCtor: null | typeof CubeGizmo | typeof CapsuleGizmo
  8158. shadowGizmos: ShapeGizmos[]
  8159. type: ShapeImplType
  8160. version: number
  8161. }
  8162. /**
  8163. * 将当前元素下的所有{@link Shape | 轮廓}都显示出来。
  8164. * 在标签上添加`shape-gizmo`属性来创建该组件。
  8165. *
  8166. * @see {@link IShapeGizmosData}
  8167. */
  8168. export default class ShapeGizmos extends Component<IShapeGizmosData> {
  8169. onAdd(parent: Element, data: IShapeGizmosData): void
  8170. onUpdate(data: IShapeGizmosData, preData: IShapeGizmosData): void
  8171. onTick(deltaTime: number, data: IShapeGizmosData): void
  8172. onRemove(parent: Element, data: IShapeGizmosData): void
  8173. onRelease(data: IShapeGizmosData): void
  8174. /**
  8175. * @internal
  8176. */
  8177. buildGizmo(info: GizmoInfo): void
  8178. }
  8179. export {}
  8180. }
  8181. declare module 'XrFrame/components/AssetPostProcess' {
  8182. /**
  8183. * AssetPostProcess.ts
  8184. *
  8185. * * @Date : 10/14/2022, 4:35:12 PM
  8186. */
  8187. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  8188. import Element from 'XrFrame/core/Element'
  8189. /**
  8190. * `AssetPostProcess`资源数据接口。
  8191. */
  8192. export interface IAssetPostProcessData {
  8193. /**
  8194. * 资源`id`。
  8195. */
  8196. assetId: string
  8197. /**
  8198. * 同{@link IPostProcessOptions.type}。
  8199. */
  8200. type: string
  8201. /**
  8202. * 同{@link IPostProcessOptions.isHDR}。
  8203. */
  8204. isHDR?: boolean
  8205. /**
  8206. * 同{@link IPostProcessOptions.data}。
  8207. */
  8208. data?: {
  8209. [key: string]: string
  8210. }
  8211. }
  8212. /**
  8213. * {@link AssetPostProcess}的`schema`,详见{@link IAssetPostProcessData}。
  8214. */
  8215. export const AssetPostProcessSchema: IComponentSchema
  8216. /**
  8217. * 渲染纹理创建组件,用于在`xml`中创建{@link PostProcess}资源,一般被代理到{@link XRAssetPostProcess}元素。
  8218. */
  8219. export default class AssetPostProcess extends Component<IAssetPostProcessData> {
  8220. /**
  8221. * 详见{@link AssetPostProcessSchema}。
  8222. */
  8223. readonly schema: IComponentSchema
  8224. /**
  8225. * 对应后处理资源的数据,可用于修改。
  8226. */
  8227. get assetData(): {
  8228. [key: string]: any
  8229. }
  8230. onAdd(parent: Element, data: IAssetPostProcessData): void
  8231. onUpdate(
  8232. data: IAssetPostProcessData,
  8233. preData: IAssetPostProcessData
  8234. ): void
  8235. /**
  8236. * 移除AssetPostProcess。
  8237. */
  8238. onRemove(parent: Element, data: IAssetPostProcessData): void
  8239. }
  8240. }
  8241. declare module 'XrFrame/elements/xr-node' {
  8242. /**
  8243. * xr-node.ts
  8244. *
  8245. * * @Date : 2022/3/18下午2:15:02
  8246. */
  8247. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8248. /**
  8249. * 默认包含{@link Transform}组件。
  8250. */
  8251. export const NodeDefaultComponents: IEntityComponents
  8252. /**
  8253. * 默认将{@link Transform}组件的属性进行映射。
  8254. */
  8255. export const NodeDataMapping: {
  8256. 'node-id': string[]
  8257. visible: string[]
  8258. layer: string[]
  8259. position: string[]
  8260. rotation: string[]
  8261. scale: string[]
  8262. } & {
  8263. [key: string]: string[]
  8264. }
  8265. /**
  8266. * 标签为`xr-node`,场景中所有3D节点的基础。
  8267. *
  8268. * 默认组件见{@link NodeDefaultComponents},属性映射见{@link NodeDataMapping}。
  8269. */
  8270. export default class XRNode extends Element {
  8271. static IS(element: Element): element is XRNode
  8272. readonly defaultComponents: IEntityComponents
  8273. readonly dataMapping: {
  8274. [key: string]: string[]
  8275. }
  8276. readonly isXRNode: boolean
  8277. }
  8278. }
  8279. declare module 'XrFrame/elements/xr-shadow' {
  8280. /**
  8281. * xr-shadow.ts
  8282. *
  8283. * * @Date : 6/14/2022, 3:59:17 PM
  8284. */
  8285. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8286. /**
  8287. * 默认包含{@link XRNode}的所有默认组件。
  8288. */
  8289. export const ShadowDefaultComponents: IEntityComponents
  8290. /**
  8291. * 默认包含{@link XRNode}的所有属性映射。
  8292. */
  8293. export const ShadowDataMapping: {
  8294. 'node-id': string[]
  8295. visible: string[]
  8296. layer: string[]
  8297. position: string[]
  8298. rotation: string[]
  8299. scale: string[]
  8300. } & {
  8301. [key: string]: string[]
  8302. }
  8303. /**
  8304. * 标签为`xr-shadow`。
  8305. * 是一种特殊的节点,开发者**仅可在其下以及子孙挂载自己创建的节点**!
  8306. *
  8307. * 默认组件见{@link ShadowDefaultComponents},属性映射见{@link ShadowDataMapping}。
  8308. */
  8309. export default class XRShadow extends Element {
  8310. readonly defaultComponents: IEntityComponents
  8311. readonly dataMapping: {
  8312. [key: string]: string[]
  8313. }
  8314. _appendChild(_child: Element, custom?: boolean): void
  8315. _removeChild(_child: Element, _index?: number, custom?: boolean): void
  8316. _insertBefore(_child: Element, _before?: Element, _index?: number): void
  8317. _replaceChild(
  8318. _child: Element,
  8319. _oldChild?: Element,
  8320. _index?: number
  8321. ): void
  8322. _spliceBefore(
  8323. _before: number | Element,
  8324. _deleteCount: number,
  8325. _list: Element
  8326. ): void
  8327. _spliceAppend(_list: Element): void
  8328. _spliceRemove(_before: Element, _deleteCount: number): void
  8329. }
  8330. }
  8331. declare module 'XrFrame/elements/xr-camera' {
  8332. /**
  8333. * xr-camera.ts
  8334. *
  8335. * * @Date : 2022/3/29下午5:03:57
  8336. */
  8337. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8338. /**
  8339. * 默认包含{@link XRNode}的所有默认组件,以及{@link Camera}组件。
  8340. */
  8341. export const CameraDefaultComponents: IEntityComponents
  8342. /**
  8343. * 默认包含{@link XRNode}的所有属性映射,以及将{@link Camera}组件的属性进行映射。
  8344. */
  8345. export const CameraDataMapping: {
  8346. target: string[]
  8347. 'render-target': string[]
  8348. 'is-perspective': string[]
  8349. 'cull-mask': string[]
  8350. depth: string[]
  8351. fov: string[]
  8352. near: string[]
  8353. far: string[]
  8354. 'orth-size': string[]
  8355. background: string[]
  8356. 'is-ar-camera': string[]
  8357. 'is-clear-depth': string[]
  8358. 'is-clear-stencil': string[]
  8359. 'is-clear-color': string[]
  8360. 'clear-depth': string[]
  8361. 'clear-stencil': string[]
  8362. 'clear-color': string[]
  8363. 'post-process': string[]
  8364. 'allow-features': string[]
  8365. } & {
  8366. 'node-id': string[]
  8367. visible: string[]
  8368. layer: string[]
  8369. position: string[]
  8370. rotation: string[]
  8371. scale: string[]
  8372. } & {
  8373. [key: string]: string[]
  8374. }
  8375. /**
  8376. * 标签为`xr-camera`。
  8377. *
  8378. * 默认组件见{@link CameraDefaultComponents},属性映射见{@link CameraDataMapping}。
  8379. */
  8380. export default class XRCamera extends Element {
  8381. readonly defaultComponents: IEntityComponents
  8382. readonly dataMapping: {
  8383. [key: string]: string[]
  8384. }
  8385. }
  8386. }
  8387. declare module 'XrFrame/elements/xr-mesh' {
  8388. /**
  8389. * xr-mesh.ts
  8390. *
  8391. * * @Date : 2022/3/29下午5:05:49
  8392. */
  8393. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8394. /**
  8395. * 默认包含{@link XRNode}的所有默认组件,以及{@link Mesh}组件。
  8396. */
  8397. export const MeshDefaultComponents: IEntityComponents
  8398. /**
  8399. * 默认包含{@link XRNode}的所有属性映射,以及将{@link Mesh}组件的属性进行映射。
  8400. */
  8401. export const MeshDataMapping: {
  8402. 'never-cull': string[]
  8403. 'cast-shadow': string[]
  8404. 'receive-shadow': string[]
  8405. geometry: string[]
  8406. material: string[]
  8407. uniforms: string[]
  8408. states: string[]
  8409. 'env-data': string[]
  8410. } & {
  8411. 'node-id': string[]
  8412. visible: string[]
  8413. layer: string[]
  8414. position: string[]
  8415. rotation: string[]
  8416. scale: string[]
  8417. } & {
  8418. [key: string]: string[]
  8419. }
  8420. /**
  8421. * 标签为`xr-mesh`。
  8422. *
  8423. * 默认组件见{@link MeshDefaultComponents},属性映射见{@link MeshDataMapping}。
  8424. */
  8425. export default class XRMesh extends Element {
  8426. readonly defaultComponents: IEntityComponents
  8427. readonly dataMapping: {
  8428. [key: string]: string[]
  8429. }
  8430. }
  8431. }
  8432. declare module 'XrFrame/elements/xr-light' {
  8433. /**
  8434. * xr-light.ts
  8435. *
  8436. * * @Date : 4/12/2022, 10:37:57 AM
  8437. */
  8438. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8439. /**
  8440. * 默认包含{@link XRNode}的所有默认组件,以及{@link Light}组件。
  8441. */
  8442. export const LightDefaultComponents: IEntityComponents
  8443. /**
  8444. * 默认包含{@link XRNode}的所有属性映射,以及将{@link Light}组件的属性进行映射。
  8445. */
  8446. export const LightDataMapping: {
  8447. type: string[]
  8448. 'cast-shadow': string[]
  8449. 'shadow-distance': string[]
  8450. 'shadow-strength': string[]
  8451. 'shadow-bias': string[]
  8452. color: string[]
  8453. intensity: string[]
  8454. range: string[]
  8455. 'inner-cone-angle': string[]
  8456. 'outer-cone-angle': string[]
  8457. } & {
  8458. 'node-id': string[]
  8459. visible: string[]
  8460. layer: string[]
  8461. position: string[]
  8462. rotation: string[]
  8463. scale: string[]
  8464. } & {
  8465. [key: string]: string[]
  8466. }
  8467. /**
  8468. * 标签为`xr-ar-tracker`。
  8469. *
  8470. * 默认组件见{@link LightDefaultComponents},属性映射见{@link LightDataMapping}。
  8471. */
  8472. export default class XRLight extends Element {
  8473. readonly defaultComponents: IEntityComponents
  8474. readonly dataMapping: {
  8475. [key: string]: string[]
  8476. }
  8477. }
  8478. }
  8479. declare module 'XrFrame/elements/xr-gltf' {
  8480. import { IEntityComponents } from 'XrFrame/core/Element'
  8481. import XRShadow from 'XrFrame/elements/xr-shadow'
  8482. /**
  8483. * 默认包含{@link XRNode}的所有默认组件,以及{@link GLTF}组件。
  8484. */
  8485. export const GLTFDefaultComponents: IEntityComponents
  8486. /**
  8487. * 默认包含{@link XRNode}的所有属性映射,以及将{@link GLTF}组件的属性进行映射。
  8488. *
  8489. * + model → {@link IGLTFComponentData.model}
  8490. * + cast-shadow → {@link IGLTFComponentData.castShadow}
  8491. * + receive-shadow → {@link IGLTFComponentData.receiveShadow}
  8492. *
  8493. */
  8494. export const GLTFDataMapping: {
  8495. model: string[]
  8496. 'cast-shadow': string[]
  8497. 'receive-shadow': string[]
  8498. 'never-cull': string[]
  8499. states: string[]
  8500. } & {
  8501. 'node-id': string[]
  8502. visible: string[]
  8503. layer: string[]
  8504. position: string[]
  8505. rotation: string[]
  8506. scale: string[]
  8507. } & {
  8508. [key: string]: string[]
  8509. }
  8510. /**
  8511. * 标签为`xr-gltf`。
  8512. * 不能在这个标签内放置子标签。
  8513. *
  8514. * 默认组件见{@link GLTFDefaultComponents},属性映射见{@link GLTFDataMapping}。
  8515. */
  8516. export default class XRGLTF extends XRShadow {
  8517. readonly defaultComponents: IEntityComponents
  8518. readonly dataMapping: {
  8519. [key: string]: string[]
  8520. }
  8521. }
  8522. }
  8523. declare module 'XrFrame/elements/xr-asset-material' {
  8524. /**
  8525. * xr-asset-material.ts
  8526. *
  8527. * * @Date : 2022/3/18下午5:27:37
  8528. */
  8529. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8530. export const AssetMaterialDefaultComponents: IEntityComponents
  8531. /**
  8532. * 将{@link AssetMaterial}的属性进行映射。
  8533. */
  8534. export const AssetMaterialDataMapping: {
  8535. 'asset-id': string[]
  8536. effect: string[]
  8537. marcos: string[]
  8538. uniforms: string[]
  8539. states: string[]
  8540. 'render-queue': string[]
  8541. 'env-data': string[]
  8542. } & {
  8543. [key: string]: string[]
  8544. }
  8545. /**
  8546. * 标签为`xr-asset-material`。
  8547. *
  8548. * 默认组件见{@link AssetMaterialDefaultComponents},属性映射见{@link AssetMaterialDataMapping}。
  8549. */
  8550. export default class XRAssetMaterial extends Element {
  8551. readonly defaultComponents: IEntityComponents
  8552. readonly dataMapping: {
  8553. [key: string]: string[]
  8554. }
  8555. }
  8556. }
  8557. declare module 'XrFrame/elements/xr-asset-render-texture' {
  8558. /**
  8559. * xr-asset-render-texture.ts
  8560. *
  8561. * * @Date : 8/29/2022, 12:51:29 PM
  8562. */
  8563. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8564. export const AssetRenderTextureDefaultComponents: IEntityComponents
  8565. /**
  8566. * 将{@link AssetRenderTexture}的属性进行映射。
  8567. */
  8568. export const AssetRenderTextureDataMapping: {
  8569. 'asset-id': string[]
  8570. width: string[]
  8571. height: string[]
  8572. 'is-hdr': string[]
  8573. } & {
  8574. [key: string]: string[]
  8575. }
  8576. /**
  8577. * 标签为`xr-asset-render-texture`。
  8578. *
  8579. * 默认组件见{@link AssetRenderTextureDefaultComponents},属性映射见{@link AssetRenderTextureDataMapping}。
  8580. */
  8581. export default class XRAssetRenderTexture extends Element {
  8582. readonly defaultComponents: IEntityComponents
  8583. readonly dataMapping: {
  8584. [key: string]: string[]
  8585. }
  8586. }
  8587. }
  8588. declare module 'XrFrame/elements/xr-asset-load' {
  8589. /**
  8590. * xr-asset-load.ts
  8591. *
  8592. * * @Date : 2022/3/16下午5:29:40
  8593. */
  8594. import Element from 'XrFrame/core/Element'
  8595. /**
  8596. * 将{@link AssetLoad}组件的属性进行映射。
  8597. */
  8598. export const AssetLoadDataMapping: {
  8599. type: string[]
  8600. 'asset-id': string[]
  8601. src: string[]
  8602. defer: string[]
  8603. options: string[]
  8604. } & {
  8605. [key: string]: string[]
  8606. }
  8607. /**
  8608. * 标签为`xr-asset-load`。
  8609. *
  8610. * 属性映射见{@link AssetLoadDataMapping}。
  8611. */
  8612. export default class XRAssetLoad extends Element {
  8613. readonly dataMapping: {
  8614. [key: string]: string[]
  8615. }
  8616. readonly neverTick: boolean
  8617. }
  8618. }
  8619. declare module 'XrFrame/elements/xr-assets' {
  8620. /**
  8621. * xr-assets.ts
  8622. *
  8623. * * @Date : 2022/3/16下午5:28:52
  8624. */
  8625. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8626. /**
  8627. * 默认包含{@link Assets}组件。
  8628. */
  8629. export const AssetsDefaultComponents: IEntityComponents
  8630. /**
  8631. * 标签为`xr-assets`。
  8632. *
  8633. * 默认组件见{@link AssetsDefaultComponents}。
  8634. */
  8635. export default class XRAssets extends Element {
  8636. readonly defaultComponents: IEntityComponents
  8637. readonly neverTick: boolean
  8638. }
  8639. }
  8640. declare module 'XrFrame/elements/xr-env' {
  8641. /**
  8642. * xr-env.ts
  8643. *
  8644. * * @Date : 5/12/2022, 12:56:19 PM
  8645. */
  8646. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8647. /**
  8648. * 默认包含{@link Env}组件。
  8649. */
  8650. export const EnvDefaultComponents: IEntityComponents
  8651. /**
  8652. * 默认将{@link Env}组件的属性进行映射。
  8653. */
  8654. export const EnvDataMapping: {
  8655. 'env-data': string[]
  8656. 'sky-map': string[]
  8657. 'is-sky2d': string[]
  8658. rotation: string[]
  8659. 'diffuse-exp': string[]
  8660. 'specular-exp': string[]
  8661. } & {
  8662. [key: string]: string[]
  8663. }
  8664. /**
  8665. * 标签为`xr-env`。
  8666. *
  8667. * 默认组件见{@link EnvDefaultComponents},属性映射见{@link EnvDataMapping}。
  8668. */
  8669. export default class XREnv extends Element {
  8670. readonly defaultComponents: IEntityComponents
  8671. readonly dataMapping: {
  8672. [key: string]: string[]
  8673. }
  8674. readonly neverTick: boolean
  8675. }
  8676. }
  8677. declare module 'XrFrame/elements/xr-ar-tracker' {
  8678. /**
  8679. * xr-ar-tracker.ts
  8680. *
  8681. * * @Date : 6/27/2022, 3:42:45 PM
  8682. */
  8683. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8684. /**
  8685. * 默认包含{@link XRNode}的所有默认组件,以及{@link ARTracker}组件。
  8686. */
  8687. export const ARTrackerDefaultComponents: IEntityComponents
  8688. /**
  8689. * 默认包含{@link XRNode}的所有属性映射,以及将{@link ARTracker}组件的属性进行映射。
  8690. */
  8691. export const ARTrackerDataMapping: {
  8692. mode: string[]
  8693. 'hit-id': string[]
  8694. image: string[]
  8695. src: string[]
  8696. 'auto-sync': string[]
  8697. } & {
  8698. 'node-id': string[]
  8699. visible: string[]
  8700. layer: string[]
  8701. position: string[]
  8702. rotation: string[]
  8703. scale: string[]
  8704. } & {
  8705. [key: string]: string[]
  8706. }
  8707. /**
  8708. * 标签为`xr-ar-tracker`。
  8709. *
  8710. * 默认组件见{@link ARTrackerDefaultComponents},属性映射见{@link ARTrackerDataMapping}。
  8711. */
  8712. export default class XRARTracker extends Element {
  8713. readonly defaultComponents: IEntityComponents
  8714. readonly dataMapping: {
  8715. [key: string]: string[]
  8716. }
  8717. }
  8718. }
  8719. declare module 'XrFrame/elements/xr-text' {
  8720. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8721. export const TextDefaultComponents: IEntityComponents
  8722. export const TextDataMapping: {
  8723. [key: string]: string[]
  8724. }
  8725. export default class XRText extends Element {
  8726. readonly defaultComponents: IEntityComponents
  8727. readonly dataMapping: {
  8728. [key: string]: string[]
  8729. }
  8730. }
  8731. }
  8732. declare module 'XrFrame/elements/xr-particle' {
  8733. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8734. export const ParticleDefaultComponents: IEntityComponents
  8735. export const ParticleDataMapping: {
  8736. [key: string]: string[]
  8737. }
  8738. export default class XRParticle extends Element {
  8739. readonly defaultComponents: IEntityComponents
  8740. readonly dataMapping: {
  8741. [key: string]: string[]
  8742. }
  8743. }
  8744. }
  8745. declare module 'XrFrame/elements/xr-asset-post-process' {
  8746. /**
  8747. * xr-asset-post-process.ts
  8748. *
  8749. * * @Date : 10/14/2022, 5:18:21 PM
  8750. */
  8751. import Element, { IEntityComponents } from 'XrFrame/core/Element'
  8752. export const AssetPostProcessDefaultComponents: IEntityComponents
  8753. /**
  8754. * 将{@link AssetPostProcess}的属性进行映射。
  8755. */
  8756. export const AssetPostProcessDataMapping: {
  8757. 'asset-id': string[]
  8758. type: string[]
  8759. 'is-hdr': string[]
  8760. data: string[]
  8761. } & {
  8762. [key: string]: string[]
  8763. }
  8764. /**
  8765. * 标签为`xr-asset-render-texture`。
  8766. *
  8767. * 默认组件见{@link AssetPostProcessDefaultComponents},属性映射见{@link AssetPostProcessDataMapping}。
  8768. */
  8769. export default class XRAssetPostProcess extends Element {
  8770. readonly defaultComponents: IEntityComponents
  8771. readonly dataMapping: {
  8772. [key: string]: string[]
  8773. }
  8774. }
  8775. }
  8776. declare module 'XrFrame/systems/AssetsSystem' {
  8777. import Component from 'XrFrame/core/Component'
  8778. import Element from 'XrFrame/core/Element'
  8779. import { IAssetLoadData, IAssetWithState } from 'XrFrame/loader/types'
  8780. export interface IAssetsSystemData {}
  8781. /**
  8782. * 资源系统,负责整个场景的资源管理。
  8783. *
  8784. * 一般不需要手动管理,而是利用{@link AssetLoad}、{@link registerGeometry}之类的使用。
  8785. */
  8786. export default class AssetsSystem extends Component<IAssetsSystemData> {
  8787. readonly priority: number
  8788. /**
  8789. * 手动添加一个资源。
  8790. */
  8791. addAsset<T>(type: string, id: string, asset: T): void
  8792. /**
  8793. * 手动加载一个资源。
  8794. */
  8795. loadAsset(
  8796. params: IAssetLoadData,
  8797. parent?: Element
  8798. ): Promise<IAssetWithState<any>>
  8799. /**
  8800. * 手动释放一个资源。
  8801. *
  8802. * 注意在`xml`里加载的资源不要手动释放。
  8803. */
  8804. releaseAsset(type: string, id: string): void
  8805. /**
  8806. * 获取一个资源,如果尚未加载完成,也会返回`undefined`。
  8807. */
  8808. getAsset<T>(type: string, id: string, fallback?: string): T
  8809. /**
  8810. * 获取一个资源以及加载状态。
  8811. */
  8812. getAssetWithState<T>(
  8813. type: string,
  8814. id: string,
  8815. fallback?: string
  8816. ): IAssetWithState<T>
  8817. /**
  8818. * 取消加载一个资源。
  8819. */
  8820. cancelAsset(type: string, id: string): void
  8821. /**
  8822. * @internal
  8823. */
  8824. /**
  8825. * @internal
  8826. */
  8827. onRelease(data: IAssetsSystemData): void
  8828. }
  8829. }
  8830. declare module 'XrFrame/systems/NodeSystem' {
  8831. import Component from 'XrFrame/core/Component'
  8832. export interface INodeSystemData {}
  8833. /**
  8834. * 节点系统,负责整个场景节点的管理。
  8835. */
  8836. export default class NodeSystem extends Component<INodeSystemData> {
  8837. readonly priority: number
  8838. onTick(deltaTime: number, data: INodeSystemData): void
  8839. }
  8840. }
  8841. declare module 'XrFrame/systems/TickSystem' {
  8842. /**
  8843. * TickSystem.ts
  8844. *
  8845. * * @Date : 2022/3/29上午10:50:57
  8846. */
  8847. import Component from 'XrFrame/core/Component'
  8848. export interface ITickSystemData {}
  8849. /**
  8850. * Tick系统,负责整个场景生命周期的驱动。
  8851. */
  8852. export default class TickSystem extends Component<ITickSystemData> {
  8853. readonly priority: number
  8854. onTick(deltaTime: number, data: ITickSystemData): void
  8855. }
  8856. }
  8857. declare module 'XrFrame/systems/AnimationSystem' {
  8858. /**
  8859. * AnimationSystem.ts
  8860. *
  8861. * * @Date : 6/17/2022, 2:35:17 PM
  8862. */
  8863. import Animator from 'XrFrame/components/Animator'
  8864. import Component from 'XrFrame/core/Component'
  8865. export interface IAnimationSystemData {}
  8866. /**
  8867. * 动画系统,负责整个场景动画的管理。
  8868. */
  8869. export default class AnimationSystem extends Component<IAnimationSystemData> {
  8870. readonly priority: number
  8871. onTick(deltaTime: number, data: IAnimationSystemData): void
  8872. /**
  8873. * @internal
  8874. */
  8875. /**
  8876. * @internal
  8877. */
  8878. }
  8879. }
  8880. declare module 'XrFrame/systems/VideoSystem' {
  8881. /**
  8882. * VideoSystem.ts
  8883. *
  8884. * * @Date : 8/26/2022, 8:02:21 PM
  8885. */
  8886. import VideoTexture from 'XrFrame/assets/VideoTexture'
  8887. import Component from 'XrFrame/core/Component'
  8888. import { Element } from 'XrFrame/xrFrameSystem'
  8889. export interface IVideoSystemData {}
  8890. /**
  8891. * 视频系统,负责整个场景视频的管理。
  8892. */
  8893. export default class VideoSystem extends Component<IVideoSystemData> {
  8894. readonly priority: number
  8895. onAdd(parent: Element, data: IVideoSystemData): void
  8896. onTick(deltaTime: number, data: IVideoSystemData): void
  8897. onRelease(data: IVideoSystemData): void
  8898. /**
  8899. * @internal
  8900. */
  8901. /**
  8902. * @internal
  8903. */
  8904. }
  8905. }
  8906. declare module 'XrFrame/systems/RenderSystem' {
  8907. /**
  8908. * RenderSystem.ts
  8909. *
  8910. * * @Date : 2022/3/16下午4:20:58
  8911. */
  8912. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  8913. import Element from 'XrFrame/core/Element'
  8914. import Camera from 'XrFrame/components/Camera'
  8915. import Env from 'XrFrame/components/Env'
  8916. import RenderGraph from 'XrFrame/render-graph/RenderGraph'
  8917. import LightManager from 'XrFrame/systems/LightManager'
  8918. import Observable from 'XrFrame/core/Observable'
  8919. /**
  8920. * `RenderSystem`系统数据接口。
  8921. */
  8922. export interface IRenderSystemData {
  8923. /**
  8924. * 是否支持画布输出透明通道,并且能够和背景混合。
  8925. * `xml`中数据类型为`boolean`。
  8926. */
  8927. alpha: boolean
  8928. /**
  8929. * 场景中阴影的颜色。
  8930. * `xml`中数据类型为`color`。
  8931. */
  8932. shadowColor: number[]
  8933. }
  8934. /**
  8935. * {@link RenderSystem}的`schema`,详见{@link IRenderSystemData}。
  8936. */
  8937. export const RenderSystemSchema: IComponentSchema
  8938. /**
  8939. * 渲染系统,负责整个场景渲染的管理。
  8940. */
  8941. export default class RenderSystem extends Component<IRenderSystemData> {
  8942. readonly priority: number
  8943. /**
  8944. * 详见{@link RenderSystemSchema}。
  8945. */
  8946. readonly schema: IComponentSchema
  8947. protected _lights: LightManager
  8948. protected _renderGraph?: RenderGraph
  8949. protected _sortedCameras: Camera[]
  8950. protected _dirtyCameras: Camera[]
  8951. protected _features: {
  8952. [key: string]: boolean | number | string
  8953. }
  8954. protected _dirtyFeatures: {
  8955. [key: string]: boolean | number | string
  8956. }
  8957. protected _camerasChangeEvent: Observable<this>
  8958. protected _env: Env
  8959. /**
  8960. * @internal
  8961. */
  8962. get lights(): LightManager
  8963. /**
  8964. * @internal
  8965. */
  8966. get env(): Env
  8967. /**
  8968. * @internal
  8969. */
  8970. get camerasChangeEvent(): Observable<this, any>
  8971. /**
  8972. * 获取场景中的所有相机,已按照深度排序。
  8973. *
  8974. * @internal
  8975. */
  8976. get cameras(): Camera[]
  8977. /**
  8978. * 获取场景中的所有当帧修改过的相机,已按照深度排序。
  8979. *
  8980. * @internal
  8981. */
  8982. get changedCameras(): Camera[]
  8983. /**
  8984. * 当前正在使用的RenderGraph。
  8985. */
  8986. get renderGraph(): RenderGraph<any>
  8987. get shadowColor(): number[]
  8988. /**
  8989. * 修改全局宏信息。
  8990. */
  8991. changeMacros(macros: {
  8992. [name: string]: string | number | boolean
  8993. }): void
  8994. /**
  8995. * 获取全局宏信息。
  8996. */
  8997. getMacro(key: string): string | number | boolean
  8998. /**
  8999. * 修改全局渲染特性。
  9000. */
  9001. changeFeatures(features: {
  9002. [key: string]: string | number | boolean
  9003. }): void
  9004. /**
  9005. * 获取全局渲染特性。
  9006. */
  9007. getFeature(key: string): boolean | number | string
  9008. onAdd(parent: Element, data: IRenderSystemData): void
  9009. onTick(): void
  9010. onRelease(data: IRenderSystemData): void
  9011. /**
  9012. * 使用某个RenderGraph,默认会使用内置的`ForwardBaseRG`。
  9013. */
  9014. useRenderGraph(rg: RenderGraph): void
  9015. /**
  9016. * 开启全局GPU实例化。
  9017. */
  9018. enableInstance(): void
  9019. /**
  9020. * 关闭全局GPU实例化。
  9021. */
  9022. disableInstance(): void
  9023. /**
  9024. * @internal
  9025. */
  9026. /**
  9027. * @internal
  9028. */
  9029. /**
  9030. * @internal
  9031. */
  9032. protected _sortCameras(): void
  9033. }
  9034. }
  9035. declare module 'XrFrame/systems/PhysicsSystem' {
  9036. import { Camera } from 'XrFrame/components'
  9037. import Component from 'XrFrame/core/Component'
  9038. import { Kanata } from 'XrFrame/ext'
  9039. import Vector3 from 'XrFrame/math/vector3'
  9040. import { RaycastDesc } from 'XrFrame/physics/raycast'
  9041. import Element from 'XrFrame/core/Element'
  9042. import Shape from 'XrFrame/components/physics/Shape'
  9043. /**
  9044. * `touch-shape`和`untouch-shape`事件的回调参数。
  9045. */
  9046. export interface IShapeTouchEvent {
  9047. /**
  9048. * 渲染*被选中的{@link Shape | 轮廓}*的相机。
  9049. */
  9050. camera: Camera
  9051. /**
  9052. * *被选中的{@link Shape | 轮廓}*所在的元素。
  9053. */
  9054. target: Element
  9055. /**
  9056. * 被选中的{@link Shape | 轮廓}。
  9057. */
  9058. shape: Shape
  9059. /**
  9060. * 点击位置在二维canvas中的x坐标。
  9061. */
  9062. x: number
  9063. /**
  9064. * 点击位置在二维canvas中的y坐标。
  9065. */
  9066. y: number
  9067. /**
  9068. * {@link camera}在三维场景中的位置。
  9069. */
  9070. origin: [number, number, number]
  9071. /**
  9072. * 从{@link camera}投射出的射线的单位向量。
  9073. */
  9074. dir: [number, number, number]
  9075. /**
  9076. * @unimplemented
  9077. */
  9078. force: number
  9079. }
  9080. /**
  9081. * `drag-shape`事件的回调参数。
  9082. */
  9083. export interface IShapeDragEvent extends IShapeTouchEvent {
  9084. /**
  9085. * 点击位置在二维canvas中的x坐标的变化量。
  9086. */
  9087. deltaX: number
  9088. /**
  9089. * 点击位置在二维canvas中的y坐标的变化量。
  9090. */
  9091. deltaY: number
  9092. }
  9093. /**
  9094. * @see {@link PhysicsSystem}
  9095. */
  9096. export interface IPhysicsSystemData {}
  9097. /**
  9098. * 物理系统,管理着场景中的所有{@link Shape | 轮廓}和{@link Rigidbody | 刚体}。
  9099. */
  9100. export default class PhysicsSystem extends Component<IPhysicsSystemData> {
  9101. /**
  9102. * @internal
  9103. */
  9104. nativeSystem: phys3D.PhysSystem
  9105. /**
  9106. * 是否进行物理模拟。
  9107. */
  9108. enableSimulation: boolean
  9109. constructor()
  9110. /** @internal */
  9111. addShape(shape: Shape): void
  9112. /** @internal */
  9113. removeShape(shape: Shape): void
  9114. onAdd(): void
  9115. maxPhysicsDeltaTime: number
  9116. fixedDeltaTime: number
  9117. /**
  9118. * @internal
  9119. */
  9120. onTick(dt: number, data: IPhysicsSystemData): void
  9121. /**
  9122. * @internal
  9123. */
  9124. bindRigidbodyWithEntity(
  9125. rigidbody: phys3D.Rigidbody,
  9126. entity: Kanata.Entity3D
  9127. ): void
  9128. /**
  9129. * @internal
  9130. */
  9131. unbindRigidbody(rigidbody: phys3D.Rigidbody): void
  9132. /**
  9133. * 射线检测,判断给定射线是否与至少一个轮廓相交,并返回与**最近**的那个轮廓相交的信息。
  9134. * 返回的信息记录在desc.hit里,需要事先创建一个RaycastHit对象来负责接收。
  9135. */
  9136. raycast(desc: RaycastDesc): boolean
  9137. /**
  9138. * 全局重力。
  9139. * @default [0, -9.8, 0]
  9140. */
  9141. get gravity(): Vector3
  9142. set gravity(v: Vector3)
  9143. /**
  9144. * 设置碰撞矩阵。
  9145. * @param str 用于表达碰撞矩阵的字符串
  9146. * @internal
  9147. */
  9148. setCollisionMatrix(str: string): void
  9149. /**
  9150. * 设定某一对layer之间是否会发生碰撞。
  9151. * @param ignore `true`表示**不**碰撞。
  9152. */
  9153. ignoreLayerCollision(
  9154. layer1: number,
  9155. layer2: number,
  9156. ignore?: boolean
  9157. ): void
  9158. }
  9159. }
  9160. declare module 'XrFrame/systems/ARSystem' {
  9161. import { Camera, Mesh } from 'XrFrame/components'
  9162. import ARTracker, { TTrackMode } from 'XrFrame/components/ARTracker'
  9163. import Component, { IComponentSchema } from 'XrFrame/core/Component'
  9164. import Matrix4 from 'XrFrame/math/matrix4'
  9165. import Vector3 from 'XrFrame/math/vector3'
  9166. type Element = import('XrFrame/core/Element').default
  9167. /**
  9168. * AR追踪原始数据。
  9169. */
  9170. export interface IARRawData {
  9171. /**
  9172. * 该帧生成时间,单位是纳秒(ns)。
  9173. * 在版本`v2.30.1`之后支持。
  9174. */
  9175. timestamp: number
  9176. /**
  9177. * 当前相机帧画面宽度。
  9178. */
  9179. width: number
  9180. /**
  9181. * 当前相机帧画面高度。
  9182. */
  9183. height: number
  9184. /**
  9185. * 当前相机帧画面`y`通道,yuv420。
  9186. */
  9187. yBuffer: ArrayBuffer
  9188. /**
  9189. * 当前相机帧画面`uv`通道,yuv420。
  9190. */
  9191. uvBuffer: ArrayBuffer
  9192. /**
  9193. * 当前相机帧内参矩阵。
  9194. */
  9195. intrinsics: Float32Array
  9196. /**
  9197. * 当前相机帧视图矩阵。
  9198. */
  9199. viewMatrix: Float32Array
  9200. }
  9201. /**
  9202. * `ARSystem`系统数据接口。
  9203. */
  9204. export interface IARSystemData {
  9205. /**
  9206. * 系统支持的追踪模式,目前仅支持一个!
  9207. * `xml`中数据类型为`array`,默认值为`Plane`。
  9208. */
  9209. modes: TTrackMode[]
  9210. /**
  9211. * 使用前置还是后置相机,默认后置`Back`。
  9212. */
  9213. camera?: 'Front' | 'Back'
  9214. /**
  9215. * 在支持的情况下,是否开启实时深度遮挡。
  9216. * **目前暂时不可用!**
  9217. */
  9218. depthMask?: boolean
  9219. /**
  9220. * 开启实时深度遮挡时,遮挡的近处阈值。
  9221. * 值是空间实际尺度(m),默认为`0.02`。
  9222. */
  9223. depthNear?: number
  9224. /**
  9225. * 开启实时深度遮挡时,遮挡的远处阈值。
  9226. * 值是空间实际尺度(m),默认为`20`。
  9227. */
  9228. depthFar?: number
  9229. /**
  9230. * 开启实时深度遮挡时,显示一个用于Debug的图层。
  9231. * **目前暂时不可用!**
  9232. */
  9233. depthDebug?: boolean
  9234. /**
  9235. * 在`v2`平面模式下,平面检测模式。
  9236. * `1`为水平面,`2`为垂直平面,`3`为两个都支持。
  9237. * 默认为`3`。
  9238. */
  9239. planeMode?: number
  9240. /**
  9241. * 在`Face`/`Body`/`Hand`模式下,使用原生的AI3D推理估计。
  9242. * 默认为`false`。
  9243. * **目前暂时不可用!**
  9244. */
  9245. pose3d?: boolean
  9246. }
  9247. /**
  9248. * {@link ARSystem}的`schema`,详见{@link IARSystemData}。
  9249. */
  9250. export const ARSystemSchema: IComponentSchema
  9251. /**
  9252. * AR系统,负责整个场景AR相关对象的管理。
  9253. *
  9254. * 代理自小程序的`VKSession`。
  9255. */
  9256. export default class ARSystem extends Component<IARSystemData> {
  9257. static EVENTS: string[]
  9258. /**
  9259. * 详见{@link ARSystemSchema}。
  9260. */
  9261. readonly schema: IComponentSchema
  9262. readonly priority: number
  9263. /**
  9264. * 当前设备是否启动成功。
  9265. */
  9266. get supported(): boolean
  9267. /**
  9268. * 当前启动的追踪模式。
  9269. */
  9270. get arModes(): TTrackMode[]
  9271. /**
  9272. * 当前启动的AR系统版本。
  9273. */
  9274. get arVersion(): number
  9275. /**
  9276. * 当前是否已经可用。
  9277. */
  9278. get ready(): boolean
  9279. /**
  9280. * 在`Face`/`Body`/`Hand`模式下,当前识别到的姿态数量。
  9281. */
  9282. get posCount(): number
  9283. onAdd(parent: Element, data: IARSystemData): void
  9284. onTick(deltaTime: number, data: IARSystemData): void
  9285. onUpdate(data: IARSystemData, preData: IARSystemData): void
  9286. onRemove(parent: Element, data: IARSystemData): void
  9287. onRelease(data: IARSystemData): void
  9288. /**
  9289. * 在`Plane`模式下,同步某个节点到当前追踪到的和平面的交点。
  9290. *
  9291. * @param nodeIdOrElement 节点的`nodeId`或是`element`引用。
  9292. * @param switchVisible 是否要自动切换显示或隐藏。
  9293. * @returns 是否放置成功
  9294. */
  9295. placeHere(
  9296. nodeIdOrElement: string | Element,
  9297. switchVisible?: boolean
  9298. ): boolean
  9299. /**
  9300. * 在`Plane`模式下,重置平面。
  9301. */
  9302. resetPlane(): void
  9303. /**
  9304. * 获取AR的追踪的原始数据。
  9305. */
  9306. getARRawData(): IARRawData
  9307. /**
  9308. * 提供一个修改某个设置为`isARCamera`的相机的试图矩阵的手段。
  9309. */
  9310. forceSetViewMatrix(camera: Camera, mat: Matrix4 | null): void
  9311. /**
  9312. * @internal
  9313. */
  9314. /**
  9315. * @internal
  9316. */
  9317. /**
  9318. * @internal
  9319. */
  9320. /**
  9321. * @internal
  9322. */
  9323. /**
  9324. * @internal
  9325. */
  9326. /**
  9327. * @internal
  9328. */
  9329. /**
  9330. * @internal
  9331. */
  9332. }
  9333. export {}
  9334. }
  9335. declare module 'XrFrame/systems/ShareSystem' {
  9336. /**
  9337. * ShareSystem.ts
  9338. *
  9339. * * @Date : 9/19/2022, 5:04:24 PM
  9340. */
  9341. import Component from 'XrFrame/core/Component'
  9342. export interface IShareSystemData {}
  9343. /**
  9344. * 分享到临时文件的配置。
  9345. */
  9346. export interface IShareCaptureOptions {
  9347. /**
  9348. * 输出图片编码。
  9349. * @default 'jpg'
  9350. */
  9351. fileType?: 'jpg' | 'png'
  9352. /**
  9353. * 输出图片jpg时的品质,0~1。
  9354. * @default 0.8
  9355. */
  9356. quality?: number
  9357. }
  9358. /**
  9359. * 分享录屏的配置。
  9360. */
  9361. export interface IShareRecordOptions {
  9362. /**
  9363. * 输出帧率。
  9364. * @default 30
  9365. */
  9366. fps?: number
  9367. /**
  9368. * 视频比特率。
  9369. * @default 1000
  9370. */
  9371. videoBitsPerSecond?: number
  9372. /**
  9373. * 录制视频宽度,不传的话使用Canvas宽度。
  9374. */
  9375. width?: number
  9376. /**
  9377. * 录制视频高度,不传的话使用Canvas高度。
  9378. */
  9379. height?: number
  9380. }
  9381. /**
  9382. * 录屏状态枚举。
  9383. */
  9384. export enum EShareRecordState {
  9385. Idle = 0,
  9386. Waiting = 1,
  9387. Recording = 2,
  9388. Paused = 3
  9389. }
  9390. /**
  9391. * 分享系统,负责分享相关功能。
  9392. */
  9393. export default class ShareSystem extends Component<IShareSystemData> {
  9394. readonly priority: number
  9395. /**
  9396. * 当前是否支持分享系统。
  9397. */
  9398. get supported(): boolean
  9399. /**
  9400. * 当前录屏状态。
  9401. */
  9402. get recordState(): EShareRecordState
  9403. onTick(deltaTime: number, data: IShareSystemData): void
  9404. /**
  9405. * @deprecated 请在`v3.0.2`后使用异步版本,同步版本不再维护,请使用`captureToDataURLAsync`。
  9406. * 截屏输出为`base64`。
  9407. */
  9408. captureToDataURL(options?: IShareCaptureOptions): string
  9409. /**
  9410. * @deprecated 请在`v3.0.2`后使用异步版本,同步版本不再维护,请使用`captureToArrayBufferAsync`。
  9411. * 截屏输出为`ArrayBuffer`。
  9412. */
  9413. captureToArrayBuffer(options?: IShareCaptureOptions): ArrayBuffer
  9414. /**
  9415. * 截屏输出为`base64`。
  9416. * 基础库`v3.0.2`以上版本支持。
  9417. */
  9418. captureToDataURLAsync(options?: IShareCaptureOptions): Promise<string>
  9419. /**
  9420. * 截屏输出为`ArrayBuffer`。
  9421. * 基础库`v3.0.2`以上版本支持。
  9422. */
  9423. captureToArrayBufferAsync(
  9424. options?: IShareCaptureOptions
  9425. ): Promise<ArrayBuffer>
  9426. /**
  9427. * 截屏输出为本地路径,回调完成后会自动释放。
  9428. *
  9429. * @params callback 接受结果的回调,处理完后会释放文件。在v2.27.1前是异步,之后兼容同步和异步。
  9430. */
  9431. captureToLocalPath(
  9432. options: IShareCaptureOptions,
  9433. callback: (fp: string) => Promise<void> | void
  9434. ): Promise<void>
  9435. /**
  9436. * 直接截屏分享给好友。
  9437. */
  9438. captureToFriends(options?: IShareCaptureOptions): Promise<void>
  9439. /**
  9440. * 启动录屏。
  9441. * 基础库`v3.1.1`以上版本支持。
  9442. */
  9443. recordStart(options?: IShareRecordOptions): Promise<void>
  9444. /**
  9445. * 暂停本次录屏。
  9446. * 基础库`v3.1.1`以上版本支持。
  9447. */
  9448. recordPause(): Promise<void>
  9449. /**
  9450. * 唤醒本次录屏。
  9451. */
  9452. recordResume(): Promise<void>
  9453. /**
  9454. * 录屏完成,输出到临时文件。
  9455. * 基础库`v3.1.1`以上版本支持。
  9456. *
  9457. * @returns 临时文件地址
  9458. */
  9459. recordFinishToTempFile(): Promise<string>
  9460. /**
  9461. * 录屏完成,直接保存到用户相册。
  9462. * 基础库`v3.1.1`以上版本支持。
  9463. */
  9464. recordFinishToAlbum(): Promise<void>
  9465. }
  9466. }
  9467. declare module 'XrFrame/systems/GizmoSystem' {
  9468. /**
  9469. * @author shanexyzhou@tencent.com
  9470. */
  9471. import CapsuleGizmo from 'XrFrame/components/gizmo/CapsuleGizmo'
  9472. import CubeGizmo from 'XrFrame/components/gizmo/CubeGizmo'
  9473. import Component from 'XrFrame/core/Component'
  9474. import Element from 'XrFrame/core/Element'
  9475. export interface IGizmoSystemData {}
  9476. type GizmoComponent = CubeGizmo | CapsuleGizmo
  9477. /**
  9478. * 动画系统,负责为Gizmo组件创建管理相对应的GizmoMesh元素。
  9479. */
  9480. export default class GizmoSystem extends Component<IGizmoSystemData> {
  9481. readonly priority: number
  9482. onTick(deltaTime: number, data: IGizmoSystemData): void
  9483. /**
  9484. * @internal
  9485. * 因为exparser的原因,不能通过脚本为普通xml节点添加子节点,
  9486. * 只能给XRShadow添加子节点,所以把需要添加gizmo的节点复制一份放在shadowRoot下,
  9487. * 每帧去同步transform。
  9488. */
  9489. addGizmo(gizmo: GizmoComponent): Element
  9490. /**
  9491. * @internal
  9492. */
  9493. removeGizmo(gizmo: GizmoComponent): void
  9494. }
  9495. export {}
  9496. }
  9497. declare module 'XrFrame/loader/AssetLoader' {
  9498. import { IAssetLoadData } from 'XrFrame/loader/types'
  9499. type Scene = import('XrFrame/core/Scene').default
  9500. /**
  9501. * 指定继承自{@link AssetLoader}的自定义资源加载器,可以接受的的额外配置的`schema`。
  9502. * 在基础库版本**v2.29.2**以上导出。
  9503. *
  9504. * 比如使用{@link CubeTextureLoader}加载资源时:
  9505. *
  9506. * ```xml
  9507. * <xr-asset-load
  9508. * type="cube-texture" asset-id="sky-cube" src="/assets/textures/skybox/"
  9509. * options="faces: right.jpg left.jpg top.jpg bottom.jpg front.jpg back.jpg"
  9510. * />
  9511. * ```
  9512. *
  9513. * 对应的`schema`接口为:
  9514. * ```ts
  9515. * export interface ICubeTextureLoaderOptions {
  9516. * // left right top bottom front back
  9517. * faces: string[];
  9518. * }
  9519. * ```ts
  9520. *
  9521. * 对应的`schema`为:
  9522. * ```ts
  9523. * schema = {
  9524. * faces: {type: 'array'}
  9525. * };
  9526. * ```
  9527. */
  9528. export interface ILoaderOptionsSchema {
  9529. [key: string]: {
  9530. type: string
  9531. defaultValue?: any
  9532. }
  9533. }
  9534. /**
  9535. * 资源加载器的基类,配合{@link AssetsSystem}使用。
  9536. * 在基础库版本**v2.29.2**以上导出。
  9537. *
  9538. * @template T 加载资源的类型。
  9539. * @template ILoadOptions 可接受额外配置的类型。
  9540. */
  9541. export default class AssetLoader<T, ILoadOptions> {
  9542. /**
  9543. * 和{@link Component.schema}类似,指定解析Options的实际`schema`,对应于`ILoadOptions`。
  9544. */
  9545. readonly schema: ILoaderOptionsSchema
  9546. /**
  9547. * 当前资源所属场景的实例。
  9548. */
  9549. get scene(): import('XrFrame/core/Scene').default
  9550. constructor(_scene: Scene, type: string)
  9551. /**
  9552. * @internal
  9553. */
  9554. /**
  9555. * 加载一个资源,并根据情况执行`callbacks`中的回调。
  9556. * **理论上必须要实现!**
  9557. *
  9558. * @param callbacks 开发者需要在加载进度更新时执行`onLoading`,在加载完成时执行`onLoaded`,在加载出错是执行`onError`
  9559. */
  9560. load(
  9561. data: IAssetLoadData<ILoadOptions>,
  9562. callbacks: {
  9563. onLoading(progress: number): void
  9564. onLoaded(result: T, localPath?: string): void
  9565. onError(error: Error): void
  9566. }
  9567. ): void
  9568. /**
  9569. * 取消加载特定资源。一般不需要自己编写逻辑,而是使用`entity.canceled`在加载终点丢弃。
  9570. * 注意`entity.canceled`是在这里赋值的,所以一般继承请务必先执行`super.cancel()`!
  9571. */
  9572. cancel(params: IAssetLoadData<ILoadOptions>): void
  9573. /**
  9574. * 释放资源时将会调用,用于自定义释放逻辑。
  9575. */
  9576. release(params: IAssetLoadData<ILoadOptions>, value: T): void
  9577. /**
  9578. * 返回默认资源列表。
  9579. * 所有默认资源都是惰性加载的。
  9580. */
  9581. getBuiltin(): Array<{
  9582. assetId: string
  9583. src: string
  9584. options: ILoadOptions
  9585. }>
  9586. }
  9587. export function getAssetLoaderTypes(): string[]
  9588. export function getAssetLoader(
  9589. type: string
  9590. ): new (
  9591. scene: import('XrFrame/core/Scene').default,
  9592. type: string
  9593. ) => AssetLoader<any, any>
  9594. /**
  9595. * 注册一个资源加载器。注意注册后该`type`会被自动注册到DataValue中:{@link registerDataValue}。
  9596. * 在基础库版本**v2.29.2**以上导出。
  9597. *
  9598. * @param type 类型,也是写在{@link AssetLoad}上的那个`type`。
  9599. * @param clz 继承自{@link AssetLoader}的自定义资源加载器类。
  9600. */
  9601. export function registerAssetLoader(
  9602. type: string,
  9603. clz: new (scene: Scene, type: string) => AssetLoader<any, any>
  9604. ): void
  9605. export {}
  9606. }
  9607. declare module 'XrFrame/loader/TextureLoader' {
  9608. /**
  9609. * TextureLoader.ts
  9610. *
  9611. * * @Date : 2022/4/1下午5:19:36
  9612. */
  9613. import { Kanata } from 'XrFrame/ext'
  9614. import AssetLoader, {
  9615. ILoaderOptionsSchema
  9616. } from 'XrFrame/loader/AssetLoader'
  9617. import { IAssetLoadData } from 'XrFrame/loader/types'
  9618. export function isPOT(img: Kanata.IImage): boolean
  9619. /**
  9620. * {@link TextureLoader}可接受的自定义参数`schema`。
  9621. */
  9622. export interface ITextureLoaderOptions {
  9623. /**
  9624. * 各向异性系数。
  9625. * @default 1
  9626. */
  9627. anisoLevel?: number
  9628. /**
  9629. * wrapU,值为数字,见{@link EWrapMode}。
  9630. * @default 2
  9631. */
  9632. wrapU?: number
  9633. /**
  9634. * wrapV,值为数字,见{@link EWrapMode}。
  9635. * @default 2
  9636. */
  9637. wrapV?: number
  9638. /**
  9639. * magFilter,值为数字,见{@link EFilterMode}。
  9640. * 默认值依据纹理是否POT而定。
  9641. */
  9642. magFilter?: number
  9643. /**
  9644. * minFilter,值为数字,见{@link EFilterMode}。
  9645. * 默认值依据纹理是否POT而定。
  9646. */
  9647. minFilter?: number
  9648. /**
  9649. * 是否要生成mipmaps。
  9650. * @default false
  9651. */
  9652. generateMipmaps?: boolean
  9653. }
  9654. type ITextureLoadData = IAssetLoadData<ITextureLoaderOptions>
  9655. /**
  9656. * 纹理资源{@link Texture}的加载器。
  9657. *
  9658. * 内置资源可以通过{@link registerTexture}注册,拥有内置资源`brdf-lut`、`white`、`transparent`、`black`、`red`、`green`、`blue`、`yellow`、`babyblue`、`babygreen`、`babyred`。
  9659. */
  9660. export default class TextureLoader extends AssetLoader<
  9661. Kanata.Texture,
  9662. ITextureLoaderOptions
  9663. > {
  9664. readonly schema: ILoaderOptionsSchema
  9665. load(
  9666. params: ITextureLoadData,
  9667. callbacks: {
  9668. onLoading(progress: number): void
  9669. onLoaded(value: Kanata.Texture): void
  9670. onError(error: Error): void
  9671. }
  9672. ): void
  9673. getBuiltin(): Array<{
  9674. assetId: string
  9675. src: string
  9676. options: {}
  9677. }>
  9678. release(params: ITextureLoadData, value: Kanata.Texture): void
  9679. }
  9680. export {}
  9681. }
  9682. declare module 'XrFrame/loader/ImageLoader' {
  9683. /**
  9684. * ImageLoader.ts
  9685. *
  9686. * * @Date : 6/13/2022, 12:40:11 PM
  9687. */
  9688. import { Kanata } from 'XrFrame/ext'
  9689. import AssetLoader, {
  9690. ILoaderOptionsSchema
  9691. } from 'XrFrame/loader/AssetLoader'
  9692. import { IAssetLoadData } from 'XrFrame/loader/types'
  9693. export interface IImageLoaderOptions {}
  9694. type IImageLoadData = IAssetLoadData<IImageLoaderOptions>
  9695. /**
  9696. * 图片数据资源{@link IImage}的加载器。
  9697. *
  9698. * 图片数据不同于纹理资源{@link Texture},请自行按照场景使用。
  9699. */
  9700. export default class ImageLoader extends AssetLoader<
  9701. Kanata.IImage,
  9702. IImageLoaderOptions
  9703. > {
  9704. readonly schema: ILoaderOptionsSchema
  9705. load(
  9706. params: IImageLoadData,
  9707. callbacks: {
  9708. onLoading(progress: number): void
  9709. onLoaded(value: Kanata.IImage): void
  9710. onError(error: Error): void
  9711. }
  9712. ): void
  9713. release(params: IImageLoadData, value: Kanata.IImage): void
  9714. }
  9715. export {}
  9716. }
  9717. declare module 'XrFrame/loader/CubeTextureLoader' {
  9718. /**
  9719. * CubeCubeTextureLoader.ts
  9720. *
  9721. * * @Date : 5/10/2022, 11:24:51 AM
  9722. */
  9723. import { Kanata } from 'XrFrame/ext'
  9724. import AssetLoader, {
  9725. ILoaderOptionsSchema
  9726. } from 'XrFrame/loader/AssetLoader'
  9727. import { IAssetLoadData } from 'XrFrame/loader/types'
  9728. /**
  9729. * {@link CubeTextureLoader}可接受的自定义参数`schema`。
  9730. */
  9731. export interface ICubeTextureLoaderOptions {
  9732. /**
  9733. * 顺序为 left right top bottom front back。
  9734. */
  9735. faces: string[]
  9736. /**
  9737. * 各向异性系数。
  9738. * @default 1
  9739. */
  9740. anisoLevel: number
  9741. /**
  9742. * wrapU,值为数字,见{@link EWrapMode}。
  9743. * @default 2
  9744. */
  9745. wrapU?: number
  9746. /**
  9747. * wrapV,值为数字,见{@link EWrapMode}。
  9748. * @default 2
  9749. */
  9750. wrapV?: number
  9751. /**
  9752. * wrapW,值为数字,见{@link EWrapMode}。
  9753. * @default 2
  9754. */
  9755. wrapW?: number
  9756. /**
  9757. * magFilter,值为数字,见{@link EFilterMode}。
  9758. * 默认值依据纹理是否POT而定。
  9759. */
  9760. magFilter?: number
  9761. /**
  9762. * minFilter,值为数字,见{@link EFilterMode}。
  9763. * 默认值依据纹理是否POT而定。
  9764. */
  9765. minFilter?: number
  9766. /**
  9767. * 是否要生成mipmaps。
  9768. * @default false
  9769. */
  9770. generateMipmaps?: boolean
  9771. }
  9772. type ICubeTextureLoadData = IAssetLoadData<ICubeTextureLoaderOptions>
  9773. /**
  9774. * 立方体资源{@link CubeTexture}的加载器。
  9775. *
  9776. * 内置资源可以通过{@link registerTextureCube}注册,拥有内置资源`brdf-lut`、`white`、`transparent`、`black`、`red`、`green`、`blue`、`yellow`。
  9777. */
  9778. export default class CubeTextureLoader extends AssetLoader<
  9779. Kanata.Texture,
  9780. ICubeTextureLoaderOptions
  9781. > {
  9782. /**
  9783. * 详见{@link ICubeTextureLoaderOptions}。
  9784. */
  9785. readonly schema: ILoaderOptionsSchema
  9786. load(
  9787. params: ICubeTextureLoadData,
  9788. callbacks: {
  9789. onLoading(progress: number): void
  9790. onLoaded(value: Kanata.Texture): void
  9791. onError(error: Error): void
  9792. }
  9793. ): void
  9794. release(params: ICubeTextureLoadData, value: Kanata.Texture): void
  9795. }
  9796. export {}
  9797. }
  9798. declare module 'XrFrame/loader/VideoTextureLoader' {
  9799. /**
  9800. * VideoTextureLoader.ts
  9801. *
  9802. * * @Date : 8/26/2022, 8:02:51 PM
  9803. */
  9804. import VideoTexture from 'XrFrame/assets/VideoTexture'
  9805. import AssetLoader, {
  9806. ILoaderOptionsSchema
  9807. } from 'XrFrame/loader/AssetLoader'
  9808. import { IAssetLoadData } from 'XrFrame/loader/types'
  9809. /**
  9810. * {@link VideoTextureLoader}可接受的自定义参数`schema`。
  9811. *
  9812. * 基本同{@link IVideoTextureOptions}。
  9813. */
  9814. export interface IVideoTextureLoaderOptions {
  9815. anisoLevel: number
  9816. placeHolder?: string
  9817. autoPlay?: boolean
  9818. loop?: boolean
  9819. abortAudio?: boolean
  9820. }
  9821. type IVideoTextureLoadData = IAssetLoadData<IVideoTextureLoaderOptions>
  9822. /**
  9823. * 视频纹理资源{@link VideoTexture}的加载器。
  9824. */
  9825. export default class VideoTextureLoader extends AssetLoader<
  9826. VideoTexture,
  9827. IVideoTextureLoaderOptions
  9828. > {
  9829. /**
  9830. * 详见{@link IVideoTextureLoaderOptions}。
  9831. */
  9832. readonly schema: ILoaderOptionsSchema
  9833. load(
  9834. params: IVideoTextureLoadData,
  9835. callbacks: {
  9836. onLoading(progress: number): void
  9837. onLoaded(value: VideoTexture): void
  9838. onError(error: Error): void
  9839. }
  9840. ): Promise<void>
  9841. release(params: IVideoTextureLoadData, value: VideoTexture): void
  9842. }
  9843. export {}
  9844. }
  9845. declare module 'XrFrame/loader/EnvDataLoader' {
  9846. /**
  9847. * EnvDataLoader.ts
  9848. *
  9849. * * @Date : 5/10/2022, 11:27:49 AM
  9850. */
  9851. import EnvData from 'XrFrame/assets/EnvData'
  9852. import AssetLoader, {
  9853. ILoaderOptionsSchema
  9854. } from 'XrFrame/loader/AssetLoader'
  9855. import { IAssetLoadData } from 'XrFrame/loader/types'
  9856. interface IBufferSlice {
  9857. offset: number
  9858. length: number
  9859. type: string
  9860. }
  9861. export interface IEnvDataSource {
  9862. skybox?: {
  9863. type: '2D' | 'Cube'
  9864. half: boolean
  9865. map: (string | string[]) | IBufferSlice
  9866. }
  9867. diffuse?: {
  9868. coefficients: number[][]
  9869. }
  9870. specular?: {
  9871. type: '2D'
  9872. rgbd: boolean
  9873. mipmaps: boolean
  9874. mipmapCount?: number
  9875. map: string | IBufferSlice
  9876. }
  9877. }
  9878. export interface IEnvDataLoaderOptions {}
  9879. type IEnvDataLoadData = IAssetLoadData<IEnvDataLoaderOptions>
  9880. /**
  9881. * 环境数据资源{@link EnvData}的加载器。
  9882. *
  9883. * 拥有内置资源`xr-frame-team-workspace-day`、`xr-frame-team-workspace-night`以及`xr-frame-team-workspace-day2`。
  9884. * 加载的资源一般由[xr-frame-cli](https://github.com/wechat-miniprogram/xr-frame-cli)生成。
  9885. */
  9886. export default class EnvDataLoader extends AssetLoader<
  9887. EnvData,
  9888. IEnvDataLoaderOptions
  9889. > {
  9890. readonly schema: ILoaderOptionsSchema
  9891. load(
  9892. params: IEnvDataLoadData,
  9893. callbacks: {
  9894. onLoading(progress: number): void
  9895. onLoaded(value: EnvData): void
  9896. onError(error: Error): void
  9897. }
  9898. ): Promise<void>
  9899. getBuiltin(): Array<{
  9900. assetId: string
  9901. src: string
  9902. options: IEnvDataLoaderOptions
  9903. }>
  9904. release(params: IEnvDataLoadData, value: EnvData): void
  9905. }
  9906. export {}
  9907. }
  9908. declare module 'XrFrame/loader/GlTFLoader' {
  9909. /**
  9910. * GLTFLoader.ts
  9911. *
  9912. * * @Date : 2022/3/16下午3:47:56
  9913. */
  9914. import GLTFModel from 'XrFrame/assets/GLTFModel'
  9915. import AssetLoader, {
  9916. ILoaderOptionsSchema
  9917. } from 'XrFrame/loader/AssetLoader'
  9918. import { IAssetLoadData } from 'XrFrame/loader/types'
  9919. import { Scene } from 'XrFrame/elements'
  9920. export enum GLBChunkType {
  9921. JSON = 1313821514,
  9922. BIN = 5130562
  9923. }
  9924. export interface IGLTFLoaderOptions {
  9925. /**
  9926. * *(基础库2.31.1及之后)*
  9927. * 可以忽略xr-frame对GLTF模型的某一些限制,来强行渲染有问题的GLTF模型。
  9928. * ErrorCode会在渲染模型失败后,由console报出。
  9929. * 填写-1则忽略所有限制。
  9930. */
  9931. ignoreError: number[]
  9932. /**
  9933. * *(基础库2.32.1及之后)*
  9934. * 开启了之后会在GLTFModel中保留原始json。
  9935. */
  9936. preserveRaw: boolean
  9937. }
  9938. type IGLTFLoadData = IAssetLoadData<IGLTFLoaderOptions>
  9939. /**
  9940. * GLTF资源加载器,加载完毕后返回一个{@link GLTFModel}。
  9941. */
  9942. export default class GLTFLoader extends AssetLoader<
  9943. GLTFModel,
  9944. IGLTFLoaderOptions
  9945. > {
  9946. readonly schema: ILoaderOptionsSchema
  9947. load(
  9948. param: IGLTFLoadData,
  9949. callbacks: {
  9950. onLoading(progress: number): void
  9951. onLoaded(value: GLTFModel): void
  9952. onError(error: Error): void
  9953. }
  9954. ): Promise<void>
  9955. cancel(params: IGLTFLoadData): void
  9956. release(params: IGLTFLoadData, value: GLTFModel): void
  9957. /**
  9958. * @internal
  9959. */
  9960. static createGLTFModel(
  9961. scene: Scene,
  9962. buffer: ArrayBuffer,
  9963. param: IGLTFLoadData,
  9964. onLoading?: (progress: number) => void
  9965. ): Promise<GLTFModel>
  9966. }
  9967. export {}
  9968. }
  9969. declare module 'XrFrame/loader/KeyframeLoader' {
  9970. /**
  9971. * KeyframeLoader.ts
  9972. *
  9973. * * @Date : 6/21/2022, 6:48:33 PM
  9974. */
  9975. import KeyframeAnimation from 'XrFrame/animation/KeyframeAnimation'
  9976. import AssetLoader, {
  9977. ILoaderOptionsSchema
  9978. } from 'XrFrame/loader/AssetLoader'
  9979. import { IAssetLoadData } from 'XrFrame/loader/types'
  9980. export interface IKeyframeLoaderOptions {}
  9981. type IKeyframeLoadData = IAssetLoadData<IKeyframeLoaderOptions>
  9982. /**
  9983. * 帧动画资源{@link KeyframeAnimation}的加载器。
  9984. */
  9985. export default class KeyframeLoader extends AssetLoader<
  9986. KeyframeAnimation,
  9987. IKeyframeLoaderOptions
  9988. > {
  9989. readonly schema: ILoaderOptionsSchema
  9990. load(
  9991. params: IKeyframeLoadData,
  9992. callbacks: {
  9993. onLoading(progress: number): void
  9994. onLoaded(value: KeyframeAnimation): void
  9995. onError(error: Error): void
  9996. }
  9997. ): Promise<void>
  9998. }
  9999. export {}
  10000. }
  10001. declare module 'XrFrame/loader/RawLoader' {
  10002. import AssetLoader, {
  10003. ILoaderOptionsSchema
  10004. } from 'XrFrame/loader/AssetLoader'
  10005. import { IAssetLoadData } from 'XrFrame/loader/types'
  10006. /**
  10007. * 原始数据加载器的参数。
  10008. */
  10009. export interface IRawLoaderOptions {
  10010. /**
  10011. * 编码,默认为`binary`。
  10012. */
  10013. encoding?: 'binary' | 'utf-8'
  10014. }
  10015. type IRawLoadData = IAssetLoadData<IRawLoaderOptions>
  10016. /**
  10017. * 原始数据的加载器。
  10018. */
  10019. export default class RawLoader extends AssetLoader<
  10020. string | ArrayBuffer,
  10021. IRawLoaderOptions
  10022. > {
  10023. readonly schema: ILoaderOptionsSchema
  10024. load(
  10025. params: IRawLoadData,
  10026. callbacks: {
  10027. onLoading(progress: number): void
  10028. onLoaded(value: string | ArrayBuffer): void
  10029. onError(error: Error): void
  10030. }
  10031. ): Promise<void>
  10032. }
  10033. export {}
  10034. }
  10035. declare module 'XrFrame/loader/AtlasLoader' {
  10036. /**
  10037. * AtlasLoader.ts
  10038. *
  10039. * * @Date : 10/13/2022, 5:35:00 PM
  10040. */
  10041. import Atlas from 'XrFrame/assets/Atlas'
  10042. import AssetLoader, {
  10043. ILoaderOptionsSchema
  10044. } from 'XrFrame/loader/AssetLoader'
  10045. import { IAssetLoadData } from 'XrFrame/loader/types'
  10046. export interface IAtlasSource {
  10047. meta: {
  10048. image: string
  10049. size: {
  10050. w: number
  10051. h: number
  10052. }
  10053. }
  10054. frames: {
  10055. [key: string]: {
  10056. frame: {
  10057. x: number
  10058. y: number
  10059. w: number
  10060. h: number
  10061. }
  10062. spriteSourceSize: {
  10063. x: number
  10064. y: number
  10065. w: number
  10066. h: number
  10067. }
  10068. sourceSize: {
  10069. w: number
  10070. h: number
  10071. }
  10072. }
  10073. }
  10074. }
  10075. export interface IAtlasLoaderOptions {}
  10076. type IAtlasLoadData = IAssetLoadData<IAtlasLoaderOptions>
  10077. /**
  10078. * 图集资源{@link Atlas}的加载器。
  10079. * @version 2.27.1
  10080. *
  10081. * 推荐使用[Shoebox](https://www.renderhjs.net/shoebox/)生成。
  10082. */
  10083. export default class AtlasLoader extends AssetLoader<
  10084. Atlas,
  10085. IAtlasLoaderOptions
  10086. > {
  10087. readonly schema: ILoaderOptionsSchema
  10088. load(
  10089. params: IAtlasLoadData,
  10090. callbacks: {
  10091. onLoading(progress: number): void
  10092. onLoaded(value: Atlas): void
  10093. onError(error: Error): void
  10094. }
  10095. ): Promise<void>
  10096. getBuiltin(): Array<{
  10097. assetId: string
  10098. src: string
  10099. options: IAtlasLoaderOptions
  10100. }>
  10101. }
  10102. export {}
  10103. }
  10104. declare module 'XrFrame/loader/types' {
  10105. /**
  10106. * types.ts
  10107. *
  10108. * * @Date : 2022/4/1下午2:19:33
  10109. */
  10110. type Assets = import('XrFrame/components/Assets').default
  10111. export function isAsset(value: any): value is IAssetWithState<any>
  10112. export enum EAssetState {
  10113. Undefined = 0,
  10114. Defer = 1,
  10115. Loading = 2,
  10116. Existed = 3
  10117. }
  10118. export interface IAssetWithState<T> {
  10119. __isAsset: boolean
  10120. __params?: IAssetLoadData
  10121. __group?: Assets
  10122. value?: T
  10123. state: EAssetState
  10124. promise?: Promise<IAssetWithState<T>>
  10125. }
  10126. /**
  10127. * {@link AssetLoad}组件数据接口。
  10128. */
  10129. export interface IAssetLoadData<T = any> {
  10130. /**
  10131. * 资源类型,必须是使用{@link registerAssetLoader}中注册过的类型。
  10132. * `xml`中数据为`string`类型。
  10133. */
  10134. type: string
  10135. /**
  10136. * 资源Id。
  10137. * `xml`中数据为`string`类型。
  10138. */
  10139. assetId: string
  10140. /**
  10141. * 资源地址。
  10142. * `xml`中数据为`string`类型。
  10143. */
  10144. src: string
  10145. /**
  10146. * 资源权重,用于在同一批加载的资源的`progress`事件中计算进度,详见{@link Assets}。
  10147. * `xml`中数据为`number`类型。
  10148. */
  10149. weight?: number
  10150. /**
  10151. * 资源追加配置,视资源类型而定。
  10152. * `xml`中数据为`dict`类型。
  10153. */
  10154. options: T
  10155. /**
  10156. * 是否要按需延迟加载,如果开启,则只有在资源被实际引用时才会被加载。
  10157. * `xml`中数据为`boolean`类型。
  10158. */
  10159. defer?: boolean
  10160. /**
  10161. * @internal
  10162. */
  10163. canceled?: boolean
  10164. /**
  10165. * @internal
  10166. */
  10167. startTs?: number
  10168. /**
  10169. * 加载时长(s),仅用于统计。
  10170. */
  10171. duration?: number
  10172. /**
  10173. * 当前加载进度。
  10174. */
  10175. progress?: number
  10176. }
  10177. export {}
  10178. }
  10179. declare module 'XrFrame/animation/NativeAnimation' {
  10180. import { Kanata } from 'XrFrame/ext'
  10181. import Animation, { TDirection } from 'XrFrame/animation/Animation'
  10182. import Element from 'XrFrame/core/Element'
  10183. export enum ENativeAnimationSimulatorType {
  10184. None = 0,
  10185. Morph = 1
  10186. }
  10187. export interface INativeAnimationData {
  10188. clip: Kanata.AnimationClipModel
  10189. bindings: Kanata.Entity3D[]
  10190. frameCount: number
  10191. names: string[]
  10192. simulators?: Array<{
  10193. type: ENativeAnimationSimulatorType
  10194. target: Element
  10195. subElements: Element[]
  10196. }>
  10197. }
  10198. export const DefaultNativeAnimationFPS = 60
  10199. /**
  10200. * 使用客户端加速的动画片段,通常由gltf实例化而来,仅供内部使用。
  10201. */
  10202. export default class NativeAnimation extends Animation<INativeAnimationData> {
  10203. onInit(data: INativeAnimationData): void
  10204. onPlay(
  10205. el: Element,
  10206. clipName: string,
  10207. options: any
  10208. ): {
  10209. duration: number
  10210. loop?: number
  10211. delay?: number
  10212. direction?: TDirection
  10213. }
  10214. onUpdate(el: Element, progress: number, reverse: boolean): void
  10215. }
  10216. }
  10217. declare module 'XrFrame/loader/glTF/GLTFRootNode' {
  10218. import GLTFAnimationsNode, {
  10219. GLTFAnimationsLoaded,
  10220. GLTFAnimationsNodeRaw
  10221. } from 'XrFrame/loader/glTF/animations/GLTFAnimationsNode'
  10222. import GLTFAccessorsNode, {
  10223. GLTFAccessorsNodeRaw
  10224. } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  10225. import GLTFBuffersNode, {
  10226. GLTFBuffersNodeRaw
  10227. } from 'XrFrame/loader/glTF/buffers/GLTFBuffersNode'
  10228. import GLTFBufferViewsNode, {
  10229. GLTFBufferViewsNodeRaw
  10230. } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode'
  10231. import { GLTFExtensionsProfiles } from 'XrFrame/loader/glTF/extensions/GLTFExtensions'
  10232. import GLTFMeshesNode, {
  10233. GLTFMeshesLoaded,
  10234. GLTFMeshesNodeRaw
  10235. } from 'XrFrame/loader/glTF/geometry/GLTFMeshesNode'
  10236. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  10237. import GLTFMaterialsNode, {
  10238. GLTFMaterialsLoaded,
  10239. GLTFMaterialsNodeRaw
  10240. } from 'XrFrame/loader/glTF/materials/GLTFMaterialsNode'
  10241. import GLTFNodesNode, {
  10242. GLTFNodesLoaded,
  10243. GLTFNodesNodeRaw
  10244. } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  10245. import { GLTFSceneLoaded } from 'XrFrame/loader/glTF/scenes/GLTFSceneNode'
  10246. import GLTFScenesNode, {
  10247. GLTFScenesLoaded,
  10248. GLTFScenesNodeRaw
  10249. } from 'XrFrame/loader/glTF/scenes/GLTFScenesNode'
  10250. import GLTFSkinsNode, {
  10251. GLTFSkinsLoaded,
  10252. GLTFSkinsNodeRaw
  10253. } from 'XrFrame/loader/glTF/skins/GLTFSkinsNode'
  10254. import GLTFImagesNode, {
  10255. GLTFImagesNodeRaw
  10256. } from 'XrFrame/loader/glTF/textures/GLTFImagesNode'
  10257. import GLTFSamplersNode, {
  10258. GLTFSamplersLoaded,
  10259. GLTFSamplersNodeRaw
  10260. } from 'XrFrame/loader/glTF/textures/GLTFSamplersNode'
  10261. import GLTFTexturesNode, {
  10262. GLTFTexturesLoaded,
  10263. GLTFTexturesNodeRaw
  10264. } from 'XrFrame/loader/glTF/textures/GLTFTexturesNode'
  10265. import { EValidation } from 'XrFrame/loader/glTF/utils/exceptions'
  10266. type Scene = import('XrFrame/core/Scene').default
  10267. export interface GLTFRootNodeRaw {
  10268. buffers?: GLTFBuffersNodeRaw
  10269. bufferViews?: GLTFBufferViewsNodeRaw
  10270. accessors?: GLTFAccessorsNodeRaw
  10271. images?: GLTFImagesNodeRaw
  10272. samplers?: GLTFSamplersNodeRaw
  10273. textures?: GLTFTexturesNodeRaw
  10274. materials?: GLTFMaterialsNodeRaw
  10275. meshes?: GLTFMeshesNodeRaw
  10276. nodes?: GLTFNodesNodeRaw
  10277. scenes?: GLTFScenesNodeRaw
  10278. skins?: GLTFSkinsNodeRaw
  10279. animations?: GLTFAnimationsNodeRaw
  10280. scene?: number
  10281. extensions?: object
  10282. extensionsRequired?: string[]
  10283. extensionsUsed?: string[]
  10284. }
  10285. export interface GLTFRootLoaded {
  10286. samplers: GLTFSamplersLoaded
  10287. textures: GLTFTexturesLoaded
  10288. materials: GLTFMaterialsLoaded
  10289. meshes: GLTFMeshesLoaded
  10290. nodes: GLTFNodesLoaded
  10291. scenes: GLTFScenesLoaded
  10292. scene: GLTFSceneLoaded
  10293. skins: GLTFSkinsLoaded
  10294. animations: GLTFAnimationsLoaded
  10295. }
  10296. export interface GLTFDesc {
  10297. raw: object
  10298. scene: Scene
  10299. uri?: string
  10300. ignoreError?: number[]
  10301. extensionProfiles?: GLTFExtensionsProfiles
  10302. defaultBinary?: ArrayBuffer
  10303. }
  10304. export default class GLTFRootNode extends GLTFBaseNode {
  10305. get nodeName(): string
  10306. readonly raw: GLTFRootNodeRaw
  10307. readonly uri: string
  10308. readonly defaultBinary: ArrayBuffer | null
  10309. nodesCollector: {
  10310. [path: string]: GLTFBaseNode[]
  10311. }
  10312. extensionProfiles: GLTFExtensionsProfiles
  10313. extensionGlobals: {
  10314. [name: string]: object
  10315. }
  10316. resource: GLTFRootLoaded | null
  10317. buffersNode: GLTFBuffersNode | undefined
  10318. bufferViewsNode: GLTFBufferViewsNode | undefined
  10319. accessorsNode: GLTFAccessorsNode | undefined
  10320. imagesNode: GLTFImagesNode | undefined
  10321. samplersNode: GLTFSamplersNode | undefined
  10322. texturesNode: GLTFTexturesNode | undefined
  10323. materialsNode: GLTFMaterialsNode | undefined
  10324. meshesNode: GLTFMeshesNode | undefined
  10325. nodesNode: GLTFNodesNode | undefined
  10326. scenesNode: GLTFScenesNode | undefined
  10327. skinsNode: GLTFSkinsNode | undefined
  10328. animationsNode: GLTFAnimationsNode | undefined
  10329. ignoreError: {
  10330. [errorType in EValidation]?: true
  10331. }
  10332. constructor(desc: GLTFDesc)
  10333. build(): void
  10334. preload(
  10335. reportProgress?: (progress: number) => void
  10336. ): Promise<GLTFRootLoaded>
  10337. getLoadedResource(): GLTFRootLoaded
  10338. getNodesByPath(path: string): GLTFBaseNode[]
  10339. getRootExtensionRaw(extName: string): object | undefined
  10340. /**
  10341. * 在preload完之后可以调用这个函数,会把原始buffer的引用都释放掉。
  10342. * 每个子节点的raw也会释放掉(以防数据是dataURI的形式)。
  10343. */
  10344. releaseRawBuffer(): void
  10345. }
  10346. export {}
  10347. }
  10348. declare module 'XrFrame/loader/glTF/scenes/GLTFNodesNode' {
  10349. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  10350. import GLTFNodeNode, {
  10351. GLTFNodeLoaded,
  10352. GLTFNodeNodeRaw,
  10353. GLTFNodePrerequisites
  10354. } from 'XrFrame/loader/glTF/scenes/GLTFNodeNode'
  10355. type ChildNode = GLTFNodeNode
  10356. export type GLTFNodesNodeRaw = GLTFNodesNodeRaw[]
  10357. export type GLTFTreeNode = {
  10358. data: GLTFNodeLoaded
  10359. children: GLTFTreeNode[]
  10360. parent: GLTFTreeNode | null
  10361. index: number
  10362. extensions?: object
  10363. }
  10364. export type GLTFNodesLoaded = GLTFTreeNode[]
  10365. export default class GLTFNodesNode extends GLTFArrayNode<ChildNode> {
  10366. ChildCtor(childRaw: GLTFNodeNodeRaw): GLTFNodeNode
  10367. readonly raw: GLTFNodesNodeRaw
  10368. get nodeName(): string
  10369. res: GLTFNodesLoaded
  10370. preload(prerequisites: GLTFNodePrerequisites): Promise<GLTFNodesLoaded>
  10371. getLoadedResource(): GLTFNodesLoaded
  10372. }
  10373. export {}
  10374. }
  10375. declare module 'XrFrame/physics/RaycastHit' {
  10376. import Shape from 'XrFrame/components/physics/Shape'
  10377. import { Scene } from 'XrFrame/elements'
  10378. import Vector3 from 'XrFrame/math/vector3'
  10379. export default class RaycastHit {
  10380. constructor(scene: Scene, nativeComp?: phys3D.RaycastHit)
  10381. /**
  10382. * @internal
  10383. * native层真正的raycastHit对象,业务侧无需关心
  10384. */
  10385. get nativeRaycastHit(): phys3D.RaycastHit
  10386. /**
  10387. * 与射线相交的Shape。
  10388. */
  10389. get shape(): Shape<any>
  10390. /**
  10391. * 从射线的原点到碰撞点的距离。
  10392. */
  10393. get distance(): number
  10394. set distance(v: number)
  10395. /**
  10396. * 射线与轮廓的交点表面的法线。
  10397. */
  10398. get normal(): Vector3
  10399. set normal(v: Vector3)
  10400. /**
  10401. * 在世界空间中,射线与轮廓的交点。
  10402. */
  10403. get point(): Vector3
  10404. set point(v: Vector3)
  10405. }
  10406. }
  10407. declare module 'XrFrame/physics/Collision' {
  10408. import Shape from 'XrFrame/components/physics/Shape'
  10409. import ContactPoint, { IContactPoint } from 'XrFrame/physics/ContactPoint'
  10410. import { Vector3ReadOnly } from 'XrFrame/math/vector3'
  10411. const collisionMap: WeakMap<phys3D.Collision, Collision>
  10412. export { collisionMap }
  10413. /**
  10414. * 物理碰撞事件(collide-begin等)的信息。
  10415. * @category Physics
  10416. * @readonly
  10417. */
  10418. export interface ICollideEvent {
  10419. /**
  10420. * 从碰撞到分离所用的冲量之和。
  10421. */
  10422. readonly impulse: Vector3ReadOnly
  10423. /**
  10424. * 两个刚体的相对线性碰撞速度。
  10425. */
  10426. readonly relativeVelocity: Vector3ReadOnly
  10427. /**
  10428. * 发生碰撞的另一个轮廓。
  10429. */
  10430. readonly shape: Shape
  10431. /**
  10432. * 本次碰撞的接触点。
  10433. */
  10434. readonly contacts: IContactPoint[]
  10435. }
  10436. /**
  10437. * 物理重叠事件(overlap-begin等)的信息。
  10438. * @category Physics
  10439. * @readonly
  10440. */
  10441. export interface IOverlapEvent {
  10442. /**
  10443. * 重叠的另一个轮廓。
  10444. */
  10445. readonly shape: Shape
  10446. }
  10447. export default class Collision implements ICollideEvent {
  10448. constructor(native: phys3D.Collision)
  10449. get impulse(): Vector3ReadOnly
  10450. get relativeVelocity(): Vector3ReadOnly
  10451. get shape(): Shape<any>
  10452. get contacts(): ContactPoint[]
  10453. }
  10454. }
  10455. declare module 'XrFrame/physics/ContactPoint' {
  10456. import Shape from 'XrFrame/components/physics/Shape'
  10457. import { Vector3ReadOnly } from 'XrFrame/math/vector3'
  10458. const contactPointMap: WeakMap<phys3D.ContactPoint, ContactPoint>
  10459. export { contactPointMap }
  10460. /**
  10461. * 物理事件返回的{@link ICollideEvent | 碰撞信息}中的碰撞点。
  10462. * @category Physics
  10463. */
  10464. export interface IContactPoint {
  10465. /**
  10466. * 在该碰撞点处,两个物体的距离。
  10467. *
  10468. * 不一定是0或小于0,因为只要两个物体的距离小于{@link Collider.contactOffset}之和,就会判定为碰撞。
  10469. */
  10470. readonly separation: number
  10471. /**
  10472. * 碰撞平面的法线。
  10473. */
  10474. readonly normal: Vector3ReadOnly
  10475. /**
  10476. * 碰撞点的位置。
  10477. */
  10478. readonly point: Vector3ReadOnly
  10479. /**
  10480. * 接收碰撞事件的轮廓。
  10481. */
  10482. readonly thisShape: Shape
  10483. /**
  10484. * 另一个轮廓。
  10485. */
  10486. readonly otherShape: Shape
  10487. }
  10488. export default class ContactPoint implements IContactPoint {
  10489. get separation(): number
  10490. get normal(): Vector3ReadOnly
  10491. get point(): Vector3ReadOnly
  10492. get thisShape(): Shape<any>
  10493. get otherShape(): Shape<any>
  10494. constructor(native: phys3D.ContactPoint)
  10495. }
  10496. }
  10497. declare module 'XrFrame/physics/raycast' {
  10498. import Vector3 from 'XrFrame/math/vector3'
  10499. import RaycastHit from 'XrFrame/physics/RaycastHit'
  10500. /**
  10501. * raycast函数的参数。
  10502. * @field origin 射线起点。
  10503. * @field unitDir 射线方向(单位向量)。
  10504. * @field distance 射线的最大长度。
  10505. * @field hit 用来接收碰撞信息的容器。
  10506. * @field layerMask 可以用来屏蔽一些物体。
  10507. * @field (未实现)queryTriggerInteraction,是否能与Trigger相交(默认能)。
  10508. */
  10509. export type RaycastDesc = {
  10510. origin: Vector3
  10511. unitDir: Vector3
  10512. distance?: number
  10513. hit?: RaycastHit
  10514. layerMask?: number
  10515. }
  10516. /**
  10517. * 射线检测,判断给定射线是否与至少一个碰撞体相交,并返回与**最近**的那个碰撞体相交的信息。
  10518. */
  10519. export function raycast(
  10520. Phys3D: typeof phys3D,
  10521. system: phys3D.PhysSystem,
  10522. desc: RaycastDesc
  10523. ): boolean
  10524. }
  10525. declare module 'XrFrame/kanata/lib/frontend' {
  10526. import MeshRendererComponent from 'XrFrame/kanata/lib/frontend/component/MeshRendererComponent'
  10527. import renderEnv from 'XrFrame/kanata/lib/frontend/resource/renderEnv'
  10528. export { RenderEnv } from 'XrFrame/kanata/lib/frontend/resource/renderEnv'
  10529. export { default as AnimatorComponent } from 'XrFrame/kanata/lib/frontend/component/AnimatorComponent'
  10530. export { default as CameraComponent } from 'XrFrame/kanata/lib/frontend/component/CameraComponent'
  10531. export { default as LightCameraComponent } from 'XrFrame/kanata/lib/frontend/component/LightCameraComponent'
  10532. export { default as CullingComponent } from 'XrFrame/kanata/lib/frontend/component/CullingComponent'
  10533. export { default as MeshRendererComponent } from 'XrFrame/kanata/lib/frontend/component/MeshRendererComponent'
  10534. export { default as SkinnedSkeletonComponent } from 'XrFrame/kanata/lib/frontend/component/SkinnedSkeletonComponent'
  10535. export { default as DynamicBonesComponent } from 'XrFrame/kanata/lib/frontend/component/DynamicBonesComponent'
  10536. export { default as Entity2D } from 'XrFrame/kanata/lib/frontend/entity/Entity2D'
  10537. export { default as Entity3D } from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  10538. export { default as AnimationClipModel } from 'XrFrame/kanata/lib/frontend/resource/AnimationClipModel'
  10539. export { default as AnimationClipBinding } from 'XrFrame/kanata/lib/frontend/resource/AnimationClipBinding'
  10540. export { default as AnimatorControllerModel } from 'XrFrame/kanata/lib/frontend/resource/AnimatorControllerModel'
  10541. export { default as AnimatorControllerStateModel } from 'XrFrame/kanata/lib/frontend/resource/AnimatorControllerStateModel'
  10542. export { default as DataBuffer } from 'XrFrame/kanata/lib/frontend/resource/DataBuffer'
  10543. export { default as DataModel } from 'XrFrame/kanata/lib/frontend/resource/DataModel'
  10544. export { default as Effect } from 'XrFrame/kanata/lib/frontend/resource/Effect'
  10545. export { default as Material } from 'XrFrame/kanata/lib/frontend/resource/Material'
  10546. export {
  10547. default as RenderPass,
  10548. IRenderPassOptions
  10549. } from 'XrFrame/kanata/lib/frontend/resource/RenderPass'
  10550. export { default as SkeletonBoneInverseModel } from 'XrFrame/kanata/lib/frontend/resource/SkeletonBoneInverseModel'
  10551. export {
  10552. default as Texture,
  10553. ITextureOptions
  10554. } from 'XrFrame/kanata/lib/frontend/resource/Texture'
  10555. export { default as UniformBlock } from 'XrFrame/kanata/lib/frontend/resource/UniformBlock'
  10556. export { default as UniformDescriptor } from 'XrFrame/kanata/lib/frontend/resource/UniformDescriptor'
  10557. export { default as IndexBuffer } from 'XrFrame/kanata/lib/frontend/resource/IndexBuffer'
  10558. export { default as IndexData } from 'XrFrame/kanata/lib/frontend/resource/IndexData'
  10559. export { default as VertexBuffer } from 'XrFrame/kanata/lib/frontend/resource/VertexBuffer'
  10560. export { default as VertexData } from 'XrFrame/kanata/lib/frontend/resource/VertexData'
  10561. export { default as VertexLayout } from 'XrFrame/kanata/lib/frontend/resource/VertexLayout'
  10562. export { default as VertexDataDescriptor } from 'XrFrame/kanata/lib/frontend/resource/VertexDataDescriptor'
  10563. export { default as View } from 'XrFrame/kanata/lib/frontend/resource/View'
  10564. export { default as ScalableList } from 'XrFrame/kanata/lib/frontend/resource/ScalableList'
  10565. export { default as crossContext } from 'XrFrame/kanata/lib/frontend/shared/crossContext'
  10566. const IS_VALID: () => boolean,
  10567. GET_MAIN_CANVAS: () => HTMLCanvasElement,
  10568. Image: {
  10569. new (): import('XrFrame/kanata/lib/backend').IImage
  10570. IS(obj: any): obj is import('XrFrame/kanata/lib/backend').IImage
  10571. },
  10572. Phys3D: any
  10573. const downloader: import('XrFrame/kanata/lib/backend').IDownloader
  10574. export { renderEnv }
  10575. export {
  10576. Image,
  10577. downloader as Downloader,
  10578. IS_VALID,
  10579. GET_MAIN_CANVAS,
  10580. Phys3D
  10581. }
  10582. export const createWeakRef: <T>(wrapper: T) => {
  10583. deref: () => T
  10584. }
  10585. export const createWeakRefSentry: () => any
  10586. export const createNativeUUMap: () => import('XrFrame/kanata/lib/backend').INativeMap<number>
  10587. export const createNativeSUMap: () => import('XrFrame/kanata/lib/backend').INativeMap<string>
  10588. export const createNativeULUMap: () => import('XrFrame/kanata/lib/backend').ILongIntNativeMap
  10589. export const loadTTFFont: (
  10590. url: string,
  10591. callback: (font: string) => void
  10592. ) => void
  10593. export const getGlyphInfo: (
  10594. fontSetting: import('XrFrame/kanata/lib/backend').IFontSetting,
  10595. charCode: number
  10596. ) => import('XrFrame/kanata/lib/backend').IGlyphInfo
  10597. export const refreshNodesWorldTransform: () => void
  10598. export const setGlobalPhysicSystem: (system: any) => void
  10599. export const bindRigidBodyToNode: (rigidBody: any, nodeId: number) => void
  10600. export const bindCCTToNode: (cc: any, nodeId: number) => void
  10601. export const unbindRigidBody: (rigidBody: any) => void
  10602. export const unbindCCT: (cc: any) => void
  10603. export const decodeBase64: (base64: string) => ArrayBuffer
  10604. export const initDraco: () => Promise<void>
  10605. export const decodeDraco: (
  10606. buffer: ArrayBuffer | ArrayBufferView,
  10607. decodeType: import('XrFrame/kanata/lib/backend').EDracoDecodeType
  10608. ) => import('XrFrame/kanata/lib/backend').DracoDecoded
  10609. export function destroy(): void
  10610. export function update(delta: number): void
  10611. export const setNodeName: (id: number, name: string) => void
  10612. export const setRenderComponentName: (
  10613. comp: MeshRendererComponent,
  10614. name: string
  10615. ) => void
  10616. export const debugPrint: (msg: string) => void
  10617. export const eventBridge: {
  10618. bindEntityToBone: any
  10619. unbindEntityFromBone: any
  10620. bindEntitiesToBones: any
  10621. unbindEntitiesFromBones: any
  10622. }
  10623. }
  10624. declare module 'XrFrame/kanata/lib/backend/interface' {
  10625. /**
  10626. * index.ts
  10627. *
  10628. * * @Date : 2020/8/18 下午4:48:36
  10629. */
  10630. export interface IEngineSettings {
  10631. /** log过滤器 */
  10632. logFilter: boolean
  10633. /** log等级 */
  10634. logLevel: string
  10635. /** 最大缓存极限 */
  10636. cacheSizeLimit: number
  10637. /** 是否开启MSAA */
  10638. realSizeLimit: number
  10639. /** 设计分辨率宽 */
  10640. designWidth: number
  10641. /** 设计分辨率高 */
  10642. designHeight: number
  10643. /** 渲染分辨率宽 */
  10644. renderWidth: number
  10645. /** 渲染分辨率高 */
  10646. renderHeight: number
  10647. /** 是否开启MSAA */
  10648. mainScreenMSAA: boolean
  10649. /** 是否开启透明通道输出 */
  10650. alpha?: boolean
  10651. /** loader下载文件的默认根路径 */
  10652. baseURL: string
  10653. /** 如果baseURL找不到并且重试次数`globalHTTPRetry`大于0,则会依次尝试使用 */
  10654. backupURLs: string[]
  10655. /** 全局loader下载文件重试次数 */
  10656. globalHTTPRetry: string
  10657. /** 物理引擎的重力 */
  10658. gravity: number
  10659. /** 物理引擎的模拟步进固定间隔 */
  10660. fixedDeltaTime: number
  10661. useEngineSubcontext: boolean
  10662. /** 物理碰撞矩阵,以十六进制字符串表示 */
  10663. physics3DLayerCollisionMatrix: string
  10664. /** 拼缓存的文件名的 */
  10665. cacheDelimiter: string
  10666. /** 自动生成的worker文件入口路径 */
  10667. workerPath: string
  10668. /** worker执行任务超时时间 */
  10669. workerTimeout: number
  10670. gfxIgnoreAssert: boolean
  10671. profileGfx: string
  10672. /** 全局Uniform定义 */
  10673. shaderGlobalProperties: Array<{
  10674. key: string
  10675. type:
  10676. | 'Float'
  10677. | 'Vector2'
  10678. | 'Vector3'
  10679. | 'Vector4'
  10680. | 'Matrix4'
  10681. | 'Texture'
  10682. default: number | number[] | string
  10683. }>
  10684. /** 音频全局定义 */
  10685. audio?: {
  10686. /** 全局音量 */
  10687. globalVolume?: number
  10688. /** 真实音频数量上限 */
  10689. maxRealVoices?: number
  10690. }
  10691. }
  10692. /**
  10693. * 顶点数据格式枚举。
  10694. */
  10695. export enum EVertexFormat {
  10696. FLOAT = 0,
  10697. FLOAT2 = 1,
  10698. FLOAT3 = 2,
  10699. FLOAT4 = 3,
  10700. BYTE4 = 4,
  10701. BYTE4N = 5,
  10702. UBYTE4 = 6,
  10703. UBYTE4N = 7,
  10704. SHORT2 = 8,
  10705. SHORT2N = 9,
  10706. SHORT4 = 10,
  10707. SHORT4N = 11,
  10708. UINT10_N2 = 12
  10709. }
  10710. /**
  10711. * 顶点数据步进类型枚举。
  10712. */
  10713. export enum EVertexStep {
  10714. /**
  10715. * 逐顶点。
  10716. */
  10717. PER_VERTEX = 0,
  10718. /**
  10719. * 在使用Instance的情况下,逐实例。
  10720. */
  10721. PER_INSTANCE = 1
  10722. }
  10723. /**
  10724. * 索引数据类型。
  10725. */
  10726. export enum EIndexType {
  10727. /**
  10728. * 无效值。
  10729. */
  10730. NONE = 1,
  10731. /**
  10732. * 16位索引。
  10733. */
  10734. UINT16 = 2,
  10735. /**
  10736. * 32位索引,注意在某些设备上不支持。
  10737. */
  10738. UINT32 = 3
  10739. }
  10740. /**
  10741. * 压缩纹理类型。
  10742. */
  10743. export type TCompressTexture = 'etc1' | 'etc2' | 'astc' | 'pvrtc' | 's3tc'
  10744. /**
  10745. * 纹理类型雷剧。
  10746. */
  10747. export enum ETextureType {
  10748. /**
  10749. * 2D纹理。
  10750. */
  10751. D2 = 0,
  10752. /**
  10753. * 立方体纹理。
  10754. */
  10755. Cube = 1,
  10756. /**
  10757. * 2D纹理数组。
  10758. */
  10759. D2Array = 2,
  10760. /**
  10761. * 3D纹理。
  10762. */
  10763. D3 = 3
  10764. }
  10765. /**
  10766. * 纹理格式枚举。
  10767. */
  10768. export enum ETextureFormat {
  10769. /** Inputs or Render Target Formats. */
  10770. RGBA8 = 0,
  10771. SRGBA8 = 1,
  10772. RGB10A2 = 2,
  10773. RG8 = 3,
  10774. R8 = 4,
  10775. RGBA32F = 5,
  10776. RGBA16F = 6,
  10777. RG11B10F = 7,
  10778. RGB8 = 8,
  10779. RGB16F = 9,
  10780. RGB32F = 10,
  10781. /** Render Target Only. */
  10782. Depth_Low = 20,
  10783. Depth_High = 21,
  10784. Depth_Stencil = 22,
  10785. RGBA4 = 23,
  10786. RGB565 = 24,
  10787. RGB5A1 = 25,
  10788. /** Compresseds */
  10789. ETC1RGB8 = 100,
  10790. ETC2RGB8 = 110,
  10791. ETC2RGBA8 = 111,
  10792. PVRTC2RGBV1 = 120,
  10793. PVRTC4RGBV1 = 121,
  10794. PVRTC2RGBAV1 = 122,
  10795. PVRTC4RGBAV1 = 123,
  10796. ASTC4x4 = 140,
  10797. ASTC5x5 = 141,
  10798. ASTC6x6 = 142,
  10799. ASTC8x6 = 143,
  10800. ASTC8x8 = 144,
  10801. DXT1 = 150,
  10802. DXT3 = 151,
  10803. DXT5 = 152
  10804. }
  10805. /**
  10806. * 纹理寻址模式枚举。
  10807. */
  10808. export enum EWrapMode {
  10809. REPEAT = 1,
  10810. CLAMP_TO_EDGE = 2,
  10811. MIRRORED_REPEAT = 3
  10812. }
  10813. /**
  10814. * 纹理过滤模式枚举。
  10815. */
  10816. export enum EFilterMode {
  10817. NEAREST = 1,
  10818. LINEAR = 2,
  10819. NEAREST_MIPMAP_NEAREST = 3,
  10820. NEAREST_MIPMAP_LINEAR = 4,
  10821. LINEAR_MIPMAP_NEAREST = 5,
  10822. LINEAR_MIPMAP_LINEAR = 6
  10823. }
  10824. /**
  10825. * Uniform值得类型枚举。
  10826. */
  10827. export enum EUniformType {
  10828. FLOAT = 0,
  10829. FLOAT2 = 1,
  10830. FLOAT3 = 2,
  10831. FLOAT4 = 3,
  10832. MAT2 = 4,
  10833. MAT3 = 5,
  10834. MAT4 = 6,
  10835. SAMPLER = 7
  10836. }
  10837. /**
  10838. * 背面剔除类型枚举。
  10839. */
  10840. export enum ECullMode {
  10841. NONE = 0,
  10842. FRONT = 1,
  10843. BACK = 2
  10844. }
  10845. /**
  10846. * 正面顶点绕序枚举。
  10847. */
  10848. export enum EFaceWinding {
  10849. CCW = 1,
  10850. CW = 2
  10851. }
  10852. /**
  10853. * 各种测试的比较函数枚举。
  10854. */
  10855. export enum ECompareFunc {
  10856. LESS = 1,
  10857. LEQUAL = 2,
  10858. EQUAL = 3,
  10859. GEQUAL = 4,
  10860. GREATER = 5,
  10861. NOTEQUAL = 6,
  10862. NEVER = 7,
  10863. ALWAYS = 8
  10864. }
  10865. /**
  10866. * 模板测试操作枚举。
  10867. */
  10868. export enum EStencilOp {
  10869. ZERO = 0,
  10870. KEEP = 1,
  10871. REPLACE = 2,
  10872. INCR_WRAP = 3,
  10873. INCR = 4,
  10874. DECR_WRAP = 5,
  10875. DECR = 6,
  10876. INVERT = 7
  10877. }
  10878. /**
  10879. * 混合因子枚举。
  10880. */
  10881. export enum EBlendFactor {
  10882. ZERO = 0,
  10883. ONE = 1,
  10884. SRC_COLOR = 2,
  10885. ONE_MINUS_SRC_COLOR = 3,
  10886. SRC_ALPHA = 4,
  10887. ONE_MINUS_SRC_ALPHA = 5,
  10888. DST_ALPHA = 6,
  10889. ONE_MINUS_DST_ALPHA = 7,
  10890. DST_COLOR = 8,
  10891. ONE_MINUS_DST_COLOR = 9,
  10892. SRC_ALPHA_SATURATE = 10,
  10893. CONSTANT_COLOR = 11,
  10894. ONE_MINUS_CONSTANT_COLOR = 12
  10895. }
  10896. /**
  10897. * 混合方式枚举。
  10898. */
  10899. export enum EBlendEquation {
  10900. FUNC_ADD = 0,
  10901. FUNC_SUBTRACT = 1,
  10902. FUNC_REVERSE_SUBTRACT = 2,
  10903. MIN = 3,
  10904. MAX = 4
  10905. }
  10906. /**
  10907. * 颜色通道掩码枚举。
  10908. */
  10909. export enum EColorMask {
  10910. /**
  10911. * 将会禁掉所有通道的输出。
  10912. */
  10913. NONE = 16,
  10914. R = 1,
  10915. G = 2,
  10916. B = 4,
  10917. A = 8,
  10918. RGB = 7,
  10919. RGBA = 15
  10920. }
  10921. /**
  10922. * 像素数据类型枚举。
  10923. */
  10924. export enum EPixelType {
  10925. UNSIGNED_BYTE = 5121,
  10926. FLOAT = 5126,
  10927. UNSIGNED_SHORT_5_6_5 = 33635,
  10928. UNSIGNED_SHORT_4_4_4_4 = 32819,
  10929. UNSIGNED_SHORT_5_5_5_1 = 32820
  10930. }
  10931. /**
  10932. * 清屏操作枚举。
  10933. */
  10934. export enum ELoadAction {
  10935. /**
  10936. * 清除屏幕颜色。
  10937. */
  10938. CLEAR = 0,
  10939. /**
  10940. * 不清屏,但依赖前面渲染的结果。
  10941. */
  10942. LOAD = 1,
  10943. /**
  10944. * 完全不关心是否清屏。
  10945. */
  10946. DONTCARE = 2
  10947. }
  10948. export enum EDataModelType {
  10949. AnimationClip = 1,
  10950. SkeletonBoneInverse = 2
  10951. }
  10952. /**
  10953. * 渲染组件类型枚举。
  10954. */
  10955. export enum EMeshRenderType {
  10956. /**
  10957. * 未知类型。
  10958. */
  10959. UnKnown = 0,
  10960. /**
  10961. * 静态3D类型。
  10962. */
  10963. Static3D = 1,
  10964. /**
  10965. * 蒙皮3D类型。
  10966. */
  10967. Skinned3D = 2,
  10968. /**
  10969. * UI类型。
  10970. */
  10971. UI = 3
  10972. }
  10973. /**
  10974. * 图元渲染类型枚举。
  10975. */
  10976. export enum EPrimitiveType {
  10977. TRIANGLES = 0,
  10978. TRIANGLE_STRIP = 1,
  10979. LINES = 2,
  10980. LINE_STRIP = 3,
  10981. POINTS = 4,
  10982. ZERO = 5
  10983. }
  10984. /**
  10985. * 阴影类型枚举。
  10986. */
  10987. export enum EShadowMode {
  10988. /**
  10989. * 关闭阴影。
  10990. */
  10991. None = 0,
  10992. /**
  10993. * 开启单级联阴影,并开启PCF。
  10994. */
  10995. OneCascade_PCF = 1,
  10996. /**
  10997. * 开启二级联阴影,并开启PCF。
  10998. */
  10999. TwoCascade_PCF = 2,
  11000. /**
  11001. * 开启四级联阴影,并开启PCF。
  11002. */
  11003. FourCascade_PCF = 4,
  11004. /**
  11005. * 开启单级联阴影,并开启PCSS。
  11006. */
  11007. PCSS = 5
  11008. }
  11009. /**
  11010. * 阴影匹配类型枚举。
  11011. */
  11012. export enum EShadowFitMode {
  11013. /**
  11014. * 阴影范围适配视锥体。
  11015. * 更稳定,可能降低阴影精度。
  11016. */
  11017. FitFrustum = 0,
  11018. /**
  11019. * 阴影范围适配物体。
  11020. * 能提高阴影精度,但可能会导致阴影不稳定。
  11021. */
  11022. FitObjects = 1
  11023. }
  11024. /**
  11025. * 顶点数据布局用途枚举。
  11026. */
  11027. export enum EVertexLayoutUsage {
  11028. CUSTOM = 0,
  11029. POSITION = 1,
  11030. NORMAL = 2,
  11031. TANGENT = 3,
  11032. UV0 = 4,
  11033. UV1 = 5,
  11034. UV2 = 6,
  11035. UV3 = 7,
  11036. COLOR = 8,
  11037. BONEINDEX = 9,
  11038. BONEWEIGHT = 10
  11039. }
  11040. /**
  11041. * 动态合批操作符枚举。
  11042. */
  11043. export enum EVertexBatchOperator {
  11044. /**
  11045. * 矩阵乘法。
  11046. */
  11047. MatrixMultiple = 0,
  11048. /**
  11049. * Scale offset。
  11050. */
  11051. UVST = 1
  11052. }
  11053. export enum EAnimationBlendType {
  11054. Override = 0,
  11055. Additive = 1
  11056. }
  11057. export enum EUseDefaultAddedAction {
  11058. Ignore = 0,
  11059. Refresh = 1
  11060. }
  11061. export enum EUseDefaultRetainedAction {
  11062. Keep = 0,
  11063. Refresh = 1,
  11064. WriteBack = 2
  11065. }
  11066. export enum EUseDefaultRemovedAction {
  11067. Keep = 0,
  11068. Clear = 1,
  11069. WriteBack = 2
  11070. }
  11071. export enum ESkinnedSkeletonFlag {
  11072. Use3x4Matrix = 1,
  11073. UseTextureMatrix = 2
  11074. }
  11075. export const RENDER_ENV_OFFSETS: {
  11076. size: number
  11077. resetFlag: number
  11078. renderPass: number
  11079. canvasWidth: number
  11080. canvasHeight: number
  11081. uniforms: number
  11082. useInstanceOrNeverTranspose: number
  11083. }
  11084. export const POOL_SUB_ID_MASK = 65472
  11085. export const POOL_SUB_ID_SHIT = 6
  11086. export const ENTITY2D_OFFSETS: {
  11087. size: number
  11088. rotation: number
  11089. position: number
  11090. scale: number
  11091. worldMatrix: number
  11092. }
  11093. export const ENTITY3D_OFFSETS: {
  11094. size: number
  11095. dfRotationType: number
  11096. rotationType: number
  11097. rotation: number
  11098. position: number
  11099. scale: number
  11100. worldOffset: number
  11101. worldMatrix: number
  11102. }
  11103. export const ENTITY3D_EXT_OFFSETS: {
  11104. size: number
  11105. layer: number
  11106. mixedLayerMask: number
  11107. }
  11108. export const CULLING_OFFSETS: {
  11109. size: number
  11110. active: number
  11111. dfActive: number
  11112. layer: number
  11113. boundingBallCenter: number
  11114. boundingBallRadius: number
  11115. entityId: number
  11116. }
  11117. export const CAMERA_OFFSETS: {
  11118. size: number
  11119. view: number
  11120. depth: number
  11121. active: number
  11122. fov: number
  11123. aspect: number
  11124. near: number
  11125. far: number
  11126. up: number
  11127. eye: number
  11128. orthoSize: number
  11129. isProjection: number
  11130. cullingMask: number
  11131. canvasSizeY: number
  11132. targetTransform: number
  11133. viewMatrix: number
  11134. projectionMatrix: number
  11135. viewMatrixInverse: number
  11136. viewMatrix2D: number
  11137. projectionMatrix2D: number
  11138. viewMatrixInverse2D: number
  11139. manualMatrix: number
  11140. layerCullDistances: number
  11141. }
  11142. export const LIGHT_OFFSETS: {
  11143. size: number
  11144. view: number
  11145. depth: number
  11146. active: number
  11147. shadowDistance: number
  11148. shadowMode: number
  11149. shadowFilterMode: number
  11150. lightDir: number
  11151. bounds: number
  11152. lightSpaceMatrices: number
  11153. }
  11154. export const MESH_OFFSETS: {
  11155. dynamicBatch: number
  11156. skinHandle: number
  11157. castShadow: number
  11158. bindTarget: number
  11159. start: number
  11160. size: number
  11161. materialId: number
  11162. vertexBufferId: number
  11163. indexBufferId: number
  11164. startIndex: number
  11165. numIndices: number
  11166. }
  11167. export const EFFECT_OFFSETS: {
  11168. size: number
  11169. useMaterialStates: number
  11170. fstencil: number
  11171. bstencil: number
  11172. blendRGBA: number
  11173. colorDepth: number
  11174. state: number
  11175. }
  11176. export const MATERIAL_OFFSETS: {
  11177. size: number
  11178. renderQueue: number
  11179. effect: number
  11180. uniformBlock: number
  11181. fstencilMask: number
  11182. bstencilMask: number
  11183. blendRGBAMask: number
  11184. colorDepthMask: number
  11185. stateMask: number
  11186. fstencil: number
  11187. bstencil: number
  11188. blendRGBA: number
  11189. colorDepth: number
  11190. state: number
  11191. useInstance: number
  11192. }
  11193. export const SKINNED_SKELETON_OFFSETS: {
  11194. boneInverseModelId: number
  11195. boneIndices: number
  11196. perBoneIndices: number
  11197. perBoneEntityId: number
  11198. perBoneMatrixOld: number
  11199. perBoneMatrixNew: number
  11200. }
  11201. export const DYNAMIC_BONES_OFFSETS: {
  11202. stiffness: number
  11203. elasticity: number
  11204. damping: number
  11205. }
  11206. export interface IHandle {
  11207. id: number
  11208. data?: ArrayBuffer
  11209. destroy?: Function
  11210. __feObj?: any
  11211. }
  11212. /**
  11213. * 顶点布局解构初始化参数。
  11214. */
  11215. export interface IVertexLayoutOptions {
  11216. /**
  11217. * 顶点属性列表。
  11218. */
  11219. attributes: Array<{
  11220. /**
  11221. * 属性名字。
  11222. */
  11223. name: string
  11224. /**
  11225. * 属性名格式。
  11226. */
  11227. format: EVertexFormat
  11228. /**
  11229. * 属性在Buffer中的偏移量(字节)。
  11230. */
  11231. offset: number
  11232. /**
  11233. * 属性的用途。
  11234. */
  11235. usage: EVertexLayoutUsage
  11236. }>
  11237. /**
  11238. * 步进类型。
  11239. *
  11240. * @default EVertexStep.PER_VERTEX
  11241. */
  11242. step?: EVertexStep
  11243. /**
  11244. * 步长,不设定会自动计算。
  11245. */
  11246. stride?: number
  11247. /**
  11248. * 步进单位。
  11249. *
  11250. * @default 1
  11251. */
  11252. stepRate?: number
  11253. }
  11254. /**
  11255. * 动态合批描述符创建参数。
  11256. */
  11257. export interface IVertexDataDescriptorOptions {
  11258. vuMap: Array<[string, string, EVertexBatchOperator?]>
  11259. ignored?: string[]
  11260. ubIndex?: number
  11261. }
  11262. /**
  11263. * UniformBlock描述符创建参数。
  11264. */
  11265. export interface IUniformDescriptorOptions {
  11266. /**
  11267. * 名字。
  11268. */
  11269. name?: string
  11270. /**
  11271. * Uniform描述列表。
  11272. */
  11273. uniforms: Array<{
  11274. /**
  11275. * 名字。
  11276. */
  11277. name: string
  11278. /**
  11279. * 类型。
  11280. */
  11281. type: EUniformType
  11282. /**
  11283. * 长度。
  11284. */
  11285. num?: number
  11286. /**
  11287. * @deprecated
  11288. */
  11289. needTranspose?: boolean
  11290. }>
  11291. }
  11292. /**
  11293. * 引擎原生图片接口。
  11294. */
  11295. export interface IImage {
  11296. /**
  11297. * 是否要预乘Alpha。
  11298. */
  11299. premultiplyAlpha: boolean
  11300. /**
  11301. * 加载完成的回调。
  11302. */
  11303. onload: (() => void) | null
  11304. /**
  11305. * 出错的回调。
  11306. */
  11307. onerror: ((error: Error) => void) | null
  11308. /**
  11309. * @internal
  11310. */
  11311. buffer?: ArrayBuffer
  11312. /**
  11313. * 对于`ArrayBuffer`创建的图片,第一次使用后是否要自动释放内存,在`xr-frame`中,默认自动释放。
  11314. */
  11315. autoRelease?: boolean
  11316. /**
  11317. * 图片地址或者待解码的ArrayBuffer。
  11318. */
  11319. src: string | ArrayBuffer | ArrayBufferView
  11320. /**
  11321. * 图片源于ArrayBuffer时,传入的mimetype。
  11322. */
  11323. type?: string
  11324. /**
  11325. * 图片本地缓存地址,仅在微信内有用。
  11326. */
  11327. localPath?: string
  11328. /**
  11329. * 图片宽度。
  11330. */
  11331. width: number
  11332. /**
  11333. * 图片高度。
  11334. */
  11335. height: number
  11336. /**
  11337. * 解码数据,视不同Backend而定。
  11338. */
  11339. readonly data?: ArrayBuffer | HTMLImageElement
  11340. }
  11341. /**
  11342. * 可用于纹理的资源。
  11343. */
  11344. export type TTextureSource = ArrayBuffer | ArrayBufferView | IImage
  11345. /**
  11346. * 外部需要注入的下载器接口。
  11347. */
  11348. export interface IRealDownloader {
  11349. load: (options: {
  11350. src: string
  11351. encoding: 'binary' | 'utf-8' | undefined
  11352. onLoad: (res: { data: ArrayBuffer, filePath: string }) => void
  11353. onError: (error: Error) => void
  11354. }) => void
  11355. }
  11356. /**
  11357. * 下载器。
  11358. */
  11359. export interface IDownloader {
  11360. inWX: boolean
  11361. REAL_DOWNLOADER: IRealDownloader
  11362. LOAD(options: Parameters<IRealDownloader['load']>[0]): void
  11363. }
  11364. /**
  11365. * 字体配置。
  11366. */
  11367. export interface IFontSetting {
  11368. fontFamily: string
  11369. bold?: string
  11370. italic?: string
  11371. size?: number
  11372. }
  11373. /**
  11374. * 渲染层提供的特性列表。
  11375. */
  11376. export interface IFeatures {
  11377. /**
  11378. * 是否支持GPU实例化。
  11379. */
  11380. gpuInstance: boolean
  11381. /**
  11382. * 是否支持3D动态合批。
  11383. */
  11384. dynamicBatch3D: boolean
  11385. /**
  11386. * 是否支持硬件SRGB解码。
  11387. */
  11388. srgb: boolean
  11389. /**
  11390. * 是否支持各向异性滤波。
  11391. */
  11392. textureAnisotropic: boolean
  11393. /**
  11394. * 是否支持浮点纹理。
  11395. */
  11396. textureFloat: boolean
  11397. /**
  11398. * 是否支持半精度浮点纹理。
  11399. */
  11400. textureHalfFloat: boolean
  11401. /**
  11402. * 是否支持浮点类型的颜色缓冲。
  11403. */
  11404. colorBufferFloat: boolean
  11405. /**
  11406. * 是否支持深度纹理。
  11407. */
  11408. depthTexture: boolean
  11409. /**
  11410. * 是否支持在片段着色器采样深度。
  11411. */
  11412. fragDepth: boolean
  11413. }
  11414. export interface IRect {
  11415. x: number
  11416. y: number
  11417. w: number
  11418. h: number
  11419. }
  11420. /**
  11421. * 对一个View进行清屏的操作。
  11422. */
  11423. export interface IViewAction {
  11424. /**
  11425. * 颜色操作。
  11426. */
  11427. colorAction?: ELoadAction
  11428. /**
  11429. * 深度操作。
  11430. */
  11431. depthAction?: ELoadAction
  11432. /**
  11433. * 模板操作。
  11434. */
  11435. stencilAction?: ELoadAction
  11436. /**
  11437. * 用于清屏的颜色值。
  11438. *
  11439. * @default [0,0,0,0]
  11440. */
  11441. clearColor?: [number, number, number, number]
  11442. /**
  11443. * 用于清屏的深度值。
  11444. *
  11445. * @default 1
  11446. */
  11447. clearDepth?: number
  11448. /**
  11449. * 用于清屏的模板值。
  11450. *
  11451. * @default 0
  11452. */
  11453. clearStencil?: number
  11454. }
  11455. /**
  11456. * 视图接口。
  11457. */
  11458. export interface IView {
  11459. /**
  11460. * 视图清屏操作。
  11461. */
  11462. passAction: IViewAction
  11463. /**
  11464. * 视图区域。
  11465. */
  11466. viewport: IRect
  11467. /**
  11468. * 裁剪区域。
  11469. */
  11470. scissor: IRect
  11471. }
  11472. /**
  11473. * 附件接口。
  11474. */
  11475. export interface IAttachment {
  11476. texture: IHandle
  11477. level?: number
  11478. slice?: number
  11479. }
  11480. /**
  11481. * 渲染通道描述符。
  11482. */
  11483. export interface IRenderPassDescriptor {
  11484. colors: IAttachment[]
  11485. depth: IAttachment
  11486. stencil: IAttachment
  11487. }
  11488. export enum EEventType {
  11489. SetRootEntity = 1,
  11490. AddChild = 2,
  11491. AddChildAtIndex = 3,
  11492. RemoveFromParent = 4,
  11493. DisperseSubTree = 5,
  11494. BindToBone = 6,
  11495. BindToBones = 7,
  11496. UnBindFromBone = 8,
  11497. UnBindFromBones = 9,
  11498. EntityCommandActive = 10,
  11499. EntityCommandInActive = 11
  11500. }
  11501. export interface IGlyphInfo {
  11502. code: number
  11503. tex: number
  11504. uv_x: number
  11505. uv_y: number
  11506. uv_w: number
  11507. uv_h: number
  11508. advance: number
  11509. bearing_x: number
  11510. bearing_y: number
  11511. width: number
  11512. height: number
  11513. }
  11514. export interface IEventBridge {
  11515. entityAddChild(entity: number, child: number): void
  11516. entityAddChildAtIndex(
  11517. entity: number,
  11518. child: number,
  11519. index: number
  11520. ): void
  11521. entityRemoveFromParent(entity: number): void
  11522. entityClear(entity: number): void
  11523. entitySetActive(entity: number, active: boolean): void
  11524. entitySetLocalMatrixDirty(entity: number): void
  11525. setRootEntity(entity: number): void
  11526. refreshWorldTransform(): void
  11527. bindEntityToBone(
  11528. entity: {
  11529. id: number
  11530. },
  11531. boneEntity: {
  11532. id: number
  11533. }
  11534. ): void
  11535. unbindEntityFromBone(entity: { id: number }): void
  11536. bindEntitiesToBones(
  11537. entities: Array<{
  11538. id: number
  11539. }>,
  11540. boneEntities: Array<{
  11541. id: number
  11542. }>
  11543. ): void
  11544. unbindEntitiesFromBones(
  11545. entities: Array<{
  11546. id: number
  11547. }>
  11548. ): void
  11549. }
  11550. export interface IRenderEnv extends IHandle {
  11551. version?: string
  11552. backendType: string
  11553. registerFallbackEffect(lightMode: string, handle?: IHandle): void
  11554. changeMacros(macros: {
  11555. [name: string]: string | number | boolean
  11556. }): void
  11557. changeVirtualMacros(macros: { [name: string]: boolean }): void
  11558. setInternalInstanceInfo(
  11559. type: EMeshRenderType,
  11560. info: Array<{
  11561. uniformKey: string
  11562. attributeName: string
  11563. type: EUniformType
  11564. }>,
  11565. ignored: string[]
  11566. ): void
  11567. getErrors(): string[]
  11568. supportCompressTextures: TCompressTexture[]
  11569. features: IFeatures
  11570. commit_version: string
  11571. use_puppet_sokol: boolean
  11572. }
  11573. export interface INativeMap<T> {
  11574. set(key: T, value: number): void
  11575. get(key: T): number | undefined
  11576. del(key: T): void
  11577. }
  11578. export interface ILongIntNativeMap {
  11579. set(key1: number, key2: number, value: number): void
  11580. get(key1: number, key2: number): number | undefined
  11581. del(key1: number, key2: number): void
  11582. }
  11583. export type WeakRef = any
  11584. export enum EDracoErrorCode {
  11585. kDecodeErrorNone = 0,
  11586. kDecodeErrorDecodeGeometryType = 1,
  11587. kDecodeErrorDracoDecode = 2,
  11588. kDecodeErrorAttributeEmpty = 3,
  11589. kDecodeErrorAttributeSizeNotEqual = 4,
  11590. kDecodeErrorDecodeTypeError = 5
  11591. }
  11592. export enum EDracoGeometryType {
  11593. kGeometryTypeInvalid = -1,
  11594. kGeometryTypeTriangleMesh = 0,
  11595. kGeometryTypePointCloud = 1
  11596. }
  11597. export enum EDracoDecodeType {
  11598. kDecodeTypeCross = 0
  11599. }
  11600. export enum EDracoDataType {
  11601. DT_INVALID = 0,
  11602. DT_INT8 = 1,
  11603. DT_UINT8 = 2,
  11604. DT_INT16 = 3,
  11605. DT_UINT16 = 4,
  11606. DT_INT32 = 5,
  11607. DT_UINT32 = 6,
  11608. DT_INT64 = 7,
  11609. DT_UINT64 = 8,
  11610. DT_FLOAT32 = 9,
  11611. DT_FLOAT64 = 10,
  11612. DT_BOOL = 11,
  11613. DT_TYPES_COUNT = 12
  11614. }
  11615. export interface DracoDecoded {
  11616. errCode: EDracoErrorCode
  11617. buffer: ArrayBuffer
  11618. geoType: EDracoGeometryType
  11619. stride: number
  11620. count: number
  11621. numIndices: number
  11622. attrs: Array<{
  11623. numComponents: number
  11624. dataType: EDracoDataType
  11625. offset: number
  11626. numBytes: number
  11627. }>
  11628. }
  11629. }
  11630. declare module 'XrFrame/kanata/lib/index' {
  11631. /**
  11632. * index.ts
  11633. *
  11634. * * @Date : 2020/8/18 下午4:48:36
  11635. */
  11636. export * from 'XrFrame/kanata/lib/frontend'
  11637. export * from 'XrFrame/kanata/lib/backend/interface'
  11638. export const VERSION = '1.0.4'
  11639. const Puppet: any
  11640. export { Puppet }
  11641. /**
  11642. * 根据数据,返回二维节点对应结构的Float32array
  11643. */
  11644. export function composeRawBufferEntity2D(
  11645. rotation: number,
  11646. position: ArrayLike<number>,
  11647. scale: ArrayLike<number>
  11648. ): Float32Array
  11649. /**
  11650. * 根据数据,返回三维节点对应结构的Float32array,除WorldMatrix。
  11651. */
  11652. export function composeRawBufferEntity3D(
  11653. useEuler: boolean,
  11654. rotation: ArrayLike<number>,
  11655. position: ArrayLike<number>,
  11656. scale: ArrayLike<number>
  11657. ): Float32Array
  11658. /**
  11659. * 根据数据,返回三维节点对应结构的Float32array
  11660. */
  11661. export function composeRawBufferEntity3DWhole(
  11662. useEuler: boolean,
  11663. rotation: ArrayLike<number>,
  11664. position: ArrayLike<number>,
  11665. scale: ArrayLike<number>
  11666. ): Float32Array
  11667. }
  11668. declare module 'XrFrame/components/text/types' {
  11669. import { Kanata } from 'XrFrame/ext'
  11670. import { IGlyph } from 'XrFrame/glyph'
  11671. export interface IRenderData {
  11672. vertexBuffer?: Kanata.VertexBuffer
  11673. indexBuffer?: Kanata.IndexBuffer
  11674. vertexNum?: number
  11675. indiceNum?: number
  11676. texture?: number
  11677. }
  11678. export interface ICharacterData {
  11679. x: number
  11680. y: number
  11681. width: number
  11682. height: number
  11683. batchIndex: number
  11684. character: string
  11685. glyph: IGlyph
  11686. }
  11687. export enum EHorzAlignment {
  11688. Left = 0,
  11689. Center = 1,
  11690. Right = 2
  11691. }
  11692. export enum EVertAlignment {
  11693. Top = 0,
  11694. Middle = 1,
  11695. Bottom = 2
  11696. }
  11697. }
  11698. declare module 'XrFrame/glyph' {
  11699. export interface IGlyph {
  11700. character?: string
  11701. offsetX: number
  11702. offsetY: number
  11703. bearingX: number
  11704. bearingY: number
  11705. advance: number
  11706. width: number
  11707. height: number
  11708. uvs: number[]
  11709. texture: number
  11710. }
  11711. }
  11712. declare module 'XrFrame/components/text/typesetting' {
  11713. import {
  11714. EHorzAlignment,
  11715. EVertAlignment,
  11716. ICharacterData
  11717. } from 'XrFrame/components/text/types'
  11718. import { IGlyph } from 'XrFrame/glyph'
  11719. export function Typesetting(
  11720. glyphs: IGlyph[],
  11721. batchArrays: ICharacterData[][],
  11722. batchIndexs: number[],
  11723. wrapWidth: number,
  11724. wrapHeight: number,
  11725. lineHeight: number,
  11726. anchor: number[],
  11727. padding: number[],
  11728. vertAlign: EVertAlignment,
  11729. horzAlign: EHorzAlignment
  11730. ): void
  11731. }
  11732. declare module 'XrFrame/components/text/fillRenderData' {
  11733. import { ICharacterData } from 'XrFrame/components/text/types'
  11734. export function FillRenderData(
  11735. vertexF32: Float32Array,
  11736. indexU16: Uint16Array,
  11737. batchArray: ICharacterData[]
  11738. ): void
  11739. }
  11740. declare module 'XrFrame/components/particle/ParticleInstance' {
  11741. import {
  11742. FactorGradient,
  11743. ColorGradient
  11744. } from 'XrFrame/components/particle/gradient'
  11745. import Particle from 'XrFrame/components/particle/Particle'
  11746. import Vector2 from 'XrFrame/math/vector2'
  11747. import Vector3 from 'XrFrame/math/vector3'
  11748. import Vector4 from 'XrFrame/math/vector4'
  11749. export default class ParticleInstance {
  11750. static count: number
  11751. id: number
  11752. position: Vector3
  11753. direction: Vector3
  11754. speed: number
  11755. color: Vector4
  11756. colorStep: Vector4
  11757. rampPos: Vector4
  11758. lifeTime: number
  11759. age: number
  11760. drag: number
  11761. size: number
  11762. startSize: number
  11763. sizeGradientFactor: number
  11764. scale: Vector2
  11765. angle: number
  11766. angularSpeed: number
  11767. particleSystem: Particle
  11768. currentSize: number
  11769. currentSize2: number
  11770. currentSizeGradient: FactorGradient
  11771. currentColor: Vector4
  11772. currentColor2: Vector4
  11773. currentColorGradient: ColorGradient
  11774. currentAlpha: number
  11775. currentAlpha2: number
  11776. currentAlphaGradient: FactorGradient
  11777. currentSpeedScale: number
  11778. currentSpeedScale2: number
  11779. currentSpeedScaleGradient: FactorGradient
  11780. currentLimitSpeed: number
  11781. currentLimitSpeed2: number
  11782. currentLimitSpeedGradient: FactorGradient
  11783. currentDrag: number
  11784. currentDrag2: number
  11785. currentDragGradient: FactorGradient
  11786. subEmitterMuster: any
  11787. startSpriteCellIndex: number
  11788. endSpriteCellIndex: number
  11789. cellIndex: number
  11790. randomCellOffset: any
  11791. constructor(particle: Particle)
  11792. /**
  11793. * 重置粒子实例的状态。
  11794. */
  11795. reset(): void
  11796. /**
  11797. * 将当前粒子实例的状态拷贝到目标实例。
  11798. * @param {ParticleInstance} other 目标粒子实例
  11799. */
  11800. copyTo(other: ParticleInstance): void
  11801. /**
  11802. * 更新从动画图集采样的帧序号
  11803. */
  11804. updateCellIndex(): void
  11805. clamp(num: any, left?: number, right?: number): any
  11806. }
  11807. }
  11808. declare module 'XrFrame/components/emitter/BasicShapeEmitter' {
  11809. import Vector3 from 'XrFrame/math/vector3'
  11810. import ParticleInstance from 'XrFrame/components/particle/ParticleInstance'
  11811. import Matrix4 from 'XrFrame/math/matrix4'
  11812. export abstract class BasicShapeEmitter {
  11813. /**
  11814. * keep normalized length
  11815. */
  11816. direction?: Vector3
  11817. /**
  11818. * keep normalized length
  11819. */
  11820. direction2?: Vector3
  11821. abstract startDirection(
  11822. worldMatrix: Matrix4,
  11823. direction: Vector3,
  11824. ...args: any[]
  11825. ): void
  11826. abstract startPosition(
  11827. worldMatrix: Matrix4,
  11828. position: Vector3,
  11829. ...args: any[]
  11830. ): void
  11831. processInstance?(instance: ParticleInstance, deltaTime: number): void
  11832. setProperty(properties: any): void
  11833. }
  11834. }
  11835. declare module 'XrFrame/components/emitter' {
  11836. import BoxShapeEmitter from 'XrFrame/components/emitter/BoxShapeEmitter'
  11837. import PointShapeEmitter from 'XrFrame/components/emitter/PointShapeEmitter'
  11838. import DrawShapeEmitter from 'XrFrame/components/emitter/DrawShapeEmitter'
  11839. import SphereShapeEmitter from 'XrFrame/components/emitter/SphereShapeEmitter'
  11840. import ConeShapeEmitter from 'XrFrame/components/emitter/ConeShapeEmitter'
  11841. import CircleShapeEmitter from 'XrFrame/components/emitter/CircleShapeEmitter'
  11842. export {
  11843. BoxShapeEmitter,
  11844. PointShapeEmitter,
  11845. DrawShapeEmitter,
  11846. SphereShapeEmitter,
  11847. ConeShapeEmitter,
  11848. CircleShapeEmitter
  11849. }
  11850. }
  11851. declare module 'XrFrame/components/emitter/SubEmitter' {
  11852. import Particle from 'XrFrame/components/particle/Particle'
  11853. /**
  11854. * 粒子子发射器的依附状态。
  11855. */
  11856. export const enum SubEmitterState {
  11857. /**
  11858. * 依附于粒子整个生命周期
  11859. */
  11860. ATTACH = 0,
  11861. /**
  11862. * 在粒子生命周期末出现
  11863. */
  11864. END = 1
  11865. }
  11866. export class SubEmitter {
  11867. particleSystem: Particle
  11868. state: SubEmitterState
  11869. constructor(particleSystem: any)
  11870. /**
  11871. * 通过克隆,获取指定的粒子子发射器实例
  11872. * @return {SubEmitter} 克隆后的子发射器实例
  11873. */
  11874. clone(): SubEmitter
  11875. }
  11876. }
  11877. declare module 'XrFrame/physics/event' {
  11878. import type Element from 'XrFrame/core/Element'
  11879. /**
  11880. * 物理{@link PhysicsDelegate | Delegate}注册的事件回调类型。
  11881. * @category Physics
  11882. * @template E 事件回调接收的参数类型。
  11883. */
  11884. export type DelegateHandler<E> = (e: E) => void
  11885. /**
  11886. * 挂在entity上的delegate, 不持有native comp,
  11887. * 而是持有多个subDelegate, 通过这些subDelegate来invoke.
  11888. * 主要作用是让script里可以直接写个onCollisionEnter()的函数来接收该节点下所有物理组件的事件.
  11889. */
  11890. export class SharedDelegate<E extends object> {
  11891. add(handler: DelegateHandler<E>, context?: any): void
  11892. remove(handler: DelegateHandler<E>): void
  11893. invoke(e: E): void
  11894. dispose(): void
  11895. }
  11896. /**
  11897. * 用来注册回调并接收某个**特定**物理事件的Delegate。
  11898. * @category Physics
  11899. * @template E 事件回调接收的参数类型。
  11900. * @see {@link Collider} {@link CharacterController}
  11901. */
  11902. export class Delegate<E extends object> {
  11903. /**
  11904. * @class 挂在物理组件上的Delegate, 内部持有native comp, 由native comp来invoke.
  11905. */
  11906. protected nativeMethod: string
  11907. _shared?: SharedDelegate<E>
  11908. /** @internal */
  11909. isPhysicsDelegate: true
  11910. protected xmlEvent: string
  11911. protected _el: Element
  11912. /** @internal */
  11913. protected _handlers: Map<DelegateHandler<E>, any>
  11914. /** @internal */
  11915. constructor(
  11916. nativeCollider: phys3D.Collider | undefined,
  11917. nativeMethod: string,
  11918. el: Element,
  11919. xmlEvent: string
  11920. )
  11921. get nativeCollider(): phys3D.Collider | undefined
  11922. set nativeCollider(v: phys3D.Collider | undefined)
  11923. clearNativeHandler(): void
  11924. /**
  11925. * 注册事件回调。
  11926. */
  11927. add(
  11928. handler: DelegateHandler<E>,
  11929. context?: any
  11930. ): DelegateHandler<E> | void
  11931. /**
  11932. * 移除已注册的事件回调。
  11933. */
  11934. remove(handler: DelegateHandler<E>): void
  11935. /**
  11936. * @internal
  11937. */
  11938. invoke(native: phys3D.ControllerColliderHit | phys3D.Collision): void
  11939. /**
  11940. * 移除所有事件回调。
  11941. */
  11942. clear(): void
  11943. /**
  11944. * @internal
  11945. */
  11946. dispose(): void
  11947. set el(v: Element)
  11948. xmlInvoker?: DelegateHandler<E>
  11949. addXMLInvoker(): void
  11950. removeXMLInvoker(): void
  11951. }
  11952. }
  11953. declare module 'XrFrame/components/physics/types' {
  11954. export const allShapeNames: string[]
  11955. /**
  11956. * 对刚体(在某个轴上的)位移和旋转的限制。
  11957. *
  11958. * @category Physics
  11959. * @see {@link IRigidbodyData.constraintsMask}
  11960. */
  11961. export enum RigidbodyConstraints {
  11962. None = 0,
  11963. FreezePositionX = 1,
  11964. FreezePositionY = 2,
  11965. FreezePositionZ = 4,
  11966. FreezeRotationX = 8,
  11967. FreezeRotationY = 16,
  11968. FreezeRotationZ = 32,
  11969. FreezePosition = 7,
  11970. FreezeRotation = 56,
  11971. FreezeAll = 63
  11972. }
  11973. /**
  11974. * @category Physics
  11975. */
  11976. export enum CollisionDetectionMode {
  11977. Discrete = 0,
  11978. Continuous = 1,
  11979. ContinuousDynamic = 2,
  11980. ContinuousSpeculative = 3
  11981. }
  11982. /**
  11983. * 力(或力矩)的类型,物理组件中某些接口会用到。
  11984. * @category Physics
  11985. * @see {@link Rigidbody.addForce} {@link Rigidbody.addTorque}
  11986. */
  11987. export enum ForceMode {
  11988. /**
  11989. * 持续性的力。
  11990. */
  11991. Force = 0,
  11992. /**
  11993. * 只持续一帧的力。
  11994. */
  11995. Impulse = 1,
  11996. /**
  11997. * 只持续一帧的力,无视物体的{@link Rigidbody.mass | 质量}(mass=1)。
  11998. *
  11999. * \**其实就是在下一帧修改物体速度。*
  12000. */
  12001. VelocityChange = 2,
  12002. /**
  12003. * 持续性的力,无视物体的{@link Rigidbody.mass | 质量}(mass=1)。
  12004. *
  12005. * \**其实就是每帧修改物体速度。*
  12006. */
  12007. Acceleration = 4
  12008. }
  12009. /**
  12010. * 发生碰撞时摩擦系数和弹性系数的结合方式。
  12011. * @see {@link Collider.frictionCombine} {@link Collider.bounceCombine}
  12012. */
  12013. export enum CombineMode {
  12014. Average = 0,
  12015. Mininum = 1,
  12016. Multiply = 2,
  12017. Maximum = 3
  12018. }
  12019. }
  12020. declare module 'XrFrame/components/gizmo/CapsuleGizmo' {
  12021. import Component from 'XrFrame/core/Component'
  12022. import Element from 'XrFrame/core/Element'
  12023. export interface ICapsuleGizmoData {
  12024. radius: number
  12025. height: number
  12026. direction: number
  12027. center: [number, number, number]
  12028. }
  12029. export const CapsuleGizmoSchema: {}
  12030. export default class CapsuleGizmo extends Component<ICapsuleGizmoData> {
  12031. static pieces: number
  12032. onAdd(parent: Element, data: ICapsuleGizmoData): void
  12033. onUpdate(data: ICapsuleGizmoData, preData: ICapsuleGizmoData): void
  12034. onTick(deltaTime: number, data: ICapsuleGizmoData): void
  12035. onRemove(parent: Element, data: ICapsuleGizmoData): void
  12036. onRelease(data: ICapsuleGizmoData): void
  12037. }
  12038. }
  12039. declare module 'XrFrame/components/gizmo/CubeGizmo' {
  12040. import Component from 'XrFrame/core/Component'
  12041. import Element from 'XrFrame/core/Element'
  12042. export interface ICubeGizmoData {
  12043. size: [number, number, number]
  12044. center: [number, number, number]
  12045. }
  12046. export const CubeGizmoSchema: {}
  12047. export default class CubeGizmo extends Component<ICubeGizmoData> {
  12048. onAdd(parent: Element, data: ICubeGizmoData): void
  12049. onUpdate(data: ICubeGizmoData, preData: ICubeGizmoData): void
  12050. onTick(deltaTime: number, data: ICubeGizmoData): void
  12051. onRemove(parent: Element, data: ICubeGizmoData): void
  12052. onRelease(data: ICubeGizmoData): void
  12053. }
  12054. }
  12055. declare module 'XrFrame/render-graph/RenderGraph' {
  12056. import RGNode, { TRGNodeAny } from 'XrFrame/render-graph/RGNode'
  12057. import Camera from 'XrFrame/components/Camera'
  12058. type RenderSystem = import('XrFrame/systems/RenderSystem').default
  12059. type Scene = import('XrFrame/core/Scene').default
  12060. interface IDigraphNode {
  12061. node: TRGNodeAny
  12062. ins: number
  12063. dist: number[]
  12064. }
  12065. /**
  12066. * 渲染图。
  12067. *
  12068. * @category Render
  12069. */
  12070. export default class RenderGraph<IOptions = any> {
  12071. protected _name: string
  12072. protected _options: IOptions
  12073. protected _scene?: Scene
  12074. protected _isActive: boolean
  12075. protected _isDirty: boolean
  12076. protected _unusedIds: number[]
  12077. protected _digraph: Array<IDigraphNode | undefined>
  12078. protected _sorted: TRGNodeAny[]
  12079. /**
  12080. * 图名字。
  12081. */
  12082. get name(): string
  12083. /**
  12084. * 当前正在运行的Game实例。
  12085. */
  12086. get scene(): import('XrFrame/core/Scene').default
  12087. /**
  12088. * 当前的渲染上下文。
  12089. */
  12090. get context(): import('XrFrame/systems/RenderSystem').default
  12091. constructor(_name: string, _options: IOptions)
  12092. /**
  12093. * 创建一个节点。
  12094. */
  12095. createNode<TRGNode extends TRGNodeAny>(
  12096. name: string,
  12097. clz: new (...args: any) => TRGNode,
  12098. options: TRGNode['options']
  12099. ): TRGNode
  12100. /**
  12101. * 销毁一个节点。
  12102. */
  12103. destroyNode(rgNode: TRGNodeAny): void
  12104. /**
  12105. * 连接两个节点。
  12106. *
  12107. * @param inputKey 需要将`from`节点的输出连接到哪个`to`节点的输入。
  12108. */
  12109. connect<TToNode extends TRGNodeAny>(
  12110. from: TRGNodeAny,
  12111. to: TToNode,
  12112. inputKey?: keyof TToNode['inputTypes']
  12113. ): void
  12114. /**
  12115. * 断开两个节点的连接。
  12116. */
  12117. disconnect(from: TRGNodeAny, to: TRGNodeAny): void
  12118. /**
  12119. * @internal
  12120. */
  12121. /**
  12122. * @internal
  12123. */
  12124. /**
  12125. * @internal
  12126. */
  12127. /**
  12128. * 清空整个图,一般用于图的重新构建。
  12129. *
  12130. * @param filter 过滤出需要保留、不被销毁的缓存节点,这些节点只会被重置状态。
  12131. */
  12132. protected _clear(
  12133. filter?: (node: RGNode<any, any, any>) => boolean
  12134. ): void
  12135. protected _handleCamerasChange: (context: RenderSystem) => void
  12136. /**
  12137. * 图在被第一次真正使用时的回调。
  12138. */
  12139. onActive(context: RenderSystem, options: IOptions): void
  12140. /**
  12141. * 在渲染上下文中的相机改变时调用,一般用于重新构建图。
  12142. */
  12143. onCamerasChange(cameras: Camera[], changeCameras: Camera[]): void
  12144. /**
  12145. * 在图每帧执行前调用。
  12146. */
  12147. onExecuteBegin(context: RenderSystem, options: IOptions): void
  12148. /**
  12149. * 在图每帧执行后调用。
  12150. */
  12151. onExecuteDone(context: RenderSystem, options: IOptions): void
  12152. /**
  12153. * 在图不再使用时调用。
  12154. */
  12155. onDisable(context: RenderSystem, options: IOptions): void
  12156. /**
  12157. * @internal
  12158. *
  12159. * 编译整张图。
  12160. */
  12161. showDebugInfo(
  12162. callback?: (
  12163. digraph: Array<IDigraphNode | undefined>,
  12164. sorted: TRGNodeAny[]
  12165. ) => void
  12166. ): string
  12167. }
  12168. export {}
  12169. }
  12170. declare module 'XrFrame/systems/LightManager' {
  12171. /**
  12172. * LightManager.ts
  12173. *
  12174. * * @Date : 4/11/2022, 2:29:36 PM
  12175. */
  12176. import Camera from 'XrFrame/components/Camera'
  12177. import Light from 'XrFrame/components/Light'
  12178. export interface IMainLightsInfo {
  12179. hasAmbient: boolean
  12180. hasMainDir: boolean
  12181. ambientColorIns: Float32Array
  12182. mainDir: Float32Array
  12183. mainColorIns: Float32Array
  12184. }
  12185. export interface IAddLightsInfo {
  12186. count: number
  12187. info: Float32Array
  12188. dir: Float32Array
  12189. pos: Float32Array
  12190. colorIns: Float32Array
  12191. }
  12192. export default class LightManager {}
  12193. }
  12194. declare module 'XrFrame/loader/glTF/animations/GLTFAnimationsNode' {
  12195. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12196. import { GLTFNodesLoaded } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  12197. import GLTFAnimationNode, {
  12198. GLTFAnimationLoaded,
  12199. GLTFAnimationNodeRaw
  12200. } from 'XrFrame/loader/glTF/animations/GLTFAnimationNode'
  12201. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  12202. type ChildNode = GLTFAnimationNode
  12203. export type GLTFAnimationsNodeRaw = GLTFAnimationsNodeRaw[]
  12204. export type GLTFAnimationsLoaded = GLTFAnimationLoaded[]
  12205. export default class GLTFAnimationsNode extends GLTFArrayNode<ChildNode> {
  12206. ChildCtor(childRaw: GLTFAnimationNodeRaw): GLTFAnimationNode
  12207. readonly raw: GLTFAnimationsNodeRaw
  12208. get nodeName(): string
  12209. preload: (
  12210. prerequisites: [
  12211. accessors: GLTFAccessorsLoaded,
  12212. nodes: GLTFNodesLoaded
  12213. ]
  12214. ) => Promise<GLTFAnimationsLoaded>
  12215. getLoadedResource(): GLTFAnimationsLoaded
  12216. }
  12217. export {}
  12218. }
  12219. declare module 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode' {
  12220. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12221. import GLTFAccessorNode, {
  12222. GLTFAccessorLoaded,
  12223. GLTFAccessorNodeRaw
  12224. } from 'XrFrame/loader/glTF/buffers/GLTFAccessorNode'
  12225. import { GLTFBufferViewsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode'
  12226. type ChildNode = GLTFAccessorNode
  12227. export type GLTFAccessorsNodeRaw = GLTFAccessorsNodeRaw[]
  12228. export type GLTFAccessorsLoaded = GLTFAccessorLoaded[]
  12229. export default class GLTFAccessorsNode extends GLTFArrayNode<ChildNode> {
  12230. ChildCtor(childRaw: GLTFAccessorNodeRaw): GLTFAccessorNode
  12231. readonly raw: GLTFAccessorsNodeRaw
  12232. get nodeName(): string
  12233. preload: (
  12234. prerequisites: GLTFBufferViewsLoaded
  12235. ) => Promise<GLTFAccessorsLoaded>
  12236. getLoadedResource(): GLTFAccessorsLoaded
  12237. }
  12238. export {}
  12239. }
  12240. declare module 'XrFrame/loader/glTF/buffers/GLTFBuffersNode' {
  12241. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12242. import GLTFBufferNode, {
  12243. GLTFBufferLoaded,
  12244. GLTFBufferNodeRaw
  12245. } from 'XrFrame/loader/glTF/buffers/GLTFBufferNode'
  12246. type ChildNode = GLTFBufferNode
  12247. export type GLTFBuffersNodeRaw = GLTFBufferNodeRaw[]
  12248. export type GLTFBuffersLoaded = GLTFBufferLoaded[]
  12249. export default class GLTFBuffersNode extends GLTFArrayNode<ChildNode> {
  12250. ChildCtor(childRaw: GLTFBufferNodeRaw): GLTFBufferNode
  12251. readonly raw: GLTFBuffersNodeRaw
  12252. get nodeName(): string
  12253. getLoadedResource(): GLTFBuffersLoaded
  12254. }
  12255. export {}
  12256. }
  12257. declare module 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode' {
  12258. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12259. import { GLTFBufferLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferNode'
  12260. import GLTFBufferViewNode, {
  12261. GLTFBufferViewLoaded,
  12262. GLTFBufferViewNodeRaw
  12263. } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewNode'
  12264. type ChildNode = GLTFBufferViewNode
  12265. export type GLTFBufferViewsNodeRaw = GLTFBufferViewsNodeRaw[]
  12266. export type GLTFBufferViewsLoaded = GLTFBufferViewLoaded[]
  12267. export default class GLTFBufferViewsNode extends GLTFArrayNode<ChildNode> {
  12268. ChildCtor(childRaw: GLTFBufferViewNodeRaw): GLTFBufferViewNode
  12269. readonly raw: GLTFBufferViewsNodeRaw
  12270. get nodeName(): string
  12271. preload: (
  12272. prerequisites: [GLTFBufferLoaded]
  12273. ) => Promise<GLTFBufferViewsLoaded>
  12274. getLoadedResource(): GLTFBufferViewsLoaded
  12275. }
  12276. export {}
  12277. }
  12278. declare module 'XrFrame/loader/glTF/extensions/GLTFExtensions' {
  12279. /**
  12280. * 创建GLTFExtensionProfileBuilder实例来定义一种extension,
  12281. * 类内提供了三种方法来操作gltf树:
  12282. * + 一种是substitutePreload,替换gltf节点的preload函数;
  12283. * + 一种是postBuild,在gltf树preload全部完成之后,再对其进行自定义操作;
  12284. * + 一种是registerRunInSlot,需要先在gltf节点内部使用extensionSlot定义一个槽位,然后往这个槽位里填写代码。
  12285. *
  12286. * 具体要使用哪些extension请看GLTFLoader.ts。
  12287. */
  12288. type SlotCode = (
  12289. raw: object,
  12290. extensionGlobal: object,
  12291. prerequisites: any,
  12292. args: any
  12293. ) => Promise<void>
  12294. type ForceSlotCode = (
  12295. extensionGlobal: object,
  12296. prerequisites: any,
  12297. args: any
  12298. ) => Promise<void>
  12299. export class GLTFExtensionProfileBuilder {
  12300. constructor(extName: string)
  12301. registerRootInit(
  12302. init: (raw: object, extensionGlobal: object) => void
  12303. ): void
  12304. registerSubstitutePreload(
  12305. path: string,
  12306. preload: (
  12307. raw: object,
  12308. extensionGlobal: object,
  12309. prerequisites?: object
  12310. ) => Promise<any>
  12311. ): void
  12312. registerPostBuild(
  12313. execute: (root: any, extensionGlobal: object) => Promise<void>
  12314. ): void
  12315. registerRunInSlot(slotId: string, code: SlotCode): void
  12316. /**
  12317. * 不管当前节点有没有extension,都运行,但是运行的时候不会给extRaw(因为可能没有)。
  12318. */
  12319. registerForceRunInSlot(slotId: string, code: ForceSlotCode): void
  12320. }
  12321. export interface GLTFExtensionProfile {
  12322. readonly name: string
  12323. readonly preloads: {
  12324. [path: string]: (
  12325. raw: string,
  12326. extensionGlobal: object,
  12327. prerequisites?: object
  12328. ) => Promise<any>
  12329. }
  12330. readonly postBuild?: (root: any, extensionGlobal: object) => void
  12331. readonly slotCodeMap: Map<string, SlotCode>
  12332. readonly forceSlotCodeMap: Map<string, ForceSlotCode>
  12333. readonly rootInit: (raw: object, extensionGlobal: object) => void
  12334. }
  12335. export type GLTFExtensionsProfiles = {
  12336. [name: string]: GLTFExtensionProfile
  12337. }
  12338. export {}
  12339. }
  12340. declare module 'XrFrame/loader/glTF/geometry/GLTFMeshesNode' {
  12341. import { Kanata } from 'XrFrame/ext'
  12342. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  12343. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12344. import { GLTFMaterialsLoaded } from 'XrFrame/loader/glTF/materials/GLTFMaterialsNode'
  12345. import GLTFMeshNode, {
  12346. GLTFMeshLoaded,
  12347. GLTFMeshNodeRaw
  12348. } from 'XrFrame/loader/glTF/geometry/GLTFMeshNode'
  12349. type ChildNode = GLTFMeshNode
  12350. export type GLTFMeshesNodeRaw = GLTFMeshesNodeRaw[]
  12351. export type GLTFMeshesLoaded = GLTFMeshLoaded[]
  12352. export default class GLTFMeshesNode extends GLTFArrayNode<ChildNode> {
  12353. ChildCtor(childRaw: GLTFMeshNodeRaw): GLTFMeshNode
  12354. readonly raw: GLTFMeshesNodeRaw
  12355. get nodeName(): string
  12356. preload: (
  12357. prerequisites: [
  12358. materials: GLTFMaterialsLoaded,
  12359. accessors: GLTFAccessorsLoaded,
  12360. vbMap: Map<string, [ArrayBuffer, Kanata.VertexLayout, object]>
  12361. ]
  12362. ) => Promise<GLTFMeshesLoaded>
  12363. getLoadedResource(): GLTFMeshesLoaded
  12364. }
  12365. export {}
  12366. }
  12367. declare module 'XrFrame/loader/glTF/GLTFBaseNode' {
  12368. import { GLTFValidation } from 'XrFrame/loader/glTF/utils/exceptions'
  12369. type Scene = import('XrFrame/core/Scene').default
  12370. function _empty(): {
  12371. and: typeof _empty
  12372. }
  12373. export abstract class GLTFBaseNode {
  12374. readonly raw: any
  12375. abstract get nodeName(): string
  12376. parent: GLTFBaseNode
  12377. scene: Scene
  12378. isValid: boolean
  12379. constructor(raw: object, parent?: GLTFBaseNode)
  12380. /**
  12381. * 利用raw生成子节点
  12382. */
  12383. abstract build(): void
  12384. /**
  12385. * @param msg 需要带句号
  12386. */
  12387. protected assert(
  12388. pred: any,
  12389. msg?: string
  12390. ):
  12391. | this
  12392. | {
  12393. and: typeof _empty
  12394. }
  12395. protected validate(
  12396. use: GLTFValidation<any>,
  12397. pred?: boolean | string,
  12398. ...args: string[]
  12399. ):
  12400. | this
  12401. | {
  12402. and: typeof _empty
  12403. }
  12404. /**
  12405. * 加载静态资源,buffer/image等。
  12406. * 所有错误在这个方法抛出,包括格式错误,加载错误等。
  12407. */
  12408. abstract preload(prerequisites?: object): Promise<object>
  12409. /**
  12410. * 给extension内部使用的,在extension替换preload的时候,用来储存原preload。
  12411. */
  12412. protected _preload: (prerequisites?: object) => Promise<object>
  12413. /**
  12414. * 获取加载后的资源。
  12415. * 无报错 throws nothing。
  12416. */
  12417. abstract getLoadedResource(): object
  12418. protected findRoot(withPath?: boolean): any
  12419. getExtensionRaw(extName: string): object | undefined
  12420. /**
  12421. * 调用这个函数可以放置一个**允许extension代码插入**的位置。
  12422. */
  12423. protected extensionSlot(id: string, args: object): Promise<void>
  12424. releaseLoadedResource(): void
  12425. }
  12426. export abstract class GLTFArrayNode<
  12427. T extends GLTFBaseNode
  12428. > extends GLTFBaseNode {
  12429. abstract readonly raw: object[]
  12430. abstract ChildCtor(childRaw: object): T
  12431. children: T[]
  12432. protected resources: any[]
  12433. preload(prerequisites?: any): Promise<any>
  12434. build(): void
  12435. releaseLoadedResource(): void
  12436. }
  12437. export {}
  12438. }
  12439. declare module 'XrFrame/loader/glTF/materials/GLTFMaterialsNode' {
  12440. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12441. import { GLTFTexturesLoaded } from 'XrFrame/loader/glTF/textures/GLTFTexturesNode'
  12442. import GLTFMaterialNode, {
  12443. GLTFMaterialLoaded,
  12444. GLTFMaterialNodeRaw
  12445. } from 'XrFrame/loader/glTF/materials/GLTFMaterialNode'
  12446. type ChildNode = GLTFMaterialNode
  12447. export type GLTFMaterialsNodeRaw = GLTFMaterialsNodeRaw[]
  12448. export type GLTFMaterialsLoaded = GLTFMaterialLoaded[]
  12449. export default class GLTFMaterialsNode extends GLTFArrayNode<ChildNode> {
  12450. ChildCtor(childRaw: GLTFMaterialNodeRaw): GLTFMaterialNode
  12451. readonly raw: GLTFMaterialsNodeRaw
  12452. get nodeName(): string
  12453. preload: (
  12454. prerequisites: [textrues: GLTFTexturesLoaded]
  12455. ) => Promise<GLTFMaterialsLoaded>
  12456. getLoadedResource(): GLTFMaterialsLoaded
  12457. }
  12458. export {}
  12459. }
  12460. declare module 'XrFrame/loader/glTF/scenes/GLTFSceneNode' {
  12461. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12462. import {
  12463. GLTFNodesLoaded,
  12464. GLTFTreeNode
  12465. } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  12466. export interface GLTFSceneNodeRaw {
  12467. nodes?: number[]
  12468. name?: string
  12469. }
  12470. export type GLTFSceneLoaded = GLTFTreeNode[]
  12471. export default class GLTFSceneNode extends GLTFBaseNode {
  12472. get nodeName(): string
  12473. readonly raw: GLTFSceneNodeRaw
  12474. build(): void
  12475. preload(
  12476. prerequisites: [nodes: GLTFNodesLoaded]
  12477. ): Promise<GLTFSceneLoaded>
  12478. getLoadedResource(): GLTFSceneLoaded
  12479. }
  12480. }
  12481. declare module 'XrFrame/loader/glTF/scenes/GLTFScenesNode' {
  12482. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12483. import { GLTFNodesLoaded } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  12484. import GLTFSceneNode, {
  12485. GLTFSceneLoaded,
  12486. GLTFSceneNodeRaw
  12487. } from 'XrFrame/loader/glTF/scenes/GLTFSceneNode'
  12488. type ChildNode = GLTFSceneNode
  12489. export type GLTFScenesNodeRaw = GLTFScenesNodeRaw[]
  12490. export type GLTFScenesLoaded = GLTFSceneLoaded[]
  12491. export default class GLTFScenesNode extends GLTFArrayNode<ChildNode> {
  12492. ChildCtor(childRaw: GLTFSceneNodeRaw): GLTFSceneNode
  12493. readonly raw: GLTFScenesNodeRaw
  12494. get nodeName(): string
  12495. preload: (
  12496. prerequisites: [nodes: GLTFNodesLoaded]
  12497. ) => Promise<GLTFScenesLoaded>
  12498. getLoadedResource(): GLTFScenesLoaded
  12499. }
  12500. export {}
  12501. }
  12502. declare module 'XrFrame/loader/glTF/skins/GLTFSkinsNode' {
  12503. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  12504. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12505. import GLTFSkinNode, {
  12506. GLTFSkinLoaded,
  12507. GLTFSkinNodeRaw
  12508. } from 'XrFrame/loader/glTF/skins/GLTFSkinNode'
  12509. type ChildNode = GLTFSkinNode
  12510. export type GLTFSkinsNodeRaw = GLTFSkinsNodeRaw[]
  12511. export type GLTFSkinsLoaded = GLTFSkinLoaded[]
  12512. export default class GLTFSkinsNode extends GLTFArrayNode<ChildNode> {
  12513. ChildCtor(childRaw: GLTFSkinNodeRaw): GLTFSkinNode
  12514. readonly raw: GLTFSkinsNodeRaw
  12515. get nodeName(): string
  12516. preload: (
  12517. prerequisites: [accessors: GLTFAccessorsLoaded]
  12518. ) => Promise<GLTFSkinsLoaded>
  12519. getLoadedResource(): GLTFSkinsLoaded
  12520. }
  12521. export {}
  12522. }
  12523. declare module 'XrFrame/loader/glTF/textures/GLTFImagesNode' {
  12524. import { GLTFBufferViewsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode'
  12525. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12526. import GLTFImageNode, {
  12527. GLTFImageLoaded,
  12528. GLTFImageNodeRaw
  12529. } from 'XrFrame/loader/glTF/textures/GLTFImageNode'
  12530. type ChildNode = GLTFImageNode
  12531. export type GLTFImagesNodeRaw = GLTFImagesNodeRaw[]
  12532. export type GLTFImagesLoaded = GLTFImageLoaded[]
  12533. export default class GLTFImagesNode extends GLTFArrayNode<ChildNode> {
  12534. ChildCtor(childRaw: GLTFImageNodeRaw): GLTFImageNode
  12535. readonly raw: GLTFImagesNodeRaw
  12536. get nodeName(): string
  12537. preload: (
  12538. prerequisites: [bufferViews: GLTFBufferViewsLoaded]
  12539. ) => Promise<GLTFImagesLoaded>
  12540. getLoadedResource(): GLTFImagesLoaded
  12541. }
  12542. export {}
  12543. }
  12544. declare module 'XrFrame/loader/glTF/textures/GLTFSamplersNode' {
  12545. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12546. import GLTFSamplerNode, {
  12547. GLTFSamplerLoaded,
  12548. GLTFSamplerNodeRaw
  12549. } from 'XrFrame/loader/glTF/textures/GLTFSamplerNode'
  12550. type ChildNode = GLTFSamplerNode
  12551. export type GLTFSamplersNodeRaw = GLTFSamplersNodeRaw[]
  12552. export type GLTFSamplersLoaded = GLTFSamplerLoaded[]
  12553. export default class GLTFSamplersNode extends GLTFArrayNode<ChildNode> {
  12554. ChildCtor(childRaw: GLTFSamplerNodeRaw): GLTFSamplerNode
  12555. readonly raw: GLTFSamplersNodeRaw
  12556. get nodeName(): string
  12557. preload: () => Promise<GLTFSamplersLoaded>
  12558. getLoadedResource(): GLTFSamplersLoaded
  12559. }
  12560. export {}
  12561. }
  12562. declare module 'XrFrame/loader/glTF/textures/GLTFTexturesNode' {
  12563. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12564. import { GLTFImagesLoaded } from 'XrFrame/loader/glTF/textures/GLTFImagesNode'
  12565. import { GLTFSamplersLoaded } from 'XrFrame/loader/glTF/textures/GLTFSamplersNode'
  12566. import GLTFTextureNode, {
  12567. GLTFTextureLoaded,
  12568. GLTFTextureNodeRaw
  12569. } from 'XrFrame/loader/glTF/textures/GLTFTextureNode'
  12570. type ChildNode = GLTFTextureNode
  12571. export type GLTFTexturesNodeRaw = GLTFTexturesNodeRaw[]
  12572. export type GLTFTexturesLoaded = GLTFTextureLoaded[]
  12573. export default class GLTFTexturesNode extends GLTFArrayNode<ChildNode> {
  12574. ChildCtor(childRaw: GLTFTextureNodeRaw): GLTFTextureNode
  12575. readonly raw: GLTFTexturesNodeRaw
  12576. get nodeName(): string
  12577. preload: (
  12578. prerequisites: [
  12579. images: GLTFImagesLoaded,
  12580. samplers: GLTFSamplersLoaded
  12581. ]
  12582. ) => Promise<GLTFTexturesLoaded>
  12583. getLoadedResource(): GLTFTexturesLoaded
  12584. }
  12585. export {}
  12586. }
  12587. declare module 'XrFrame/loader/glTF/utils/exceptions' {
  12588. import type { GLTFTargetNodeRaw } from 'XrFrame/loader/glTF/animations/channels/GLTFTargetNode'
  12589. import type { GLTFAccessorNodeRaw } from 'XrFrame/loader/glTF/buffers/GLTFAccessorNode'
  12590. import type { GLTFAttributesNodeRaw } from 'XrFrame/loader/glTF/geometry/primitives/attributes/GLTFAttributesNode'
  12591. import type { GLTFPrimitiveNodeRaw } from 'XrFrame/loader/glTF/geometry/primitives/GLTFPrimitiveNode'
  12592. import type { GLTFNodeNodeRaw } from 'XrFrame/loader/glTF/scenes/GLTFNodeNode'
  12593. import type { GLTFTextureNodeRaw } from 'XrFrame/loader/glTF/textures/GLTFTextureNode'
  12594. export enum EValidation {
  12595. TextureSource = 10001,
  12596. SkinAccessor = 10101,
  12597. NodeWeights = 10201,
  12598. MorphAttrib = 10301,
  12599. UVSlot = 10401,
  12600. JointSlot = 10402,
  12601. WeightSlot = 10403,
  12602. MorphTargetsCount = 10501,
  12603. PrimitiveType = 10502,
  12604. IndexBufferLength = 10503,
  12605. SparseAccessor = 10601,
  12606. NormalizedAccessor = 10602
  12607. }
  12608. interface Validation<T> {
  12609. id: EValidation
  12610. msg: string
  12611. validate?(raw: T): boolean
  12612. fatal?: boolean
  12613. }
  12614. export namespace GLTFValidations {
  12615. const UndefinedTextureSource: Validation<GLTFTextureNodeRaw>
  12616. const SkinAccessorNotCompact: Validation<void>
  12617. const UnsupportedNodeWeights: Validation<GLTFNodeNodeRaw>
  12618. const UnsupportedMorphAttrib: Validation<GLTFTargetNodeRaw>
  12619. const UnsupportedUVSlot: Validation<GLTFAttributesNodeRaw>
  12620. const UnsupportedJointSlot: Validation<GLTFAttributesNodeRaw>
  12621. const UnsupportedWeightSlot: Validation<GLTFAttributesNodeRaw>
  12622. const MorphTargetsCountExceeded: Validation<GLTFPrimitiveNodeRaw>
  12623. const UnsupportedPrimitiveType: Validation<GLTFPrimitiveNodeRaw>
  12624. const InvalidIndexBufferLength: Validation<GLTFPrimitiveNodeRaw>
  12625. const UnsupportedSparseAccessor: Validation<GLTFAccessorNodeRaw>
  12626. const UnsupportedNormalizedAccessor: Validation<GLTFAccessorNodeRaw>
  12627. }
  12628. export { Validation as GLTFValidation }
  12629. export const GLTFValidationMap: {
  12630. 10001: Validation<GLTFTextureNodeRaw>
  12631. 10101: Validation<void>
  12632. 10201: Validation<GLTFNodeNodeRaw>
  12633. 10301: Validation<GLTFTargetNodeRaw>
  12634. 10401: Validation<GLTFAttributesNodeRaw>
  12635. 10402: Validation<GLTFAttributesNodeRaw>
  12636. 10403: Validation<GLTFAttributesNodeRaw>
  12637. 10501: Validation<GLTFPrimitiveNodeRaw>
  12638. 10502: Validation<GLTFPrimitiveNodeRaw>
  12639. 10503: Validation<GLTFPrimitiveNodeRaw>
  12640. 10601: Validation<GLTFAccessorNodeRaw>
  12641. 10602: Validation<GLTFAccessorNodeRaw>
  12642. }
  12643. }
  12644. declare module 'XrFrame/loader/glTF/scenes/GLTFNodeNode' {
  12645. import { GLTFMeshesLoaded } from 'XrFrame/loader/glTF/geometry/GLTFMeshesNode'
  12646. import { GLTFMeshLoaded } from 'XrFrame/loader/glTF/geometry/GLTFMeshNode'
  12647. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  12648. import { GLTFSkinLoaded } from 'XrFrame/loader/glTF/skins/GLTFSkinNode'
  12649. import { GLTFSkinsLoaded } from 'XrFrame/loader/glTF/skins/GLTFSkinsNode'
  12650. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  12651. export interface GLTFNodeNodeRaw {
  12652. children?: number[]
  12653. mesh?: number
  12654. matrix?: number[]
  12655. rotation?: [number, number, number, number]
  12656. scale?: [number, number, number]
  12657. translation?: [number, number, number]
  12658. weights?: number
  12659. skin?: number
  12660. name?: string
  12661. extensions?: object
  12662. extras?: any
  12663. }
  12664. export interface GLTFNodeLoaded {
  12665. children: number[]
  12666. transform: GLTF.Transform
  12667. mesh?: GLTFMeshLoaded
  12668. skin?: GLTFSkinLoaded
  12669. name: string
  12670. extras?: any
  12671. }
  12672. export type GLTFNodePrerequisites = [
  12673. meshes: GLTFMeshesLoaded,
  12674. skins: GLTFSkinsLoaded
  12675. ]
  12676. export default class GLTFNodeNode extends GLTFBaseNode {
  12677. get nodeName(): string
  12678. readonly raw: GLTFNodeNodeRaw
  12679. build(): void
  12680. preload(prerequisites: GLTFNodePrerequisites): Promise<GLTFNodeLoaded>
  12681. getLoadedResource(): GLTFNodeLoaded
  12682. }
  12683. }
  12684. declare module 'XrFrame/kanata/lib/frontend/component/MeshRendererComponent' {
  12685. /**
  12686. * MeshRendererComponent.ts
  12687. *
  12688. * * @Date : 9/3/2020, 7:54:23 PM
  12689. */
  12690. import { EMeshRenderType } from 'XrFrame/kanata/lib/backend'
  12691. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  12692. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  12693. import Entity2D from 'XrFrame/kanata/lib/frontend/entity/Entity2D'
  12694. import UniformBlock from 'XrFrame/kanata/lib/frontend/resource/UniformBlock'
  12695. import VertexBuffer from 'XrFrame/kanata/lib/frontend/resource/VertexBuffer'
  12696. import IndexBuffer from 'XrFrame/kanata/lib/frontend/resource/IndexBuffer'
  12697. import VertexData from 'XrFrame/kanata/lib/frontend/resource/VertexData'
  12698. import IndexData from 'XrFrame/kanata/lib/frontend/resource/IndexData'
  12699. import Material from 'XrFrame/kanata/lib/frontend/resource/Material'
  12700. import SkinnedSkeletonComponent from 'XrFrame/kanata/lib/frontend/component/SkinnedSkeletonComponent'
  12701. import CullingComponent from 'XrFrame/kanata/lib/frontend/component/CullingComponent'
  12702. export default class MeshRendererComponent extends NativeObject {
  12703. static OFFSETS: {
  12704. dynamicBatch: number
  12705. skinHandle: number
  12706. castShadow: number
  12707. bindTarget: number
  12708. start: number
  12709. size: number
  12710. materialId: number
  12711. vertexBufferId: number
  12712. indexBufferId: number
  12713. startIndex: number
  12714. numIndices: number
  12715. }
  12716. static CREATE_FAKE(
  12717. entity: Entity3D | Entity2D,
  12718. options: {
  12719. meshCount: number
  12720. uniformBlock?: UniformBlock
  12721. }
  12722. ): FakeMeshRenderComponent
  12723. protected _uniforms: UniformBlock
  12724. get uniforms(): UniformBlock
  12725. get meshCount(): number
  12726. get castShadow(): boolean
  12727. set castShadow(value: boolean)
  12728. get dynamicBatch(): boolean
  12729. set dynamicBatch(value: boolean)
  12730. set skinSkeleton(sk: SkinnedSkeletonComponent)
  12731. set bindTarget(target: Entity3D | Entity2D | null)
  12732. get macros(): {
  12733. [name: string]: string | number | boolean
  12734. }
  12735. constructor(
  12736. entity: Entity3D | Entity2D,
  12737. options: {
  12738. meshCount: number
  12739. uniformBlock: UniformBlock
  12740. renderType: EMeshRenderType
  12741. culling?: CullingComponent
  12742. macros?: {
  12743. [name: string]: string | number | boolean
  12744. }
  12745. }
  12746. )
  12747. protected _createNativeObj(
  12748. entity: Entity3D | Entity2D,
  12749. options: {
  12750. meshCount: number
  12751. uniformBlock: UniformBlock
  12752. renderType: EMeshRenderType
  12753. culling?: CullingComponent
  12754. macros?: {
  12755. [name: string]: string | number | boolean
  12756. }
  12757. }
  12758. ): import('XrFrame/kanata/lib/backend').IHandle & {
  12759. setSharedDirty(): void
  12760. }
  12761. changeMacros(macros?: {
  12762. [name: string]: string | number | boolean
  12763. }): void
  12764. getStartIndex(index: number): number
  12765. setStartIndex(index: number, value: number): void
  12766. getNumIndices(index: number): number
  12767. setNumIndices(index: number, value: number): void
  12768. getVertexBuffer(index: number): VertexBuffer
  12769. setVertexBuffer(index: number, buffer: VertexBuffer): void
  12770. getIndexBuffer(index: number): IndexBuffer
  12771. setIndexBuffer(index: number, buffer: IndexBuffer): void
  12772. getVertexData(index: number): VertexData
  12773. setVertexData(index: number, buffer: VertexData): void
  12774. getIndexData(index: number): IndexData
  12775. setIndexData(index: number, buffer: IndexData): void
  12776. getMaterial(index: number): Material
  12777. setMaterial(index: number, material: Material | null): void
  12778. fastSet(
  12779. vertexes: Array<VertexBuffer | VertexData>,
  12780. indexes: Array<VertexData | IndexBuffer>,
  12781. materials: Material[],
  12782. startIndexes: number[],
  12783. numIndices: number[]
  12784. ): void
  12785. setDirty(): void
  12786. copyStates(comp: MeshRendererComponent): void
  12787. }
  12788. class FakeMeshRenderComponent extends MeshRendererComponent {
  12789. protected _createNativeObj(
  12790. entity: Entity3D | Entity2D,
  12791. options: {
  12792. meshCount: number
  12793. uniformBlock: UniformBlock
  12794. renderType: EMeshRenderType
  12795. culling: CullingComponent
  12796. }
  12797. ): {
  12798. id: number
  12799. data: ArrayBuffer
  12800. setSharedDirty: () => void
  12801. }
  12802. get uniforms(): UniformBlock
  12803. set uniforms(uniforms: UniformBlock)
  12804. }
  12805. export {}
  12806. }
  12807. declare module 'XrFrame/kanata/lib/frontend/resource/renderEnv' {
  12808. /**
  12809. * renderEnv.ts
  12810. *
  12811. * * @Date : 1/18/2021, 3:53:26 PM
  12812. */
  12813. import {
  12814. EMeshRenderType,
  12815. EUniformType,
  12816. IFeatures,
  12817. IRenderEnv,
  12818. TCompressTexture
  12819. } from 'XrFrame/kanata/lib/backend'
  12820. import View from 'XrFrame/kanata/lib/frontend/resource/View'
  12821. import Effect from 'XrFrame/kanata/lib/frontend/resource/Effect'
  12822. import RenderPass from 'XrFrame/kanata/lib/frontend/resource/RenderPass'
  12823. import UniformBlock from 'XrFrame/kanata/lib/frontend/resource/UniformBlock'
  12824. export class RenderEnv {
  12825. id: number
  12826. __handle: IRenderEnv
  12827. useExtendedMemory: boolean
  12828. get version(): number[]
  12829. get backendType(): string
  12830. get canvasWidth(): number
  12831. set canvasWidth(value: number)
  12832. get canvasHeight(): number
  12833. set canvasHeight(value: number)
  12834. get supportCompressTextures(): TCompressTexture[]
  12835. get features(): IFeatures
  12836. get commitVersion(): string
  12837. get usePuppetSokol(): boolean
  12838. get useInstance(): boolean
  12839. set useInstance(value: boolean)
  12840. get neverTranspose(): boolean
  12841. set neverTranspose(value: boolean)
  12842. get isWrongWrapMapping(): boolean
  12843. get isNotWrongEffectSort(): boolean
  12844. get isGoodInstance(): boolean
  12845. get isGoodPhysAndScalableList(): boolean
  12846. constructor()
  12847. supportCompressTexture(type: TCompressTexture): boolean
  12848. registerFallbackEffect(lightMode: string, effect?: Effect): void
  12849. beginFrame(): void
  12850. endFrame(): void
  12851. clearView(view: View): void
  12852. setEnvUniform(index: number, uniforms: UniformBlock): void
  12853. setRenderPass(renderPass: RenderPass): void
  12854. changeMacros(macros: {
  12855. [name: string]: string | number | boolean
  12856. }): void
  12857. getMacro(key: string): string | number | boolean
  12858. changeVirtualMacros(macros: { [name: string]: boolean }): void
  12859. getVirtualMacro(key: string): boolean
  12860. setInternalInstanceInfo(
  12861. type: EMeshRenderType,
  12862. info: Array<{
  12863. uniformKey: string
  12864. attributeName: string
  12865. type: EUniformType
  12866. }>,
  12867. ignored: string[]
  12868. ): void
  12869. getErrors(): string[]
  12870. }
  12871. const renderEnv: RenderEnv
  12872. export default renderEnv
  12873. }
  12874. declare module 'XrFrame/kanata/lib/frontend/component/AnimatorComponent' {
  12875. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  12876. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  12877. import AnimationClipModel from 'XrFrame/kanata/lib/frontend/resource/AnimationClipModel'
  12878. export default class AnimatorComponent extends NativeObject {
  12879. static UPDATE_ANIMATORS(
  12880. animators: AnimatorComponent[],
  12881. size: number
  12882. ): void
  12883. animationClipModels: AnimationClipModel[]
  12884. constructor()
  12885. bindAnimations(
  12886. animationClipModels: AnimationClipModel[],
  12887. entities: Array<Array<Entity3D | null>>,
  12888. rootEntity?: Entity3D
  12889. ): void
  12890. setClipParams(
  12891. index: number,
  12892. frameIndex: number,
  12893. blendWeight: number
  12894. ): void
  12895. getAnimationClipCount(): number
  12896. getNodeCount(): number
  12897. getAnimationParameter(index: number): {
  12898. animationClipId: number
  12899. frameIndex: number
  12900. percentage: number
  12901. }
  12902. getEntity(index: number): number
  12903. }
  12904. }
  12905. declare module 'XrFrame/kanata/lib/frontend/component/CameraComponent' {
  12906. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  12907. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  12908. import Entity2D from 'XrFrame/kanata/lib/frontend/entity/Entity2D'
  12909. import View from 'XrFrame/kanata/lib/frontend/resource/View'
  12910. import ScalableList from 'XrFrame/kanata/lib/frontend/resource/ScalableList'
  12911. export default class CameraComponent extends NativeObject {
  12912. static OFFSETS: {
  12913. size: number
  12914. view: number
  12915. depth: number
  12916. active: number
  12917. fov: number
  12918. aspect: number
  12919. near: number
  12920. far: number
  12921. up: number
  12922. eye: number
  12923. orthoSize: number
  12924. isProjection: number
  12925. cullingMask: number
  12926. canvasSizeY: number
  12927. targetTransform: number
  12928. viewMatrix: number
  12929. projectionMatrix: number
  12930. viewMatrixInverse: number
  12931. viewMatrix2D: number
  12932. projectionMatrix2D: number
  12933. viewMatrixInverse2D: number
  12934. manualMatrix: number
  12935. layerCullDistances: number
  12936. }
  12937. get active(): boolean
  12938. set active(value: boolean)
  12939. get depth(): number
  12940. set depth(value: number)
  12941. get isProjection(): boolean
  12942. set isProjection(value: boolean)
  12943. get view(): View
  12944. set view(value: View)
  12945. get fov(): number
  12946. set fov(value: number)
  12947. get aspect(): number
  12948. set aspect(value: number)
  12949. get near(): number
  12950. set near(value: number)
  12951. get far(): number
  12952. set far(value: number)
  12953. get orthoSize(): number
  12954. set orthoSize(value: number)
  12955. get cullingMask(): number
  12956. set cullingMask(value: number)
  12957. get layerCullDistances(): Float32Array | number[]
  12958. set layerCullDistances(value: Float32Array | number[])
  12959. get canvasSizeY(): number
  12960. set canvasSizeY(value: number)
  12961. set targetTransform(entityId: number)
  12962. get targetTransform(): number
  12963. set up(vec3: Float32Array)
  12964. constructor(entity: Entity2D | Entity3D, isUI?: boolean)
  12965. cull(cullResult: ScalableList, lightMode: string): void
  12966. draw(renderList: ScalableList, lightMode: string): void
  12967. changeProjectionMatrix(manual: boolean, mat4?: Float32Array): void
  12968. changeViewMatrix(manual: boolean, mat4?: Float32Array): void
  12969. updateMatrix(): void
  12970. }
  12971. }
  12972. declare module 'XrFrame/kanata/lib/frontend/component/LightCameraComponent' {
  12973. /**
  12974. * CameraLightComponent.ts
  12975. *
  12976. * * @Date : 9/3/2020, 7:54:13 PM
  12977. */
  12978. import { EShadowMode } from 'XrFrame/kanata/lib/backend'
  12979. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  12980. import View from 'XrFrame/kanata/lib/frontend/resource/View'
  12981. import UniformBlock from 'XrFrame/kanata/lib/frontend/resource/UniformBlock'
  12982. import ScalableList from 'XrFrame/kanata/lib/frontend/resource/ScalableList'
  12983. import CameraComponent from 'XrFrame/kanata/lib/frontend/component/CameraComponent'
  12984. export default class LightCameraComponent extends NativeObject {
  12985. static OFFSETS: {
  12986. size: number
  12987. view: number
  12988. depth: number
  12989. active: number
  12990. shadowDistance: number
  12991. shadowMode: number
  12992. shadowFilterMode: number
  12993. lightDir: number
  12994. bounds: number
  12995. lightSpaceMatrices: number
  12996. }
  12997. get view(): View
  12998. set view(value: View)
  12999. get active(): boolean
  13000. set active(value: boolean)
  13001. get depth(): number
  13002. set depth(value: number)
  13003. get shadowDistance(): number
  13004. set shadowDistance(value: number)
  13005. get shadowFilterMode(): number
  13006. set shadowFilterMode(value: number)
  13007. get shadowMode(): EShadowMode
  13008. set shadowMode(value: EShadowMode)
  13009. get lightSpaceMatrices(): Float32Array
  13010. constructor()
  13011. draw(
  13012. camera: CameraComponent,
  13013. renderList: ScalableList,
  13014. lightMode: string
  13015. ): void
  13016. prepareUniforms(uniforms: UniformBlock): void
  13017. setLightDir(x: number, y: number, z: number): void
  13018. setCascadedSplits(s0: number, s1: number, s2: number): void
  13019. protected _updateBounds(auto: boolean): void
  13020. protected _adjustSplitPercents(index: number, percent: number): number
  13021. protected _setSplitPercents(index: number, percent: number): number
  13022. }
  13023. }
  13024. declare module 'XrFrame/kanata/lib/frontend/component/CullingComponent' {
  13025. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  13026. import Entity2D from 'XrFrame/kanata/lib/frontend/entity/Entity2D'
  13027. import PoolObject from 'XrFrame/kanata/lib/frontend/pool/PoolObject'
  13028. import PoolManager from 'XrFrame/kanata/lib/frontend/pool/PoolManager'
  13029. export default class CullingComponent extends PoolObject {
  13030. static POLL_MANAGER: PoolManager
  13031. constructor(entity: Entity2D | Entity3D)
  13032. getActive(): boolean
  13033. setActive(val: boolean): void
  13034. getLayer(): number
  13035. setLayer(val: number): void
  13036. getBoundingBallCenter(): Float32Array
  13037. setBoundingBallCenter(val: Float32Array, offset?: number): void
  13038. getBoundingBallRadius(): number
  13039. setBoundingBallRadius(val: number): void
  13040. bindEntity(entity: Entity2D | Entity3D): void
  13041. destroy(): void
  13042. }
  13043. }
  13044. declare module 'XrFrame/kanata/lib/frontend/component/SkinnedSkeletonComponent' {
  13045. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  13046. import SkeletonBoneInverseModel from 'XrFrame/kanata/lib/frontend/resource/SkeletonBoneInverseModel'
  13047. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  13048. export default class SkinnedSkeletonComponent extends NativeObject {
  13049. static UPDATE_MATS(
  13050. comps: SkinnedSkeletonComponent[],
  13051. size: number
  13052. ): void
  13053. get boneNum(): number
  13054. get boneInverseModel(): SkeletonBoneInverseModel
  13055. get boneOffsetMatrices(): Float32Array
  13056. constructor(boneNum: number, flag: number)
  13057. setBoneMatrix(
  13058. boneInverseModel: SkeletonBoneInverseModel,
  13059. boneIndices: number[],
  13060. boneEntities: Entity3D[]
  13061. ): void
  13062. getBoneNum(): number
  13063. getBoneOffsetMatrices(): Float32Array
  13064. }
  13065. }
  13066. declare module 'XrFrame/kanata/lib/frontend/component/DynamicBonesComponent' {
  13067. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  13068. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  13069. export default class DynamicBonesComponent extends NativeObject {
  13070. static OFFSETS: {
  13071. stiffness: number
  13072. elasticity: number
  13073. damping: number
  13074. }
  13075. get stiffness(): number
  13076. set stiffness(v: number)
  13077. get damping(): number
  13078. set damping(v: number)
  13079. get elasticity(): number
  13080. set elasticity(v: number)
  13081. constructor(rootNode?: Entity3D)
  13082. preUpdate(): void
  13083. update(
  13084. dt: number,
  13085. rootMotion?: {
  13086. x: number
  13087. y: number
  13088. z: number
  13089. }
  13090. ): void
  13091. rebuild(): void
  13092. resetRoot(root?: Entity3D): void
  13093. }
  13094. }
  13095. declare module 'XrFrame/kanata/lib/frontend/entity/Entity2D' {
  13096. import PoolObject from 'XrFrame/kanata/lib/frontend/pool/PoolObject'
  13097. import PoolManager from 'XrFrame/kanata/lib/frontend/pool/PoolManager'
  13098. export default class Entity2D extends PoolObject {
  13099. static POLL_MANAGER: PoolManager
  13100. static OFFSETS: {
  13101. size: number
  13102. rotation: number
  13103. position: number
  13104. scale: number
  13105. worldMatrix: number
  13106. }
  13107. localPositionOffset: number
  13108. localRotationOffset: number
  13109. localScaleOffset: number
  13110. worldMatrixOffset: number
  13111. constructor()
  13112. addChild(child: Entity2D): void
  13113. addChildAtIndex(child: Entity2D, index: number): void
  13114. removeFromParent(): void
  13115. setAsRoot(): void
  13116. destroy(): void
  13117. clear(): void
  13118. setLocalMatrixDirty(): void
  13119. set active(val: boolean)
  13120. }
  13121. }
  13122. declare module 'XrFrame/kanata/lib/frontend/entity/Entity3D' {
  13123. import PoolObject from 'XrFrame/kanata/lib/frontend/pool/PoolObject'
  13124. import PoolManager from 'XrFrame/kanata/lib/frontend/pool/PoolManager'
  13125. export default class Entity3D extends PoolObject {
  13126. static POLL_MANAGER: PoolManager
  13127. static OFFSETS: {
  13128. size: number
  13129. dfRotationType: number
  13130. rotationType: number
  13131. rotation: number
  13132. position: number
  13133. scale: number
  13134. worldOffset: number
  13135. worldMatrix: number
  13136. }
  13137. static CREATE_TREE(
  13138. length: number,
  13139. buffer: ArrayBuffer,
  13140. out: any[],
  13141. calculateWordMatrix?: boolean
  13142. ): boolean
  13143. localRotationTypeOffset: number
  13144. localQuaternionOffset: number
  13145. localPositionOffset: number
  13146. localScaleOffset: number
  13147. worldMatrixOffset: number
  13148. extOffset: number
  13149. layerOffset: number
  13150. mixedLayerMaskOffset: number
  13151. constructor()
  13152. setUsingEuler(on: boolean): void
  13153. isUsingEuler(): boolean
  13154. setLayer(layer: number): void
  13155. getLayer(): number
  13156. getMixedLayerMask(): number
  13157. addChild(child: Entity3D): void
  13158. addChildAtIndex(child: Entity3D, index: number): void
  13159. removeFromParent(): void
  13160. setAsRoot(): void
  13161. destroy(): void
  13162. /**
  13163. * 如果只调用entityClear指令,那么Kanata就无法回收根节点下面的子节点了。
  13164. * 目前Kanata的frontend没有父子关系信息只能这么做了。
  13165. * 这个方法目前只能减少eventBridge的指令量,避免在大规模节点销毁的时候频繁触发eventBridge的溢出提交。
  13166. * @param entities
  13167. * @param length
  13168. */
  13169. clear(entities: Entity3D[], length: number): void
  13170. setLocalMatrixDirty(): void
  13171. set active(val: boolean)
  13172. }
  13173. }
  13174. declare module 'XrFrame/kanata/lib/frontend/resource/AnimationClipModel' {
  13175. import DataModel from 'XrFrame/kanata/lib/frontend/resource/DataModel'
  13176. export default class AnimationClipModel extends DataModel {
  13177. setAnimationClip(ab: ArrayBuffer): void
  13178. }
  13179. }
  13180. declare module 'XrFrame/kanata/lib/frontend/resource/AnimationClipBinding' {
  13181. /**
  13182. * AnimationClipBinding.ts
  13183. *
  13184. * */
  13185. import Entity3D from 'XrFrame/kanata/lib/frontend/entity/Entity3D'
  13186. import AnimationClipModel from 'XrFrame/kanata/lib/frontend/resource/AnimationClipModel'
  13187. import { EUseDefaultAddedAction } from 'XrFrame/kanata/lib/backend'
  13188. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13189. import { INativeWorker } from 'XrFrame/kanata/lib/backend/native/worker'
  13190. export default class AnimationClipBinding extends PureResource {
  13191. __handle: INativeWorker.IAnimationClipBinding
  13192. constructor(
  13193. clipArray: AnimationClipModel[],
  13194. clipArrayOffset: number,
  13195. clipArrayLength: number,
  13196. entityArray: Array<number | Entity3D | null>,
  13197. entityArrayOffset: number,
  13198. entityArrayLength: number,
  13199. useDefaultAddedNodesAction: EUseDefaultAddedAction,
  13200. rootEntity: Entity3D
  13201. )
  13202. rebind(
  13203. clipArray: AnimationClipModel[],
  13204. clipArrayOffset: number,
  13205. clipArrayLength: number,
  13206. entityArray: Array<number | Entity3D | null>,
  13207. entityArrayOffset: number,
  13208. entityArrayLength: number,
  13209. removeAction: number,
  13210. retainedAction: number,
  13211. addedAction: number,
  13212. rootEntity: Entity3D
  13213. ): boolean
  13214. update(
  13215. clipArray: AnimationClipModel[],
  13216. clipArrayOffset: number,
  13217. clipArrayLength: number,
  13218. entityArray: Array<number | Entity3D | null>,
  13219. entityArrayOffset: number,
  13220. entityArrayLength: number,
  13221. removeAction: number,
  13222. retainedAction: number,
  13223. addedAction: number
  13224. ): boolean
  13225. writeDefaultValues(): void
  13226. }
  13227. }
  13228. declare module 'XrFrame/kanata/lib/frontend/resource/AnimatorControllerModel' {
  13229. /**
  13230. * AnimatorControllerModel.ts
  13231. *
  13232. * */
  13233. import AnimatorControllerStateModel from 'XrFrame/kanata/lib/frontend/resource/AnimatorControllerStateModel'
  13234. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13235. import AnimationClipBinding from 'XrFrame/kanata/lib/frontend/resource/AnimationClipBinding'
  13236. export default class AnimatorControllerModel extends PureResource {
  13237. layerCount: number
  13238. static UPDATE_ANIMATOR_CONTROLLERS(
  13239. animatorControllers: AnimatorControllerModel[],
  13240. size: number
  13241. ): void
  13242. constructor(layerCount: number)
  13243. setAnimationClipBinding(binding: null | AnimationClipBinding): void
  13244. setLayerBlendType(layerIndex: number, blendType: number): void
  13245. setLayerWeight(layerIndex: number, weight: number): void
  13246. setLayerBlend(
  13247. layerIndex: number,
  13248. blend: null | AnimatorControllerStateModel
  13249. ): void
  13250. setLayerMask(
  13251. layerIndex: number,
  13252. mask: {
  13253. buffer: null | ArrayBuffer
  13254. offset: number
  13255. length: number
  13256. }
  13257. ): void
  13258. update(): void
  13259. destroy(): void
  13260. }
  13261. }
  13262. declare module 'XrFrame/kanata/lib/frontend/resource/AnimatorControllerStateModel' {
  13263. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13264. import AnimationClipModel from 'XrFrame/kanata/lib/frontend/resource/AnimationClipModel'
  13265. export default class AnimatorControllerStateModel extends PureResource {
  13266. readonly count: number
  13267. get weight(): number
  13268. set weight(weight: number)
  13269. get useDefault(): number
  13270. set useDefault(useDefault: number)
  13271. constructor(count: number)
  13272. resetBlendInfo(): void
  13273. setNextState(state: AnimatorControllerStateModel | null): void
  13274. setBlendInfo(
  13275. clip: AnimationClipModel,
  13276. frameIndex: number,
  13277. blendWeight: number,
  13278. additiveReferenceClip: null | AnimationClipModel,
  13279. additiveFrameIndex: number
  13280. ): boolean
  13281. }
  13282. }
  13283. declare module 'XrFrame/kanata/lib/frontend/resource/DataBuffer' {
  13284. /**
  13285. * DataBuffer.ts
  13286. *
  13287. * * @Date : 9/4/2020, 1:21:59 PM
  13288. */
  13289. import { IHandle } from 'XrFrame/kanata/lib/backend'
  13290. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  13291. export default class DataBuffer extends NativeObject {
  13292. constructor(nativeObj: IHandle)
  13293. get dataLength(): number
  13294. get byteOffset(): number
  13295. get arrayBuffer(): ArrayBuffer
  13296. }
  13297. }
  13298. declare module 'XrFrame/kanata/lib/frontend/resource/DataModel' {
  13299. /**
  13300. * DataModel.ts
  13301. *
  13302. * * @Date : 9/4/2020, 1:18:13 PM
  13303. */
  13304. import { EDataModelType } from 'XrFrame/kanata/lib/backend'
  13305. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13306. export default class DataModel extends PureResource {
  13307. protected _createNativeModel(
  13308. type: EDataModelType,
  13309. buffer: ArrayBuffer
  13310. ): void
  13311. }
  13312. }
  13313. declare module 'XrFrame/kanata/lib/frontend/resource/Effect' {
  13314. /**
  13315. * Effect.ts
  13316. *
  13317. * * @Date : 9/9/2020, 5:49:54 PM
  13318. */
  13319. import {
  13320. EBlendFactor,
  13321. EBlendEquation,
  13322. ECullMode,
  13323. ECompareFunc,
  13324. EPrimitiveType,
  13325. EStencilOp
  13326. } from 'XrFrame/kanata/lib/backend'
  13327. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  13328. export default class Effect extends NativeObject {
  13329. static OFFSETS: {
  13330. size: number
  13331. useMaterialStates: number
  13332. fstencil: number
  13333. bstencil: number
  13334. blendRGBA: number
  13335. colorDepth: number
  13336. state: number
  13337. }
  13338. get passCount(): number
  13339. constructor(
  13340. name: string,
  13341. passCount: number,
  13342. keyIndexMap: string[],
  13343. passes: Array<{
  13344. lightMode: string
  13345. variants?: {
  13346. [key: number]: number
  13347. }
  13348. macros?: {
  13349. [key: string]: number
  13350. }
  13351. shaders?: number[]
  13352. }>,
  13353. shaders: string[],
  13354. variants: number[][],
  13355. useRuntimeMacros?: boolean
  13356. )
  13357. warmUp(): any
  13358. getBlendOn(pass: number): boolean
  13359. setBlendOn(pass: number, value: boolean): void
  13360. getBlendSrc(pass: number): EBlendFactor
  13361. setBlendSrc(pass: number, value: EBlendFactor): void
  13362. getBlendDst(pass: number): EBlendFactor
  13363. setBlendDst(pass: number, value: EBlendFactor): void
  13364. getBlendSrcRGB(pass: number): EBlendFactor
  13365. setBlendSrcRGB(pass: number, value: EBlendFactor): void
  13366. getBlendSrcAlpha(pass: number): EBlendFactor
  13367. setBlendSrcAlpha(pass: number, value: EBlendFactor): void
  13368. getBlendDstRGB(pass: number): EBlendFactor
  13369. setBlendDstRGB(pass: number, value: EBlendFactor): void
  13370. getBlendDstAlpha(pass: number): EBlendFactor
  13371. setBlendDstAlpha(pass: number, value: EBlendFactor): void
  13372. getBlendFunc(pass: number): EBlendEquation
  13373. setBlendFunc(pass: number, value: EBlendEquation): void
  13374. getDepthTestOn(pass: number): boolean
  13375. setDepthTestOn(pass: number, value: boolean): void
  13376. getDepthTestComp(pass: number): ECompareFunc
  13377. setDepthTestComp(pass: number, value: ECompareFunc): void
  13378. getDepthWrite(pass: number): boolean
  13379. setDepthWrite(pass: number, value: boolean): void
  13380. getColorWrite(pass: number): number
  13381. setColorWrite(pass: number, value: number): void
  13382. getCullFace(pass: number): ECullMode
  13383. setCullFace(pass: number, value: ECullMode): void
  13384. getCullOn(pass: number): boolean
  13385. setCullOn(pass: number, value: boolean): void
  13386. getPrimitiveType(pass: number): EPrimitiveType
  13387. setPrimitiveType(pass: number, value: EPrimitiveType): void
  13388. getStencilTestOn(pass: number): boolean
  13389. setStencilTestOn(pass: number, value: boolean): void
  13390. getStencilComp(pass: number): ECompareFunc
  13391. setStencilComp(pass: number, value: ECompareFunc): void
  13392. getStencilPass(pass: number): EStencilOp
  13393. setStencilPass(pass: number, value: EStencilOp): void
  13394. getStencilFail(pass: number): EStencilOp
  13395. setStencilFail(pass: number, value: EStencilOp): void
  13396. getStencilZFail(pass: number): EStencilOp
  13397. setStencilZFail(pass: number, value: EStencilOp): void
  13398. getStencilWriteMask(pass: number): number
  13399. setStencilWriteMask(pass: number, value: number): void
  13400. getStencilReadMask(pass: number): number
  13401. setStencilReadMask(pass: number, value: number): void
  13402. getStencilRef(pass: number): number
  13403. setStencilRef(pass: number, value: number): void
  13404. getUseMaterialStates(pass: number): boolean
  13405. setUseMaterialStates(pass: number, value: boolean): void
  13406. getUseMaterialStateBlendOn(pass: number): boolean
  13407. setUseMaterialStateBlendOn(pass: number, value: boolean): void
  13408. getUseMaterialStateBlendSrcRGB(pass: number): boolean
  13409. setUseMaterialStateBlendSrcRGB(pass: number, value: boolean): void
  13410. getUseMaterialStateBlendSrcAlpha(pass: number): boolean
  13411. setUseMaterialStateBlendSrcAlpha(pass: number, value: boolean): void
  13412. getUseMaterialStateBlendDstRGB(pass: number): boolean
  13413. setUseMaterialStateBlendDstRGB(pass: number, value: boolean): void
  13414. getUseMaterialStateBlendDstAlpha(pass: number): boolean
  13415. setUseMaterialStateBlendDstAlpha(pass: number, value: boolean): void
  13416. getUseMaterialStateBlendFunc(pass: number): boolean
  13417. setUseMaterialStateBlendFunc(pass: number, value: boolean): void
  13418. getUseMaterialStateDepthTestOn(pass: number): boolean
  13419. setUseMaterialStateDepthTestOn(pass: number, value: boolean): void
  13420. getUseMaterialStateDepthTestComp(pass: number): boolean
  13421. setUseMaterialStateDepthTestComp(pass: number, value: boolean): void
  13422. getUseMaterialStateDepthWrite(pass: number): boolean
  13423. setUseMaterialStateDepthWrite(pass: number, value: boolean): void
  13424. getUseMaterialStateCullOn(pass: number): boolean
  13425. setUseMaterialStateCullOn(pass: number, value: boolean): void
  13426. getUseMaterialStateCullFace(pass: number): boolean
  13427. setUseMaterialStateCullFace(pass: number, value: boolean): void
  13428. getUseMaterialStatePrimitiveType(pass: number): boolean
  13429. setUseMaterialStatePrimitiveType(pass: number, value: boolean): void
  13430. getUseMaterialStateStencilTestOn(pass: number): boolean
  13431. setUseMaterialStateStencilTestOn(pass: number, value: boolean): void
  13432. getUseMaterialStateStencilTestComp(pass: number): boolean
  13433. setUseMaterialStateStencilTestComp(pass: number, value: boolean): void
  13434. getUseMaterialStateStencilTestPass(pass: number): boolean
  13435. setUseMaterialStateStencilTestPass(pass: number, value: boolean): void
  13436. getUseMaterialStateStencilTestFail(pass: number): boolean
  13437. setUseMaterialStateStencilTestFail(pass: number, value: boolean): void
  13438. getUseMaterialStateStencilTestZFail(pass: number): boolean
  13439. setUseMaterialStateStencilTestZFail(pass: number, value: boolean): void
  13440. getUseMaterialStateColorWrite(pass: number): boolean
  13441. setUseMaterialStateColorWrite(pass: number, value: boolean): void
  13442. showDebugInfo(): string
  13443. }
  13444. }
  13445. declare module 'XrFrame/kanata/lib/frontend/resource/Material' {
  13446. /**
  13447. * Material.ts
  13448. *
  13449. * * @Date : 9/4/2020, 6:41:13 PM
  13450. */
  13451. import {
  13452. EBlendFactor,
  13453. EBlendEquation,
  13454. ECompareFunc,
  13455. ECullMode,
  13456. EStencilOp,
  13457. EPrimitiveType
  13458. } from 'XrFrame/kanata/lib/backend'
  13459. import UniformBlock from 'XrFrame/kanata/lib/frontend/resource/UniformBlock'
  13460. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  13461. import Effect from 'XrFrame/kanata/lib/frontend/resource/Effect'
  13462. export default class Material extends NativeObject {
  13463. static OFFSETS: {
  13464. size: number
  13465. renderQueue: number
  13466. effect: number
  13467. uniformBlock: number
  13468. fstencilMask: number
  13469. bstencilMask: number
  13470. blendRGBAMask: number
  13471. colorDepthMask: number
  13472. stateMask: number
  13473. fstencil: number
  13474. bstencil: number
  13475. blendRGBA: number
  13476. colorDepth: number
  13477. state: number
  13478. useInstance: number
  13479. }
  13480. protected _uniforms: UniformBlock
  13481. protected _effect: Effect
  13482. protected _macros: {
  13483. [name: string]: string | number | boolean
  13484. }
  13485. get effect(): Effect
  13486. set effect(value: Effect)
  13487. get uniforms(): UniformBlock
  13488. set uniforms(value: UniformBlock)
  13489. get renderQueue(): number
  13490. set renderQueue(value: number)
  13491. get useInstance(): boolean
  13492. set useInstance(value: boolean)
  13493. get blendOn(): boolean
  13494. set blendOn(value: boolean)
  13495. get blendSrcRGB(): EBlendFactor
  13496. set blendSrcRGB(value: EBlendFactor)
  13497. get blendSrcRGBChanged(): boolean
  13498. get blendSrcAlpha(): EBlendFactor
  13499. set blendSrcAlpha(value: EBlendFactor)
  13500. set blendSrc(value: EBlendFactor)
  13501. get blendDstRGB(): EBlendFactor
  13502. set blendDstRGB(value: EBlendFactor)
  13503. get blendDstRGBChanged(): boolean
  13504. get blendDstAlpha(): EBlendFactor
  13505. set blendDstAlpha(value: EBlendFactor)
  13506. set blendDst(value: EBlendFactor)
  13507. get blendFunc(): EBlendEquation
  13508. set blendFunc(value: EBlendEquation)
  13509. get depthTestOn(): boolean
  13510. set depthTestOn(value: boolean)
  13511. get depthTestComp(): ECompareFunc
  13512. set depthTestComp(value: ECompareFunc)
  13513. get depthWrite(): boolean
  13514. set depthWrite(value: boolean)
  13515. get colorWrite(): number
  13516. set colorWrite(value: number)
  13517. get cullFace(): ECullMode
  13518. set cullFace(value: ECullMode)
  13519. get cullOn(): boolean
  13520. set cullOn(value: boolean)
  13521. get primitiveType(): EPrimitiveType
  13522. set primitiveType(value: EPrimitiveType)
  13523. get stencilTestOn(): boolean
  13524. set stencilTestOn(value: boolean)
  13525. get stencilComp(): ECompareFunc
  13526. set stencilComp(value: ECompareFunc)
  13527. get stencilPass(): EStencilOp
  13528. set stencilPass(value: EStencilOp)
  13529. get stencilFail(): EStencilOp
  13530. set stencilFail(value: EStencilOp)
  13531. get stencilZFail(): EStencilOp
  13532. set stencilZFail(value: EStencilOp)
  13533. get stencilWriteMask(): number
  13534. set stencilWriteMask(value: number)
  13535. get stencilReadMask(): number
  13536. set stencilReadMask(value: number)
  13537. get stencilRef(): number
  13538. set stencilRef(value: number)
  13539. get blendOnMask(): boolean
  13540. set blendOnMask(value: boolean)
  13541. get blendSrcRGBMask(): boolean
  13542. set blendSrcRGBMask(value: boolean)
  13543. get blendSrcAlphaMask(): boolean
  13544. set blendSrcAlphaMask(value: boolean)
  13545. set blendSrcMask(value: boolean)
  13546. get blendDstRGBMask(): boolean
  13547. set blendDstRGBMask(value: boolean)
  13548. get blendDstAlphaMask(): boolean
  13549. set blendDstAlphaMask(value: boolean)
  13550. set blendDstMask(value: boolean)
  13551. get blendFuncMask(): boolean
  13552. set blendFuncMask(value: boolean)
  13553. get depthTestOnMask(): boolean
  13554. set depthTestOnMask(value: boolean)
  13555. get depthTestCompMask(): boolean
  13556. set depthTestCompMask(value: boolean)
  13557. get depthWriteMask(): boolean
  13558. set depthWriteMask(value: boolean)
  13559. get colorWriteMask(): boolean
  13560. set colorWriteMask(value: boolean)
  13561. get cullFaceMask(): boolean
  13562. set cullFaceMask(value: boolean)
  13563. get cullOnMask(): boolean
  13564. set cullOnMask(value: boolean)
  13565. get primitiveTypeMask(): boolean
  13566. set primitiveTypeMask(value: boolean)
  13567. get stencilTestOnMask(): boolean
  13568. set stencilTestOnMask(value: boolean)
  13569. get stencilCompMask(): boolean
  13570. set stencilCompMask(value: boolean)
  13571. get stencilPassMask(): boolean
  13572. set stencilPassMask(value: boolean)
  13573. get stencilFailMask(): boolean
  13574. set stencilFailMask(value: boolean)
  13575. get stencilZFailMask(): boolean
  13576. set stencilZFailMask(value: boolean)
  13577. get stencilWriteMaskMask(): boolean
  13578. set stencilWriteMaskMask(value: boolean)
  13579. get stencilReadMaskMask(): boolean
  13580. set stencilReadMaskMask(value: boolean)
  13581. get stencilRefMask(): boolean
  13582. set stencilRefMask(value: boolean)
  13583. constructor(
  13584. macros?: {
  13585. [name: string]: string | number | boolean
  13586. },
  13587. effect?: Effect,
  13588. uniformBlock?: UniformBlock
  13589. )
  13590. protected _createNativeMat(
  13591. macros?: {
  13592. [name: string]: string | number | boolean
  13593. },
  13594. effect?: Effect,
  13595. uniformBlock?: UniformBlock
  13596. ): void
  13597. changeMacros(macros?: {
  13598. [name: string]: string | number | boolean
  13599. }): void
  13600. getMacro(key: string): string | number | boolean
  13601. clone(uniforms?: UniformBlock): Material
  13602. showDebugInfo(): string
  13603. }
  13604. }
  13605. declare module 'XrFrame/kanata/lib/frontend/resource/RenderPass' {
  13606. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13607. import Texture from 'XrFrame/kanata/lib/frontend/resource/Texture'
  13608. export interface IRenderPassOptions {
  13609. colors: Array<{
  13610. texture: Texture
  13611. slice?: number
  13612. level?: number
  13613. }>
  13614. depth: {
  13615. texture: Texture
  13616. slice?: number
  13617. level?: number
  13618. }
  13619. stencil?: {
  13620. texture: Texture
  13621. slice?: number
  13622. level?: number
  13623. }
  13624. }
  13625. export default class RenderPass extends PureResource {
  13626. static SCREEN_RENDER_PASS: RenderPass
  13627. constructor(options: IRenderPassOptions)
  13628. }
  13629. }
  13630. declare module 'XrFrame/kanata/lib/frontend/resource/SkeletonBoneInverseModel' {
  13631. import DataModel from 'XrFrame/kanata/lib/frontend/resource/DataModel'
  13632. export default class SkeletonBoneInverseModel extends DataModel {
  13633. boneNum: number
  13634. setBoneInverseMatrix(matrices: Float32Array): void
  13635. }
  13636. }
  13637. declare module 'XrFrame/kanata/lib/frontend/resource/Texture' {
  13638. /**
  13639. * Texture.ts
  13640. *
  13641. * * @Date : 9/4/2020, 2:35:42 PM
  13642. */
  13643. import {
  13644. ETextureFormat,
  13645. ETextureType,
  13646. EWrapMode,
  13647. EFilterMode,
  13648. TTextureSource
  13649. } from 'XrFrame/kanata/lib/backend'
  13650. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13651. /**
  13652. * 纹理资源{@link Texture}的创建参数。
  13653. */
  13654. export interface ITextureOptions {
  13655. /**
  13656. * 纹理宽,如果`source`是`IImage`可以不传。
  13657. */
  13658. width?: number
  13659. /**
  13660. * 纹理高,如果`source`是`IImage`可以不传。
  13661. */
  13662. height?: number
  13663. /**
  13664. * @internal
  13665. */
  13666. isWriteOnly?: boolean
  13667. /**
  13668. * @internal
  13669. */
  13670. isRenderTarget?: boolean
  13671. /**
  13672. * @internal
  13673. */
  13674. canvas?: HTMLCanvasElement
  13675. /**
  13676. * 纹理数据源,如果是2D纹理,一般只能有一个元素。如果是`Buffer`类型数据,比如压缩纹理,则需要和`offsets`配合使用,一般用于`mipmaps`的场合。
  13677. * 如果是立方体纹理,则有六个元素。
  13678. */
  13679. source?: TTextureSource[]
  13680. /**
  13681. * 当`source`为`Buffer`纹理并且拥有`mipmaps`之类的时,标记如何切割数据。
  13682. * 规则是: off1, size1, off2, size2......
  13683. */
  13684. offsets?: Uint32Array
  13685. /**
  13686. * 纹理类型。
  13687. */
  13688. type?: ETextureType
  13689. /**
  13690. * 纹理有多少切片,比如立方体纹理就为`6`。
  13691. */
  13692. slices?: number
  13693. /**
  13694. * 纹理有多少级`mipmap`。
  13695. */
  13696. mips?: number
  13697. /**
  13698. * 纹理的像素格式。
  13699. */
  13700. pixelFormat?: ETextureFormat
  13701. minFilter?: EFilterMode
  13702. magFilter?: EFilterMode
  13703. /**
  13704. * 是否要自动生成`mipmaps`,仅对非压缩纹理有效。
  13705. */
  13706. generateMipmaps?: boolean
  13707. wrapU?: EWrapMode
  13708. wrapV?: EWrapMode
  13709. wrapW?: EWrapMode
  13710. /**
  13711. * 各向异性等级。
  13712. */
  13713. anisoLevel?: number
  13714. /**
  13715. * @internal
  13716. */
  13717. sampleCount?: number
  13718. }
  13719. /**
  13720. * 纹理资源。
  13721. */
  13722. export default class Texture extends PureResource {
  13723. get type(): ETextureType
  13724. get width(): number
  13725. get height(): number
  13726. get slice(): number
  13727. get mips(): number
  13728. get pixelFormat(): ETextureFormat
  13729. get wrapU(): EWrapMode
  13730. set wrapU(value: EWrapMode)
  13731. get wrapV(): EWrapMode
  13732. set wrapV(value: EWrapMode)
  13733. get wrapW(): EWrapMode
  13734. set wrapW(value: EWrapMode)
  13735. get magFilter(): EFilterMode
  13736. set magFilter(value: EFilterMode)
  13737. get minFilter(): EFilterMode
  13738. set minFilter(value: EFilterMode)
  13739. get anisoLevel(): number
  13740. set anisoLevel(value: number)
  13741. get sampleCount(): number
  13742. set sampleCount(value: number)
  13743. get generateMipmaps(): boolean
  13744. set generateMipmaps(value: boolean)
  13745. get isRenderTarget(): boolean
  13746. set isRenderTarget(value: boolean)
  13747. constructor(options: ITextureOptions)
  13748. /**
  13749. * 在创建了纹理后,可以用此方法来更新。
  13750. */
  13751. update(options: {
  13752. /**
  13753. * `mipmap`等级。
  13754. */
  13755. level?: number
  13756. /**
  13757. * 切片。
  13758. */
  13759. slice?: number
  13760. /**
  13761. * x向偏移。
  13762. */
  13763. xoffset?: number
  13764. /**
  13765. * x向偏移。
  13766. */
  13767. yoffset?: number
  13768. /**
  13769. * @internal。
  13770. */
  13771. zoffset?: number
  13772. /**
  13773. * 宽,相对于x偏移。
  13774. */
  13775. width?: number
  13776. /**
  13777. * 高,相对于y偏移。
  13778. */
  13779. height?: number
  13780. /**
  13781. * 数据。
  13782. */
  13783. buffer: TTextureSource
  13784. }): void
  13785. showDebugInfo(): string
  13786. }
  13787. }
  13788. declare module 'XrFrame/kanata/lib/frontend/resource/UniformBlock' {
  13789. /**
  13790. * UniformBlock.ts
  13791. *
  13792. * * @Date : 9/4/2020, 2:34:36 PM
  13793. */
  13794. import { IHandle } from 'XrFrame/kanata/lib/backend'
  13795. import UniformDescriptor from 'XrFrame/kanata/lib/frontend/resource/UniformDescriptor'
  13796. import Texture from 'XrFrame/kanata/lib/frontend/resource/Texture'
  13797. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13798. /**
  13799. * 存储Uniform的一个区块。
  13800. */
  13801. export default class UniformBlock extends PureResource {
  13802. /**
  13803. * @internal
  13804. */
  13805. static CREATE_FAKE(descriptor: UniformDescriptor): FakeUniformBlock
  13806. /**
  13807. * @internal
  13808. */
  13809. /**
  13810. * 描述符。
  13811. */
  13812. get descriptor(): UniformDescriptor
  13813. /**
  13814. * @internal
  13815. */
  13816. get textures(): {
  13817. [name: string]: Texture
  13818. }
  13819. /**
  13820. * @param descriptor 描述符。
  13821. */
  13822. constructor(descriptor: UniformDescriptor)
  13823. protected _createNativeObj(descriptor: UniformDescriptor): IHandle
  13824. /**
  13825. * 是否包含某个成员uniform。
  13826. */
  13827. hasKey(key: string): boolean
  13828. /**
  13829. * 设置某个成员uniform。
  13830. */
  13831. setUniform(
  13832. key: string,
  13833. value: ArrayLike<number> | Texture | number
  13834. ): boolean
  13835. /**
  13836. * 获取某个成员uniform。
  13837. * 如果是返回`number`,则是纹理的id。
  13838. */
  13839. getUniform(key: string): Float32Array | number
  13840. /**
  13841. * 获取某个成员uniform的texture实例。
  13842. */
  13843. getTexture(key: string): Texture
  13844. /**
  13845. * @internal
  13846. */
  13847. /**
  13848. * @internal
  13849. */
  13850. setAllData(data: Float32Array): void
  13851. /**
  13852. * 科隆某个uniform。
  13853. */
  13854. clone(): UniformBlock
  13855. /**
  13856. * 复制某个uniform。
  13857. */
  13858. copy(ub: UniformBlock): void
  13859. showDebugInfo(): string
  13860. }
  13861. class FakeUniformBlock extends UniformBlock {
  13862. protected _createNativeObj(descriptor: UniformDescriptor): {
  13863. id: number
  13864. data: ArrayBuffer
  13865. }
  13866. }
  13867. export {}
  13868. }
  13869. declare module 'XrFrame/kanata/lib/frontend/resource/UniformDescriptor' {
  13870. /**
  13871. * UniformDescriptor.ts
  13872. *
  13873. * * @Date : 9/4/2020, 2:34:50 PM
  13874. */
  13875. import {
  13876. EUniformType,
  13877. IUniformDescriptorOptions
  13878. } from 'XrFrame/kanata/lib/backend'
  13879. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13880. /**
  13881. * UniformBlock描述符。
  13882. */
  13883. export default class UniformDescriptor extends PureResource {
  13884. /**
  13885. * @internal
  13886. */
  13887. get layout(): {
  13888. [key: string]: [
  13889. EUniformType,
  13890. number,
  13891. number,
  13892. number,
  13893. EUniformType,
  13894. boolean
  13895. ]
  13896. }
  13897. /**
  13898. * 以Float计的长度。
  13899. */
  13900. get size(): number
  13901. constructor(options: IUniformDescriptorOptions)
  13902. /**
  13903. * @internal
  13904. */
  13905. hasKey(key: string): boolean
  13906. /**
  13907. * @internal
  13908. */
  13909. setUniform(
  13910. key: string,
  13911. value: ArrayLike<number> | number,
  13912. f32: Float32Array,
  13913. u32: Uint32Array
  13914. ): void
  13915. /**
  13916. * @internal
  13917. */
  13918. getUniform(
  13919. key: string,
  13920. f32: Float32Array,
  13921. u32: Uint32Array
  13922. ): Float32Array | number
  13923. /**
  13924. * @internal
  13925. */
  13926. }
  13927. }
  13928. declare module 'XrFrame/kanata/lib/frontend/resource/IndexBuffer' {
  13929. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13930. export default class IndexBuffer extends PureResource {
  13931. get byteSize(): number
  13932. constructor(buffer: ArrayBuffer | ArrayBufferView, is32bits?: boolean)
  13933. update(buffer: ArrayBuffer | ArrayBufferView, offset: number): void
  13934. }
  13935. }
  13936. declare module 'XrFrame/kanata/lib/frontend/resource/IndexData' {
  13937. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13938. export default class IndexData extends PureResource {
  13939. get data(): ArrayBuffer
  13940. constructor(size: number)
  13941. }
  13942. }
  13943. declare module 'XrFrame/kanata/lib/frontend/resource/VertexBuffer' {
  13944. import VertexLayout from 'XrFrame/kanata/lib/frontend/resource/VertexLayout'
  13945. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13946. /**
  13947. * 顶点数据。
  13948. */
  13949. export default class VertexBuffer extends PureResource {
  13950. get byteSize(): number
  13951. get layout(): VertexLayout
  13952. constructor(buffer: ArrayBuffer | ArrayBufferView, layout: VertexLayout)
  13953. update(buffer: ArrayBuffer | ArrayBufferView, offset: number): void
  13954. }
  13955. }
  13956. declare module 'XrFrame/kanata/lib/frontend/resource/VertexData' {
  13957. /**
  13958. * VertexData.ts
  13959. *
  13960. * * @Date : 9/11/2020, 4:43:52 PM
  13961. */
  13962. import VertexDataDescriptor from 'XrFrame/kanata/lib/frontend/resource/VertexDataDescriptor'
  13963. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13964. import VertexLayout from 'XrFrame/kanata/lib/frontend/resource/VertexLayout'
  13965. /**
  13966. * 用于合批的顶点数据。
  13967. */
  13968. export default class VertexData extends PureResource {
  13969. get layout(): VertexLayout
  13970. get data(): ArrayBuffer
  13971. constructor(
  13972. layout: VertexLayout,
  13973. size: number,
  13974. batchDesc: VertexDataDescriptor
  13975. )
  13976. }
  13977. }
  13978. declare module 'XrFrame/kanata/lib/frontend/resource/VertexLayout' {
  13979. /**
  13980. * VertexLayout.ts
  13981. *
  13982. * * @Date : 9/4/2020, 5:01:51 PM
  13983. */
  13984. import {
  13985. IVertexLayoutOptions,
  13986. EVertexLayoutUsage
  13987. } from 'XrFrame/kanata/lib/backend'
  13988. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  13989. /**
  13990. * 顶点布局描述。
  13991. */
  13992. export default class VertexLayout extends PureResource {
  13993. /**
  13994. * 顶点数据单位步长。
  13995. */
  13996. get stride(): number
  13997. constructor(options: IVertexLayoutOptions)
  13998. /**
  13999. * 获取某个属性的配置。
  14000. */
  14001. getConfigByName(name: string): {
  14002. name: string
  14003. format: import('XrFrame/kanata/lib/backend').EVertexFormat
  14004. offset: number
  14005. usage: EVertexLayoutUsage
  14006. }
  14007. /**
  14008. * 获取某个用途的属性的配置。
  14009. */
  14010. getConfigByUsage(usage: EVertexLayoutUsage): {
  14011. name: string
  14012. format: import('XrFrame/kanata/lib/backend').EVertexFormat
  14013. offset: number
  14014. usage: EVertexLayoutUsage
  14015. }
  14016. }
  14017. }
  14018. declare module 'XrFrame/kanata/lib/frontend/resource/VertexDataDescriptor' {
  14019. /**
  14020. * VertexDataDescriptor.ts
  14021. *
  14022. * * @Date : 4/28/2021, 4:38:37 PM
  14023. */
  14024. import { IVertexDataDescriptorOptions } from 'XrFrame/kanata/lib/backend'
  14025. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  14026. /**
  14027. * 用于合批的顶点数据的描述符。
  14028. */
  14029. export default class VertexDataDescriptor extends PureResource {
  14030. constructor(options: IVertexDataDescriptorOptions)
  14031. }
  14032. }
  14033. declare module 'XrFrame/kanata/lib/frontend/resource/View' {
  14034. /**
  14035. * View.ts
  14036. *
  14037. * * @Date : 9/4/2020, 6:43:18 PM
  14038. */
  14039. import { IRect, IViewAction } from 'XrFrame/kanata/lib/backend'
  14040. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  14041. /**
  14042. * 视图,用于控制清屏、视图区域等配置。
  14043. */
  14044. export default class View extends PureResource {
  14045. constructor(options: {
  14046. passAction: IViewAction
  14047. viewport: IRect
  14048. scissor: IRect
  14049. })
  14050. }
  14051. }
  14052. declare module 'XrFrame/kanata/lib/frontend/resource/ScalableList' {
  14053. import PureResource from 'XrFrame/kanata/lib/frontend/shared/PureResource'
  14054. export const SL_MAP: Set<ScalableList>
  14055. export function CHECK_SLS_RESIZE(): void
  14056. export function CLEAR_SLS(): void
  14057. /**
  14058. * 可扩容列表,用于存储Mesh的剔除结果以及绘制数据的id。
  14059. */
  14060. export default class ScalableList extends PureResource {
  14061. /**
  14062. * 当前全部可用的大小。
  14063. */
  14064. get size(): number
  14065. /**
  14066. * 存储的id集合。
  14067. */
  14068. get dataView(): Uint32Array
  14069. /**
  14070. * 当前已用的大小,一般不需要自己设置。
  14071. */
  14072. get usedSize(): number
  14073. set usedSize(value: number)
  14074. constructor(initSize: number)
  14075. /**
  14076. * 扩容,将会扩大两倍,一般不需要自己调用。
  14077. *
  14078. * @param deprecatedSize will always be current size, don't use it!
  14079. */
  14080. enlarge(deprecatedSize?: number): void
  14081. /**
  14082. * 初始化到准备`add`的阶段。
  14083. */
  14084. begin(): void
  14085. /**
  14086. * 添加一个数据。
  14087. *
  14088. * @param deprecatedEnlargeSize will always be current size, don't use it!
  14089. */
  14090. add(id: number, deprecatedEnlargeSize?: number): void
  14091. /**
  14092. * 结束此次所有`add`的流程。
  14093. */
  14094. end(): void
  14095. /**
  14096. * 清空整个列表。
  14097. */
  14098. reset(): void
  14099. }
  14100. }
  14101. declare module 'XrFrame/kanata/lib/frontend/shared/crossContext' {
  14102. /**
  14103. * 跨域信息通道,用于主域和子域之间的通信。
  14104. */
  14105. class CrossContext {
  14106. constructor()
  14107. postMessage(data: any): void
  14108. onMessage(callback: (data: any) => void): void
  14109. flush(): void
  14110. }
  14111. let crossContext: CrossContext
  14112. export default crossContext
  14113. }
  14114. declare module 'XrFrame/components/particle/gradient' {
  14115. import Vector3 from 'XrFrame/math/vector3'
  14116. import Vector4 from 'XrFrame/math/vector4'
  14117. export class ColorGradient {
  14118. gradient: number
  14119. color: Vector4
  14120. color2: Vector4
  14121. constructor(gradient: any, color: any, color2: any)
  14122. /**
  14123. * 获取具体颜色属性值
  14124. * @param {Vector4} 用于存储结果的临时变量
  14125. */
  14126. getColor(colorTemp: Vector4): void
  14127. }
  14128. export class Color3Gradient {
  14129. gradient: number
  14130. color: Vector3
  14131. constructor(gradient: any, color: any)
  14132. }
  14133. export class FactorGradient {
  14134. gradient: number
  14135. factor: number
  14136. factor2: number
  14137. constructor(gradient: any, factor: any, factor2: any)
  14138. /**
  14139. * 获取具体属性值
  14140. * @return {number} 插值后的属性大小
  14141. */
  14142. getFactor(): number
  14143. }
  14144. export class BasicGradientMethod {
  14145. /**
  14146. * 从获取具体时刻的属性大小
  14147. * @param {number} ratio 粒子所处生命周期的阶段
  14148. * @param {Array} gradients 存储不同时刻指定属性变化的数组
  14149. * @param {Callback} updateFunc 回调函数
  14150. */
  14151. static GetCurrentGradient(
  14152. ratio: any,
  14153. gradients: any,
  14154. updateFunc: any
  14155. ): void
  14156. }
  14157. }
  14158. declare module 'XrFrame/components/emitter/BoxShapeEmitter' {
  14159. import Vector3 from 'XrFrame/math/vector3'
  14160. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14161. export default class BoxShapeEmitter extends BasicShapeEmitter {
  14162. direction: Vector3
  14163. direction2: Vector3
  14164. minEmitBox: Vector3
  14165. maxEmitBox: Vector3
  14166. constructor()
  14167. startDirection(worldMatrix: any, direction: any): void
  14168. startPosition(worldMatrix: any, position: Vector3): void
  14169. }
  14170. }
  14171. declare module 'XrFrame/components/emitter/PointShapeEmitter' {
  14172. import Vector3 from 'XrFrame/math/vector3'
  14173. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14174. export default class PointShapeEmitter extends BasicShapeEmitter {
  14175. /**
  14176. * 粒子运动方向左区间。
  14177. */
  14178. direction: Vector3
  14179. /**
  14180. * 粒子运动方向右区间。
  14181. */
  14182. direction2: Vector3
  14183. constructor()
  14184. startDirection(worldMatrix: any, direction: any): void
  14185. startPosition(worldMatrix: any, position: Vector3): void
  14186. }
  14187. }
  14188. declare module 'XrFrame/components/emitter/DrawShapeEmitter' {
  14189. import Vector3 from 'XrFrame/math/vector3'
  14190. import ParticleInstance from 'XrFrame/components/particle/ParticleInstance'
  14191. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14192. export default class DrawShapeEmitter extends BasicShapeEmitter {
  14193. direction: Vector3
  14194. constructor()
  14195. setContent(content: any, step?: number): void
  14196. translateBase64ToArrayBuffer(base64: any): ArrayBufferLike
  14197. startDirection(worldMatrix: any, direction: any): void
  14198. startPosition(worldMatrix: any, position: Vector3): void
  14199. processInstance(instance: ParticleInstance, deltaTime: number): void
  14200. lerpNumberArrayToVector(
  14201. vector: any,
  14202. numberArray1: any,
  14203. numberArray2: any,
  14204. step: any,
  14205. length?: number
  14206. ): void
  14207. }
  14208. }
  14209. declare module 'XrFrame/components/emitter/SphereShapeEmitter' {
  14210. import Vector3 from 'XrFrame/math/vector3'
  14211. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14212. import Matrix4 from 'XrFrame/math/matrix4'
  14213. export default class SphereShapeEmitter extends BasicShapeEmitter {
  14214. /**
  14215. * 球形半径
  14216. */
  14217. radius: number
  14218. /**
  14219. * 球形区域覆盖范围[0-1]
  14220. */
  14221. radiusRange: number
  14222. /**
  14223. * 粒子在球形内生成的角度区间[0-360]
  14224. */
  14225. arc: number
  14226. /**
  14227. * 粒子运动方向偏离程度[0-1]
  14228. */
  14229. randomizeDirection: number
  14230. constructor()
  14231. startDirection(
  14232. worldMatrix: Matrix4,
  14233. direction: Vector3,
  14234. position: Vector3
  14235. ): void
  14236. startPosition(worldMatrix: Matrix4, position: Vector3): void
  14237. }
  14238. }
  14239. declare module 'XrFrame/components/emitter/ConeShapeEmitter' {
  14240. import Vector3 from 'XrFrame/math/vector3'
  14241. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14242. export default class ConeShapeEmitter extends BasicShapeEmitter {
  14243. /**
  14244. * [0-1]
  14245. */
  14246. radiusRange: number
  14247. heightRange: number
  14248. /**
  14249. * [0-360]
  14250. */
  14251. arc: number
  14252. /**
  14253. * randomize the particle direction [0-1]
  14254. */
  14255. randomizeDirection: number
  14256. get radius(): number
  14257. set radius(value: number)
  14258. get angle(): number
  14259. set angle(value: number)
  14260. updateHeight(): void
  14261. constructor()
  14262. startDirection(
  14263. worldMatrix: any,
  14264. direction: any,
  14265. position: Vector3
  14266. ): void
  14267. startPosition(worldMatrix: any, position: Vector3): void
  14268. }
  14269. }
  14270. declare module 'XrFrame/components/emitter/CircleShapeEmitter' {
  14271. import Vector3 from 'XrFrame/math/vector3'
  14272. import { BasicShapeEmitter } from 'XrFrame/components/emitter/BasicShapeEmitter'
  14273. import Matrix4 from 'XrFrame/math/matrix4'
  14274. export default class CircleShapeEmitter extends BasicShapeEmitter {
  14275. radius: number
  14276. radiusRange: number
  14277. direction: Vector3
  14278. direction2: Vector3
  14279. arc: number
  14280. angle: number
  14281. constructor()
  14282. startDirection(
  14283. worldMatrix: Matrix4,
  14284. direction: Vector3,
  14285. position: Vector3
  14286. ): void
  14287. startPosition(worldMatrix: any, position: Vector3): void
  14288. }
  14289. }
  14290. declare module 'XrFrame/render-graph/RGNode' {
  14291. /**
  14292. * RGNode.ts
  14293. *
  14294. * * @Date : 1/13/2021, 8:29:55 PM
  14295. */
  14296. import { Kanata } from 'XrFrame/ext'
  14297. import Camera from 'XrFrame/components/Camera'
  14298. import { IRenderTarget } from 'XrFrame/assets/RenderTexture'
  14299. type RenderGraph = import('XrFrame/render-graph/RenderGraph').default
  14300. type RenderSystem = import('XrFrame/systems/RenderSystem').default
  14301. type Scene = import('XrFrame/core/Scene').default
  14302. export type TRGNodeAny = RGNode<any, any, any>
  14303. /**
  14304. * RGNode支持传输的数据类型。
  14305. * 可扩展。
  14306. *
  14307. * @category Render
  14308. */
  14309. export interface IRGData {
  14310. /**
  14311. * 空数据类型。
  14312. */
  14313. None: void
  14314. /**
  14315. * 相机类型。
  14316. */
  14317. Camera: Camera
  14318. /**
  14319. * 渲染目标类型。
  14320. */
  14321. RenderTarget: IRenderTarget
  14322. /**
  14323. * Mesh列表,一般作为剔除节点的输出,作为渲染节点的输入。
  14324. */
  14325. MeshList: Kanata.ScalableList
  14326. }
  14327. /**
  14328. * RGNode支持的节点类型。
  14329. */
  14330. export enum ERGNodeType {
  14331. Camera = 'Camera',
  14332. Clear = 'Clear',
  14333. Cull = 'Cull',
  14334. Render = 'Render',
  14335. Script = 'Script'
  14336. }
  14337. /**
  14338. * 渲染节点基类。
  14339. */
  14340. export default abstract class RGNode<
  14341. TInputs extends {
  14342. [key: string]: keyof IRGData
  14343. },
  14344. TOutput extends keyof IRGData,
  14345. IOptions
  14346. > {
  14347. protected _parent: RenderGraph
  14348. protected _id: number
  14349. protected _name: string
  14350. protected _options: IOptions
  14351. /**
  14352. * 节点类型。
  14353. *
  14354. * @internal
  14355. */
  14356. type: ERGNodeType
  14357. /**
  14358. * 节点输入的数据类型。
  14359. */
  14360. abstract inputTypes: TInputs
  14361. /**
  14362. * 节点输出的数据类型。
  14363. */
  14364. abstract outputType: TOutput
  14365. protected _output?: IRGData[TOutput]
  14366. protected _inputs: {
  14367. [key: string]: TRGNodeAny
  14368. }
  14369. protected _outputs: {
  14370. [id: number]: string
  14371. }
  14372. /**
  14373. * 节点的初始化配置参数。
  14374. */
  14375. get options(): IOptions
  14376. /**
  14377. * 节点名字。
  14378. */
  14379. get name(): string
  14380. /**
  14381. * 节点id。
  14382. */
  14383. get id(): number
  14384. /**
  14385. * 获取当前游戏实例。
  14386. */
  14387. get scene(): Scene
  14388. /**
  14389. * 获取当前节点输出。
  14390. */
  14391. get output(): IRGData[TOutput]
  14392. /**
  14393. * 不要直接调用,请使用`renderGraph.createNode`方法。
  14394. */
  14395. constructor(
  14396. _parent: RenderGraph,
  14397. _id: number,
  14398. _name: string,
  14399. _options: IOptions
  14400. )
  14401. /**
  14402. * 节点初始化后的回调。
  14403. */
  14404. onInit(options: IOptions): void
  14405. /**
  14406. * 获取某个节点的输入。
  14407. */
  14408. getInput<TKey extends keyof TInputs>(key: TKey): IRGData[TInputs[TKey]]
  14409. /**
  14410. * @internal
  14411. */
  14412. /**
  14413. * @internal
  14414. */
  14415. /**
  14416. * @internal
  14417. */
  14418. /**
  14419. * @internal
  14420. */
  14421. /**
  14422. * 重置节点状态,清空输入,一般用于可缓存的节点优化。
  14423. */
  14424. reset(): void
  14425. /**
  14426. * 节点在真正被第一次使用时的回调。
  14427. */
  14428. onActive(context: RenderSystem, options: IOptions): void
  14429. /**
  14430. * 节点在每帧执行时的回调。
  14431. */
  14432. onExecute(context: RenderSystem, options: IOptions): void
  14433. /**
  14434. * 节点在被图中移除时的回调。
  14435. */
  14436. onDisable(context: RenderSystem, options: IOptions): void
  14437. }
  14438. export {}
  14439. }
  14440. declare module 'XrFrame/loader/glTF/animations/GLTFAnimationNode' {
  14441. import { Kanata } from 'XrFrame/ext'
  14442. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  14443. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14444. import { GLTFNodesLoaded } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  14445. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  14446. import {
  14447. GLTFChannelsLoaded,
  14448. GLTFChannelsNodeRaw
  14449. } from 'XrFrame/loader/glTF/animations/channels/GLTFChannelsNode'
  14450. import { GLTFSamplersNodeRaw } from 'XrFrame/loader/glTF/animations/samplers/GLTFSamplersNode'
  14451. /**
  14452. * 二进制格式
  14453. * | contentoffset | fps(float) | totalFrame | totalSampleGroup |
  14454. * | Array<PuppetAnimationSampleGroup> |
  14455. *
  14456. * @see PuppetAnimationSampleGroup at GLTFChannelNode.ts
  14457. */
  14458. export type PuppetAnimationClipModel = ArrayBuffer | GLTF.BufferView
  14459. export interface GLTFAnimationNodeRaw {
  14460. channels: GLTFChannelsNodeRaw
  14461. samplers: GLTFSamplersNodeRaw
  14462. name?: string
  14463. extras?: any
  14464. }
  14465. export interface GLTFAnimationLoaded {
  14466. clip: Kanata.AnimationClipModel
  14467. channels: GLTFChannelsLoaded
  14468. frameCount: number
  14469. name?: string
  14470. extras?: any
  14471. }
  14472. export default class GLTFAnimationNode extends GLTFBaseNode {
  14473. get nodeName(): string
  14474. readonly raw: GLTFAnimationNodeRaw
  14475. resource: GLTFAnimationLoaded | null
  14476. build(): void
  14477. preload(
  14478. prerequisites: [
  14479. accessors: GLTFAccessorsLoaded,
  14480. nodes: GLTFNodesLoaded
  14481. ]
  14482. ): Promise<GLTFAnimationLoaded>
  14483. getLoadedResource(): GLTFAnimationLoaded
  14484. }
  14485. }
  14486. declare module 'XrFrame/loader/glTF/buffers/GLTFAccessorNode' {
  14487. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  14488. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14489. import { GLTFBufferViewLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewNode'
  14490. import { GLTFBufferViewsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode'
  14491. export enum EnumGLTFAccessorComponentType {
  14492. BYTE = 5120,
  14493. UNSIGNED_BYTE = 5121,
  14494. SHORT = 5122,
  14495. UNSIGNED_SHORT = 5123,
  14496. UNSIGNED_INT = 5125,
  14497. FLOAT = 5126
  14498. }
  14499. export const GLTFAccessorComponentTypeToViewClass: {
  14500. 5120: Int8ArrayConstructor
  14501. 5121: Uint8ArrayConstructor
  14502. 5122: Int16ArrayConstructor
  14503. 5123: Uint16ArrayConstructor
  14504. 5125: Uint32ArrayConstructor
  14505. 5126: Float32ArrayConstructor
  14506. }
  14507. export const GLTFAccessorTypeToNumberOfElements: {
  14508. SCALAR: number
  14509. VEC2: number
  14510. VEC3: number
  14511. VEC4: number
  14512. MAT2: number
  14513. MAT3: number
  14514. MAT4: number
  14515. }
  14516. export interface GLTFAccessorNodeRaw {
  14517. bufferView?: number
  14518. byteOffset?: number
  14519. componentType: number
  14520. count: number
  14521. min?: number[]
  14522. max?: number[]
  14523. type: string
  14524. normalized?: boolean
  14525. sparse?: boolean
  14526. name?: string
  14527. extras?: any
  14528. }
  14529. /**
  14530. * 以FloatVec3为例:
  14531. * 一个component指一个float,
  14532. * 一个element指三个float。
  14533. */
  14534. export interface GLTFAccessorLoaded {
  14535. bufferView: GLTFBufferViewLoaded
  14536. bufferViewIndex: number
  14537. view: GLTF.BufferView
  14538. elementLength: number
  14539. bytesPerComponent: number
  14540. count: number
  14541. stride: number
  14542. byteStride: number
  14543. componentType: EnumGLTFAccessorComponentType
  14544. max?: number[]
  14545. min?: number[]
  14546. compact: boolean
  14547. extras?: any
  14548. getCompAt(element: number, comp: number): any
  14549. }
  14550. export default class GLTFAccessorNode extends GLTFBaseNode {
  14551. get nodeName(): string
  14552. readonly raw: GLTFAccessorNodeRaw
  14553. build(): void
  14554. preload(
  14555. prerequisites: [GLTFBufferViewsLoaded]
  14556. ): Promise<GLTFAccessorLoaded>
  14557. getLoadedResource(): GLTFAccessorLoaded
  14558. }
  14559. }
  14560. declare module 'XrFrame/loader/glTF/buffers/GLTFBufferNode' {
  14561. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14562. export interface GLTFBufferNodeRaw {
  14563. uri?: string
  14564. byteLength: number
  14565. name?: string
  14566. extras?: any
  14567. }
  14568. export interface GLTFBufferLoaded {
  14569. buffer: ArrayBuffer
  14570. extras?: any
  14571. }
  14572. export default class GLTFBufferNode extends GLTFBaseNode {
  14573. get nodeName(): string
  14574. readonly raw: GLTFBufferNodeRaw
  14575. protected resource: GLTFBufferLoaded | null
  14576. build(): void
  14577. preload(): Promise<GLTFBufferLoaded>
  14578. getLoadedResource(): GLTFBufferLoaded
  14579. }
  14580. }
  14581. declare module 'XrFrame/loader/glTF/buffers/GLTFBufferViewNode' {
  14582. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14583. import { GLTFBuffersLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBuffersNode'
  14584. export interface GLTFBufferViewNodeRaw {
  14585. buffer: number
  14586. byteLength: number
  14587. byteOffset?: number
  14588. byteStride?: number
  14589. target?: EnumGLTFBufferViewTarget
  14590. name?: string
  14591. extras?: any
  14592. }
  14593. export interface GLTFBufferViewLoaded {
  14594. data: ArrayBuffer
  14595. byteOffset: number
  14596. byteStride: number
  14597. byteLength: number
  14598. target: EnumGLTFBufferViewTarget
  14599. extras?: any
  14600. getSlicedData(): ArrayBuffer
  14601. getUint8View(): Uint8Array
  14602. _sliced: ArrayBuffer
  14603. }
  14604. export enum EnumGLTFBufferViewTarget {
  14605. ARRAY_BUFFER = 34962,
  14606. ELEMENT_ARRAY_BUFFER = 34963
  14607. }
  14608. export default class GLTFBufferViewNode extends GLTFBaseNode {
  14609. get nodeName(): string
  14610. readonly raw: GLTFBufferViewNodeRaw
  14611. build(): void
  14612. preload(
  14613. prerequisites: [GLTFBuffersLoaded]
  14614. ): Promise<GLTFBufferViewLoaded>
  14615. getLoadedResource(): GLTFBufferViewLoaded
  14616. }
  14617. }
  14618. declare module 'XrFrame/loader/glTF/geometry/GLTFMeshNode' {
  14619. import { Kanata } from 'XrFrame/ext'
  14620. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  14621. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14622. import { GLTFMaterialsLoaded } from 'XrFrame/loader/glTF/materials/GLTFMaterialsNode'
  14623. import {
  14624. GLTFPrimitivesLoaded,
  14625. GLTFPrimitivesNodeRaw
  14626. } from 'XrFrame/loader/glTF/geometry/primitives/GLTFPrimitivesNode'
  14627. export interface GLTFMeshNodeRaw {
  14628. primitives: GLTFPrimitivesNodeRaw
  14629. weights?: number[]
  14630. name?: string
  14631. extras?: any
  14632. }
  14633. export interface GLTFMeshLoaded {
  14634. subMeshes: GLTFPrimitivesLoaded
  14635. weights: number[]
  14636. name?: string
  14637. extras?: any
  14638. }
  14639. export default class GLTFMeshNode extends GLTFBaseNode {
  14640. get nodeName(): string
  14641. readonly raw: GLTFMeshNodeRaw
  14642. build(): void
  14643. preload(
  14644. prerequisites: [
  14645. materials: GLTFMaterialsLoaded,
  14646. accessors: GLTFAccessorsLoaded,
  14647. vbMap: Map<string, [ArrayBuffer, Kanata.VertexLayout, object]>
  14648. ]
  14649. ): Promise<GLTFMeshLoaded>
  14650. getLoadedResource(): GLTFMeshLoaded
  14651. }
  14652. }
  14653. declare module 'XrFrame/loader/glTF/materials/GLTFMaterialNode' {
  14654. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14655. import GLTFTextureInfoNode, {
  14656. GLTFTextureInfoNodeRaw
  14657. } from 'XrFrame/loader/glTF/materials/texture/GLTFTextureInfoNode'
  14658. import GLTFPBRMetallicRoughnessNode, {
  14659. GLTFPBRMetallicRoughnessNodeRaw
  14660. } from 'XrFrame/loader/glTF/materials/pbr/GLTFPBRMetallicRoughnessNode'
  14661. import GLTFNormalTextureInfoNode, {
  14662. GLTFNormalTextureInfoNodeRaw
  14663. } from 'XrFrame/loader/glTF/materials/texture/GLTFNormalTextureInfoNode'
  14664. import GLTFOcclusionTextureInfoNode, {
  14665. GLTFOcclusionTextureInfoNodeRaw
  14666. } from 'XrFrame/loader/glTF/materials/texture/GLTFOcclusionTextureInfoNode'
  14667. import Material from 'XrFrame/assets/Material'
  14668. import { IRenderStates } from 'XrFrame/assets/Effect'
  14669. import { GLTFTexturesLoaded } from 'XrFrame/loader/glTF/textures/GLTFTexturesNode'
  14670. export interface GLTFMaterialExtArgs {
  14671. uniform: object
  14672. renderStates: IRenderStates
  14673. macros: object
  14674. }
  14675. export enum EnumGLTFMaterialAlphaMode {
  14676. OPAQUE = 0,
  14677. MASK = 1,
  14678. BLEND = 2
  14679. }
  14680. export interface GLTFMaterialNodeRaw {
  14681. name?: string
  14682. pbrMetallicRoughness?: GLTFPBRMetallicRoughnessNodeRaw
  14683. normalTexture?: GLTFNormalTextureInfoNodeRaw
  14684. occlusionTexture?: GLTFOcclusionTextureInfoNodeRaw
  14685. emissiveTexture?: GLTFTextureInfoNodeRaw
  14686. emissiveFactor?: [number, number, number]
  14687. alphaMode?: string
  14688. alphaCutoff?: number
  14689. doubleSided?: boolean
  14690. extras?: any
  14691. }
  14692. export type GLTFMaterialPrerequisites = [textrues: GLTFTexturesLoaded]
  14693. export interface GLTFMaterialLoaded {
  14694. material: Material
  14695. extras?: any
  14696. }
  14697. export default class GLTFMaterialNode extends GLTFBaseNode {
  14698. get nodeName(): string
  14699. readonly raw: GLTFMaterialNodeRaw
  14700. resource: GLTFMaterialLoaded | null
  14701. pbrMetallicRoughness: GLTFPBRMetallicRoughnessNode | undefined
  14702. normalTexture: GLTFNormalTextureInfoNode | undefined
  14703. occlusionTexture: GLTFOcclusionTextureInfoNode | undefined
  14704. emissiveTexture: GLTFTextureInfoNode | undefined
  14705. build(): void
  14706. /**
  14707. * @internal
  14708. */
  14709. preloadWithoutPBR(
  14710. prerequisites: GLTFMaterialPrerequisites
  14711. ): Promise<GLTFMaterialExtArgs>
  14712. /**
  14713. * 实际上不一定会走到这里,mesh没有material也是合法的,这时候会去取emptyMaterial。
  14714. */
  14715. preload(
  14716. prerequisites: [textrues: GLTFTexturesLoaded]
  14717. ): Promise<GLTFMaterialLoaded>
  14718. getLoadedResource(): GLTFMaterialLoaded
  14719. }
  14720. }
  14721. declare module 'XrFrame/loader/glTF/skins/GLTFSkinNode' {
  14722. import { Kanata } from 'XrFrame/ext'
  14723. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  14724. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14725. export interface GLTFSkinNodeRaw {
  14726. inverseBindMatrices?: number
  14727. skeleton?: number
  14728. joints: number[]
  14729. extras?: any
  14730. }
  14731. export interface GLTFSkinLoaded {
  14732. inverseBindMatrices: Kanata.SkeletonBoneInverseModel
  14733. skeleton?: number
  14734. joints: number[]
  14735. extras?: any
  14736. }
  14737. export default class GLTFSkinNode extends GLTFBaseNode {
  14738. get nodeName(): string
  14739. readonly raw: GLTFSkinNodeRaw
  14740. resource: GLTFSkinLoaded | null
  14741. build(): void
  14742. preload(
  14743. prerequisites: [accessors: GLTFAccessorsLoaded]
  14744. ): Promise<GLTFSkinLoaded>
  14745. getLoadedResource(): GLTFSkinLoaded
  14746. }
  14747. }
  14748. declare module 'XrFrame/loader/glTF/textures/GLTFImageNode' {
  14749. import { Kanata } from 'XrFrame/ext'
  14750. import { GLTFBufferViewsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFBufferViewsNode'
  14751. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14752. export interface GLTFImageNodeRaw {
  14753. uri?: string
  14754. mimeType?: string
  14755. bufferView?: number
  14756. name?: string
  14757. extras?: any
  14758. }
  14759. export interface GLTFImageLoaded {
  14760. kanataImage?: Kanata.IImage
  14761. type?: string
  14762. extras?: any
  14763. }
  14764. export type GLTFImageNodePrerequisites = [
  14765. bufferViews: GLTFBufferViewsLoaded
  14766. ]
  14767. export default class GLTFImageNode extends GLTFBaseNode {
  14768. get nodeName(): string
  14769. readonly raw: GLTFImageNodeRaw
  14770. protected resource: GLTFImageLoaded | null
  14771. build(): void
  14772. preload(
  14773. prerequisites: GLTFImageNodePrerequisites
  14774. ): Promise<GLTFImageLoaded>
  14775. getLoadedResource(): GLTFImageLoaded
  14776. }
  14777. }
  14778. declare module 'XrFrame/loader/glTF/textures/GLTFSamplerNode' {
  14779. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14780. export enum EnumGLTFSamplerFilter {
  14781. NEAREST = 9728,
  14782. LINEAR = 9729,
  14783. NEAREST_MIPMAP_NEAREST = 9984,
  14784. LINEAR_MIPMAP_NEAREST = 9985,
  14785. NEAREST_MIPMAP_LINEAR = 9986,
  14786. LINEAR_MIPMAP_LINEAR = 9987
  14787. }
  14788. export function NeedMipmap(sampler: EnumGLTFSamplerFilter): boolean
  14789. export enum EnumGLTFSamplerWrap {
  14790. CLAMP_TO_EDGE = 33071,
  14791. MIRRORED_REPEAT = 33648,
  14792. REPEAT = 10497
  14793. }
  14794. export interface GLTFSamplerNodeRaw {
  14795. magFilter?: number
  14796. minFilter?: number
  14797. wrapS?: number
  14798. wrapT?: number
  14799. name?: string
  14800. extras?: any
  14801. }
  14802. export interface GLTFSamplerLoaded {
  14803. magFilter: EnumGLTFSamplerFilter
  14804. minFilter: EnumGLTFSamplerFilter
  14805. wrapS: EnumGLTFSamplerWrap
  14806. wrapT: EnumGLTFSamplerWrap
  14807. extras?: any
  14808. }
  14809. export default class GLTFSamplerNode extends GLTFBaseNode {
  14810. get nodeName(): string
  14811. readonly raw: GLTFSamplerNodeRaw
  14812. build(): void
  14813. preload(): Promise<GLTFSamplerLoaded>
  14814. getLoadedResource(): GLTFSamplerLoaded
  14815. }
  14816. }
  14817. declare module 'XrFrame/loader/glTF/textures/GLTFTextureNode' {
  14818. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14819. import { GLTFImagesLoaded } from 'XrFrame/loader/glTF/textures/GLTFImagesNode'
  14820. import { GLTFSamplersLoaded } from 'XrFrame/loader/glTF/textures/GLTFSamplersNode'
  14821. import { Kanata } from 'XrFrame/ext'
  14822. export interface GLTFTextureNodeRaw {
  14823. sampler?: number
  14824. source?: number
  14825. name?: string
  14826. extras?: any
  14827. }
  14828. export interface GLTFTextureLoaded {
  14829. texture: Kanata.Texture
  14830. extras?: any
  14831. }
  14832. export default class GLTFTextureNode extends GLTFBaseNode {
  14833. get nodeName(): string
  14834. readonly raw: GLTFTextureNodeRaw
  14835. build(): void
  14836. preload(
  14837. prerequisites: [
  14838. images: GLTFImagesLoaded,
  14839. samplers: GLTFSamplersLoaded
  14840. ]
  14841. ): Promise<GLTFTextureLoaded>
  14842. getLoadedResource(): GLTFTextureLoaded
  14843. }
  14844. }
  14845. declare module 'XrFrame/loader/glTF/animations/channels/GLTFTargetNode' {
  14846. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14847. import {
  14848. GLTFNodesLoaded,
  14849. GLTFTreeNode
  14850. } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  14851. export enum GLTFEnumAnimationTargetPath {
  14852. TRANSLATION = 0,
  14853. ROTATION = 1,
  14854. SCALE = 2,
  14855. WEIGHTS = 3
  14856. }
  14857. export interface GLTFTargetNodeRaw {
  14858. node?: number
  14859. path: 'translation' | 'rotation' | 'scale' | 'weights'
  14860. extras?: any
  14861. }
  14862. export interface GLTFTargetLoaded {
  14863. node: GLTFTreeNode | null
  14864. path: GLTFEnumAnimationTargetPath
  14865. extras?: any
  14866. }
  14867. export default class GLTFTargetNode extends GLTFBaseNode {
  14868. get nodeName(): string
  14869. readonly raw: GLTFTargetNodeRaw
  14870. build(): void
  14871. preload(
  14872. prerequisites: [nodes: GLTFNodesLoaded]
  14873. ): Promise<GLTFTargetLoaded>
  14874. getLoadedResource(): GLTFTargetLoaded
  14875. }
  14876. }
  14877. declare module 'XrFrame/loader/glTF/geometry/primitives/attributes/GLTFAttributesNode' {
  14878. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  14879. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14880. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  14881. import { GLTFTargetsLoaded } from 'XrFrame/loader/glTF/geometry/primitives/targets/GLTFTargetsNode'
  14882. /**
  14883. * GLTF.Attributes.Name -> Kanata.Layout.Name
  14884. */
  14885. export function convertAttributeName(name: string): string
  14886. /**
  14887. * GLTF.Attributes.Name -> Kanata.Layout.Format
  14888. * 在shader里不同用途的attribute的长度是固定的,无论他用的accessor实际元素的长度是多少
  14889. */
  14890. export function getComponentCountFromAttributeName(name: string): number
  14891. /**
  14892. * GLTF.Attributes.Name -> Shader Macros
  14893. */
  14894. export function genMacrosByAttrib(name: string, macros: object): void
  14895. export interface GLTFAttributesExtArgs {
  14896. trust?: boolean
  14897. check?: boolean
  14898. }
  14899. export type GLTFAttributesNodeRaw = {
  14900. [attribName: string]: number
  14901. }
  14902. export type GLTFAttributesLoaded = GLTF.VertexProperties
  14903. export default class GLTFAttributesNode extends GLTFBaseNode {
  14904. get nodeName(): string
  14905. readonly raw: GLTFAttributesNodeRaw
  14906. build(): void
  14907. preload(
  14908. prerequisites: [
  14909. targets: GLTFTargetsLoaded,
  14910. materials: any,
  14911. accessors: GLTFAccessorsLoaded,
  14912. vbMap: Map<string, GLTF.VertexProperties>
  14913. ]
  14914. ): Promise<GLTFAttributesLoaded>
  14915. getLoadedResource(): GLTFAttributesLoaded
  14916. }
  14917. }
  14918. declare module 'XrFrame/loader/glTF/geometry/primitives/GLTFPrimitiveNode' {
  14919. import Geometry from 'XrFrame/assets/Geometry'
  14920. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  14921. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  14922. import { GLTFAttributesNodeRaw } from 'XrFrame/loader/glTF/geometry/primitives/attributes/GLTFAttributesNode'
  14923. import { GLTFMaterialsLoaded } from 'XrFrame/loader/glTF/materials/GLTFMaterialsNode'
  14924. import Material from 'XrFrame/assets/Material'
  14925. import { GLTFAccessorLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorNode'
  14926. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  14927. import { GLTFTargetsNodeRaw } from 'XrFrame/loader/glTF/geometry/primitives/targets/GLTFTargetsNode'
  14928. export enum EnumGLTFPrimitiveMode {
  14929. POINTS = 0,
  14930. LINES = 1,
  14931. LINE_LOOP = 2,
  14932. LINE_STRIP = 3,
  14933. TRIANGLES = 4,
  14934. TRIANGLE_STRIP = 5,
  14935. TRIANGLE_FAN = 6
  14936. }
  14937. export interface GLTFPrimitiveNodeRaw {
  14938. attributes: GLTFAttributesNodeRaw
  14939. indices?: number
  14940. material?: number
  14941. mode?: number
  14942. targets?: GLTFTargetsNodeRaw
  14943. extras?: any
  14944. }
  14945. export interface GLTFPrimitiveLoaded {
  14946. geometry: Geometry
  14947. material: Material
  14948. extras?: any
  14949. }
  14950. export type GLTFPrimitivePrerequisites = [
  14951. materials: GLTFMaterialsLoaded,
  14952. accessors: GLTFAccessorsLoaded,
  14953. vbMap: Map<string, GLTF.VertexProperties>
  14954. ]
  14955. export interface GLTFPrimitiveVertexExtArgs {
  14956. vbInfo: GLTF.VertexProperties
  14957. }
  14958. export interface GLTFPrimitiveIndexExtArgs {
  14959. accessor: GLTFAccessorLoaded
  14960. }
  14961. export default class GLTFPrimitiveNode extends GLTFBaseNode {
  14962. get nodeName(): string
  14963. readonly raw: GLTFPrimitiveNodeRaw
  14964. build(): void
  14965. preload(
  14966. prerequisites: GLTFPrimitivePrerequisites
  14967. ): Promise<GLTFPrimitiveLoaded>
  14968. getLoadedResource(): GLTFPrimitiveLoaded
  14969. }
  14970. }
  14971. declare module 'XrFrame/loader/glTF/utils/types' {
  14972. import { ITransformData } from 'XrFrame/components'
  14973. import { Kanata } from 'XrFrame/ext'
  14974. import Quaternion from 'XrFrame/math/quaternion'
  14975. import Vector3, { Vector3ReadOnly } from 'XrFrame/math/vector3'
  14976. export namespace GLTF {
  14977. type BufferView =
  14978. | Int8Array
  14979. | Uint8Array
  14980. | Uint16Array
  14981. | Uint32Array
  14982. | Float32Array
  14983. type IndexBufferView = Uint16Array | Uint32Array | Uint8Array
  14984. class BoundingBox {
  14985. min: Vector3
  14986. max: Vector3
  14987. adoptMin: (newMin: Vector3) => void
  14988. adoptMax: (newMax: Vector3) => void
  14989. adopt: (newPoint: Vector3) => void
  14990. }
  14991. interface BoundingBoxReadOnly {
  14992. min: Vector3ReadOnly
  14993. max: Vector3ReadOnly
  14994. }
  14995. namespace BoundingBox {
  14996. function createZero(): BoundingBox
  14997. function createInfinite(): BoundingBox
  14998. }
  14999. interface VertexLayoutDesc extends Kanata.IVertexLayoutOptions {
  15000. stride: number
  15001. }
  15002. interface VertexProperties {
  15003. buffer: Float32Array
  15004. layoutDesc: VertexLayoutDesc
  15005. layout: Kanata.VertexLayout
  15006. macros: object
  15007. boundingBox: BoundingBox
  15008. /**
  15009. * 是否需要自行生成normal和tangent的顶点数据。
  15010. */
  15011. lackNormal: boolean
  15012. lackTangent: boolean
  15013. /**
  15014. * 如果需要生成的话,生成在layoutDesc的哪个attribute里。
  15015. */
  15016. normalSlot: number
  15017. tangentSlot: number
  15018. }
  15019. interface Transform extends ITransformData {
  15020. /**
  15021. * 同时有quat和rotation的情况下,quat优先;
  15022. * 目前只会填写quat,不会填写rotation。
  15023. */
  15024. quat?: Quaternion
  15025. }
  15026. }
  15027. }
  15028. declare module 'XrFrame/kanata/lib/backend' {
  15029. /**
  15030. * index.ts
  15031. *
  15032. * * @Date : 9/3/2020, 8:45:18 PM
  15033. */
  15034. export * from 'XrFrame/kanata/lib/backend/interface'
  15035. import { IImage } from 'XrFrame/kanata/lib/backend/interface'
  15036. import { IWorker } from 'XrFrame/kanata/lib/backend/interface/IWorker'
  15037. export interface IBackend {
  15038. IS_VALID: () => boolean
  15039. GET_MAIN_CANVAS(): HTMLCanvasElement
  15040. worker: IWorker
  15041. Image: {
  15042. new (): IImage
  15043. IS(obj: any): obj is IImage
  15044. }
  15045. Phys3D: any
  15046. }
  15047. const backend: IBackend
  15048. export default backend
  15049. }
  15050. declare module 'XrFrame/kanata/lib/frontend/shared/NativeObject' {
  15051. /**
  15052. * NativeObject.ts
  15053. *
  15054. * * @Date : 9/3/2020, 9:17:03 PM
  15055. */
  15056. import { IHandle } from 'XrFrame/kanata/lib/backend'
  15057. export default class NativeObject {
  15058. _bufferName: string
  15059. _byteOffset: number
  15060. _bufferLength: number
  15061. id: number
  15062. _buffer: ArrayBuffer
  15063. _f32view: Float32Array
  15064. _u32view: Uint32Array
  15065. protected _handle: IHandle
  15066. protected _init(info: IHandle): void
  15067. protected _fastInit(info: IHandle): void
  15068. protected _initU32View(): void
  15069. protected _initPropertyView(
  15070. offset: number,
  15071. length: number
  15072. ): Float32Array
  15073. setRawBuffer(data: Float32Array): void
  15074. destroy(): void
  15075. }
  15076. }
  15077. declare module 'XrFrame/kanata/lib/frontend/pool/PoolObject' {
  15078. import Pool from 'XrFrame/kanata/lib/frontend/pool/Pool'
  15079. export interface INativePools {
  15080. [poolId: number]: Pool
  15081. }
  15082. export default class PoolObject {
  15083. protected _nativePool: Pool
  15084. protected _nativeId: number
  15085. protected _poolId: number
  15086. protected _poolIndex: number
  15087. protected _using: boolean
  15088. entityOffset: number
  15089. get float32View(): Float32Array
  15090. get uint32View(): Uint32Array
  15091. get id(): number
  15092. get poolId(): number
  15093. get poolIndex(): number
  15094. get poll(): any
  15095. get isUsing(): boolean
  15096. set isUsing(value: boolean)
  15097. protected _init(nativeObjId: number, nativePools: INativePools): void
  15098. setRawBuffer(data: Float32Array): void
  15099. }
  15100. }
  15101. declare module 'XrFrame/kanata/lib/frontend/pool/PoolManager' {
  15102. /**
  15103. * PoolManager.ts
  15104. *
  15105. * * @Date : 9/3/2020, 9:19:34 PM
  15106. */
  15107. import { IHandle } from 'XrFrame/kanata/lib/backend'
  15108. import PoolObject, {
  15109. INativePools
  15110. } from 'XrFrame/kanata/lib/frontend/pool/PoolObject'
  15111. export default class PoolManager {
  15112. pools: INativePools
  15113. constructor(
  15114. template: ArrayBuffer,
  15115. templateView: Float32Array,
  15116. allocateFunc: (size: number) => IHandle,
  15117. extendedMemSize?: number
  15118. )
  15119. allocateOne(): number
  15120. dispose(obj: PoolObject): void
  15121. }
  15122. }
  15123. declare module 'XrFrame/kanata/lib/frontend/shared/PureResource' {
  15124. /**
  15125. * PureResource.ts
  15126. *
  15127. * * @Date : 9/8/2020, 9:04:32 PM
  15128. */
  15129. import { IHandle } from 'XrFrame/kanata/lib/backend'
  15130. export default class PureResource {
  15131. id: number
  15132. __handle: IHandle
  15133. protected get _handle(): IHandle
  15134. protected set _handle(value: IHandle)
  15135. destroy(): void
  15136. }
  15137. }
  15138. declare module 'XrFrame/kanata/lib/backend/native/worker' {
  15139. import {
  15140. IHandle,
  15141. ETextureType,
  15142. ETextureFormat,
  15143. IRect,
  15144. EMeshRenderType,
  15145. INativeMap,
  15146. ILongIntNativeMap,
  15147. IGlyphInfo,
  15148. IRenderEnv,
  15149. EDracoDecodeType,
  15150. DracoDecoded
  15151. } from 'XrFrame/kanata/lib/backend/interface'
  15152. export interface INativeWorker {
  15153. createVertexLayout(options: string): IHandle
  15154. createVertexDataDescriptor(options: string): IHandle
  15155. createVertexBuffer(
  15156. buffer: ArrayBuffer | ArrayBufferView,
  15157. layout: number
  15158. ): IHandle
  15159. updateVertexBuffer(
  15160. bufferId: number,
  15161. buffer: ArrayBuffer | ArrayBufferView,
  15162. offset: number
  15163. ): void
  15164. createIndexBuffer(
  15165. buffer: ArrayBuffer | ArrayBufferView,
  15166. is32bits?: boolean
  15167. ): IHandle
  15168. updateIndexBuffer(
  15169. bufferId: number,
  15170. buffer: ArrayBuffer | ArrayBufferView,
  15171. offset: number
  15172. ): void
  15173. createVertexData(
  15174. layout: number,
  15175. size: number,
  15176. batchDesc: number
  15177. ): IHandle
  15178. createIndexData(size: number): IHandle
  15179. createTexture(
  15180. type: ETextureType,
  15181. width: number,
  15182. height: number,
  15183. slice: number,
  15184. mips: number,
  15185. format: ETextureFormat,
  15186. flags: number,
  15187. buffer: Array<ArrayBuffer | ArrayBufferView>,
  15188. offsets: Uint32Array
  15189. ): IHandle
  15190. createTexture(canvas: HTMLCanvasElement): IHandle
  15191. updateTexture(
  15192. id: number,
  15193. level: number,
  15194. slice: number,
  15195. xoffset: number,
  15196. yoffset: number,
  15197. zoffset: number,
  15198. width: number,
  15199. height: number,
  15200. buffer: ArrayBuffer | ArrayBufferView
  15201. ): void
  15202. updateTextureFlags(textureId: number, flags: number): void
  15203. createShader(vs: string, fs: string): IHandle
  15204. createUniformBlockDescriptor(descriptor: string): IHandle
  15205. createUniformBlock(descriptor: number): IHandle
  15206. createEffect(
  15207. name: string,
  15208. passCount: number,
  15209. keyIndexMap: string,
  15210. passes: string,
  15211. shaders: string[],
  15212. variants: string,
  15213. flags: number
  15214. ): IHandle & {
  15215. warmUp(): void
  15216. }
  15217. createMaterial(macros: string): IHandle
  15218. changeMaterialMacros(
  15219. material: number,
  15220. macros: string,
  15221. reset?: boolean
  15222. ): void
  15223. createScalableList(
  15224. initSize: number,
  15225. onBackendEnlarge: () => void
  15226. ): IHandle & {
  15227. enlarge(size: number): void
  15228. }
  15229. }
  15230. export interface INativeWorker {
  15231. createView(view: string): IHandle
  15232. updateViewRect(view: number, rect: IRect): void
  15233. updateViewScissor(view: number, rect: IRect): void
  15234. }
  15235. export interface INativeWorker {
  15236. createRenderPass(descriptor: string): IHandle
  15237. }
  15238. export interface INativeWorker {
  15239. createNodePool(count: number, is3d: boolean): IHandle
  15240. createNodeTree(
  15241. length: number,
  15242. ids: ArrayBuffer,
  15243. buffer: ArrayBuffer,
  15244. calculateWordMatrix: boolean,
  15245. is3d?: boolean
  15246. ): boolean
  15247. }
  15248. export namespace INativeWorker {
  15249. interface IAnimationClipBinding extends IHandle {
  15250. id: number
  15251. rebind(
  15252. buffer: ArrayBuffer,
  15253. offset: number,
  15254. cLength: number,
  15255. eLength: number,
  15256. removeAction: number,
  15257. retainedAction: number,
  15258. addedAction: number,
  15259. rootEntity: number
  15260. ): boolean
  15261. update(
  15262. buffer: ArrayBuffer,
  15263. offset: number,
  15264. cLength: number,
  15265. eLength: number,
  15266. removeAction: number,
  15267. retainedAction: number,
  15268. addedAction: number
  15269. ): boolean
  15270. writeDefaultValues(): void
  15271. }
  15272. }
  15273. export interface INativeWorker {
  15274. createCullingComponentPool(count: number): IHandle
  15275. createRenderComponent(
  15276. meshCount: number,
  15277. uniformBlock: number,
  15278. attachedNode: number,
  15279. cullingId: number,
  15280. meshRenderType: EMeshRenderType,
  15281. macros?: string
  15282. ): IHandle & {
  15283. setSharedDirty(): void
  15284. }
  15285. changeMeshMacros(mesh: number, macros: string): void
  15286. createAnimator(clipCount: number, nodeCount: number): IHandle
  15287. updateAnimators(data: Uint32Array): void
  15288. createAnimationClipBinding(
  15289. buffer: ArrayBuffer,
  15290. offset: number,
  15291. cLength: number,
  15292. eLength: number,
  15293. useDefaultAddedNodesAction: number,
  15294. rootEntity: number
  15295. ): INativeWorker.IAnimationClipBinding
  15296. createAnimatorControllerModel(layerCount: number): {
  15297. id: number
  15298. buffer: ArrayBuffer
  15299. setMaskAtIndex(
  15300. index: number,
  15301. mask: null | ArrayBuffer,
  15302. offset: number,
  15303. length: number
  15304. ): void
  15305. update(): void
  15306. }
  15307. createAnimatorControllerStateModel(clipCount: number): {
  15308. id: number
  15309. buffer: ArrayBuffer
  15310. }
  15311. updateAnimatorControllers(data: Uint32Array): void
  15312. createSkinning(boneCount: number, flag: number): IHandle
  15313. updateSkinnings(data: Uint32Array): void
  15314. createDynamicBones(rootNodeId: number): IHandle & {
  15315. preUpdate(): void
  15316. update(
  15317. dt: number,
  15318. rootMotionX?: number,
  15319. rootMotionY?: number,
  15320. rootMotionZ?: number
  15321. ): void
  15322. rebuild(): void
  15323. resetRoot(rootId: number): void
  15324. }
  15325. }
  15326. export interface INativeWorker {
  15327. createRenderCamera(
  15328. attachedNode: number,
  15329. isUI?: boolean
  15330. ): IHandle & {
  15331. setSharedDirty(): void
  15332. updateMatrices(): void
  15333. }
  15334. createLightCamera(): IHandle
  15335. }
  15336. export interface INativeWorker {
  15337. createAnimationClipModel(buffer: ArrayBuffer): IHandle
  15338. createBoneInverseModel(buffer: ArrayBuffer): IHandle
  15339. }
  15340. export interface INativeWorker {
  15341. eventBusSM: ArrayBuffer
  15342. dirtyNodesSM: ArrayBuffer
  15343. uiRenderList: ArrayBuffer
  15344. enlargeUIRenderList(): void
  15345. refreshNodesWorldTransform(): void
  15346. }
  15347. export interface INativeWorker {
  15348. loadTTFFont(buffer: ArrayBuffer, filaPath: string): string
  15349. getGlyphInfo(name: string, charCode: number): IGlyphInfo
  15350. }
  15351. export interface INativeWorker {
  15352. decodeImage(
  15353. buffer: ArrayBuffer,
  15354. callback: (
  15355. data: ArrayBuffer | undefined,
  15356. width: number,
  15357. height: number
  15358. ) => void,
  15359. premultiplyAlpha: boolean
  15360. ): void
  15361. getRenderEnv(): IRenderEnv
  15362. clearView(view: number): void
  15363. cullCamera(camera: number, cullResult: number, lightMode: string): void
  15364. drawCamera(camera: number, renderList: number, lightMode: string): void
  15365. drawLight(
  15366. light: number,
  15367. camera: number,
  15368. renderList: number,
  15369. lightMode: string
  15370. ): void
  15371. submit(): void
  15372. destroy(): void
  15373. createWeakRef<T>(wrapper: T): {
  15374. deref: () => T
  15375. }
  15376. createWeakRefSentry(): any
  15377. createNativeUUMap(): INativeMap<number>
  15378. createNativeSUMap(): INativeMap<string>
  15379. createNativeULUMap(): ILongIntNativeMap
  15380. decodeBase64(base64: string): ArrayBuffer
  15381. decodeDraco(
  15382. buffer: ArrayBuffer | ArrayBufferView,
  15383. decodeType: EDracoDecodeType
  15384. ): DracoDecoded
  15385. setNodeName(id: number, name: string): void
  15386. setRenderComponentName(id: number, name: string): void
  15387. debugPrint(msg: string): void
  15388. }
  15389. let Phys3D: any
  15390. export const native: {
  15391. worker: INativeWorker
  15392. }
  15393. export function destroy(): void
  15394. export function GET_MAIN_CANVAS(): HTMLCanvasElement
  15395. export function IS_VALID(): boolean
  15396. export { Phys3D }
  15397. }
  15398. declare module 'XrFrame/loader/glTF/animations/channels/GLTFChannelsNode' {
  15399. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15400. import { GLTFNodesLoaded } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  15401. import { GLTFSamplersLoaded } from 'XrFrame/loader/glTF/animations/samplers/GLTFSamplersNode'
  15402. import GLTFChannelNode, {
  15403. GLTFChannelLoaded,
  15404. GLTFChannelNodeRaw
  15405. } from 'XrFrame/loader/glTF/animations/channels/GLTFChannelNode'
  15406. type ChildNode = GLTFChannelNode
  15407. export type GLTFChannelsNodeRaw = GLTFChannelsNodeRaw[]
  15408. export type GLTFChannelsLoaded = GLTFChannelLoaded[]
  15409. export default class GLTFChannelsNode extends GLTFArrayNode<ChildNode> {
  15410. ChildCtor(childRaw: GLTFChannelNodeRaw): GLTFChannelNode
  15411. readonly raw: GLTFChannelsNodeRaw
  15412. get nodeName(): string
  15413. preload: (
  15414. prerequisites: [
  15415. nodes: GLTFNodesLoaded,
  15416. samplers: GLTFSamplersLoaded
  15417. ]
  15418. ) => Promise<GLTFChannelsLoaded>
  15419. getLoadedResource(): GLTFChannelsLoaded
  15420. }
  15421. export {}
  15422. }
  15423. declare module 'XrFrame/loader/glTF/animations/samplers/GLTFSamplersNode' {
  15424. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  15425. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15426. import GLTFSamplerNode, {
  15427. GLTFSamplerLoaded,
  15428. GLTFSamplerNodeRaw
  15429. } from 'XrFrame/loader/glTF/animations/samplers/GLTFSamplerNode'
  15430. type ChildNode = GLTFSamplerNode
  15431. export type GLTFSamplersNodeRaw = GLTFSamplersNodeRaw[]
  15432. export type GLTFSamplersLoaded = GLTFSamplerLoaded[]
  15433. export default class GLTFSamplersNode extends GLTFArrayNode<ChildNode> {
  15434. ChildCtor(childRaw: GLTFSamplerNodeRaw): GLTFSamplerNode
  15435. readonly raw: GLTFSamplersNodeRaw
  15436. get nodeName(): string
  15437. preload: (
  15438. prerequisites: [accessors: GLTFAccessorsLoaded]
  15439. ) => Promise<GLTFSamplersLoaded>
  15440. getLoadedResource(): GLTFSamplersLoaded
  15441. }
  15442. export {}
  15443. }
  15444. declare module 'XrFrame/loader/glTF/geometry/primitives/GLTFPrimitivesNode' {
  15445. import { Kanata } from 'XrFrame/ext'
  15446. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  15447. import { GLTFArrayNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15448. import { GLTFMaterialsLoaded } from 'XrFrame/loader/glTF/materials/GLTFMaterialsNode'
  15449. import GLTFPrimitiveNode, {
  15450. GLTFPrimitiveLoaded,
  15451. GLTFPrimitiveNodeRaw
  15452. } from 'XrFrame/loader/glTF/geometry/primitives/GLTFPrimitiveNode'
  15453. type ChildNode = GLTFPrimitiveNode
  15454. export type GLTFPrimitivesNodeRaw = GLTFPrimitivesNodeRaw[]
  15455. export type GLTFPrimitivesLoaded = GLTFPrimitiveLoaded[]
  15456. export default class GLTFPrimitivesNode extends GLTFArrayNode<ChildNode> {
  15457. ChildCtor(childRaw: GLTFPrimitiveNodeRaw): GLTFPrimitiveNode
  15458. readonly raw: GLTFPrimitivesNodeRaw
  15459. get nodeName(): string
  15460. preload: (
  15461. prerequisites: [
  15462. materials: GLTFMaterialsLoaded,
  15463. accessors: GLTFAccessorsLoaded,
  15464. vbMap: Map<string, [ArrayBuffer, Kanata.VertexLayout, object]>
  15465. ]
  15466. ) => Promise<GLTFPrimitivesLoaded>
  15467. getLoadedResource(): GLTFPrimitivesLoaded
  15468. }
  15469. export {}
  15470. }
  15471. declare module 'XrFrame/loader/glTF/materials/texture/GLTFTextureInfoNode' {
  15472. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15473. import GLTFTextureTransformInfo from 'XrFrame/loader/glTF/materials/texture/GLTFTextureTransformInfo'
  15474. export interface GLTFTextureInfoNodeRaw {
  15475. index: number
  15476. texCoord?: number
  15477. extras?: any
  15478. extensions?: any
  15479. }
  15480. export interface GLTFTextureInfoLoaded {
  15481. index: number
  15482. texCoord: number
  15483. extras?: any
  15484. transformInfo?: GLTFTextureTransformInfo
  15485. }
  15486. export default class GLTFTextureInfoNode extends GLTFBaseNode {
  15487. get nodeName(): string
  15488. readonly raw: GLTFTextureInfoNodeRaw
  15489. build(): void
  15490. preload(): Promise<GLTFTextureInfoLoaded>
  15491. getLoadedResource(): GLTFTextureInfoLoaded
  15492. }
  15493. }
  15494. declare module 'XrFrame/loader/glTF/materials/pbr/GLTFPBRMetallicRoughnessNode' {
  15495. import { Kanata } from 'XrFrame/ext'
  15496. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15497. import { GLTFTexturesLoaded } from 'XrFrame/loader/glTF/textures/GLTFTexturesNode'
  15498. import { GLTFTextureInfoNodeRaw } from 'XrFrame/loader/glTF/materials/texture/GLTFTextureInfoNode'
  15499. export interface GLTFPBRMetallicRoughnessNodeRaw {
  15500. baseColorFactor?: [number, number, number, number]
  15501. baseColorTexture?: GLTFTextureInfoNodeRaw
  15502. metallicFactor?: number
  15503. roughnessFactor?: number
  15504. metallicRoughnessTexture?: GLTFTextureInfoNodeRaw
  15505. extras?: any
  15506. }
  15507. export interface GLTFPBRMetallicRoughnessLoaded {
  15508. uniform: {
  15509. [key: string]: ArrayLike<number> | number | Kanata.Texture
  15510. }
  15511. renderStates: object
  15512. macros: {
  15513. [key: string]: boolean | number
  15514. }
  15515. extras?: any
  15516. }
  15517. export default class GLTFPBRMetallicRoughnessNode extends GLTFBaseNode {
  15518. get nodeName(): string
  15519. readonly raw: GLTFPBRMetallicRoughnessNodeRaw
  15520. build(): void
  15521. preload(
  15522. prerequisites: [textrues: GLTFTexturesLoaded]
  15523. ): Promise<GLTFPBRMetallicRoughnessLoaded>
  15524. getLoadedResource(): GLTFPBRMetallicRoughnessLoaded
  15525. }
  15526. }
  15527. declare module 'XrFrame/loader/glTF/materials/texture/GLTFNormalTextureInfoNode' {
  15528. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15529. import GLTFTextureTransformInfo from 'XrFrame/loader/glTF/materials/texture/GLTFTextureTransformInfo'
  15530. export interface GLTFNormalTextureInfoNodeRaw {
  15531. index: number
  15532. texCoord?: number
  15533. scale?: number
  15534. extras?: any
  15535. extensions?: any
  15536. }
  15537. export interface GLTFNormalTextureInfoLoaded {
  15538. index: number
  15539. texCoord: number
  15540. scale: number
  15541. extras?: any
  15542. transformInfo?: GLTFTextureTransformInfo
  15543. }
  15544. export default class GLTFNormalTextureInfoNode extends GLTFBaseNode {
  15545. get nodeName(): string
  15546. readonly raw: GLTFNormalTextureInfoNodeRaw
  15547. build(): void
  15548. preload(): Promise<GLTFNormalTextureInfoLoaded>
  15549. getLoadedResource(): GLTFNormalTextureInfoLoaded
  15550. }
  15551. }
  15552. declare module 'XrFrame/loader/glTF/materials/texture/GLTFOcclusionTextureInfoNode' {
  15553. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15554. import GLTFTextureTransformInfo from 'XrFrame/loader/glTF/materials/texture/GLTFTextureTransformInfo'
  15555. export interface GLTFOcclusionTextureInfoNodeRaw {
  15556. index: number
  15557. texCoord?: number
  15558. strength?: number
  15559. extras?: any
  15560. extensions?: any
  15561. }
  15562. export interface GLTFOcclusionTextureInfoLoaded {
  15563. index: number
  15564. texCoord: number
  15565. strength: number
  15566. extras?: any
  15567. transformInfo?: GLTFTextureTransformInfo
  15568. }
  15569. export default class GLTFOcclusionTextureInfoNode extends GLTFBaseNode {
  15570. get nodeName(): string
  15571. readonly raw: GLTFOcclusionTextureInfoNodeRaw
  15572. build(): void
  15573. preload(): Promise<GLTFOcclusionTextureInfoLoaded>
  15574. getLoadedResource(): GLTFOcclusionTextureInfoLoaded
  15575. }
  15576. }
  15577. declare module 'XrFrame/loader/glTF/geometry/primitives/targets/GLTFTargetsNode' {
  15578. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15579. export type GLTFTargetsNodeRaw = Array<{
  15580. [targetAttribName: string]: number
  15581. }>
  15582. export interface GLTFTargetsLoaded {
  15583. attributes: {
  15584. [targetAttribName: string]: number
  15585. }
  15586. }
  15587. export const validMorphAttribs: string[]
  15588. export default class GLTFTargetsNode extends GLTFBaseNode {
  15589. get nodeName(): string
  15590. readonly raw: GLTFTargetsNodeRaw
  15591. build(): void
  15592. preload(): Promise<GLTFTargetsLoaded>
  15593. getLoadedResource(): GLTFTargetsLoaded
  15594. }
  15595. }
  15596. declare module 'XrFrame/kanata/lib/backend/interface/IWorker' {
  15597. /**
  15598. * IWorker.ts
  15599. *
  15600. * * @Date : 12/3/2020, 4:45:58 PM
  15601. */
  15602. import {
  15603. IHandle,
  15604. ETextureType,
  15605. ETextureFormat,
  15606. IRect,
  15607. EMeshRenderType,
  15608. INativeMap,
  15609. ILongIntNativeMap,
  15610. IGlyphInfo,
  15611. IVertexLayoutOptions,
  15612. IView,
  15613. IRenderPassDescriptor,
  15614. IEventBridge,
  15615. IDownloader,
  15616. IUniformDescriptorOptions,
  15617. IFontSetting,
  15618. TTextureSource,
  15619. IImage,
  15620. IVertexDataDescriptorOptions,
  15621. IRenderEnv,
  15622. IEngineSettings,
  15623. EDracoDecodeType,
  15624. DracoDecoded
  15625. } from 'XrFrame/kanata/lib/backend/interface'
  15626. global {
  15627. const MAIN_CANVAS: HTMLCanvasElement
  15628. const ENGINE_SETTINGS: IEngineSettings
  15629. const ENGINE_MODE: 'Game' | 'Editor'
  15630. const IS_SUB_CONTEXT: boolean
  15631. const HOST: string
  15632. }
  15633. export interface IWorker {
  15634. createVertexLayout(options: IVertexLayoutOptions): IHandle
  15635. createVertexDataDescriptor(
  15636. options: IVertexDataDescriptorOptions
  15637. ): IHandle
  15638. createVertexBuffer(
  15639. buffer: ArrayBuffer | ArrayBufferView,
  15640. layout: IHandle
  15641. ): IHandle
  15642. updateVertexBuffer(
  15643. bufferHandle: IHandle,
  15644. buffer: ArrayBuffer | ArrayBufferView,
  15645. offset: number
  15646. ): void
  15647. createIndexBuffer(
  15648. buffer: ArrayBuffer | ArrayBufferView,
  15649. is32bits?: boolean
  15650. ): IHandle
  15651. updateIndexBuffer(
  15652. bufferHandle: IHandle,
  15653. buffer: ArrayBuffer | ArrayBufferView,
  15654. offset: number
  15655. ): void
  15656. createVertexData(
  15657. layout: IHandle,
  15658. size: number,
  15659. batchDesc: IHandle
  15660. ): IHandle
  15661. createIndexData(size: number): IHandle
  15662. createTexture(
  15663. type: ETextureType,
  15664. width: number,
  15665. height: number,
  15666. slice: number,
  15667. mips: number,
  15668. format: ETextureFormat,
  15669. flags: number,
  15670. source: TTextureSource[],
  15671. offsets: Uint32Array
  15672. ): IHandle
  15673. createAutoUpdateTextureFromCanvas(canvas: HTMLCanvasElement): IHandle
  15674. updateTexture(
  15675. handle: IHandle,
  15676. level: number,
  15677. slice: number,
  15678. xoffset: number,
  15679. yoffset: number,
  15680. zoffset: number,
  15681. width: number,
  15682. height: number,
  15683. buffer:
  15684. | ArrayBuffer
  15685. | ArrayBufferView
  15686. | IImage
  15687. | HTMLCanvasElement
  15688. | ImageData
  15689. ): void
  15690. updateTextureFlags(texture: IHandle, flags: number): void
  15691. createUniformBlockDescriptor(
  15692. descriptor: IUniformDescriptorOptions
  15693. ): IHandle
  15694. createUniformBlock(descriptor: IHandle): IHandle
  15695. createEffect(
  15696. name: string,
  15697. passCount: number,
  15698. keyIndexMap: string[],
  15699. passes: Array<{
  15700. lightMode: string
  15701. variants?: {
  15702. [key: number]: number
  15703. }
  15704. macros?: {
  15705. [key: string]: number
  15706. }
  15707. shaders?: number[]
  15708. }>,
  15709. shaders: string[],
  15710. variants: number[][],
  15711. useRuntimeMacros: boolean
  15712. ): IHandle & {
  15713. warmUp(): void
  15714. }
  15715. createMaterial(
  15716. macros?: {
  15717. [name: string]: string | number | boolean
  15718. },
  15719. uniformBlock?: IHandle
  15720. ): IHandle
  15721. changeMaterialMacros(
  15722. material: IHandle,
  15723. macros: {
  15724. [name: string]: string | number | boolean
  15725. },
  15726. reset?: boolean
  15727. ): void
  15728. }
  15729. export interface IWorker {
  15730. createView(view: IView): IHandle
  15731. updateViewRect(view: IHandle, rect: IRect): void
  15732. updateViewScissor(view: IHandle, rect: IRect): void
  15733. }
  15734. export interface IWorker {
  15735. createRenderPass(descriptor: IRenderPassDescriptor): IHandle
  15736. }
  15737. export interface IWorker {
  15738. createNodePool(count: number, is3d: boolean): IHandle
  15739. createNodeTree(
  15740. length: number,
  15741. ids: ArrayBuffer,
  15742. buffer: ArrayBuffer,
  15743. calculateWordMatrix: boolean,
  15744. is3d: boolean
  15745. ): boolean
  15746. }
  15747. export interface IWorker {
  15748. createCullingComponentPool(count: number): IHandle
  15749. createRenderComponent(
  15750. meshCount: number,
  15751. uniformBlock: IHandle,
  15752. attachedNodeId: number,
  15753. cullingCompId: number,
  15754. meshRenderType: EMeshRenderType,
  15755. macros?: {
  15756. [name: string]: string | number | boolean
  15757. }
  15758. ): IHandle & {
  15759. setSharedDirty(): void
  15760. }
  15761. changeMeshMacros(
  15762. mesh: IHandle,
  15763. macros: {
  15764. [name: string]: string | number | boolean
  15765. },
  15766. reset?: boolean
  15767. ): void
  15768. createAnimator(clipCount: number, nodeCount: number): IHandle
  15769. updateAnimators(
  15770. feObjects: Array<{
  15771. __handle: IHandle
  15772. id: number
  15773. }>,
  15774. size: number
  15775. ): void
  15776. createAnimationClipBinding(
  15777. clipArray: Array<{
  15778. __handle: IHandle
  15779. id: number
  15780. }>,
  15781. clipArrayOffset: number,
  15782. clipArrayLength: number,
  15783. entityArray: Array<
  15784. | number
  15785. | {
  15786. id: number
  15787. }
  15788. | null
  15789. >,
  15790. entityArrayOffset: number,
  15791. entityArrayLength: number,
  15792. useDefaultAddedNodesAction: number,
  15793. rootEntity: {
  15794. id: number
  15795. }
  15796. ): IHandle
  15797. rebindAnimationClipBinding(
  15798. binding: IHandle,
  15799. clipArray: Array<{
  15800. __handle: IHandle
  15801. id: number
  15802. }>,
  15803. clipArrayOffset: number,
  15804. clipArrayLength: number,
  15805. entityArray: Array<
  15806. | number
  15807. | {
  15808. id: number
  15809. }
  15810. | null
  15811. >,
  15812. entityArrayOffset: number,
  15813. entityArrayLength: number,
  15814. removeAction: number,
  15815. retainedAction: number,
  15816. addedAction: number,
  15817. rootEntity: {
  15818. id: number
  15819. }
  15820. ): boolean
  15821. updateAnimationClipBinding(
  15822. binding: IHandle,
  15823. clipArray: Array<{
  15824. __handle: IHandle
  15825. id: number
  15826. }>,
  15827. clipArrayOffset: number,
  15828. clipArrayLength: number,
  15829. entityArray: Array<
  15830. | number
  15831. | {
  15832. id: number
  15833. }
  15834. | null
  15835. >,
  15836. entityArrayOffset: number,
  15837. entityArrayLength: number,
  15838. removeAction: number,
  15839. retainedAction: number,
  15840. addedAction: number
  15841. ): boolean
  15842. writeAnimationClipBindingDefaultValues(binding: IHandle): void
  15843. createAnimatorControllerModel(layerCount: number): IHandle
  15844. setAnimatorControllerModelMaskAtIndex(
  15845. model: IHandle,
  15846. index: number,
  15847. mask: {
  15848. buffer: null | ArrayBuffer
  15849. offset: number
  15850. length: number
  15851. }
  15852. ): void
  15853. updateAnimatorControllerModel(model: IHandle): void
  15854. createAnimatorControllerStateModel(clipCount: number): IHandle
  15855. updateAnimatorControllers( // for performance
  15856. feObjects: Array<{
  15857. __handle: IHandle
  15858. id: number
  15859. }>,
  15860. size: number
  15861. ): void
  15862. createSkinning(boneCount: number, flag: number): IHandle
  15863. updateSkinnings(
  15864. feObjects: Array<{
  15865. __handle: IHandle
  15866. id: number
  15867. }>,
  15868. size: number
  15869. ): void
  15870. createDynamicBones(rootNodeId: number): IHandle & {
  15871. preUpdate(): void
  15872. update(
  15873. dt: number,
  15874. rootMotionX?: number,
  15875. rootMotionY?: number,
  15876. rootMotionZ?: number
  15877. ): void
  15878. rebuild(): void
  15879. resetRoot(rootId: number): void
  15880. }
  15881. }
  15882. export interface IWorker {
  15883. createRenderCamera(
  15884. attachedNodeId: number,
  15885. isUI?: boolean
  15886. ): IHandle & {
  15887. setSharedDirty(): void
  15888. updateMatrices(): void
  15889. }
  15890. createLightCamera(): IHandle
  15891. }
  15892. export interface IWorker {
  15893. createAnimationClipModel(buffer: ArrayBuffer): IHandle
  15894. createBoneInverseModel(buffer: ArrayBuffer): IHandle
  15895. createScalableList(
  15896. initSize: number,
  15897. onBackendEnlarge?: () => void
  15898. ): IHandle & {
  15899. enlarge(size: number): void
  15900. }
  15901. }
  15902. export interface IWorker {
  15903. eventBridge: IEventBridge
  15904. }
  15905. export interface IWorker {
  15906. loadTTFFont(url: string, callback: (font: string) => void): void
  15907. getGlyphInfo(fontSetting: IFontSetting, charCode: number): IGlyphInfo
  15908. }
  15909. export interface IWorker {
  15910. setGlobalPhysicSystem(system: any): void
  15911. bindRigidBodyToNode(rigidBody: any, nodeId: number): void
  15912. unbindRigidBody(rigidBody: any): void
  15913. bindCCTToNode(cc: any, nodeId: number): void
  15914. unbindCCT(cc: any): void
  15915. }
  15916. export interface IWorker {
  15917. downloader: IDownloader
  15918. update(delta: number): void
  15919. destroy(): void
  15920. refreshNodesWorldTransform(): void
  15921. getRenderEnv(): IRenderEnv
  15922. clearView(view: IHandle): void
  15923. cullCamera(
  15924. camera: IHandle,
  15925. cullResult: IHandle,
  15926. lightMode: string
  15927. ): void
  15928. drawCamera(
  15929. camera: IHandle,
  15930. renderList: IHandle,
  15931. lightMode: string
  15932. ): void
  15933. drawLight(
  15934. light: IHandle,
  15935. camera: IHandle,
  15936. renderList: IHandle,
  15937. lightMode: string
  15938. ): void
  15939. submit(): void
  15940. createWeakRef<T>(wrapper: T): {
  15941. deref: () => T
  15942. }
  15943. createWeakRefSentry(): any
  15944. createNativeUUMap(): INativeMap<number>
  15945. createNativeSUMap(): INativeMap<string>
  15946. createNativeULUMap(): ILongIntNativeMap
  15947. decodeBase64(base64: string): ArrayBuffer
  15948. initDraco?(): Promise<void>
  15949. decodeDraco(
  15950. buffer: ArrayBuffer | ArrayBufferView,
  15951. decodeType: EDracoDecodeType
  15952. ): DracoDecoded
  15953. setNodeName(id: number, name: string): void
  15954. setRenderComponentName(handle: IHandle, name: string): void
  15955. debugPrint(msg: string): void
  15956. }
  15957. }
  15958. declare module 'XrFrame/kanata/lib/frontend/pool/Pool' {
  15959. import { IHandle } from 'XrFrame/kanata/lib/backend'
  15960. import NativeObject from 'XrFrame/kanata/lib/frontend/shared/NativeObject'
  15961. export default class Pool extends NativeObject {
  15962. u32viewExt: Uint32Array
  15963. constructor(nativeObj: IHandle)
  15964. supplyExtendedMemory(buffer: ArrayBuffer): void
  15965. }
  15966. }
  15967. declare module 'XrFrame/loader/glTF/animations/channels/GLTFChannelNode' {
  15968. import { StreamReader } from 'XrFrame/core/utils'
  15969. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  15970. import { GLTFNodesLoaded } from 'XrFrame/loader/glTF/scenes/GLTFNodesNode'
  15971. import { GLTF } from 'XrFrame/loader/glTF/utils/types'
  15972. import { GLTFSamplerLoaded } from 'XrFrame/loader/glTF/animations/samplers/GLTFSamplerNode'
  15973. import { GLTFSamplersLoaded } from 'XrFrame/loader/glTF/animations/samplers/GLTFSamplersNode'
  15974. import {
  15975. GLTFTargetLoaded,
  15976. GLTFTargetNodeRaw
  15977. } from 'XrFrame/loader/glTF/animations/channels/GLTFTargetNode'
  15978. export enum EnumPuppetAnimationSampleGroupType {
  15979. tx = 1,
  15980. ty = 2,
  15981. tz = 3,
  15982. sx = 4,
  15983. sy = 5,
  15984. sz = 6,
  15985. qx = 7,
  15986. qy = 8,
  15987. qz = 9,
  15988. qw = 10,
  15989. ex = 11,
  15990. ey = 12,
  15991. ez = 13
  15992. }
  15993. /**
  15994. * 二进制格式, byteLength = 12 + 16 * samples.len
  15995. * | Array<| nodeid | type | count |> |
  15996. * | Array<PuppetAnimationClipSample> |
  15997. */
  15998. export type PuppetAnimationSampleGroup = ArrayBuffer | GLTF.BufferView
  15999. /**
  16000. * 二进制格式, byteLength = 16
  16001. * uint32_t index;
  16002. * float value;
  16003. * float in_tangent;
  16004. * float out_tangent;
  16005. *
  16006. * @remind out_tangent的值决定了插值的类型!很hack!
  16007. * out_tangent = Infinity: STEP
  16008. * out_tangent = NaN: Spherical Linear Interpolation (for quaternion)
  16009. * out_tangent为正常值: Cubic Spline Interpolation (or Linear)
  16010. */
  16011. export type PuppetAnimationClipSample = ArrayBuffer | GLTF.BufferView
  16012. export interface GLTFChannelNodeRaw {
  16013. sampler: number
  16014. target: GLTFTargetNodeRaw
  16015. extras?: any
  16016. }
  16017. export interface GLTFChannelLoaded {
  16018. sampler: GLTFSamplerLoaded
  16019. target: GLTFTargetLoaded
  16020. vectorGroups: number
  16021. headerBytesNeeded: number
  16022. bodyBytesNeeded: number
  16023. serializeHeaderOnBuffer(
  16024. stream: StreamReader,
  16025. channelIndex: number
  16026. ): void
  16027. serializeBodyOnBuffer(stream: StreamReader): number
  16028. extraMorphNodeCount: number
  16029. extras?: any
  16030. }
  16031. export default class GLTFChannelNode extends GLTFBaseNode {
  16032. get nodeName(): string
  16033. readonly raw: GLTFChannelNodeRaw
  16034. build(): void
  16035. preload(
  16036. prerequisites: [
  16037. nodes: GLTFNodesLoaded,
  16038. samplers: GLTFSamplersLoaded
  16039. ]
  16040. ): Promise<GLTFChannelLoaded>
  16041. getLoadedResource(): GLTFChannelLoaded
  16042. }
  16043. }
  16044. declare module 'XrFrame/loader/glTF/animations/samplers/GLTFSamplerNode' {
  16045. import { GLTFAccessorLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorNode'
  16046. import { GLTFAccessorsLoaded } from 'XrFrame/loader/glTF/buffers/GLTFAccessorsNode'
  16047. import { GLTFBaseNode } from 'XrFrame/loader/glTF/GLTFBaseNode'
  16048. export enum EnumGLTFSamplerInterpolation {
  16049. STEP = 0,
  16050. LINEAR = 1,
  16051. CUBICSPLINE = 2
  16052. }
  16053. export interface GLTFSamplerNodeRaw {
  16054. input: number
  16055. output: number
  16056. interpolation?: 'STEP' | 'LINEAR' | 'CUBICSPLINE'
  16057. extras?: any
  16058. }
  16059. export interface GLTFSamplerLoaded {
  16060. input: GLTFAccessorLoaded
  16061. output: GLTFAccessorLoaded
  16062. interpolation: EnumGLTFSamplerInterpolation
  16063. sampleCount: number
  16064. extras?: any
  16065. }
  16066. export default class GLTFSamplerNode extends GLTFBaseNode {
  16067. get nodeName(): string
  16068. readonly raw: GLTFSamplerNodeRaw
  16069. build(): void
  16070. preload(
  16071. prerequisites: [accessors: GLTFAccessorsLoaded]
  16072. ): Promise<GLTFSamplerLoaded>
  16073. getLoadedResource(): GLTFSamplerLoaded
  16074. }
  16075. }
  16076. declare module 'XrFrame/loader/glTF/materials/texture/GLTFTextureTransformInfo' {
  16077. import Vector2 from 'XrFrame/math/vector2'
  16078. export interface ITransformInfo {
  16079. offset?: number[]
  16080. rotation?: number
  16081. scale?: number[]
  16082. }
  16083. export default class GLTFTextureTransformInfo {
  16084. offset: Vector2
  16085. rotation: number
  16086. scale: Vector2
  16087. get uvMatrixArray(): number[]
  16088. constructor(textureTransform: ITransformInfo)
  16089. /**
  16090. * 设置UV变化矩阵,列主序
  16091. *
  16092. * @param {number} tx x轴偏移
  16093. * @param {number} ty y轴偏移
  16094. * @param {number} sx x轴缩放
  16095. * @param {number} sy y轴缩放
  16096. * @param {number} rotation 旋转
  16097. */
  16098. setUvTransform(
  16099. tx: number,
  16100. ty: number,
  16101. sx: number,
  16102. sy: number,
  16103. rotation: number
  16104. ): void
  16105. /**
  16106. * 更新UV矩阵
  16107. *
  16108. * @memberof GLTFTextureTransformInfo
  16109. */
  16110. updateUVMatrixArray(): void
  16111. }
  16112. }
  16113. declare module 'XrFrame/core/utils' {
  16114. export function assert(pred: boolean, msg: string): void
  16115. export function decode(data: ArrayBuffer, format: 'utf-8' | 'gbk'): string
  16116. export function wxPromiseWrapper<T = any>(
  16117. executor: any,
  16118. args: any
  16119. ): Promise<T>
  16120. export class StreamReader {
  16121. constructor(buffer: ArrayBuffer, byteOffset?: number)
  16122. get size(): number
  16123. read<T>(type: StreamReader.Type): T
  16124. write<T>(type: StreamReader.Type, value: T): void
  16125. /**
  16126. * 跳过一个位置,以后再填写。
  16127. */
  16128. reserve<T>(type: StreamReader.Type): {
  16129. write(value: T): void
  16130. }
  16131. readChunk(length: number): ArrayBuffer
  16132. align(alignment: number): void
  16133. end(): boolean
  16134. pos(): number
  16135. }
  16136. export namespace StreamReader {
  16137. enum Type {
  16138. Float = 0,
  16139. UInt32 = 1,
  16140. UInt16 = 2
  16141. }
  16142. const TypeAlignment: {
  16143. 0: number
  16144. 1: number
  16145. 2: number
  16146. }
  16147. const TypeSize: {
  16148. 0: number
  16149. 1: number
  16150. 2: number
  16151. }
  16152. }
  16153. }