development-guide.html 488 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815
  1. <html xmlns:v="urn:schemas-microsoft-com:vml"
  2. xmlns:o="urn:schemas-microsoft-com:office:office"
  3. xmlns:w="urn:schemas-microsoft-com:office:word"
  4. xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
  5. xmlns="http://www.w3.org/TR/REC-html40">
  6. <head>
  7. <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  8. <meta name=ProgId content=Word.Document>
  9. <meta name=Generator content="Microsoft Word 12">
  10. <meta name=Originator content="Microsoft Word 12">
  11. <link rel=File-List href="development-guide_files/filelist.xml">
  12. <link rel=Edit-Time-Data href="development-guide_files/editdata.mso">
  13. <!--[if !mso]>
  14. <style>
  15. v\:* {behavior:url(#default#VML);}
  16. o\:* {behavior:url(#default#VML);}
  17. w\:* {behavior:url(#default#VML);}
  18. .shape {behavior:url(#default#VML);}
  19. </style>
  20. <![endif]--><!--[if gte mso 9]><xml>
  21. <o:DocumentProperties>
  22. <o:Author>user</o:Author>
  23. <o:LastAuthor>Windows User</o:LastAuthor>
  24. <o:Revision>3</o:Revision>
  25. <o:TotalTime>1343</o:TotalTime>
  26. <o:LastPrinted>2012-07-24T18:24:00Z</o:LastPrinted>
  27. <o:Created>2012-07-25T17:15:00Z</o:Created>
  28. <o:LastSaved>2012-07-25T17:15:00Z</o:LastSaved>
  29. <o:Pages>29</o:Pages>
  30. <o:Words>14412</o:Words>
  31. <o:Characters>82154</o:Characters>
  32. <o:Company>Research In Motion Limited</o:Company>
  33. <o:Lines>684</o:Lines>
  34. <o:Paragraphs>192</o:Paragraphs>
  35. <o:CharactersWithSpaces>96374</o:CharactersWithSpaces>
  36. <o:Version>12.00</o:Version>
  37. </o:DocumentProperties>
  38. </xml><![endif]-->
  39. <link rel=dataStoreItem href="development-guide_files/item0011.xml"
  40. target="development-guide_files/props0012.xml">
  41. <link rel=themeData href="development-guide_files/themedata.thmx">
  42. <link rel=colorSchemeMapping
  43. href="development-guide_files/colorschememapping.xml">
  44. <!--[if gte mso 9]><xml>
  45. <w:WordDocument>
  46. <w:TrackMoves>false</w:TrackMoves>
  47. <w:TrackFormatting/>
  48. <w:PunctuationKerning/>
  49. <w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
  50. <w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
  51. <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  52. <w:DisplayVerticalDrawingGridEvery>3</w:DisplayVerticalDrawingGridEvery>
  53. <w:UseMarginsForDrawingGridOrigin/>
  54. <w:ValidateAgainstSchemas>false</w:ValidateAgainstSchemas>
  55. <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  56. <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  57. <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  58. <w:DoNotUnderlineInvalidXML/>
  59. <w:DoNotPromoteQF/>
  60. <w:LidThemeOther>EN-US</w:LidThemeOther>
  61. <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  62. <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  63. <w:DoNotShadeFormData/>
  64. <w:Compatibility>
  65. <w:SpaceForUL/>
  66. <w:BalanceSingleByteDoubleByteWidth/>
  67. <w:DoNotLeaveBackslashAlone/>
  68. <w:ULTrailSpace/>
  69. <w:DoNotExpandShiftReturn/>
  70. <w:FootnoteLayoutLikeWW8/>
  71. <w:ShapeLayoutLikeWW8/>
  72. <w:AlignTablesRowByRow/>
  73. <w:ForgetLastTabAlignment/>
  74. <w:AdjustLineHeightInTable/>
  75. <w:LayoutRawTableWidth/>
  76. <w:LayoutTableRowsApart/>
  77. <w:UseWord97LineBreakingRules/>
  78. <w:SelectEntireFieldWithStartOrEnd/>
  79. <w:UseWord2002TableStyleRules/>
  80. <w:DontUseIndentAsNumberingTabStop/>
  81. <w:FELineBreak11/>
  82. <w:WW11IndentRules/>
  83. <w:DontAutofitConstrainedTables/>
  84. <w:AutofitLikeWW11/>
  85. <w:UnderlineTabInNumList/>
  86. <w:HangulWidthLikeWW11/>
  87. <w:UseNormalStyleForList/>
  88. </w:Compatibility>
  89. <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  90. <m:mathPr>
  91. <m:mathFont m:val="Cambria Math"/>
  92. <m:brkBin m:val="before"/>
  93. <m:brkBinSub m:val="&#45;-"/>
  94. <m:smallFrac m:val="off"/>
  95. <m:dispDef/>
  96. <m:lMargin m:val="0"/>
  97. <m:rMargin m:val="0"/>
  98. <m:defJc m:val="centerGroup"/>
  99. <m:wrapIndent m:val="1440"/>
  100. <m:intLim m:val="subSup"/>
  101. <m:naryLim m:val="undOvr"/>
  102. </m:mathPr></w:WordDocument>
  103. </xml><![endif]--><!--[if gte mso 9]><xml>
  104. <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  105. DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  106. LatentStyleCount="267">
  107. <w:LsdException Locked="false" Priority="0" SemiHidden="false"
  108. UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  109. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  110. QFormat="true" Name="heading 1"/>
  111. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  112. QFormat="true" Name="heading 2"/>
  113. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  114. QFormat="true" Name="heading 3"/>
  115. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  116. QFormat="true" Name="heading 4"/>
  117. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  118. QFormat="true" Name="heading 5"/>
  119. <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
  120. QFormat="true" Name="heading 6"/>
  121. <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  122. <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  123. <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  124. <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  125. <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  126. <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  127. <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  128. <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  129. <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  130. <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  131. <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  132. <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  133. <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  134. <w:LsdException Locked="false" Priority="10" SemiHidden="false"
  135. UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  136. <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  137. <w:LsdException Locked="false" Priority="11" SemiHidden="false"
  138. UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  139. <w:LsdException Locked="false" Priority="22" SemiHidden="false"
  140. UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  141. <w:LsdException Locked="false" Priority="20" SemiHidden="false"
  142. UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  143. <w:LsdException Locked="false" Priority="59" SemiHidden="false"
  144. UnhideWhenUsed="false" Name="Table Grid"/>
  145. <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  146. <w:LsdException Locked="false" Priority="1" SemiHidden="false"
  147. UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  148. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  149. UnhideWhenUsed="false" Name="Light Shading"/>
  150. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  151. UnhideWhenUsed="false" Name="Light List"/>
  152. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  153. UnhideWhenUsed="false" Name="Light Grid"/>
  154. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  155. UnhideWhenUsed="false" Name="Medium Shading 1"/>
  156. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  157. UnhideWhenUsed="false" Name="Medium Shading 2"/>
  158. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  159. UnhideWhenUsed="false" Name="Medium List 1"/>
  160. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  161. UnhideWhenUsed="false" Name="Medium List 2"/>
  162. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  163. UnhideWhenUsed="false" Name="Medium Grid 1"/>
  164. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  165. UnhideWhenUsed="false" Name="Medium Grid 2"/>
  166. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  167. UnhideWhenUsed="false" Name="Medium Grid 3"/>
  168. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  169. UnhideWhenUsed="false" Name="Dark List"/>
  170. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  171. UnhideWhenUsed="false" Name="Colorful Shading"/>
  172. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  173. UnhideWhenUsed="false" Name="Colorful List"/>
  174. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  175. UnhideWhenUsed="false" Name="Colorful Grid"/>
  176. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  177. UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  178. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  179. UnhideWhenUsed="false" Name="Light List Accent 1"/>
  180. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  181. UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  182. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  183. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  184. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  185. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  186. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  187. UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  188. <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  189. <w:LsdException Locked="false" Priority="34" SemiHidden="false"
  190. UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  191. <w:LsdException Locked="false" Priority="29" SemiHidden="false"
  192. UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  193. <w:LsdException Locked="false" Priority="30" SemiHidden="false"
  194. UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  195. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  196. UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  197. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  198. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  199. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  200. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  201. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  202. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  203. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  204. UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  205. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  206. UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  207. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  208. UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  209. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  210. UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  211. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  212. UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  213. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  214. UnhideWhenUsed="false" Name="Light List Accent 2"/>
  215. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  216. UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  217. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  218. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  219. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  220. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  221. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  222. UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  223. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  224. UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  225. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  226. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  227. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  228. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  229. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  230. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  231. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  232. UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  233. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  234. UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  235. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  236. UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  237. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  238. UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  239. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  240. UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  241. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  242. UnhideWhenUsed="false" Name="Light List Accent 3"/>
  243. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  244. UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  245. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  246. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  247. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  248. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  249. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  250. UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  251. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  252. UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  253. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  254. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  255. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  256. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  257. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  258. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  259. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  260. UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  261. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  262. UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  263. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  264. UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  265. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  266. UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  267. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  268. UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  269. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  270. UnhideWhenUsed="false" Name="Light List Accent 4"/>
  271. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  272. UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  273. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  274. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  275. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  276. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  277. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  278. UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  279. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  280. UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  281. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  282. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  283. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  284. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  285. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  286. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  287. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  288. UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  289. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  290. UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  291. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  292. UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  293. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  294. UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  295. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  296. UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  297. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  298. UnhideWhenUsed="false" Name="Light List Accent 5"/>
  299. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  300. UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  301. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  302. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  303. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  304. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  305. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  306. UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  307. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  308. UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  309. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  310. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  311. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  312. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  313. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  314. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  315. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  316. UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  317. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  318. UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  319. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  320. UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  321. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  322. UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  323. <w:LsdException Locked="false" Priority="60" SemiHidden="false"
  324. UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  325. <w:LsdException Locked="false" Priority="61" SemiHidden="false"
  326. UnhideWhenUsed="false" Name="Light List Accent 6"/>
  327. <w:LsdException Locked="false" Priority="62" SemiHidden="false"
  328. UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  329. <w:LsdException Locked="false" Priority="63" SemiHidden="false"
  330. UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  331. <w:LsdException Locked="false" Priority="64" SemiHidden="false"
  332. UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  333. <w:LsdException Locked="false" Priority="65" SemiHidden="false"
  334. UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  335. <w:LsdException Locked="false" Priority="66" SemiHidden="false"
  336. UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  337. <w:LsdException Locked="false" Priority="67" SemiHidden="false"
  338. UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  339. <w:LsdException Locked="false" Priority="68" SemiHidden="false"
  340. UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  341. <w:LsdException Locked="false" Priority="69" SemiHidden="false"
  342. UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  343. <w:LsdException Locked="false" Priority="70" SemiHidden="false"
  344. UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  345. <w:LsdException Locked="false" Priority="71" SemiHidden="false"
  346. UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  347. <w:LsdException Locked="false" Priority="72" SemiHidden="false"
  348. UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  349. <w:LsdException Locked="false" Priority="73" SemiHidden="false"
  350. UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  351. <w:LsdException Locked="false" Priority="19" SemiHidden="false"
  352. UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  353. <w:LsdException Locked="false" Priority="21" SemiHidden="false"
  354. UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  355. <w:LsdException Locked="false" Priority="31" SemiHidden="false"
  356. UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  357. <w:LsdException Locked="false" Priority="32" SemiHidden="false"
  358. UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  359. <w:LsdException Locked="false" Priority="33" SemiHidden="false"
  360. UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  361. <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  362. <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
  363. </w:LatentStyles>
  364. </xml><![endif]-->
  365. <style>
  366. <!--
  367. /* Font Definitions */
  368. @font-face
  369. {font-family:Wingdings;
  370. panose-1:5 0 0 0 0 0 0 0 0 0;
  371. mso-font-charset:2;
  372. mso-generic-font-family:auto;
  373. mso-font-pitch:variable;
  374. mso-font-signature:0 268435456 0 0 -2147483648 0;}
  375. @font-face
  376. {font-family:"MS Gothic";
  377. panose-1:2 11 6 9 7 2 5 8 2 4;
  378. mso-font-alt:"?l?r ?S?V?b?N";
  379. mso-font-charset:128;
  380. mso-generic-font-family:modern;
  381. mso-font-pitch:fixed;
  382. mso-font-signature:-536870145 1791491579 18 0 131231 0;}
  383. @font-face
  384. {font-family:"MS Gothic";
  385. panose-1:2 11 6 9 7 2 5 8 2 4;
  386. mso-font-alt:"?l?r ?S?V?b?N";
  387. mso-font-charset:128;
  388. mso-generic-font-family:modern;
  389. mso-font-pitch:fixed;
  390. mso-font-signature:-536870145 1791491579 18 0 131231 0;}
  391. @font-face
  392. {font-family:Cambria;
  393. panose-1:2 4 5 3 5 4 6 3 2 4;
  394. mso-font-charset:0;
  395. mso-generic-font-family:roman;
  396. mso-font-pitch:variable;
  397. mso-font-signature:-536870145 1073743103 0 0 415 0;}
  398. @font-face
  399. {font-family:Calibri;
  400. panose-1:2 15 5 2 2 2 4 3 2 4;
  401. mso-font-charset:0;
  402. mso-generic-font-family:swiss;
  403. mso-font-pitch:variable;
  404. mso-font-signature:-520092929 1073786111 9 0 415 0;}
  405. @font-face
  406. {font-family:Tahoma;
  407. panose-1:2 11 6 4 3 5 4 4 2 4;
  408. mso-font-charset:0;
  409. mso-generic-font-family:swiss;
  410. mso-font-pitch:variable;
  411. mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
  412. @font-face
  413. {font-family:"Malgun Gothic";
  414. panose-1:2 11 5 3 2 0 0 2 0 4;
  415. mso-font-charset:129;
  416. mso-generic-font-family:swiss;
  417. mso-font-pitch:variable;
  418. mso-font-signature:-1879047505 165117179 18 0 524289 0;}
  419. @font-face
  420. {font-family:"\@Malgun Gothic";
  421. panose-1:2 11 5 3 2 0 0 2 0 4;
  422. mso-font-charset:129;
  423. mso-generic-font-family:swiss;
  424. mso-font-pitch:variable;
  425. mso-font-signature:-1879047505 165117179 18 0 524289 0;}
  426. @font-face
  427. {font-family:TradeGothicNextLTPro-Lt;
  428. panose-1:0 0 0 0 0 0 0 0 0 0;
  429. mso-font-alt:"Malgun Gothic";
  430. mso-font-charset:0;
  431. mso-generic-font-family:roman;
  432. mso-font-format:other;
  433. mso-font-pitch:auto;
  434. mso-font-signature:3 0 0 0 1 0;}
  435. @font-face
  436. {font-family:Consolas;
  437. panose-1:2 11 6 9 2 2 4 3 2 4;
  438. mso-font-charset:0;
  439. mso-generic-font-family:modern;
  440. mso-font-pitch:fixed;
  441. mso-font-signature:-520092929 1073806591 9 0 415 0;}
  442. @font-face
  443. {font-family:"\@MS Gothic";
  444. panose-1:2 11 6 9 7 2 5 8 2 4;
  445. mso-font-charset:128;
  446. mso-generic-font-family:modern;
  447. mso-font-pitch:fixed;
  448. mso-font-signature:-536870145 1791491579 18 0 131231 0;}
  449. /* Style Definitions */
  450. p.MsoNormal, li.MsoNormal, div.MsoNormal
  451. {mso-style-unhide:no;
  452. mso-style-qformat:yes;
  453. mso-style-parent:"";
  454. margin:0in;
  455. margin-bottom:.0001pt;
  456. mso-pagination:none;
  457. mso-layout-grid-align:none;
  458. text-autospace:none;
  459. font-size:11.0pt;
  460. font-family:"Malgun Gothic","sans-serif";
  461. mso-hansi-font-family:"Times New Roman";
  462. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  463. h1
  464. {mso-style-priority:99;
  465. mso-style-unhide:no;
  466. mso-style-qformat:yes;
  467. mso-style-link:"Heading 1 Char";
  468. mso-style-next:Normal;
  469. margin:0in;
  470. margin-bottom:.0001pt;
  471. mso-pagination:none;
  472. mso-outline-level:1;
  473. mso-layout-grid-align:none;
  474. text-autospace:none;
  475. font-size:24.0pt;
  476. font-family:"Malgun Gothic","sans-serif";
  477. mso-hansi-font-family:"Times New Roman";
  478. mso-bidi-font-family:TradeGothicNextLTPro-Lt;
  479. mso-font-kerning:0pt;}
  480. h2
  481. {mso-style-priority:99;
  482. mso-style-unhide:no;
  483. mso-style-qformat:yes;
  484. mso-style-parent:Subtitle;
  485. mso-style-link:"Heading 2 Char";
  486. mso-style-next:Normal;
  487. margin-top:0in;
  488. margin-right:0in;
  489. margin-bottom:12.0pt;
  490. margin-left:0in;
  491. page-break-before:always;
  492. mso-pagination:none;
  493. mso-outline-level:2;
  494. mso-layout-grid-align:none;
  495. text-autospace:none;
  496. font-size:36.0pt;
  497. mso-bidi-font-size:12.0pt;
  498. font-family:"Malgun Gothic","sans-serif";
  499. mso-hansi-font-family:"Times New Roman";
  500. mso-bidi-font-family:"Times New Roman";
  501. color:#009ACD;
  502. mso-bidi-font-weight:normal;}
  503. h3
  504. {mso-style-priority:99;
  505. mso-style-unhide:no;
  506. mso-style-qformat:yes;
  507. mso-style-link:"Heading 3 Char";
  508. mso-style-next:Normal;
  509. margin-top:24.0pt;
  510. margin-right:0in;
  511. margin-bottom:6.0pt;
  512. margin-left:0in;
  513. mso-pagination:none;
  514. page-break-after:avoid;
  515. mso-outline-level:3;
  516. mso-layout-grid-align:none;
  517. text-autospace:none;
  518. font-size:18.0pt;
  519. mso-bidi-font-size:12.0pt;
  520. font-family:"Malgun Gothic","sans-serif";
  521. mso-hansi-font-family:"Times New Roman";
  522. mso-bidi-font-family:"Times New Roman";
  523. mso-bidi-font-weight:normal;}
  524. h4
  525. {mso-style-priority:99;
  526. mso-style-unhide:no;
  527. mso-style-qformat:yes;
  528. mso-style-link:"Heading 4 Char";
  529. mso-style-next:Normal;
  530. margin:0in;
  531. margin-bottom:.0001pt;
  532. mso-pagination:none;
  533. mso-outline-level:4;
  534. mso-layout-grid-align:none;
  535. text-autospace:none;
  536. font-size:13.0pt;
  537. font-family:"Malgun Gothic","sans-serif";
  538. mso-hansi-font-family:"Times New Roman";
  539. mso-bidi-font-family:"Times New Roman";
  540. mso-bidi-font-weight:normal;}
  541. h5
  542. {mso-style-priority:99;
  543. mso-style-unhide:no;
  544. mso-style-qformat:yes;
  545. mso-style-link:"Heading 5 Char";
  546. mso-style-next:Normal;
  547. margin:0in;
  548. margin-bottom:.0001pt;
  549. mso-pagination:none;
  550. mso-outline-level:5;
  551. mso-layout-grid-align:none;
  552. text-autospace:none;
  553. font-size:9.0pt;
  554. font-family:"Malgun Gothic","sans-serif";
  555. mso-hansi-font-family:"Times New Roman";
  556. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  557. h6
  558. {mso-style-priority:99;
  559. mso-style-unhide:no;
  560. mso-style-qformat:yes;
  561. mso-style-link:"Heading 6 Char";
  562. mso-style-next:Normal;
  563. margin:0in;
  564. margin-bottom:.0001pt;
  565. mso-pagination:none;
  566. mso-outline-level:6;
  567. mso-layout-grid-align:none;
  568. text-autospace:none;
  569. font-size:8.0pt;
  570. font-family:"Malgun Gothic","sans-serif";
  571. mso-hansi-font-family:"Times New Roman";
  572. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  573. p.MsoToc1, li.MsoToc1, div.MsoToc1
  574. {mso-style-update:auto;
  575. mso-style-priority:39;
  576. mso-style-next:Normal;
  577. margin:0in;
  578. margin-bottom:.0001pt;
  579. mso-pagination:none;
  580. mso-layout-grid-align:none;
  581. text-autospace:none;
  582. font-size:11.0pt;
  583. font-family:"Malgun Gothic","sans-serif";
  584. mso-hansi-font-family:"Times New Roman";
  585. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  586. p.MsoToc2, li.MsoToc2, div.MsoToc2
  587. {mso-style-update:auto;
  588. mso-style-priority:39;
  589. mso-style-next:Normal;
  590. margin-top:0in;
  591. margin-right:0in;
  592. margin-bottom:0in;
  593. margin-left:11.0pt;
  594. margin-bottom:.0001pt;
  595. mso-pagination:none;
  596. mso-layout-grid-align:none;
  597. text-autospace:none;
  598. font-size:11.0pt;
  599. font-family:"Malgun Gothic","sans-serif";
  600. mso-hansi-font-family:"Times New Roman";
  601. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  602. p.MsoToc3, li.MsoToc3, div.MsoToc3
  603. {mso-style-update:auto;
  604. mso-style-priority:39;
  605. mso-style-next:Normal;
  606. margin-top:0in;
  607. margin-right:0in;
  608. margin-bottom:0in;
  609. margin-left:22.0pt;
  610. margin-bottom:.0001pt;
  611. mso-pagination:none;
  612. mso-layout-grid-align:none;
  613. text-autospace:none;
  614. font-size:11.0pt;
  615. font-family:"Malgun Gothic","sans-serif";
  616. mso-hansi-font-family:"Times New Roman";
  617. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  618. p.MsoToc4, li.MsoToc4, div.MsoToc4
  619. {mso-style-update:auto;
  620. mso-style-priority:39;
  621. mso-style-next:Normal;
  622. margin-top:0in;
  623. margin-right:0in;
  624. margin-bottom:5.0pt;
  625. margin-left:33.0pt;
  626. line-height:115%;
  627. mso-pagination:widow-orphan;
  628. font-size:11.0pt;
  629. font-family:"Calibri","sans-serif";
  630. mso-fareast-font-family:"Times New Roman";
  631. mso-bidi-font-family:"Times New Roman";}
  632. p.MsoToc5, li.MsoToc5, div.MsoToc5
  633. {mso-style-update:auto;
  634. mso-style-priority:39;
  635. mso-style-next:Normal;
  636. margin-top:0in;
  637. margin-right:0in;
  638. margin-bottom:5.0pt;
  639. margin-left:44.0pt;
  640. line-height:115%;
  641. mso-pagination:widow-orphan;
  642. font-size:11.0pt;
  643. font-family:"Calibri","sans-serif";
  644. mso-fareast-font-family:"Times New Roman";
  645. mso-bidi-font-family:"Times New Roman";}
  646. p.MsoToc6, li.MsoToc6, div.MsoToc6
  647. {mso-style-update:auto;
  648. mso-style-priority:39;
  649. mso-style-next:Normal;
  650. margin-top:0in;
  651. margin-right:0in;
  652. margin-bottom:5.0pt;
  653. margin-left:55.0pt;
  654. line-height:115%;
  655. mso-pagination:widow-orphan;
  656. font-size:11.0pt;
  657. font-family:"Calibri","sans-serif";
  658. mso-fareast-font-family:"Times New Roman";
  659. mso-bidi-font-family:"Times New Roman";}
  660. p.MsoToc7, li.MsoToc7, div.MsoToc7
  661. {mso-style-update:auto;
  662. mso-style-priority:39;
  663. mso-style-next:Normal;
  664. margin-top:0in;
  665. margin-right:0in;
  666. margin-bottom:5.0pt;
  667. margin-left:66.0pt;
  668. line-height:115%;
  669. mso-pagination:widow-orphan;
  670. font-size:11.0pt;
  671. font-family:"Calibri","sans-serif";
  672. mso-fareast-font-family:"Times New Roman";
  673. mso-bidi-font-family:"Times New Roman";}
  674. p.MsoToc8, li.MsoToc8, div.MsoToc8
  675. {mso-style-update:auto;
  676. mso-style-priority:39;
  677. mso-style-next:Normal;
  678. margin-top:0in;
  679. margin-right:0in;
  680. margin-bottom:5.0pt;
  681. margin-left:77.0pt;
  682. line-height:115%;
  683. mso-pagination:widow-orphan;
  684. font-size:11.0pt;
  685. font-family:"Calibri","sans-serif";
  686. mso-fareast-font-family:"Times New Roman";
  687. mso-bidi-font-family:"Times New Roman";}
  688. p.MsoToc9, li.MsoToc9, div.MsoToc9
  689. {mso-style-update:auto;
  690. mso-style-priority:39;
  691. mso-style-next:Normal;
  692. margin-top:0in;
  693. margin-right:0in;
  694. margin-bottom:5.0pt;
  695. margin-left:88.0pt;
  696. line-height:115%;
  697. mso-pagination:widow-orphan;
  698. font-size:11.0pt;
  699. font-family:"Calibri","sans-serif";
  700. mso-fareast-font-family:"Times New Roman";
  701. mso-bidi-font-family:"Times New Roman";}
  702. p.MsoTitle, li.MsoTitle, div.MsoTitle
  703. {mso-style-priority:10;
  704. mso-style-unhide:no;
  705. mso-style-qformat:yes;
  706. mso-style-link:"Title Char";
  707. mso-style-next:Normal;
  708. margin-top:12.0pt;
  709. margin-right:0in;
  710. margin-bottom:3.0pt;
  711. margin-left:0in;
  712. text-align:center;
  713. mso-pagination:none;
  714. mso-outline-level:1;
  715. mso-layout-grid-align:none;
  716. text-autospace:none;
  717. font-size:16.0pt;
  718. font-family:"Cambria","serif";
  719. mso-fareast-font-family:"Times New Roman";
  720. mso-bidi-font-family:"Times New Roman";
  721. mso-font-kerning:14.0pt;
  722. font-weight:bold;}
  723. p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
  724. {mso-style-priority:11;
  725. mso-style-unhide:no;
  726. mso-style-qformat:yes;
  727. mso-style-link:"Subtitle Char";
  728. mso-style-next:Normal;
  729. margin-top:0in;
  730. margin-right:0in;
  731. margin-bottom:3.0pt;
  732. margin-left:0in;
  733. mso-pagination:none;
  734. mso-outline-level:2;
  735. mso-layout-grid-align:none;
  736. text-autospace:none;
  737. font-size:36.0pt;
  738. mso-bidi-font-size:12.0pt;
  739. font-family:"Malgun Gothic","sans-serif";
  740. mso-hansi-font-family:"Times New Roman";
  741. mso-bidi-font-family:"Times New Roman";
  742. color:#009ACD;
  743. font-weight:bold;
  744. mso-bidi-font-weight:normal;}
  745. a:link, span.MsoHyperlink
  746. {mso-style-priority:99;
  747. font-family:"Times New Roman","serif";
  748. mso-bidi-font-family:"Times New Roman";
  749. color:blue;
  750. text-decoration:underline;
  751. text-underline:single;}
  752. a:visited, span.MsoHyperlinkFollowed
  753. {mso-style-noshow:yes;
  754. mso-style-priority:99;
  755. color:purple;
  756. mso-themecolor:followedhyperlink;
  757. text-decoration:underline;
  758. text-underline:single;}
  759. p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
  760. {mso-style-noshow:yes;
  761. mso-style-priority:99;
  762. mso-style-link:"Document Map Char";
  763. margin:0in;
  764. margin-bottom:.0001pt;
  765. mso-pagination:none;
  766. mso-layout-grid-align:none;
  767. text-autospace:none;
  768. font-size:8.0pt;
  769. font-family:"Tahoma","sans-serif";
  770. mso-fareast-font-family:"Times New Roman";}
  771. pre
  772. {mso-style-priority:99;
  773. mso-style-link:"HTML Preformatted Char";
  774. margin:0in;
  775. margin-bottom:.0001pt;
  776. mso-pagination:widow-orphan;
  777. font-size:10.0pt;
  778. font-family:"Courier New";
  779. mso-fareast-font-family:"Times New Roman";}
  780. p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
  781. {mso-style-noshow:yes;
  782. mso-style-priority:39;
  783. mso-style-qformat:yes;
  784. mso-style-parent:"Heading 1";
  785. mso-style-next:Normal;
  786. margin-top:24.0pt;
  787. margin-right:0in;
  788. margin-bottom:0in;
  789. margin-left:0in;
  790. margin-bottom:.0001pt;
  791. line-height:115%;
  792. mso-pagination:widow-orphan lines-together;
  793. page-break-after:avoid;
  794. font-size:14.0pt;
  795. font-family:"Cambria","serif";
  796. mso-fareast-font-family:"MS Gothic";
  797. mso-bidi-font-family:"Times New Roman";
  798. color:#365F91;
  799. mso-fareast-language:JA;
  800. font-weight:bold;}
  801. span.Heading1Char
  802. {mso-style-name:"Heading 1 Char";
  803. mso-style-priority:9;
  804. mso-style-unhide:no;
  805. mso-style-locked:yes;
  806. mso-style-link:"Heading 1";
  807. mso-ansi-font-size:16.0pt;
  808. font-family:"Cambria","serif";
  809. mso-ascii-font-family:Cambria;
  810. mso-hansi-font-family:Cambria;
  811. mso-bidi-font-family:"Times New Roman";
  812. mso-font-kerning:16.0pt;
  813. font-weight:bold;
  814. mso-bidi-font-weight:normal;}
  815. span.Heading2Char
  816. {mso-style-name:"Heading 2 Char";
  817. mso-style-priority:99;
  818. mso-style-unhide:no;
  819. mso-style-locked:yes;
  820. mso-style-link:"Heading 2";
  821. mso-ansi-font-size:12.0pt;
  822. font-family:"Arial","sans-serif";
  823. mso-ascii-font-family:Arial;
  824. mso-hansi-font-family:Arial;
  825. mso-bidi-font-family:"Times New Roman";
  826. color:#009ACD;
  827. font-weight:bold;
  828. mso-bidi-font-weight:normal;}
  829. span.Heading3Char
  830. {mso-style-name:"Heading 3 Char";
  831. mso-style-priority:99;
  832. mso-style-unhide:no;
  833. mso-style-locked:yes;
  834. mso-style-link:"Heading 3";
  835. mso-ansi-font-size:12.0pt;
  836. font-family:"Malgun Gothic","sans-serif";
  837. mso-ascii-font-family:"Malgun Gothic";
  838. mso-fareast-font-family:"Malgun Gothic";
  839. mso-bidi-font-family:"Times New Roman";
  840. font-weight:bold;
  841. mso-bidi-font-weight:normal;}
  842. span.Heading4Char
  843. {mso-style-name:"Heading 4 Char";
  844. mso-style-priority:99;
  845. mso-style-unhide:no;
  846. mso-style-locked:yes;
  847. mso-style-link:"Heading 4";
  848. mso-ansi-font-size:13.0pt;
  849. font-family:"Malgun Gothic","sans-serif";
  850. mso-ascii-font-family:"Malgun Gothic";
  851. mso-fareast-font-family:"Malgun Gothic";
  852. mso-bidi-font-family:"Times New Roman";
  853. font-weight:bold;
  854. mso-bidi-font-weight:normal;}
  855. span.Heading5Char
  856. {mso-style-name:"Heading 5 Char";
  857. mso-style-noshow:yes;
  858. mso-style-priority:9;
  859. mso-style-unhide:no;
  860. mso-style-locked:yes;
  861. mso-style-link:"Heading 5";
  862. mso-ansi-font-size:13.0pt;
  863. font-family:"Times New Roman","serif";
  864. mso-bidi-font-family:"Times New Roman";
  865. font-weight:bold;
  866. mso-bidi-font-weight:normal;
  867. font-style:italic;
  868. mso-bidi-font-style:normal;}
  869. span.Heading6Char
  870. {mso-style-name:"Heading 6 Char";
  871. mso-style-noshow:yes;
  872. mso-style-priority:9;
  873. mso-style-unhide:no;
  874. mso-style-locked:yes;
  875. mso-style-link:"Heading 6";
  876. font-family:"Times New Roman","serif";
  877. mso-bidi-font-family:"Times New Roman";
  878. font-weight:bold;
  879. mso-bidi-font-weight:normal;}
  880. p.tableheader, li.tableheader, div.tableheader
  881. {mso-style-name:"table header";
  882. mso-style-priority:99;
  883. mso-style-unhide:no;
  884. mso-style-parent:"";
  885. margin:0in;
  886. margin-bottom:.0001pt;
  887. mso-pagination:none;
  888. mso-layout-grid-align:none;
  889. text-autospace:none;
  890. font-size:11.0pt;
  891. font-family:"TradeGothicNextLTPro-Lt","serif";
  892. mso-fareast-font-family:"Times New Roman";
  893. mso-bidi-font-family:TradeGothicNextLTPro-Lt;
  894. font-weight:bold;}
  895. p.link, li.link, div.link
  896. {mso-style-name:link;
  897. mso-style-priority:99;
  898. mso-style-unhide:no;
  899. mso-style-parent:"";
  900. margin:0in;
  901. margin-bottom:.0001pt;
  902. mso-pagination:none;
  903. mso-layout-grid-align:none;
  904. text-autospace:none;
  905. font-size:11.0pt;
  906. font-family:"TradeGothicNextLTPro-Lt","serif";
  907. mso-fareast-font-family:"Times New Roman";
  908. mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
  909. p.tabletitle, li.tabletitle, div.tabletitle
  910. {mso-style-name:"table title";
  911. mso-style-priority:99;
  912. mso-style-unhide:no;
  913. mso-style-parent:"";
  914. margin:0in;
  915. margin-bottom:.0001pt;
  916. mso-pagination:none;
  917. mso-layout-grid-align:none;
  918. text-autospace:none;
  919. font-size:11.0pt;
  920. font-family:"TradeGothicNextLTPro-Lt","serif";
  921. mso-fareast-font-family:"Times New Roman";
  922. mso-bidi-font-family:TradeGothicNextLTPro-Lt;
  923. font-weight:bold;}
  924. span.SubtitleChar
  925. {mso-style-name:"Subtitle Char";
  926. mso-style-priority:11;
  927. mso-style-unhide:no;
  928. mso-style-locked:yes;
  929. mso-style-link:Subtitle;
  930. mso-ansi-font-size:12.0pt;
  931. font-family:"Malgun Gothic","sans-serif";
  932. mso-ascii-font-family:"Malgun Gothic";
  933. mso-fareast-font-family:"Malgun Gothic";
  934. mso-bidi-font-family:"Times New Roman";
  935. color:#009ACD;
  936. font-weight:bold;
  937. mso-bidi-font-weight:normal;}
  938. span.TitleChar
  939. {mso-style-name:"Title Char";
  940. mso-style-priority:10;
  941. mso-style-unhide:no;
  942. mso-style-locked:yes;
  943. mso-style-link:Title;
  944. mso-ansi-font-size:16.0pt;
  945. font-family:"Cambria","serif";
  946. mso-ascii-font-family:Cambria;
  947. mso-hansi-font-family:Cambria;
  948. mso-bidi-font-family:"Times New Roman";
  949. mso-font-kerning:14.0pt;
  950. font-weight:bold;
  951. mso-bidi-font-weight:normal;}
  952. span.DocumentMapChar
  953. {mso-style-name:"Document Map Char";
  954. mso-style-noshow:yes;
  955. mso-style-priority:99;
  956. mso-style-unhide:no;
  957. mso-style-locked:yes;
  958. mso-style-link:"Document Map";
  959. mso-ansi-font-size:8.0pt;
  960. font-family:"Tahoma","sans-serif";
  961. mso-ascii-font-family:Tahoma;
  962. mso-hansi-font-family:Tahoma;
  963. mso-bidi-font-family:"Times New Roman";}
  964. span.HTMLPreformattedChar
  965. {mso-style-name:"HTML Preformatted Char";
  966. mso-style-priority:99;
  967. mso-style-unhide:no;
  968. mso-style-locked:yes;
  969. mso-style-link:"HTML Preformatted";
  970. mso-ansi-font-size:10.0pt;
  971. font-family:"Courier New";
  972. mso-ascii-font-family:"Courier New";
  973. mso-hansi-font-family:"Courier New";
  974. mso-bidi-font-family:"Times New Roman";}
  975. .MsoChpDefault
  976. {mso-style-type:export-only;
  977. mso-default-props:yes;
  978. font-family:"Calibri","sans-serif";
  979. mso-ascii-font-family:Calibri;
  980. mso-hansi-font-family:Calibri;
  981. mso-bidi-font-family:Calibri;}
  982. .MsoPapDefault
  983. {mso-style-type:export-only;}
  984. /* Page Definitions */
  985. @page
  986. {mso-page-border-surround-header:no;
  987. mso-page-border-surround-footer:no;
  988. mso-footnote-separator:url("development-guide_files/header.html") fs;
  989. mso-footnote-continuation-separator:url("development-guide_files/header.html") fcs;
  990. mso-endnote-separator:url("development-guide_files/header.html") es;
  991. mso-endnote-continuation-separator:url("development-guide_files/header.html") ecs;}
  992. @page WordSection1
  993. {size:8.5in 11.0in;
  994. margin:1.0in 1.0in 1.0in 1.0in;
  995. mso-header-margin:.5in;
  996. mso-footer-margin:.5in;
  997. mso-header:url("development-guide_files/header.html") h1;
  998. mso-footer:url("development-guide_files/header.html") f1;
  999. mso-paper-source:0;}
  1000. div.WordSection1
  1001. {page:WordSection1;}
  1002. /* List Definitions */
  1003. @list l0
  1004. {mso-list-id:-2;
  1005. mso-list-type:simple;
  1006. mso-list-template-ids:950202048;}
  1007. @list l0:level1
  1008. {mso-level-start-at:0;
  1009. mso-level-number-format:bullet;
  1010. mso-level-text:*;
  1011. mso-level-tab-stop:none;
  1012. mso-level-number-position:left;
  1013. margin-left:0in;
  1014. text-indent:0in;}
  1015. @list l1
  1016. {mso-list-id:73743402;
  1017. mso-list-type:hybrid;
  1018. mso-list-template-ids:-1171616076 -625997186 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
  1019. @list l1:level1
  1020. {mso-level-tab-stop:none;
  1021. mso-level-number-position:left;
  1022. text-indent:-.25in;
  1023. mso-bidi-font-family:"Times New Roman";}
  1024. @list l1:level2
  1025. {mso-level-number-format:alpha-lower;
  1026. mso-level-tab-stop:none;
  1027. mso-level-number-position:left;
  1028. text-indent:-.25in;
  1029. mso-bidi-font-family:"Times New Roman";}
  1030. @list l2
  1031. {mso-list-id:306319327;
  1032. mso-list-type:hybrid;
  1033. mso-list-template-ids:95300580 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
  1034. @list l2:level1
  1035. {mso-level-tab-stop:none;
  1036. mso-level-number-position:left;
  1037. text-indent:-.25in;
  1038. mso-bidi-font-family:"Times New Roman";}
  1039. @list l3
  1040. {mso-list-id:434520757;
  1041. mso-list-type:hybrid;
  1042. mso-list-template-ids:-1276236932 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
  1043. @list l3:level1
  1044. {mso-level-tab-stop:none;
  1045. mso-level-number-position:left;
  1046. text-indent:-.25in;
  1047. mso-bidi-font-family:"Times New Roman";}
  1048. @list l4
  1049. {mso-list-id:577519682;
  1050. mso-list-type:hybrid;
  1051. mso-list-template-ids:-681649560 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
  1052. @list l4:level1
  1053. {mso-level-number-format:bullet;
  1054. mso-level-text:\F0B7;
  1055. mso-level-tab-stop:none;
  1056. mso-level-number-position:left;
  1057. text-indent:-.25in;
  1058. font-family:Symbol;}
  1059. @list l4:level2
  1060. {mso-level-number-format:bullet;
  1061. mso-level-text:o;
  1062. mso-level-tab-stop:none;
  1063. mso-level-number-position:left;
  1064. text-indent:-.25in;
  1065. font-family:"Courier New";
  1066. mso-bidi-font-family:"Times New Roman";}
  1067. @list l4:level3
  1068. {mso-level-number-format:bullet;
  1069. mso-level-text:\F0A7;
  1070. mso-level-tab-stop:none;
  1071. mso-level-number-position:left;
  1072. text-indent:-.25in;
  1073. font-family:Wingdings;}
  1074. @list l4:level4
  1075. {mso-level-number-format:bullet;
  1076. mso-level-text:\F0B7;
  1077. mso-level-tab-stop:none;
  1078. mso-level-number-position:left;
  1079. text-indent:-.25in;
  1080. font-family:Symbol;}
  1081. @list l5
  1082. {mso-list-id:826633563;
  1083. mso-list-type:hybrid;
  1084. mso-list-template-ids:804055030 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
  1085. @list l5:level1
  1086. {mso-level-tab-stop:none;
  1087. mso-level-number-position:left;
  1088. text-indent:-.25in;
  1089. mso-bidi-font-family:"Times New Roman";}
  1090. @list l5:level2
  1091. {mso-level-number-format:alpha-lower;
  1092. mso-level-tab-stop:none;
  1093. mso-level-number-position:left;
  1094. text-indent:-.25in;
  1095. mso-bidi-font-family:"Times New Roman";}
  1096. @list l5:level3
  1097. {mso-level-number-format:roman-lower;
  1098. mso-level-tab-stop:none;
  1099. mso-level-number-position:right;
  1100. text-indent:-9.0pt;
  1101. mso-bidi-font-family:"Times New Roman";}
  1102. @list l6
  1103. {mso-list-id:1953508898;
  1104. mso-list-type:hybrid;
  1105. mso-list-template-ids:815068686 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
  1106. @list l6:level1
  1107. {mso-level-tab-stop:none;
  1108. mso-level-number-position:left;
  1109. text-indent:-.25in;
  1110. mso-bidi-font-family:"Times New Roman";}
  1111. @list l7
  1112. {mso-list-id:2078243896;
  1113. mso-list-type:hybrid;
  1114. mso-list-template-ids:-947758746 67698703 67698713 1271979950 775458348 67698713 67698715 67698703 67698713 67698715;}
  1115. @list l7:level1
  1116. {mso-level-tab-stop:none;
  1117. mso-level-number-position:left;
  1118. text-indent:-.25in;
  1119. mso-bidi-font-family:"Times New Roman";}
  1120. @list l7:level2
  1121. {mso-level-number-format:alpha-lower;
  1122. mso-level-tab-stop:none;
  1123. mso-level-number-position:left;
  1124. text-indent:-.25in;
  1125. mso-bidi-font-family:"Times New Roman";}
  1126. @list l7:level3
  1127. {mso-level-start-at:7;
  1128. mso-level-number-format:bullet;
  1129. mso-level-text:-;
  1130. mso-level-tab-stop:none;
  1131. mso-level-number-position:left;
  1132. margin-left:117.0pt;
  1133. text-indent:-.25in;
  1134. font-family:"Malgun Gothic","sans-serif";}
  1135. @list l7:level4
  1136. {mso-level-start-at:7;
  1137. mso-level-number-format:bullet;
  1138. mso-level-text:\F06E;
  1139. mso-level-tab-stop:none;
  1140. mso-level-number-position:left;
  1141. text-indent:-.25in;
  1142. font-family:Wingdings;
  1143. mso-fareast-font-family:"Times New Roman";}
  1144. @list l8
  1145. {mso-list-id:2110463054;
  1146. mso-list-type:hybrid;
  1147. mso-list-template-ids:-554926380 -1058607584 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
  1148. @list l8:level1
  1149. {mso-level-start-at:5;
  1150. mso-level-number-format:bullet;
  1151. mso-level-text:\F06E;
  1152. mso-level-tab-stop:none;
  1153. mso-level-number-position:left;
  1154. text-indent:-.25in;
  1155. font-family:Wingdings;
  1156. mso-fareast-font-family:"Times New Roman";
  1157. color:blue;}
  1158. @list l0:level1 lfo1
  1159. {mso-level-numbering:continue;
  1160. mso-level-text:\F0B7;
  1161. mso-level-tab-stop:none;
  1162. mso-level-number-position:left;
  1163. mso-level-legacy:yes;
  1164. mso-level-legacy-indent:9.0pt;
  1165. mso-level-legacy-space:0in;
  1166. margin-left:0in;
  1167. text-indent:0in;
  1168. mso-ansi-font-size:8.0pt;
  1169. font-family:Symbol;}
  1170. ol
  1171. {margin-bottom:0in;}
  1172. ul
  1173. {margin-bottom:0in;}
  1174. -->
  1175. </style>
  1176. <!--[if gte mso 10]>
  1177. <style>
  1178. /* Style Definitions */
  1179. table.MsoNormalTable
  1180. {mso-style-name:"Table Normal";
  1181. mso-tstyle-rowband-size:0;
  1182. mso-tstyle-colband-size:0;
  1183. mso-style-noshow:yes;
  1184. mso-style-priority:99;
  1185. mso-style-qformat:yes;
  1186. mso-style-parent:"";
  1187. mso-padding-alt:0in 5.4pt 0in 5.4pt;
  1188. mso-para-margin:0in;
  1189. mso-para-margin-bottom:.0001pt;
  1190. mso-pagination:widow-orphan;
  1191. font-size:10.0pt;
  1192. font-family:"Calibri","sans-serif";}
  1193. </style>
  1194. <![endif]--><!--[if gte mso 9]><xml>
  1195. <o:shapedefaults v:ext="edit" spidmax="2050"/>
  1196. </xml><![endif]--><!--[if gte mso 9]><xml>
  1197. <o:shapelayout v:ext="edit">
  1198. <o:idmap v:ext="edit" data="1"/>
  1199. </o:shapelayout></xml><![endif]-->
  1200. </head>
  1201. <body lang=EN-US link=blue vlink=purple style='tab-interval:.5in;text-justify-trim:
  1202. punctuation'>
  1203. <div class=WordSection1>
  1204. <p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
  1205. o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
  1206. stroked="f">
  1207. <v:stroke joinstyle="miter"/>
  1208. <v:formulas>
  1209. <v:f eqn="if lineDrawn pixelLineWidth 0"/>
  1210. <v:f eqn="sum @0 1 0"/>
  1211. <v:f eqn="sum 0 0 @1"/>
  1212. <v:f eqn="prod @2 1 2"/>
  1213. <v:f eqn="prod @3 21600 pixelWidth"/>
  1214. <v:f eqn="prod @3 21600 pixelHeight"/>
  1215. <v:f eqn="sum @0 0 1"/>
  1216. <v:f eqn="prod @6 1 2"/>
  1217. <v:f eqn="prod @7 21600 pixelWidth"/>
  1218. <v:f eqn="sum @8 21600 0"/>
  1219. <v:f eqn="prod @7 21600 pixelHeight"/>
  1220. <v:f eqn="sum @10 21600 0"/>
  1221. </v:formulas>
  1222. <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
  1223. <o:lock v:ext="edit" aspectratio="t"/>
  1224. </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:460.5pt;
  1225. height:91.5pt'>
  1226. <v:imagedata src="development-guide_files/image001.png" o:title=""/>
  1227. </v:shape><![endif]--><![if !vml]><img width=614 height=122
  1228. src="development-guide_files/image001.png" v:shapes="_x0000_i1025"><![endif]></p>
  1229. <p class=MsoSubtitle><a name="_Toc330902766">Development Guide</a></p>
  1230. <b><span style='font-size:26.0pt;mso-bidi-font-size:12.0pt;font-family:"Malgun Gothic","sans-serif";
  1231. mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
  1232. color:#009ACD;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:
  1233. AR-SA'><br clear=all style='page-break-before:always'>
  1234. </span></b>
  1235. <p class=MsoSubtitle><a name="_Toc330902767"><span style='font-size:26.0pt;
  1236. mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>Contents</span></a></p>
  1237. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  1238. "Times New Roman";color:#009ACD'><o:p>&nbsp;</o:p></span></p>
  1239. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><!--[if supportFields]><span
  1240. style='font-size:12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:
  1241. "Times New Roman";color:#009ACD'><span style='mso-element:field-begin'></span><span
  1242. style='mso-spacerun:yes'> </span>TOC \o &quot;1-2&quot; \h \z \u <span
  1243. style='mso-element:field-separator'></span></span><![endif]--><span
  1244. style='font-size:12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:
  1245. "Times New Roman";color:#009ACD'><span style='mso-no-proof:yes'><a
  1246. href="#_Toc330902766"><span style='color:#009ACD;text-decoration:none;
  1247. text-underline:none'>Development Guide<span style='display:none;mso-hide:screen'><span
  1248. style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1249. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1250. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1251. _Toc330902766 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1252. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1253. text-underline:none'>1<!--[if gte mso 9]><xml>
  1254. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600360000000000</w:data>
  1255. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1256. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1257. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></span></p>
  1258. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1259. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1260. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902767"><span
  1261. style='color:#009ACD;text-decoration:none;text-underline:none'>Contents<span
  1262. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1263. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1264. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1265. _Toc330902767 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1266. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1267. text-underline:none'>2<!--[if gte mso 9]><xml>
  1268. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600370000000000</w:data>
  1269. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1270. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1271. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1272. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1273. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1274. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902768"><span
  1275. style='color:#009ACD;text-decoration:none;text-underline:none'>Overview<span
  1276. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>.. </span></span></span><!--[if supportFields]><span
  1277. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1278. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1279. _Toc330902768 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1280. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1281. text-underline:none'>3<!--[if gte mso 9]><xml>
  1282. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600380000000000</w:data>
  1283. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1284. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1285. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1286. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1287. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1288. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902769"><span
  1289. style='color:#009ACD;text-decoration:none;text-underline:none'>Compiling
  1290. framework<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1291. 1 dotted'>. </span></span></span><!--[if supportFields]><span style='color:
  1292. #009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1293. style='mso-element:field-begin'></span> PAGEREF _Toc330902769 \h <span
  1294. style='mso-element:field-separator'></span></span><![endif]--><span
  1295. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1296. text-underline:none'>5<!--[if gte mso 9]><xml>
  1297. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600390000000000</w:data>
  1298. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1299. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1300. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1301. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1302. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1303. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902770"><span
  1304. style='color:#009ACD;text-decoration:none;text-underline:none'>Assets and
  1305. authoring<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1306. 1 dotted'>. </span></span></span><!--[if supportFields]><span style='color:
  1307. #009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1308. style='mso-element:field-begin'></span> PAGEREF _Toc330902770 \h <span
  1309. style='mso-element:field-separator'></span></span><![endif]--><span
  1310. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1311. text-underline:none'>12<!--[if gte mso 9]><xml>
  1312. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700300000000000</w:data>
  1313. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1314. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1315. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1316. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1317. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1318. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902771"><span
  1319. style='color:#009ACD;text-decoration:none;text-underline:none'>Game<span
  1320. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1321. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1322. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1323. _Toc330902771 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1324. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1325. text-underline:none'>15<!--[if gte mso 9]><xml>
  1326. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700310000000000</w:data>
  1327. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1328. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1329. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1330. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1331. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1332. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902772"><span
  1333. style='color:#009ACD;text-decoration:none;text-underline:none'>Input and
  1334. sensors<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1335. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1336. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1337. style='mso-element:field-begin'></span> PAGEREF _Toc330902772 \h <span
  1338. style='mso-element:field-separator'></span></span><![endif]--><span
  1339. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1340. text-underline:none'>18<!--[if gte mso 9]><xml>
  1341. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700320000000000</w:data>
  1342. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1343. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1344. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1345. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1346. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1347. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902773"><span
  1348. style='color:#009ACD;text-decoration:none;text-underline:none'>Sprites and
  1349. fonts<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1350. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1351. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1352. style='mso-element:field-begin'></span> PAGEREF _Toc330902773 \h <span
  1353. style='mso-element:field-separator'></span></span><![endif]--><span
  1354. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1355. text-underline:none'>20<!--[if gte mso 9]><xml>
  1356. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700330000000000</w:data>
  1357. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1358. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1359. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1360. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1361. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1362. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902774"><span
  1363. style='color:#009ACD;text-decoration:none;text-underline:none'>Scene and nodes<span
  1364. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1365. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1366. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1367. _Toc330902774 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1368. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1369. text-underline:none'>22<!--[if gte mso 9]><xml>
  1370. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700340000000000</w:data>
  1371. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1372. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1373. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1374. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1375. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1376. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902775"><span
  1377. style='color:#009ACD;text-decoration:none;text-underline:none'>Model and mesh<span
  1378. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1379. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1380. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1381. _Toc330902775 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1382. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1383. text-underline:none'>28<!--[if gte mso 9]><xml>
  1384. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700350000000000</w:data>
  1385. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1386. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1387. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1388. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1389. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1390. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902776"><span
  1391. style='color:#009ACD;text-decoration:none;text-underline:none'>Lights<span
  1392. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1393. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1394. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1395. _Toc330902776 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1396. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1397. text-underline:none'>30<!--[if gte mso 9]><xml>
  1398. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700360000000000</w:data>
  1399. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1400. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1401. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1402. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1403. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1404. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902777"><span
  1405. style='color:#009ACD;text-decoration:none;text-underline:none'>Materials and
  1406. shaders<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1407. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1408. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1409. style='mso-element:field-begin'></span> PAGEREF _Toc330902777 \h <span
  1410. style='mso-element:field-separator'></span></span><![endif]--><span
  1411. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1412. text-underline:none'>33<!--[if gte mso 9]><xml>
  1413. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700370000000000</w:data>
  1414. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1415. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1416. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1417. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1418. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1419. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902778"><span
  1420. style='color:#009ACD;text-decoration:none;text-underline:none'>Particle
  1421. emitters<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1422. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1423. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1424. style='mso-element:field-begin'></span> PAGEREF _Toc330902778 \h <span
  1425. style='mso-element:field-separator'></span></span><![endif]--><span
  1426. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1427. text-underline:none'>37<!--[if gte mso 9]><xml>
  1428. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700380000000000</w:data>
  1429. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1430. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1431. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1432. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1433. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1434. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902779"><span
  1435. style='color:#009ACD;text-decoration:none;text-underline:none'>Physics<span
  1436. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1437. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1438. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1439. _Toc330902779 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1440. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1441. text-underline:none'>39<!--[if gte mso 9]><xml>
  1442. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700390000000000</w:data>
  1443. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1444. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1445. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1446. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1447. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1448. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902780"><span
  1449. style='color:#009ACD;text-decoration:none;text-underline:none'>Animation<span
  1450. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1451. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1452. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1453. _Toc330902780 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1454. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1455. text-underline:none'>48<!--[if gte mso 9]><xml>
  1456. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800300000000000</w:data>
  1457. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1458. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1459. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1460. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1461. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1462. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902781"><span
  1463. style='color:#009ACD;text-decoration:none;text-underline:none'>Audio<span
  1464. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1465. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1466. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1467. _Toc330902781 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1468. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1469. text-underline:none'>53<!--[if gte mso 9]><xml>
  1470. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800310000000000</w:data>
  1471. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1472. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1473. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1474. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1475. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1476. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902782"><span
  1477. style='color:#009ACD;text-decoration:none;text-underline:none'>User Interface<span
  1478. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1479. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1480. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1481. _Toc330902782 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1482. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1483. text-underline:none'>55<!--[if gte mso 9]><xml>
  1484. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800320000000000</w:data>
  1485. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1486. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1487. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1488. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1489. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1490. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902783"><span
  1491. style='color:#009ACD;text-decoration:none;text-underline:none'>Scripting<span
  1492. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1493. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1494. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1495. _Toc330902783 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1496. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1497. text-underline:none'>65<!--[if gte mso 9]><xml>
  1498. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800330000000000</w:data>
  1499. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1500. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1501. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1502. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1503. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1504. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902784"><span
  1505. style='color:#009ACD;text-decoration:none;text-underline:none'>License<span
  1506. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1507. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1508. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1509. _Toc330902784 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1510. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1511. text-underline:none'>71<!--[if gte mso 9]><xml>
  1512. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800340000000000</w:data>
  1513. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1514. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1515. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1516. <p class=link><!--[if supportFields]><span style='font-size:12.0pt;mso-hansi-font-family:
  1517. "Malgun Gothic";mso-bidi-font-family:"Times New Roman";color:#009ACD'><span
  1518. style='mso-element:field-end'></span></span><![endif]--><span style='mso-bidi-font-size:
  1519. 12.0pt;mso-bidi-font-family:"Times New Roman";color:#009ACD'><span
  1520. style='mso-tab-count:7'>                                                                   </span><span
  1521. style='mso-spacerun:yes'> </span><span style='mso-tab-count:4'>                                     </span><o:p></o:p></span></p>
  1522. <p class=link><a name=d3e3a1310></a><span style='mso-bidi-font-size:12.0pt;
  1523. mso-bidi-font-family:"Times New Roman";color:#00C2FE'><o:p>&nbsp;</o:p></span></p>
  1524. <h2><a name="_Toc330902768">Overview</a></h2>
  1525. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1526. gameplay framework is an open-source, cross-platform gaming framework that is
  1527. designed to make it easy to learn to write 3-D mobile and desktop games using
  1528. native C++. In this guide, we cover a top-down approach to teaching you the
  1529. gameplay library, tools, and all the major parts of the APIs that are included
  1530. in the framework. This guide covers a set of the C++ classes that you can use
  1531. to write your games.<o:p></o:p></span></p>
  1532. <h3>Design goals and considerations</h3>
  1533. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  1534. creating the gameplay framework, the goal was not only to focus on creating a
  1535. high performance native C++ game framework, but also on a clean, simple, and
  1536. elegant architecture. The framework uses a minimal set of cross-platform
  1537. external dependencies and tries to take a minimalist approach to designing the
  1538. classes. This approach allows you to learn from the classes in the library and
  1539. extend the framework to build your own game engine or tools. The framework is a
  1540. good starting block for learning how to write 3-D cross-platform mobile and
  1541. desktop games, allowing you to spend more time designing your game.<o:p></o:p></span></p>
  1542. <h3>Why write another game engine?</h3>
  1543. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>We
  1544. actually hope it will be considered more of a gaming framework; however, in
  1545. essence, it is really still just the core components of a game engine. There
  1546. are several reasons why the gameplay framework was developed. <o:p></o:p></span></p>
  1547. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1548. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>First,
  1549. most modern 3-D game engines, while sometimes free or cheap, are closed source.
  1550. Additionally, they usually have licensing fees. The gameplay framework is free,
  1551. open-source software under the Apache 2.0 license. We want more people to learn
  1552. about the fact that cross-platform is a reality and building a good base lets
  1553. you move forward to writing game titles.<o:p></o:p></span></p>
  1554. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1555. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Secondly,
  1556. a game engine is not only about rendering. Yes, it</span><span
  1557. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  1558. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  1559. "Times New Roman"'>s a huge part, but equally important are other aspects of
  1560. game engines, such as audio, physics, animation, UI forms, particle emitters,
  1561. scripting, and math. Searching on the web and trying to find information on how
  1562. to fit these things into your game engine, or games, will likely scatter you
  1563. across many different places, with the chance of gaps in your learning. This
  1564. framework will hopefully bring it all together for you.<o:p></o:p></span></p>
  1565. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1566. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Lastly,
  1567. mobile is hot! The gameplay framework will have a lot of emphasis on gaming on
  1568. mobile devices. Today, mobile gaming is the largest growing sector of the game
  1569. industry. Additionally, we still provide support for desktop platforms for both
  1570. tooling and gaming. However, we think more focus should be on mobile gaming and
  1571. learning how to write games that can easily target the cross-platform mobile
  1572. sector. <o:p></o:p></span></p>
  1573. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1574. <h2><a name="_Toc330902769">Compiling framework</a></h2>
  1575. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  1576. build the gameplay library, tools, and samples as well as write your own games,
  1577. you will have to install and use the platform specific tools listed below.
  1578. These are the supported development environments for each specific operating
  1579. system as a target platform.<o:p></o:p></span></p>
  1580. <p class=MsoNormal><a name=d4e13a1310></a><span style='font-size:12.0pt;
  1581. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1582. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1583. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1584. <thead>
  1585. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:20.45pt'>
  1586. <td width=205 valign=top style='width:153.45pt;background:whitesmoke;
  1587. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1588. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1589. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1590. mso-bidi-font-weight:normal'>Desktop OS<o:p></o:p></span></p>
  1591. </td>
  1592. <td width=210 valign=top style='width:157.45pt;background:whitesmoke;
  1593. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1594. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1595. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1596. mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
  1597. </td>
  1598. <td width=221 valign=top style='width:165.4pt;background:whitesmoke;
  1599. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1600. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1601. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1602. mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
  1603. </td>
  1604. </tr>
  1605. </thead>
  1606. <tr style='mso-yfti-irow:1;height:20.45pt'>
  1607. <td width=205 valign=top style='width:153.45pt;background:#E6E6E6;padding:
  1608. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1609. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1610. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Microsoft
  1611. Windows 7<o:p></o:p></span></p>
  1612. </td>
  1613. <td width=210 valign=top style='width:157.45pt;background:#E6E6E6;padding:
  1614. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1615. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1616. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Visual
  1617. Studio 2010<o:p></o:p></span></p>
  1618. </td>
  1619. <td width=221 valign=top style='width:165.4pt;background:#E6E6E6;padding:
  1620. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1621. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1622. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1623. 7<o:p></o:p></span></p>
  1624. </td>
  1625. </tr>
  1626. <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes;height:20.45pt'>
  1627. <td width=205 valign=top style='width:153.45pt;background:whitesmoke;
  1628. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1629. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1630. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Apple
  1631. Mac OS X<o:p></o:p></span></p>
  1632. </td>
  1633. <td width=210 valign=top style='width:157.45pt;background:whitesmoke;
  1634. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1635. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1636. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1637. 4.3.2<o:p></o:p></span></p>
  1638. </td>
  1639. <td width=221 valign=top style='width:165.4pt;background:whitesmoke;
  1640. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1641. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1642. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Mac
  1643. OS X<o:p></o:p></span></p>
  1644. </td>
  1645. </tr>
  1646. </table>
  1647. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  1648. text-autospace:ideograph-numeric ideograph-other'><a name=d4e85a1310></a><span
  1649. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1650. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1651. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1652. <thead>
  1653. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  1654. <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;
  1655. padding:0in 5.4pt 0in 5.4pt'>
  1656. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1657. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1658. mso-bidi-font-weight:normal'>Mobile OS<o:p></o:p></span></p>
  1659. </td>
  1660. <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
  1661. 0in 5.4pt 0in 5.4pt'>
  1662. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1663. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1664. mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
  1665. </td>
  1666. <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;
  1667. padding:0in 5.4pt 0in 5.4pt'>
  1668. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1669. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1670. mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
  1671. </td>
  1672. </tr>
  1673. </thead>
  1674. <tr style='mso-yfti-irow:1'>
  1675. <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
  1676. padding:0in 5.4pt 0in 5.4pt'>
  1677. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1678. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1679. PlayBook OS 2.0<o:p></o:p></span></p>
  1680. </td>
  1681. <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
  1682. padding:0in 5.4pt 0in 5.4pt'>
  1683. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1684. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1685. Native SDK 2.0<o:p></o:p></span></p>
  1686. </td>
  1687. <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
  1688. padding:0in 5.4pt 0in 5.4pt'>
  1689. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1690. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1691. 7, Mac OS X<o:p></o:p></span></p>
  1692. </td>
  1693. </tr>
  1694. <tr style='mso-yfti-irow:2'>
  1695. <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;padding:
  1696. 0in 5.4pt 0in 5.4pt'>
  1697. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1698. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  1699. 2.3<o:p></o:p></span></p>
  1700. </td>
  1701. <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
  1702. 0in 5.4pt 0in 5.4pt'>
  1703. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1704. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  1705. NDK 7<o:p></o:p></span></p>
  1706. </td>
  1707. <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;padding:
  1708. 0in 5.4pt 0in 5.4pt'>
  1709. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1710. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1711. 7, Mac OS X<o:p></o:p></span></p>
  1712. </td>
  1713. </tr>
  1714. <tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes'>
  1715. <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
  1716. padding:0in 5.4pt 0in 5.4pt'>
  1717. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1718. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>iOS
  1719. 5.1<o:p></o:p></span></p>
  1720. </td>
  1721. <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
  1722. padding:0in 5.4pt 0in 5.4pt'>
  1723. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1724. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1725. 4.3.2<o:p></o:p></span></p>
  1726. </td>
  1727. <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
  1728. padding:0in 5.4pt 0in 5.4pt'>
  1729. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1730. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Mac
  1731. OS X<o:p></o:p></span></p>
  1732. </td>
  1733. </tr>
  1734. </table>
  1735. <h3>Project repository</h3>
  1736. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Included
  1737. in the project repository are the following notable folder and files: <o:p></o:p></span></p>
  1738. <p class=MsoNormal><a name=d4e186a1310></a><span style='font-size:12.0pt;
  1739. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1740. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1741. style='margin-left:.9pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1742. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  1743. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1744. 0in 5.4pt 0in 5.4pt'>
  1745. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1746. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1747. mso-bidi-font-weight:normal'>Folder/Files</span><span style='mso-bidi-font-size:
  1748. 12.0pt;mso-bidi-font-family:"Times New Roman";font-weight:normal'><o:p></o:p></span></p>
  1749. </td>
  1750. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1751. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1752. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1753. mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
  1754. </td>
  1755. </tr>
  1756. <tr style='mso-yfti-irow:1'>
  1757. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1758. padding:0in 5.4pt 0in 5.4pt'>
  1759. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/bin<o:p></o:p></span></p>
  1760. </td>
  1761. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1762. 0in 5.4pt 0in 5.4pt'>
  1763. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Precompiled
  1764. binary tools<o:p></o:p></span></p>
  1765. </td>
  1766. </tr>
  1767. <tr style='mso-yfti-irow:2'>
  1768. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1769. 0in 5.4pt 0in 5.4pt'>
  1770. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/external-deps
  1771. <o:p></o:p></span></p>
  1772. </td>
  1773. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1774. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>External
  1775. dependency libraries<o:p></o:p></span></p>
  1776. </td>
  1777. </tr>
  1778. <tr style='mso-yfti-irow:3'>
  1779. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1780. padding:0in 5.4pt 0in 5.4pt'>
  1781. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay
  1782. <o:p></o:p></span></p>
  1783. </td>
  1784. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1785. 0in 5.4pt 0in 5.4pt'>
  1786. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1787. gameplay library<o:p></o:p></span></p>
  1788. </td>
  1789. </tr>
  1790. <tr style='mso-yfti-irow:4'>
  1791. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1792. 0in 5.4pt 0in 5.4pt'>
  1793. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-api
  1794. <o:p></o:p></span></p>
  1795. </td>
  1796. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1797. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Doxygen
  1798. API Reference<o:p></o:p></span></p>
  1799. </td>
  1800. </tr>
  1801. <tr style='mso-yfti-irow:5'>
  1802. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1803. padding:0in 5.4pt 0in 5.4pt'>
  1804. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-docs
  1805. <o:p></o:p></span></p>
  1806. </td>
  1807. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1808. 0in 5.4pt 0in 5.4pt'>
  1809. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Documentation
  1810. guides and tutorials<o:p></o:p></span></p>
  1811. </td>
  1812. </tr>
  1813. <tr style='mso-yfti-irow:6'>
  1814. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1815. 0in 5.4pt 0in 5.4pt'>
  1816. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-encoder
  1817. <o:p></o:p></span></p>
  1818. </td>
  1819. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1820. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  1821. asset/content encoding tool<o:p></o:p></span></p>
  1822. </td>
  1823. </tr>
  1824. <tr style='mso-yfti-irow:7;page-break-inside:avoid'>
  1825. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1826. padding:0in 5.4pt 0in 5.4pt'>
  1827. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-luagen<o:p></o:p></span></p>
  1828. </td>
  1829. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1830. 0in 5.4pt 0in 5.4pt'>
  1831. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Lua
  1832. script bindings generator tool<o:p></o:p></span></p>
  1833. </td>
  1834. </tr>
  1835. <tr style='mso-yfti-irow:8;page-break-inside:avoid'>
  1836. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1837. 0in 5.4pt 0in 5.4pt'>
  1838. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-template<o:p></o:p></span></p>
  1839. </td>
  1840. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1841. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  1842. samples template project files<o:p></o:p></span></p>
  1843. </td>
  1844. </tr>
  1845. <tr style='mso-yfti-irow:9'>
  1846. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1847. padding:0in 5.4pt 0in 5.4pt'>
  1848. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-samples<o:p></o:p></span></p>
  1849. </td>
  1850. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1851. 0in 5.4pt 0in 5.4pt'>
  1852. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  1853. samples<o:p></o:p></span></p>
  1854. </td>
  1855. </tr>
  1856. <tr style='mso-yfti-irow:10'>
  1857. <td width=234 valign=top style='width:175.5pt;background:#D9D9D9;padding:
  1858. 0in 5.4pt 0in 5.4pt'>
  1859. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>gameplay.xcworkspace<o:p></o:p></span></p>
  1860. </td>
  1861. <td width=403 valign=top style='width:4.2in;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
  1862. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1863. workspace<o:p></o:p></span></p>
  1864. </td>
  1865. </tr>
  1866. <tr style='mso-yfti-irow:11'>
  1867. <td width=234 valign=top style='width:175.5pt;background:#F2F2F2;padding:
  1868. 0in 5.4pt 0in 5.4pt'>
  1869. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>gameplay.sln<o:p></o:p></span></p>
  1870. </td>
  1871. <td width=403 valign=top style='width:4.2in;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
  1872. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Microsoft
  1873. Visual Studio solution<o:p></o:p></span></p>
  1874. </td>
  1875. </tr>
  1876. <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
  1877. <td width=234 valign=top style='width:175.5pt;background:#D9D9D9;padding:
  1878. 0in 5.4pt 0in 5.4pt'>
  1879. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>gameplay-newproject.bat/.sh<o:p></o:p></span></p>
  1880. </td>
  1881. <td width=403 valign=top style='width:4.2in;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
  1882. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>New
  1883. cross-platform project script<o:p></o:p></span></p>
  1884. </td>
  1885. </tr>
  1886. </table>
  1887. <h3>Getting started on desktop</h3>
  1888. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1889. quickest way to get started using the gameplay framework and tools is to simply
  1890. start working in one of the desktop environments. You could use Microsoft
  1891. Visual Studio 2010 Express, Professional on a Windows 7 operating system, or
  1892. Xcode 4.3.2 on an Apple Mac OS X operating system. Then just open either the
  1893. Microsoft Visual Studio solution or Xcode workspace, and build and run the
  1894. projects. These solutions/workspaces are set up by default to build all the
  1895. projects needed and to run the samples you have selected as active.<o:p></o:p></span></p>
  1896. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1897. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Voila!
  1898. You now have one of several simple, interactive samples running on your desktop
  1899. environment, which you can explore and become more familiar with.<o:p></o:p></span></p>
  1900. <h3>Game samples</h3>
  1901. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1902. gameplay-docs folder contains additional tutorial documentation for our
  1903. gameplay-samples. These are intended to go into more detail for designing and
  1904. coding games written using the framework. They all have a good starting point
  1905. but have intentionally been left incomplete. This gives you the opportunity to
  1906. change the samples, and complete them to make them more fun to interact and
  1907. play with. They provide good building blocks and are a basis for you to explore
  1908. various features in the framework. You can utilize code snippets from the
  1909. samples to help speed up the development cycle in your own games.<o:p></o:p></span></p>
  1910. <h3>API reference</h3>
  1911. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>We
  1912. firmly believe in making a very intuitive set of APIs that are as
  1913. straight-forward and as consistent as possible. However, all of the classes in
  1914. the framework have been well documented with Doxygen formatting. The classes
  1915. will be updated and improved iteratively throughout each release. This is to
  1916. help you learn about what classes or sets of functions can be used and the
  1917. recommended practices in using them.<o:p></o:p></span></p>
  1918. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1919. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  1920. should consider reading the latest versions of the API reference from the
  1921. pre-generated HTML Doxygen API documentation in the gameplay-api folder. This
  1922. will give you a deeper understanding of the C++ gameplay framework.<o:p></o:p></span></p>
  1923. <h3>Getting started on mobile</h3>
  1924. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Now
  1925. that you are up and running on one of the desktop environments, we recommend
  1926. you take this seriously and go mobile! In today</span><span style='font-size:
  1927. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  1928. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s mobile game
  1929. market, cross-platform development is a reality. It is quite simple and easy to
  1930. use the gameplay framework to target a wider device audience. Start by
  1931. downloading the native development kit for one of the various supported mobile
  1932. operating system targets or set them all up. <o:p></o:p></span></p>
  1933. <h3>Mobile setup instructions</h3>
  1934. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Listed
  1935. below are the basic setup instructions for downloading and installing the
  1936. supported mobile platform and development environments for gameplay.<o:p></o:p></span></p>
  1937. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1938. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  1939. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1940. Native SDK 2.0/10 Beta (PlayBook tablets and BlackBerry 10 devices)</span></b><span
  1941. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  1942. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  1943. mso-list:l6 level1 lfo2'><a name=d4e432a1310></a><![if !supportLists]><span
  1944. style='mso-bidi-font-size:12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span
  1945. style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
  1946. </span></span></span><![endif]><u><span style='font-size:12.0pt;mso-bidi-font-family:
  1947. "Times New Roman";color:blue'><a
  1948. href="https://bdsc.webapps.blackberry.com/native/download/">Download</a> </span></u><span
  1949. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  1950. install the BlackBerry Native SDK 2.0 or BlackBerry 10 Beta<span
  1951. style='mso-tab-count:1'>   </span><o:p></o:p></span></p>
  1952. <ol style='margin-top:0in' start=2 type=1>
  1953. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1954. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  1955. the QNX Momentics IDE (Eclipse CDT based) and click <br>
  1956. <b style='mso-bidi-font-weight:normal'>File &gt; Import &gt; Import
  1957. Existing Projects</b>.<span style='mso-tab-count:2'>                   </span><o:p></o:p></span></li>
  1958. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1959. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Import
  1960. all the gameplay projects by selecting the repository project folder.<span
  1961. style='mso-tab-count:2'>             </span><o:p></o:p></span></li>
  1962. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1963. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Set
  1964. the active configuration to one of the Device-XXX or Simulator-XXX
  1965. profiles.<o:p></o:p></span></li>
  1966. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1967. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  1968. and run any of the game samples.<o:p></o:p></span></li>
  1969. </ol>
  1970. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  1971. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  1972. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  1973. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  1974. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Apple Xcode
  1975. 4.3.2 (iPad tablets and iPhone devices)</span></b><a name=d4e478a1310></a><span
  1976. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  1977. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  1978. mso-list:l7 level1 lfo3'><![if !supportLists]><span style='mso-bidi-font-size:
  1979. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  1980. Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><u><span
  1981. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";color:blue'><a
  1982. href="https://developer.apple.com/xcode/">Download</a> </span></u><span
  1983. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  1984. install Apple Xcode 4.<o:p></o:p></span></p>
  1985. <ol style='margin-top:0in' start=2 type=1>
  1986. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  1987. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  1988. the <b style='mso-bidi-font-weight:normal'>gameplay.xc</b> workspace.<o:p></o:p></span></li>
  1989. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  1990. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
  1991. the active configuration to <b style='mso-bidi-font-weight:normal'>iOS
  1992. Device</b>, <b style='mso-bidi-font-weight:normal'>iPhone Simulator,</b>
  1993. or <b style='mso-bidi-font-weight:normal'>iPad Simulator</b>.<o:p></o:p></span></li>
  1994. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  1995. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  1996. and run any of the game samples.<o:p></o:p></span></li>
  1997. </ol>
  1998. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  1999. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2000. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  2001. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android NDK 7
  2002. (Android tablets and devices)</span></b><a name=d4e517a1310></a><span
  2003. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2004. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  2005. mso-list:l5 level1 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2006. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2007. Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><u><span
  2008. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";color:blue'><a
  2009. href="http://developer.android.com/sdk/ndk/index.html">Download</a> </span></u><span
  2010. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  2011. install Android NDK 7, Android SDK, Apache Ant, and GNU Make for Cygwin. <a
  2012. name=d4e533a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2013. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2014. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2015. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2016. Ignore'>a.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2017. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
  2018. the </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2019. color:blue'><a href="http://developer.android.com/sdk/index.html">Android SDK</a></span></u><span
  2020. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  2021. <ol style='margin-top:0in' start=1 type=1>
  2022. <ol style='margin-top:0in' start=2 type=a>
  2023. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2024. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
  2025. sure &lt;android-sdk-path&gt;/tools and &lt;android-sdk-path&gt;/platform-tools
  2026. are added to PATH. <o:p></o:p></span></li>
  2027. </ol>
  2028. </ol>
  2029. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2030. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2031. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2032. Ignore'>c.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2033. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
  2034. the </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2035. color:blue'><a href="http://developer.android.com/sdk/ndk/index.html">Android
  2036. NDK</a> </span></u><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2037. "Times New Roman"'>and </span><u><span style='font-size:12.0pt;mso-bidi-font-family:
  2038. "Times New Roman";color:blue'><a
  2039. href="http://developer.android.com/sdk/ndk/overview.html">follow these
  2040. instructions</a></span></u><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2041. "Times New Roman"'>. <o:p></o:p></span></p>
  2042. <ol style='margin-top:0in' start=1 type=1>
  2043. <ol style='margin-top:0in' start=4 type=a>
  2044. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2045. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
  2046. sure &lt;android-ndk-path&gt; is added to PATH. <o:p></o:p></span></li>
  2047. </ol>
  2048. </ol>
  2049. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2050. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2051. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2052. Ignore'>e.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2053. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
  2054. </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2055. color:blue'><a href="http://ant.apache.org/manual/install.html">Apache Ant</a></span></u><span
  2056. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  2057. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2058. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2059. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2060. Ignore'>f.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  2061. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  2062. mso-bidi-font-family:"Times New Roman"'>Make sure &lt;ant-path&gt;/bin is added
  2063. the PATH.<o:p></o:p></span></p>
  2064. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2065. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2066. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2067. Ignore'>g.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2068. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
  2069. </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2070. color:blue'><a href="http://cygwin.com/install.html">Cygwin</a> </span></u><span
  2071. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  2072. select and add the package <b style='mso-bidi-font-weight:normal'>make: The GNU
  2073. version of the 'make' utility</b> during installation. <o:p></o:p></span></p>
  2074. <ol style='margin-top:0in' start=1 type=1>
  2075. <ol style='margin-top:0in' start=8 type=a>
  2076. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2077. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Rename
  2078. <b style='mso-bidi-font-weight:normal'>awk.exe</b> to something else
  2079. (awk_.exe for example) in &lt;android-ndk-path&gt;/prebuilt/windows/bin.
  2080. This is to prevent the Android build system from being confused by the
  2081. cygwin's awk.<span style='mso-tab-count:1'> </span><o:p></o:p></span></li>
  2082. </ol>
  2083. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2084. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  2085. the gameplay library using following steps: <a name=d4e593a1310></a><span
  2086. style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
  2087. <ol style='margin-top:0in' start=1 type=a>
  2088. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2089. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  2090. the Cygwin terminal. <o:p></o:p></span></li>
  2091. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2092. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
  2093. to the <b style='mso-bidi-font-weight:normal'>&lt;gameplay-root&gt;/gameplay/android</b>
  2094. folder. <o:p></o:p></span></li>
  2095. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2096. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2097. the following command to generate the needed files to build the project:<br>
  2098. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2099. 12.0pt;font-family:"Courier New"'>&gt; android.bat update project -t 1 -p
  2100. . -s</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2101. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2102. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2103. the following command to build the gameplay library:<o:p></o:p></span></li>
  2104. </ol>
  2105. </ol>
  2106. <p class=MsoNormal style='margin-left:1.0in'><b style='mso-bidi-font-weight:
  2107. normal'><span style='font-size:12.0pt;font-family:"Courier New"'>&gt; ndk-build</span></b><span
  2108. style='font-size:12.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
  2109. <p class=MsoNormal style='text-indent:1.0in'><span style='font-size:12.0pt;
  2110. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2111. <ol style='margin-top:0in' start=3 type=1>
  2112. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2113. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  2114. a sample game(s) with following steps: <a name=d4e619a1310></a><span
  2115. style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
  2116. <ol style='margin-top:0in' start=1 type=a>
  2117. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2118. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  2119. the Cygwin terminal. <o:p></o:p></span></li>
  2120. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2121. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
  2122. to the:<o:p></o:p></span></li>
  2123. </ol>
  2124. </ol>
  2125. <p class=MsoNormal style='margin-left:1.0in;text-align:justify'><b
  2126. style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:12.0pt;
  2127. mso-bidi-font-family:"Times New Roman"'>&lt;gameplay-root/gameplay-samples/sampleXX-XXXXX&gt;/android</span></b><span
  2128. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> folder.<o:p></o:p></span></p>
  2129. <ol style='margin-top:0in' start=3 type=1>
  2130. <ol style='margin-top:0in' start=3 type=a>
  2131. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2132. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2133. the following command to generate the needed files to build the project:<br>
  2134. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2135. 12.0pt;font-family:"Courier New"'>&gt; android.bat update project -t 1 -p
  2136. . -s</span></b><span style='font-size:12.0pt;font-family:"Courier New"'> </span><span
  2137. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2138. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2139. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2140. the following command to build the gameplay sample:<br>
  2141. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2142. 12.0pt;font-family:"Courier New"'>&gt; ndk-build </span></b><span
  2143. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2144. </ol>
  2145. </ol>
  2146. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2147. <h4 style='margin-left:.5in'>Android NDK permissions errors:</h4>
  2148. <p class=MsoNormal style='margin-left:.5in'><span style='font-size:12.0pt;
  2149. mso-bidi-font-family:"Times New Roman"'>If you see an error like </span><span
  2150. style='font-size:12.0pt;font-family:"Courier New"'>&quot;./obj/local/armeabi/libpng.a:
  2151. No such file: Permission denied&quot;,</span><span style='font-size:12.0pt;
  2152. mso-bidi-font-family:"Times New Roman"'> make sure that the </span><span
  2153. style='font-size:12.0pt;font-family:"Courier New"'>&quot;*.a&quot; </span><span
  2154. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>files have read
  2155. permission by running:<o:p></o:p></span></p>
  2156. <p class=MsoNormal style='margin-left:.5in'><b style='mso-bidi-font-weight:
  2157. normal'><span style='font-size:12.0pt;font-family:"Courier New"'>&gt; chmod +r
  2158. obj/local/armeabi/*.a</span></b><b style='mso-bidi-font-weight:normal'><span
  2159. style='font-size:12.0pt;mso-bidi-font-family:"Courier New"'><o:p></o:p></span></b></p>
  2160. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2161. <ol style='margin-top:0in' start=4 type=1>
  2162. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2163. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Connect
  2164. the device and run the following command in the Cygwin terminal to deploy
  2165. the game:<br>
  2166. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  2167. font-family:"Courier New"'>&gt; ant debug install</span></b><span
  2168. style='font-size:12.0pt;font-family:"Courier New"'> </span><span
  2169. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2170. </ol>
  2171. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2172. <h3>Mobile platform considerations</h3>
  2173. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ensure
  2174. that you test early on the physical devices. Depending on the type of game you
  2175. want to write and on your design ideas, you</span><span style='font-size:12.0pt;
  2176. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2177. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ll want to get
  2178. some idea of what type of performance you</span><span style='font-size:12.0pt;
  2179. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2180. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ll get with the
  2181. game plan and prototypes you are working towards. Be careful and do not to rely
  2182. on desktop and mobile simulators as an indicator of performance or mobile
  2183. device capabilities.<o:p></o:p></span></p>
  2184. <h3>Game consoles and Linux distributions</h3>
  2185. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2186. gameplay framework can be extended to target game consoles and custom Linux distributions.
  2187. Currently there is no support for these systems, however<o:p></o:p></span></p>
  2188. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Linux
  2189. support will be coming soon.<o:p></o:p></span></p>
  2190. <h3>Creating new projects</h3>
  2191. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  2192. create a new cross-platform game project, run the gameplay-newproject.bat/.sh
  2193. script. The following is an example of running the gameplay-newproject.bat
  2194. script:<o:p></o:p></span></p>
  2195. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2196. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>1. Enter
  2197. a name for the new project.<o:p></o:p></span></p>
  2198. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2199. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2200. style='mso-spacerun:yes'>   </span>This name will be given to the project<o:p></o:p></span></p>
  2201. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2202. style='mso-spacerun:yes'>   </span>executable and a folder with this name<o:p></o:p></span></p>
  2203. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2204. style='mso-spacerun:yes'>   </span>will be created to store all project files.<o:p></o:p></span></p>
  2205. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2206. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Project
  2207. name: test<o:p></o:p></span></p>
  2208. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2209. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2210. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>2. Enter
  2211. a game title.<o:p></o:p></span></p>
  2212. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2213. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2214. style='mso-spacerun:yes'>   </span>On some platforms, this title is used to<o:p></o:p></span></p>
  2215. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2216. style='mso-spacerun:yes'>   </span>identify the game during installation and<o:p></o:p></span></p>
  2217. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2218. style='mso-spacerun:yes'>   </span>on shortcuts/icons.<o:p></o:p></span></p>
  2219. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2220. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Title:
  2221. Test<o:p></o:p></span></p>
  2222. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2223. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2224. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>3. Enter
  2225. a short game description.<o:p></o:p></span></p>
  2226. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2227. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Description:
  2228. Test Game<o:p></o:p></span></p>
  2229. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2230. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2231. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>4. Enter
  2232. a unique identifier for your project.<o:p></o:p></span></p>
  2233. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2234. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2235. style='mso-spacerun:yes'>   </span>This should be a human readable package
  2236. name,<o:p></o:p></span></p>
  2237. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2238. style='mso-spacerun:yes'>   </span>containing at least two words separated by a<o:p></o:p></span></p>
  2239. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2240. style='mso-spacerun:yes'>   </span>period (eg. com.surname.gamename).<o:p></o:p></span></p>
  2241. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2242. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Unique
  2243. ID: org.gameplay3d.test<o:p></o:p></span></p>
  2244. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2245. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2246. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>5. Enter
  2247. author name.<o:p></o:p></span></p>
  2248. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2249. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2250. style='mso-spacerun:yes'>   </span>On BlackBerry targets, this is used for<o:p></o:p></span></p>
  2251. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2252. style='mso-spacerun:yes'>   </span>signing and must match the developer name<o:p></o:p></span></p>
  2253. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2254. style='mso-spacerun:yes'>   </span>of your development certificate.<o:p></o:p></span></p>
  2255. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2256. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Author:
  2257. My Company<o:p></o:p></span></p>
  2258. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2259. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2260. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>6. Enter
  2261. your game's main class name.<o:p></o:p></span></p>
  2262. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2263. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2264. style='mso-spacerun:yes'>   </span>Your initial game header and source file<o:p></o:p></span></p>
  2265. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2266. style='mso-spacerun:yes'>   </span>will be given this name and a class with<o:p></o:p></span></p>
  2267. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2268. style='mso-spacerun:yes'>   </span>this name will be created in these files.<o:p></o:p></span></p>
  2269. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2270. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Class
  2271. name: TestGame<o:p></o:p></span></p>
  2272. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2273. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2274. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>7. Enter
  2275. the project path.<o:p></o:p></span></p>
  2276. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2277. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2278. style='mso-spacerun:yes'>   </span>This can be a relative path, absolute path,<o:p></o:p></span></p>
  2279. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2280. style='mso-spacerun:yes'>   </span>or empty for the current folder. Note that<o:p></o:p></span></p>
  2281. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2282. style='mso-spacerun:yes'>   </span>a project folder named test will also<o:p></o:p></span></p>
  2283. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2284. style='mso-spacerun:yes'>   </span>be created inside this folder.<o:p></o:p></span></p>
  2285. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2286. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Path:
  2287. gameplay-samples<o:p></o:p></span></p>
  2288. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2289. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2290. style='mso-spacerun:yes'>    </span>1 file copied.<o:p></o:p></span></p>
  2291. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2292. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  2293. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2294. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2295. simplest way to run the project on Windows is to add the Visual Studio project
  2296. to the existing gameplay.sln solution, set the &quot;gameplay&quot; project as
  2297. a dependency (right-click on the new project, click &quot;Project Dependencies…&quot;,
  2298. and select the &quot;gameplay&quot; project), and then build and run.<o:p></o:p></span></p>
  2299. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2300. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Similarly,
  2301. the easiest way to run the project on BlackBerry is import the new project into
  2302. a QNX Momentics IDE workspace that already contains the gameplay project, set
  2303. the &quot;gameplay&quot; project as a dependency (right-click the new project,
  2304. click &quot;Properties&quot;, go to &quot;Project References&quot;, and select
  2305. the &quot;gameplay&quot; project), and then build and run. (Note: make sure
  2306. that both projects are set to the same Build Configuration.) <o:p></o:p></span></p>
  2307. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2308. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  2309. run the project on Mac, simply open the Xcode project and build and run.<o:p></o:p></span></p>
  2310. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2311. <p class=MsoNormal style='text-align:justify'><span style='font-size:12.0pt;
  2312. mso-bidi-font-family:"Times New Roman"'>To run the project on Android from
  2313. Windows, use the </span><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2314. "Times New Roman"'>steps described above for running the samples.</span><span
  2315. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2316. <h2><a name="_Toc330902770">Assets and authoring</a></h2>
  2317. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  2318. assets are extremely important for the quality of a good game. Not only do the
  2319. game assets need to be fitted for the game design, but they also need to load
  2320. as quickly as possible and at the highest quality within the platform hardware
  2321. limitations.<o:p></o:p></span></p>
  2322. <h3>Binary game assets</h3>
  2323. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  2324. very practical way to ensure that you</span><span style='font-size:12.0pt;
  2325. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2326. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>re being
  2327. efficient is to always bundle and load all your game assets as binary formats.
  2328. Common assets include images, fonts, audio, and 3-D scenes. Most game engines
  2329. will always include some sort of authoring tool to allow developers to encode
  2330. and process their content to be game-ready. The gameplay framework also
  2331. includes an executable tool for this called the gameplay-encoder.<o:p></o:p></span></p>
  2332. <h3>Using fonts and 3-D scenes</h3>
  2333. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  2334. fonts and 3-D scenes, you will want to support industry-standard file formats,
  2335. such as <u><span style='color:blue'><a
  2336. href="http://en.wikipedia.org/wiki/TrueType">TrueType</a> </span></u>for fonts
  2337. and popular modern 3-D scene formats such as <u><span style='color:blue'><a
  2338. href="https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema">COLLADA</a>
  2339. </span></u>and the <u><span style='color:blue'><a
  2340. href="http://usa.autodesk.com/adsk/servlet/pc/index?id=6837478&amp;amp;siteID=123112">FBX</a>
  2341. </span></u>formats. <o:p></o:p></span></p>
  2342. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2343. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Although
  2344. these formats are popular and have the widest support in tooling options, they
  2345. are not considered efficient runtime formats. The gameplay library requires
  2346. that you convert these formats to its documented <u><span style='color:blue'><a
  2347. href="https://github.com/blackberry/GamePlay/blob/master/gameplay-encoder/gameplay-bundle.txt">gameplay
  2348. bundle format (.gpb)</a> </span></u>using the gameplay-encoder executable.<o:p></o:p></span></p>
  2349. <h3>Pre-built gameplay-encoder tool</h3>
  2350. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2351. gameplay-encoder executable tool comes pre-built for Windows 7 and Mac OS X and
  2352. can be found in the </span><b style='mso-bidi-font-weight:normal'><span
  2353. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>&lt;gameplay-root&gt;/bin</span></b><span
  2354. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
  2355. folders. The general usage is:<o:p></o:p></span></p>
  2356. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2357. "Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2358. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt;gameplay-encoder
  2359. &lt;options&gt; files<o:p></o:p></span></p>
  2360. <h3>Building gameplay-encoder</h3>
  2361. <p class=MsoNormal>Even though the gameplay-encoder tool comes pre-built, you
  2362. make want to customize it and built it again yourself. To build the
  2363. gameplay-encoder project, open the gameplay-encoder project in Visual Studio or
  2364. XCode and build the executable. </p>
  2365. <h3>Building support for the FBX format</h3>
  2366. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Although
  2367. the FBX format is supported by the gameplay-encoder tools, FBX is not allowed
  2368. to be re-distributed as part of our framework. However, it is free for you to
  2369. use. Simply download the <u><span style='color:blue'><a
  2370. href="http://usa.autodesk.com/adsk/servlet/pc/index?id=6837478&amp;amp;siteID=123112">FBX
  2371. SDK</a> </span></u>and then re-build the code in the gameplay-encoder using the
  2372. USE_FBX preprocessor directive and ensure that you include the header and
  2373. library paths in the project to the FBX SDK paths.<o:p></o:p></span></p>
  2374. <h3>Content pipeline</h3>
  2375. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2376. content pipeline for fonts and scenes works like this:<a name=d5e88a1310></a><o:p></o:p></span></p>
  2377. <ol style='margin-top:0in' start=1 type=1>
  2378. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2379. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Take
  2380. any TrueType fonts or COLLADA/FBX scene files.<span style='mso-tab-count:
  2381. 2'>            </span><o:p></o:p></span></li>
  2382. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2383. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2384. the gameplay-encoder executable passing in the font or scene file path and
  2385. optional parameters to produce a gameplay binary version for the file (.gpb).<span
  2386. style='mso-tab-count:2'>                   </span><o:p></o:p></span></li>
  2387. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2388. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Bundle
  2389. your game and include the gameplay binary file as a binary game asset.<o:p></o:p></span></li>
  2390. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2391. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Load
  2392. any binary game assets using the </span><span style='mso-bidi-font-size:
  2393. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  2394. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
  2395. class.</span><span style='mso-tab-count:3'>                       </span><span
  2396. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2397. </ol>
  2398. <h3>Using binary bundles</h3>
  2399. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2400. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2401. "Times New Roman"'>gameplay::Bundle</span><span style='font-size:12.0pt;
  2402. mso-bidi-font-family:"Times New Roman"'> class from your C++ game source code
  2403. to load your encoded binary files as bundles. The class offers methods to load
  2404. both fonts and scenes. Scenes are loaded as a hierarchical structure of nodes,
  2405. with various entities attached to them. These entities include things like mesh
  2406. geometry or groups of meshes, and cameras and lights. The </span><span
  2407. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  2408. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class also has
  2409. methods to filter only the parts of a scene that you want to load.<o:p></o:p></span></p>
  2410. <h3>Release mode assets</h3>
  2411. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>When
  2412. releasing your game title, all of the images should be optimized and converted
  2413. to the compressed texture format that is supported by OpenGL (ES). Audio should
  2414. be encoded to save space on storage. <a name=d6e3a1310></a><o:p></o:p></span></p>
  2415. <h2><a name="_Toc330902771">Game</a></h2>
  2416. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2417. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2418. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2419. mso-bidi-font-family:"Times New Roman"'> class is the base class for all your
  2420. games created with the gameplay framework. You are required to extend this
  2421. class using C++ and to override the core game and lifecycle event methods
  2422. initialize, finalize, update, and render. This is where you</span><span
  2423. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2424. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2425. "Times New Roman"'>ll write your code to load the game assets and apply game
  2426. logic and rendering code. Under the hood, the game class will receive events
  2427. and act as an abstraction between the running game and the underlying platform
  2428. layer that is running the game loop and reacting to operating systems. <o:p></o:p></span></p>
  2429. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2430. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  2431. are four methods you must implement to get started in writing your own game: <o:p></o:p></span></p>
  2432. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2433. <pre style='background:white'><span style='font-family:Consolas;color:blue'>#include</span><span
  2434. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2435. Consolas;color:#A31515'>&quot;gameplay.h&quot;</span><span style='font-family:
  2436. Consolas;color:black'><o:p></o:p></span></pre>
  2437. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2438. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2439. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  2440. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2441. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2442. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2443. style='font-size:10.0pt;font-family:Consolas;color:blue'>using</span><span
  2444. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  2445. style='font-size:10.0pt;font-family:Consolas;color:blue'>namespace</span><span
  2446. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;gameplay;<o:p></o:p></span></p>
  2447. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2448. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2449. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  2450. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2451. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2452. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2453. style='font-size:10.0pt;font-family:Consolas;color:blue'>class</span><span
  2454. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;MyGame&nbsp;:&nbsp;</span><span
  2455. style='font-size:10.0pt;font-family:Consolas;color:blue'>public</span><span
  2456. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Game<o:p></o:p></span></p>
  2457. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2458. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2459. style='font-size:10.0pt;font-family:Consolas;color:black'>{<o:p></o:p></span></p>
  2460. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2461. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2462. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2463. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2464. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;initialize();<o:p></o:p></span></p>
  2465. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2466. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2467. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2468. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2469. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;finalize();<span
  2470. style='mso-tab-count:1'>      </span><o:p></o:p></span></p>
  2471. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2472. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2473. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2474. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2475. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;update(</span><span
  2476. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  2477. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime);<o:p></o:p></span></p>
  2478. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2479. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2480. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2481. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2482. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;render(</span><span
  2483. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  2484. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime);<o:p></o:p></span></p>
  2485. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  2486. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2487. style='font-size:10.0pt;font-family:Consolas;color:black'>};<o:p></o:p></span></p>
  2488. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2489. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2490. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2491. "Times New Roman"'>Game::initialize()</span><span style='font-size:12.0pt;
  2492. mso-bidi-font-family:"Times New Roman"'> and </span><span style='font-size:
  2493. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::finalize()</span><span
  2494. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> methods are
  2495. called when the game starts up and shuts down, respectively. They are the
  2496. methods to which you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2497. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2498. mso-bidi-font-family:"Times New Roman"'>ll add code to load your game assets
  2499. and cleanup when the game has ended. The </span><span style='font-size:12.0pt;
  2500. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  2501. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2502. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::render()</span><span
  2503. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> methods are
  2504. called once per frame from the game loop implemented in the </span><span
  2505. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Platform</span><span
  2506. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> for each
  2507. operating system. This allows you to separate the code between handling updates
  2508. to your game</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2509. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2510. mso-bidi-font-family:"Times New Roman"'>s state and rendering your game</span><span
  2511. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2512. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2513. "Times New Roman"'>s visuals. You can use a variety of built-in classes to help
  2514. with the game rendering.<o:p></o:p></span></p>
  2515. <h3>Accessing the game instance</h3>
  2516. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2517. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2518. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2519. mso-bidi-font-family:"Times New Roman"'> class can be accessed from anywhere in
  2520. your game code. It implements a singleton design pattern. Call the static
  2521. method </span><span style='font-size:12.0pt;font-family:"Courier New";
  2522. mso-bidi-font-family:"Times New Roman"'>Game::getInstance()</span><span
  2523. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to gain access
  2524. to the instance of your game from any code. <o:p></o:p></span></p>
  2525. <h3>Graphics and audio devices</h3>
  2526. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>After
  2527. your game has started, the underlying graphics and audio devices will
  2528. automatically initialize. This happens prior to the </span><span
  2529. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2530. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method being
  2531. called and readies any classes that use OpenGL (ES) 2.0 or Open AL 1.1. The
  2532. graphics devices of your </span><span style='font-size:12.0pt;font-family:"Courier New";
  2533. mso-bidi-font-family:"Times New Roman"'>Game</span><span style='font-size:12.0pt;
  2534. mso-bidi-font-family:"Times New Roman"'> will be set up with a default 32-bit
  2535. color frame buffer, a 24-bit depth buffer, and an 8-bit stencil buffer ready
  2536. for your use. These are the active graphics hardware buffers, which are
  2537. rendered into from your rendering code. <o:p></o:p></span></p>
  2538. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2539. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  2540. more advanced usage, you can apply alternative frame buffers using the </span><span
  2541. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::FrameBuffer</span><span
  2542. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.
  2543. Immediately after the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2544. mso-bidi-font-family:"Times New Roman"'>Game::render()</span><span
  2545. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  2546. frame buffer is swapped/presented to the physical display for the user to see.
  2547. You can invoke the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2548. mso-bidi-font-family:"Times New Roman"'>Game::clear()</span><span
  2549. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method to
  2550. clear the buffers through any of the methods. You can also call </span><span
  2551. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::renderOnce()</span><span
  2552. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> from code,
  2553. such as from the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2554. mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2555. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, to
  2556. callback onto a method that will be called only once and then swapped/presented
  2557. to the display. This is useful for presenting ad-hoc updates to the screen
  2558. during initialization for rendering, such as loading screens.<o:p></o:p></span></p>
  2559. <h3>Game sub-system controllers</h3>
  2560. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2561. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2562. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2563. mso-bidi-font-family:"Times New Roman"'> class also manages game sub-system
  2564. controllers, such as audio, animation and physics controllers, and provides
  2565. access to them directly using getter methods. These classes act as controlling
  2566. interfaces for managing and playing audio and animations that are active in the
  2567. game, as well as updates to dynamics in the physics systems. These controllers
  2568. are hosted by the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2569. mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2570. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and
  2571. react on lifecycle events being handled in the game.<o:p></o:p></span></p>
  2572. <h3>Game time and state</h3>
  2573. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  2574. the instance of a </span><span style='font-size:12.0pt;font-family:"Courier New";
  2575. mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2576. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class has
  2577. started, the game starts a running time. You can call the </span><span
  2578. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::getGameTime()</span><span
  2579. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to determine
  2580. how long a game has been running. You can also call </span><span
  2581. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::getAbsoluteTime()</span><span
  2582. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to determine
  2583. the absolute time that has elapsed since the first </span><span
  2584. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::run()</span><span
  2585. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> call. This
  2586. includes any paused time too. You can call the </span><span style='font-size:
  2587. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::pause()</span><span
  2588. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method and the
  2589. game will be put into the </span><span style='font-size:12.0pt;font-family:
  2590. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::PAUSED</span><span
  2591. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> state. If the
  2592. user on the platform puts the game into the background, the game time is also
  2593. paused. If the user puts the game back into the foreground, the game will
  2594. invoke </span><span style='font-size:12.0pt;font-family:"Courier New";
  2595. mso-bidi-font-family:"Times New Roman"'>Game::play()</span><span
  2596. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and the game
  2597. will resume. At any time in the game you can determine the game state by
  2598. calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  2599. mso-bidi-font-family:"Times New Roman"'>Game::getState()</span><span
  2600. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The game
  2601. state can be UNINITIALIZED, RUNNING or PAUSED.<a name=d7e3a1310></a><o:p></o:p></span></p>
  2602. <h2><a name="_Toc330902772">Input and sensors</a></h2>
  2603. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>By
  2604. creating your game and extending </span><span style='font-size:12.0pt;
  2605. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2606. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, you</span><span
  2607. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2608. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2609. "Times New Roman"'>ll be able to add all the required handlers of input events.
  2610. Additionally, there are methods on </span><span style='font-size:12.0pt;
  2611. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2612. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to poll for
  2613. the current sensor data. This architecture insulates you, as a developer, from
  2614. the platform-specific details on handling keyboard, touch and mouse events, and
  2615. from polling the accelerometer state. The following illustrates overridden
  2616. methods to handle input events:<o:p></o:p></span></p>
  2617. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2618. <pre style='background:white'><span style='font-family:Consolas;color:blue'>#include</span><span
  2619. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2620. Consolas;color:#A31515'>&quot;gameplay.h&quot;</span><span style='font-family:
  2621. Consolas;color:black'><o:p></o:p></span></pre><pre style='background:white'><span
  2622. style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2623. style='background:white'><span style='font-family:Consolas;color:blue'>using</span><span
  2624. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2625. Consolas;color:blue'>namespace</span><span style='font-family:Consolas;
  2626. color:black'>&nbsp;gameplay;<o:p></o:p></span></pre><pre style='background:
  2627. white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2628. style='background:white'><span style='font-family:Consolas;color:blue'>class</span><span
  2629. style='font-family:Consolas;color:black'>&nbsp;MyGame&nbsp;:&nbsp;</span><span
  2630. style='font-family:Consolas;color:blue'>public</span><span style='font-family:
  2631. Consolas;color:black'>&nbsp;Game<o:p></o:p></span></pre><pre style='background:
  2632. white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2633. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  2634. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2635. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2636. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2637. Consolas;color:black'>&nbsp;keyEvent(Keyboard::KeyEvent&nbsp;evt,&nbsp;</span><span
  2638. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2639. Consolas;color:black'>&nbsp;key);<o:p></o:p></span></pre><pre style='background:
  2640. white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2641. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2642. Consolas;color:black'>&nbsp;touchEvent(Touch::TouchEvent&nbsp;evt,&nbsp;</span><span
  2643. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2644. Consolas;color:black'>&nbsp;x,&nbsp;</span><span style='font-family:Consolas;
  2645. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;y,&nbsp;</span><span
  2646. style='font-family:Consolas;color:blue'>unsigned</span><span style='font-family:
  2647. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  2648. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;contactIndex);<o:p></o:p></span></pre><pre
  2649. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2650. style='font-family:Consolas;color:blue'>bool</span><span style='font-family:
  2651. Consolas;color:black'>&nbsp;mouseEvent(Mouse::MouseEvent&nbsp;evt,&nbsp;</span><span
  2652. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2653. Consolas;color:black'>&nbsp;x,&nbsp;</span><span style='font-family:Consolas;
  2654. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;y);<o:p></o:p></span></pre><pre
  2655. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2656. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2657. Consolas;color:black'>&nbsp;getAccelerometerValues(</span><span
  2658. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  2659. Consolas;color:black'>*&nbsp;pitch,&nbsp;</span><span style='font-family:Consolas;
  2660. color:blue'>float</span><span style='font-family:Consolas;color:black'>*&nbsp;roll);&nbsp;<o:p></o:p></span></pre><pre
  2661. style='background:white'><span style='font-family:Consolas;color:black'>};<o:p></o:p></span></pre>
  2662. <h3>Handling input events</h3>
  2663. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2664. have the opportunity, on either desktop platforms or mobile devices, to handle
  2665. mouse events uniquely from the </span><span style='font-size:12.0pt;font-family:
  2666. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::touchEvent()</span><span
  2667. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method (this
  2668. includes support for a Bluetooth enabled mouse). However, this is not required,
  2669. and the default implementation of the </span><span style='font-size:12.0pt;
  2670. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::mouseEvent()</span><span
  2671. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method returns
  2672. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2673. "Times New Roman"'>false</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2674. "Times New Roman"'>, which means that the user can allow mouse events to be
  2675. treated automatically as touch events.<o:p></o:p></span></p>
  2676. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2677. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2678. can decide to disable multi-touch support for games when you do not want this
  2679. functionality. You can call </span><span style='font-size:12.0pt;font-family:
  2680. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::setMultiTouch()</span><span
  2681. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and pass in </span><span
  2682. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>false</span><span
  2683. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to ensure that
  2684. the platform treats and handles touch events as single touches.<o:p></o:p></span></p>
  2685. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2686. can also call </span><span style='font-size:12.0pt;font-family:"Courier New";
  2687. mso-bidi-font-family:"Times New Roman"'>Game::displayKeyboard()</span><span
  2688. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to show or
  2689. hide a virtual keyboard for platforms that support it. You</span><span
  2690. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2691. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2692. "Times New Roman"'>ll want to integrate it into points in the game and user
  2693. interfaces in the game where text input is required.<o:p></o:p></span></p>
  2694. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2695. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2696. can call </span><span style='font-size:12.0pt;font-family:"Courier New";
  2697. mso-bidi-font-family:"Times New Roman"'>Game::getAccelerometerValues()</span><span
  2698. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and pass in
  2699. pointers to parameters that will be populated with the current sensor values
  2700. for the accelerometer.<a name=d8e3a1310></a><o:p></o:p></span></p>
  2701. <h2><a name="_Toc330902773">Sprites and fonts</a></h2>
  2702. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2703. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2704. "Times New Roman"'>gameplay::SpriteBatch</span><span style='font-size:12.0pt;
  2705. mso-bidi-font-family:"Times New Roman"'> and </span><span style='font-size:
  2706. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Font</span><span
  2707. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> classes to
  2708. integrate simple 2-D sprite and text rendering for both 2-D and 3-D games. <o:p></o:p></span></p>
  2709. <h3>Binary encoding fonts</h3>
  2710. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2711. first thing to do is to create or find a TrueType font that you want to use.
  2712. There are a number of sites on the web that offer .TTF files to purchase, or
  2713. tools to make them yourself.<o:p></o:p></span></p>
  2714. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2715. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Next,
  2716. you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2717. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2718. mso-bidi-font-family:"Times New Roman"'>ll want to binary encode your TrueType
  2719. font to a binary format via gameplay-encoder to produce a binary file. To do
  2720. this run the following command with your gameplay-encoder executable:<o:p></o:p></span></p>
  2721. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2722. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt; gameplay-encoder
  2723. -s 28 airstrip.ttf<o:p></o:p></span></p>
  2724. <h3>Drawing text and images</h3>
  2725. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2726. following code sample illustrates how to render and image and text together:<o:p></o:p></span></p>
  2727. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2728. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2729. style='font-family:Consolas;color:black'>&nbsp;MyGame::initialize()<o:p></o:p></span></pre><pre
  2730. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2731. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2732. style='font-family:Consolas;color:green'>//&nbsp;Create&nbsp;your&nbsp;sprite&nbsp;batch&nbsp;and&nbsp;font&nbsp;and&nbsp;associate&nbsp;resources</span><span
  2733. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2734. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch&nbsp;=&nbsp;SpriteBatch::create(</span><span
  2735. style='font-family:Consolas;color:#A31515'>&quot;res/image.png&quot;</span><span
  2736. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  2737. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font&nbsp;=&nbsp;Font::create(</span><span
  2738. style='font-family:Consolas;color:#A31515'>&quot;res/airstrip28.gpb&quot;</span><span
  2739. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  2740. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre><pre
  2741. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2742. style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2743. style='font-family:Consolas;color:black'>&nbsp;MyGame::render(</span><span
  2744. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  2745. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  2746. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2747. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2748. style='font-family:Consolas;color:green'>//&nbsp;Clear&nbsp;the&nbsp;frame&nbsp;buffer</span><span
  2749. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2750. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;clear(CLEAR_COLOR_DEPTH,&nbsp;Vector4(0,&nbsp;0,&nbsp;0,&nbsp;1),&nbsp;1.0f,&nbsp;0);<o:p></o:p></span></pre><pre
  2751. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2752. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2753. style='font-family:Consolas;color:green'>//&nbsp;Draw&nbsp;your&nbsp;sprites&nbsp;(we&nbsp;will&nbsp;only&nbsp;draw&nbsp;one&nbsp;now</span><span
  2754. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2755. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch-&gt;begin();<o:p></o:p></span></pre><pre
  2756. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch-&gt;draw(Rectangle(0,&nbsp;0,&nbsp;WINDOW_WIDTH,&nbsp;WINDOW_HEIGHT),&nbsp;<o:p></o:p></span></pre><pre
  2757. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rectangle(0,&nbsp;0,&nbsp;WINDOW_WIDTH,&nbsp;WINDOW_HEIGHT),&nbsp;Vector4::one());<o:p></o:p></span></pre><pre
  2758. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch-&gt;end();<o:p></o:p></span></pre><pre
  2759. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2760. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2761. style='font-family:Consolas;color:green'>//&nbsp;Draw&nbsp;the&nbsp;text&nbsp;at&nbsp;position&nbsp;20,20&nbsp;using&nbsp;red&nbsp;color</span><span
  2762. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2763. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;begin();<o:p></o:p></span></pre><pre
  2764. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2765. style='font-family:Consolas;color:blue'>char</span><span style='font-family:
  2766. Consolas;color:black'>&nbsp;text[1024];<o:p></o:p></span></pre><pre
  2767. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(text,&nbsp;</span><span
  2768. style='font-family:Consolas;color:#A31515'>&quot;FPS:%d&quot;</span><span
  2769. style='font-family:Consolas;color:black'>,&nbsp;Game::getFrameRate());<o:p></o:p></span></pre><pre
  2770. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;drawText(</span><span
  2771. style='font-family:Consolas;color:#A31515'>&quot;Game&nbsp;20,&nbsp;20,&nbsp;Vector4(1,&nbsp;0,&nbsp;0,&nbsp;1),&nbsp;_font-&gt;getSize());</span><span
  2772. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2773. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;end();<o:p></o:p></span></pre><pre
  2774. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre><pre
  2775. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2776. style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2777. style='font-family:Consolas;color:black'>&nbsp;MyGame::finalize()<o:p></o:p></span></pre><pre
  2778. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2779. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2780. style='font-family:Consolas;color:green'>//&nbsp;Use&nbsp;built-in&nbsp;macros&nbsp;to&nbsp;clean&nbsp;up&nbsp;our&nbsp;resources.</span><span
  2781. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2782. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_DELETE(_batch);<o:p></o:p></span></pre><pre
  2783. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_DELETE(_font);<o:p></o:p></span></pre><pre
  2784. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  2785. <h3>Batch, batch, batch</h3>
  2786. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You</span><span
  2787. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2788. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2789. "Times New Roman"'>ll notice that the </span><span style='font-size:12.0pt;
  2790. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::SpritchBatch</span><span
  2791. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2792. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Font</span><span
  2793. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> code sequences
  2794. above both have a common flow to them. The developer performs a call to </span><span
  2795. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>begin()</span><span
  2796. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> followed by
  2797. drawing operations and finishing with a call to </span><span style='font-size:
  2798. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>end()</span><span
  2799. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is to
  2800. support batching or combining drawing operations into a single hardware
  2801. rendering call.<a name=d9e3a1310></a><o:p></o:p></span></p>
  2802. <h2><a name="_Toc330902774">Scene and nodes</a></h2>
  2803. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>At
  2804. the heart of any game is a visual scene. Using the </span><span
  2805. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2806. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class, you can
  2807. create and retain a rich 3-D scene for organizing visual, audio, animation and
  2808. physics components in your game.<o:p></o:p></span></p>
  2809. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2810. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2811. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2812. "Times New Roman"'>gameplay::Scene</span><span style='font-size:12.0pt;
  2813. mso-bidi-font-family:"Times New Roman"'> class is based on a hierarchical data
  2814. structure that is often referred to as a scene graph. Using the </span><span
  2815. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2816. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2817. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  2818. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> classes, you
  2819. can build up a game level by attaching various game components to the nodes in
  2820. the scene. The node will maintain the transformation for any attachments. As a
  2821. basic example, a scene might have two nodes. The first node could have a </span><span
  2822. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Camera</span><span
  2823. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attached to it
  2824. and the second node could have a </span><span style='font-size:12.0pt;
  2825. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  2826. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attached to
  2827. it. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  2828. mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2829. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> will have the
  2830. camera set as the active camera. You could then transform either/both of the
  2831. nodes to change the player</span><span style='font-size:12.0pt;font-family:
  2832. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2833. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s perspective
  2834. on what they will see in the game.<o:p></o:p></span></p>
  2835. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  2836. are a variety of components you can attach to the </span><span
  2837. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  2838. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class:<o:p></o:p></span></p>
  2839. <p class=MsoNormal><a name=d9e44a1310></a><span style='font-size:12.0pt;
  2840. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2841. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  2842. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  2843. <thead>
  2844. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  2845. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2846. padding:0in 5.4pt 0in 5.4pt'>
  2847. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2848. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2849. mso-bidi-font-weight:normal'>Component<o:p></o:p></span></p>
  2850. </td>
  2851. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2852. padding:0in 5.4pt 0in 5.4pt'>
  2853. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2854. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2855. mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
  2856. </td>
  2857. </tr>
  2858. </thead>
  2859. <tr style='mso-yfti-irow:1'>
  2860. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2861. 0in 5.4pt 0in 5.4pt'>
  2862. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2863. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2864. "Times New Roman"'>gameplay::Model</span><span style='mso-bidi-font-size:
  2865. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2866. </td>
  2867. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2868. 0in 5.4pt 0in 5.4pt'>
  2869. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2870. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2871. to represent the mesh/geometry in the scene.<o:p></o:p></span></p>
  2872. </td>
  2873. </tr>
  2874. <tr style='mso-yfti-irow:2'>
  2875. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2876. padding:0in 5.4pt 0in 5.4pt'>
  2877. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2878. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2879. "Times New Roman"'>gameplay::Camera</span><span style='mso-bidi-font-size:
  2880. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2881. </td>
  2882. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2883. padding:0in 5.4pt 0in 5.4pt'>
  2884. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2885. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2886. to represent a view/perspective into the scene.<o:p></o:p></span></p>
  2887. </td>
  2888. </tr>
  2889. <tr style='mso-yfti-irow:3'>
  2890. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2891. 0in 5.4pt 0in 5.4pt'>
  2892. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2893. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2894. "Times New Roman"'>gameplay::Light</span><span style='mso-bidi-font-size:
  2895. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2896. </td>
  2897. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2898. 0in 5.4pt 0in 5.4pt'>
  2899. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2900. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2901. to hold lighting information that can affect how a </span><span
  2902. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2903. "Times New Roman"'>Model</span><span style='mso-bidi-font-size:12.0pt;
  2904. mso-bidi-font-family:"Times New Roman"'> is rendered.<o:p></o:p></span></p>
  2905. </td>
  2906. </tr>
  2907. <tr style='mso-yfti-irow:4'>
  2908. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2909. padding:0in 5.4pt 0in 5.4pt'>
  2910. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2911. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2912. "Times New Roman"'>gameplay::PhysicsCollisionObject</span><span
  2913. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2914. </td>
  2915. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2916. padding:0in 5.4pt 0in 5.4pt'>
  2917. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2918. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2919. to define the basic physics dynamics that will be simulated.<o:p></o:p></span></p>
  2920. </td>
  2921. </tr>
  2922. <tr style='mso-yfti-irow:5'>
  2923. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2924. 0in 5.4pt 0in 5.4pt'>
  2925. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2926. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2927. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='mso-bidi-font-size:
  2928. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2929. </td>
  2930. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2931. 0in 5.4pt 0in 5.4pt'>
  2932. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2933. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2934. to represent smoke, steam, fire and other atmospheric effects.<o:p></o:p></span></p>
  2935. </td>
  2936. </tr>
  2937. <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
  2938. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2939. padding:0in 5.4pt 0in 5.4pt'>
  2940. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2941. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2942. "Times New Roman"'>gameplay::AudioSource</span><span style='mso-bidi-font-size:
  2943. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2944. </td>
  2945. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2946. padding:0in 5.4pt 0in 5.4pt'>
  2947. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2948. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2949. to represent a source where audio is being played from.<o:p></o:p></span></p>
  2950. </td>
  2951. </tr>
  2952. </table>
  2953. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  2954. text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
  2955. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2956. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  2957. text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
  2958. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2959. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  2960. typical flow will have you loading/building a large scene representing all the
  2961. components needed in the game level. This is done once during </span><span
  2962. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2963. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. For every
  2964. call to the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2965. mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  2966. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  2967. code will update changes to the nodes and attached components based on events
  2968. such as user input . Then the application will traverse the scene and render
  2969. the parts in the scene that are visible from scene's active camera.<o:p></o:p></span></p>
  2970. <h3>Exporting a 3-D scene from Autodesk Maya/Max</h3>
  2971. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>If
  2972. you want to export 3-D scenes, use the native FBX Export (for FBX) or DAE_FBX
  2973. Export (for COLLADA). <o:p></o:p></span></p>
  2974. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2975. <p class=link><span style='mso-no-proof:yes'><!--[if gte vml 1]><v:shape id="Picture_x0020_1"
  2976. o:spid="_x0000_i1026" type="#_x0000_t75" style='width:455.25pt;height:311.25pt;
  2977. visibility:visible'>
  2978. <v:imagedata src="development-guide_files/image003.png" o:title=""/>
  2979. </v:shape><![endif]--><![if !vml]><img border=0 width=607 height=415
  2980. src="development-guide_files/image004.jpg" v:shapes="Picture_x0020_1"><![endif]></span><span
  2981. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2982. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2983. <h3>Exporting a 3-D scene from Blender</h3>
  2984. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Blender
  2985. supports exporting to the COLLADA and FBX file formats. <o:p></o:p></span></p>
  2986. <p class=MsoNormal><a name=d9e229a1310></a><span style='font-size:12.0pt;
  2987. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span></span><span
  2988. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  2989. style='mso-tab-count:1'>          </span></span><span style='font-size:12.0pt;
  2990. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2991. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  2992. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  2993. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  2994. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  2995. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  2996. </span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
  2997. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File &gt;
  2998. Export &gt; Autodesk FBX (.fbx)</span></b><span style='mso-bidi-font-size:12.0pt;
  2999. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3000. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3001. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3002. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3003. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3004. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3005. </span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
  3006. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File
  3007. &gt; Export &gt; COLLADA (.dae)</span></b><span style='mso-bidi-font-size:12.0pt;
  3008. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'>       </span><o:p></o:p></span></p>
  3009. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  3010. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  3011. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  3012. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>If
  3013. you run into problems when using COLLADA files from Blender, try re-importing
  3014. the COLLADA file back into Blender or Maya software to see if there is a
  3015. problem with the exported model.<o:p></o:p></span></p>
  3016. <h3>Binary encoding a scene</h3>
  3017. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  3018. gameplay-encoder with no arguments to see the usage information and supported
  3019. arguments.<o:p></o:p></span></p>
  3020. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3021. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Usage:
  3022. gameplay-encoder [options] <i style='mso-bidi-font-style:normal'>&lt;filepath&gt;</i><o:p></o:p></span></p>
  3023. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3024. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3025. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Example</span></b><span
  3026. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3027. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3028. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Convert
  3029. the COLLADA file duck.dae into gameplay binary file duck.gpb.<o:p></o:p></span></p>
  3030. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3031. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt; gameplay-encoder
  3032. duck.dae<o:p></o:p></span></p>
  3033. <h3>Encoding an FBX file</h3>
  3034. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3035. convert an FBX file to a gameplay binary file, you must install the FBX SDK and
  3036. set the preprocessor directive USE_FBX. See the instructions in the <u><span
  3037. style='color:blue'>gameplay-encoder README </span></u>on GitHub.<o:p></o:p></span></p>
  3038. <h3>Loading a scene</h3>
  3039. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Using
  3040. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3041. "Times New Roman"'>gameplay::Bundle</span><span style='font-size:12.0pt;
  3042. mso-bidi-font-family:"Times New Roman"'> class, you can load either an entire
  3043. scene or various parts of a scene into any existing scene. The </span><span
  3044. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  3045. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> parses the
  3046. binary file and de-serializes the objects from the file so that you can use
  3047. them in your game. <o:p></o:p></span></p>
  3048. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3049. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3050. is an example of loading a simple scene containing a model of a duck, a light,
  3051. and a camera from a gameplay binary file:<o:p></o:p></span></p>
  3052. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3053. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3054. style='font-family:Consolas;color:black'>&nbsp;MeshGame::initialize()<o:p></o:p></span></pre><pre
  3055. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3056. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3057. style='font-family:Consolas;color:green'>//&nbsp;Load&nbsp;the&nbsp;scene&nbsp;from&nbsp;our&nbsp;gameplay&nbsp;binary&nbsp;file</span><span
  3058. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3059. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Bundle*&nbsp;bundle&nbsp;=&nbsp;Bundle::create(</span><span
  3060. style='font-family:Consolas;color:#A31515'>&quot;res/duck.gpb&quot;</span><span
  3061. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3062. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Scene*&nbsp;scene&nbsp;=&nbsp;bundle-&gt;loadScene();<o:p></o:p></span></pre><pre
  3063. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_RELEASE(bundle);<o:p></o:p></span></pre><pre
  3064. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3065. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3066. style='font-family:Consolas;color:green'>//&nbsp;Get&nbsp;handles&nbsp;to&nbsp;the&nbsp;nodes&nbsp;of&nbsp;interest&nbsp;in&nbsp;the&nbsp;scene</span><span
  3067. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3068. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_modelNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3069. style='font-family:Consolas;color:#A31515'>&quot;duck&quot;</span><span
  3070. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3071. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;_lightNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3072. style='font-family:Consolas;color:#A31515'>&quot;directionalLight1&quot;</span><span
  3073. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3074. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;_cameraNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3075. style='font-family:Consolas;color:#A31515'>&quot;camera1&quot;</span><span
  3076. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3077. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3078. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3079. style='font-family:Consolas;color:green'>//&nbsp;More&nbsp;initialization&nbsp;...</span><span
  3080. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3081. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3082. <h3>Updating a scene</h3>
  3083. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>After
  3084. handling input events or polling the sensors, it</span><span style='font-size:
  3085. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  3086. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s time to
  3087. update the scene. It is very important to understand the scene representing
  3088. your game level. We always want to update things that are impacted by the
  3089. changes to optimize performance. In order to optimize the performance of your
  3090. game, it is essential that you only update objects that need to be changed. In
  3091. this example, we</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3092. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3093. mso-bidi-font-family:"Times New Roman"'>ll apply a rotation when the user has
  3094. touched the screen or mouse button:<o:p></o:p></span></p>
  3095. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3096. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3097. style='font-family:Consolas;color:black'>&nbsp;MyGame::update(</span><span
  3098. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  3099. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  3100. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3101. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3102. style='font-family:Consolas;color:green'>//&nbsp;Rotate&nbsp;the&nbsp;model</span><span
  3103. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3104. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3105. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3106. color:black'>&nbsp;(!_touched)<o:p></o:p></span></pre>
  3107. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-family:
  3108. Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_modelNode-&gt;rotateY(elapsedTime
  3109. * MATH_DEG_TO_RAD(0.05f));</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
  3110. <pre style='background:white'><span style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3111. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3112. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3113. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Some
  3114. examples of typical things you will want to update in your scene may include:<o:p></o:p></span></p>
  3115. <p class=MsoNormal><a name=d9e350a1310></a><span style='font-size:12.0pt;
  3116. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3117. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3118. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3119. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3120. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3121. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3122. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3123. "Times New Roman"'>applying forces onto rigid bodies<span style='mso-tab-count:
  3124. 2'>          </span><o:p></o:p></span></p>
  3125. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3126. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3127. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3128. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3129. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3130. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3131. "Times New Roman"'>applying transformations<span style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  3132. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3133. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3134. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3135. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3136. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3137. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3138. "Times New Roman"'>starting or stopping animations<span style='mso-tab-count:
  3139. 2'>            </span><o:p></o:p></span></p>
  3140. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3141. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3142. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3143. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3144. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3145. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3146. "Times New Roman"'>showing or hiding components<o:p></o:p></span></p>
  3147. <h3>Rendering a scene</h3>
  3148. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3149. render a scene you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3150. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3151. mso-bidi-font-family:"Times New Roman"'>ll need to gather all the models in the
  3152. scene that are attached to nodes and then draw them. Calling the </span><span
  3153. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Scene::visit()</span><span
  3154. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  3155. scene's hierarchical data structure is traversed and for each node in the
  3156. scene, the specified method is invoked as a callback.<o:p></o:p></span></p>
  3157. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3158. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3159. style='font-family:Consolas;color:black'>&nbsp;MyGame::render(</span><span
  3160. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  3161. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  3162. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3163. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3164. style='font-family:Consolas;color:green'>//&nbsp;Clear&nbsp;the&nbsp;buffers&nbsp;to&nbsp;black</span><span
  3165. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3166. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;clear(CLEAR_COLOR_DEPTH,&nbsp;Vector4::zero(),&nbsp;1.0f,&nbsp;0);<o:p></o:p></span></pre><pre
  3167. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3168. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3169. style='font-family:Consolas;color:green'>//&nbsp;Visit&nbsp;all&nbsp;the&nbsp;nodes&nbsp;in&nbsp;the&nbsp;scene,&nbsp;drawing&nbsp;the&nbsp;models/mesh.</span><span
  3170. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3171. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_scene-&gt;visit(</span><span
  3172. style='font-family:Consolas;color:blue'>this</span><span style='font-family:
  3173. Consolas;color:black'>,&nbsp;&amp;MeshGame::drawScene);<o:p></o:p></span></pre><pre
  3174. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre><pre
  3175. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3176. style='background:white'><span style='font-family:Consolas;color:blue'>bool</span><span
  3177. style='font-family:Consolas;color:black'>&nbsp;MyGame::drawScene(Node*&nbsp;node,&nbsp;</span><span
  3178. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  3179. Consolas;color:black'>*&nbsp;cookie)<o:p></o:p></span></pre><pre
  3180. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3181. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3182. style='font-family:Consolas;color:green'>//&nbsp;This&nbsp;method&nbsp;is&nbsp;called&nbsp;for&nbsp;each&nbsp;node&nbsp;in&nbsp;the&nbsp;scene.</span><span
  3183. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3184. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Model*&nbsp;model&nbsp;=&nbsp;node-&gt;getModel();&nbsp;<o:p></o:p></span></pre><pre
  3185. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3186. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3187. color:black'>&nbsp;(model)<o:p></o:p></span></pre><pre style='background:white'><span
  3188. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;draw();<o:p></o:p></span></pre><pre
  3189. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3190. style='font-family:Consolas;color:blue'>return</span><span style='font-family:
  3191. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  3192. color:blue'>true</span><span style='font-family:Consolas;color:black'>;<o:p></o:p></span></pre><pre
  3193. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3194. <h3>Culling non-visible models</h3>
  3195. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  3196. some scenes, you may have many models contributing to the game level. However,
  3197. with a moving camera, only some models will be visible at any particular time.
  3198. Running the code in the snippet above on much larger scenes would cause many
  3199. models to be drawn unnecessarily. To avoid this, you can query a </span><span
  3200. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3201. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and
  3202. retrieve a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3203. mso-bidi-font-family:"Times New Roman"'>gameplay::BoundingSphere</span><span
  3204. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using </span><span
  3205. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::getBoundingSphere()</span><span
  3206. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This bound
  3207. represents an approximation of the representative data contained within a node.
  3208. It is only intended for visibility testing or first-pass intersection testing.
  3209. If you have a moving camera with many objects in the scene, ensure that you add
  3210. code to test visibility from within your visitor callback. This will ensure the
  3211. node is within the camera</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3212. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3213. mso-bidi-font-family:"Times New Roman"'>s viewing range. To do this, make a
  3214. simple intersection test between the front of each node and the active camera
  3215. frustum (by calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  3216. mso-bidi-font-family:"Times New Roman"'>Camera::getFrustum()</span><span
  3217. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>) that
  3218. represents the outer planes of the camera</span><span style='font-size:12.0pt;
  3219. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  3220. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s viewing area.
  3221. Here is a snippet of code to perform such an intersection test:<o:p></o:p></span></p>
  3222. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3223. <pre style='background:white'><a name=d12e3a1310></a><span style='font-family:
  3224. Consolas;color:blue'>bool</span><span style='font-family:Consolas;color:black'>&nbsp;MeshGame::drawScene(Node*&nbsp;node,&nbsp;</span><span
  3225. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  3226. Consolas;color:black'>*&nbsp;cookie)<o:p></o:p></span></pre><pre
  3227. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3228. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3229. style='font-family:Consolas;color:green'>//&nbsp;Only&nbsp;draw&nbsp;visible&nbsp;nodes</span><span
  3230. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3231. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3232. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3233. color:black'>&nbsp;(node-&gt;getBoundingSphere()-&gt;intersect(_camera-&gt;getFrustum())<o:p></o:p></span></pre><pre
  3234. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  3235. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Model*&nbsp;model&nbsp;=&nbsp;node-&gt;getModel();&nbsp;<o:p></o:p></span></pre><pre
  3236. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3237. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3238. color:black'>&nbsp;(model)<o:p></o:p></span></pre><pre style='background:white'><span
  3239. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;draw();<o:p></o:p></span></pre><pre
  3240. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  3241. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3242. style='font-family:Consolas;color:blue'>return</span><span style='font-family:
  3243. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  3244. color:blue'>true</span><span style='font-family:Consolas;color:black'>;<o:p></o:p></span></pre><pre
  3245. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3246. <h2><a name="_Toc330902775">Model and mesh</a></h2>
  3247. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3248. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3249. "Times New Roman"'>gameplay::Model</span><span style='font-size:12.0pt;
  3250. mso-bidi-font-family:"Times New Roman"'> class is the basic component used to
  3251. draw geometry in your scene. The model contains a few key elements: a </span><span
  3252. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Mesh</span><span
  3253. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an optional </span><span
  3254. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3255. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and one or
  3256. more </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3257. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3258. mso-bidi-font-family:"Times New Roman"'>. These contribute to the information
  3259. that is needed to perform the rendering of a model.<o:p></o:p></span></p>
  3260. <h3>Mesh geometry</h3>
  3261. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3262. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3263. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3264. mso-bidi-font-family:"Times New Roman"'> class consists of a </span><span
  3265. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::VertexFormat</span><span
  3266. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attribute.
  3267. This attribute describes the layout for the vertex data as well as the actual
  3268. vertex data, which is used as input in the rendering of the geometry. In
  3269. addition, it holds one or more </span><span style='font-size:12.0pt;font-family:
  3270. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshParts</span><span
  3271. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. These parts
  3272. define the primitive shapes and indices into the vertex data that describe how
  3273. the vertices are connected.<o:p></o:p></span></p>
  3274. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3275. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  3276. artists use 3-D modeling tools that are capable of organizing and splitting the
  3277. vertex data into parts/subsets based on the materials that are applied to them.
  3278. The </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3279. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3280. mso-bidi-font-family:"Times New Roman"'> class maintains one vertex buffer to
  3281. hold all the vertices, and for each </span><span style='font-size:12.0pt;
  3282. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3283. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an index
  3284. buffer is used to draw the primitive shapes.<o:p></o:p></span></p>
  3285. <h3>MeshSkin and Joints</h3>
  3286. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3287. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3288. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3289. mso-bidi-font-family:"Times New Roman"'> class supports an optional </span><span
  3290. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3291. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is used
  3292. when loading models that represent characters in the game that have a skeleton consisting
  3293. of </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3294. "Times New Roman"'>gameplay::Joint</span><span style='font-size:12.0pt;
  3295. mso-bidi-font-family:"Times New Roman"'> objects (bones). Vertex skinning is
  3296. the term used to describe the process of applying a weighting or relationship
  3297. with the Joints and their affected vertices. Using 3-D modeling tools, artists
  3298. can add this additional weighting information onto the vertices in order to
  3299. control how much a particular vertex should be impacted. This is based on the
  3300. transformation of joints that can affect them. You will learn later how to
  3301. apply special, skinned Materials that support this weighting. The gameplay 3-D
  3302. framework supports a maximum of four blend weights per vertex. The </span><span
  3303. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3304. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class holds
  3305. and maintains a hierarchy of </span><span style='font-size:12.0pt;font-family:
  3306. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay:Joint</span><span
  3307. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> objects that
  3308. can be transformed. A typical operation is to animate the transformation
  3309. (usually only rotations) of the joints. The data within this class can be bound
  3310. onto skinned Materials to ensure proper impact of weights onto their influenced
  3311. vertices.<a name=d13e3a1310></a><o:p></o:p></span></p>
  3312. <h2><a name="_Toc330902776">Lights</a></h2>
  3313. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3314. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3315. "Times New Roman"'>gameplay::Light</span><span style='font-size:12.0pt;
  3316. mso-bidi-font-family:"Times New Roman"'> class can be attached to any </span><span
  3317. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3318. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in order to
  3319. add lighting information into a </span><span style='font-size:12.0pt;
  3320. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  3321. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This lighting
  3322. information must be bound to the </span><span style='font-size:12.0pt;
  3323. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3324. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that is being
  3325. applied onto the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3326. mso-bidi-font-family:"Times New Roman"'>gameplay::MeshParts</span><span
  3327. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. There are
  3328. three types of lights in the gameplay 3-D framework - directional, point, and
  3329. spot lights.<o:p></o:p></span></p>
  3330. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3331. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  3332. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3333. "Times New Roman"'>gameplay::Light</span><span style='font-size:12.0pt;
  3334. mso-bidi-font-family:"Times New Roman"'> components can be loaded into a </span><span
  3335. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  3336. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using the </span><span
  3337. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  3338. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.
  3339. However, it is your responsibility to bind the relevant lighting information
  3340. stored in the light into the </span><span style='font-size:12.0pt;font-family:
  3341. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3342. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.<o:p></o:p></span></p>
  3343. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3344. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3345. can also programmatically create a light using the factory methods on the </span><span
  3346. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Light</span><span
  3347. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class. Here is
  3348. an example of how to create and add a directional light to your scene and bind
  3349. the lighting information onto a model's material(s):<o:p></o:p></span></p>
  3350. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3351. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3352. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3353. style='font-family:Consolas;color:black'>&nbsp;MyGame::initialize()<o:p></o:p></span></pre><pre
  3354. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3355. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  3356. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3357. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3358. style='font-family:Consolas;color:green'>//&nbsp;Create&nbsp;a&nbsp;node&nbsp;and&nbsp;light&nbsp;attaching&nbsp;the&nbsp;light&nbsp;to&nbsp;the&nbsp;node</span><span
  3359. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3360. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;lightNode&nbsp;=&nbsp;Node::create(</span><span
  3361. style='font-family:Consolas;color:#A31515'>&quot;directionalLight1&quot;</span><span
  3362. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3363. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Light*&nbsp;light&nbsp;=&nbsp;Light::createDirectional(Vector3(1,&nbsp;0,&nbsp;0));<o:p></o:p></span></pre><pre
  3364. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;lightNode-&gt;setLight(light);<o:p></o:p></span></pre><pre
  3365. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3366. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3367. style='font-family:Consolas;color:green'>//&nbsp;Bind&nbsp;the&nbsp;relevant&nbsp;lighting&nbsp;information&nbsp;into&nbsp;the&nbsp;materials</span><span
  3368. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3369. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Material*&nbsp;material&nbsp;=&nbsp;_modelNode-&gt;getModel()-&gt;getMaterial();<o:p></o:p></span></pre><pre
  3370. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;MaterialParameter*&nbsp;parameter&nbsp;=&nbsp;material-&gt;getParameter(</span><span
  3371. style='font-family:Consolas;color:#A31515'>&quot;u_lightDirection&quot;</span><span
  3372. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3373. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;parameter-&gt;bindValue(lightNode,&nbsp;&amp;Node::getForwardVectorView);<o:p></o:p></span></pre><pre
  3374. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3375. <h3>Pre-computed lighting maps</h3>
  3376. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Adding
  3377. lighting information into </span><span style='font-size:12.0pt;font-family:
  3378. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3379. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> adds
  3380. computationally expensive graphics computations. In many games, there are usually
  3381. multiple static lights and objects in the scene. In this relationship, the
  3382. additive light colors contributing to the objects can be pre-computed during
  3383. the design phase. 3-D modeling tools typically support the ability to compute
  3384. the light's additive color contributions using a process called <i
  3385. style='mso-bidi-font-style:normal'>baking</i>. This process allows the artist
  3386. to direct the contributing light and color information into a separate or
  3387. combined texture so that this is not required during the rendering.<o:p></o:p></span></p>
  3388. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-size:
  3389. 12.0pt;mso-bidi-font-family:"Times New Roman"'>You can optionally declare and
  3390. pass in pre-generated light maps using the
  3391. colored-unlit.frag/textured-unlit.frag shaders and specifying in your materials<o:p></o:p></span></p>
  3392. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-size:
  3393. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>defines
  3394. = TEXTURE_LIGHTMAP<o:p></o:p></span></p>
  3395. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Then
  3396. you just assign them using the sampler<span style='mso-spacerun:yes'>  </span></span><span
  3397. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>m_lightmapTexture</span><span
  3398. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in your
  3399. material definition to the image that was pre-generated that contains the
  3400. light+color for your object. It is recommended to use 8-bit alpha textures to
  3401. reduce the size.<o:p></o:p></span></p>
  3402. <h3>Directional lights</h3>
  3403. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  3404. most games, you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3405. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3406. mso-bidi-font-family:"Times New Roman"'>ll want to add a </span><span
  3407. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Light</span><span
  3408. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class whose
  3409. type is </span><span style='font-size:12.0pt;font-family:"Courier New";
  3410. mso-bidi-font-family:"Times New Roman"'>Light::DIRECTIONAL</span><span
  3411. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This type of
  3412. light is used as the primary light source, such as a sun or moon. The
  3413. directional light represents a light source whose color is affected only by the
  3414. constant direction vector. It is typical to bind this onto the </span><span
  3415. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Materials</span><span
  3416. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> of objects
  3417. that are dynamic or moving.<o:p></o:p></span></p>
  3418. <h3>Point and spot lights</h3>
  3419. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Due
  3420. to the expensive processing overhead in using point and spot lights, many games
  3421. are designed to restrict point and spot light use to be static, baked into
  3422. light and color maps. However, the point and spot light types add exceptional
  3423. realism to games. Using them in separate or combined rendering passes, you can
  3424. bind point and spot lights into material to add dynamic point and spot light
  3425. rendering. All the built-in gameplay .materials files support directional, point
  3426. and spot lights. Also, with minor modification to the shaders, you can add
  3427. additional passes to combine two or more lights. It should be noted that there
  3428. is a significant performance impact in doing this. For these cases, you</span><span
  3429. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3430. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3431. "Times New Roman"'>ll usually want to restrict the influence of lights on a
  3432. material to no more than the one or two closest lights at a time. This can be
  3433. achieved by using a simple test in the </span><span style='font-size:12.0pt;
  3434. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  3435. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method to find
  3436. the closest light to a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3437. mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  3438. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and then bind
  3439. them to the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3440. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3441. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> once they are
  3442. found.<a name=d14e3a1310></a><o:p></o:p></span></p>
  3443. <h2><a name="_Toc330902777">Materials and shaders</a></h2>
  3444. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3445. gameplay 3-D framework uses a modern GPU shader based rendering architecture
  3446. and uses OpenGL 2.0+ (desktop) or OpenGL ES 2.0 (mobile) along with the OpenGL
  3447. Shading Language (GLSL). Currently, all the code in graphics-related classes uses
  3448. the OpenGL hardware device directly.<o:p></o:p></span></p>
  3449. <h3>Using materials</h3>
  3450. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3451. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3452. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3453. mso-bidi-font-family:"Times New Roman"'> class is the high level definition of
  3454. all the rendering information needed to draw a </span><span style='font-size:
  3455. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3456. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. When you draw
  3457. a </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3458. "Times New Roman"'>gameplay::Model</span><span style='font-size:12.0pt;
  3459. mso-bidi-font-family:"Times New Roman"'>, the mesh</span><span
  3460. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3461. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3462. "Times New Roman"'>s vertex buffer is applied and for each </span><span
  3463. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3464. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> its index
  3465. buffer(s) and </span><span style='font-size:12.0pt;font-family:"Courier New";
  3466. mso-bidi-font-family:"Times New Roman"'>gameplay::Materials</span><span
  3467. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> are applied
  3468. just before the primitives are drawn. <o:p></o:p></span></p>
  3469. <h3>RenderState and Effects</h3>
  3470. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Each
  3471. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3472. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3473. mso-bidi-font-family:"Times New Roman"'> consists of a </span><span
  3474. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3475. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and a </span><span
  3476. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3477. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The </span><span
  3478. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3479. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> stores the GPU
  3480. render state blocks that are to be applied, as well as any </span><span
  3481. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameters</span><span
  3482. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to be applied
  3483. to the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3484. mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3485. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. While a </span><span
  3486. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3487. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is typically
  3488. used once per </span><span style='font-size:12.0pt;font-family:"Courier New";
  3489. mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3490. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, the </span><span
  3491. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3492. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is created
  3493. internally based on the unique combination of selected vertex and fragment
  3494. shader programs. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3495. mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3496. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> represents a
  3497. common reusable shader program.<o:p></o:p></span></p>
  3498. <h3>Techniques</h3>
  3499. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Since
  3500. you can bind only one </span><span style='font-size:12.0pt;font-family:"Courier New";
  3501. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3502. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> per </span><span
  3503. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3504. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an additional
  3505. feature is supported that's designed to make it quick and easy to change the
  3506. way you render the parts at runtime. You can define multiple techniques by
  3507. giving them different names. Each one can have a completely different rendering
  3508. technique, and you can even change the technique being applied at runtime by
  3509. using </span><span style='font-size:12.0pt;font-family:"Courier New";
  3510. mso-bidi-font-family:"Times New Roman"'>Material::setTechnique(const char*
  3511. name)</span><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.
  3512. When a material is loaded, all the techniques are loaded ahead too. This is a
  3513. practical way of handling different light combinations or having lower-quality
  3514. rendering techniques, such as disabling bump mapping, when the object being
  3515. rendered is far away from the camera.<o:p></o:p></span></p>
  3516. <h3>Creating materials</h3>
  3517. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3518. can create a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3519. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3520. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> from the
  3521. simple </span><span style='font-size:12.0pt;font-family:"Courier New";
  3522. mso-bidi-font-family:"Times New Roman"'>gameplay::Properties</span><span
  3523. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> based
  3524. .material files. Using this simple file format, you can define your material,
  3525. specifying all the rendering techniques and pass information.<o:p></o:p></span></p>
  3526. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3527. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3528. is an example of loading a .material file:<o:p></o:p></span></p>
  3529. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3530. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3531. <pre style='background:white'><span style='font-family:Consolas;color:black'>Material*&nbsp;planeMaterial&nbsp;=&nbsp;planeNode-&gt;getModel()-&gt;setMaterial(</span><span
  3532. style='font-family:Consolas;color:#A31515'>&quot;res/floor.material&quot;</span><span
  3533. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  3534. <h3>Setting vs. binding material parameters</h3>
  3535. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  3536. you have created a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3537. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3538. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> instance, you</span><span
  3539. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3540. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3541. "Times New Roman"'>ll want to get its parameters and then set or bind various
  3542. values to them. To set a value, get the </span><span style='font-size:12.0pt;
  3543. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  3544. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and then call
  3545. the appropriate </span><span style='font-size:12.0pt;font-family:"Courier New";
  3546. mso-bidi-font-family:"Times New Roman"'>setValue()</span><span
  3547. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method on it.
  3548. Setting material parameter values is most common in parameters that are based
  3549. on values that are constants.<o:p></o:p></span></p>
  3550. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3551. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3552. is an example of setting a value on a parameter:<o:p></o:p></span></p>
  3553. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3554. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3555. <pre style='background:white'><span style='font-family:Consolas;color:black'>material-&gt;getParameter(</span><span
  3556. style='font-family:Consolas;color:#A31515'>&quot;u_diffuseColor&quot;</span><span
  3557. style='font-family:Consolas;color:black'>)-&gt;setValue(Vector4(0.53544f,&nbsp;<o:p></o:p></span></pre><pre
  3558. style='background:white'><span style='font-family:Consolas;color:black'><span
  3559. style='mso-tab-count:6'>                                                    </span><span style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'>   </span><span style='mso-spacerun:yes'> </span>0.53544f,<o:p></o:p></span></pre><pre
  3560. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                          </span><span style='mso-spacerun:yes'>                              </span><span style='mso-spacerun:yes'>   </span>0.53544f,&nbsp;1.0f));<o:p></o:p></span></pre>
  3561. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3562. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  3563. values that are not constants and are determined from other objects, you</span><span
  3564. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3565. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3566. "Times New Roman"'>ll want to bind a value to it. When binding a value, you are
  3567. giving the parameter a function pointer that will only be resolved just prior
  3568. to rendering. In this example, we will bind the forward vector for a node (in
  3569. view space).<o:p></o:p></span></p>
  3570. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3571. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3572. is an example of binding a value on a parameter:<o:p></o:p></span></p>
  3573. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3574. <pre style='background:white'><span style='font-family:Consolas;color:black'>material-&gt;getParameter(</span><span
  3575. style='font-family:Consolas;color:#A31515'>&quot;u_lightDirection&quot;</span><span
  3576. style='font-family:Consolas;color:black'>)-&gt;bindValue(lightNode,&nbsp;<o:p></o:p></span></pre><pre
  3577. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                                                      </span>&amp;Node::getForwardVectorView);<o:p></o:p></span></pre>
  3578. <h3>.material files</h3>
  3579. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>As
  3580. you can see in the following .material file, we have one Material, one
  3581. Technique and one Pass. The main parts of this material definition are the
  3582. shaders, uniforms, samplers and renderState. You will see certain upper case
  3583. values throughout the file. These represent constant enumeration values and can
  3584. usually be found in the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3585. mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3586. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
  3587. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Texture</span><span
  3588. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
  3589. definitions:<o:p></o:p></span></p>
  3590. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3591. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>material
  3592. duck<o:p></o:p></span></p>
  3593. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3594. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3595. style='mso-spacerun:yes'>    </span>technique<o:p></o:p></span></p>
  3596. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3597. style='mso-spacerun:yes'>    </span>{<span style='mso-tab-count:1'>  </span><o:p></o:p></span></p>
  3598. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3599. style='mso-spacerun:yes'>        </span>pass 0<o:p></o:p></span></p>
  3600. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3601. style='mso-spacerun:yes'>        </span>{<o:p></o:p></span></p>
  3602. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3603. style='mso-spacerun:yes'>            </span>// shaders<o:p></o:p></span></p>
  3604. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3605. style='mso-spacerun:yes'>            </span>vertexShader = res/shaders/textured.vert<o:p></o:p></span></p>
  3606. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3607. style='mso-spacerun:yes'>            </span>fragmentShader = res/shaders/textured.frag<o:p></o:p></span></p>
  3608. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3609. style='mso-tab-count:1'>       </span><span style='mso-spacerun:yes'>    
  3610. </span>defines = SPECULAR<o:p></o:p></span></p>
  3611. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3612. style='mso-spacerun:yes'>            </span><o:p></o:p></span></p>
  3613. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3614. style='mso-spacerun:yes'>            </span>// uniforms<o:p></o:p></span></p>
  3615. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3616. style='mso-spacerun:yes'>            </span>u_worldViewProjectionMatrix =
  3617. WORLD_VIEW_PROJECTION_MATRIX<o:p></o:p></span></p>
  3618. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3619. style='mso-spacerun:yes'>            </span>u_inverseTransposeWorldViewMatrix =
  3620. INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX<o:p></o:p></span></p>
  3621. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3622. style='mso-spacerun:yes'>            </span>u_cameraPosition =
  3623. CAMERA_WORLD_POSITION<o:p></o:p></span></p>
  3624. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3625. style='mso-spacerun:yes'>            </span><o:p></o:p></span></p>
  3626. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3627. style='mso-spacerun:yes'>            </span>// samplers<o:p></o:p></span></p>
  3628. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3629. style='mso-spacerun:yes'>            </span>sampler u_diffuseTexture<o:p></o:p></span></p>
  3630. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3631. style='mso-spacerun:yes'>            </span>{<o:p></o:p></span></p>
  3632. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3633. style='mso-spacerun:yes'>                </span>path = res/duck-diffuse.png<o:p></o:p></span></p>
  3634. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3635. style='mso-spacerun:yes'>                </span>mipmap = true<o:p></o:p></span></p>
  3636. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3637. style='mso-spacerun:yes'>                </span>wrapS = CLAMP<o:p></o:p></span></p>
  3638. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3639. style='mso-spacerun:yes'>           </span><span
  3640. style='mso-spacerun:yes'>     </span>wrapT = CLAMP<o:p></o:p></span></p>
  3641. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3642. style='mso-spacerun:yes'>                </span>minFilter =
  3643. NEAREST_MIPMAP_LINEAR<o:p></o:p></span></p>
  3644. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3645. style='mso-spacerun:yes'>                </span>magFilter = LINEAR<o:p></o:p></span></p>
  3646. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3647. style='mso-spacerun:yes'>            </span>}<o:p></o:p></span></p>
  3648. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3649. style='mso-spacerun:yes'>            </span>// render state<o:p></o:p></span></p>
  3650. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3651. style='mso-spacerun:yes'>            </span>renderState<o:p></o:p></span></p>
  3652. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3653. style='mso-spacerun:yes'>            </span>{<o:p></o:p></span></p>
  3654. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3655. style='mso-spacerun:yes'>                </span>cullFace = true<o:p></o:p></span></p>
  3656. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3657. style='mso-spacerun:yes'>                </span>depthTest = true<o:p></o:p></span></p>
  3658. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3659. style='mso-spacerun:yes'>       </span><span
  3660. style='mso-spacerun:yes'>     </span>}<o:p></o:p></span></p>
  3661. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3662. style='mso-spacerun:yes'>        </span>}<o:p></o:p></span></p>
  3663. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3664. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  3665. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  3666. <h3>Built-in shaders</h3>
  3667. <p class=MsoNormal>The <b style='mso-bidi-font-weight:normal'>&lt;gameplay-root&gt;/gameplay/res/shaders</b>
  3668. directory contains a set of the most common shaders used in your games. To
  3669. reduce shader code duplication the gameplay framework also supports declaring
  3670. including of shader files within vertex and shader program files.</p>
  3671. <p class=MsoNormal>If there is an error compiling the shaders the expanded
  3672. shader without the definitions is output with an .err file extension in the
  3673. same directory where the file was loaded from. </p>
  3674. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  3675. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Example:<o:p></o:p></b></p>
  3676. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p>&nbsp;</o:p></b></p>
  3677. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>#include
  3678. &quot;lib/lighting.frag&quot;<o:p></o:p></span></p>
  3679. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  3680. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3681. style='font-size:18.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Shader
  3682. preprocessor definitions<o:p></o:p></span></b></p>
  3683. <p class=MsoNormal>Using preprocessor definitions, the built-in shaders support
  3684. various features. Adding certain shader definitions (defines=XXX) will require
  3685. use specific uniform/samplers <span style='font-family:"Times New Roman","serif";
  3686. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>u_xxxxxxx<span
  3687. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  3688. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>. You must set these in
  3689. your vertex stream in your mesh and/or material parameters.</p>
  3690. <h3>Property inheritance</h3>
  3691. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>When
  3692. making materials with multiple techniques or passes, you can put any common
  3693. things, such as renderState or shaders, above the material or technique
  3694. definitions. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3695. mso-bidi-font-family:"Times New Roman"'>gameplay::Property</span><span
  3696. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file format
  3697. for the .material files supports property inheritance. Therefore, if you put
  3698. the renderState in the material sections, then all techniques and passes will
  3699. inherit its definition.<a name=d15e3a1310></a><o:p></o:p></span></p>
  3700. <h2><a name="_Toc330902778">Particle emitters</a></h2>
  3701. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3702. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3703. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='font-size:12.0pt;
  3704. mso-bidi-font-family:"Times New Roman"'> class defines all the information
  3705. needed to simulate and render a system of particles. The emitter can be defined
  3706. in various ways to represent smoke, steam, fire and other atmospheric effects,
  3707. such as rain and lightning. Once created, the emitter can be set on a </span><span
  3708. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3709. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in order to
  3710. follow an object, or it can be placed within a scene. <o:p></o:p></span></p>
  3711. <h3>Particles as sprites</h3>
  3712. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3713. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3714. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='font-size:12.0pt;
  3715. mso-bidi-font-family:"Times New Roman"'> always has a sprite/texture and a
  3716. maximum number of particles that can be alive at any given time. After the
  3717. emitter is created, these cannot be changed. Particles are rendered as
  3718. camera-facing billboards using the emitter's sprite/texture. The emitter's
  3719. sprite/texture properties determine whether the texture is treated as a single
  3720. image, a texture atlas, or an animated sprite.<o:p></o:p></span></p>
  3721. <h3>Particle properties</h3>
  3722. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3723. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3724. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='font-size:12.0pt;
  3725. mso-bidi-font-family:"Times New Roman"'> also has a number of properties that
  3726. determine values assigned to the individual particles it emits. Scalar
  3727. properties, such as particle begin- and end-size, are assigned within a minimum
  3728. and a maximum value; vector properties are assigned within the domain or space,
  3729. and are defined by a base vector and a variance vector.<o:p></o:p></span></p>
  3730. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3731. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3732. variance vector is multiplied by a random scalar between 1 and -1, and the base
  3733. vector is added to this result. This allows an emitter to be created, which
  3734. emits particles with properties that are randomized, yet fit within a
  3735. well-defined range. To make a property deterministic, simply set the minimum
  3736. value to the same value as the maximum for that property, or set its variance
  3737. to a zero vector. To learn more about different scalars, vector and rendering
  3738. properties that can be set on a </span><span style='font-size:12.0pt;
  3739. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ParticleEmitter</span><span
  3740. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, look at the
  3741. C++ API.<o:p></o:p></span></p>
  3742. <h3>Creating particle emitters</h3>
  3743. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  3744. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3745. "Times New Roman"'>ParticlEmitter::create()</span><span style='font-size:12.0pt;
  3746. mso-bidi-font-family:"Times New Roman"'> method to create an emitter from a
  3747. particle file. The .particle file format and semantics are very similar to the
  3748. .material file format. This is because it also leverages the </span><span
  3749. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Properties</span><span
  3750. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
  3751. definition and supports all the properties supported in the C++ API for the </span><span
  3752. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ParticleEmitter</span><span
  3753. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.<o:p></o:p></span></p>
  3754. <h3>Animated sprites for particles</h3>
  3755. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>It
  3756. is very easy to make the particles animate through a list of images. Just make
  3757. your images have a tile of sprite images and then modify the sprite</span><span
  3758. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3759. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3760. "Times New Roman"'>s base properties in the emitter to control the animation
  3761. behavior.<o:p></o:p></span></p>
  3762. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3763. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3764. can then even do things such as animate images of 3-D dice using only 2-D
  3765. images.<a name=d16e3a1310></a><o:p></o:p></span></p>
  3766. <h2><a name="_Toc330902779">Physics</a></h2>
  3767. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3768. gameplay framework supports 3-D physics using the game service/controller </span><span
  3769. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  3770. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The </span><span
  3771. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  3772. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
  3773. maintains a physics world that has gravity, and will simulate the objects you
  3774. add to it.<o:p></o:p></span></p>
  3775. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3776. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3777. gameplay physics system supports 3-D rigid body dynamics, including collision
  3778. shapes, constraints, and a physics character class. To simulate objects within
  3779. the physics world, you need to create a </span><span style='font-size:12.0pt;
  3780. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsCollisionObject</span><span
  3781. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> object
  3782. representing the geometry, or </span><span style='font-size:12.0pt;font-family:
  3783. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  3784. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. By attaching
  3785. a collision object to a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3786. mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3787. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, the rigid
  3788. body will be added to the physics world and the simulation will automatically
  3789. update the node</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3790. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3791. mso-bidi-font-family:"Times New Roman"'>s transformation.<o:p></o:p></span></p>
  3792. <h3>PhysicsCollisionObject</h3>
  3793. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Courier New";
  3794. mso-bidi-font-family:"Times New Roman"'>PhysicsCollisionObject</span><span
  3795. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is the base
  3796. class that provides an interface for receiving collision events. <o:p></o:p></span></p>
  3797. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3798. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3799. can add collision listeners to a </span><span style='font-size:12.0pt;
  3800. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsCollisionObject</span><span
  3801. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or test if the
  3802. collision object currently collides with another collision object.<o:p></o:p></span></p>
  3803. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3804. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  3805. are 3 types of collision objects:<a name=d16e49a1310></a><span
  3806. style='mso-tab-count:2'>         </span><o:p></o:p></span></p>
  3807. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3808. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3809. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3810. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3811. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3812. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3813. "Times New Roman"'>PhysicsRigidBody<span style='mso-tab-count:2'>              </span><o:p></o:p></span></p>
  3814. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3815. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3816. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3817. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3818. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3819. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3820. "Times New Roman"'>PhysicsGhostObject<span style='mso-tab-count:2'>           </span><o:p></o:p></span></p>
  3821. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3822. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3823. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3824. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3825. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3826. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3827. "Times New Roman"'>PhysicsCharacter<span style='mso-tab-count:6'>                                               </span><o:p></o:p></span></p>
  3828. <h3>PhysicsRigidBody</h3>
  3829. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3830. rigid body is an idealized, infinitely hard, non-deformable solid object. Rigid
  3831. bodies have mass, shape and other properties that affect forces within the
  3832. simulation. <o:p></o:p></span></p>
  3833. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3834. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3835. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3836. "Times New Roman"'>PhysicsRigidBody</span><span style='font-size:12.0pt;
  3837. mso-bidi-font-family:"Times New Roman"'> can be set to be a kinematic rigid
  3838. body. A kinematic rigid body is an object that is not simulated by the physics
  3839. system, and instead has its transform driven manually.<o:p></o:p></span></p>
  3840. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3841. <h4>Create a PhysicsRigidBody</h4>
  3842. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3843. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3844. create a rigid body, first you need to know what kind of shape you want to
  3845. simulate. The physics system supports boxes, spheres, meshes, capsules, and
  3846. terrain height fields. For basic shapes, such as boxes and spheres, you can
  3847. programmatically create the rigid bodies by calling </span><span
  3848. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::setCollisionObject()</span><span
  3849. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and passing in
  3850. the desired shape type.<o:p></o:p></span></p>
  3851. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3852. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>PhysicsRigidBody::Parameters
  3853. params;<o:p></o:p></span></p>
  3854. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>params.mass
  3855. = 10.0f;<o:p></o:p></span></p>
  3856. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>node-&gt;setCollisionObject(PhysicsCollisionObject::RIGID_BODY,
  3857. <o:p></o:p></span></p>
  3858. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3859. style='mso-spacerun:yes'>                         </span>PhysicsCollisionShape::box(),
  3860. &amp;params);<o:p></o:p></span></p>
  3861. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3862. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  3863. other types of rigid bodies must be created using the </span><span
  3864. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  3865. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  3866. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.physics</span><span
  3867. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property
  3868. definition files. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3869. mso-bidi-font-family:"Times New Roman"'>.scene</span><span style='font-size:
  3870. 12.0pt;mso-bidi-font-family:"Times New Roman"'> file allows you to bind various
  3871. attachments or properties to nodes, including a rigid body.<o:p></o:p></span></p>
  3872. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3873. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  3874. example, to create a mesh rigid body for the node within the scene with ID
  3875. equal to tree_1:<o:p></o:p></span></p>
  3876. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3877. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3878. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3879. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3880. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
  3881. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3882. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3883. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3884. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>scene<o:p></o:p></span></p>
  3885. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3886. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3887. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  3888. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3889. style='mso-spacerun:yes'>    </span>node tree_1<o:p></o:p></span></p>
  3890. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3891. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  3892. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3893. style='mso-spacerun:yes'>        </span>...<o:p></o:p></span></p>
  3894. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3895. style='mso-spacerun:yes'>        </span>collisionObject =
  3896. game.physics#tree_mesh<o:p></o:p></span></p>
  3897. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3898. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  3899. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3900. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  3901. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  3902. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  3903. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3904. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.physics:</span></b><span
  3905. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3906. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3907. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3908. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  3909. tree_mesh<o:p></o:p></span></p>
  3910. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3911. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3912. style='mso-spacerun:yes'>    </span>type = RIGID_BODY<o:p></o:p></span></p>
  3913. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3914. style='mso-spacerun:yes'>    </span>shape = MESH<o:p></o:p></span></p>
  3915. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3916. style='mso-spacerun:yes'>    </span>mass = 15.0<o:p></o:p></span></p>
  3917. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3918. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  3919. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  3920. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3921. "Times New Roman"'><o:p></o:p></span></p>
  3922. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3923. mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>  
  3924. </span></span><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3925. <h4>RigidBody schema</h4>
  3926. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3927. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  3928. properties have default values if not defined. See </span><span
  3929. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsRigidBody::Parameters</span><span
  3930. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> for more
  3931. information.<o:p></o:p></span></p>
  3932. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3933. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  3934. &lt;string&gt;<o:p></o:p></span></p>
  3935. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3936. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3937. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>   
  3938. </span><span style='mso-spacerun:yes'>            </span>= &lt;RIGID_BODY |
  3939. GHOST_OBJECT | CHARACTER&gt;<o:p></o:p></span></p>
  3940. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3941. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  3942. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  3943. MESH | HEIGHTFIELD | CAPSULE&gt;<o:p></o:p></span></p>
  3944. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3945. style='mso-spacerun:yes'>    </span>image<span
  3946. style='mso-spacerun:yes'>               </span>= &lt;string&gt; // only for
  3947. HEIGHTFIELD<o:p></o:p></span></p>
  3948. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3949. style='mso-spacerun:yes'>    </span>radius<span
  3950. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<span
  3951. style='mso-spacerun:yes'>     </span><o:p></o:p></span></p>
  3952. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3953. style='mso-spacerun:yes'>    </span>height<span
  3954. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  3955. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3956. style='mso-spacerun:yes'>    </span>extents<span
  3957. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  3958. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3959. style='mso-spacerun:yes'>    </span>center<span
  3960. style='mso-spacerun:yes'>              </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  3961. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3962. style='mso-spacerun:yes'>    </span>centerAbsolute<span
  3963. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  3964. float, float&gt;<o:p></o:p></span></p>
  3965. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  3966. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3967. style='mso-spacerun:yes'>    </span>mass<span
  3968. style='mso-spacerun:yes'>                </span>= &lt;float&gt;<o:p></o:p></span></p>
  3969. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3970. style='mso-spacerun:yes'>    </span>friction<span
  3971. style='mso-spacerun:yes'>            </span>= &lt;float&gt;<o:p></o:p></span></p>
  3972. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3973. style='mso-spacerun:yes'>    </span>restitution<span
  3974. style='mso-spacerun:yes'>         </span>= &lt;float&gt;<o:p></o:p></span></p>
  3975. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3976. style='mso-spacerun:yes'>    </span>linearDamping<span
  3977. style='mso-spacerun:yes'>       </span>= &lt;float&gt;<o:p></o:p></span></p>
  3978. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3979. style='mso-spacerun:yes'>    </span>angularDamping<span
  3980. style='mso-spacerun:yes'>      </span>= &lt;float&gt;<o:p></o:p></span></p>
  3981. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3982. style='mso-spacerun:yes'>    </span>kinematic<span
  3983. style='mso-spacerun:yes'>           </span>= &lt;bool&gt;<span
  3984. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  3985. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3986. style='mso-spacerun:yes'>    </span>anisotropicFriction = &lt;float, float,
  3987. float&gt;<o:p></o:p></span></p>
  3988. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3989. style='mso-spacerun:yes'>    </span>gravity<span
  3990. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  3991. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  3992. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3993. "Times New Roman"'><o:p></o:p></span></p>
  3994. <p class=MsoNormal><a name=d16e136a1310></a><span style='font-size:12.0pt;
  3995. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3996. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  3997. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  3998. <thead>
  3999. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  4000. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4001. padding:0in 5.4pt 0in 5.4pt'>
  4002. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4003. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4004. mso-bidi-font-weight:normal'><span style='mso-spacerun:yes'> </span>Shapes<o:p></o:p></span></p>
  4005. </td>
  4006. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4007. padding:0in 5.4pt 0in 5.4pt'>
  4008. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4009. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4010. mso-bidi-font-weight:normal'><span
  4011. style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
  4012. </td>
  4013. </tr>
  4014. </thead>
  4015. <tr style='mso-yfti-irow:1'>
  4016. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4017. 0in 5.4pt 0in 5.4pt'>
  4018. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4019. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4020. style='mso-spacerun:yes'> </span>BOX <o:p></o:p></span></p>
  4021. </td>
  4022. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4023. 0in 5.4pt 0in 5.4pt'>
  4024. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4025. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4026. style='mso-spacerun:yes'> </span>extents, center, center-absolute <o:p></o:p></span></p>
  4027. </td>
  4028. </tr>
  4029. <tr style='mso-yfti-irow:2'>
  4030. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4031. padding:0in 5.4pt 0in 5.4pt'>
  4032. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4033. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4034. style='mso-spacerun:yes'> </span>SPHERE <o:p></o:p></span></p>
  4035. </td>
  4036. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4037. padding:0in 5.4pt 0in 5.4pt'>
  4038. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4039. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4040. style='mso-spacerun:yes'> </span>radius, center, center-absolute <o:p></o:p></span></p>
  4041. </td>
  4042. </tr>
  4043. <tr style='mso-yfti-irow:3'>
  4044. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4045. 0in 5.4pt 0in 5.4pt'>
  4046. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4047. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4048. style='mso-spacerun:yes'> </span>MESH <o:p></o:p></span></p>
  4049. </td>
  4050. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4051. 0in 5.4pt 0in 5.4pt'>
  4052. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4053. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4054. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  4055. </td>
  4056. </tr>
  4057. <tr style='mso-yfti-irow:4'>
  4058. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4059. padding:0in 5.4pt 0in 5.4pt'>
  4060. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4061. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4062. style='mso-spacerun:yes'> </span>HEIGHTFIELD <o:p></o:p></span></p>
  4063. </td>
  4064. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4065. padding:0in 5.4pt 0in 5.4pt'>
  4066. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4067. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4068. style='mso-spacerun:yes'> </span>image <o:p></o:p></span></p>
  4069. </td>
  4070. </tr>
  4071. <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
  4072. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4073. 0in 5.4pt 0in 5.4pt'>
  4074. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4075. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4076. style='mso-spacerun:yes'> </span>CAPSULE <o:p></o:p></span></p>
  4077. </td>
  4078. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4079. 0in 5.4pt 0in 5.4pt'>
  4080. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4081. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4082. style='mso-spacerun:yes'> </span>radius, height, center, center-absolute <o:p></o:p></span></p>
  4083. </td>
  4084. </tr>
  4085. </table>
  4086. <h3>PhysicsGhostObject</h3>
  4087. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  4088. ghost object is like a rigid body except that it does not have an effect the
  4089. simulation. It will not cause forces or react to the other rigid bodies. Ghost
  4090. objects have a shape but they do not have mass, or any of the properties that
  4091. affect forces.<o:p></o:p></span></p>
  4092. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4093. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ghost
  4094. objects are useful for querying the simulation, or detecting collisions without
  4095. having rigid bodies react to the ghost object. A ghost object could be used to
  4096. detect if an object entered a volume, such as a soccer ball going into a goal.
  4097. This use of a ghost object is often called a volumetric trigger. Ghost objects
  4098. can also detect if they collide with other ghost objects.<o:p></o:p></span></p>
  4099. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4100. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Collision
  4101. objects do not require a model so you could use a ghost object to check if a
  4102. camera collides with a wall.<o:p></o:p></span></p>
  4103. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4104. <h4>Creating a PhysicsGhostObject</h4>
  4105. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4106. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Programmatically:<o:p></o:p></span></p>
  4107. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4108. <pre style='background:white'><span style='font-family:Consolas;color:green'>//&nbsp;Create&nbsp;a&nbsp;ghost&nbsp;object&nbsp;with&nbsp;radius&nbsp;5</span><span
  4109. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4110. style='background:white'><span style='font-family:Consolas;color:black'>node-&gt;setCollisionObject(PhysicsCollisionObject::GHOST_OBJECT,<o:p></o:p></span></pre><pre
  4111. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                         </span>PhysicsCollisionShape::sphere(5.0f));<o:p></o:p></span></pre>
  4112. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4113. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4114. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4115. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  4116. a .physics file:<o:p></o:p></span></p>
  4117. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4118. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4119. powerup<o:p></o:p></span></p>
  4120. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4121. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4122. style='mso-spacerun:yes'>    </span>type = GHOST_OBJECT<o:p></o:p></span></p>
  4123. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4124. style='mso-spacerun:yes'>    </span>shape = SPHERE<o:p></o:p></span></p>
  4125. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4126. style='mso-spacerun:yes'>    </span>radius = 5.0<o:p></o:p></span></p>
  4127. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4128. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4129. <h4>PhysicsGhostObject schema</h4>
  4130. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4131. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ghost
  4132. objects only have a shape and support the same shapes as rigid bodies. <o:p></o:p></span></p>
  4133. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4134. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4135. &lt;string&gt;<o:p></o:p></span></p>
  4136. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4137. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4138. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>   
  4139. </span><span style='mso-spacerun:yes'>            </span>= GHOST_OBJECT<o:p></o:p></span></p>
  4140. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4141. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  4142. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  4143. MESH | HEIGHTFIELD | CAPSULE&gt;<o:p></o:p></span></p>
  4144. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4145. style='mso-spacerun:yes'>    </span>radius<span
  4146. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4147. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4148. style='mso-spacerun:yes'>    </span>height<span
  4149. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4150. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4151. style='mso-spacerun:yes'>    </span>extents<span
  4152. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4153. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4154. style='mso-spacerun:yes'>    </span>center<span
  4155. style='mso-spacerun:yes'>              </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4156. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4157. style='mso-spacerun:yes'>    </span>centerAbsolute<span
  4158. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  4159. float, float&gt;<o:p></o:p></span></p>
  4160. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4161. style='mso-spacerun:yes'>    </span>image<span
  4162. style='mso-spacerun:yes'>               </span>= &lt;string&gt; <span
  4163. style='mso-spacerun:yes'> </span>// HEIGHTFIELD shapes only.<o:p></o:p></span></p>
  4164. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4165. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4166. "Times New Roman"'><o:p></o:p></span></p>
  4167. <h3>PhysicsCharacter</h3>
  4168. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4169. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4170. "Times New Roman"'>PhysicsCharacter</span><span style='font-size:12.0pt;
  4171. mso-bidi-font-family:"Times New Roman"'> class can be used to control the
  4172. movements and collisions of a character in a game. It interacts with the
  4173. physics system to apply gravity and handle collisions, however dynamics are not
  4174. applied to the character directly by the physics system. Instead, the
  4175. character's movement is controlled directly by the </span><span
  4176. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsCharacter</span><span
  4177. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class. This
  4178. results in a more responsive and typical game character than would be possible
  4179. if trying to move a character by applying physical simulation with forces.<o:p></o:p></span></p>
  4180. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4181. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4182. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4183. <h4>Creating a PhysicsCharacter</h4>
  4184. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4185. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4186. programmatically create a </span><span style='font-size:12.0pt;font-family:
  4187. "Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsCharacter</span><span
  4188. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with mass 20
  4189. and capsule shape:<o:p></o:p></span></p>
  4190. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4191. <pre style='background:white'><span style='font-family:Consolas;color:black'>PhysicsRigidBody::Parameters&nbsp;params(20.0f);<o:p></o:p></span></pre><pre
  4192. style='background:white'><span style='font-family:Consolas;color:black'>node-&gt;setCollisionObject(PhysicsCollisionObject::CHARACTER,<o:p></o:p></span></pre><pre
  4193. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                         </span>PhysicsCollisionShape::capsule(1.2f,&nbsp;5.0f,<o:p></o:p></span></pre><pre
  4194. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                                                    </span><span style='mso-spacerun:yes'>    </span>Vector3(0,&nbsp;2.5,&nbsp;0), </span><span
  4195. style='font-family:Consolas;color:blue'>true</span><span style='font-family:
  4196. Consolas;color:black'>), <o:p></o:p></span></pre><pre style='background:white'><span
  4197. style='font-family:Consolas;color:black'><span style='mso-tab-count:6'>                                                    </span><span style='mso-spacerun:yes'>      </span>&amp;params);<o:p></o:p></span></pre><pre
  4198. style='background:white'><span style='font-family:Consolas;color:black'>PhysicsCharacter*&nbsp;character&nbsp;=&nbsp;</span><span
  4199. style='font-family:Consolas;color:blue'>static_cast</span><span
  4200. style='font-family:Consolas;color:black'>&lt;PhysicsCharacter*&gt;(<o:p></o:p></span></pre><pre
  4201. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                        </span><span style='mso-spacerun:yes'>                               </span><span style='mso-spacerun:yes'> </span>node-&gt;getCollisionObject());<o:p></o:p></span></pre><pre
  4202. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre>
  4203. <h4>PhysicsCharacter schema</h4>
  4204. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4205. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Physics
  4206. characters have a mass and shape. A capsule is a typical shape for a typical
  4207. biped character.<o:p></o:p></span></p>
  4208. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4209. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4210. &lt;string&gt;<o:p></o:p></span></p>
  4211. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4212. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4213. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>   
  4214. </span><span style='mso-spacerun:yes'>           </span><span
  4215. style='mso-spacerun:yes'> </span>= CHARACTER<o:p></o:p></span></p>
  4216. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4217. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  4218. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  4219. MESH | CAPSULE&gt;<o:p></o:p></span></p>
  4220. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4221. style='mso-spacerun:yes'>    </span>radius<span
  4222. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4223. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4224. style='mso-spacerun:yes'>    </span>height<span
  4225. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4226. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4227. style='mso-spacerun:yes'>    </span>extents<span
  4228. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4229. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4230. style='mso-spacerun:yes'>    </span>center<span
  4231. style='mso-spacerun:yes'>              </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4232. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4233. style='mso-spacerun:yes'>    </span>centerAbsolute<span
  4234. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  4235. float, float&gt;<o:p></o:p></span></p>
  4236. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4237. style='mso-spacerun:yes'>    </span>mass<span
  4238. style='mso-spacerun:yes'>                </span>= &lt;float&gt;<o:p></o:p></span></p>
  4239. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4240. <h3>Creating a PhysicsContraint</h3>
  4241. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4242. gameplay framework supports various types of constraints between two rigid
  4243. bodies (or one rigid body and the physics world), including hinge, fixed,
  4244. generic (six-degree-of-freedom), socket, and spring. Constraints can be created
  4245. programmatically using one of the create functions on </span><span
  4246. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  4247. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or they can
  4248. be specified within the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4249. mso-bidi-font-family:"Times New Roman"'>physics</span><span style='font-size:
  4250. 12.0pt;mso-bidi-font-family:"Times New Roman"'> section of the </span><span
  4251. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  4252. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file. For
  4253. example, to create a hinge constraint from within a </span><span
  4254. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  4255. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file between
  4256. the rigid body attached to the node with id door and the physics world:<o:p></o:p></span></p>
  4257. <b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  4258. font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
  4259. mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
  4260. EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
  4261. </span></b>
  4262. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4263. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
  4264. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4265. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4266. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>scene<o:p></o:p></span></p>
  4267. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4268. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4269. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  4270. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4271. style='mso-spacerun:yes'>    </span>physics<o:p></o:p></span></p>
  4272. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4273. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4274. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4275. style='mso-spacerun:yes'>        </span>...<o:p></o:p></span></p>
  4276. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4277. style='mso-spacerun:yes'>        </span>constraint<o:p></o:p></span></p>
  4278. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4279. style='mso-spacerun:yes'>    </span><span style='mso-tab-count:1'>   </span><span
  4280. style='mso-spacerun:yes'>  </span>{<o:p></o:p></span></p>
  4281. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4282. style='mso-spacerun:yes'>            </span>type = HINGE<o:p></o:p></span></p>
  4283. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4284. style='mso-spacerun:yes'>            </span>rigidBodyA = door<o:p></o:p></span></p>
  4285. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4286. style='mso-spacerun:yes'>            </span>rotationOffsetA = 0.0, 1.0, 0.0,
  4287. 90.0<o:p></o:p></span></p>
  4288. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4289. style='mso-spacerun:yes'>            </span>translationOffsetA = 0.0, 0.0, 2.0<o:p></o:p></span></p>
  4290. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4291. style='mso-spacerun:yes'>            </span>limits = 0.0, 90.0, 0.5<o:p></o:p></span></p>
  4292. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4293. style='mso-spacerun:yes'>    </span><span style='mso-spacerun:yes'>   </span>}<o:p></o:p></span></p>
  4294. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4295. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4296. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4297. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4298. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4299. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>PhysicsConstraint
  4300. schema</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4301. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4302. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>constraint
  4303. &lt;string&gt;<o:p></o:p></span></p>
  4304. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4305. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4306. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>  
  4307. </span><span style='mso-tab-count:1'>   </span><span
  4308. style='mso-spacerun:yes'>          </span>= &lt;FIXED | GENERIC | HINGE |<span
  4309. style='mso-spacerun:yes'>  </span>SOCKET | SPRING&gt;<o:p></o:p></span></p>
  4310. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4311. style='mso-spacerun:yes'>    </span>rigidBodyA<span
  4312. style='mso-spacerun:yes'>         </span>= &lt;string&gt;<o:p></o:p></span></p>
  4313. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4314. style='mso-spacerun:yes'>    </span>rigidBodyB<span
  4315. style='mso-spacerun:yes'>         </span>= &lt;string&gt;<o:p></o:p></span></p>
  4316. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4317. style='mso-spacerun:yes'>    </span>translationOffsetA = &lt;float, float,
  4318. float&gt;<o:p></o:p></span></p>
  4319. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4320. style='mso-spacerun:yes'>    </span>translationOffsetB = &lt;float, float,
  4321. float&gt;<o:p></o:p></span></p>
  4322. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4323. style='mso-spacerun:yes'>    </span>rotationOffsetA<span
  4324. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4325. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4326. style='mso-spacerun:yes'>    </span>rotationOffsetB<span
  4327. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4328. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4329. style='mso-spacerun:yes'>    </span>angularLowerLimit<span
  4330. style='mso-spacerun:yes'>  </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4331. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4332. style='mso-spacerun:yes'>    </span>angularUpperLimit<span
  4333. style='mso-spacerun:yes'>  </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4334. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4335. style='mso-spacerun:yes'>    </span>linearLowerLimit<span
  4336. style='mso-spacerun:yes'>   </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4337. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4338. style='mso-spacerun:yes'>    </span>linearUpperLimit<span
  4339. style='mso-spacerun:yes'>   </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4340. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4341. style='mso-spacerun:yes'>    </span>limits<span
  4342. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4343. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4344. style='mso-spacerun:yes'>    </span>angularDampingX<span
  4345. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4346. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4347. style='mso-spacerun:yes'>    </span>angularDampingY<span
  4348. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4349. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4350. style='mso-spacerun:yes'>    </span>angularDampingZ<span
  4351. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4352. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4353. style='mso-spacerun:yes'>    </span>angularStrengthX<span
  4354. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4355. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4356. style='mso-spacerun:yes'>    </span>angularStrengthY<span
  4357. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4358. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4359. style='mso-spacerun:yes'>    </span>angularStrengthZ<span
  4360. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4361. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4362. style='mso-spacerun:yes'>    </span>linearDampingX<span
  4363. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4364. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4365. style='mso-spacerun:yes'>    </span>linearDampingY<span
  4366. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4367. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4368. style='mso-spacerun:yes'>    </span>linearDampingZ<span
  4369. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4370. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4371. style='mso-spacerun:yes'>    </span>linearStrengthX<span
  4372. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4373. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4374. style='mso-spacerun:yes'>    </span>linearStrengthY<span
  4375. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4376. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4377. style='mso-spacerun:yes'>    </span>linearStrengthZ<span
  4378. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4379. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4380. style='mso-spacerun:yes'>    </span>breakingImpulse<span
  4381. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4382. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4383. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4384. "Times New Roman"'><o:p></o:p></span></p>
  4385. <p class=MsoNormal><a name=d16e328a1310></a><span style='font-size:12.0pt;
  4386. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4387. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  4388. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  4389. <thead>
  4390. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  4391. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4392. padding:0in 5.4pt 0in 5.4pt'>
  4393. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4394. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4395. mso-bidi-font-weight:normal'><span
  4396. style='mso-spacerun:yes'> </span>Constraint Types <o:p></o:p></span></p>
  4397. </td>
  4398. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4399. padding:0in 5.4pt 0in 5.4pt'>
  4400. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4401. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4402. mso-bidi-font-weight:normal'><span
  4403. style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
  4404. </td>
  4405. </tr>
  4406. </thead>
  4407. <tr style='mso-yfti-irow:1'>
  4408. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4409. 0in 5.4pt 0in 5.4pt'>
  4410. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4411. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4412. style='mso-spacerun:yes'> </span>FIXED <o:p></o:p></span></p>
  4413. </td>
  4414. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4415. 0in 5.4pt 0in 5.4pt'>
  4416. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4417. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4418. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  4419. </td>
  4420. </tr>
  4421. <tr style='mso-yfti-irow:2'>
  4422. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4423. padding:0in 5.4pt 0in 5.4pt'>
  4424. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4425. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4426. style='mso-spacerun:yes'> </span>GENERIC <o:p></o:p></span></p>
  4427. </td>
  4428. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4429. padding:0in 5.4pt 0in 5.4pt'>
  4430. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4431. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4432. translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
  4433. angularUpperLimit, linearLowerLimit, linearUpperLimit <o:p></o:p></span></p>
  4434. </td>
  4435. </tr>
  4436. <tr style='mso-yfti-irow:3'>
  4437. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4438. 0in 5.4pt 0in 5.4pt'>
  4439. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4440. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4441. style='mso-spacerun:yes'> </span>HINGE <o:p></o:p></span></p>
  4442. </td>
  4443. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4444. 0in 5.4pt 0in 5.4pt'>
  4445. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4446. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4447. translationOffsetB, rotationOffsetA, rotationOffsetB, limits <o:p></o:p></span></p>
  4448. </td>
  4449. </tr>
  4450. <tr style='mso-yfti-irow:4'>
  4451. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4452. padding:0in 5.4pt 0in 5.4pt'>
  4453. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4454. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4455. style='mso-spacerun:yes'> </span>SOCKET <o:p></o:p></span></p>
  4456. </td>
  4457. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4458. padding:0in 5.4pt 0in 5.4pt'>
  4459. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4460. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4461. translationOffsetB <o:p></o:p></span></p>
  4462. </td>
  4463. </tr>
  4464. <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
  4465. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4466. 0in 5.4pt 0in 5.4pt'>
  4467. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4468. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4469. style='mso-spacerun:yes'> </span>SPRING <o:p></o:p></span></p>
  4470. </td>
  4471. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4472. 0in 5.4pt 0in 5.4pt'>
  4473. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4474. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4475. translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
  4476. angularUpperLimit, linearLowerLimit, linearUpperLimit, angularDampingX,
  4477. angularDampingY, angularDampingZ, angularStrengthX, angularStrengthY,
  4478. angularStrengthZ, linearDampingX, linearDampingY, linearDampingZ,
  4479. linearStrengthX, linearStrengthY, linearStrengthZ <o:p></o:p></span></p>
  4480. </td>
  4481. </tr>
  4482. </table>
  4483. <h3>Handling collisions</h3>
  4484. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4485. gameplay framework allows you to register to be notified whenever a collision
  4486. occurs between two rigid bodies (and also when two rigid bodies stop
  4487. colliding). In order to do this, you must define a class that derives from </span><span
  4488. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsRigidBody::Listener</span><span
  4489. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and implements
  4490. the function </span><span style='font-size:12.0pt;font-family:"Courier New";
  4491. mso-bidi-font-family:"Times New Roman"'>collisionEvent(…)</span><span
  4492. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Then, you
  4493. must add an instance of the class as a listener on a given rigid body using the
  4494. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4495. "Times New Roman"'>PhysicsRigidBody::addCollisionListener</span><span
  4496. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> function. For
  4497. example, to print all information for all collisions with the door and for
  4498. collisions between the character and the wall:<o:p></o:p></span></p>
  4499. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4500. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></b></p>
  4501. <b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  4502. font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
  4503. mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
  4504. EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
  4505. </span></b>
  4506. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4507. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.h:</span></b><span
  4508. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4509. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4510. <pre style='background:white'><span style='font-family:Consolas;color:blue'>class</span><span
  4511. style='font-family:Consolas;color:black'>&nbsp;MyGame:&nbsp;</span><span
  4512. style='font-family:Consolas;color:blue'>public</span><span style='font-family:
  4513. Consolas;color:black'>&nbsp;gameplay::PhysicsRigidBody::Listener<o:p></o:p></span></pre><pre
  4514. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  4515. style='background:white'><span style='font-family:Consolas;color:blue'>public</span><span
  4516. style='font-family:Consolas;color:black'>:<o:p></o:p></span></pre><pre
  4517. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  4518. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;<o:p></o:p></span></pre><pre
  4519. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4520. style='font-family:Consolas;color:green'>/**</span><span style='font-family:
  4521. Consolas;color:black'><o:p></o:p></span></pre><pre style='background:white'><span
  4522. style='font-family:Consolas;color:green'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Collision&nbsp;event&nbsp;handler.</span><span
  4523. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4524. style='background:white'><span style='font-family:Consolas;color:green'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span
  4525. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4526. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4527. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  4528. Consolas;color:black'>&nbsp;collisionEvent(PhysicsRigidBody::Listener::EventType&nbsp;type,<o:p></o:p></span></pre><pre
  4529. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                        </span></span><span
  4530. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4531. Consolas;color:black'>&nbsp;PhysicsRigidBody::CollisionPair&amp;&nbsp;pair,&nbsp;<o:p></o:p></span></pre><pre
  4532. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4533. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4534. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointA,&nbsp;</span><span
  4535. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4536. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointB);<o:p></o:p></span></pre><pre
  4537. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  4538. style='background:white'><span style='font-family:Consolas;color:black'>};<o:p></o:p></span></pre>
  4539. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4540. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4541. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.cpp:</span></b><span
  4542. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4543. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4544. <pre style='background:white'><a name=d17e3a1310></a><span style='font-family:
  4545. Consolas;color:black'>MyGame*&nbsp;mygame;<o:p></o:p></span></pre><pre
  4546. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;door;<o:p></o:p></span></pre><pre
  4547. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;character;<o:p></o:p></span></pre><pre
  4548. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;wall;<o:p></o:p></span></pre><pre
  4549. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4550. style='background:white'><span style='font-family:Consolas;color:black'>...<o:p></o:p></span></pre><pre
  4551. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4552. style='background:white'><span style='font-family:Consolas;color:black'>door-&gt;getRigidBody()-&gt;addCollisionListener(mygame);<o:p></o:p></span></pre><pre
  4553. style='background:white'><span style='font-family:Consolas;color:black'>character-&gt;getRigidBody()-&gt;addCollisionListener(mygame,&nbsp;wall);<o:p></o:p></span></pre><pre
  4554. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4555. style='background:white'><span style='font-family:Consolas;color:black'>...<o:p></o:p></span></pre><pre
  4556. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4557. style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  4558. style='font-family:Consolas;color:black'>&nbsp;MyGame::collisionEvent(PhysicsRigidBody::Listener::EventType&nbsp;type,&nbsp;<o:p></o:p></span></pre><pre
  4559. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4560. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4561. Consolas;color:black'>&nbsp;PhysicsRigidBody::CollisionPair&amp;&nbsp;pair,&nbsp;<o:p></o:p></span></pre><pre
  4562. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='mso-spacerun:yes'>      </span></span><span
  4563. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4564. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointA,&nbsp;</span><span
  4565. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4566. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointB)<o:p></o:p></span></pre><pre
  4567. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  4568. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;GP_WARN(</span><span
  4569. style='font-family:Consolas;color:#A31515'>&quot;Collision&nbsp;between&nbsp;rigid&nbsp;bodies&nbsp;%s&nbsp;(at&nbsp;point&nbsp;(%f,&nbsp;%f,&nbsp;%f)) &quot;<o:p></o:p></span></pre><pre
  4570. style='background:white'><span style='font-family:Consolas;color:#A31515'><span style='mso-spacerun:yes'>            </span>&quot;and&nbsp;%s&nbsp;(at&nbsp;point&nbsp;(%f,&nbsp;%f,&nbsp;%f)).&quot;</span><span
  4571. style='font-family:Consolas;color:black'>,<o:p></o:p></span></pre><pre
  4572. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pair._rbA-getNode()-getId(),&nbsp;pointA.x,&nbsp;pointA.y,&nbsp;pointA.z,&nbsp;<o:p></o:p></span></pre><pre
  4573. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pair._rbB-getNode()-getId(),&nbsp;pointB.x,&nbsp;pointB.y,&nbsp;pointB.z);<o:p></o:p></span></pre><pre
  4574. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  4575. <h2><a name="_Toc330902780">Animation</a></h2>
  4576. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4577. is a key component to bringing your game to life. Within gameplay, there is support
  4578. to create both property animations and character animations. The </span><span
  4579. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Animation</span><span
  4580. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class provides
  4581. factory methods for creating animations on properties of classes that extend </span><span
  4582. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4583. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Character
  4584. animations from within the scene file are imported and stored on the </span><span
  4585. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4586. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> they target.
  4587. All animations on a </span><span style='font-size:12.0pt;font-family:"Courier New";
  4588. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4589. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> can be
  4590. obtained by ID.<o:p></o:p></span></p>
  4591. <h3>AnimationTargets</h3>
  4592. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Courier New";
  4593. mso-bidi-font-family:"Times New Roman"'>gameplay::Transform</span><span
  4594. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
  4595. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  4596. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
  4597. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  4598. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> are animation
  4599. targets.<o:p></o:p></span></p>
  4600. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4601. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animations
  4602. can be created on the scale, rotation and translation properties of the </span><span
  4603. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Transform</span><span
  4604. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Animations
  4605. can also target any </span><span style='font-size:12.0pt;font-family:"Courier New";
  4606. mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  4607. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, which extends
  4608. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4609. "Times New Roman"'>gameplay::Transform</span><span style='font-size:12.0pt;
  4610. mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  4611. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4612. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Also,
  4613. animations can target instances of </span><span style='font-size:12.0pt;
  4614. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  4615. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Any
  4616. parameters on a material of type </span><span style='font-size:12.0pt;
  4617. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>float</span><span
  4618. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
  4619. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>integer</span><span
  4620. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or 2-, 3-,
  4621. and 4-dimensional vectors can be animated.<o:p></o:p></span></p>
  4622. <h3>Creating property animations</h3>
  4623. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animations
  4624. are created from the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4625. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4626. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. </span><span
  4627. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationTarget</span><span
  4628. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> provides
  4629. methods to create simple two key frame animations using </span><span
  4630. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimationFromTo()</span><span
  4631. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
  4632. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimationFromBy()</span><span
  4633. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Multiple key
  4634. frame sequences can be created from </span><span style='font-size:12.0pt;
  4635. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimation()</span><span
  4636. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  4637. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4638. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4639. is an example of how to create a multiple key frame animation on a node</span><span
  4640. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4641. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4642. "Times New Roman"'>s translation properties:<o:p></o:p></span></p>
  4643. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4644. <pre style='background:white'><span style='font-family:Consolas;color:blue'>unsigned</span><span
  4645. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  4646. Consolas;color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;keyCount&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4647. style='background:white'><span style='font-family:Consolas;color:blue'>unsigned</span><span
  4648. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  4649. Consolas;color:blue'>long</span><span style='font-family:Consolas;color:black'>&nbsp;keyTimes[]&nbsp;=&nbsp;{0L,&nbsp;500L,&nbsp;1000L};&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4650. style='background:white'><span style='font-family:Consolas;color:blue'>float</span><span
  4651. style='font-family:Consolas;color:black'>&nbsp;keyValues[]&nbsp;=&nbsp;<o:p></o:p></span></pre><pre
  4652. style='background:white'><span style='font-family:Consolas;color:black'>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4653. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;0.0f,&nbsp;-4.0f,&nbsp;0.0f,&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4654. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;0.0f,&nbsp;0.0f,&nbsp;0.0f,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4655. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;0.0f,&nbsp;4.0f,&nbsp;0.0f&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4656. style='background:white'><span style='font-family:Consolas;color:black'>};&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4657. style='background:white'><span style='font-family:Consolas;color:black'>Animation*&nbsp;sampleAnim&nbsp;=&nbsp;enemyNode-&gt;createAnimation(</span><span
  4658. style='font-family:Consolas;color:#A31515'>&quot;sample&quot;</span><span
  4659. style='font-family:Consolas;color:black'>,<o:p></o:p></span></pre><pre
  4660. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>         </span><span style='mso-spacerun:yes'>           </span><span style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'>    </span><span style='mso-spacerun:yes'>                        </span><span style='mso-spacerun:yes'> </span>Transform::ANIMATE_TRANSLATE,&nbsp;<o:p></o:p></span></pre><pre
  4661. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>    </span><span style='mso-spacerun:yes'>                  </span><span style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'>  </span><span style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'>                    </span><span style='mso-spacerun:yes'> </span>keyCount,&nbsp;keyTimes,&nbsp;keyValues,&nbsp;<o:p></o:p></span></pre><pre
  4662. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                    </span><span style='mso-spacerun:yes'>   </span><span style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'>                </span><span style='mso-spacerun:yes'> </span>Curve::LINEAR);</span><span
  4663. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>   </span></span><span
  4664. style='font-family:Consolas;color:black'><o:p></o:p></span></pre>
  4665. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4666. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4667. is the same animation specified in a </span><span style='font-size:12.0pt;
  4668. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4669. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file that can
  4670. also be loaded by the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4671. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4672. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:<o:p></o:p></span></p>
  4673. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4674. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>animation
  4675. sample<o:p></o:p></span></p>
  4676. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4677. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4678. style='mso-spacerun:yes'>    </span>property = ANIMATE_TRANSLATE<o:p></o:p></span></p>
  4679. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4680. style='mso-spacerun:yes'>    </span>keyCount = 3<o:p></o:p></span></p>
  4681. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4682. style='mso-spacerun:yes'>    </span>keyTimes = 0, 500, 1000<o:p></o:p></span></p>
  4683. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4684. style='mso-spacerun:yes'>    </span>keyValues = 0.0 -4.0 0.0 0.0 0.0 0.0 0.0
  4685. 4.0 0.0<o:p></o:p></span></p>
  4686. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4687. style='mso-spacerun:yes'>    </span>curve = LINEAR<o:p></o:p></span></p>
  4688. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4689. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4690. "Times New Roman"'><o:p></o:p></span></p>
  4691. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4692. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4693. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4694. create the animation from this file you would call the following code: <o:p></o:p></span></p>
  4695. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4696. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4697. <pre style='background:white'><span style='font-family:Consolas;color:black'>Animation*&nbsp;sampleAnim&nbsp;=&nbsp;enemyNode-&gt;createAnimation(</span><span
  4698. style='font-family:Consolas;color:#A31515'>&quot;sample&quot;</span><span
  4699. style='font-family:Consolas;color:black'>,&nbsp;</span><span style='font-family:
  4700. Consolas;color:#A31515'>&quot;sample.animation&quot;</span><span
  4701. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  4702. <h3>Curves</h3>
  4703. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  4704. are many different interpolation types defined within the </span><span
  4705. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Curve</span><span
  4706. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class that can
  4707. be used to interpolate through the animation data.<o:p></o:p></span></p>
  4708. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4709. <h3>Character animations</h3>
  4710. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Character
  4711. animations are complex because they can be composed of multiple animations
  4712. targeting numerous joints within a character model. For this reason, character
  4713. animations are usually included within the scene file and are imported when the
  4714. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4715. "Times New Roman"'>.gpb</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4716. "Times New Roman"'> file is loaded. To simplify and optimize all animations
  4717. under single animation. The gameplay-encoder supports grouping all the
  4718. animation on joints leading up to a common root joint under a single animation.
  4719. This is an option in the gameplay-encoder using the </span><span
  4720. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4721. "Malgun Gothic"'>–</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4722. "Times New Roman"'>groupAnimations or </span><span style='font-size:12.0pt;
  4723. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>–</span><span
  4724. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>g option. This
  4725. groups them under a single animation called </span><span style='font-size:12.0pt;
  4726. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
  4727. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>animations</span><span
  4728. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4729. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4730. "Times New Roman"'>.<o:p></o:p></span></p>
  4731. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4732. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>These
  4733. animations can be obtained by calling </span><span style='font-size:12.0pt;
  4734. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationTarget::getAnimation()</span><span
  4735. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> specifying the
  4736. animation</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  4737. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  4738. mso-bidi-font-family:"Times New Roman"'>s ID.<o:p></o:p></span></p>
  4739. <h3>AnimationClips</h3>
  4740. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  4741. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4742. "Times New Roman"'>gameplay::AnimationClip</span><span style='font-size:12.0pt;
  4743. mso-bidi-font-family:"Times New Roman"'> is created from the </span><span
  4744. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Animation</span><span
  4745. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and is a
  4746. snapshot of the animation that can be played back, manipulated with speed and
  4747. repeated.<o:p></o:p></span></p>
  4748. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4749. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4750. is an </span><span style='font-size:12.0pt;font-family:"Courier New";
  4751. mso-bidi-font-family:"Times New Roman"'>AnimationClip</span><span
  4752. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that has been
  4753. created from a character animation of an elf:<o:p></o:p></span></p>
  4754. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4755. <pre style='background:white'><span style='font-family:Consolas;color:black'>AnimationClip*&nbsp;elfRun&nbsp;=&nbsp;elfAnimation-&gt;createClip(</span><span
  4756. style='font-family:Consolas;color:#A31515'>&quot;elf_run&quot;</span><span
  4757. style='font-family:Consolas;color:black'>,&nbsp;200L,&nbsp;310L);<o:p></o:p></span></pre><pre
  4758. style='background:white'><span style='font-family:Consolas;color:black'>elfRun-&gt;setRepeatCount(AnimationClip::REPEAT_INDEFINITE);<o:p></o:p></span></pre><pre
  4759. style='background:white'><span style='font-family:Consolas;color:black'>elfRun-&gt;setSpeed(2.0f);<o:p></o:p></span></pre>
  4760. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4761. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4762. clips can be specified within an </span><span style='font-size:12.0pt;
  4763. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4764. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file that can
  4765. be given to an animation to create clips. The total number of frames that make
  4766. up the animation must be specified in the file. The begin and end parameters of
  4767. each clip are specified in frames. An assumption that the animation runs at 60
  4768. frames per second has been made. Here is an example of an </span><span
  4769. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4770. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file for an
  4771. elf animation:<o:p></o:p></span></p>
  4772. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4773. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>animation
  4774. elf<o:p></o:p></span></p>
  4775. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4776. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4777. style='mso-spacerun:yes'>    </span>frameCount = 350<o:p></o:p></span></p>
  4778. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4779. style='mso-spacerun:yes'>    </span>clip idle<o:p></o:p></span></p>
  4780. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4781. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4782. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4783. style='mso-spacerun:yes'>        </span>begin =<span style='mso-spacerun:yes'> 
  4784. </span>0<o:p></o:p></span></p>
  4785. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4786. style='mso-spacerun:yes'>        </span>end = 75<o:p></o:p></span></p>
  4787. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4788. style='mso-spacerun:yes'>        </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4789. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4790. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4791. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  4792. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  4793. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4794. style='mso-spacerun:yes'>    </span>clip walk<o:p></o:p></span></p>
  4795. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4796. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4797. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4798. style='mso-spacerun:yes'>        </span>begin = 75<o:p></o:p></span></p>
  4799. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4800. style='mso-spacerun:yes'>        </span>end = 200<o:p></o:p></span></p>
  4801. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4802. style='mso-spacerun:yes'>        </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4803. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4804. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4805. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4806. style='mso-spacerun:yes'>    </span>clip run<o:p></o:p></span></p>
  4807. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4808. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4809. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4810. style='mso-spacerun:yes'>        </span>begin = 200<o:p></o:p></span></p>
  4811. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4812. style='mso-spacerun:yes'>        </span>end = 310<o:p></o:p></span></p>
  4813. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4814. style='mso-tab-count:1'>       </span><span style='mso-spacerun:yes'> </span><span
  4815. style='mso-spacerun:yes'> </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4816. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4817. style='mso-spacerun:yes'>        </span>speed = 2.0<o:p></o:p></span></p>
  4818. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4819. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4820. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4821. style='mso-spacerun:yes'>    </span>clip jump<o:p></o:p></span></p>
  4822. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4823. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4824. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4825. style='mso-spacerun:yes'>        </span>begin = 310<o:p></o:p></span></p>
  4826. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4827. style='mso-spacerun:yes'>        </span>end = 350<o:p></o:p></span></p>
  4828. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4829. style='mso-spacerun:yes'>        </span>repeatCount = 1<o:p></o:p></span></p>
  4830. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4831. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4832. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4833. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4834. "Times New Roman"'> <o:p></o:p></span></p>
  4835. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4836. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4837. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4838. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4839. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animations
  4840. can be played back by calling </span><span style='font-size:12.0pt;font-family:
  4841. "Courier New";mso-bidi-font-family:"Times New Roman"'>Animation::play()</span><span
  4842. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, passing a
  4843. clip ID, or by calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  4844. mso-bidi-font-family:"Times New Roman"'>AnimationClip::play()</span><span
  4845. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> directly on
  4846. the clip. Animations can also be paused and stopped in the same fashion.<o:p></o:p></span></p>
  4847. <h3>Animation blending</h3>
  4848. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4849. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4850. "Times New Roman"'>gameplay::AnimationClip</span><span style='font-size:12.0pt;
  4851. mso-bidi-font-family:"Times New Roman"'> class has a blend weight property that
  4852. can be used to blend multiple animations. There is also a method called </span><span
  4853. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationClip::crossFade()</span><span
  4854. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that
  4855. conveniently provides the ability to fade the currently playing clip out and
  4856. fade in the specified clip over a given period of time.<o:p></o:p></span></p>
  4857. <h3>AnimationClip listeners</h3>
  4858. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4859. events can be triggered on a </span><span style='font-size:12.0pt;font-family:
  4860. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationClip</span><span
  4861. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> by registering
  4862. instances of </span><span style='font-size:12.0pt;font-family:"Courier New";
  4863. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationClip::Listener</span><span
  4864. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with the clip.
  4865. The listeners can be registered to be called back at the beginning or end of
  4866. the clip, or at any specific time throughout the playback of the clip. This can
  4867. be useful for starting a particle emitter when a character</span><span
  4868. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4869. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4870. "Times New Roman"'>s foot hits the ground in an animation, or to play back a
  4871. sound of a gun firing during an animation of an enemy shooting.<a
  4872. name=d18e3a1310></a><o:p></o:p></span></p>
  4873. <h2><a name="_Toc330902781">Audio</a></h2>
  4874. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  4875. can integrate 3-D audio into your game using the audio services supported by
  4876. gameplay. The framework uses a very traditional way of representing audio. The </span><span
  4877. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioController</span><span
  4878. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> manages all of
  4879. the playing audio sources.<o:p></o:p></span></p>
  4880. <h3>Creating an AudioSource</h3>
  4881. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>An
  4882. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4883. "Times New Roman"'>AudioSource</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4884. "Times New Roman"'> can be created from audio files or from a .audio property
  4885. file. Ogg audio files are compressed, so they use less memory than .wav files.<o:p></o:p></span></p>
  4886. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4887. <pre style='background:white'><span style='font-family:Consolas;color:black'>AudioSource*&nbsp;wheelsSound&nbsp;=&nbsp;AudioSource::create(</span><span
  4888. style='font-family:Consolas;color:#A31515'>&quot;res/longboard.wav&quot;</span><span
  4889. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  4890. style='background:white'><span style='font-family:Consolas;color:black'>AudioSource*&nbsp;backgroundMusic&nbsp;=&nbsp;AudioSource::create(</span><span
  4891. style='font-family:Consolas;color:#A31515'>&quot;res/music.ogg&quot;</span><span
  4892. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  4893. <h3>Playing the AudioSource</h3>
  4894. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4895. following example illustrates how to play audio:<o:p></o:p></span></p>
  4896. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4897. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>wheelsSound-&gt;play();<o:p></o:p></span></p>
  4898. <h3>Updating the AudioListener</h3>
  4899. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>By
  4900. default, the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4901. mso-bidi-font-family:"Times New Roman"'>AudioListener</span><span
  4902. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is bound to
  4903. the active camera of the scene. You can manually bind the camera to the </span><span
  4904. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioListener</span><span
  4905. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using </span><span
  4906. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioListener::setCamera()</span><span
  4907. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  4908. <h3>Audio Properties</h3>
  4909. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4910. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4911. "Times New Roman"'>gameplay::AudioSource</span><span style='font-size:12.0pt;
  4912. mso-bidi-font-family:"Times New Roman"'> class has methods for modifying the
  4913. properties of the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4914. mso-bidi-font-family:"Times New Roman"'>AudioSource</span><span
  4915. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, such as
  4916. pitch, gain, and velocity.<o:p></o:p></span></p>
  4917. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4918. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Audio
  4919. sources can be loaded from </span><span style='font-size:12.0pt;font-family:
  4920. "Courier New";mso-bidi-font-family:"Times New Roman"'>.audio</span><span
  4921. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property files
  4922. to make it easier to set these properties.<o:p></o:p></span></p>
  4923. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4924. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>audio
  4925. fireball<o:p></o:p></span></p>
  4926. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4927. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4928. style='mso-spacerun:yes'>    </span>path = res/audio/fireball.wav<o:p></o:p></span></p>
  4929. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4930. style='mso-spacerun:yes'>    </span>looped = false<o:p></o:p></span></p>
  4931. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4932. style='mso-spacerun:yes'>    </span>gain = 0.7<o:p></o:p></span></p>
  4933. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4934. style='mso-spacerun:yes'>    </span>pitch = 0.5<o:p></o:p></span></p>
  4935. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4936. style='mso-spacerun:yes'>    </span>velocity = 0.5 0.0 1.0<o:p></o:p></span></p>
  4937. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4938. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4939. "Times New Roman"'><o:p></o:p></span></p>
  4940. <h3>Binding an AudioSource to a node</h3>
  4941. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>An
  4942. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4943. "Times New Roman"'>AudioSource</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4944. "Times New Roman"'> can be bound to a </span><span style='font-size:12.0pt;
  4945. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node</span><span
  4946. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in your scene
  4947. using </span><span style='font-size:12.0pt;font-family:"Courier New";
  4948. mso-bidi-font-family:"Times New Roman"'>Node::setAudioSource()</span><span
  4949. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The position
  4950. of the audio source is automatically updated when the node is transformed.<a
  4951. name=d19e3a1310></a><o:p></o:p></span></p>
  4952. <h2><a name="_Toc330902782">User Interface</a></h2>
  4953. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4954. gameplay framework provides a set of user interface (UI) controls that can be
  4955. used to create menus and HUDs. To add UI elements to your game, you'll create a
  4956. form from a properties file and call update() and draw() on it. Other than
  4957. adding listeners to buttons and modifying controls programmatically, there's
  4958. not much code to write in your game. Most of the work of defining a form's look
  4959. and feel happens in the .form and .theme files, as well as the texture atlas
  4960. used by the theme.<o:p></o:p></span></p>
  4961. <h3>Creating a form</h3>
  4962. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4963. create a form, pass a properties file to </span><span style='font-size:12.0pt;
  4964. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::create()</span><span
  4965. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to instantiate
  4966. a form. The top-most namespace in the file must be named 'form'. The following
  4967. properties are available for forms:<o:p></o:p></span></p>
  4968. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4969. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>form &lt;formID&gt;
  4970. <o:p></o:p></span></p>
  4971. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<span
  4972. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4973. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4974. style='mso-spacerun:yes'>    </span>// Form properties.<span
  4975. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4976. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4977. style='mso-spacerun:yes'>    </span>theme <span style='mso-tab-count:3'>                 </span>=
  4978. &lt;Path to .theme file&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4979. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4980. style='mso-spacerun:yes'>    </span>layout <span style='mso-tab-count:3'>                </span>=
  4981. &lt;Layout::Type constant&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4982. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4983. style='mso-spacerun:yes'>    </span>style <span style='mso-tab-count:3'>                 </span>=
  4984. &lt;styleID&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4985. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4986. style='mso-spacerun:yes'>    </span>position <span style='mso-tab-count:3'>              </span>=
  4987. &lt;x, y&gt;<span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p>
  4988. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4989. style='mso-spacerun:yes'>    </span>alignment <span style='mso-tab-count:2'>             </span>=
  4990. &lt;Control::Alignment constant&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4991. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4992. style='mso-spacerun:yes'>    </span>size<span style='mso-spacerun:yes'>  
  4993. </span><span style='mso-tab-count:3'>                </span>= &lt;width, height&gt;<span
  4994. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4995. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4996. style='mso-spacerun:yes'>    </span>autoWidth <span style='mso-tab-count:2'>             </span>=
  4997. &lt;bool&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4998. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4999. style='mso-spacerun:yes'>    </span>autoHeight <span style='mso-tab-count:2'>            </span>=
  5000. &lt;bool&gt;<span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p>
  5001. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5002. style='mso-spacerun:yes'>    </span>width <span style='mso-tab-count:3'>                 </span>=
  5003. &lt;width&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5004. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5005. style='mso-spacerun:yes'>    </span>height <span style='mso-tab-count:3'>                </span>=
  5006. &lt;height&gt;<o:p></o:p></span></p>
  5007. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5008. style='mso-spacerun:yes'>        </span><o:p></o:p></span></p>
  5009. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5010. style='mso-spacerun:yes'>    </span>// All the Controls within this Form.<span
  5011. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5012. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5013. style='mso-spacerun:yes'>    </span>container { }<span
  5014. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5015. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5016. style='mso-spacerun:yes'>    </span>label { }<span style='mso-spacerun:yes'>   
  5017. </span><o:p></o:p></span></p>
  5018. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5019. style='mso-spacerun:yes'>    </span>textBox { }<span
  5020. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5021. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5022. style='mso-spacerun:yes'>    </span>button { }<span
  5023. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5024. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5025. style='mso-spacerun:yes'>    </span>checkBox { }<span
  5026. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5027. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5028. style='mso-spacerun:yes'>    </span>radioButton { }<span
  5029. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5030. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5031. style='mso-spacerun:yes'>    </span>slider { }<span style='mso-spacerun:yes'>  
  5032. </span><o:p></o:p></span></p>
  5033. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  5034. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5035. "Times New Roman"'><span style='mso-spacerun:yes'>   </span></span><span
  5036. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5037. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5038. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></b></p>
  5039. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5040. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Form property
  5041. information:</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5042. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5043. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5044. following is a list of form properties, and their purpose:<o:p></o:p></span></p>
  5045. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5046. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5047. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>theme</span></b><span
  5048. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: See
  5049. &quot;Creating a theme&quot; below.<o:p></o:p></span></p>
  5050. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5051. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5052. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>layout</span></b><span
  5053. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Member of
  5054. Layout::Type enum.<o:p></o:p></span></p>
  5055. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5056. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5057. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
  5058. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A style from
  5059. the theme.<o:p></o:p></span></p>
  5060. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5061. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5062. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>position</span></b><span
  5063. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The on-screen
  5064. position, in pixels.<o:p></o:p></span></p>
  5065. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5066. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5067. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>alignment</span></b><span
  5068. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Align the
  5069. form's position within the bounds of the screen. Note the position property
  5070. will be ignored if the </span><span style='font-size:12.0pt;font-family:"Courier New";
  5071. mso-bidi-font-family:"Times New Roman"'>alignment</span><span style='font-size:
  5072. 12.0pt;mso-bidi-font-family:"Times New Roman"'> property has been set.<o:p></o:p></span></p>
  5073. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5074. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5075. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>size</span></b><span
  5076. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The size of
  5077. the form, in pixels.<o:p></o:p></span></p>
  5078. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5079. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5080. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span></b><span
  5081. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use of this
  5082. property will result in a form with a width spanning the entire display. Note
  5083. the width property will be ignored if </span><span style='font-size:12.0pt;
  5084. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span
  5085. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has been set.<o:p></o:p></span></p>
  5086. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5087. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5088. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span></b><span
  5089. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use of this
  5090. property will result in a form with a height spanning the entire display. The
  5091. height property will be ignored if </span><span style='font-size:12.0pt;
  5092. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5093. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has been set.<o:p></o:p></span></p>
  5094. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5095. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5096. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>width</span></b><span
  5097. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can be used
  5098. in place of </span><span style='font-size:12.0pt;font-family:"Courier New";
  5099. mso-bidi-font-family:"Times New Roman"'>size</span><span style='font-size:12.0pt;
  5100. mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  5101. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5102. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5103. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>height</span></b><span
  5104. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can be used
  5105. in place of </span><span style='font-size:12.0pt;font-family:"Courier New";
  5106. mso-bidi-font-family:"Times New Roman"'>size</span><span style='font-size:12.0pt;
  5107. mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  5108. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5109. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  5110. style determines the look of a control and is defined in the theme file,
  5111. detailed below. Position and size attributes are determined for controls using
  5112. the same properties as listed above for forms. Controls can be aligned within
  5113. their parent container by using the </span><span style='font-size:12.0pt;
  5114. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>alignment</span><span
  5115. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property.
  5116. Setting </span><span style='font-size:12.0pt;font-family:"Courier New";
  5117. mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span style='font-size:
  5118. 12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
  5119. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5120. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to true will
  5121. result in a control the width or height of its parent container. You can add
  5122. controls to the form by placing namespaces within it. The available controls
  5123. are:<o:p></o:p></span></p>
  5124. <p class=MsoNormal><a name=d19e113a1310></a><span style='font-size:12.0pt;
  5125. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5126. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5127. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5128. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5129. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5130. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5131. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5132. mso-bidi-font-family:"Times New Roman"'>Container: A container has all the same
  5133. available properties as a form, except for 'theme'. You can add more controls
  5134. within a container to group them together, and/or to apply a different layout
  5135. type to a group of controls.<span style='mso-tab-count:2'>                  </span><o:p></o:p></span></p>
  5136. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5137. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5138. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5139. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5140. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5141. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5142. mso-bidi-font-family:"Times New Roman"'>Label: A simple text label. Available
  5143. properties: 'style', 'position', </span><span style='mso-bidi-font-size:12.0pt;
  5144. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
  5145. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>alignment</span><span
  5146. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5147. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5148. 12.0pt;mso-bidi-font-family:"Times New Roman"'>, 'size', </span><span
  5149. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5150. mso-ascii-font-family:"Malgun Gothic"'>‘</span><span style='mso-bidi-font-size:
  5151. 12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span
  5152. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5153. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5154. 12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span style='mso-bidi-font-size:
  5155. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
  5156. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5157. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5158. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5159. 12.0pt;mso-bidi-font-family:"Times New Roman"'>, and 'text'.<span
  5160. style='mso-tab-count:2'>          </span><o:p></o:p></span></p>
  5161. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5162. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5163. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5164. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5165. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5166. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5167. mso-bidi-font-family:"Times New Roman"'>TextBox: Editable text label. A TextBox
  5168. control has the same available properties as label.<span style='mso-tab-count:
  5169. 2'>                </span><o:p></o:p></span></p>
  5170. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5171. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5172. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5173. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5174. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5175. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5176. mso-bidi-font-family:"Times New Roman"'>Button: A button. A button control has
  5177. the same available properties as label.<span style='mso-tab-count:2'>            </span><o:p></o:p></span></p>
  5178. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5179. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5180. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5181. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5182. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5183. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5184. mso-bidi-font-family:"Times New Roman"'>CheckBox: A button that toggles between
  5185. 'checked' and 'unchecked' states when tapped or clicked. A CheckBox has the
  5186. same available properties as label, plus 'checked' for its starting state.<span
  5187. style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5188. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5189. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5190. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5191. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5192. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5193. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5194. mso-bidi-font-family:"Times New Roman"'>RadioButton: RadioButton has the same
  5195. available properties as CheckBox, with an additional property, 'group'. Only
  5196. one radio button in a given group can be selected at a time.<span
  5197. style='mso-tab-count:2'>                 </span><o:p></o:p></span></p>
  5198. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5199. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5200. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5201. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5202. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5203. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5204. mso-bidi-font-family:"Times New Roman"'>Slider: A marker that can slide along a
  5205. track between its end-caps. A slider makes use of the following properties: <o:p></o:p></span></p>
  5206. <p class=MsoNormal style='text-align:justify'><span style='mso-bidi-font-size:
  5207. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5208. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5209. font-family:Consolas'>slider &lt;controlID&gt;<o:p></o:p></span></p>
  5210. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5211. font-family:Consolas'>{<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5212. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5213. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5214. style='mso-spacerun:yes'>  </span>style = &lt;styleID&gt; <span
  5215. style='mso-spacerun:yes'>     </span>// A style from the theme.<span
  5216. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5217. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5218. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5219. style='mso-spacerun:yes'>  </span>position = &lt;x, y&gt; <span
  5220. style='mso-spacerun:yes'>     </span>// Position of the control on-screen, in
  5221. pixels.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5222. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5223. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5224. style='mso-spacerun:yes'>  </span>size = &lt;width, height&gt; // The size of
  5225. the control, in pixels.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5226. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5227. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5228. style='mso-spacerun:yes'>  </span>min = &lt;float&gt; <span
  5229. style='mso-spacerun:yes'>         </span>// The value of the left- /
  5230. bottom-most point on the slider.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5231. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5232. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5233. style='mso-spacerun:yes'>  </span>max = &lt;float&gt; <span
  5234. style='mso-spacerun:yes'>         </span>// The value of the right- / top-most
  5235. point on the slider.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5236. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5237. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5238. style='mso-spacerun:yes'>  </span>value = &lt;float&gt; <span
  5239. style='mso-spacerun:yes'>       </span>// The default position of the
  5240. marker.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5241. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5242. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5243. style='mso-spacerun:yes'>  </span>step = &lt;float&gt; <span
  5244. style='mso-spacerun:yes'>        </span>// If greater than 0, force the marker
  5245. to snap to discrete<o:p></o:p></span></p>
  5246. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5247. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5248. style='mso-spacerun:yes'>                         </span>// multiples of
  5249. ‘step’.<o:p></o:p></span></p>
  5250. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5251. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5252. style='mso-spacerun:yes'>  </span>text = &lt;string&gt; <span
  5253. style='mso-spacerun:yes'>       </span>// Text to display above, below or
  5254. alongside the slider<o:p></o:p></span></p>
  5255. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5256. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5257. style='mso-spacerun:yes'>                         </span>// (depending on the
  5258. style).<o:p></o:p></span></p>
  5259. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5260. font-family:Consolas'>}</span><span style='mso-bidi-font-size:12.0pt;
  5261. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5262. <h3>Creating a theme</h3>
  5263. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  5264. theme contains the information a form needs to determine the look of its
  5265. controls. A theme has one property, 'texture', which points to a texture atlas
  5266. containing the images used by the theme. Cursor images, skins, and lists of
  5267. images used by controls are defined in their own namespaces. The rest of the
  5268. theme consists of style namespaces. A style describes the border, margin, and
  5269. padding of a control, what images, skins, and cursors are associated with a
  5270. control, and font properties to apply to a control's text.<span
  5271. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5272. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5273. <pre style='background:white'><span style='font-family:Consolas;color:black'>theme&nbsp;&lt;themeID&gt;<o:p></o:p></span></pre><pre
  5274. style='background:white'><span style='font-family:Consolas;color:black'>{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5275. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;texture&nbsp;=&nbsp;&lt;Path&nbsp;to&nbsp;texture&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5276. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5277. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;&lt;cursorID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5278. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5279. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5280. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color&nbsp;=&nbsp;&lt;#ffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5281. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5282. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5283. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;imageList&nbsp;&lt;imageID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5284. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5285. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;checked&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5286. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5287. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5288. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5289. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5290. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;unchecked&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5291. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5292. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5293. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color&nbsp;=&nbsp;&lt;#fffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5294. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5295. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5296. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color&nbsp;=&nbsp;&lt;#fffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5297. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5298. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5299. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;skin&nbsp;&lt;skinID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5300. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5301. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5302. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5303. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5304. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottom&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5305. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5306. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5307. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5308. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5309. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5310. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color&nbsp;=&nbsp;&lt;#ffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5311. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5312. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5313. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5314. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5315. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5316. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5317. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;style&nbsp;&lt;styleID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5318. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5319. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;margin&nbsp;<o:p></o:p></span></pre><pre
  5320. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5321. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5322. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottom&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5323. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5324. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5325. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5326. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5327. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5328. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5329. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5330. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottom&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5331. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5332. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5333. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5334. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;<o:p></o:p></span></pre><pre
  5335. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateNormal&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5336. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5337. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skin&nbsp;=&nbsp;&lt;skinID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5338. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageList&nbsp;=&nbsp;&lt;imageID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5339. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;&lt;cursorID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5340. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font&nbsp;=&nbsp;&lt;Path&nbsp;to&nbsp;font&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5341. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fontSize&nbsp;=&nbsp;&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5342. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textColor&nbsp;=&nbsp;&lt;#ffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5343. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textAlignment&nbsp;=&nbsp;&lt;Control::Alignmentconstant&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5344. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rightToLeft&nbsp;=&nbsp;&lt;bool&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5345. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity&nbsp;=&nbsp;&lt;float&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5346. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5347. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateFocus&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5348. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5349. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skin&nbsp;=&nbsp;&lt;skinID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5350. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5351. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5352. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateActive&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5353. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5354. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skin&nbsp;=&nbsp;&lt;skinID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5355. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5356. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5357. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateDisabled&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5358. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5359. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skin&nbsp;=&nbsp;&lt;skinID&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5360. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  5361. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5362. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5363. style='background:white'><span style='font-family:Consolas;color:black'>}&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre>
  5364. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5365. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5366. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5367. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5368. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5369. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Theme property
  5370. information:</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5371. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5372. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5373. following is a list of theme properties, and their sub-properties if
  5374. applicable.<o:p></o:p></span></p>
  5375. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5376. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5377. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>texture</span></b><span
  5378. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The path to
  5379. the texture atlas used by this theme. <o:p></o:p></span></p>
  5380. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5381. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5382. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>cursor</span></b><span
  5383. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Describes a
  5384. single image, to be used as a cursor.<o:p></o:p></span></p>
  5385. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5386. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5387. of cursor:<o:p></o:p></span></p>
  5388. <p class=MsoNormal><a name=d19e173a1310></a><span style='font-size:12.0pt;
  5389. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5390. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5391. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5392. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5393. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5394. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5395. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5396. mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
  5397. pixels.<span style='mso-tab-count:2'>            </span><o:p></o:p></span></p>
  5398. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5399. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5400. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5401. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5402. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5403. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5404. mso-bidi-font-family:"Times New Roman"'>color: Blend color to apply to this
  5405. cursor.<span style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5406. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5407. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5408. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5409. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5410. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5411. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5412. mso-bidi-font-family:"Times New Roman"'>imageList: A collection of images used
  5413. by controls. <a name=d19e183a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5414. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5415. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5416. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5417. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5418. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5419. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5420. mso-bidi-font-family:"Times New Roman"'>image: A single image within the list. <a
  5421. name=d19e187a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5422. <p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
  5423. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5424. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5425. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5426. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5427. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5428. mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
  5429. pixels. <o:p></o:p></span></p>
  5430. <p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
  5431. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5432. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5433. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5434. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5435. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5436. mso-bidi-font-family:"Times New Roman"'>color: Optionally override image-list
  5437. blend color. <o:p></o:p></span></p>
  5438. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5439. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5440. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5441. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5442. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5443. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5444. mso-bidi-font-family:"Times New Roman"'>color: Default blend color for images
  5445. that don't specify their own.<o:p></o:p></span></p>
  5446. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5447. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5448. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5449. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5450. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>skin</span></b><span
  5451. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Defines the
  5452. border and background of a control.<o:p></o:p></span></p>
  5453. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5454. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5455. of skin:<o:p></o:p></span></p>
  5456. <p class=MsoNormal><a name=d19e210a1310></a><span style='font-size:12.0pt;
  5457. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5458. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5459. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5460. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5461. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5462. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5463. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5464. mso-bidi-font-family:"Times New Roman"'>border : The corners and edges of the
  5465. given region will be used as border sprites. <a name=d19e214a1310></a><span
  5466. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5467. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5468. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5469. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5470. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5471. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5472. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5473. mso-bidi-font-family:"Times New Roman"'>top : Height of top border, top
  5474. corners. <o:p></o:p></span></p>
  5475. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5476. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5477. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5478. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5479. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5480. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5481. mso-bidi-font-family:"Times New Roman"'>bottom: Height of bottom border, bottom
  5482. corners. <o:p></o:p></span></p>
  5483. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5484. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5485. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5486. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5487. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5488. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5489. mso-bidi-font-family:"Times New Roman"'>left: Width of left border, left
  5490. corners. <o:p></o:p></span></p>
  5491. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5492. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5493. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5494. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5495. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5496. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5497. mso-bidi-font-family:"Times New Roman"'>right: Width of right border, right
  5498. corners.<span style='mso-tab-count:2'>                  </span><o:p></o:p></span></p>
  5499. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5500. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5501. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5502. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5503. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5504. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5505. mso-bidi-font-family:"Times New Roman"'>region: Total container region
  5506. including the entire border. A region within the texture, in pixels.<span
  5507. style='mso-tab-count:1'>       </span><span style='mso-tab-count:1'>    </span><o:p></o:p></span></p>
  5508. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5509. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5510. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5511. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5512. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5513. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5514. mso-bidi-font-family:"Times New Roman"'>color: The blend color to apply to this
  5515. skin.<o:p></o:p></span></p>
  5516. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5517. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5518. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5519. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5520. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5521. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5522. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
  5523. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A combination
  5524. of theme attributes that can be applied to any control.<o:p></o:p></span></p>
  5525. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5526. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5527. of style:<o:p></o:p></span></p>
  5528. <p class=MsoNormal><a name=d19e244a1310></a><span style='font-size:12.0pt;
  5529. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5530. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5531. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5532. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5533. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5534. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5535. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5536. mso-bidi-font-family:"Times New Roman"'>margin: Layouts may make use of a
  5537. style's margin to put space between adjacent controls. <a name=d19e248a1310></a><span
  5538. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5539. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5540. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5541. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5542. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5543. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5544. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5545. mso-bidi-font-family:"Times New Roman"'>top: Empty space above a control. <o:p></o:p></span></p>
  5546. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5547. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5548. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5549. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5550. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5551. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5552. mso-bidi-font-family:"Times New Roman"'>bottom: Empty space below a control. <o:p></o:p></span></p>
  5553. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5554. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5555. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5556. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5557. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5558. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5559. mso-bidi-font-family:"Times New Roman"'>left: Empty space left of a control. <o:p></o:p></span></p>
  5560. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5561. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5562. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5563. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5564. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5565. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5566. mso-bidi-font-family:"Times New Roman"'>right: Empty space right of a control.<span
  5567. style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5568. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5569. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5570. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5571. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5572. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5573. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5574. mso-bidi-font-family:"Times New Roman"'>padding: The space between a control's
  5575. border and its content. <a name=d19e265a1310></a><span
  5576. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5577. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5578. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5579. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5580. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5581. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5582. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5583. mso-bidi-font-family:"Times New Roman"'>top: Empty space between the top border
  5584. and content. <o:p></o:p></span></p>
  5585. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5586. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5587. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5588. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5589. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5590. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5591. mso-bidi-font-family:"Times New Roman"'>bottom: Empty space between the top
  5592. border and content. <o:p></o:p></span></p>
  5593. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5594. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5595. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5596. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5597. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5598. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5599. mso-bidi-font-family:"Times New Roman"'>left: Empty space between the left
  5600. border and content. <o:p></o:p></span></p>
  5601. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5602. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5603. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5604. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5605. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5606. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5607. mso-bidi-font-family:"Times New Roman"'>right: Empty space between the right
  5608. border and content.<span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5609. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5610. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5611. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5612. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5613. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5614. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5615. mso-bidi-font-family:"Times New Roman"'>stateNormal: Properties used when a
  5616. control is in the normal state. <a name=d19e282a1310></a><span
  5617. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5618. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5619. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5620. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5621. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5622. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5623. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5624. mso-bidi-font-family:"Times New Roman"'>skin: Skin to use for border and
  5625. background sprites. <o:p></o:p></span></p>
  5626. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5627. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5628. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5629. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5630. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5631. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5632. mso-bidi-font-family:"Times New Roman"'>imageList: Images to use for this
  5633. state. <o:p></o:p></span></p>
  5634. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5635. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5636. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5637. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5638. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5639. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5640. mso-bidi-font-family:"Times New Roman"'>cursor: Cursor to use when the mouse is
  5641. over this control. <o:p></o:p></span></p>
  5642. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5643. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5644. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5645. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5646. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5647. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5648. mso-bidi-font-family:"Times New Roman"'>font: Font to use for rendering text. <o:p></o:p></span></p>
  5649. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5650. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5651. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5652. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5653. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5654. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5655. mso-bidi-font-family:"Times New Roman"'>fontSize: Size of text. <o:p></o:p></span></p>
  5656. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5657. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5658. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5659. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5660. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5661. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5662. mso-bidi-font-family:"Times New Roman"'>textColor: Color of text. <o:p></o:p></span></p>
  5663. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5664. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5665. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5666. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5667. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5668. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5669. mso-bidi-font-family:"Times New Roman"'>textAlignment: Align text within the
  5670. control</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5671. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5672. 12.0pt;mso-bidi-font-family:"Times New Roman"'>s content area. <o:p></o:p></span></p>
  5673. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5674. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5675. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5676. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5677. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5678. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5679. mso-bidi-font-family:"Times New Roman"'>rightToLeft: Whether to draw text from
  5680. right to left. <o:p></o:p></span></p>
  5681. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5682. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5683. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5684. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5685. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5686. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5687. mso-bidi-font-family:"Times New Roman"'>opacity: Opacity to apply to all
  5688. text/border/icon colors.<span style='mso-tab-count:2'>                   </span><o:p></o:p></span></p>
  5689. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5690. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5691. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5692. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5693. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5694. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5695. mso-bidi-font-family:"Times New Roman"'>stateFocus: Properties used when a
  5696. control is in focus. <a name=d19e315a1310></a><span
  5697. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5698. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5699. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5700. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5701. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5702. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5703. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5704. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5705. Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
  5706. 2'>               </span><o:p></o:p></span></p>
  5707. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5708. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5709. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5710. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5711. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5712. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5713. mso-bidi-font-family:"Times New Roman"'>stateActive: Properties used when a
  5714. control is active. This is when a touch/mouse is down within the control. If
  5715. not specified, the normal overlay will be used. <a name=d19e323a1310></a><span
  5716. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5717. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5718. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5719. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5720. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5721. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5722. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5723. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5724. Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
  5725. 2'>               </span><o:p></o:p></span></p>
  5726. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5727. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5728. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5729. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5730. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5731. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5732. mso-bidi-font-family:"Times New Roman"'>stateDisabled: Properties used when a
  5733. control is disabled. If not specified, the normal overlay will be used. <a
  5734. name=d19e332a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5735. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5736. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5737. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5738. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5739. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5740. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5741. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5742. Unspecified properties will inherit from stateNormal.<o:p></o:p></span></p>
  5743. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5744. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5745. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5746. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5747. top-level property of a theme is the path to its texture atlas. This is a
  5748. single image containing all the sprites used by the theme. The skin, cursor,
  5749. and imageList namespaces within a theme file refer to regions of this image to
  5750. use to represent their various states.<o:p></o:p></span></p>
  5751. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5752. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5753. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Skin:</span></b><span
  5754. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> A rectangular
  5755. area representing a border and background. A container namespace will specify
  5756. the rectangular region and blend color as well as the border sizes. From this,
  5757. the region will be divided into nine areas: four corners, four borders, and the
  5758. center background area. Note that the top and bottom borders will be stretched
  5759. horizontally; the left and right borders will stretch vertically; and the
  5760. center of the container will stretch in both directions. The corners will never
  5761. be stretched. It's perfectly valid to set any border size to 0. <o:p></o:p></span></p>
  5762. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5763. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5764. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Cursor</span></b><span
  5765. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A single
  5766. rectangular area representing a mouse cursor.<o:p></o:p></span></p>
  5767. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5768. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5769. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ImageList</span></b><span
  5770. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A collection
  5771. of images used by controls. Images for multiple control types can be combined
  5772. into one list. Controls use the following images:<a name=d19e357a1310></a><span
  5773. style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5774. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5775. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5776. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5777. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5778. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5779. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5780. mso-bidi-font-family:"Times New Roman"'>CheckBox: 'checked', 'unchecked'<span
  5781. style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5782. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5783. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5784. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5785. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5786. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5787. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5788. mso-bidi-font-family:"Times New Roman"'>RadioButton: 'selected, 'unselected'<span
  5789. style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  5790. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5791. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5792. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5793. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5794. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5795. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5796. mso-bidi-font-family:"Times New Roman"'>Slider: 'minCap', 'maxCap', 'track',
  5797. 'marker'<span style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  5798. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5799. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5800. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5801. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5802. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5803. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5804. mso-bidi-font-family:"Times New Roman"'>TextBox: 'textCaret'</span><span
  5805. style='mso-tab-count:6'>                                                       </span><span
  5806. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5807. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5808. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Note
  5809. that you may specify separate image lists for each state in a style.<o:p></o:p></span></p>
  5810. <h3>Adding a form to your game </h3>
  5811. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  5812. you have a form, theme, and texture atlas, only a small amount of code is
  5813. required in order to actually display your UI within your game. There are two
  5814. options for displaying forms: two-dimensionally, where the form is drawn
  5815. directly to the display and three-dimensionally, where the form is assigned to
  5816. a node within the game's scene and displayed on a quad. <o:p></o:p></span></p>
  5817. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5818. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5819. 2-D case is simple. To initialize a form, pass the path to your .form file to </span><span
  5820. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::create()</span><span
  5821. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to be returned
  5822. a pointer to your form. Now, simply call </span><span style='font-size:12.0pt;
  5823. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::update()</span><span
  5824. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5825. during your game's </span><span style='font-size:12.0pt;font-family:"Courier New";
  5826. mso-bidi-font-family:"Times New Roman"'>update()</span><span style='font-size:
  5827. 12.0pt;mso-bidi-font-family:"Times New Roman"'> method, and call </span><span
  5828. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::draw()</span><span
  5829. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5830. during </span><span style='font-size:12.0pt;font-family:"Courier New";
  5831. mso-bidi-font-family:"Times New Roman"'>render()</span><span style='font-size:
  5832. 12.0pt;mso-bidi-font-family:"Times New Roman"'> . See the section below on
  5833. event handling to learn how to react to player input from within a form. <o:p></o:p></span></p>
  5834. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5835. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5836. 3-D method of drawing forms is somewhat more advanced. For starters, you'll
  5837. need a scene with at least one node in it. Call </span><span style='font-size:
  5838. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::setForm()</span><span
  5839. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to attach the
  5840. form to the node. This call will also generate a rectangular model with the
  5841. dimensions of the form. Scale, rotate, and translate the node as necessary.
  5842. Now, calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  5843. mso-bidi-font-family:"Times New Roman"'>Form::draw()</span><span
  5844. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5845. will render the contents of the form into a framebuffer and use that
  5846. framebuffer to texture the form's model.<o:p></o:p></span></p>
  5847. <h3>Event handling within forms</h3>
  5848. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Controls
  5849. will trigger events when the user interacts with them. You can handle these
  5850. events by setting listeners on individual controls. <o:p></o:p></span></p>
  5851. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5852. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  5853. controls can trigger the mouse / touch events </span><span style='font-size:
  5854. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PRESS</span><span
  5855. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , </span><span
  5856. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>RELEASE</span><span
  5857. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , and </span><span
  5858. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>CLICK</span><span
  5859. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> . Sliders,
  5860. check boxes, and radio buttons can also trigger a </span><span
  5861. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>VALUE_CHANGED</span><span
  5862. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event so that
  5863. you can update your game as a slider is moving or when a radio button becomes
  5864. unselected. Finally, text boxes trigger a </span><span style='font-size:12.0pt;
  5865. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>TEXT_CHANGED</span><span
  5866. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event any time
  5867. a character is entered or deleted (but not when the cursor is moved within the
  5868. text box). Use </span><span style='font-size:12.0pt;font-family:"Courier New";
  5869. mso-bidi-font-family:"Times New Roman"'>TEXT_CHANGED</span><span
  5870. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> along with the
  5871. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5872. "Times New Roman"'>getLastKeyPress()</span><span style='font-size:12.0pt;
  5873. mso-bidi-font-family:"Times New Roman"'> method on a </span><span
  5874. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>TextBox</span><span
  5875. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to do things
  5876. like accepting a player name when the return key is pressed. <o:p></o:p></span></p>
  5877. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5878. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  5879. retrieve a control from your form, call </span><span style='font-size:12.0pt;
  5880. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::getControl()</span><span
  5881. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with the ID of
  5882. the control you're looking for. Cast this to the correct control pointer type
  5883. and then call </span><span style='font-size:12.0pt;font-family:"Courier New";
  5884. mso-bidi-font-family:"Times New Roman"'>addListener()</span><span
  5885. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on it. This
  5886. method takes an object that implements </span><span style='font-size:12.0pt;
  5887. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Control::Listener</span><span
  5888. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> as well as an
  5889. int representing the events to listen for. You can bitwise-OR together event
  5890. types. For example, the following code listens for </span><span
  5891. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PRESS</span><span
  5892. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  5893. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>RELEASE</span><span
  5894. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> events on a
  5895. button: <o:p></o:p></span></p>
  5896. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5897. <pre style='background:white'><span style='font-family:Consolas;color:black'>Button*&nbsp;myButton&nbsp;=&nbsp;</span><span
  5898. style='font-family:Consolas;color:blue'>static_cast</span><span
  5899. style='font-family:Consolas;color:black'>&lt;Button*&gt;(myForm-&gt;getControl(</span><span
  5900. style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5901. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  5902. style='background:white'><span style='font-family:Consolas;color:black'>myButton-&gt;addListener(</span><span
  5903. style='font-family:Consolas;color:blue'>this</span><span style='font-family:
  5904. Consolas;color:black'>,&nbsp;Control::Listener::PRESS&nbsp;|&nbsp;Control::Listener::RELEASE);</span><span
  5905. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> </span><span
  5906. style='font-family:Consolas;color:black'><o:p></o:p></span></pre>
  5907. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5908. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  5909. this example, the game itself implements </span><span style='font-size:12.0pt;
  5910. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Control::Listener</span><span
  5911. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is easy
  5912. to do as there's only one method a listener needs to implement, which should
  5913. look something like this:<o:p></o:p></span></p>
  5914. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5915. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  5916. style='font-family:Consolas;color:black'>&nbsp;MyGame::controlEvent(Control*&nbsp;control,&nbsp;EventType&nbsp;evt)<o:p></o:p></span></pre><pre
  5917. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  5918. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5919. style='font-family:Consolas;color:blue'>switch</span><span style='font-family:
  5920. Consolas;color:black'>(evt)<o:p></o:p></span></pre><pre style='background:white'><span
  5921. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  5922. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5923. style='font-family:Consolas;color:blue'>case</span><span style='font-family:
  5924. Consolas;color:black'>&nbsp;Control::Listener::PRESS:<o:p></o:p></span></pre><pre
  5925. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5926. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  5927. color:black'>&nbsp;(strcmp(</span><span style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5928. style='font-family:Consolas;color:black'>,&nbsp;control-&gt;getID())&nbsp;==&nbsp;0)<o:p></o:p></span></pre><pre
  5929. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  5930. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5931. style='font-family:Consolas;color:green'>//&nbsp;Do&nbsp;something.</span><span
  5932. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  5933. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  5934. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5935. style='font-family:Consolas;color:blue'>break</span><span style='font-family:
  5936. Consolas;color:black'>;<o:p></o:p></span></pre><pre style='background:white'><span
  5937. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5938. style='font-family:Consolas;color:blue'>case</span><span style='font-family:
  5939. Consolas;color:black'>&nbsp;Control::Listener::RELEASE:<o:p></o:p></span></pre><pre
  5940. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5941. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  5942. color:black'>&nbsp;(strcmp(</span><span style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5943. style='font-family:Consolas;color:black'>,&nbsp;control-&gt;getID())&nbsp;==&nbsp;0)<o:p></o:p></span></pre><pre
  5944. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  5945. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5946. style='font-family:Consolas;color:green'>//&nbsp;Do&nbsp;something&nbsp;else.</span><span
  5947. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  5948. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  5949. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5950. style='font-family:Consolas;color:blue'>break</span><span style='font-family:
  5951. Consolas;color:black'>;<o:p></o:p></span></pre><pre style='background:white'><span
  5952. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  5953. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  5954. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5955. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Note
  5956. that </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5957. "Times New Roman"'>getControl()</span><span style='font-size:12.0pt;mso-bidi-font-family:
  5958. "Times New Roman"'> is also a method on Container. If multiple controls share
  5959. the same ID but are children of separate containers, the parent container can
  5960. be retrieved first and then </span><span style='font-size:12.0pt;font-family:
  5961. "Courier New";mso-bidi-font-family:"Times New Roman"'>Container::getControl()</span><span
  5962. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> called to
  5963. retrieve the specific control needed.<a name=d20e3a1310></a><o:p></o:p></span></p>
  5964. <h2><a name="_Toc330902783">Scripting</a></h2>
  5965. <p class=MsoNormal>The gameplay framework has a full set of Lua script bindings
  5966. allowing users to write the majority of their game completely from scripts.
  5967. Also included is an open-source tool that can be used to generate bindings for
  5968. user-defined classes (including classes that depend on features and technology
  5969. of the gameplay framework itself).</p>
  5970. <h3>Writing Lua scripts</h3>
  5971. <p class=MsoNormal>To write Lua scripts, you can use any text editor or IDE. If
  5972. Visual Studio is your editor of choice, it is recommended that you install the
  5973. Lua Language Support extension, which adds syntax highlighting to the editor
  5974. (available here: <a href="http://vslua.codeplex.com/">http://vslua.codeplex.com/</a>).</p>
  5975. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5976. <p class=MsoNormal>To generate your own bindings, you will need to download and
  5977. install Doxygen (available here: <a href="http://www.doxygen.org/"><span
  5978. style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>http://www.doxygen.org</span></a>).</p>
  5979. <h3>Lua Basics</h3>
  5980. <p class=MsoNormal>For an introductory look at scripting with Lua, including
  5981. basic language features, visit <a href="http://www.lua.org/pil/">http://www.lua.org/pil/</a>.
  5982. Note that the documentation available at this link is aimed at Lua 5.0 and will
  5983. contain some outdated APIs. However, the basic usage of the language remains
  5984. the same.</p>
  5985. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5986. <p class=MsoNormal>There are two conventions that gameplay uses within its Lua
  5987. script bindings. First, in order to create a new object, the user calls the <b
  5988. style='mso-bidi-font-weight:normal'>new</b> function on the class and passes
  5989. the correct arguments for the corresponding C++ constructor. e.g.<span
  5990. style='font-size:10.0pt;font-family:Consolas;color:blue'> </span></p>
  5991. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  5992. color:blue'><o:p>&nbsp;</o:p></span></p>
  5993. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  5994. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  5995. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Create&nbsp;a&nbsp;new&nbsp;Vector2&nbsp;object.</span><span
  5996. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  5997. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  5998. color:blue'>local</span><span style='font-size:10.0pt;font-family:Consolas;
  5999. color:black'>&nbsp;v&nbsp;=&nbsp;Vector2</span><span style='font-size:10.0pt;
  6000. font-family:Consolas;color:teal'>.</span><span style='font-size:10.0pt;
  6001. font-family:Consolas;color:black'>new(1.0,&nbsp;3.7)<o:p></o:p></span></p>
  6002. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6003. color:black'><o:p>&nbsp;</o:p></span></p>
  6004. <p class=MsoNormal>Second, to access or set a public member variable of a
  6005. class, the user simply calls a Lua function with the same name, passing no
  6006. arguments to access the variable or passing one argument in order to set the
  6007. variable. e.g.<span style='font-size:10.0pt;font-family:Consolas;color:blue'> <o:p></o:p></span></p>
  6008. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6009. color:blue'><o:p>&nbsp;</o:p></span></p>
  6010. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6011. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6012. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Print&nbsp;out&nbsp;the&nbsp;x&nbsp;member&nbsp;variable.</span><span
  6013. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6014. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6015. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6016. style='font-size:10.0pt;font-family:Consolas;color:black'>print(v</span><span
  6017. style='font-size:10.0pt;font-family:Consolas;color:teal'>:</span><span
  6018. style='font-size:10.0pt;font-family:Consolas;color:black'>x())<o:p></o:p></span></p>
  6019. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6020. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6021. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6022. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6023. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6024. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Set&nbsp;the&nbsp;y&nbsp;member&nbsp;variable&nbsp;to&nbsp;4.2.</span><span
  6025. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6026. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6027. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6028. style='font-size:10.0pt;font-family:Consolas;color:black'>v</span><span
  6029. style='font-size:10.0pt;font-family:Consolas;color:teal'>:</span><span
  6030. style='font-size:10.0pt;font-family:Consolas;color:black'>y(4.2)<o:p></o:p></span></p>
  6031. <h3>Game <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
  6032. "Malgun Gothic"'>–</span> Script Event Callbacks</h3>
  6033. <p class=MsoNormal>In order to write a game primarily using Lua scripts, one
  6034. must register for the main game events (initialize, update, render, and
  6035. finalize), along with the desired input event handlers. To do this, you must
  6036. edit the <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
  6037. "Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>scripts<span
  6038. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6039. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> section of the game<span
  6040. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6041. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s game.config file. If
  6042. the user has a Lua script with functions for the four major events and
  6043. functions that handle the key and touch input, the <span style='font-family:
  6044. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:
  6045. TradeGothicNextLTPro-Lt'>‘</span>scripts<span style='font-family:"Times New Roman","serif";
  6046. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>
  6047. section would look something like this:</p>
  6048. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6049. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6050. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6051. style='font-size:10.0pt;font-family:Consolas;color:black'>scripts<o:p></o:p></span></p>
  6052. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6053. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6054. style='font-size:10.0pt;font-family:Consolas;color:black'>{<o:p></o:p></span></p>
  6055. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6056. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6057. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;initialize&nbsp;=&nbsp;res/script.lua#initialize<o:p></o:p></span></p>
  6058. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6059. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6060. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;=&nbsp;res/script.lua#update<o:p></o:p></span></p>
  6061. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6062. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6063. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;=&nbsp;res/script.lua#render<o:p></o:p></span></p>
  6064. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6065. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6066. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;finalize&nbsp;=&nbsp;res/script.lua#finalize<o:p></o:p></span></p>
  6067. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6068. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6069. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;keyEvent&nbsp;=&nbsp;res/script.lua#keyEvent<o:p></o:p></span></p>
  6070. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6071. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6072. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;touchEvent&nbsp;=&nbsp;res/script.lua#touchEvent<o:p></o:p></span></p>
  6073. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6074. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6075. style='font-size:10.0pt;font-family:Consolas;color:black'>}<o:p></o:p></span></p>
  6076. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6077. <p class=MsoNormal>Then on the C++ side, as usual, you must derive a class from
  6078. Game and create a static instance on the stack. However, in the case of a
  6079. script-based game, the .h file can simply contain the class definition with all
  6080. empty implementations while the .cpp file would contain the static instance.
  6081. For example,</p>
  6082. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6083. <p class=MsoNormal>MyScriptGame.h</p>
  6084. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6085. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6086. style='font-size:10.0pt;font-family:Consolas;color:blue'><o:p>&nbsp;</o:p></span></p>
  6087. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6088. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6089. style='font-size:10.0pt;font-family:Consolas;color:blue'>class</span><span
  6090. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;MyScriptGame:&nbsp;</span><span
  6091. style='font-size:10.0pt;font-family:Consolas;color:blue'>public</span><span
  6092. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Game<o:p></o:p></span></p>
  6093. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6094. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6095. style='font-size:10.0pt;font-family:Consolas;color:black'>{ <o:p></o:p></span></p>
  6096. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6097. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6098. style='font-size:10.0pt;font-family:Consolas;color:blue'>protected</span><span
  6099. style='font-size:10.0pt;font-family:Consolas;color:black'>:<o:p></o:p></span></p>
  6100. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6101. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6102. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6103. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6104. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;initialize() {};<o:p></o:p></span></p>
  6105. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6106. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6107. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6108. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6109. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;finalize() {};<o:p></o:p></span></p>
  6110. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6111. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6112. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6113. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6114. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;update(</span><span
  6115. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  6116. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime) {};<o:p></o:p></span></p>
  6117. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6118. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6119. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6120. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6121. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;render(</span><span
  6122. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  6123. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime) {};<o:p></o:p></span></p>
  6124. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6125. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6126. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6127. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6128. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6129. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6130. style='font-size:10.0pt;font-family:Consolas;color:black'>};<o:p></o:p></span></p>
  6131. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6132. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6133. <p class=MsoNormal>MyScriptGame.cpp</p>
  6134. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6135. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6136. style='font-size:10.0pt;font-family:Consolas;color:blue'><o:p>&nbsp;</o:p></span></p>
  6137. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6138. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6139. style='font-size:10.0pt;font-family:Consolas;color:blue'>#include</span><span
  6140. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6141. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;MyScriptGame.h&quot;</span><span
  6142. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6143. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6144. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6145. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6146. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6147. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6148. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6149. style='font-size:10.0pt;font-family:Consolas;color:green'>//&nbsp;Declare&nbsp;our&nbsp;game&nbsp;instance</span><span
  6150. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6151. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6152. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6153. style='font-size:10.0pt;font-family:Consolas;color:black'>MyScriptGame&nbsp;game;<o:p></o:p></span></p>
  6154. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6155. <p class=MsoNormal>The sample does not require any other C++ implementation. For
  6156. a complete sample game using the techniques described above, see sample05-lua
  6157. as one-to-one mapping of sample00-mesh with a box instead of a duck. It also
  6158. has some additional scripting code showcasing AIAgent and AIStates.</p>
  6159. <h3>Extending ScriptTarget </h3>
  6160. <p class=MsoNormal>To add scriptable events to your own class, you simply
  6161. derive from the class <span style='font-size:12.0pt;font-family:"Courier New";
  6162. mso-bidi-font-family:"Times New Roman"'>gameplay::ScriptTarget </span>and add
  6163. the required function calls. First, to define the scriptable events that are
  6164. supported for the class, we call addScriptEvent with the name of the event and,
  6165. optionally (depending on if the callback takes arguments or not), the parameter
  6166. string for a valid script callback function for that event (the parameter
  6167. string follows the format of the parameter string argument to <span
  6168. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>ScriptController::executeFunction</span>).
  6169. For example, to add a <span style='font-family:"Times New Roman","serif";
  6170. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>notify<span
  6171. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6172. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> event that passes an
  6173. integer to the callback, we would do the following:</p>
  6174. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6175. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6176. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6177. style='font-size:10.0pt;font-family:Consolas;color:black'>addScriptEvent(</span><span
  6178. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;notify&quot;</span><span
  6179. style='font-size:10.0pt;font-family:Consolas;color:black'>,&nbsp;</span><span
  6180. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;i&quot;</span><span
  6181. style='font-size:10.0pt;font-family:Consolas;color:black'>);<o:p></o:p></span></p>
  6182. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6183. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6184. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></p>
  6185. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6186. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'>The
  6187. supported format identifiers for passed parameters are as follows:</p>
  6188. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6189. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><o:p>&nbsp;</o:p></p>
  6190. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  6191. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  6192. <thead>
  6193. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  6194. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6195. padding:0in 5.4pt 0in 5.4pt'>
  6196. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6197. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  6198. mso-bidi-font-weight:normal'><span style='mso-spacerun:yes'> </span>Format <o:p></o:p></span></p>
  6199. </td>
  6200. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6201. padding:0in 5.4pt 0in 5.4pt'>
  6202. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6203. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  6204. mso-bidi-font-weight:normal'>Parameter Type (result)<o:p></o:p></span></p>
  6205. </td>
  6206. </tr>
  6207. </thead>
  6208. <tr style='mso-yfti-irow:1'>
  6209. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6210. 0in 5.4pt 0in 5.4pt'>
  6211. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6212. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6213. style='mso-spacerun:yes'> </span></span>c, h, i, l<span style='mso-bidi-font-size:
  6214. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  6215. </td>
  6216. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6217. 0in 5.4pt 0in 5.4pt'>
  6218. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'>Signed
  6219. Integer (int)<span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  6220. "Times New Roman"'><o:p></o:p></span></p>
  6221. </td>
  6222. </tr>
  6223. <tr style='mso-yfti-irow:2'>
  6224. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6225. padding:0in 5.4pt 0in 5.4pt'>
  6226. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6227. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6228. style='mso-spacerun:yes'> </span>u<o:p></o:p></span></p>
  6229. </td>
  6230. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6231. padding:0in 5.4pt 0in 5.4pt'>
  6232. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6233. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Unsigned
  6234. Integer (unsigned int)<o:p></o:p></span></p>
  6235. </td>
  6236. </tr>
  6237. <tr style='mso-yfti-irow:3'>
  6238. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6239. 0in 5.4pt 0in 5.4pt'>
  6240. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6241. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6242. style='mso-spacerun:yes'> </span>b<o:p></o:p></span></p>
  6243. </td>
  6244. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6245. 0in 5.4pt 0in 5.4pt'>
  6246. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6247. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Boolean
  6248. (bool) <o:p></o:p></span></p>
  6249. </td>
  6250. </tr>
  6251. <tr style='mso-yfti-irow:4'>
  6252. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6253. padding:0in 5.4pt 0in 5.4pt'>
  6254. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6255. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6256. style='mso-spacerun:yes'> </span>f, d<o:p></o:p></span></p>
  6257. </td>
  6258. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6259. padding:0in 5.4pt 0in 5.4pt'>
  6260. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6261. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Floating
  6262. Point (double)<o:p></o:p></span></p>
  6263. </td>
  6264. </tr>
  6265. <tr style='mso-yfti-irow:5'>
  6266. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6267. 0in 5.4pt 0in 5.4pt'>
  6268. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6269. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6270. style='mso-spacerun:yes'> </span>s<o:p></o:p></span></p>
  6271. </td>
  6272. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6273. 0in 5.4pt 0in 5.4pt'>
  6274. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6275. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>String
  6276. (char*)<o:p></o:p></span></p>
  6277. </td>
  6278. </tr>
  6279. <tr style='mso-yfti-irow:6'>
  6280. <td width=241 valign=top style='width:180.9pt;background:#F2F2F2;mso-background-themecolor:
  6281. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6282. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6283. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>p<o:p></o:p></span></p>
  6284. </td>
  6285. <td width=396 valign=top style='width:296.9pt;background:#F2F2F2;mso-background-themecolor:
  6286. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6287. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6288. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Pointer
  6289. (void*)<o:p></o:p></span></p>
  6290. </td>
  6291. </tr>
  6292. <tr style='mso-yfti-irow:7'>
  6293. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6294. 0in 5.4pt 0in 5.4pt'>
  6295. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6296. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6297. style='mso-spacerun:yes'> </span>[x]<o:p></o:p></span></p>
  6298. </td>
  6299. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6300. 0in 5.4pt 0in 5.4pt'>
  6301. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6302. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Enum
  6303. Value [x]<o:p></o:p></span></p>
  6304. </td>
  6305. </tr>
  6306. <tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
  6307. <td width=241 valign=top style='width:180.9pt;background:#F2F2F2;mso-background-themecolor:
  6308. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6309. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6310. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>&lt;x&gt;<o:p></o:p></span></p>
  6311. </td>
  6312. <td width=396 valign=top style='width:296.9pt;background:#F2F2F2;mso-background-themecolor:
  6313. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6314. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6315. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Object
  6316. References/Pointers &lt;x&gt;<o:p></o:p></span></p>
  6317. </td>
  6318. </tr>
  6319. </table>
  6320. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6321. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><o:p>&nbsp;</o:p></p>
  6322. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6323. <p class=MsoNormal>This step is usually done either in the constructor of the
  6324. class or in a class initialization function. Next, the class will want to fire
  6325. the event so that the script callback functions are actually called. This code
  6326. is placed wherever it makes sense (depending on what the actual event is) and
  6327. looks like so:</p>
  6328. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6329. <p class=MsoNormal style='mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6330. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6331. style='font-size:10.0pt;font-family:Consolas;color:black'>fireScriptEvent&lt;</span><span
  6332. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6333. style='font-size:10.0pt;font-family:Consolas;color:black'>&gt;(</span><span
  6334. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;notify&quot;</span><span
  6335. style='font-size:10.0pt;font-family:Consolas;color:black'>,&nbsp;14);<o:p></o:p></span></p>
  6336. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6337. <p class=MsoNormal>The template argument corresponds to the return type of the
  6338. callback function, the first parameter is the name of the event to fire, and
  6339. the remaining arguments are the parameters to the actual callback function: in
  6340. this case, the integer that is passed to the notify callback. To see a full
  6341. example of a class that derives from <span style='font-size:12.0pt;font-family:
  6342. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ScriptTarget </span>within
  6343. gameplay, take a look at the <span style='font-size:12.0pt;font-family:"Courier New";
  6344. mso-bidi-font-family:"Times New Roman"'>gameplay::Control </span>class.</p>
  6345. <h3>Tips using Lua with gameplay</h3>
  6346. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6347. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6348. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6349. </span></span></span><![endif]>To get printf-like functionality using gameplay
  6350. and Lua, use the Lua print() function (note: gameplay overrides the default Lua
  6351. print() function).</p>
  6352. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6353. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6354. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6355. </span></span></span><![endif]>To do integer like comparisons or casts on a
  6356. number variable x in Lua, use math.floor(x).</p>
  6357. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6358. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6359. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6360. </span></span></span><![endif]>Make sure all your member function calls use ':'
  6361. instead of '.'</p>
  6362. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6363. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6364. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6365. </span></span></span><![endif]>Remember to access all gameplay variables,
  6366. including static and global variables with '()' on the end of the name.</p>
  6367. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6368. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6369. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6370. </span></span></span><![endif]>Primitive data type arrays and object arrays are
  6371. both inefficient when created in Lua and passed to C++, so try to minimize
  6372. this.</p>
  6373. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6374. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6375. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6376. </span></span></span><![endif]>There is no reasonable way to unload a Lua
  6377. script; thus, the recommended usage pattern is to put each script's variables
  6378. and functions inside a table (see Lua technical note 7 at <a
  6379. href="http://www.lua.org/notes/ltn007.html">http://www.lua.org/notes/ltn007.html</a>).
  6380. i.e.</p>
  6381. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6382. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6383. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6384. style='font-size:10.0pt;font-family:Consolas;color:green'><o:p>&nbsp;</o:p></span></p>
  6385. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6386. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6387. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6388. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;If&nbsp;you&nbsp;want&nbsp;to&nbsp;load&nbsp;the&nbsp;module&nbsp;at&nbsp;most&nbsp;once,&nbsp;add&nbsp;a&nbsp;line&nbsp;like&nbsp;this.</span><span
  6389. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6390. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6391. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6392. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6393. style='font-size:10.0pt;font-family:Consolas;color:blue'>if</span><span
  6394. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module&nbsp;</span><span
  6395. style='font-size:10.0pt;font-family:Consolas;color:blue'>then</span><span
  6396. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6397. style='font-size:10.0pt;font-family:Consolas;color:blue'>return</span><span
  6398. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6399. style='font-size:10.0pt;font-family:Consolas;color:blue'>end</span><span
  6400. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6401. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6402. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6403. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6404. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6405. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6406. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6407. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6408. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Declare&nbsp;the&nbsp;module&nbsp;Module.</span><span
  6409. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6410. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6411. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6412. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6413. style='font-size:10.0pt;font-family:Consolas;color:black'>Module&nbsp;=&nbsp;{}<o:p></o:p></span></p>
  6414. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6415. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6416. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6417. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6418. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6419. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6420. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6421. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Declare&nbsp;a&nbsp;variable&nbsp;within&nbsp;the&nbsp;module.</span><span
  6422. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6423. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6424. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6425. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6426. style='font-size:10.0pt;font-family:Consolas;color:black'>Module</span><span
  6427. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6428. style='font-size:10.0pt;font-family:Consolas;color:black'>a&nbsp;=&nbsp;47<o:p></o:p></span></p>
  6429. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6430. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6431. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6432. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6433. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6434. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6435. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6436. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Declare&nbsp;a&nbsp;function&nbsp;within&nbsp;the&nbsp;module.</span><span
  6437. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6438. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6439. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6440. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6441. style='font-size:10.0pt;font-family:Consolas;color:blue'>function</span><span
  6442. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module</span><span
  6443. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6444. style='font-size:10.0pt;font-family:Consolas;color:black'>myFunc()<o:p></o:p></span></p>
  6445. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6446. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6447. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6448. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6449. style='font-size:10.0pt;font-family:Consolas;color:blue'>return</span><span
  6450. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module</span><span
  6451. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6452. style='font-size:10.0pt;font-family:Consolas;color:black'>a&nbsp;+&nbsp;17<o:p></o:p></span></p>
  6453. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6454. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6455. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6456. style='font-size:10.0pt;font-family:Consolas;color:blue'>end</span><span
  6457. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6458. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6459. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6460. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6461. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6462. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6463. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6464. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6465. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6466. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Cleanup&nbsp;function;&nbsp;call&nbsp;when&nbsp;done&nbsp;with&nbsp;this&nbsp;module.</span><span
  6467. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6468. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6469. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6470. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6471. style='font-size:10.0pt;font-family:Consolas;color:blue'>function</span><span
  6472. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;cleanupModule()<o:p></o:p></span></p>
  6473. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6474. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6475. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6476. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Module&nbsp;=&nbsp;</span><span
  6477. style='font-size:10.0pt;font-family:Consolas;color:blue'>nil</span><span
  6478. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6479. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6480. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6481. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6482. style='font-size:10.0pt;font-family:Consolas;color:blue'>end<o:p></o:p></span></p>
  6483. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6484. tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
  6485. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6486. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></p>
  6487. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6488. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6489. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6490. </span></span></span><![endif]>Note: you can't pass an enumeration value to a
  6491. function that doesn't explicitly take an enumeration type (i.e.
  6492. Control::setTextColor, which takes an unsigned char). In these cases, you need
  6493. to look up the enumeration values and pass them directly.</p>
  6494. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6495. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6496. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6497. </span></span></span><![endif]>On any function that returns a pointer that is
  6498. owned by the user calling that function (i.e. a create() function), add
  6499. @script{create} as the last line of its Doxygen comments.</p>
  6500. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6501. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6502. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6503. </span></span></span><![endif]>On any function, variable, class, struct, enum,
  6504. etc. that should not be accessible from Lua (except for things that are static
  6505. to a .cpp file, which are already ignored), add @script{ignore} to its Doxygen
  6506. comments.</p>
  6507. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6508. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6509. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6510. </span></span></span><![endif]>On any functions, variables, classes, structs,
  6511. enums, etc. that are local to a .cpp file, declare them as static 1) because it
  6512. is good practice and 2) so that Lua does not generate bindings for them.</p>
  6513. <h3>Generating user defined script bindings</h3>
  6514. <p class=MsoNormal>The following instructions detail how to generate Lua script
  6515. bindings for your own project. Note: this requires doxygen to be installed.</p>
  6516. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6517. <ol style='margin-top:0in' start=1 type=1>
  6518. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Copy the
  6519. gameplay-luagen.doxyfile file to your project's root directory (and rename
  6520. it). Then, either manually using a text editor or using the Doxywizard
  6521. tool, go to the INPUT section and ensure both that the path to gameplay's
  6522. 'src' folder is valid (relative to where the doxyfile is) and that your
  6523. own source folder is added.</li>
  6524. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Run doxygen using the
  6525. above doxyfile from your project's root directory. For example, run <span
  6526. style='font-family:Consolas'>doxygen my-project.doxyfile</span> from the
  6527. command line or run Doxygen using the Doxywizard application.</li>
  6528. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Create a 'lua' folder
  6529. inside your source folder.</li>
  6530. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Run gameplay-luagen using
  6531. the following command (make sure you have a trailing '/' for the output
  6532. directory (second) parameter):</li>
  6533. </ol>
  6534. <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  6535. <p class=MsoNormal style='margin-left:.5in'><span style='font-family:Consolas'>path-to-gameplay/bin/your-platform/gameplay-luagen.exe
  6536. ./xml path-to-your-source/lua/ &lt;your-project-name-here&gt;<o:p></o:p></span></p>
  6537. <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  6538. <p class=MsoNormal style='margin-left:.5in'>Note: the parameter
  6539. &lt;your-project-name-here&gt; is used as the namespace that the bindings are
  6540. generated within. This can be anything you want <b style='mso-bidi-font-weight:
  6541. normal'>except</b> for &quot;gameplay&quot;.</p>
  6542. <ol style='margin-top:0in' start=5 type=1>
  6543. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Ensure that your project
  6544. has &quot;path-to-gameplay/gameplay/src/lua&quot; in its include path.</li>
  6545. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Add the generated Lua
  6546. script bindings (.h/.cpp) files from path-to-your-source/lua to your
  6547. project.</li>
  6548. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Compile and run - now you
  6549. can use your own classes from Lua scripts.</li>
  6550. </ol>
  6551. <h2><a name="_Toc330902784">License</a></h2>
  6552. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  6553. project is open sourced under the Apache 2.0 license.<o:p></o:p></span></p>
  6554. <h3>Disclaimer</h3>
  6555. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>THE
  6556. SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS
  6557. OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  6558. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  6559. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  6560. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  6561. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  6562. SOFTWARE.<o:p></o:p></span></p>
  6563. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6564. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  6565. mso-ascii-font-family:"Malgun Gothic"'>©</span><span style='font-size:12.0pt;
  6566. mso-bidi-font-family:"Times New Roman"'>2012 Research In Motion Limited. All
  6567. rights reserved. BlackBerry</span><span style='font-size:12.0pt;font-family:
  6568. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6569. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, RIM</span><span
  6570. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6571. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6572. "Times New Roman"'>, Research In Motion</span><span style='font-size:12.0pt;
  6573. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6574. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and related
  6575. trademarks, names, and logos are the property of Research In Motion Limited and
  6576. are registered and/or used in the U.S. and countries around the world.<o:p></o:p></span></p>
  6577. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6578. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  6579. is a trademark of Google Inc. Apache is a trademark of The Apache Software
  6580. Foundation. Apple, iPhone, iPad, Mac OS, TrueType, and Xcode are trademarks of
  6581. Apple Inc. Bluetooth is a trademark of Bluetooth SIG. COLLADA and OpenGL are
  6582. trademarks of Khronos Group Inc. Eclipse is a trademark of Eclipse Foundation,
  6583. Inc. FBX and Maya are trademarks of Autodesk, Inc. GitHub is a trademark of
  6584. Github, LLC. Linux is a trademark of Linus Torvalds. Microsoft, Windows, and
  6585. Visual Studio are trademarks of Microsoft Corporation. QNX and Momentics are
  6586. trademarks of QNX Software Systems Limited. All other trademarks are the
  6587. property of their respective owners.<o:p></o:p></span></p>
  6588. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6589. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>This
  6590. documentation including all documentation incorporated by reference herein such
  6591. as documentation provided or made available at <u><span style='color:blue'><a
  6592. href="http://www.blackberry.com/go/docs">www.blackberry.com/go/docs</a></span></u>is
  6593. provided or made accessible &quot;AS IS&quot; and &quot;AS AVAILABLE&quot; and
  6594. without condition, endorsement, guarantee, representation, or warranty of any
  6595. kind by Research In Motion Limited and its affiliated companies
  6596. (&quot;RIM&quot;) and RIM assumes no responsibility for any typographical,
  6597. technical, or other inaccuracies, errors, or omissions in this documentation.
  6598. In order to protect RIM proprietary and confidential information and/or trade
  6599. secrets, this documentation may describe some aspects of RIM technology in
  6600. generalized terms. RIM reserves the right to periodically change information
  6601. that is contained in this documentation; however, RIM makes no commitment to
  6602. provide any such changes, updates, enhancements, or other additions to this
  6603. documentation to you in a timely manner or at all.<o:p></o:p></span></p>
  6604. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6605. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>This
  6606. documentation might contain references to third-party sources of information,
  6607. hardware or software, products or services including components and content
  6608. such as content protected by copyright and/or third-party web sites
  6609. (collectively the &quot;Third Party Products and Services&quot;). RIM does not
  6610. control, and is not responsible for, any Third Party Products and Services
  6611. including, without limitation the content, accuracy, copyright compliance,
  6612. compatibility, performance, trustworthiness, legality, decency, links, or any
  6613. other aspect of Third Party Products and Services. The inclusion of a reference
  6614. to Third Party Products and Services in this documentation does not imply
  6615. endorsement by RIM of the Third Party Products and Services or the third party
  6616. in any way.<o:p></o:p></span></p>
  6617. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6618. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>EXCEPT
  6619. TO THE EXTENT SPECIFICALLY PROHIBITED BY APPLICABLE LAW IN YOUR JURISDICTION,
  6620. ALL CONDITIONS, ENDORSEMENTS, GUARANTEES, REPRESENTATIONS, OR WARRANTIES OF ANY
  6621. KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY CONDITIONS,
  6622. ENDORSEMENTS, GUARANTEES, REPRESENTATIONS OR WARRANTIES OF DURABILITY, FITNESS
  6623. FOR A PARTICULAR PURPOSE OR USE, MERCHANTABILITY, MERCHANTABLE QUALITY,
  6624. NON-INFRINGEMENT, SATISFACTORY QUALITY, OR TITLE, OR ARISING FROM A STATUTE OR
  6625. CUSTOM OR A COURSE OF DEALING OR USAGE OF TRADE, OR RELATED TO THE
  6626. DOCUMENTATION OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE,
  6627. HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN,
  6628. ARE HEREBY EXCLUDED. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE OR
  6629. PROVINCE. SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF
  6630. IMPLIED WARRANTIES AND CONDITIONS. TO THE EXTENT PERMITTED BY LAW, ANY IMPLIED
  6631. WARRANTIES OR CONDITIONS RELATING TO THE DOCUMENTATION TO THE EXTENT THEY
  6632. CANNOT BE EXCLUDED AS SET OUT ABOVE, BUT CAN BE LIMITED, ARE HEREBY LIMITED TO
  6633. NINETY (90) DAYS FROM THE DATE YOU FIRST ACQUIRED THE DOCUMENTATION OR THE ITEM
  6634. THAT IS THE SUBJECT OF THE CLAIM.<o:p></o:p></span></p>
  6635. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6636. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>TO
  6637. THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, IN NO
  6638. EVENT SHALL RIM BE LIABLE FOR ANY TYPE OF DAMAGES RELATED TO THIS DOCUMENTATION
  6639. OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE, HARDWARE,
  6640. SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN INCLUDING
  6641. WITHOUT LIMITATION ANY OF THE FOLLOWING DAMAGES: DIRECT, CONSEQUENTIAL,
  6642. EXEMPLARY, INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, OR AGGRAVATED DAMAGES,
  6643. DAMAGES FOR LOSS OF PROFITS OR REVENUES, FAILURE TO REALIZE ANY EXPECTED
  6644. SAVINGS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, LOSS OF BUSINESS
  6645. OPPORTUNITY, OR CORRUPTION OR LOSS OF DATA, FAILURES TO TRANSMIT OR RECEIVE ANY
  6646. DATA, PROBLEMS ASSOCIATED WITH ANY APPLICATIONS USED IN CONJUNCTION WITH RIM
  6647. PRODUCTS OR SERVICES, DOWNTIME COSTS, LOSS OF THE USE OF RIM PRODUCTS OR
  6648. SERVICES OR ANY PORTION THEREOF OR OF ANY AIRTIME SERVICES, COST OF SUBSTITUTE
  6649. GOODS, COSTS OF COVER, FACILITIES OR SERVICES, COST OF CAPITAL, OR OTHER
  6650. SIMILAR PECUNIARY LOSSES, WHETHER OR NOT SUCH DAMAGES WERE FORESEEN OR
  6651. UNFORESEEN, AND EVEN IF RIM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  6652. DAMAGES.<o:p></o:p></span></p>
  6653. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6654. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>TO
  6655. THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, RIM SHALL
  6656. HAVE NO OTHER OBLIGATION, DUTY, OR LIABILITY WHATSOEVER IN CONTRACT, TORT, OR
  6657. OTHERWISE TO YOU INCLUDING ANY LIABILITY FOR NEGLIGENCE OR STRICT LIABILITY.<o:p></o:p></span></p>
  6658. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6659. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>THE
  6660. LIMITATIONS, EXCLUSIONS, AND DISCLAIMERS HEREIN SHALL APPLY: (A) IRRESPECTIVE
  6661. OF THE NATURE OF THE CAUSE OF ACTION, DEMAND, OR ACTION BY YOU INCLUDING BUT
  6662. NOT LIMITED TO BREACH OF CONTRACT, NEGLIGENCE, TORT, STRICT LIABILITY OR ANY
  6663. OTHER LEGAL THEORY AND SHALL SURVIVE A FUNDAMENTAL BREACH OR BREACHES OR THE
  6664. FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR OF ANY REMEDY CONTAINED
  6665. HEREIN; AND (B) TO RIM AND ITS AFFILIATED COMPANIES, THEIR SUCCESSORS, ASSIGNS,
  6666. AGENTS, SUPPLIERS (INCLUDING AIRTIME SERVICE PROVIDERS), AUTHORIZED RIM
  6667. DISTRIBUTORS (ALSO INCLUDING AIRTIME SERVICE PROVIDERS) AND THEIR RESPECTIVE
  6668. DIRECTORS, EMPLOYEES, AND INDEPENDENT CONTRACTORS.<o:p></o:p></span></p>
  6669. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6670. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6671. style='mso-spacerun:yes'> </span>IN ADDITION TO THE LIMITATIONS AND EXCLUSIONS
  6672. SET OUT ABOVE, IN NO EVENT SHALL ANY DIRECTOR, EMPLOYEE, AGENT, DISTRIBUTOR,
  6673. SUPPLIER, INDEPENDENT CONTRACTOR OF RIM OR ANY AFFILIATES OF RIM HAVE ANY
  6674. LIABILITY ARISING FROM OR RELATED TO THE DOCUMENTATION.<o:p></o:p></span></p>
  6675. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6676. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Prior
  6677. to subscribing for, installing, or using any Third Party Products and Services,
  6678. it is your responsibility to ensure that your airtime service provider has
  6679. agreed to support all of their features. Some airtime service providers might
  6680. not offer Internet browsing functionality with a subscription to the BlackBerry</span><span
  6681. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6682. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6683. "Times New Roman"'> Internet Service. Check with your service provider for
  6684. availability, roaming arrangements, service plans and features. Installation or
  6685. use of Third Party Products and Services with RIM's products and services may
  6686. require one or more patent, trademark, copyright, or other licenses in order to
  6687. avoid infringement or violation of third party rights. You are solely responsible
  6688. for determining whether to use Third Party Products and Services and if any
  6689. third party licenses are required to do so. If required you are responsible for
  6690. acquiring them. You should not install or use Third Party Products and Services
  6691. until all necessary licenses have been acquired. Any Third Party Products and
  6692. Services that are provided with RIM's products and services are provided as a
  6693. convenience to you and are provided &quot;AS IS&quot; with no express or
  6694. implied conditions, endorsements, guarantees, representations, or warranties of
  6695. any kind by RIM and RIM assumes no liability whatsoever, in relation thereto.
  6696. Your use of Third Party Products and Services shall be governed by and subject
  6697. to you agreeing to the terms of separate licenses and other agreements applicable
  6698. thereto with third parties, except to the extent expressly covered by a license
  6699. or other agreement with RIM.<o:p></o:p></span></p>
  6700. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6701. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Certain
  6702. features outlined in this documentation require a minimum version of BlackBerry</span><span
  6703. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6704. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6705. "Times New Roman"'> Enterprise Server, BlackBerry</span><span style='font-size:
  6706. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6707. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> Desktop
  6708. Software, and/or BlackBerry</span><span style='font-size:12.0pt;font-family:
  6709. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6710. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> Device
  6711. Software.<o:p></o:p></span></p>
  6712. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6713. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  6714. terms of use of any RIM product or service are set out in a separate license or
  6715. other agreement with RIM applicable thereto. NOTHING IN THIS DOCUMENTATION IS
  6716. INTENDED TO SUPERSEDE ANY EXPRESS WRITTEN AGREEMENTS OR WARRANTIES PROVIDED BY
  6717. RIM FOR PORTIONS OF ANY RIM PRODUCT OR SERVICE OTHER THAN THIS DOCUMENTATION.<o:p></o:p></span></p>
  6718. <p class=MsoNormal><a name=d20e152a1310></a><a name=d20e156a1310></a><a
  6719. name=d20e159a1310></a><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6720. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6721. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6722. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Research
  6723. In Motion Limited<o:p></o:p></span></p>
  6724. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>295
  6725. Phillip Street<o:p></o:p></span></p>
  6726. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Waterloo,
  6727. ON N2L 3W8<o:p></o:p></span></p>
  6728. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Canada<o:p></o:p></span></p>
  6729. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6730. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Published
  6731. in Canada<o:p></o:p></span></p>
  6732. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6733. </div>
  6734. </body>
  6735. </html>