development-guide.html 489 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836
  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>­</p>
  1205. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1206. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1207. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1208. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1209. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1210. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1211. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1212. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1213. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1214. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  1215. <p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
  1216. o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
  1217. stroked="f">
  1218. <v:stroke joinstyle="miter"/>
  1219. <v:formulas>
  1220. <v:f eqn="if lineDrawn pixelLineWidth 0"/>
  1221. <v:f eqn="sum @0 1 0"/>
  1222. <v:f eqn="sum 0 0 @1"/>
  1223. <v:f eqn="prod @2 1 2"/>
  1224. <v:f eqn="prod @3 21600 pixelWidth"/>
  1225. <v:f eqn="prod @3 21600 pixelHeight"/>
  1226. <v:f eqn="sum @0 0 1"/>
  1227. <v:f eqn="prod @6 1 2"/>
  1228. <v:f eqn="prod @7 21600 pixelWidth"/>
  1229. <v:f eqn="sum @8 21600 0"/>
  1230. <v:f eqn="prod @7 21600 pixelHeight"/>
  1231. <v:f eqn="sum @10 21600 0"/>
  1232. </v:formulas>
  1233. <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
  1234. <o:lock v:ext="edit" aspectratio="t"/>
  1235. </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:460.5pt;
  1236. height:91.5pt'>
  1237. <v:imagedata src="development-guide_files/image001.png" o:title=""/>
  1238. </v:shape><![endif]--><![if !vml]><img width=614 height=122
  1239. src="development-guide_files/image002.gif" v:shapes="_x0000_i1025"><![endif]></p>
  1240. <p class=MsoSubtitle><a name="_Toc330902766">Development Guide</a></p>
  1241. <b><span style='font-size:26.0pt;mso-bidi-font-size:12.0pt;font-family:"Malgun Gothic","sans-serif";
  1242. mso-hansi-font-family:"Times New Roman";mso-bidi-font-family:"Times New Roman";
  1243. color:#009ACD;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:
  1244. AR-SA'><br clear=all style='page-break-before:always'>
  1245. </span></b>
  1246. <p class=MsoSubtitle><a name="_Toc330902767"><span style='font-size:26.0pt;
  1247. mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>Contents</span></a></p>
  1248. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  1249. "Times New Roman";color:#009ACD'><o:p>&nbsp;</o:p></span></p>
  1250. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><!--[if supportFields]><span
  1251. style='font-size:12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:
  1252. "Times New Roman";color:#009ACD'><span style='mso-element:field-begin'></span><span
  1253. style='mso-spacerun:yes'> </span>TOC \o &quot;1-2&quot; \h \z \u <span
  1254. style='mso-element:field-separator'></span></span><![endif]--><span
  1255. style='font-size:12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:
  1256. "Times New Roman";color:#009ACD'><span style='mso-no-proof:yes'><a
  1257. href="#_Toc330902766"><span style='color:#009ACD;text-decoration:none;
  1258. text-underline:none'>Development Guide<span style='display:none;mso-hide:screen'><span
  1259. style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1260. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1261. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1262. _Toc330902766 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1263. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1264. text-underline:none'>1<!--[if gte mso 9]><xml>
  1265. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600360000000000</w:data>
  1266. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1267. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1268. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></span></p>
  1269. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1270. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1271. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902767"><span
  1272. style='color:#009ACD;text-decoration:none;text-underline:none'>Contents<span
  1273. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1274. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1275. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1276. _Toc330902767 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1277. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1278. text-underline:none'>2<!--[if gte mso 9]><xml>
  1279. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600370000000000</w:data>
  1280. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1281. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1282. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1283. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1284. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1285. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902768"><span
  1286. style='color:#009ACD;text-decoration:none;text-underline:none'>Overview<span
  1287. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>.. </span></span></span><!--[if supportFields]><span
  1288. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1289. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1290. _Toc330902768 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1291. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1292. text-underline:none'>3<!--[if gte mso 9]><xml>
  1293. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600380000000000</w:data>
  1294. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1295. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1296. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1297. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1298. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1299. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902769"><span
  1300. style='color:#009ACD;text-decoration:none;text-underline:none'>Compiling
  1301. framework<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1302. 1 dotted'>. </span></span></span><!--[if supportFields]><span style='color:
  1303. #009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1304. style='mso-element:field-begin'></span> PAGEREF _Toc330902769 \h <span
  1305. style='mso-element:field-separator'></span></span><![endif]--><span
  1306. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1307. text-underline:none'>5<!--[if gte mso 9]><xml>
  1308. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003600390000000000</w:data>
  1309. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1310. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1311. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1312. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1313. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1314. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902770"><span
  1315. style='color:#009ACD;text-decoration:none;text-underline:none'>Assets and
  1316. authoring<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1317. 1 dotted'>. </span></span></span><!--[if supportFields]><span style='color:
  1318. #009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1319. style='mso-element:field-begin'></span> PAGEREF _Toc330902770 \h <span
  1320. style='mso-element:field-separator'></span></span><![endif]--><span
  1321. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1322. text-underline:none'>12<!--[if gte mso 9]><xml>
  1323. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700300000000000</w:data>
  1324. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1325. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1326. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1327. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1328. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1329. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902771"><span
  1330. style='color:#009ACD;text-decoration:none;text-underline:none'>Game<span
  1331. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1332. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1333. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1334. _Toc330902771 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1335. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1336. text-underline:none'>15<!--[if gte mso 9]><xml>
  1337. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700310000000000</w:data>
  1338. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1339. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1340. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1341. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1342. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1343. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902772"><span
  1344. style='color:#009ACD;text-decoration:none;text-underline:none'>Input and
  1345. sensors<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1346. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1347. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1348. style='mso-element:field-begin'></span> PAGEREF _Toc330902772 \h <span
  1349. style='mso-element:field-separator'></span></span><![endif]--><span
  1350. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1351. text-underline:none'>18<!--[if gte mso 9]><xml>
  1352. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700320000000000</w:data>
  1353. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1354. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1355. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1356. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1357. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1358. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902773"><span
  1359. style='color:#009ACD;text-decoration:none;text-underline:none'>Sprites and
  1360. fonts<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1361. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1362. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1363. style='mso-element:field-begin'></span> PAGEREF _Toc330902773 \h <span
  1364. style='mso-element:field-separator'></span></span><![endif]--><span
  1365. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1366. text-underline:none'>20<!--[if gte mso 9]><xml>
  1367. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700330000000000</w:data>
  1368. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1369. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1370. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1371. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1372. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1373. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902774"><span
  1374. style='color:#009ACD;text-decoration:none;text-underline:none'>Scene and nodes<span
  1375. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1376. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1377. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1378. _Toc330902774 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1379. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1380. text-underline:none'>22<!--[if gte mso 9]><xml>
  1381. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700340000000000</w:data>
  1382. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1383. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1384. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1385. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1386. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1387. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902775"><span
  1388. style='color:#009ACD;text-decoration:none;text-underline:none'>Model and mesh<span
  1389. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1390. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1391. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1392. _Toc330902775 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1393. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1394. text-underline:none'>28<!--[if gte mso 9]><xml>
  1395. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700350000000000</w:data>
  1396. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1397. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1398. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1399. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1400. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1401. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902776"><span
  1402. style='color:#009ACD;text-decoration:none;text-underline:none'>Lights<span
  1403. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1404. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1405. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1406. _Toc330902776 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1407. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1408. text-underline:none'>30<!--[if gte mso 9]><xml>
  1409. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700360000000000</w:data>
  1410. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1411. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1412. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1413. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1414. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1415. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902777"><span
  1416. style='color:#009ACD;text-decoration:none;text-underline:none'>Materials and
  1417. shaders<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1418. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1419. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1420. style='mso-element:field-begin'></span> PAGEREF _Toc330902777 \h <span
  1421. style='mso-element:field-separator'></span></span><![endif]--><span
  1422. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1423. text-underline:none'>33<!--[if gte mso 9]><xml>
  1424. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700370000000000</w:data>
  1425. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1426. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1427. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1428. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1429. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1430. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902778"><span
  1431. style='color:#009ACD;text-decoration:none;text-underline:none'>Particle
  1432. emitters<span style='display:none;mso-hide:screen'><span style='mso-tab-count:
  1433. 1 dotted'> </span></span></span><!--[if supportFields]><span style='color:#009ACD;
  1434. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1435. style='mso-element:field-begin'></span> PAGEREF _Toc330902778 \h <span
  1436. style='mso-element:field-separator'></span></span><![endif]--><span
  1437. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1438. text-underline:none'>37<!--[if gte mso 9]><xml>
  1439. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700380000000000</w:data>
  1440. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1441. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1442. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1443. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1444. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1445. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902779"><span
  1446. style='color:#009ACD;text-decoration:none;text-underline:none'>Physics<span
  1447. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'> </span></span></span><!--[if supportFields]><span
  1448. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1449. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1450. _Toc330902779 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1451. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1452. text-underline:none'>39<!--[if gte mso 9]><xml>
  1453. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003700390000000000</w:data>
  1454. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1455. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1456. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1457. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1458. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1459. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902780"><span
  1460. style='color:#009ACD;text-decoration:none;text-underline:none'>Animation<span
  1461. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1462. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1463. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1464. _Toc330902780 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1465. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1466. text-underline:none'>48<!--[if gte mso 9]><xml>
  1467. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800300000000000</w:data>
  1468. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1469. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1470. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1471. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1472. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1473. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902781"><span
  1474. style='color:#009ACD;text-decoration:none;text-underline:none'>Audio<span
  1475. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1476. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1477. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1478. _Toc330902781 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1479. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1480. text-underline:none'>53<!--[if gte mso 9]><xml>
  1481. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800310000000000</w:data>
  1482. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1483. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1484. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1485. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1486. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1487. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902782"><span
  1488. style='color:#009ACD;text-decoration:none;text-underline:none'>User Interface<span
  1489. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1490. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1491. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1492. _Toc330902782 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1493. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1494. text-underline:none'>55<!--[if gte mso 9]><xml>
  1495. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800320000000000</w:data>
  1496. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1497. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1498. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1499. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1500. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1501. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902783"><span
  1502. style='color:#009ACD;text-decoration:none;text-underline:none'>Scripting<span
  1503. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1504. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1505. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1506. _Toc330902783 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1507. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1508. text-underline:none'>65<!--[if gte mso 9]><xml>
  1509. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800330000000000</w:data>
  1510. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1511. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1512. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1513. <p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span style='font-size:
  1514. 12.0pt;mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman";
  1515. color:#009ACD;mso-no-proof:yes'><a href="#_Toc330902784"><span
  1516. style='color:#009ACD;text-decoration:none;text-underline:none'>License<span
  1517. style='display:none;mso-hide:screen'><span style='mso-tab-count:1 dotted'>. </span></span></span><!--[if supportFields]><span
  1518. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1519. text-underline:none'><span style='mso-element:field-begin'></span> PAGEREF
  1520. _Toc330902784 \h <span style='mso-element:field-separator'></span></span><![endif]--><span
  1521. style='color:#009ACD;display:none;mso-hide:screen;text-decoration:none;
  1522. text-underline:none'>71<!--[if gte mso 9]><xml>
  1523. <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300300039003000320037003800340000000000</w:data>
  1524. </xml><![endif]--></span><!--[if supportFields]><span style='color:#009ACD;
  1525. display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
  1526. style='mso-element:field-end'></span></span><![endif]--></a><o:p></o:p></span></p>
  1527. <p class=link><!--[if supportFields]><span style='font-size:12.0pt;mso-hansi-font-family:
  1528. "Malgun Gothic";mso-bidi-font-family:"Times New Roman";color:#009ACD'><span
  1529. style='mso-element:field-end'></span></span><![endif]--><span style='mso-bidi-font-size:
  1530. 12.0pt;mso-bidi-font-family:"Times New Roman";color:#009ACD'><span
  1531. style='mso-tab-count:7'>                                                                   </span><span
  1532. style='mso-spacerun:yes'> </span><span style='mso-tab-count:4'>                                     </span><o:p></o:p></span></p>
  1533. <p class=link><a name=d3e3a1310></a><span style='mso-bidi-font-size:12.0pt;
  1534. mso-bidi-font-family:"Times New Roman";color:#00C2FE'><o:p>&nbsp;</o:p></span></p>
  1535. <h2><a name="_Toc330902768">Overview</a></h2>
  1536. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1537. gameplay framework is an open-source, cross-platform gaming framework that is
  1538. designed to make it easy to learn to write 3-D mobile and desktop games using
  1539. native C++. In this guide, we cover a top-down approach to teaching you the
  1540. gameplay library, tools, and all the major parts of the APIs that are included
  1541. in the framework. This guide covers a set of the C++ classes that you can use
  1542. to write your games.<o:p></o:p></span></p>
  1543. <h3>Design goals and considerations</h3>
  1544. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  1545. creating the gameplay framework, the goal was not only to focus on creating a
  1546. high performance native C++ game framework, but also on a clean, simple, and
  1547. elegant architecture. The framework uses a minimal set of cross-platform
  1548. external dependencies and tries to take a minimalist approach to designing the
  1549. classes. This approach allows you to learn from the classes in the library and
  1550. extend the framework to build your own game engine or tools. The framework is a
  1551. good starting block for learning how to write 3-D cross-platform mobile and
  1552. desktop games, allowing you to spend more time designing your game.<o:p></o:p></span></p>
  1553. <h3>Why write another game engine?</h3>
  1554. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>We
  1555. actually hope it will be considered more of a gaming framework; however, in
  1556. essence, it is really still just the core components of a game engine. There
  1557. are several reasons why the gameplay framework was developed. <o:p></o:p></span></p>
  1558. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1559. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>First,
  1560. most modern 3-D game engines, while sometimes free or cheap, are closed source.
  1561. Additionally, they usually have licensing fees. The gameplay framework is free,
  1562. open-source software under the Apache 2.0 license. We want more people to learn
  1563. about the fact that cross-platform is a reality and building a good base lets
  1564. you move forward to writing game titles.<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"'>Secondly,
  1567. a game engine is not only about rendering. Yes, it</span><span
  1568. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  1569. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  1570. "Times New Roman"'>s a huge part, but equally important are other aspects of
  1571. game engines, such as audio, physics, animation, UI forms, particle emitters,
  1572. scripting, and math. Searching on the web and trying to find information on how
  1573. to fit these things into your game engine, or games, will likely scatter you
  1574. across many different places, with the chance of gaps in your learning. This
  1575. framework will hopefully bring it all together for you.<o:p></o:p></span></p>
  1576. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1577. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Lastly,
  1578. mobile is hot! The gameplay framework will have a lot of emphasis on gaming on
  1579. mobile devices. Today, mobile gaming is the largest growing sector of the game
  1580. industry. Additionally, we still provide support for desktop platforms for both
  1581. tooling and gaming. However, we think more focus should be on mobile gaming and
  1582. learning how to write games that can easily target the cross-platform mobile
  1583. sector. <o:p></o:p></span></p>
  1584. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1585. <h2><a name="_Toc330902769">Compiling framework</a></h2>
  1586. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  1587. build the gameplay library, tools, and samples as well as write your own games,
  1588. you will have to install and use the platform specific tools listed below.
  1589. These are the supported development environments for each specific operating
  1590. system as a target platform.<o:p></o:p></span></p>
  1591. <p class=MsoNormal><a name=d4e13a1310></a><span style='font-size:12.0pt;
  1592. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1593. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1594. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1595. <thead>
  1596. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:20.45pt'>
  1597. <td width=205 valign=top style='width:153.45pt;background:whitesmoke;
  1598. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1599. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1600. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1601. mso-bidi-font-weight:normal'>Desktop OS<o:p></o:p></span></p>
  1602. </td>
  1603. <td width=210 valign=top style='width:157.45pt;background:whitesmoke;
  1604. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1605. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1606. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1607. mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
  1608. </td>
  1609. <td width=221 valign=top style='width:165.4pt;background:whitesmoke;
  1610. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1611. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1612. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1613. mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
  1614. </td>
  1615. </tr>
  1616. </thead>
  1617. <tr style='mso-yfti-irow:1;height:20.45pt'>
  1618. <td width=205 valign=top style='width:153.45pt;background:#E6E6E6;padding:
  1619. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1620. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1621. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Microsoft
  1622. Windows 7<o:p></o:p></span></p>
  1623. </td>
  1624. <td width=210 valign=top style='width:157.45pt;background:#E6E6E6;padding:
  1625. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1626. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1627. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Visual
  1628. Studio 2010<o:p></o:p></span></p>
  1629. </td>
  1630. <td width=221 valign=top style='width:165.4pt;background:#E6E6E6;padding:
  1631. 0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1632. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1633. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1634. 7<o:p></o:p></span></p>
  1635. </td>
  1636. </tr>
  1637. <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes;height:20.45pt'>
  1638. <td width=205 valign=top style='width:153.45pt;background:whitesmoke;
  1639. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1640. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1641. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Apple
  1642. Mac OS X<o:p></o:p></span></p>
  1643. </td>
  1644. <td width=210 valign=top style='width:157.45pt;background:whitesmoke;
  1645. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1646. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1647. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1648. 4.3.2<o:p></o:p></span></p>
  1649. </td>
  1650. <td width=221 valign=top style='width:165.4pt;background:whitesmoke;
  1651. padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
  1652. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1653. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Mac
  1654. OS X<o:p></o:p></span></p>
  1655. </td>
  1656. </tr>
  1657. </table>
  1658. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  1659. text-autospace:ideograph-numeric ideograph-other'><a name=d4e85a1310></a><span
  1660. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1661. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1662. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1663. <thead>
  1664. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  1665. <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;
  1666. padding:0in 5.4pt 0in 5.4pt'>
  1667. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1668. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1669. mso-bidi-font-weight:normal'>Mobile OS<o:p></o:p></span></p>
  1670. </td>
  1671. <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
  1672. 0in 5.4pt 0in 5.4pt'>
  1673. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1674. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1675. mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
  1676. </td>
  1677. <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;
  1678. padding:0in 5.4pt 0in 5.4pt'>
  1679. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1680. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1681. mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
  1682. </td>
  1683. </tr>
  1684. </thead>
  1685. <tr style='mso-yfti-irow:1'>
  1686. <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
  1687. padding:0in 5.4pt 0in 5.4pt'>
  1688. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1689. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1690. PlayBook OS 2.0<o:p></o:p></span></p>
  1691. </td>
  1692. <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
  1693. padding:0in 5.4pt 0in 5.4pt'>
  1694. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1695. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1696. Native SDK 2.0<o:p></o:p></span></p>
  1697. </td>
  1698. <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
  1699. padding:0in 5.4pt 0in 5.4pt'>
  1700. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1701. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1702. 7, Mac OS X<o:p></o:p></span></p>
  1703. </td>
  1704. </tr>
  1705. <tr style='mso-yfti-irow:2'>
  1706. <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;padding:
  1707. 0in 5.4pt 0in 5.4pt'>
  1708. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1709. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  1710. 2.3<o:p></o:p></span></p>
  1711. </td>
  1712. <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
  1713. 0in 5.4pt 0in 5.4pt'>
  1714. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1715. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  1716. NDK 7<o:p></o:p></span></p>
  1717. </td>
  1718. <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;padding:
  1719. 0in 5.4pt 0in 5.4pt'>
  1720. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1721. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Windows
  1722. 7, Mac OS X<o:p></o:p></span></p>
  1723. </td>
  1724. </tr>
  1725. <tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes'>
  1726. <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
  1727. padding:0in 5.4pt 0in 5.4pt'>
  1728. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1729. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>iOS
  1730. 5.1<o:p></o:p></span></p>
  1731. </td>
  1732. <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
  1733. padding:0in 5.4pt 0in 5.4pt'>
  1734. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1735. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1736. 4.3.2<o:p></o:p></span></p>
  1737. </td>
  1738. <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
  1739. padding:0in 5.4pt 0in 5.4pt'>
  1740. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1741. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Mac
  1742. OS X<o:p></o:p></span></p>
  1743. </td>
  1744. </tr>
  1745. </table>
  1746. <h3>Project repository</h3>
  1747. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Included
  1748. in the project repository are the following notable folder and files: <o:p></o:p></span></p>
  1749. <p class=MsoNormal><a name=d4e186a1310></a><span style='font-size:12.0pt;
  1750. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1751. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  1752. style='margin-left:.9pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  1753. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  1754. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1755. 0in 5.4pt 0in 5.4pt'>
  1756. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1757. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1758. mso-bidi-font-weight:normal'>Folder/Files</span><span style='mso-bidi-font-size:
  1759. 12.0pt;mso-bidi-font-family:"Times New Roman";font-weight:normal'><o:p></o:p></span></p>
  1760. </td>
  1761. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1762. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  1763. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  1764. mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
  1765. </td>
  1766. </tr>
  1767. <tr style='mso-yfti-irow:1'>
  1768. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1769. padding:0in 5.4pt 0in 5.4pt'>
  1770. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/bin<o:p></o:p></span></p>
  1771. </td>
  1772. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1773. 0in 5.4pt 0in 5.4pt'>
  1774. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Precompiled
  1775. binary tools<o:p></o:p></span></p>
  1776. </td>
  1777. </tr>
  1778. <tr style='mso-yfti-irow:2'>
  1779. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1780. 0in 5.4pt 0in 5.4pt'>
  1781. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/external-deps
  1782. <o:p></o:p></span></p>
  1783. </td>
  1784. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1785. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>External
  1786. dependency libraries<o:p></o:p></span></p>
  1787. </td>
  1788. </tr>
  1789. <tr style='mso-yfti-irow:3'>
  1790. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1791. padding:0in 5.4pt 0in 5.4pt'>
  1792. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay
  1793. <o:p></o:p></span></p>
  1794. </td>
  1795. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1796. 0in 5.4pt 0in 5.4pt'>
  1797. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1798. gameplay library<o:p></o:p></span></p>
  1799. </td>
  1800. </tr>
  1801. <tr style='mso-yfti-irow:4'>
  1802. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1803. 0in 5.4pt 0in 5.4pt'>
  1804. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-api
  1805. <o:p></o:p></span></p>
  1806. </td>
  1807. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1808. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Doxygen
  1809. API Reference<o:p></o:p></span></p>
  1810. </td>
  1811. </tr>
  1812. <tr style='mso-yfti-irow:5'>
  1813. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1814. padding:0in 5.4pt 0in 5.4pt'>
  1815. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-docs
  1816. <o:p></o:p></span></p>
  1817. </td>
  1818. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1819. 0in 5.4pt 0in 5.4pt'>
  1820. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Documentation
  1821. guides and tutorials<o:p></o:p></span></p>
  1822. </td>
  1823. </tr>
  1824. <tr style='mso-yfti-irow:6'>
  1825. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1826. 0in 5.4pt 0in 5.4pt'>
  1827. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-encoder
  1828. <o:p></o:p></span></p>
  1829. </td>
  1830. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
  1831. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  1832. asset/content encoding tool<o:p></o:p></span></p>
  1833. </td>
  1834. </tr>
  1835. <tr style='mso-yfti-irow:7;page-break-inside:avoid'>
  1836. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1837. padding:0in 5.4pt 0in 5.4pt'>
  1838. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-luagen<o:p></o:p></span></p>
  1839. </td>
  1840. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1841. 0in 5.4pt 0in 5.4pt'>
  1842. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Lua
  1843. script bindings generator tool<o:p></o:p></span></p>
  1844. </td>
  1845. </tr>
  1846. <tr style='mso-yfti-irow:8;page-break-inside:avoid'>
  1847. <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
  1848. 0in 5.4pt 0in 5.4pt'>
  1849. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-template<o:p></o:p></span></p>
  1850. </td>
  1851. <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding: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 template project files<o:p></o:p></span></p>
  1854. </td>
  1855. </tr>
  1856. <tr style='mso-yfti-irow:9'>
  1857. <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
  1858. padding:0in 5.4pt 0in 5.4pt'>
  1859. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>/gameplay-samples<o:p></o:p></span></p>
  1860. </td>
  1861. <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
  1862. 0in 5.4pt 0in 5.4pt'>
  1863. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  1864. samples<o:p></o:p></span></p>
  1865. </td>
  1866. </tr>
  1867. <tr style='mso-yfti-irow:10'>
  1868. <td width=234 valign=top style='width:175.5pt;background:#D9D9D9;padding:
  1869. 0in 5.4pt 0in 5.4pt'>
  1870. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>gameplay.xcworkspace<o:p></o:p></span></p>
  1871. </td>
  1872. <td width=403 valign=top style='width:4.2in;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
  1873. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Xcode
  1874. workspace<o:p></o:p></span></p>
  1875. </td>
  1876. </tr>
  1877. <tr style='mso-yfti-irow:11'>
  1878. <td width=234 valign=top style='width:175.5pt;background:#F2F2F2;padding:
  1879. 0in 5.4pt 0in 5.4pt'>
  1880. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>gameplay.sln<o:p></o:p></span></p>
  1881. </td>
  1882. <td width=403 valign=top style='width:4.2in;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
  1883. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Microsoft
  1884. Visual Studio solution<o:p></o:p></span></p>
  1885. </td>
  1886. </tr>
  1887. <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
  1888. <td width=234 valign=top style='width:175.5pt;background:#D9D9D9;padding:
  1889. 0in 5.4pt 0in 5.4pt'>
  1890. <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>
  1891. </td>
  1892. <td width=403 valign=top style='width:4.2in;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
  1893. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>New
  1894. cross-platform project script<o:p></o:p></span></p>
  1895. </td>
  1896. </tr>
  1897. </table>
  1898. <h3>Getting started on desktop</h3>
  1899. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1900. quickest way to get started using the gameplay framework and tools is to simply
  1901. start working in one of the desktop environments. You could use Microsoft
  1902. Visual Studio 2010 Express, Professional on a Windows 7 operating system, or
  1903. Xcode 4.3.2 on an Apple Mac OS X operating system. Then just open either the
  1904. Microsoft Visual Studio solution or Xcode workspace, and build and run the
  1905. projects. These solutions/workspaces are set up by default to build all the
  1906. projects needed and to run the samples you have selected as active.<o:p></o:p></span></p>
  1907. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1908. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Voila!
  1909. You now have one of several simple, interactive samples running on your desktop
  1910. environment, which you can explore and become more familiar with.<o:p></o:p></span></p>
  1911. <h3>Game samples</h3>
  1912. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  1913. gameplay-docs folder contains additional tutorial documentation for our
  1914. gameplay-samples. These are intended to go into more detail for designing and
  1915. coding games written using the framework. They all have a good starting point
  1916. but have intentionally been left incomplete. This gives you the opportunity to
  1917. change the samples, and complete them to make them more fun to interact and
  1918. play with. They provide good building blocks and are a basis for you to explore
  1919. various features in the framework. You can utilize code snippets from the
  1920. samples to help speed up the development cycle in your own games.<o:p></o:p></span></p>
  1921. <h3>API reference</h3>
  1922. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>We
  1923. firmly believe in making a very intuitive set of APIs that are as
  1924. straight-forward and as consistent as possible. However, all of the classes in
  1925. the framework have been well documented with Doxygen formatting. The classes
  1926. will be updated and improved iteratively throughout each release. This is to
  1927. help you learn about what classes or sets of functions can be used and the
  1928. recommended practices in using them.<o:p></o:p></span></p>
  1929. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1930. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  1931. should consider reading the latest versions of the API reference from the
  1932. pre-generated HTML Doxygen API documentation in the gameplay-api folder. This
  1933. will give you a deeper understanding of the C++ gameplay framework.<o:p></o:p></span></p>
  1934. <h3>Getting started on mobile</h3>
  1935. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Now
  1936. that you are up and running on one of the desktop environments, we recommend
  1937. you take this seriously and go mobile! In today</span><span style='font-size:
  1938. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  1939. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s mobile game
  1940. market, cross-platform development is a reality. It is quite simple and easy to
  1941. use the gameplay framework to target a wider device audience. Start by
  1942. downloading the native development kit for one of the various supported mobile
  1943. operating system targets or set them all up. <o:p></o:p></span></p>
  1944. <h3>Mobile setup instructions</h3>
  1945. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Listed
  1946. below are the basic setup instructions for downloading and installing the
  1947. supported mobile platform and development environments for gameplay.<o:p></o:p></span></p>
  1948. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  1949. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  1950. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
  1951. Native SDK 2.0/10 Beta (PlayBook tablets and BlackBerry 10 devices)</span></b><span
  1952. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  1953. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  1954. mso-list:l6 level1 lfo2'><a name=d4e432a1310></a><![if !supportLists]><span
  1955. style='mso-bidi-font-size:12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span
  1956. style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
  1957. </span></span></span><![endif]><u><span style='font-size:12.0pt;mso-bidi-font-family:
  1958. "Times New Roman";color:blue'><a
  1959. href="https://bdsc.webapps.blackberry.com/native/download/">Download</a> </span></u><span
  1960. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  1961. install the BlackBerry Native SDK 2.0 or BlackBerry 10 Beta<span
  1962. style='mso-tab-count:1'>   </span><o:p></o:p></span></p>
  1963. <ol style='margin-top:0in' start=2 type=1>
  1964. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1965. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  1966. the QNX Momentics IDE (Eclipse CDT based) and click <br>
  1967. <b style='mso-bidi-font-weight:normal'>File &gt; Import &gt; Import
  1968. Existing Projects</b>.<span style='mso-tab-count:2'>                   </span><o:p></o:p></span></li>
  1969. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1970. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Import
  1971. all the gameplay projects by selecting the repository project folder.<span
  1972. style='mso-tab-count:2'>             </span><o:p></o:p></span></li>
  1973. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1974. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Set
  1975. the active configuration to one of the Device-XXX or Simulator-XXX
  1976. profiles.<o:p></o:p></span></li>
  1977. <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo2'><span
  1978. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  1979. and run any of the game samples.<o:p></o:p></span></li>
  1980. </ol>
  1981. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  1982. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  1983. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  1984. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  1985. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Apple Xcode
  1986. 4.3.2 (iPad tablets and iPhone devices)</span></b><a name=d4e478a1310></a><span
  1987. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  1988. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  1989. mso-list:l7 level1 lfo3'><![if !supportLists]><span style='mso-bidi-font-size:
  1990. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  1991. Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><u><span
  1992. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";color:blue'><a
  1993. href="https://developer.apple.com/xcode/">Download</a> </span></u><span
  1994. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  1995. install Apple Xcode 4.<o:p></o:p></span></p>
  1996. <ol style='margin-top:0in' start=2 type=1>
  1997. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  1998. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  1999. the <b style='mso-bidi-font-weight:normal'>gameplay.xc</b> workspace.<o:p></o:p></span></li>
  2000. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  2001. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
  2002. the active configuration to <b style='mso-bidi-font-weight:normal'>iOS
  2003. Device</b>, <b style='mso-bidi-font-weight:normal'>iPhone Simulator,</b>
  2004. or <b style='mso-bidi-font-weight:normal'>iPad Simulator</b>.<o:p></o:p></span></li>
  2005. <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo3'><span
  2006. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  2007. and run any of the game samples.<o:p></o:p></span></li>
  2008. </ol>
  2009. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  2010. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2011. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  2012. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android NDK 7
  2013. (Android tablets and devices)</span></b><a name=d4e517a1310></a><span
  2014. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2015. <p class=link style='margin-left:.5in;text-align:justify;text-indent:-.25in;
  2016. mso-list:l5 level1 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2017. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2018. Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><u><span
  2019. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";color:blue'><a
  2020. href="http://developer.android.com/sdk/ndk/index.html">Download</a> </span></u><span
  2021. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  2022. install Android NDK 7, Android SDK, Apache Ant, and GNU Make for Cygwin. <a
  2023. name=d4e533a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2024. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2025. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2026. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2027. Ignore'>a.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2028. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
  2029. the </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2030. color:blue'><a href="http://developer.android.com/sdk/index.html">Android SDK</a></span></u><span
  2031. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  2032. <ol style='margin-top:0in' start=1 type=1>
  2033. <ol style='margin-top:0in' start=2 type=a>
  2034. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2035. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
  2036. sure &lt;android-sdk-path&gt;/tools and &lt;android-sdk-path&gt;/platform-tools
  2037. are added to PATH. <o:p></o:p></span></li>
  2038. </ol>
  2039. </ol>
  2040. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2041. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2042. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2043. Ignore'>c.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2044. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
  2045. the </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2046. color:blue'><a href="http://developer.android.com/sdk/ndk/index.html">Android
  2047. NDK</a> </span></u><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2048. "Times New Roman"'>and </span><u><span style='font-size:12.0pt;mso-bidi-font-family:
  2049. "Times New Roman";color:blue'><a
  2050. href="http://developer.android.com/sdk/ndk/overview.html">follow these
  2051. instructions</a></span></u><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2052. "Times New Roman"'>. <o:p></o:p></span></p>
  2053. <ol style='margin-top:0in' start=1 type=1>
  2054. <ol style='margin-top:0in' start=4 type=a>
  2055. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2056. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
  2057. sure &lt;android-ndk-path&gt; is added to PATH. <o:p></o:p></span></li>
  2058. </ol>
  2059. </ol>
  2060. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2061. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2062. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2063. Ignore'>e.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2064. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
  2065. </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2066. color:blue'><a href="http://ant.apache.org/manual/install.html">Apache Ant</a></span></u><span
  2067. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  2068. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2069. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2070. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2071. Ignore'>f.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  2072. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  2073. mso-bidi-font-family:"Times New Roman"'>Make sure &lt;ant-path&gt;/bin is added
  2074. the PATH.<o:p></o:p></span></p>
  2075. <p class=link style='margin-left:1.0in;text-align:justify;text-indent:-.25in;
  2076. mso-list:l5 level2 lfo4'><![if !supportLists]><span style='mso-bidi-font-size:
  2077. 12.0pt;mso-fareast-font-family:TradeGothicNextLTPro-Lt'><span style='mso-list:
  2078. Ignore'>g.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
  2079. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
  2080. </span><u><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2081. color:blue'><a href="http://cygwin.com/install.html">Cygwin</a> </span></u><span
  2082. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>and
  2083. select and add the package <b style='mso-bidi-font-weight:normal'>make: The GNU
  2084. version of the 'make' utility</b> during installation. <o:p></o:p></span></p>
  2085. <ol style='margin-top:0in' start=1 type=1>
  2086. <ol style='margin-top:0in' start=8 type=a>
  2087. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2088. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Rename
  2089. <b style='mso-bidi-font-weight:normal'>awk.exe</b> to something else
  2090. (awk_.exe for example) in &lt;android-ndk-path&gt;/prebuilt/windows/bin.
  2091. This is to prevent the Android build system from being confused by the
  2092. cygwin's awk.<span style='mso-tab-count:1'> </span><o:p></o:p></span></li>
  2093. </ol>
  2094. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2095. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  2096. the gameplay library using following steps: <a name=d4e593a1310></a><span
  2097. style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
  2098. <ol style='margin-top:0in' start=1 type=a>
  2099. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2100. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  2101. the Cygwin terminal. <o:p></o:p></span></li>
  2102. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2103. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
  2104. to the <b style='mso-bidi-font-weight:normal'>&lt;gameplay-root&gt;/gameplay/android</b>
  2105. folder. <o:p></o:p></span></li>
  2106. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2107. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2108. the following command to generate the needed files to build the project:<br>
  2109. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2110. 12.0pt;font-family:"Courier New"'>&gt; android.bat update project -t 1 -p
  2111. . -s</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2112. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2113. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2114. the following command to build the gameplay library:<o:p></o:p></span></li>
  2115. </ol>
  2116. </ol>
  2117. <p class=MsoNormal style='margin-left:1.0in'><b style='mso-bidi-font-weight:
  2118. normal'><span style='font-size:12.0pt;font-family:"Courier New"'>&gt; ndk-build</span></b><span
  2119. style='font-size:12.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
  2120. <p class=MsoNormal style='text-indent:1.0in'><span style='font-size:12.0pt;
  2121. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2122. <ol style='margin-top:0in' start=3 type=1>
  2123. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2124. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
  2125. a sample game(s) with following steps: <a name=d4e619a1310></a><span
  2126. style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
  2127. <ol style='margin-top:0in' start=1 type=a>
  2128. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2129. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
  2130. the Cygwin terminal. <o:p></o:p></span></li>
  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"'>Change
  2133. to the:<o:p></o:p></span></li>
  2134. </ol>
  2135. </ol>
  2136. <p class=MsoNormal style='margin-left:1.0in;text-align:justify'><b
  2137. style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:12.0pt;
  2138. mso-bidi-font-family:"Times New Roman"'>&lt;gameplay-root/gameplay-samples/sampleXX-XXXXX&gt;/android</span></b><span
  2139. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> folder.<o:p></o:p></span></p>
  2140. <ol style='margin-top:0in' start=3 type=1>
  2141. <ol style='margin-top:0in' start=3 type=a>
  2142. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2143. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2144. the following command to generate the needed files to build the project:<br>
  2145. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2146. 12.0pt;font-family:"Courier New"'>&gt; android.bat update project -t 1 -p
  2147. . -s</span></b><span style='font-size:12.0pt;font-family:"Courier New"'> </span><span
  2148. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2149. <li class=MsoNormal style='text-align:justify;mso-list:l5 level2 lfo4'><span
  2150. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2151. the following command to build the gameplay sample:<br>
  2152. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:
  2153. 12.0pt;font-family:"Courier New"'>&gt; ndk-build </span></b><span
  2154. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2155. </ol>
  2156. </ol>
  2157. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2158. <h4 style='margin-left:.5in'>Android NDK permissions errors:</h4>
  2159. <p class=MsoNormal style='margin-left:.5in'><span style='font-size:12.0pt;
  2160. mso-bidi-font-family:"Times New Roman"'>If you see an error like </span><span
  2161. style='font-size:12.0pt;font-family:"Courier New"'>&quot;./obj/local/armeabi/libpng.a:
  2162. No such file: Permission denied&quot;,</span><span style='font-size:12.0pt;
  2163. mso-bidi-font-family:"Times New Roman"'> make sure that the </span><span
  2164. style='font-size:12.0pt;font-family:"Courier New"'>&quot;*.a&quot; </span><span
  2165. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>files have read
  2166. permission by running:<o:p></o:p></span></p>
  2167. <p class=MsoNormal style='margin-left:.5in'><b style='mso-bidi-font-weight:
  2168. normal'><span style='font-size:12.0pt;font-family:"Courier New"'>&gt; chmod +r
  2169. obj/local/armeabi/*.a</span></b><b style='mso-bidi-font-weight:normal'><span
  2170. style='font-size:12.0pt;mso-bidi-font-family:"Courier New"'><o:p></o:p></span></b></p>
  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. <ol style='margin-top:0in' start=4 type=1>
  2173. <li class=MsoNormal style='text-align:justify;mso-list:l5 level1 lfo4'><span
  2174. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Connect
  2175. the device and run the following command in the Cygwin terminal to deploy
  2176. the game:<br>
  2177. </span><b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  2178. font-family:"Courier New"'>&gt; ant debug install</span></b><span
  2179. style='font-size:12.0pt;font-family:"Courier New"'> </span><span
  2180. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2181. </ol>
  2182. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2183. <h3>Mobile platform considerations</h3>
  2184. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ensure
  2185. that you test early on the physical devices. Depending on the type of game you
  2186. want to write and on your design ideas, you</span><span style='font-size:12.0pt;
  2187. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2188. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ll want to get
  2189. some idea of what type of performance you</span><span style='font-size:12.0pt;
  2190. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2191. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ll get with the
  2192. game plan and prototypes you are working towards. Be careful and do not to rely
  2193. on desktop and mobile simulators as an indicator of performance or mobile
  2194. device capabilities.<o:p></o:p></span></p>
  2195. <h3>Game consoles and Linux distributions</h3>
  2196. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2197. gameplay framework can be extended to target game consoles and custom Linux distributions.
  2198. Currently there is no support for these systems, however<o:p></o:p></span></p>
  2199. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Linux
  2200. support will be coming soon.<o:p></o:p></span></p>
  2201. <h3>Creating new projects</h3>
  2202. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  2203. create a new cross-platform game project, run the gameplay-newproject.bat/.sh
  2204. script. The following is an example of running the gameplay-newproject.bat
  2205. script:<o:p></o:p></span></p>
  2206. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2207. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>1. Enter
  2208. a name for the new project.<o:p></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'><span
  2211. style='mso-spacerun:yes'>   </span>This name will be given to the project<o:p></o:p></span></p>
  2212. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2213. style='mso-spacerun:yes'>   </span>executable and a folder with this name<o:p></o:p></span></p>
  2214. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2215. style='mso-spacerun:yes'>   </span>will be created to store all project files.<o:p></o:p></span></p>
  2216. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2217. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Project
  2218. name: test<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'><o:p>&nbsp;</o:p></span></p>
  2221. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>2. Enter
  2222. a game title.<o:p></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'><span
  2225. style='mso-spacerun:yes'>   </span>On some platforms, this title is used to<o:p></o:p></span></p>
  2226. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2227. style='mso-spacerun:yes'>   </span>identify the game during installation and<o:p></o:p></span></p>
  2228. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2229. style='mso-spacerun:yes'>   </span>on shortcuts/icons.<o:p></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'>Title:
  2232. Test<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'><o:p>&nbsp;</o:p></span></p>
  2235. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>3. Enter
  2236. a short game description.<o:p></o:p></span></p>
  2237. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2238. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Description:
  2239. Test Game<o:p></o:p></span></p>
  2240. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</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'>4. Enter
  2243. a unique identifier for your project.<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'><span
  2246. style='mso-spacerun:yes'>   </span>This should be a human readable package
  2247. name,<o:p></o:p></span></p>
  2248. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2249. style='mso-spacerun:yes'>   </span>containing at least two words separated by a<o:p></o:p></span></p>
  2250. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2251. style='mso-spacerun:yes'>   </span>period (eg. com.surname.gamename).<o:p></o:p></span></p>
  2252. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2253. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Unique
  2254. ID: org.gameplay3d.test<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'><o:p>&nbsp;</o:p></span></p>
  2257. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>5. Enter
  2258. author name.<o:p></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'><span
  2261. style='mso-spacerun:yes'>   </span>On BlackBerry targets, this is used for<o:p></o:p></span></p>
  2262. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2263. style='mso-spacerun:yes'>   </span>signing and must match the developer name<o:p></o:p></span></p>
  2264. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2265. style='mso-spacerun:yes'>   </span>of your development certificate.<o:p></o:p></span></p>
  2266. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2267. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Author:
  2268. My Company<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'><o:p>&nbsp;</o:p></span></p>
  2271. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>6. Enter
  2272. your game's main class name.<o:p></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'><span
  2275. style='mso-spacerun:yes'>   </span>Your initial game header and source file<o:p></o:p></span></p>
  2276. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2277. style='mso-spacerun:yes'>   </span>will be given this name and a class with<o:p></o:p></span></p>
  2278. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2279. style='mso-spacerun:yes'>   </span>this name will be created in these files.<o:p></o:p></span></p>
  2280. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2281. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Class
  2282. name: TestGame<o:p></o:p></span></p>
  2283. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2284. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2285. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>7. Enter
  2286. the project path.<o:p></o:p></span></p>
  2287. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2288. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2289. style='mso-spacerun:yes'>   </span>This can be a relative path, absolute path,<o:p></o:p></span></p>
  2290. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2291. style='mso-spacerun:yes'>   </span>or empty for the current folder. Note that<o:p></o:p></span></p>
  2292. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2293. style='mso-spacerun:yes'>   </span>a project folder named test will also<o:p></o:p></span></p>
  2294. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2295. style='mso-spacerun:yes'>   </span>be created inside this folder.<o:p></o:p></span></p>
  2296. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2297. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Path:
  2298. gameplay-samples<o:p></o:p></span></p>
  2299. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  2300. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2301. style='mso-spacerun:yes'>    </span>1 file copied.<o:p></o:p></span></p>
  2302. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  2303. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  2304. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2305. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2306. simplest way to run the project on Windows is to add the Visual Studio project
  2307. to the existing gameplay.sln solution, set the &quot;gameplay&quot; project as
  2308. a dependency (right-click on the new project, click &quot;Project Dependencies…&quot;,
  2309. and select the &quot;gameplay&quot; project), and then 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><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Similarly,
  2312. the easiest way to run the project on BlackBerry is import the new project into
  2313. a QNX Momentics IDE workspace that already contains the gameplay project, set
  2314. the &quot;gameplay&quot; project as a dependency (right-click the new project,
  2315. click &quot;Properties&quot;, go to &quot;Project References&quot;, and select
  2316. the &quot;gameplay&quot; project), and then build and run. (Note: make sure
  2317. that both projects are set to the same Build Configuration.) <o:p></o:p></span></p>
  2318. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2319. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  2320. run the project on Mac, simply open the Xcode project and build and run.<o:p></o:p></span></p>
  2321. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2322. <p class=MsoNormal style='text-align:justify'><span style='font-size:12.0pt;
  2323. mso-bidi-font-family:"Times New Roman"'>To run the project on Android from
  2324. Windows, use the </span><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2325. "Times New Roman"'>steps described above for running the samples.</span><span
  2326. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2327. <h2><a name="_Toc330902770">Assets and authoring</a></h2>
  2328. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  2329. assets are extremely important for the quality of a good game. Not only do the
  2330. game assets need to be fitted for the game design, but they also need to load
  2331. as quickly as possible and at the highest quality within the platform hardware
  2332. limitations.<o:p></o:p></span></p>
  2333. <h3>Binary game assets</h3>
  2334. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  2335. very practical way to ensure that you</span><span style='font-size:12.0pt;
  2336. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2337. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>re being
  2338. efficient is to always bundle and load all your game assets as binary formats.
  2339. Common assets include images, fonts, audio, and 3-D scenes. Most game engines
  2340. will always include some sort of authoring tool to allow developers to encode
  2341. and process their content to be game-ready. The gameplay framework also
  2342. includes an executable tool for this called the gameplay-encoder.<o:p></o:p></span></p>
  2343. <h3>Using fonts and 3-D scenes</h3>
  2344. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  2345. fonts and 3-D scenes, you will want to support industry-standard file formats,
  2346. such as <u><span style='color:blue'><a
  2347. href="http://en.wikipedia.org/wiki/TrueType">TrueType</a> </span></u>for fonts
  2348. and popular modern 3-D scene formats such as <u><span style='color:blue'><a
  2349. href="https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema">COLLADA</a>
  2350. </span></u>and the <u><span style='color:blue'><a
  2351. href="http://usa.autodesk.com/adsk/servlet/pc/index?id=6837478&amp;amp;siteID=123112">FBX</a>
  2352. </span></u>formats. <o:p></o:p></span></p>
  2353. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2354. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Although
  2355. these formats are popular and have the widest support in tooling options, they
  2356. are not considered efficient runtime formats. The gameplay library requires
  2357. that you convert these formats to its documented <u><span style='color:blue'><a
  2358. href="https://github.com/blackberry/GamePlay/blob/master/gameplay-encoder/gameplay-bundle.txt">gameplay
  2359. bundle format (.gpb)</a> </span></u>using the gameplay-encoder executable.<o:p></o:p></span></p>
  2360. <h3>Pre-built gameplay-encoder tool</h3>
  2361. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2362. gameplay-encoder executable tool comes pre-built for Windows 7 and Mac OS X and
  2363. can be found in the </span><b style='mso-bidi-font-weight:normal'><span
  2364. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>&lt;gameplay-root&gt;/bin</span></b><span
  2365. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
  2366. folders. The general usage is:<o:p></o:p></span></p>
  2367. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  2368. "Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2369. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt;gameplay-encoder
  2370. &lt;options&gt; files<o:p></o:p></span></p>
  2371. <h3>Building gameplay-encoder</h3>
  2372. <p class=MsoNormal>Even though the gameplay-encoder tool comes pre-built, you
  2373. make want to customize it and built it again yourself. To build the
  2374. gameplay-encoder project, open the gameplay-encoder project in Visual Studio or
  2375. XCode and build the executable. </p>
  2376. <h3>Building support for the FBX format</h3>
  2377. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Although
  2378. the FBX format is supported by the gameplay-encoder tools, FBX is not allowed
  2379. to be re-distributed as part of our framework. However, it is free for you to
  2380. use. Simply download the <u><span style='color:blue'><a
  2381. href="http://usa.autodesk.com/adsk/servlet/pc/index?id=6837478&amp;amp;siteID=123112">FBX
  2382. SDK</a> </span></u>and then re-build the code in the gameplay-encoder using the
  2383. USE_FBX preprocessor directive and ensure that you include the header and
  2384. library paths in the project to the FBX SDK paths.<o:p></o:p></span></p>
  2385. <h3>Content pipeline</h3>
  2386. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2387. content pipeline for fonts and scenes works like this:<a name=d5e88a1310></a><o:p></o:p></span></p>
  2388. <ol style='margin-top:0in' start=1 type=1>
  2389. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2390. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Take
  2391. any TrueType fonts or COLLADA/FBX scene files.<span style='mso-tab-count:
  2392. 2'>            </span><o:p></o:p></span></li>
  2393. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2394. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  2395. the gameplay-encoder executable passing in the font or scene file path and
  2396. optional parameters to produce a gameplay binary version for the file (.gpb).<span
  2397. style='mso-tab-count:2'>                   </span><o:p></o:p></span></li>
  2398. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2399. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Bundle
  2400. your game and include the gameplay binary file as a binary game asset.<o:p></o:p></span></li>
  2401. <li class=MsoNormal style='text-align:justify;mso-list:l1 level1 lfo5'><span
  2402. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Load
  2403. any binary game assets using the </span><span style='mso-bidi-font-size:
  2404. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  2405. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
  2406. class.</span><span style='mso-tab-count:3'>                       </span><span
  2407. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
  2408. </ol>
  2409. <h3>Using binary bundles</h3>
  2410. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2411. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2412. "Times New Roman"'>gameplay::Bundle</span><span style='font-size:12.0pt;
  2413. mso-bidi-font-family:"Times New Roman"'> class from your C++ game source code
  2414. to load your encoded binary files as bundles. The class offers methods to load
  2415. both fonts and scenes. Scenes are loaded as a hierarchical structure of nodes,
  2416. with various entities attached to them. These entities include things like mesh
  2417. geometry or groups of meshes, and cameras and lights. The </span><span
  2418. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  2419. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class also has
  2420. methods to filter only the parts of a scene that you want to load.<o:p></o:p></span></p>
  2421. <h3>Release mode assets</h3>
  2422. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>When
  2423. releasing your game title, all of the images should be optimized and converted
  2424. to the compressed texture format that is supported by OpenGL (ES). Audio should
  2425. be encoded to save space on storage. <a name=d6e3a1310></a><o:p></o:p></span></p>
  2426. <h2><a name="_Toc330902771">Game</a></h2>
  2427. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2428. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2429. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2430. mso-bidi-font-family:"Times New Roman"'> class is the base class for all your
  2431. games created with the gameplay framework. You are required to extend this
  2432. class using C++ and to override the core game and lifecycle event methods
  2433. initialize, finalize, update, and render. This is where you</span><span
  2434. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2435. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2436. "Times New Roman"'>ll write your code to load the game assets and apply game
  2437. logic and rendering code. Under the hood, the game class will receive events
  2438. and act as an abstraction between the running game and the underlying platform
  2439. layer that is running the game loop and reacting to operating systems. <o:p></o:p></span></p>
  2440. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2441. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  2442. are four methods you must implement to get started in writing your own game: <o:p></o:p></span></p>
  2443. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2444. <pre style='background:white'><span style='font-family:Consolas;color:blue'>#include</span><span
  2445. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2446. Consolas;color:#A31515'>&quot;gameplay.h&quot;</span><span style='font-family:
  2447. Consolas;color:black'><o:p></o:p></span></pre>
  2448. <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;
  2449. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2450. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  2451. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2452. <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;
  2453. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2454. style='font-size:10.0pt;font-family:Consolas;color:blue'>using</span><span
  2455. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  2456. style='font-size:10.0pt;font-family:Consolas;color:blue'>namespace</span><span
  2457. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;gameplay;<o:p></o:p></span></p>
  2458. <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;
  2459. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2460. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  2461. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  2462. <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;
  2463. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2464. style='font-size:10.0pt;font-family:Consolas;color:blue'>class</span><span
  2465. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;MyGame&nbsp;:&nbsp;</span><span
  2466. style='font-size:10.0pt;font-family:Consolas;color:blue'>public</span><span
  2467. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Game<o:p></o:p></span></p>
  2468. <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;
  2469. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2470. style='font-size:10.0pt;font-family:Consolas;color:black'>{<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;initialize();<o:p></o:p></span></p>
  2476. <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;
  2477. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2478. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2479. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2480. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;finalize();<span
  2481. style='mso-tab-count:1'>      </span><o:p></o:p></span></p>
  2482. <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;
  2483. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2484. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2485. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2486. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;update(</span><span
  2487. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  2488. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime);<o:p></o:p></span></p>
  2489. <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;
  2490. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2491. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2492. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  2493. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;render(</span><span
  2494. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  2495. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime);<o:p></o:p></span></p>
  2496. <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;
  2497. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2498. style='font-size:10.0pt;font-family:Consolas;color:black'>};<o:p></o:p></span></p>
  2499. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2500. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2501. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2502. "Times New Roman"'>Game::initialize()</span><span style='font-size:12.0pt;
  2503. mso-bidi-font-family:"Times New Roman"'> and </span><span style='font-size:
  2504. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::finalize()</span><span
  2505. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> methods are
  2506. called when the game starts up and shuts down, respectively. They are the
  2507. methods to which you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2508. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2509. mso-bidi-font-family:"Times New Roman"'>ll add code to load your game assets
  2510. and cleanup when the game has ended. The </span><span style='font-size:12.0pt;
  2511. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  2512. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2513. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::render()</span><span
  2514. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> methods are
  2515. called once per frame from the game loop implemented in the </span><span
  2516. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Platform</span><span
  2517. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> for each
  2518. operating system. This allows you to separate the code between handling updates
  2519. to your game</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2520. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2521. mso-bidi-font-family:"Times New Roman"'>s state and rendering your game</span><span
  2522. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2523. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2524. "Times New Roman"'>s visuals. You can use a variety of built-in classes to help
  2525. with the game rendering.<o:p></o:p></span></p>
  2526. <h3>Accessing the game instance</h3>
  2527. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2528. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2529. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2530. mso-bidi-font-family:"Times New Roman"'> class can be accessed from anywhere in
  2531. your game code. It implements a singleton design pattern. Call the static
  2532. method </span><span style='font-size:12.0pt;font-family:"Courier New";
  2533. mso-bidi-font-family:"Times New Roman"'>Game::getInstance()</span><span
  2534. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to gain access
  2535. to the instance of your game from any code. <o:p></o:p></span></p>
  2536. <h3>Graphics and audio devices</h3>
  2537. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>After
  2538. your game has started, the underlying graphics and audio devices will
  2539. automatically initialize. This happens prior to the </span><span
  2540. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2541. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method being
  2542. called and readies any classes that use OpenGL (ES) 2.0 or Open AL 1.1. The
  2543. graphics devices of your </span><span style='font-size:12.0pt;font-family:"Courier New";
  2544. mso-bidi-font-family:"Times New Roman"'>Game</span><span style='font-size:12.0pt;
  2545. mso-bidi-font-family:"Times New Roman"'> will be set up with a default 32-bit
  2546. color frame buffer, a 24-bit depth buffer, and an 8-bit stencil buffer ready
  2547. for your use. These are the active graphics hardware buffers, which are
  2548. rendered into from your rendering code. <o:p></o:p></span></p>
  2549. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2550. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  2551. more advanced usage, you can apply alternative frame buffers using the </span><span
  2552. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::FrameBuffer</span><span
  2553. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.
  2554. Immediately after the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2555. mso-bidi-font-family:"Times New Roman"'>Game::render()</span><span
  2556. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  2557. frame buffer is swapped/presented to the physical display for the user to see.
  2558. You can invoke the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2559. mso-bidi-font-family:"Times New Roman"'>Game::clear()</span><span
  2560. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method to
  2561. clear the buffers through any of the methods. You can also call </span><span
  2562. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::renderOnce()</span><span
  2563. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> from code,
  2564. such as from the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2565. mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2566. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, to
  2567. callback onto a method that will be called only once and then swapped/presented
  2568. to the display. This is useful for presenting ad-hoc updates to the screen
  2569. during initialization for rendering, such as loading screens.<o:p></o:p></span></p>
  2570. <h3>Game sub-system controllers</h3>
  2571. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2572. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2573. "Times New Roman"'>gameplay::Game</span><span style='font-size:12.0pt;
  2574. mso-bidi-font-family:"Times New Roman"'> class also manages game sub-system
  2575. controllers, such as audio, animation and physics controllers, and provides
  2576. access to them directly using getter methods. These classes act as controlling
  2577. interfaces for managing and playing audio and animations that are active in the
  2578. game, as well as updates to dynamics in the physics systems. These controllers
  2579. are hosted by the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2580. mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2581. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and
  2582. react on lifecycle events being handled in the game.<o:p></o:p></span></p>
  2583. <h3>Game time and state</h3>
  2584. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  2585. the instance of a </span><span style='font-size:12.0pt;font-family:"Courier New";
  2586. mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2587. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class has
  2588. started, the game starts a running time. You can call the </span><span
  2589. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::getGameTime()</span><span
  2590. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to determine
  2591. how long a game has been running. You can also call </span><span
  2592. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::getAbsoluteTime()</span><span
  2593. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to determine
  2594. the absolute time that has elapsed since the first </span><span
  2595. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::run()</span><span
  2596. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> call. This
  2597. includes any paused time too. You can call the </span><span style='font-size:
  2598. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::pause()</span><span
  2599. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method and the
  2600. game will be put into the </span><span style='font-size:12.0pt;font-family:
  2601. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::PAUSED</span><span
  2602. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> state. If the
  2603. user on the platform puts the game into the background, the game time is also
  2604. paused. If the user puts the game back into the foreground, the game will
  2605. invoke </span><span style='font-size:12.0pt;font-family:"Courier New";
  2606. mso-bidi-font-family:"Times New Roman"'>Game::play()</span><span
  2607. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and the game
  2608. will resume. At any time in the game you can determine the game state by
  2609. calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  2610. mso-bidi-font-family:"Times New Roman"'>Game::getState()</span><span
  2611. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The game
  2612. state can be UNINITIALIZED, RUNNING or PAUSED.<a name=d7e3a1310></a><o:p></o:p></span></p>
  2613. <h2><a name="_Toc330902772">Input and sensors</a></h2>
  2614. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>By
  2615. creating your game and extending </span><span style='font-size:12.0pt;
  2616. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2617. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, you</span><span
  2618. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2619. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2620. "Times New Roman"'>ll be able to add all the required handlers of input events.
  2621. Additionally, there are methods on </span><span style='font-size:12.0pt;
  2622. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Game</span><span
  2623. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to poll for
  2624. the current sensor data. This architecture insulates you, as a developer, from
  2625. the platform-specific details on handling keyboard, touch and mouse events, and
  2626. from polling the accelerometer state. The following illustrates overridden
  2627. methods to handle input events:<o:p></o:p></span></p>
  2628. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2629. <pre style='background:white'><span style='font-family:Consolas;color:blue'>#include</span><span
  2630. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2631. Consolas;color:#A31515'>&quot;gameplay.h&quot;</span><span style='font-family:
  2632. Consolas;color:black'><o:p></o:p></span></pre><pre style='background:white'><span
  2633. style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2634. style='background:white'><span style='font-family:Consolas;color:blue'>using</span><span
  2635. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  2636. Consolas;color:blue'>namespace</span><span style='font-family:Consolas;
  2637. color:black'>&nbsp;gameplay;<o:p></o:p></span></pre><pre style='background:
  2638. white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2639. style='background:white'><span style='font-family:Consolas;color:blue'>class</span><span
  2640. style='font-family:Consolas;color:black'>&nbsp;MyGame&nbsp;:&nbsp;</span><span
  2641. style='font-family:Consolas;color:blue'>public</span><span style='font-family:
  2642. Consolas;color:black'>&nbsp;Game<o:p></o:p></span></pre><pre style='background:
  2643. white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2644. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  2645. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2646. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2647. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2648. Consolas;color:black'>&nbsp;keyEvent(Keyboard::KeyEvent&nbsp;evt,&nbsp;</span><span
  2649. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2650. Consolas;color:black'>&nbsp;key);<o:p></o:p></span></pre><pre style='background:
  2651. white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2652. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2653. Consolas;color:black'>&nbsp;touchEvent(Touch::TouchEvent&nbsp;evt,&nbsp;</span><span
  2654. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2655. Consolas;color:black'>&nbsp;x,&nbsp;</span><span style='font-family:Consolas;
  2656. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;y,&nbsp;</span><span
  2657. style='font-family:Consolas;color:blue'>unsigned</span><span style='font-family:
  2658. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  2659. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;contactIndex);<o:p></o:p></span></pre><pre
  2660. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2661. style='font-family:Consolas;color:blue'>bool</span><span style='font-family:
  2662. Consolas;color:black'>&nbsp;mouseEvent(Mouse::MouseEvent&nbsp;evt,&nbsp;</span><span
  2663. style='font-family:Consolas;color:blue'>int</span><span style='font-family:
  2664. Consolas;color:black'>&nbsp;x,&nbsp;</span><span style='font-family:Consolas;
  2665. color:blue'>int</span><span style='font-family:Consolas;color:black'>&nbsp;y);<o:p></o:p></span></pre><pre
  2666. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2667. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  2668. Consolas;color:black'>&nbsp;getAccelerometerValues(</span><span
  2669. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  2670. Consolas;color:black'>*&nbsp;pitch,&nbsp;</span><span style='font-family:Consolas;
  2671. color:blue'>float</span><span style='font-family:Consolas;color:black'>*&nbsp;roll);&nbsp;<o:p></o:p></span></pre><pre
  2672. style='background:white'><span style='font-family:Consolas;color:black'>};<o:p></o:p></span></pre>
  2673. <h3>Handling input events</h3>
  2674. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2675. have the opportunity, on either desktop platforms or mobile devices, to handle
  2676. mouse events uniquely from the </span><span style='font-size:12.0pt;font-family:
  2677. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::touchEvent()</span><span
  2678. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method (this
  2679. includes support for a Bluetooth enabled mouse). However, this is not required,
  2680. and the default implementation of the </span><span style='font-size:12.0pt;
  2681. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::mouseEvent()</span><span
  2682. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method returns
  2683. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2684. "Times New Roman"'>false</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2685. "Times New Roman"'>, which means that the user can allow mouse events to be
  2686. treated automatically as touch events.<o:p></o:p></span></p>
  2687. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2688. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2689. can decide to disable multi-touch support for games when you do not want this
  2690. functionality. You can call </span><span style='font-size:12.0pt;font-family:
  2691. "Courier New";mso-bidi-font-family:"Times New Roman"'>Game::setMultiTouch()</span><span
  2692. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and pass in </span><span
  2693. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>false</span><span
  2694. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to ensure that
  2695. the platform treats and handles touch events as single touches.<o:p></o:p></span></p>
  2696. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2697. can also call </span><span style='font-size:12.0pt;font-family:"Courier New";
  2698. mso-bidi-font-family:"Times New Roman"'>Game::displayKeyboard()</span><span
  2699. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to show or
  2700. hide a virtual keyboard for platforms that support it. You</span><span
  2701. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2702. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2703. "Times New Roman"'>ll want to integrate it into points in the game and user
  2704. interfaces in the game where text input is required.<o:p></o:p></span></p>
  2705. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2706. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  2707. can call </span><span style='font-size:12.0pt;font-family:"Courier New";
  2708. mso-bidi-font-family:"Times New Roman"'>Game::getAccelerometerValues()</span><span
  2709. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and pass in
  2710. pointers to parameters that will be populated with the current sensor values
  2711. for the accelerometer.<a name=d8e3a1310></a><o:p></o:p></span></p>
  2712. <h2><a name="_Toc330902773">Sprites and fonts</a></h2>
  2713. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2714. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2715. "Times New Roman"'>gameplay::SpriteBatch</span><span style='font-size:12.0pt;
  2716. mso-bidi-font-family:"Times New Roman"'> and </span><span style='font-size:
  2717. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Font</span><span
  2718. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> classes to
  2719. integrate simple 2-D sprite and text rendering for both 2-D and 3-D games. <o:p></o:p></span></p>
  2720. <h3>Binary encoding fonts</h3>
  2721. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2722. first thing to do is to create or find a TrueType font that you want to use.
  2723. There are a number of sites on the web that offer .TTF files to purchase, or
  2724. tools to make them yourself.<o:p></o:p></span></p>
  2725. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2726. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Next,
  2727. you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  2728. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  2729. mso-bidi-font-family:"Times New Roman"'>ll want to binary encode your TrueType
  2730. font to a binary format via gameplay-encoder to produce a binary file. To do
  2731. this run the following command with your gameplay-encoder executable:<o:p></o:p></span></p>
  2732. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2733. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt; gameplay-encoder
  2734. -s 28 airstrip.ttf<o:p></o:p></span></p>
  2735. <h3>Drawing text and images</h3>
  2736. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2737. following code sample illustrates how to render and image and text together:<o:p></o:p></span></p>
  2738. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2739. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2740. style='font-family:Consolas;color:black'>&nbsp;MyGame::initialize()<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:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2743. 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
  2744. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2745. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch&nbsp;=&nbsp;SpriteBatch::create(</span><span
  2746. style='font-family:Consolas;color:#A31515'>&quot;res/image.png&quot;</span><span
  2747. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  2748. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font&nbsp;=&nbsp;Font::create(</span><span
  2749. style='font-family:Consolas;color:#A31515'>&quot;res/airstrip28.gpb&quot;</span><span
  2750. style='font-family:Consolas;color:black'>);<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'> <o:p></o:p></span></pre><pre
  2753. style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2754. style='font-family:Consolas;color:black'>&nbsp;MyGame::render(</span><span
  2755. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  2756. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  2757. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2758. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2759. style='font-family:Consolas;color:green'>//&nbsp;Clear&nbsp;the&nbsp;frame&nbsp;buffer</span><span
  2760. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2761. 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
  2762. style='background:white'><span 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;</span><span
  2764. 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
  2765. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2766. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch-&gt;begin();<o:p></o:p></span></pre><pre
  2767. 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
  2768. 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
  2769. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_batch-&gt;end();<o:p></o:p></span></pre><pre
  2770. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2771. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2772. 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
  2773. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2774. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;begin();<o:p></o:p></span></pre><pre
  2775. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2776. style='font-family:Consolas;color:blue'>char</span><span style='font-family:
  2777. Consolas;color:black'>&nbsp;text[1024];<o:p></o:p></span></pre><pre
  2778. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;sprintf(text,&nbsp;</span><span
  2779. style='font-family:Consolas;color:#A31515'>&quot;FPS:%d&quot;</span><span
  2780. style='font-family:Consolas;color:black'>,&nbsp;Game::getFrameRate());<o:p></o:p></span></pre><pre
  2781. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;drawText(</span><span
  2782. 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
  2783. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2784. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_font-&gt;end();<o:p></o:p></span></pre><pre
  2785. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre><pre
  2786. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  2787. style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  2788. style='font-family:Consolas;color:black'>&nbsp;MyGame::finalize()<o:p></o:p></span></pre><pre
  2789. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  2790. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  2791. 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
  2792. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  2793. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_DELETE(_batch);<o:p></o:p></span></pre><pre
  2794. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_DELETE(_font);<o:p></o:p></span></pre><pre
  2795. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  2796. <h3>Batch, batch, batch</h3>
  2797. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You</span><span
  2798. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  2799. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  2800. "Times New Roman"'>ll notice that the </span><span style='font-size:12.0pt;
  2801. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::SpritchBatch</span><span
  2802. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2803. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Font</span><span
  2804. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> code sequences
  2805. above both have a common flow to them. The developer performs a call to </span><span
  2806. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>begin()</span><span
  2807. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> followed by
  2808. drawing operations and finishing with a call to </span><span style='font-size:
  2809. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>end()</span><span
  2810. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is to
  2811. support batching or combining drawing operations into a single hardware
  2812. rendering call.<a name=d9e3a1310></a><o:p></o:p></span></p>
  2813. <h2><a name="_Toc330902774">Scene and nodes</a></h2>
  2814. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>At
  2815. the heart of any game is a visual scene. Using the </span><span
  2816. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2817. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class, you can
  2818. create and retain a rich 3-D scene for organizing visual, audio, animation and
  2819. physics components in your game.<o:p></o:p></span></p>
  2820. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2821. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  2822. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2823. "Times New Roman"'>gameplay::Scene</span><span style='font-size:12.0pt;
  2824. mso-bidi-font-family:"Times New Roman"'> class is based on a hierarchical data
  2825. structure that is often referred to as a scene graph. Using the </span><span
  2826. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2827. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  2828. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  2829. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> classes, you
  2830. can build up a game level by attaching various game components to the nodes in
  2831. the scene. The node will maintain the transformation for any attachments. As a
  2832. basic example, a scene might have two nodes. The first node could have a </span><span
  2833. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Camera</span><span
  2834. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attached to it
  2835. and the second node could have a </span><span style='font-size:12.0pt;
  2836. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  2837. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attached to
  2838. it. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  2839. mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  2840. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> will have the
  2841. camera set as the active camera. You could then transform either/both of the
  2842. nodes to change the player</span><span style='font-size:12.0pt;font-family:
  2843. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  2844. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s perspective
  2845. on what they will see in the game.<o:p></o:p></span></p>
  2846. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  2847. are a variety of components you can attach to the </span><span
  2848. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  2849. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class:<o:p></o:p></span></p>
  2850. <p class=MsoNormal><a name=d9e44a1310></a><span style='font-size:12.0pt;
  2851. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2852. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  2853. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  2854. <thead>
  2855. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  2856. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2857. padding:0in 5.4pt 0in 5.4pt'>
  2858. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2859. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2860. mso-bidi-font-weight:normal'>Component<o:p></o:p></span></p>
  2861. </td>
  2862. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2863. padding:0in 5.4pt 0in 5.4pt'>
  2864. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2865. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  2866. mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
  2867. </td>
  2868. </tr>
  2869. </thead>
  2870. <tr style='mso-yfti-irow:1'>
  2871. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2872. 0in 5.4pt 0in 5.4pt'>
  2873. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2874. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2875. "Times New Roman"'>gameplay::Model</span><span style='mso-bidi-font-size:
  2876. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2877. </td>
  2878. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2879. 0in 5.4pt 0in 5.4pt'>
  2880. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2881. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2882. to represent the mesh/geometry in the scene.<o:p></o:p></span></p>
  2883. </td>
  2884. </tr>
  2885. <tr style='mso-yfti-irow:2'>
  2886. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2887. padding:0in 5.4pt 0in 5.4pt'>
  2888. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2889. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2890. "Times New Roman"'>gameplay::Camera</span><span style='mso-bidi-font-size:
  2891. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2892. </td>
  2893. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2894. padding:0in 5.4pt 0in 5.4pt'>
  2895. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2896. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2897. to represent a view/perspective into the scene.<o:p></o:p></span></p>
  2898. </td>
  2899. </tr>
  2900. <tr style='mso-yfti-irow:3'>
  2901. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2902. 0in 5.4pt 0in 5.4pt'>
  2903. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2904. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2905. "Times New Roman"'>gameplay::Light</span><span style='mso-bidi-font-size:
  2906. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2907. </td>
  2908. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2909. 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;mso-bidi-font-family:"Times New Roman"'>Used
  2912. to hold lighting information that can affect how a </span><span
  2913. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2914. "Times New Roman"'>Model</span><span style='mso-bidi-font-size:12.0pt;
  2915. mso-bidi-font-family:"Times New Roman"'> is rendered.<o:p></o:p></span></p>
  2916. </td>
  2917. </tr>
  2918. <tr style='mso-yfti-irow:4'>
  2919. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2920. padding:0in 5.4pt 0in 5.4pt'>
  2921. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2922. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2923. "Times New Roman"'>gameplay::PhysicsCollisionObject</span><span
  2924. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2925. </td>
  2926. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2927. padding:0in 5.4pt 0in 5.4pt'>
  2928. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2929. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2930. to define the basic physics dynamics that will be simulated.<o:p></o:p></span></p>
  2931. </td>
  2932. </tr>
  2933. <tr style='mso-yfti-irow:5'>
  2934. <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
  2935. 0in 5.4pt 0in 5.4pt'>
  2936. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2937. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2938. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='mso-bidi-font-size:
  2939. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2940. </td>
  2941. <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
  2942. 0in 5.4pt 0in 5.4pt'>
  2943. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2944. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Used
  2945. to represent smoke, steam, fire and other atmospheric effects.<o:p></o:p></span></p>
  2946. </td>
  2947. </tr>
  2948. <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
  2949. <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
  2950. padding:0in 5.4pt 0in 5.4pt'>
  2951. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2952. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  2953. "Times New Roman"'>gameplay::AudioSource</span><span style='mso-bidi-font-size:
  2954. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2955. </td>
  2956. <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
  2957. padding:0in 5.4pt 0in 5.4pt'>
  2958. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  2959. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  2960. to represent a source where audio is being played from.<o:p></o:p></span></p>
  2961. </td>
  2962. </tr>
  2963. </table>
  2964. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  2965. text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
  2966. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2967. <p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
  2968. text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
  2969. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2970. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  2971. typical flow will have you loading/building a large scene representing all the
  2972. components needed in the game level. This is done once during </span><span
  2973. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::initialize()</span><span
  2974. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. For every
  2975. call to the </span><span style='font-size:12.0pt;font-family:"Courier New";
  2976. mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  2977. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  2978. code will update changes to the nodes and attached components based on events
  2979. such as user input . Then the application will traverse the scene and render
  2980. the parts in the scene that are visible from scene's active camera.<o:p></o:p></span></p>
  2981. <h3>Exporting a 3-D scene from Autodesk Maya/Max</h3>
  2982. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>If
  2983. you want to export 3-D scenes, use the native FBX Export (for FBX) or DAE_FBX
  2984. Export (for COLLADA). <o:p></o:p></span></p>
  2985. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2986. <p class=link><span style='mso-no-proof:yes'><!--[if gte vml 1]><v:shape id="Picture_x0020_1"
  2987. o:spid="_x0000_i1026" type="#_x0000_t75" style='width:455.25pt;height:311.25pt;
  2988. visibility:visible'>
  2989. <v:imagedata src="development-guide_files/image003.png" o:title=""/>
  2990. </v:shape><![endif]--><![if !vml]><img border=0 width=607 height=415
  2991. src="development-guide_files/image004.jpg" v:shapes="Picture_x0020_1"><![endif]></span><span
  2992. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  2993. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  2994. <h3>Exporting a 3-D scene from Blender</h3>
  2995. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Blender
  2996. supports exporting to the COLLADA and FBX file formats. <o:p></o:p></span></p>
  2997. <p class=MsoNormal><a name=d9e229a1310></a><span style='font-size:12.0pt;
  2998. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span></span><span
  2999. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  3000. style='mso-tab-count:1'>          </span></span><span style='font-size:12.0pt;
  3001. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3002. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3003. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3004. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3005. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3006. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3007. </span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
  3008. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File &gt;
  3009. Export &gt; Autodesk FBX (.fbx)</span></b><span style='mso-bidi-font-size:12.0pt;
  3010. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3011. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3012. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3013. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3014. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3015. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3016. </span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
  3017. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File
  3018. &gt; Export &gt; COLLADA (.dae)</span></b><span style='mso-bidi-font-size:12.0pt;
  3019. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'>       </span><o:p></o:p></span></p>
  3020. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  3021. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  3022. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  3023. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>If
  3024. you run into problems when using COLLADA files from Blender, try re-importing
  3025. the COLLADA file back into Blender or Maya software to see if there is a
  3026. problem with the exported model.<o:p></o:p></span></p>
  3027. <h3>Binary encoding a scene</h3>
  3028. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
  3029. gameplay-encoder with no arguments to see the usage information and supported
  3030. arguments.<o:p></o:p></span></p>
  3031. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3032. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>Usage:
  3033. gameplay-encoder [options] <i style='mso-bidi-font-style:normal'>&lt;filepath&gt;</i><o:p></o:p></span></p>
  3034. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3035. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3036. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Example</span></b><span
  3037. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3038. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3039. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Convert
  3040. the COLLADA file duck.dae into gameplay binary file duck.gpb.<o:p></o:p></span></p>
  3041. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3042. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>&gt; gameplay-encoder
  3043. duck.dae<o:p></o:p></span></p>
  3044. <h3>Encoding an FBX file</h3>
  3045. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3046. convert an FBX file to a gameplay binary file, you must install the FBX SDK and
  3047. set the preprocessor directive USE_FBX. See the instructions in the <u><span
  3048. style='color:blue'>gameplay-encoder README </span></u>on GitHub.<o:p></o:p></span></p>
  3049. <h3>Loading a scene</h3>
  3050. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Using
  3051. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3052. "Times New Roman"'>gameplay::Bundle</span><span style='font-size:12.0pt;
  3053. mso-bidi-font-family:"Times New Roman"'> class, you can load either an entire
  3054. scene or various parts of a scene into any existing scene. The </span><span
  3055. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  3056. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> parses the
  3057. binary file and de-serializes the objects from the file so that you can use
  3058. them in your game. <o:p></o:p></span></p>
  3059. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3060. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3061. is an example of loading a simple scene containing a model of a duck, a light,
  3062. and a camera from a gameplay binary file:<o:p></o:p></span></p>
  3063. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3064. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3065. style='font-family:Consolas;color:black'>&nbsp;MeshGame::initialize()<o:p></o:p></span></pre><pre
  3066. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3067. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3068. style='font-family:Consolas;color:green'>//&nbsp;Load&nbsp;the&nbsp;scene&nbsp;from&nbsp;our&nbsp;gameplay&nbsp;binary&nbsp;file</span><span
  3069. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3070. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Bundle*&nbsp;bundle&nbsp;=&nbsp;Bundle::create(</span><span
  3071. style='font-family:Consolas;color:#A31515'>&quot;res/duck.gpb&quot;</span><span
  3072. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3073. 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
  3074. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;SAFE_RELEASE(bundle);<o:p></o:p></span></pre><pre
  3075. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3076. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3077. 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
  3078. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3079. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_modelNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3080. style='font-family:Consolas;color:#A31515'>&quot;duck&quot;</span><span
  3081. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3082. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;_lightNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3083. style='font-family:Consolas;color:#A31515'>&quot;directionalLight1&quot;</span><span
  3084. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3085. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;_cameraNode&nbsp;=&nbsp;scene-&gt;findNode(</span><span
  3086. style='font-family:Consolas;color:#A31515'>&quot;camera1&quot;</span><span
  3087. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3088. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3089. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3090. style='font-family:Consolas;color:green'>//&nbsp;More&nbsp;initialization&nbsp;...</span><span
  3091. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3092. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3093. <h3>Updating a scene</h3>
  3094. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>After
  3095. handling input events or polling the sensors, it</span><span style='font-size:
  3096. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  3097. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s time to
  3098. update the scene. It is very important to understand the scene representing
  3099. your game level. We always want to update things that are impacted by the
  3100. changes to optimize performance. In order to optimize the performance of your
  3101. game, it is essential that you only update objects that need to be changed. In
  3102. this example, we</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3103. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3104. mso-bidi-font-family:"Times New Roman"'>ll apply a rotation when the user has
  3105. touched the screen or mouse button:<o:p></o:p></span></p>
  3106. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3107. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3108. style='font-family:Consolas;color:black'>&nbsp;MyGame::update(</span><span
  3109. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  3110. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  3111. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3112. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3113. style='font-family:Consolas;color:green'>//&nbsp;Rotate&nbsp;the&nbsp;model</span><span
  3114. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3115. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3116. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3117. color:black'>&nbsp;(!_touched)<o:p></o:p></span></pre>
  3118. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-family:
  3119. Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_modelNode-&gt;rotateY(elapsedTime
  3120. * MATH_DEG_TO_RAD(0.05f));</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
  3121. <pre style='background:white'><span style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3122. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3123. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3124. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Some
  3125. examples of typical things you will want to update in your scene may include:<o:p></o:p></span></p>
  3126. <p class=MsoNormal><a name=d9e350a1310></a><span style='font-size:12.0pt;
  3127. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3128. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3129. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3130. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3131. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3132. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3133. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3134. "Times New Roman"'>applying forces onto rigid bodies<span style='mso-tab-count:
  3135. 2'>          </span><o:p></o:p></span></p>
  3136. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3137. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3138. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3139. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3140. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3141. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3142. "Times New Roman"'>applying transformations<span style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  3143. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3144. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3145. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3146. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3147. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3148. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3149. "Times New Roman"'>starting or stopping animations<span style='mso-tab-count:
  3150. 2'>            </span><o:p></o:p></span></p>
  3151. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3152. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3153. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3154. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3155. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3156. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3157. "Times New Roman"'>showing or hiding components<o:p></o:p></span></p>
  3158. <h3>Rendering a scene</h3>
  3159. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3160. render a scene you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3161. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3162. mso-bidi-font-family:"Times New Roman"'>ll need to gather all the models in the
  3163. scene that are attached to nodes and then draw them. Calling the </span><span
  3164. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Scene::visit()</span><span
  3165. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method, the
  3166. scene's hierarchical data structure is traversed and for each node in the
  3167. scene, the specified method is invoked as a callback.<o:p></o:p></span></p>
  3168. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3169. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3170. style='font-family:Consolas;color:black'>&nbsp;MyGame::render(</span><span
  3171. style='font-family:Consolas;color:blue'>float</span><span style='font-family:
  3172. Consolas;color:black'>&nbsp;elapsedTime)<o:p></o:p></span></pre><pre
  3173. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3174. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3175. style='font-family:Consolas;color:green'>//&nbsp;Clear&nbsp;the&nbsp;buffers&nbsp;to&nbsp;black</span><span
  3176. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3177. 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
  3178. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3179. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3180. 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
  3181. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3182. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;_scene-&gt;visit(</span><span
  3183. style='font-family:Consolas;color:blue'>this</span><span style='font-family:
  3184. Consolas;color:black'>,&nbsp;&amp;MeshGame::drawScene);<o:p></o:p></span></pre><pre
  3185. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre><pre
  3186. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3187. style='background:white'><span style='font-family:Consolas;color:blue'>bool</span><span
  3188. style='font-family:Consolas;color:black'>&nbsp;MyGame::drawScene(Node*&nbsp;node,&nbsp;</span><span
  3189. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  3190. Consolas;color:black'>*&nbsp;cookie)<o:p></o:p></span></pre><pre
  3191. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3192. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3193. 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
  3194. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3195. 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
  3196. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3197. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3198. color:black'>&nbsp;(model)<o:p></o:p></span></pre><pre style='background:white'><span
  3199. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;draw();<o:p></o:p></span></pre><pre
  3200. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3201. style='font-family:Consolas;color:blue'>return</span><span style='font-family:
  3202. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  3203. color:blue'>true</span><span style='font-family:Consolas;color:black'>;<o:p></o:p></span></pre><pre
  3204. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3205. <h3>Culling non-visible models</h3>
  3206. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  3207. some scenes, you may have many models contributing to the game level. However,
  3208. with a moving camera, only some models will be visible at any particular time.
  3209. Running the code in the snippet above on much larger scenes would cause many
  3210. models to be drawn unnecessarily. To avoid this, you can query a </span><span
  3211. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3212. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and
  3213. retrieve a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3214. mso-bidi-font-family:"Times New Roman"'>gameplay::BoundingSphere</span><span
  3215. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using </span><span
  3216. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::getBoundingSphere()</span><span
  3217. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This bound
  3218. represents an approximation of the representative data contained within a node.
  3219. It is only intended for visibility testing or first-pass intersection testing.
  3220. If you have a moving camera with many objects in the scene, ensure that you add
  3221. code to test visibility from within your visitor callback. This will ensure the
  3222. node is within the camera</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3223. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3224. mso-bidi-font-family:"Times New Roman"'>s viewing range. To do this, make a
  3225. simple intersection test between the front of each node and the active camera
  3226. frustum (by calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  3227. mso-bidi-font-family:"Times New Roman"'>Camera::getFrustum()</span><span
  3228. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>) that
  3229. represents the outer planes of the camera</span><span style='font-size:12.0pt;
  3230. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
  3231. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s viewing area.
  3232. Here is a snippet of code to perform such an intersection test:<o:p></o:p></span></p>
  3233. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3234. <pre style='background:white'><a name=d12e3a1310></a><span style='font-family:
  3235. Consolas;color:blue'>bool</span><span style='font-family:Consolas;color:black'>&nbsp;MeshGame::drawScene(Node*&nbsp;node,&nbsp;</span><span
  3236. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  3237. Consolas;color:black'>*&nbsp;cookie)<o:p></o:p></span></pre><pre
  3238. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  3239. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3240. style='font-family:Consolas;color:green'>//&nbsp;Only&nbsp;draw&nbsp;visible&nbsp;nodes</span><span
  3241. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3242. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3243. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3244. color:black'>&nbsp;(node-&gt;getBoundingSphere()-&gt;intersect(_camera-&gt;getFrustum())<o:p></o:p></span></pre><pre
  3245. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  3246. 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
  3247. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3248. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  3249. color:black'>&nbsp;(model)<o:p></o:p></span></pre><pre style='background:white'><span
  3250. 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
  3251. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  3252. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3253. style='font-family:Consolas;color:blue'>return</span><span style='font-family:
  3254. Consolas;color:black'>&nbsp;</span><span style='font-family:Consolas;
  3255. color:blue'>true</span><span style='font-family:Consolas;color:black'>;<o:p></o:p></span></pre><pre
  3256. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3257. <h2><a name="_Toc330902775">Model and mesh</a></h2>
  3258. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3259. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3260. "Times New Roman"'>gameplay::Model</span><span style='font-size:12.0pt;
  3261. mso-bidi-font-family:"Times New Roman"'> class is the basic component used to
  3262. draw geometry in your scene. The model contains a few key elements: a </span><span
  3263. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Mesh</span><span
  3264. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an optional </span><span
  3265. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3266. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and one or
  3267. more </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3268. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3269. mso-bidi-font-family:"Times New Roman"'>. These contribute to the information
  3270. that is needed to perform the rendering of a model.<o:p></o:p></span></p>
  3271. <h3>Mesh geometry</h3>
  3272. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3273. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3274. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3275. mso-bidi-font-family:"Times New Roman"'> class consists of a </span><span
  3276. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::VertexFormat</span><span
  3277. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> attribute.
  3278. This attribute describes the layout for the vertex data as well as the actual
  3279. vertex data, which is used as input in the rendering of the geometry. In
  3280. addition, it holds one or more </span><span style='font-size:12.0pt;font-family:
  3281. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshParts</span><span
  3282. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. These parts
  3283. define the primitive shapes and indices into the vertex data that describe how
  3284. the vertices are connected.<o:p></o:p></span></p>
  3285. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3286. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Game
  3287. artists use 3-D modeling tools that are capable of organizing and splitting the
  3288. vertex data into parts/subsets based on the materials that are applied to them.
  3289. The </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3290. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3291. mso-bidi-font-family:"Times New Roman"'> class maintains one vertex buffer to
  3292. hold all the vertices, and for each </span><span style='font-size:12.0pt;
  3293. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3294. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an index
  3295. buffer is used to draw the primitive shapes.<o:p></o:p></span></p>
  3296. <h3>MeshSkin and Joints</h3>
  3297. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3298. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3299. "Times New Roman"'>gameplay::Mesh</span><span style='font-size:12.0pt;
  3300. mso-bidi-font-family:"Times New Roman"'> class supports an optional </span><span
  3301. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3302. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is used
  3303. when loading models that represent characters in the game that have a skeleton consisting
  3304. of </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3305. "Times New Roman"'>gameplay::Joint</span><span style='font-size:12.0pt;
  3306. mso-bidi-font-family:"Times New Roman"'> objects (bones). Vertex skinning is
  3307. the term used to describe the process of applying a weighting or relationship
  3308. with the Joints and their affected vertices. Using 3-D modeling tools, artists
  3309. can add this additional weighting information onto the vertices in order to
  3310. control how much a particular vertex should be impacted. This is based on the
  3311. transformation of joints that can affect them. You will learn later how to
  3312. apply special, skinned Materials that support this weighting. The gameplay 3-D
  3313. framework supports a maximum of four blend weights per vertex. The </span><span
  3314. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshSkin</span><span
  3315. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class holds
  3316. and maintains a hierarchy of </span><span style='font-size:12.0pt;font-family:
  3317. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay:Joint</span><span
  3318. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> objects that
  3319. can be transformed. A typical operation is to animate the transformation
  3320. (usually only rotations) of the joints. The data within this class can be bound
  3321. onto skinned Materials to ensure proper impact of weights onto their influenced
  3322. vertices.<a name=d13e3a1310></a><o:p></o:p></span></p>
  3323. <h2><a name="_Toc330902776">Lights</a></h2>
  3324. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3325. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3326. "Times New Roman"'>gameplay::Light</span><span style='font-size:12.0pt;
  3327. mso-bidi-font-family:"Times New Roman"'> class can be attached to any </span><span
  3328. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3329. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in order to
  3330. add lighting information into a </span><span style='font-size:12.0pt;
  3331. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  3332. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This lighting
  3333. information must be bound to the </span><span style='font-size:12.0pt;
  3334. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3335. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that is being
  3336. applied onto the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3337. mso-bidi-font-family:"Times New Roman"'>gameplay::MeshParts</span><span
  3338. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. There are
  3339. three types of lights in the gameplay 3-D framework - directional, point, and
  3340. spot lights.<o:p></o:p></span></p>
  3341. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3342. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  3343. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3344. "Times New Roman"'>gameplay::Light</span><span style='font-size:12.0pt;
  3345. mso-bidi-font-family:"Times New Roman"'> components can be loaded into a </span><span
  3346. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Scene</span><span
  3347. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using the </span><span
  3348. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Bundle</span><span
  3349. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.
  3350. However, it is your responsibility to bind the relevant lighting information
  3351. stored in the light into the </span><span style='font-size:12.0pt;font-family:
  3352. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3353. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.<o:p></o:p></span></p>
  3354. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3355. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3356. can also programmatically create a light using the factory methods on the </span><span
  3357. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Light</span><span
  3358. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class. Here is
  3359. an example of how to create and add a directional light to your scene and bind
  3360. the lighting information onto a model's material(s):<o:p></o:p></span></p>
  3361. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3362. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3363. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  3364. style='font-family:Consolas;color:black'>&nbsp;MyGame::initialize()<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;...<o:p></o:p></span></pre><pre
  3367. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3368. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3369. 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
  3370. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3371. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Node*&nbsp;lightNode&nbsp;=&nbsp;Node::create(</span><span
  3372. style='font-family:Consolas;color:#A31515'>&quot;directionalLight1&quot;</span><span
  3373. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3374. 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
  3375. 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
  3376. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  3377. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  3378. style='font-family:Consolas;color:green'>//&nbsp;Bind&nbsp;the&nbsp;relevant&nbsp;lighting&nbsp;information&nbsp;into&nbsp;the&nbsp;materials</span><span
  3379. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  3380. 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
  3381. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;MaterialParameter*&nbsp;parameter&nbsp;=&nbsp;material-&gt;getParameter(</span><span
  3382. style='font-family:Consolas;color:#A31515'>&quot;u_lightDirection&quot;</span><span
  3383. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  3384. 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
  3385. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  3386. <h3>Pre-computed lighting maps</h3>
  3387. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Adding
  3388. lighting information into </span><span style='font-size:12.0pt;font-family:
  3389. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3390. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> adds
  3391. computationally expensive graphics computations. In many games, there are usually
  3392. multiple static lights and objects in the scene. In this relationship, the
  3393. additive light colors contributing to the objects can be pre-computed during
  3394. the design phase. 3-D modeling tools typically support the ability to compute
  3395. the light's additive color contributions using a process called <i
  3396. style='mso-bidi-font-style:normal'>baking</i>. This process allows the artist
  3397. to direct the contributing light and color information into a separate or
  3398. combined texture so that this is not required during the rendering.<o:p></o:p></span></p>
  3399. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-size:
  3400. 12.0pt;mso-bidi-font-family:"Times New Roman"'>You can optionally declare and
  3401. pass in pre-generated light maps using the
  3402. colored-unlit.frag/textured-unlit.frag shaders and specifying in your materials<o:p></o:p></span></p>
  3403. <p class=MsoNormal style='mso-pagination:widow-orphan'><span style='font-size:
  3404. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>defines
  3405. = TEXTURE_LIGHTMAP<o:p></o:p></span></p>
  3406. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Then
  3407. you just assign them using the sampler<span style='mso-spacerun:yes'>  </span></span><span
  3408. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>m_lightmapTexture</span><span
  3409. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in your
  3410. material definition to the image that was pre-generated that contains the
  3411. light+color for your object. It is recommended to use 8-bit alpha textures to
  3412. reduce the size.<o:p></o:p></span></p>
  3413. <h3>Directional lights</h3>
  3414. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  3415. most games, you</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3416. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3417. mso-bidi-font-family:"Times New Roman"'>ll want to add a </span><span
  3418. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Light</span><span
  3419. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class whose
  3420. type is </span><span style='font-size:12.0pt;font-family:"Courier New";
  3421. mso-bidi-font-family:"Times New Roman"'>Light::DIRECTIONAL</span><span
  3422. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This type of
  3423. light is used as the primary light source, such as a sun or moon. The
  3424. directional light represents a light source whose color is affected only by the
  3425. constant direction vector. It is typical to bind this onto the </span><span
  3426. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Materials</span><span
  3427. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> of objects
  3428. that are dynamic or moving.<o:p></o:p></span></p>
  3429. <h3>Point and spot lights</h3>
  3430. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Due
  3431. to the expensive processing overhead in using point and spot lights, many games
  3432. are designed to restrict point and spot light use to be static, baked into
  3433. light and color maps. However, the point and spot light types add exceptional
  3434. realism to games. Using them in separate or combined rendering passes, you can
  3435. bind point and spot lights into material to add dynamic point and spot light
  3436. rendering. All the built-in gameplay .materials files support directional, point
  3437. and spot lights. Also, with minor modification to the shaders, you can add
  3438. additional passes to combine two or more lights. It should be noted that there
  3439. is a significant performance impact in doing this. For these cases, you</span><span
  3440. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3441. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3442. "Times New Roman"'>ll usually want to restrict the influence of lights on a
  3443. material to no more than the one or two closest lights at a time. This can be
  3444. achieved by using a simple test in the </span><span style='font-size:12.0pt;
  3445. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Game::update()</span><span
  3446. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method to find
  3447. the closest light to a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3448. mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  3449. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and then bind
  3450. them to the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3451. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3452. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> once they are
  3453. found.<a name=d14e3a1310></a><o:p></o:p></span></p>
  3454. <h2><a name="_Toc330902777">Materials and shaders</a></h2>
  3455. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3456. gameplay 3-D framework uses a modern GPU shader based rendering architecture
  3457. and uses OpenGL 2.0+ (desktop) or OpenGL ES 2.0 (mobile) along with the OpenGL
  3458. Shading Language (GLSL). Currently, all the code in graphics-related classes uses
  3459. the OpenGL hardware device directly.<o:p></o:p></span></p>
  3460. <h3>Using materials</h3>
  3461. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3462. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3463. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3464. mso-bidi-font-family:"Times New Roman"'> class is the high level definition of
  3465. all the rendering information needed to draw a </span><span style='font-size:
  3466. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3467. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. When you draw
  3468. a </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3469. "Times New Roman"'>gameplay::Model</span><span style='font-size:12.0pt;
  3470. mso-bidi-font-family:"Times New Roman"'>, the mesh</span><span
  3471. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3472. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3473. "Times New Roman"'>s vertex buffer is applied and for each </span><span
  3474. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3475. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> its index
  3476. buffer(s) and </span><span style='font-size:12.0pt;font-family:"Courier New";
  3477. mso-bidi-font-family:"Times New Roman"'>gameplay::Materials</span><span
  3478. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> are applied
  3479. just before the primitives are drawn. <o:p></o:p></span></p>
  3480. <h3>RenderState and Effects</h3>
  3481. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Each
  3482. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3483. "Times New Roman"'>gameplay::Material</span><span style='font-size:12.0pt;
  3484. mso-bidi-font-family:"Times New Roman"'> consists of a </span><span
  3485. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3486. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and a </span><span
  3487. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3488. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The </span><span
  3489. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3490. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> stores the GPU
  3491. render state blocks that are to be applied, as well as any </span><span
  3492. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameters</span><span
  3493. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to be applied
  3494. to 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"'>. While a </span><span
  3497. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3498. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is typically
  3499. used once per </span><span style='font-size:12.0pt;font-family:"Courier New";
  3500. mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3501. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, the </span><span
  3502. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3503. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is created
  3504. internally based on the unique combination of selected vertex and fragment
  3505. shader programs. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3506. mso-bidi-font-family:"Times New Roman"'>gameplay::Effect</span><span
  3507. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> represents a
  3508. common reusable shader program.<o:p></o:p></span></p>
  3509. <h3>Techniques</h3>
  3510. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Since
  3511. you can bind only one </span><span style='font-size:12.0pt;font-family:"Courier New";
  3512. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3513. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> per </span><span
  3514. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MeshPart</span><span
  3515. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an additional
  3516. feature is supported that's designed to make it quick and easy to change the
  3517. way you render the parts at runtime. You can define multiple techniques by
  3518. giving them different names. Each one can have a completely different rendering
  3519. technique, and you can even change the technique being applied at runtime by
  3520. using </span><span style='font-size:12.0pt;font-family:"Courier New";
  3521. mso-bidi-font-family:"Times New Roman"'>Material::setTechnique(const char*
  3522. name)</span><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.
  3523. When a material is loaded, all the techniques are loaded ahead too. This is a
  3524. practical way of handling different light combinations or having lower-quality
  3525. rendering techniques, such as disabling bump mapping, when the object being
  3526. rendered is far away from the camera.<o:p></o:p></span></p>
  3527. <h3>Creating materials</h3>
  3528. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3529. can create a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3530. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3531. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> from the
  3532. simple </span><span style='font-size:12.0pt;font-family:"Courier New";
  3533. mso-bidi-font-family:"Times New Roman"'>gameplay::Properties</span><span
  3534. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> based
  3535. .material files. Using this simple file format, you can define your material,
  3536. specifying all the rendering techniques and pass information.<o:p></o:p></span></p>
  3537. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3538. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3539. is an example of loading a .material file:<o:p></o:p></span></p>
  3540. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3541. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3542. <pre style='background:white'><span style='font-family:Consolas;color:black'>Material*&nbsp;planeMaterial&nbsp;=&nbsp;planeNode-&gt;getModel()-&gt;setMaterial(</span><span
  3543. style='font-family:Consolas;color:#A31515'>&quot;res/floor.material&quot;</span><span
  3544. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  3545. <h3>Setting vs. binding material parameters</h3>
  3546. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  3547. you have created a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3548. mso-bidi-font-family:"Times New Roman"'>gameplay::Material</span><span
  3549. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> instance, you</span><span
  3550. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3551. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3552. "Times New Roman"'>ll want to get its parameters and then set or bind various
  3553. values to them. To set a value, get the </span><span style='font-size:12.0pt;
  3554. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  3555. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and then call
  3556. the appropriate </span><span style='font-size:12.0pt;font-family:"Courier New";
  3557. mso-bidi-font-family:"Times New Roman"'>setValue()</span><span
  3558. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> method on it.
  3559. Setting material parameter values is most common in parameters that are based
  3560. on values that are constants.<o:p></o:p></span></p>
  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"'>Here
  3563. is an example of setting a value on a parameter:<o:p></o:p></span></p>
  3564. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3565. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3566. <pre style='background:white'><span style='font-family:Consolas;color:black'>material-&gt;getParameter(</span><span
  3567. style='font-family:Consolas;color:#A31515'>&quot;u_diffuseColor&quot;</span><span
  3568. style='font-family:Consolas;color:black'>)-&gt;setValue(Vector4(0.53544f,&nbsp;<o:p></o:p></span></pre><pre
  3569. style='background:white'><span style='font-family:Consolas;color:black'><span
  3570. 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
  3571. 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>
  3572. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3573. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  3574. values that are not constants and are determined from other objects, you</span><span
  3575. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3576. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3577. "Times New Roman"'>ll want to bind a value to it. When binding a value, you are
  3578. giving the parameter a function pointer that will only be resolved just prior
  3579. to rendering. In this example, we will bind the forward vector for a node (in
  3580. view space).<o:p></o:p></span></p>
  3581. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3582. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  3583. is an example of binding a value on a parameter:<o:p></o:p></span></p>
  3584. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3585. <pre style='background:white'><span style='font-family:Consolas;color:black'>material-&gt;getParameter(</span><span
  3586. style='font-family:Consolas;color:#A31515'>&quot;u_lightDirection&quot;</span><span
  3587. style='font-family:Consolas;color:black'>)-&gt;bindValue(lightNode,&nbsp;<o:p></o:p></span></pre><pre
  3588. 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>
  3589. <h3>.material files</h3>
  3590. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>As
  3591. you can see in the following .material file, we have one Material, one
  3592. Technique and one Pass. The main parts of this material definition are the
  3593. shaders, uniforms, samplers and renderState. You will see certain upper case
  3594. values throughout the file. These represent constant enumeration values and can
  3595. usually be found in the </span><span style='font-size:12.0pt;font-family:"Courier New";
  3596. mso-bidi-font-family:"Times New Roman"'>gameplay::RenderState</span><span
  3597. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
  3598. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Texture</span><span
  3599. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
  3600. definitions:<o:p></o:p></span></p>
  3601. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3602. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>material
  3603. duck<o:p></o:p></span></p>
  3604. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3605. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3606. style='mso-spacerun:yes'>    </span>technique<o:p></o:p></span></p>
  3607. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3608. style='mso-spacerun:yes'>    </span>{<span style='mso-tab-count:1'>  </span><o:p></o:p></span></p>
  3609. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3610. style='mso-spacerun:yes'>        </span>pass 0<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>// shaders<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>vertexShader = res/shaders/textured.vert<o:p></o:p></span></p>
  3617. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3618. style='mso-spacerun:yes'>            </span>fragmentShader = res/shaders/textured.frag<o:p></o:p></span></p>
  3619. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3620. style='mso-tab-count:1'>       </span><span style='mso-spacerun:yes'>    
  3621. </span>defines = SPECULAR<o:p></o:p></span></p>
  3622. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3623. style='mso-spacerun:yes'>            </span><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>// uniforms<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>u_worldViewProjectionMatrix =
  3628. WORLD_VIEW_PROJECTION_MATRIX<o:p></o:p></span></p>
  3629. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3630. style='mso-spacerun:yes'>            </span>u_inverseTransposeWorldViewMatrix =
  3631. INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX<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>u_cameraPosition =
  3634. CAMERA_WORLD_POSITION<o:p></o:p></span></p>
  3635. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3636. style='mso-spacerun:yes'>            </span><o:p></o:p></span></p>
  3637. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3638. style='mso-spacerun:yes'>            </span>// samplers<o:p></o:p></span></p>
  3639. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3640. style='mso-spacerun:yes'>            </span>sampler u_diffuseTexture<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>{<o:p></o:p></span></p>
  3643. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3644. style='mso-spacerun:yes'>                </span>path = res/duck-diffuse.png<o:p></o:p></span></p>
  3645. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3646. style='mso-spacerun:yes'>                </span>mipmap = true<o:p></o:p></span></p>
  3647. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3648. style='mso-spacerun:yes'>                </span>wrapS = CLAMP<o:p></o:p></span></p>
  3649. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3650. style='mso-spacerun:yes'>           </span><span
  3651. style='mso-spacerun:yes'>     </span>wrapT = CLAMP<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>minFilter =
  3654. NEAREST_MIPMAP_LINEAR<o:p></o:p></span></p>
  3655. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3656. style='mso-spacerun:yes'>                </span>magFilter = LINEAR<o:p></o:p></span></p>
  3657. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3658. style='mso-spacerun:yes'>            </span>}<o:p></o:p></span></p>
  3659. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3660. style='mso-spacerun:yes'>            </span>// render state<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>renderState<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'><span
  3666. style='mso-spacerun:yes'>                </span>cullFace = true<o:p></o:p></span></p>
  3667. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3668. style='mso-spacerun:yes'>                </span>depthTest = true<o:p></o:p></span></p>
  3669. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3670. style='mso-spacerun:yes'>       </span><span
  3671. style='mso-spacerun:yes'>     </span>}<o:p></o:p></span></p>
  3672. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3673. style='mso-spacerun:yes'>        </span>}<o:p></o:p></span></p>
  3674. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3675. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  3676. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  3677. <h3>Built-in shaders</h3>
  3678. <p class=MsoNormal>The <b style='mso-bidi-font-weight:normal'>&lt;gameplay-root&gt;/gameplay/res/shaders</b>
  3679. directory contains a set of the most common shaders used in your games. To
  3680. reduce shader code duplication the gameplay framework also supports declaring
  3681. including of shader files within vertex and shader program files.</p>
  3682. <p class=MsoNormal>If there is an error compiling the shaders the expanded
  3683. shader without the definitions is output with an .err file extension in the
  3684. same directory where the file was loaded from. </p>
  3685. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  3686. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Example:<o:p></o:p></b></p>
  3687. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p>&nbsp;</o:p></b></p>
  3688. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>#include
  3689. &quot;lib/lighting.frag&quot;<o:p></o:p></span></p>
  3690. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  3691. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3692. style='font-size:18.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Shader
  3693. preprocessor definitions<o:p></o:p></span></b></p>
  3694. <p class=MsoNormal>Using preprocessor definitions, the built-in shaders support
  3695. various features. Adding certain shader definitions (defines=XXX) will require
  3696. use specific uniform/samplers <span style='font-family:"Times New Roman","serif";
  3697. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>u_xxxxxxx<span
  3698. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  3699. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>. You must set these in
  3700. your vertex stream in your mesh and/or material parameters.</p>
  3701. <h3>Property inheritance</h3>
  3702. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>When
  3703. making materials with multiple techniques or passes, you can put any common
  3704. things, such as renderState or shaders, above the material or technique
  3705. definitions. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3706. mso-bidi-font-family:"Times New Roman"'>gameplay::Property</span><span
  3707. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file format
  3708. for the .material files supports property inheritance. Therefore, if you put
  3709. the renderState in the material sections, then all techniques and passes will
  3710. inherit its definition.<a name=d15e3a1310></a><o:p></o:p></span></p>
  3711. <h2><a name="_Toc330902778">Particle emitters</a></h2>
  3712. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  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"'> class defines all the information
  3716. needed to simulate and render a system of particles. The emitter can be defined
  3717. in various ways to represent smoke, steam, fire and other atmospheric effects,
  3718. such as rain and lightning. Once created, the emitter can be set on a </span><span
  3719. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3720. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in order to
  3721. follow an object, or it can be placed within a scene. <o:p></o:p></span></p>
  3722. <h3>Particles as sprites</h3>
  3723. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3724. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3725. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='font-size:12.0pt;
  3726. mso-bidi-font-family:"Times New Roman"'> always has a sprite/texture and a
  3727. maximum number of particles that can be alive at any given time. After the
  3728. emitter is created, these cannot be changed. Particles are rendered as
  3729. camera-facing billboards using the emitter's sprite/texture. The emitter's
  3730. sprite/texture properties determine whether the texture is treated as a single
  3731. image, a texture atlas, or an animated sprite.<o:p></o:p></span></p>
  3732. <h3>Particle properties</h3>
  3733. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3734. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3735. "Times New Roman"'>gameplay::ParticleEmitter</span><span style='font-size:12.0pt;
  3736. mso-bidi-font-family:"Times New Roman"'> also has a number of properties that
  3737. determine values assigned to the individual particles it emits. Scalar
  3738. properties, such as particle begin- and end-size, are assigned within a minimum
  3739. and a maximum value; vector properties are assigned within the domain or space,
  3740. and are defined by a base vector and a variance vector.<o:p></o:p></span></p>
  3741. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3742. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3743. variance vector is multiplied by a random scalar between 1 and -1, and the base
  3744. vector is added to this result. This allows an emitter to be created, which
  3745. emits particles with properties that are randomized, yet fit within a
  3746. well-defined range. To make a property deterministic, simply set the minimum
  3747. value to the same value as the maximum for that property, or set its variance
  3748. to a zero vector. To learn more about different scalars, vector and rendering
  3749. properties that can be set on a </span><span style='font-size:12.0pt;
  3750. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ParticleEmitter</span><span
  3751. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, look at the
  3752. C++ API.<o:p></o:p></span></p>
  3753. <h3>Creating particle emitters</h3>
  3754. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Use
  3755. the </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3756. "Times New Roman"'>ParticlEmitter::create()</span><span style='font-size:12.0pt;
  3757. mso-bidi-font-family:"Times New Roman"'> method to create an emitter from a
  3758. particle file. The .particle file format and semantics are very similar to the
  3759. .material file format. This is because it also leverages the </span><span
  3760. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Properties</span><span
  3761. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
  3762. definition and supports all the properties supported in the C++ API for the </span><span
  3763. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ParticleEmitter</span><span
  3764. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class.<o:p></o:p></span></p>
  3765. <h3>Animated sprites for particles</h3>
  3766. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>It
  3767. is very easy to make the particles animate through a list of images. Just make
  3768. your images have a tile of sprite images and then modify the sprite</span><span
  3769. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  3770. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  3771. "Times New Roman"'>s base properties in the emitter to control the animation
  3772. behavior.<o:p></o:p></span></p>
  3773. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3774. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3775. can then even do things such as animate images of 3-D dice using only 2-D
  3776. images.<a name=d16e3a1310></a><o:p></o:p></span></p>
  3777. <h2><a name="_Toc330902779">Physics</a></h2>
  3778. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3779. gameplay framework supports 3-D physics using the game service/controller </span><span
  3780. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  3781. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The </span><span
  3782. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  3783. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
  3784. maintains a physics world that has gravity, and will simulate the objects you
  3785. add to it.<o:p></o:p></span></p>
  3786. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3787. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  3788. gameplay physics system supports 3-D rigid body dynamics, including collision
  3789. shapes, constraints, and a physics character class. To simulate objects within
  3790. the physics world, you need to create a </span><span style='font-size:12.0pt;
  3791. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsCollisionObject</span><span
  3792. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> object
  3793. representing the geometry, or </span><span style='font-size:12.0pt;font-family:
  3794. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Model</span><span
  3795. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. By attaching
  3796. a collision object to a </span><span style='font-size:12.0pt;font-family:"Courier New";
  3797. mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  3798. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, the rigid
  3799. body will be added to the physics world and the simulation will automatically
  3800. update the node</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  3801. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  3802. mso-bidi-font-family:"Times New Roman"'>s transformation.<o:p></o:p></span></p>
  3803. <h3>PhysicsCollisionObject</h3>
  3804. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Courier New";
  3805. mso-bidi-font-family:"Times New Roman"'>PhysicsCollisionObject</span><span
  3806. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is the base
  3807. class that provides an interface for receiving collision events. <o:p></o:p></span></p>
  3808. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3809. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  3810. can add collision listeners to a </span><span style='font-size:12.0pt;
  3811. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsCollisionObject</span><span
  3812. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or test if the
  3813. collision object currently collides with another collision object.<o:p></o:p></span></p>
  3814. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3815. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  3816. are 3 types of collision objects:<a name=d16e49a1310></a><span
  3817. style='mso-tab-count:2'>         </span><o:p></o:p></span></p>
  3818. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3819. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3820. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3821. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3822. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3823. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3824. "Times New Roman"'>PhysicsRigidBody<span style='mso-tab-count:2'>              </span><o:p></o:p></span></p>
  3825. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3826. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3827. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3828. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3829. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3830. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3831. "Times New Roman"'>PhysicsGhostObject<span style='mso-tab-count:2'>           </span><o:p></o:p></span></p>
  3832. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  3833. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  3834. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  3835. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  3836. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  3837. </span></span></span><![endif]><span style='font-size:12.0pt;mso-bidi-font-family:
  3838. "Times New Roman"'>PhysicsCharacter<span style='mso-tab-count:6'>                                               </span><o:p></o:p></span></p>
  3839. <h3>PhysicsRigidBody</h3>
  3840. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3841. rigid body is an idealized, infinitely hard, non-deformable solid object. Rigid
  3842. bodies have mass, shape and other properties that affect forces within the
  3843. simulation. <o:p></o:p></span></p>
  3844. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3845. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  3846. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3847. "Times New Roman"'>PhysicsRigidBody</span><span style='font-size:12.0pt;
  3848. mso-bidi-font-family:"Times New Roman"'> can be set to be a kinematic rigid
  3849. body. A kinematic rigid body is an object that is not simulated by the physics
  3850. system, and instead has its transform driven manually.<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. <h4>Create a PhysicsRigidBody</h4>
  3853. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3854. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  3855. create a rigid body, first you need to know what kind of shape you want to
  3856. simulate. The physics system supports boxes, spheres, meshes, capsules, and
  3857. terrain height fields. For basic shapes, such as boxes and spheres, you can
  3858. programmatically create the rigid bodies by calling </span><span
  3859. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::setCollisionObject()</span><span
  3860. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and passing in
  3861. the desired shape type.<o:p></o:p></span></p>
  3862. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3863. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>PhysicsRigidBody::Parameters
  3864. params;<o:p></o:p></span></p>
  3865. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>params.mass
  3866. = 10.0f;<o:p></o:p></span></p>
  3867. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>node-&gt;setCollisionObject(PhysicsCollisionObject::RIGID_BODY,
  3868. <o:p></o:p></span></p>
  3869. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3870. style='mso-spacerun:yes'>                         </span>PhysicsCollisionShape::box(),
  3871. &amp;params);<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"'>All
  3874. other types of rigid bodies must be created using the </span><span
  3875. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  3876. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  3877. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.physics</span><span
  3878. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property
  3879. definition files. The </span><span style='font-size:12.0pt;font-family:"Courier New";
  3880. mso-bidi-font-family:"Times New Roman"'>.scene</span><span style='font-size:
  3881. 12.0pt;mso-bidi-font-family:"Times New Roman"'> file allows you to bind various
  3882. attachments or properties to nodes, including a rigid body.<o:p></o:p></span></p>
  3883. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3884. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>For
  3885. example, to create a mesh rigid body for the node within the scene with ID
  3886. equal to tree_1:<o:p></o:p></span></p>
  3887. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3888. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3889. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3890. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3891. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
  3892. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3893. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3894. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3895. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>scene<o:p></o:p></span></p>
  3896. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<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>node tree_1<o:p></o:p></span></p>
  3901. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3902. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  3903. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3904. style='mso-spacerun:yes'>        </span>...<o:p></o:p></span></p>
  3905. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3906. style='mso-spacerun:yes'>        </span>collisionObject =
  3907. game.physics#tree_mesh<o:p></o:p></span></p>
  3908. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3909. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  3910. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3911. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  3912. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  3913. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  3914. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  3915. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.physics:</span></b><span
  3916. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3917. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3918. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3919. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  3920. tree_mesh<o:p></o:p></span></p>
  3921. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3922. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3923. style='mso-spacerun:yes'>    </span>type = RIGID_BODY<o:p></o:p></span></p>
  3924. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3925. style='mso-spacerun:yes'>    </span>shape = MESH<o:p></o:p></span></p>
  3926. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3927. style='mso-spacerun:yes'>    </span>mass = 15.0<o:p></o:p></span></p>
  3928. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3929. style='mso-spacerun:yes'>    </span>...<o:p></o:p></span></p>
  3930. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  3931. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  3932. "Times New Roman"'><o:p></o:p></span></p>
  3933. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  3934. mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>  
  3935. </span></span><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  3936. <h4>RigidBody schema</h4>
  3937. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3938. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  3939. properties have default values if not defined. See </span><span
  3940. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsRigidBody::Parameters</span><span
  3941. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> for more
  3942. information.<o:p></o:p></span></p>
  3943. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  3944. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  3945. &lt;string&gt;<o:p></o:p></span></p>
  3946. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  3947. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3948. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>   
  3949. </span><span style='mso-spacerun:yes'>            </span>= &lt;RIGID_BODY |
  3950. GHOST_OBJECT | CHARACTER&gt;<o:p></o:p></span></p>
  3951. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3952. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  3953. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  3954. MESH | HEIGHTFIELD | CAPSULE&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>image<span
  3957. style='mso-spacerun:yes'>               </span>= &lt;string&gt; // only for
  3958. HEIGHTFIELD<o:p></o:p></span></p>
  3959. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3960. style='mso-spacerun:yes'>    </span>radius<span
  3961. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<span
  3962. style='mso-spacerun:yes'>     </span><o:p></o:p></span></p>
  3963. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3964. style='mso-spacerun:yes'>    </span>height<span
  3965. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  3966. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3967. style='mso-spacerun:yes'>    </span>extents<span
  3968. style='mso-spacerun:yes'>             </span>= &lt;float, float, 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>center<span
  3971. style='mso-spacerun:yes'>              </span>= &lt;float, float, 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>centerAbsolute<span
  3974. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  3975. float, float&gt;<o:p></o:p></span></p>
  3976. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  3977. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3978. style='mso-spacerun:yes'>    </span>mass<span
  3979. style='mso-spacerun:yes'>                </span>= &lt;float&gt;<o:p></o:p></span></p>
  3980. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3981. style='mso-spacerun:yes'>    </span>friction<span
  3982. style='mso-spacerun:yes'>            </span>= &lt;float&gt;<o:p></o:p></span></p>
  3983. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3984. style='mso-spacerun:yes'>    </span>restitution<span
  3985. style='mso-spacerun:yes'>         </span>= &lt;float&gt;<o:p></o:p></span></p>
  3986. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3987. style='mso-spacerun:yes'>    </span>linearDamping<span
  3988. style='mso-spacerun:yes'>       </span>= &lt;float&gt;<o:p></o:p></span></p>
  3989. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3990. style='mso-spacerun:yes'>    </span>angularDamping<span
  3991. style='mso-spacerun:yes'>      </span>= &lt;float&gt;<o:p></o:p></span></p>
  3992. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3993. style='mso-spacerun:yes'>    </span>kinematic<span
  3994. style='mso-spacerun:yes'>           </span>= &lt;bool&gt;<span
  3995. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  3996. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  3997. style='mso-spacerun:yes'>    </span>anisotropicFriction = &lt;float, float,
  3998. float&gt;<o:p></o:p></span></p>
  3999. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4000. style='mso-spacerun:yes'>    </span>gravity<span
  4001. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4002. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4003. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4004. "Times New Roman"'><o:p></o:p></span></p>
  4005. <p class=MsoNormal><a name=d16e136a1310></a><span style='font-size:12.0pt;
  4006. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4007. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  4008. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  4009. <thead>
  4010. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  4011. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4012. padding:0in 5.4pt 0in 5.4pt'>
  4013. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4014. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4015. mso-bidi-font-weight:normal'><span style='mso-spacerun:yes'> </span>Shapes<o:p></o:p></span></p>
  4016. </td>
  4017. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4018. padding:0in 5.4pt 0in 5.4pt'>
  4019. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4020. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4021. mso-bidi-font-weight:normal'><span
  4022. style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
  4023. </td>
  4024. </tr>
  4025. </thead>
  4026. <tr style='mso-yfti-irow:1'>
  4027. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4028. 0in 5.4pt 0in 5.4pt'>
  4029. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4030. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4031. style='mso-spacerun:yes'> </span>BOX <o:p></o:p></span></p>
  4032. </td>
  4033. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4034. 0in 5.4pt 0in 5.4pt'>
  4035. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4036. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4037. style='mso-spacerun:yes'> </span>extents, center, center-absolute <o:p></o:p></span></p>
  4038. </td>
  4039. </tr>
  4040. <tr style='mso-yfti-irow:2'>
  4041. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4042. padding:0in 5.4pt 0in 5.4pt'>
  4043. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4044. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4045. style='mso-spacerun:yes'> </span>SPHERE <o:p></o:p></span></p>
  4046. </td>
  4047. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4048. padding:0in 5.4pt 0in 5.4pt'>
  4049. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4050. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4051. style='mso-spacerun:yes'> </span>radius, center, center-absolute <o:p></o:p></span></p>
  4052. </td>
  4053. </tr>
  4054. <tr style='mso-yfti-irow:3'>
  4055. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4056. 0in 5.4pt 0in 5.4pt'>
  4057. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4058. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4059. style='mso-spacerun:yes'> </span>MESH <o:p></o:p></span></p>
  4060. </td>
  4061. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4062. 0in 5.4pt 0in 5.4pt'>
  4063. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4064. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4065. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  4066. </td>
  4067. </tr>
  4068. <tr style='mso-yfti-irow:4'>
  4069. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4070. padding:0in 5.4pt 0in 5.4pt'>
  4071. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4072. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4073. style='mso-spacerun:yes'> </span>HEIGHTFIELD <o:p></o:p></span></p>
  4074. </td>
  4075. <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
  4076. padding:0in 5.4pt 0in 5.4pt'>
  4077. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4078. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4079. style='mso-spacerun:yes'> </span>image <o:p></o:p></span></p>
  4080. </td>
  4081. </tr>
  4082. <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
  4083. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4084. 0in 5.4pt 0in 5.4pt'>
  4085. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4086. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4087. style='mso-spacerun:yes'> </span>CAPSULE <o:p></o:p></span></p>
  4088. </td>
  4089. <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
  4090. 0in 5.4pt 0in 5.4pt'>
  4091. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4092. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4093. style='mso-spacerun:yes'> </span>radius, height, center, center-absolute <o:p></o:p></span></p>
  4094. </td>
  4095. </tr>
  4096. </table>
  4097. <h3>PhysicsGhostObject</h3>
  4098. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  4099. ghost object is like a rigid body except that it does not have an effect the
  4100. simulation. It will not cause forces or react to the other rigid bodies. Ghost
  4101. objects have a shape but they do not have mass, or any of the properties that
  4102. affect forces.<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. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ghost
  4105. objects are useful for querying the simulation, or detecting collisions without
  4106. having rigid bodies react to the ghost object. A ghost object could be used to
  4107. detect if an object entered a volume, such as a soccer ball going into a goal.
  4108. This use of a ghost object is often called a volumetric trigger. Ghost objects
  4109. can also detect if they collide with other ghost objects.<o:p></o:p></span></p>
  4110. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4111. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Collision
  4112. objects do not require a model so you could use a ghost object to check if a
  4113. camera collides with a wall.<o:p></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. <h4>Creating a PhysicsGhostObject</h4>
  4116. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4117. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Programmatically:<o:p></o:p></span></p>
  4118. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4119. <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
  4120. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4121. style='background:white'><span style='font-family:Consolas;color:black'>node-&gt;setCollisionObject(PhysicsCollisionObject::GHOST_OBJECT,<o:p></o:p></span></pre><pre
  4122. 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>
  4123. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4124. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4125. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4126. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  4127. a .physics file:<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. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4130. powerup<o:p></o:p></span></p>
  4131. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4132. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4133. style='mso-spacerun:yes'>    </span>type = GHOST_OBJECT<o:p></o:p></span></p>
  4134. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4135. style='mso-spacerun:yes'>    </span>shape = SPHERE<o:p></o:p></span></p>
  4136. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4137. style='mso-spacerun:yes'>    </span>radius = 5.0<o:p></o:p></span></p>
  4138. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4139. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4140. <h4>PhysicsGhostObject schema</h4>
  4141. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4142. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Ghost
  4143. objects only have a shape and support the same shapes as rigid bodies. <o:p></o:p></span></p>
  4144. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4145. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4146. &lt;string&gt;<o:p></o:p></span></p>
  4147. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4148. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4149. style='mso-spacerun:yes'>    </span>type<span style='mso-spacerun:yes'>   
  4150. </span><span style='mso-spacerun:yes'>            </span>= GHOST_OBJECT<o:p></o:p></span></p>
  4151. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4152. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  4153. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  4154. MESH | HEIGHTFIELD | CAPSULE&gt;<o:p></o:p></span></p>
  4155. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4156. style='mso-spacerun:yes'>    </span>radius<span
  4157. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4158. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4159. style='mso-spacerun:yes'>    </span>height<span
  4160. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4161. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4162. style='mso-spacerun:yes'>    </span>extents<span
  4163. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4164. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4165. style='mso-spacerun:yes'>    </span>center<span
  4166. style='mso-spacerun:yes'>              </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4167. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4168. style='mso-spacerun:yes'>    </span>centerAbsolute<span
  4169. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  4170. float, float&gt;<o:p></o:p></span></p>
  4171. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4172. style='mso-spacerun:yes'>    </span>image<span
  4173. style='mso-spacerun:yes'>               </span>= &lt;string&gt; <span
  4174. style='mso-spacerun:yes'> </span>// HEIGHTFIELD shapes only.<o:p></o:p></span></p>
  4175. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4176. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4177. "Times New Roman"'><o:p></o:p></span></p>
  4178. <h3>PhysicsCharacter</h3>
  4179. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4180. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4181. "Times New Roman"'>PhysicsCharacter</span><span style='font-size:12.0pt;
  4182. mso-bidi-font-family:"Times New Roman"'> class can be used to control the
  4183. movements and collisions of a character in a game. It interacts with the
  4184. physics system to apply gravity and handle collisions, however dynamics are not
  4185. applied to the character directly by the physics system. Instead, the
  4186. character's movement is controlled directly by the </span><span
  4187. style='font-size:12.0pt;font-family:"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"'> class. This
  4189. results in a more responsive and typical game character than would be possible
  4190. if trying to move a character by applying physical simulation with forces.<o:p></o:p></span></p>
  4191. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4192. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4193. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4194. <h4>Creating a PhysicsCharacter</h4>
  4195. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4196. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4197. programmatically create a </span><span style='font-size:12.0pt;font-family:
  4198. "Courier New";mso-bidi-font-family:"Times New Roman"'>PhysicsCharacter</span><span
  4199. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with mass 20
  4200. and capsule shape:<o:p></o:p></span></p>
  4201. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4202. <pre style='background:white'><span style='font-family:Consolas;color:black'>PhysicsRigidBody::Parameters&nbsp;params(20.0f);<o:p></o:p></span></pre><pre
  4203. style='background:white'><span style='font-family:Consolas;color:black'>node-&gt;setCollisionObject(PhysicsCollisionObject::CHARACTER,<o:p></o:p></span></pre><pre
  4204. 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
  4205. 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
  4206. style='font-family:Consolas;color:blue'>true</span><span style='font-family:
  4207. Consolas;color:black'>), <o:p></o:p></span></pre><pre style='background:white'><span
  4208. 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
  4209. style='background:white'><span style='font-family:Consolas;color:black'>PhysicsCharacter*&nbsp;character&nbsp;=&nbsp;</span><span
  4210. style='font-family:Consolas;color:blue'>static_cast</span><span
  4211. style='font-family:Consolas;color:black'>&lt;PhysicsCharacter*&gt;(<o:p></o:p></span></pre><pre
  4212. 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
  4213. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre>
  4214. <h4>PhysicsCharacter schema</h4>
  4215. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4216. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Physics
  4217. characters have a mass and shape. A capsule is a typical shape for a typical
  4218. biped character.<o:p></o:p></span></p>
  4219. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4220. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>collisionObject
  4221. &lt;string&gt;<o:p></o:p></span></p>
  4222. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<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>type<span style='mso-spacerun:yes'>   
  4225. </span><span style='mso-spacerun:yes'>           </span><span
  4226. style='mso-spacerun:yes'> </span>= CHARACTER<o:p></o:p></span></p>
  4227. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4228. style='mso-spacerun:yes'>    </span>shape<span style='mso-spacerun:yes'>  
  4229. </span><span style='mso-spacerun:yes'>            </span>= &lt;BOX | SPHERE |
  4230. MESH | CAPSULE&gt;<o:p></o:p></span></p>
  4231. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4232. style='mso-spacerun:yes'>    </span>radius<span
  4233. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4234. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4235. style='mso-spacerun:yes'>    </span>height<span
  4236. style='mso-spacerun:yes'>              </span>= &lt;float&gt;<o:p></o:p></span></p>
  4237. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4238. style='mso-spacerun:yes'>    </span>extents<span
  4239. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4240. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4241. style='mso-spacerun:yes'>    </span>center<span
  4242. style='mso-spacerun:yes'>              </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4243. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4244. style='mso-spacerun:yes'>    </span>centerAbsolute<span
  4245. style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'> </span>= &lt;float,
  4246. float, float&gt;<o:p></o:p></span></p>
  4247. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4248. style='mso-spacerun:yes'>    </span>mass<span
  4249. style='mso-spacerun:yes'>                </span>= &lt;float&gt;<o:p></o:p></span></p>
  4250. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4251. <h3>Creating a PhysicsContraint</h3>
  4252. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4253. gameplay framework supports various types of constraints between two rigid
  4254. bodies (or one rigid body and the physics world), including hinge, fixed,
  4255. generic (six-degree-of-freedom), socket, and spring. Constraints can be created
  4256. programmatically using one of the create functions on </span><span
  4257. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsController</span><span
  4258. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or they can
  4259. be specified within the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4260. mso-bidi-font-family:"Times New Roman"'>physics</span><span style='font-size:
  4261. 12.0pt;mso-bidi-font-family:"Times New Roman"'> section of the </span><span
  4262. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  4263. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file. For
  4264. example, to create a hinge constraint from within a </span><span
  4265. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.scene</span><span
  4266. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file between
  4267. the rigid body attached to the node with id door and the physics world:<o:p></o:p></span></p>
  4268. <b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  4269. font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
  4270. mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
  4271. EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
  4272. </span></b>
  4273. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4274. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
  4275. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4276. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4277. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>scene<o:p></o:p></span></p>
  4278. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4279. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><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>physics<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>{<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>...<o:p></o:p></span></p>
  4287. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4288. style='mso-spacerun:yes'>        </span>constraint<o:p></o:p></span></p>
  4289. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4290. style='mso-spacerun:yes'>    </span><span style='mso-tab-count:1'>   </span><span
  4291. style='mso-spacerun:yes'>  </span>{<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>type = HINGE<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>rigidBodyA = door<o:p></o:p></span></p>
  4296. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4297. style='mso-spacerun:yes'>            </span>rotationOffsetA = 0.0, 1.0, 0.0,
  4298. 90.0<o:p></o:p></span></p>
  4299. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4300. style='mso-spacerun:yes'>            </span>translationOffsetA = 0.0, 0.0, 2.0<o:p></o:p></span></p>
  4301. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4302. style='mso-spacerun:yes'>            </span>limits = 0.0, 90.0, 0.5<o:p></o:p></span></p>
  4303. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4304. style='mso-spacerun:yes'>    </span><span style='mso-spacerun:yes'>   </span>}<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>}<o:p></o:p></span></p>
  4307. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}<o:p></o:p></span></p>
  4308. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4309. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4310. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>PhysicsConstraint
  4311. schema</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4312. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4313. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>constraint
  4314. &lt;string&gt;<o:p></o:p></span></p>
  4315. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<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>type<span style='mso-spacerun:yes'>  
  4318. </span><span style='mso-tab-count:1'>   </span><span
  4319. style='mso-spacerun:yes'>          </span>= &lt;FIXED | GENERIC | HINGE |<span
  4320. style='mso-spacerun:yes'>  </span>SOCKET | SPRING&gt;<o:p></o:p></span></p>
  4321. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4322. style='mso-spacerun:yes'>    </span>rigidBodyA<span
  4323. style='mso-spacerun:yes'>         </span>= &lt;string&gt;<o:p></o:p></span></p>
  4324. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4325. style='mso-spacerun:yes'>    </span>rigidBodyB<span
  4326. style='mso-spacerun:yes'>         </span>= &lt;string&gt;<o:p></o:p></span></p>
  4327. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4328. style='mso-spacerun:yes'>    </span>translationOffsetA = &lt;float, float,
  4329. float&gt;<o:p></o:p></span></p>
  4330. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4331. style='mso-spacerun:yes'>    </span>translationOffsetB = &lt;float, float,
  4332. float&gt;<o:p></o:p></span></p>
  4333. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4334. style='mso-spacerun:yes'>    </span>rotationOffsetA<span
  4335. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4336. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4337. style='mso-spacerun:yes'>    </span>rotationOffsetB<span
  4338. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4339. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4340. style='mso-spacerun:yes'>    </span>angularLowerLimit<span
  4341. style='mso-spacerun:yes'>  </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4342. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4343. style='mso-spacerun:yes'>    </span>angularUpperLimit<span
  4344. style='mso-spacerun:yes'>  </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4345. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4346. style='mso-spacerun:yes'>    </span>linearLowerLimit<span
  4347. style='mso-spacerun:yes'>   </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4348. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4349. style='mso-spacerun:yes'>    </span>linearUpperLimit<span
  4350. style='mso-spacerun:yes'>   </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4351. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4352. style='mso-spacerun:yes'>    </span>limits<span
  4353. style='mso-spacerun:yes'>             </span>= &lt;float, float, float&gt;<o:p></o:p></span></p>
  4354. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4355. style='mso-spacerun:yes'>    </span>angularDampingX<span
  4356. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4357. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4358. style='mso-spacerun:yes'>    </span>angularDampingY<span
  4359. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4360. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4361. style='mso-spacerun:yes'>    </span>angularDampingZ<span
  4362. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4363. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4364. style='mso-spacerun:yes'>    </span>angularStrengthX<span
  4365. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4366. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4367. style='mso-spacerun:yes'>    </span>angularStrengthY<span
  4368. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4369. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4370. style='mso-spacerun:yes'>    </span>angularStrengthZ<span
  4371. style='mso-spacerun:yes'>   </span>= &lt;float&gt;<o:p></o:p></span></p>
  4372. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4373. style='mso-spacerun:yes'>    </span>linearDampingX<span
  4374. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4375. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4376. style='mso-spacerun:yes'>    </span>linearDampingY<span
  4377. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4378. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4379. style='mso-spacerun:yes'>    </span>linearDampingZ<span
  4380. style='mso-spacerun:yes'>     </span>= &lt;float&gt;<o:p></o:p></span></p>
  4381. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4382. style='mso-spacerun:yes'>    </span>linearStrengthX<span
  4383. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4384. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4385. style='mso-spacerun:yes'>    </span>linearStrengthY<span
  4386. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4387. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4388. style='mso-spacerun:yes'>    </span>linearStrengthZ<span
  4389. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4390. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4391. style='mso-spacerun:yes'>    </span>breakingImpulse<span
  4392. style='mso-spacerun:yes'>    </span>= &lt;float&gt;<o:p></o:p></span></p>
  4393. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4394. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4395. "Times New Roman"'><o:p></o:p></span></p>
  4396. <p class=MsoNormal><a name=d16e328a1310></a><span style='font-size:12.0pt;
  4397. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4398. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  4399. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  4400. <thead>
  4401. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  4402. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4403. padding:0in 5.4pt 0in 5.4pt'>
  4404. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4405. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4406. mso-bidi-font-weight:normal'><span
  4407. style='mso-spacerun:yes'> </span>Constraint Types <o:p></o:p></span></p>
  4408. </td>
  4409. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4410. padding:0in 5.4pt 0in 5.4pt'>
  4411. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4412. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  4413. mso-bidi-font-weight:normal'><span
  4414. style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
  4415. </td>
  4416. </tr>
  4417. </thead>
  4418. <tr style='mso-yfti-irow:1'>
  4419. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4420. 0in 5.4pt 0in 5.4pt'>
  4421. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4422. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4423. style='mso-spacerun:yes'> </span>FIXED <o:p></o:p></span></p>
  4424. </td>
  4425. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4426. 0in 5.4pt 0in 5.4pt'>
  4427. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4428. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4429. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  4430. </td>
  4431. </tr>
  4432. <tr style='mso-yfti-irow:2'>
  4433. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4434. padding:0in 5.4pt 0in 5.4pt'>
  4435. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4436. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4437. style='mso-spacerun:yes'> </span>GENERIC <o:p></o:p></span></p>
  4438. </td>
  4439. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4440. padding:0in 5.4pt 0in 5.4pt'>
  4441. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4442. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4443. translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
  4444. angularUpperLimit, linearLowerLimit, linearUpperLimit <o:p></o:p></span></p>
  4445. </td>
  4446. </tr>
  4447. <tr style='mso-yfti-irow:3'>
  4448. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4449. 0in 5.4pt 0in 5.4pt'>
  4450. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4451. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4452. style='mso-spacerun:yes'> </span>HINGE <o:p></o:p></span></p>
  4453. </td>
  4454. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4455. 0in 5.4pt 0in 5.4pt'>
  4456. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4457. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4458. translationOffsetB, rotationOffsetA, rotationOffsetB, limits <o:p></o:p></span></p>
  4459. </td>
  4460. </tr>
  4461. <tr style='mso-yfti-irow:4'>
  4462. <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
  4463. padding:0in 5.4pt 0in 5.4pt'>
  4464. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4465. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4466. style='mso-spacerun:yes'> </span>SOCKET <o:p></o:p></span></p>
  4467. </td>
  4468. <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
  4469. padding:0in 5.4pt 0in 5.4pt'>
  4470. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4471. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4472. translationOffsetB <o:p></o:p></span></p>
  4473. </td>
  4474. </tr>
  4475. <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
  4476. <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
  4477. 0in 5.4pt 0in 5.4pt'>
  4478. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4479. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  4480. style='mso-spacerun:yes'> </span>SPRING <o:p></o:p></span></p>
  4481. </td>
  4482. <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
  4483. 0in 5.4pt 0in 5.4pt'>
  4484. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  4485. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
  4486. translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
  4487. angularUpperLimit, linearLowerLimit, linearUpperLimit, angularDampingX,
  4488. angularDampingY, angularDampingZ, angularStrengthX, angularStrengthY,
  4489. angularStrengthZ, linearDampingX, linearDampingY, linearDampingZ,
  4490. linearStrengthX, linearStrengthY, linearStrengthZ <o:p></o:p></span></p>
  4491. </td>
  4492. </tr>
  4493. </table>
  4494. <h3>Handling collisions</h3>
  4495. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4496. gameplay framework allows you to register to be notified whenever a collision
  4497. occurs between two rigid bodies (and also when two rigid bodies stop
  4498. colliding). In order to do this, you must define a class that derives from </span><span
  4499. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::PhysicsRigidBody::Listener</span><span
  4500. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and implements
  4501. the function </span><span style='font-size:12.0pt;font-family:"Courier New";
  4502. mso-bidi-font-family:"Times New Roman"'>collisionEvent(…)</span><span
  4503. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Then, you
  4504. must add an instance of the class as a listener on a given rigid body using the
  4505. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4506. "Times New Roman"'>PhysicsRigidBody::addCollisionListener</span><span
  4507. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> function. For
  4508. example, to print all information for all collisions with the door and for
  4509. collisions between the character and the wall:<o:p></o:p></span></p>
  4510. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4511. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></b></p>
  4512. <b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
  4513. font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
  4514. mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
  4515. EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
  4516. </span></b>
  4517. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4518. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.h:</span></b><span
  4519. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4520. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4521. <pre style='background:white'><span style='font-family:Consolas;color:blue'>class</span><span
  4522. style='font-family:Consolas;color:black'>&nbsp;MyGame:&nbsp;</span><span
  4523. style='font-family:Consolas;color:blue'>public</span><span style='font-family:
  4524. Consolas;color:black'>&nbsp;gameplay::PhysicsRigidBody::Listener<o:p></o:p></span></pre><pre
  4525. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  4526. style='background:white'><span style='font-family:Consolas;color:blue'>public</span><span
  4527. style='font-family:Consolas;color:black'>:<o:p></o:p></span></pre><pre
  4528. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  4529. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;<o:p></o:p></span></pre><pre
  4530. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4531. style='font-family:Consolas;color:green'>/**</span><span style='font-family:
  4532. Consolas;color:black'><o:p></o:p></span></pre><pre style='background:white'><span
  4533. style='font-family:Consolas;color:green'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Collision&nbsp;event&nbsp;handler.</span><span
  4534. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4535. style='background:white'><span style='font-family:Consolas;color:green'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span
  4536. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  4537. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4538. style='font-family:Consolas;color:blue'>void</span><span style='font-family:
  4539. Consolas;color:black'>&nbsp;collisionEvent(PhysicsRigidBody::Listener::EventType&nbsp;type,<o:p></o:p></span></pre><pre
  4540. style='background:white'><span style='font-family:Consolas;color:black'><span style='mso-spacerun:yes'>                        </span></span><span
  4541. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4542. Consolas;color:black'>&nbsp;PhysicsRigidBody::CollisionPair&amp;&nbsp;pair,&nbsp;<o:p></o:p></span></pre><pre
  4543. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  4544. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4545. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointA,&nbsp;</span><span
  4546. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4547. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointB);<o:p></o:p></span></pre><pre
  4548. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;...<o:p></o:p></span></pre><pre
  4549. style='background:white'><span style='font-family:Consolas;color:black'>};<o:p></o:p></span></pre>
  4550. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4551. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  4552. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.cpp:</span></b><span
  4553. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  4554. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4555. <pre style='background:white'><a name=d17e3a1310></a><span style='font-family:
  4556. Consolas;color:black'>MyGame*&nbsp;mygame;<o:p></o:p></span></pre><pre
  4557. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;door;<o:p></o:p></span></pre><pre
  4558. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;character;<o:p></o:p></span></pre><pre
  4559. style='background:white'><span style='font-family:Consolas;color:black'>Node*&nbsp;wall;<o:p></o:p></span></pre><pre
  4560. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4561. style='background:white'><span style='font-family:Consolas;color:black'>...<o:p></o:p></span></pre><pre
  4562. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4563. style='background:white'><span style='font-family:Consolas;color:black'>door-&gt;getRigidBody()-&gt;addCollisionListener(mygame);<o:p></o:p></span></pre><pre
  4564. 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
  4565. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  4566. style='background:white'><span style='font-family:Consolas;color:black'>...<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:blue'>void</span><span
  4569. style='font-family:Consolas;color:black'>&nbsp;MyGame::collisionEvent(PhysicsRigidBody::Listener::EventType&nbsp;type,&nbsp;<o:p></o:p></span></pre><pre
  4570. 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
  4571. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4572. Consolas;color:black'>&nbsp;PhysicsRigidBody::CollisionPair&amp;&nbsp;pair,&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='mso-spacerun:yes'>      </span></span><span
  4574. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4575. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointA,&nbsp;</span><span
  4576. style='font-family:Consolas;color:blue'>const</span><span style='font-family:
  4577. Consolas;color:black'>&nbsp;Vector3&amp;&nbsp;pointB)<o:p></o:p></span></pre><pre
  4578. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  4579. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;GP_WARN(</span><span
  4580. 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
  4581. 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
  4582. style='font-family:Consolas;color:black'>,<o:p></o:p></span></pre><pre
  4583. 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
  4584. 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
  4585. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  4586. <h2><a name="_Toc330902780">Animation</a></h2>
  4587. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4588. is a key component to bringing your game to life. Within gameplay, there is support
  4589. to create both property animations and character animations. The </span><span
  4590. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Animation</span><span
  4591. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class provides
  4592. factory methods for creating animations on properties of classes that extend </span><span
  4593. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4594. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Character
  4595. animations from within the scene file are imported and stored on the </span><span
  4596. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4597. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> they target.
  4598. All animations on a </span><span style='font-size:12.0pt;font-family:"Courier New";
  4599. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4600. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> can be
  4601. obtained by ID.<o:p></o:p></span></p>
  4602. <h3>AnimationTargets</h3>
  4603. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Courier New";
  4604. mso-bidi-font-family:"Times New Roman"'>gameplay::Transform</span><span
  4605. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
  4606. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  4607. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
  4608. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  4609. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> are animation
  4610. targets.<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"'>Animations
  4613. can be created on the scale, rotation and translation properties of the </span><span
  4614. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Transform</span><span
  4615. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Animations
  4616. can also target any </span><span style='font-size:12.0pt;font-family:"Courier New";
  4617. mso-bidi-font-family:"Times New Roman"'>gameplay::Node</span><span
  4618. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, which extends
  4619. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4620. "Times New Roman"'>gameplay::Transform</span><span style='font-size:12.0pt;
  4621. mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  4622. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4623. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Also,
  4624. animations can target instances of </span><span style='font-size:12.0pt;
  4625. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::MaterialParameter</span><span
  4626. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Any
  4627. parameters on a material of type </span><span style='font-size:12.0pt;
  4628. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>float</span><span
  4629. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
  4630. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>integer</span><span
  4631. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or 2-, 3-,
  4632. and 4-dimensional vectors can be animated.<o:p></o:p></span></p>
  4633. <h3>Creating property animations</h3>
  4634. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animations
  4635. are created from the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4636. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4637. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. </span><span
  4638. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationTarget</span><span
  4639. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> provides
  4640. methods to create simple two key frame animations using </span><span
  4641. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimationFromTo()</span><span
  4642. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
  4643. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimationFromBy()</span><span
  4644. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Multiple key
  4645. frame sequences can be created from </span><span style='font-size:12.0pt;
  4646. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>createAnimation()</span><span
  4647. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
  4648. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4649. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4650. is an example of how to create a multiple key frame animation on a node</span><span
  4651. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4652. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4653. "Times New Roman"'>s translation properties:<o:p></o:p></span></p>
  4654. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4655. <pre style='background:white'><span style='font-family:Consolas;color:blue'>unsigned</span><span
  4656. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  4657. 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
  4658. style='background:white'><span style='font-family:Consolas;color:blue'>unsigned</span><span
  4659. style='font-family:Consolas;color:black'>&nbsp;</span><span style='font-family:
  4660. 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
  4661. style='background:white'><span style='font-family:Consolas;color:blue'>float</span><span
  4662. style='font-family:Consolas;color:black'>&nbsp;keyValues[]&nbsp;=&nbsp;<o:p></o:p></span></pre><pre
  4663. style='background:white'><span style='font-family:Consolas;color:black'>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4664. 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
  4665. 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
  4666. 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
  4667. style='background:white'><span style='font-family:Consolas;color:black'>};&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  4668. style='background:white'><span style='font-family:Consolas;color:black'>Animation*&nbsp;sampleAnim&nbsp;=&nbsp;enemyNode-&gt;createAnimation(</span><span
  4669. style='font-family:Consolas;color:#A31515'>&quot;sample&quot;</span><span
  4670. style='font-family:Consolas;color:black'>,<o:p></o:p></span></pre><pre
  4671. 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
  4672. 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
  4673. 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
  4674. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>   </span></span><span
  4675. style='font-family:Consolas;color:black'><o:p></o:p></span></pre>
  4676. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4677. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4678. is the same animation specified in a </span><span style='font-size:12.0pt;
  4679. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4680. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file that can
  4681. also be loaded by the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4682. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationTarget</span><span
  4683. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:<o:p></o:p></span></p>
  4684. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4685. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>animation
  4686. sample<o:p></o:p></span></p>
  4687. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4688. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4689. style='mso-spacerun:yes'>    </span>property = ANIMATE_TRANSLATE<o:p></o:p></span></p>
  4690. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4691. style='mso-spacerun:yes'>    </span>keyCount = 3<o:p></o:p></span></p>
  4692. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4693. style='mso-spacerun:yes'>    </span>keyTimes = 0, 500, 1000<o:p></o:p></span></p>
  4694. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4695. style='mso-spacerun:yes'>    </span>keyValues = 0.0 -4.0 0.0 0.0 0.0 0.0 0.0
  4696. 4.0 0.0<o:p></o:p></span></p>
  4697. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4698. style='mso-spacerun:yes'>    </span>curve = LINEAR<o:p></o:p></span></p>
  4699. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4700. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4701. "Times New Roman"'><o:p></o:p></span></p>
  4702. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4703. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4704. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4705. create the animation from this file you would call the following code: <o:p></o:p></span></p>
  4706. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4707. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4708. <pre style='background:white'><span style='font-family:Consolas;color:black'>Animation*&nbsp;sampleAnim&nbsp;=&nbsp;enemyNode-&gt;createAnimation(</span><span
  4709. style='font-family:Consolas;color:#A31515'>&quot;sample&quot;</span><span
  4710. style='font-family:Consolas;color:black'>,&nbsp;</span><span style='font-family:
  4711. Consolas;color:#A31515'>&quot;sample.animation&quot;</span><span
  4712. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  4713. <h3>Curves</h3>
  4714. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>There
  4715. are many different interpolation types defined within the </span><span
  4716. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Curve</span><span
  4717. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class that can
  4718. be used to interpolate through the animation data.<o:p></o:p></span></p>
  4719. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4720. <h3>Character animations</h3>
  4721. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Character
  4722. animations are complex because they can be composed of multiple animations
  4723. targeting numerous joints within a character model. For this reason, character
  4724. animations are usually included within the scene file and are imported when the
  4725. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4726. "Times New Roman"'>.gpb</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4727. "Times New Roman"'> file is loaded. To simplify and optimize all animations
  4728. under single animation. The gameplay-encoder supports grouping all the
  4729. animation on joints leading up to a common root joint under a single animation.
  4730. This is an option in the gameplay-encoder using the </span><span
  4731. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4732. "Malgun Gothic"'>–</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4733. "Times New Roman"'>groupAnimations or </span><span style='font-size:12.0pt;
  4734. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>–</span><span
  4735. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>g option. This
  4736. groups them under a single animation called </span><span style='font-size:12.0pt;
  4737. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
  4738. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>animations</span><span
  4739. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4740. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4741. "Times New Roman"'>.<o:p></o:p></span></p>
  4742. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4743. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>These
  4744. animations can be obtained by calling </span><span style='font-size:12.0pt;
  4745. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationTarget::getAnimation()</span><span
  4746. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> specifying the
  4747. animation</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  4748. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='font-size:12.0pt;
  4749. mso-bidi-font-family:"Times New Roman"'>s ID.<o:p></o:p></span></p>
  4750. <h3>AnimationClips</h3>
  4751. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  4752. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4753. "Times New Roman"'>gameplay::AnimationClip</span><span style='font-size:12.0pt;
  4754. mso-bidi-font-family:"Times New Roman"'> is created from the </span><span
  4755. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::Animation</span><span
  4756. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class and is a
  4757. snapshot of the animation that can be played back, manipulated with speed and
  4758. repeated.<o:p></o:p></span></p>
  4759. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4760. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Here
  4761. is an </span><span style='font-size:12.0pt;font-family:"Courier New";
  4762. mso-bidi-font-family:"Times New Roman"'>AnimationClip</span><span
  4763. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that has been
  4764. created from a character animation of an elf:<o:p></o:p></span></p>
  4765. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4766. <pre style='background:white'><span style='font-family:Consolas;color:black'>AnimationClip*&nbsp;elfRun&nbsp;=&nbsp;elfAnimation-&gt;createClip(</span><span
  4767. style='font-family:Consolas;color:#A31515'>&quot;elf_run&quot;</span><span
  4768. style='font-family:Consolas;color:black'>,&nbsp;200L,&nbsp;310L);<o:p></o:p></span></pre><pre
  4769. style='background:white'><span style='font-family:Consolas;color:black'>elfRun-&gt;setRepeatCount(AnimationClip::REPEAT_INDEFINITE);<o:p></o:p></span></pre><pre
  4770. style='background:white'><span style='font-family:Consolas;color:black'>elfRun-&gt;setSpeed(2.0f);<o:p></o:p></span></pre>
  4771. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4772. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4773. clips can be specified within an </span><span style='font-size:12.0pt;
  4774. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4775. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file that can
  4776. be given to an animation to create clips. The total number of frames that make
  4777. up the animation must be specified in the file. The begin and end parameters of
  4778. each clip are specified in frames. An assumption that the animation runs at 60
  4779. frames per second has been made. Here is an example of an </span><span
  4780. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>.animation</span><span
  4781. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file for an
  4782. elf animation:<o:p></o:p></span></p>
  4783. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4784. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>animation
  4785. elf<o:p></o:p></span></p>
  4786. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<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>frameCount = 350<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>clip idle<o:p></o:p></span></p>
  4791. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4792. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4793. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4794. style='mso-spacerun:yes'>        </span>begin =<span style='mso-spacerun:yes'> 
  4795. </span>0<o:p></o:p></span></p>
  4796. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4797. style='mso-spacerun:yes'>        </span>end = 75<o:p></o:p></span></p>
  4798. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4799. style='mso-spacerun:yes'>        </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4800. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4801. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4802. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  4803. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><o:p>&nbsp;</o:p></span></p>
  4804. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4805. style='mso-spacerun:yes'>    </span>clip walk<o:p></o:p></span></p>
  4806. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4807. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4808. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4809. style='mso-spacerun:yes'>        </span>begin = 75<o:p></o:p></span></p>
  4810. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4811. style='mso-spacerun:yes'>        </span>end = 200<o:p></o:p></span></p>
  4812. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4813. style='mso-spacerun:yes'>        </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4814. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4815. style='mso-spacerun:yes'>    </span>}<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>clip run<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>begin = 200<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>end = 310<o:p></o:p></span></p>
  4824. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4825. style='mso-tab-count:1'>       </span><span style='mso-spacerun:yes'> </span><span
  4826. style='mso-spacerun:yes'> </span>repeatCount = INDEFINITE<o:p></o:p></span></p>
  4827. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4828. style='mso-spacerun:yes'>        </span>speed = 2.0<o:p></o:p></span></p>
  4829. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4830. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4831. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4832. style='mso-spacerun:yes'>    </span>clip jump<o:p></o:p></span></p>
  4833. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4834. style='mso-spacerun:yes'>    </span>{<o:p></o:p></span></p>
  4835. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4836. style='mso-spacerun:yes'>        </span>begin = 310<o:p></o:p></span></p>
  4837. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4838. style='mso-spacerun:yes'>        </span>end = 350<o:p></o:p></span></p>
  4839. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4840. style='mso-spacerun:yes'>        </span>repeatCount = 1<o:p></o:p></span></p>
  4841. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4842. style='mso-spacerun:yes'>    </span>}<o:p></o:p></span></p>
  4843. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4844. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4845. "Times New Roman"'> <o:p></o:p></span></p>
  4846. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4847. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4848. <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Courier New";
  4849. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4850. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animations
  4851. can be played back by calling </span><span style='font-size:12.0pt;font-family:
  4852. "Courier New";mso-bidi-font-family:"Times New Roman"'>Animation::play()</span><span
  4853. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, passing a
  4854. clip ID, or by calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  4855. mso-bidi-font-family:"Times New Roman"'>AnimationClip::play()</span><span
  4856. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> directly on
  4857. the clip. Animations can also be paused and stopped in the same fashion.<o:p></o:p></span></p>
  4858. <h3>Animation blending</h3>
  4859. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4860. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4861. "Times New Roman"'>gameplay::AnimationClip</span><span style='font-size:12.0pt;
  4862. mso-bidi-font-family:"Times New Roman"'> class has a blend weight property that
  4863. can be used to blend multiple animations. There is also a method called </span><span
  4864. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>AnimationClip::crossFade()</span><span
  4865. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that
  4866. conveniently provides the ability to fade the currently playing clip out and
  4867. fade in the specified clip over a given period of time.<o:p></o:p></span></p>
  4868. <h3>AnimationClip listeners</h3>
  4869. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Animation
  4870. events can be triggered on a </span><span style='font-size:12.0pt;font-family:
  4871. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationClip</span><span
  4872. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> by registering
  4873. instances of </span><span style='font-size:12.0pt;font-family:"Courier New";
  4874. mso-bidi-font-family:"Times New Roman"'>gameplay::AnimationClip::Listener</span><span
  4875. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with the clip.
  4876. The listeners can be registered to be called back at the beginning or end of
  4877. the clip, or at any specific time throughout the playback of the clip. This can
  4878. be useful for starting a particle emitter when a character</span><span
  4879. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  4880. "Malgun Gothic"'>’</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4881. "Times New Roman"'>s foot hits the ground in an animation, or to play back a
  4882. sound of a gun firing during an animation of an enemy shooting.<a
  4883. name=d18e3a1310></a><o:p></o:p></span></p>
  4884. <h2><a name="_Toc330902781">Audio</a></h2>
  4885. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>You
  4886. can integrate 3-D audio into your game using the audio services supported by
  4887. gameplay. The framework uses a very traditional way of representing audio. The </span><span
  4888. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioController</span><span
  4889. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> manages all of
  4890. the playing audio sources.<o:p></o:p></span></p>
  4891. <h3>Creating an AudioSource</h3>
  4892. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>An
  4893. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4894. "Times New Roman"'>AudioSource</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4895. "Times New Roman"'> can be created from audio files or from a .audio property
  4896. file. Ogg audio files are compressed, so they use less memory than .wav files.<o:p></o:p></span></p>
  4897. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4898. <pre style='background:white'><span style='font-family:Consolas;color:black'>AudioSource*&nbsp;wheelsSound&nbsp;=&nbsp;AudioSource::create(</span><span
  4899. style='font-family:Consolas;color:#A31515'>&quot;res/longboard.wav&quot;</span><span
  4900. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  4901. style='background:white'><span style='font-family:Consolas;color:black'>AudioSource*&nbsp;backgroundMusic&nbsp;=&nbsp;AudioSource::create(</span><span
  4902. style='font-family:Consolas;color:#A31515'>&quot;res/music.ogg&quot;</span><span
  4903. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre>
  4904. <h3>Playing the AudioSource</h3>
  4905. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4906. following example illustrates how to play audio:<o:p></o:p></span></p>
  4907. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4908. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>wheelsSound-&gt;play();<o:p></o:p></span></p>
  4909. <h3>Updating the AudioListener</h3>
  4910. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>By
  4911. default, the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4912. mso-bidi-font-family:"Times New Roman"'>AudioListener</span><span
  4913. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is bound to
  4914. the active camera of the scene. You can manually bind the camera to the </span><span
  4915. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioListener</span><span
  4916. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using </span><span
  4917. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::AudioListener::setCamera()</span><span
  4918. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  4919. <h3>Audio Properties</h3>
  4920. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4921. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4922. "Times New Roman"'>gameplay::AudioSource</span><span style='font-size:12.0pt;
  4923. mso-bidi-font-family:"Times New Roman"'> class has methods for modifying the
  4924. properties of the </span><span style='font-size:12.0pt;font-family:"Courier New";
  4925. mso-bidi-font-family:"Times New Roman"'>AudioSource</span><span
  4926. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, such as
  4927. pitch, gain, and velocity.<o:p></o:p></span></p>
  4928. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4929. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Audio
  4930. sources can be loaded from </span><span style='font-size:12.0pt;font-family:
  4931. "Courier New";mso-bidi-font-family:"Times New Roman"'>.audio</span><span
  4932. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property files
  4933. to make it easier to set these properties.<o:p></o:p></span></p>
  4934. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4935. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>audio
  4936. fireball<o:p></o:p></span></p>
  4937. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>{<o:p></o:p></span></p>
  4938. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4939. style='mso-spacerun:yes'>    </span>path = res/audio/fireball.wav<o:p></o:p></span></p>
  4940. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4941. style='mso-spacerun:yes'>    </span>looped = false<o:p></o:p></span></p>
  4942. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4943. style='mso-spacerun:yes'>    </span>gain = 0.7<o:p></o:p></span></p>
  4944. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4945. style='mso-spacerun:yes'>    </span>pitch = 0.5<o:p></o:p></span></p>
  4946. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4947. style='mso-spacerun:yes'>    </span>velocity = 0.5 0.0 1.0<o:p></o:p></span></p>
  4948. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  4949. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4950. "Times New Roman"'><o:p></o:p></span></p>
  4951. <h3>Binding an AudioSource to a node</h3>
  4952. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>An
  4953. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  4954. "Times New Roman"'>AudioSource</span><span style='font-size:12.0pt;mso-bidi-font-family:
  4955. "Times New Roman"'> can be bound to a </span><span style='font-size:12.0pt;
  4956. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node</span><span
  4957. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in your scene
  4958. using </span><span style='font-size:12.0pt;font-family:"Courier New";
  4959. mso-bidi-font-family:"Times New Roman"'>Node::setAudioSource()</span><span
  4960. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The position
  4961. of the audio source is automatically updated when the node is transformed.<a
  4962. name=d19e3a1310></a><o:p></o:p></span></p>
  4963. <h2><a name="_Toc330902782">User Interface</a></h2>
  4964. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  4965. gameplay framework provides a set of user interface (UI) controls that can be
  4966. used to create menus and HUDs. To add UI elements to your game, you'll create a
  4967. form from a properties file and call update() and draw() on it. Other than
  4968. adding listeners to buttons and modifying controls programmatically, there's
  4969. not much code to write in your game. Most of the work of defining a form's look
  4970. and feel happens in the .form and .theme files, as well as the texture atlas
  4971. used by the theme.<o:p></o:p></span></p>
  4972. <h3>Creating a form</h3>
  4973. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  4974. create a form, pass a properties file to </span><span style='font-size:12.0pt;
  4975. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::create()</span><span
  4976. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to instantiate
  4977. a form. The top-most namespace in the file must be named 'form'. The following
  4978. properties are available for forms:<o:p></o:p></span></p>
  4979. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  4980. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>form &lt;formID&gt;
  4981. <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><o:p></o:p></span></p>
  4984. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4985. style='mso-spacerun:yes'>    </span>// Form properties.<span
  4986. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4987. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4988. style='mso-spacerun:yes'>    </span>theme <span style='mso-tab-count:3'>                 </span>=
  4989. &lt;Path to .theme file&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4990. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4991. style='mso-spacerun:yes'>    </span>layout <span style='mso-tab-count:3'>                </span>=
  4992. &lt;Layout::Type constant&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4993. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4994. style='mso-spacerun:yes'>    </span>style <span style='mso-tab-count:3'>                 </span>=
  4995. &lt;styleID&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  4996. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  4997. style='mso-spacerun:yes'>    </span>position <span style='mso-tab-count:3'>              </span>=
  4998. &lt;x, y&gt;<span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p>
  4999. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5000. style='mso-spacerun:yes'>    </span>alignment <span style='mso-tab-count:2'>             </span>=
  5001. &lt;Control::Alignment constant&gt;<span style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5002. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5003. style='mso-spacerun:yes'>    </span>size<span style='mso-spacerun:yes'>  
  5004. </span><span style='mso-tab-count:3'>                </span>= &lt;width, height&gt;<span
  5005. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5006. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5007. style='mso-spacerun:yes'>    </span>autoWidth <span style='mso-tab-count:2'>             </span>=
  5008. &lt;bool&gt;<span 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>autoHeight <span style='mso-tab-count:2'>            </span>=
  5011. &lt;bool&gt;<span 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>width <span style='mso-tab-count:3'>                 </span>=
  5014. &lt;width&gt;<span 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>height <span style='mso-tab-count:3'>                </span>=
  5017. &lt;height&gt;<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><o:p></o:p></span></p>
  5020. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5021. style='mso-spacerun:yes'>    </span>// All the Controls within this Form.<span
  5022. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5023. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5024. style='mso-spacerun:yes'>    </span>container { }<span
  5025. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5026. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5027. style='mso-spacerun:yes'>    </span>label { }<span style='mso-spacerun:yes'>   
  5028. </span><o:p></o:p></span></p>
  5029. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5030. style='mso-spacerun:yes'>    </span>textBox { }<span
  5031. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5032. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5033. style='mso-spacerun:yes'>    </span>button { }<span
  5034. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5035. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5036. style='mso-spacerun:yes'>    </span>checkBox { }<span
  5037. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5038. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5039. style='mso-spacerun:yes'>    </span>radioButton { }<span
  5040. style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
  5041. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'><span
  5042. style='mso-spacerun:yes'>    </span>slider { }<span style='mso-spacerun:yes'>  
  5043. </span><o:p></o:p></span></p>
  5044. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas'>}</span><span
  5045. style='mso-bidi-font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5046. "Times New Roman"'><span style='mso-spacerun:yes'>   </span></span><span
  5047. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5048. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5049. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></b></p>
  5050. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5051. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Form property
  5052. information:</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5053. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5054. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5055. following is a list of form properties, and their purpose:<o:p></o:p></span></p>
  5056. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5057. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5058. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>theme</span></b><span
  5059. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: See
  5060. &quot;Creating a theme&quot; below.<o:p></o:p></span></p>
  5061. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5062. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5063. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>layout</span></b><span
  5064. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Member of
  5065. Layout::Type enum.<o:p></o:p></span></p>
  5066. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5067. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5068. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
  5069. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A style from
  5070. the theme.<o:p></o:p></span></p>
  5071. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5072. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5073. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>position</span></b><span
  5074. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The on-screen
  5075. position, in pixels.<o:p></o:p></span></p>
  5076. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5077. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5078. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>alignment</span></b><span
  5079. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Align the
  5080. form's position within the bounds of the screen. Note the position property
  5081. will be ignored if the </span><span style='font-size:12.0pt;font-family:"Courier New";
  5082. mso-bidi-font-family:"Times New Roman"'>alignment</span><span style='font-size:
  5083. 12.0pt;mso-bidi-font-family:"Times New Roman"'> property has been set.<o:p></o:p></span></p>
  5084. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5085. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5086. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>size</span></b><span
  5087. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The size of
  5088. the form, in pixels.<o:p></o:p></span></p>
  5089. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5090. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5091. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span></b><span
  5092. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use of this
  5093. property will result in a form with a width spanning the entire display. Note
  5094. the width property will be ignored if </span><span style='font-size:12.0pt;
  5095. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span
  5096. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has been set.<o:p></o:p></span></p>
  5097. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5098. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5099. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span></b><span
  5100. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use of this
  5101. property will result in a form with a height spanning the entire display. The
  5102. height property will be ignored if </span><span style='font-size:12.0pt;
  5103. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5104. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has been set.<o:p></o:p></span></p>
  5105. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5106. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5107. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>width</span></b><span
  5108. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can be used
  5109. in place of </span><span style='font-size:12.0pt;font-family:"Courier New";
  5110. mso-bidi-font-family:"Times New Roman"'>size</span><span style='font-size:12.0pt;
  5111. mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  5112. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5113. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5114. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>height</span></b><span
  5115. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can be used
  5116. in place of </span><span style='font-size:12.0pt;font-family:"Courier New";
  5117. mso-bidi-font-family:"Times New Roman"'>size</span><span style='font-size:12.0pt;
  5118. mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
  5119. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5120. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  5121. style determines the look of a control and is defined in the theme file,
  5122. detailed below. Position and size attributes are determined for controls using
  5123. the same properties as listed above for forms. Controls can be aligned within
  5124. their parent container by using the </span><span style='font-size:12.0pt;
  5125. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>alignment</span><span
  5126. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> property.
  5127. Setting </span><span style='font-size:12.0pt;font-family:"Courier New";
  5128. mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span style='font-size:
  5129. 12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
  5130. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5131. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to true will
  5132. result in a control the width or height of its parent container. You can add
  5133. controls to the form by placing namespaces within it. The available controls
  5134. are:<o:p></o:p></span></p>
  5135. <p class=MsoNormal><a name=d19e113a1310></a><span style='font-size:12.0pt;
  5136. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5137. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5138. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5139. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5140. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5141. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5142. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5143. mso-bidi-font-family:"Times New Roman"'>Container: A container has all the same
  5144. available properties as a form, except for 'theme'. You can add more controls
  5145. within a container to group them together, and/or to apply a different layout
  5146. type to a group of controls.<span style='mso-tab-count:2'>                  </span><o:p></o:p></span></p>
  5147. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5148. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5149. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5150. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5151. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5152. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5153. mso-bidi-font-family:"Times New Roman"'>Label: A simple text label. Available
  5154. properties: 'style', 'position', </span><span style='mso-bidi-font-size:12.0pt;
  5155. 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"'>alignment</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"'>, 'size', </span><span
  5160. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5161. mso-ascii-font-family:"Malgun Gothic"'>‘</span><span style='mso-bidi-font-size:
  5162. 12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span
  5163. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5164. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5165. 12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span style='mso-bidi-font-size:
  5166. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
  5167. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
  5168. style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5169. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5170. 12.0pt;mso-bidi-font-family:"Times New Roman"'>, and 'text'.<span
  5171. style='mso-tab-count:2'>          </span><o:p></o:p></span></p>
  5172. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5173. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5174. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5175. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5176. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5177. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5178. mso-bidi-font-family:"Times New Roman"'>TextBox: Editable text label. A TextBox
  5179. control has the same available properties as label.<span style='mso-tab-count:
  5180. 2'>                </span><o:p></o:p></span></p>
  5181. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5182. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5183. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5184. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5185. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5186. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5187. mso-bidi-font-family:"Times New Roman"'>Button: A button. A button control has
  5188. the same available properties as label.<span style='mso-tab-count:2'>            </span><o:p></o:p></span></p>
  5189. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5190. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5191. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5192. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5193. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5194. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5195. mso-bidi-font-family:"Times New Roman"'>CheckBox: A button that toggles between
  5196. 'checked' and 'unchecked' states when tapped or clicked. A CheckBox has the
  5197. same available properties as label, plus 'checked' for its starting state.<span
  5198. style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5199. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5200. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5201. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5202. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5203. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5204. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5205. mso-bidi-font-family:"Times New Roman"'>RadioButton: RadioButton has the same
  5206. available properties as CheckBox, with an additional property, 'group'. Only
  5207. one radio button in a given group can be selected at a time.<span
  5208. style='mso-tab-count:2'>                 </span><o:p></o:p></span></p>
  5209. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5210. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5211. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5212. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5213. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5214. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5215. mso-bidi-font-family:"Times New Roman"'>Slider: A marker that can slide along a
  5216. track between its end-caps. A slider makes use of the following properties: <o:p></o:p></span></p>
  5217. <p class=MsoNormal style='text-align:justify'><span style='mso-bidi-font-size:
  5218. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5219. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5220. font-family:Consolas'>slider &lt;controlID&gt;<o:p></o:p></span></p>
  5221. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5222. font-family:Consolas'>{<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5223. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5224. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5225. style='mso-spacerun:yes'>  </span>style = &lt;styleID&gt; <span
  5226. style='mso-spacerun:yes'>     </span>// A style from the theme.<span
  5227. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5228. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5229. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5230. style='mso-spacerun:yes'>  </span>position = &lt;x, y&gt; <span
  5231. style='mso-spacerun:yes'>     </span>// Position of the control on-screen, in
  5232. pixels.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5233. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5234. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5235. style='mso-spacerun:yes'>  </span>size = &lt;width, height&gt; // The size of
  5236. the control, in pixels.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5237. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5238. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5239. style='mso-spacerun:yes'>  </span>min = &lt;float&gt; <span
  5240. style='mso-spacerun:yes'>         </span>// The value of the left- /
  5241. bottom-most point on the slider.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5242. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5243. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5244. style='mso-spacerun:yes'>  </span>max = &lt;float&gt; <span
  5245. style='mso-spacerun:yes'>         </span>// The value of the right- / top-most
  5246. point on the slider.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5247. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5248. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5249. style='mso-spacerun:yes'>  </span>value = &lt;float&gt; <span
  5250. style='mso-spacerun:yes'>       </span>// The default position of the
  5251. marker.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5252. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5253. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5254. style='mso-spacerun:yes'>  </span>step = &lt;float&gt; <span
  5255. style='mso-spacerun:yes'>        </span>// If greater than 0, force the marker
  5256. to snap to discrete<o:p></o:p></span></p>
  5257. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5258. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5259. style='mso-spacerun:yes'>                         </span>// multiples of
  5260. ‘step’.<o:p></o:p></span></p>
  5261. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5262. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5263. style='mso-spacerun:yes'>  </span>text = &lt;string&gt; <span
  5264. style='mso-spacerun:yes'>       </span>// Text to display above, below or
  5265. alongside the slider<o:p></o:p></span></p>
  5266. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5267. font-family:Consolas'><span style='mso-spacerun:yes'>  </span><span
  5268. style='mso-spacerun:yes'>                         </span>// (depending on the
  5269. style).<o:p></o:p></span></p>
  5270. <p class=MsoNormal style='text-align:justify'><span style='font-size:10.0pt;
  5271. font-family:Consolas'>}</span><span style='mso-bidi-font-size:12.0pt;
  5272. mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5273. <h3>Creating a theme</h3>
  5274. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>A
  5275. theme contains the information a form needs to determine the look of its
  5276. controls. A theme has one property, 'texture', which points to a texture atlas
  5277. containing the images used by the theme. Cursor images, skins, and lists of
  5278. images used by controls are defined in their own namespaces. The rest of the
  5279. theme consists of style namespaces. A style describes the border, margin, and
  5280. padding of a control, what images, skins, and cursors are associated with a
  5281. control, and font properties to apply to a control's text.<span
  5282. style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
  5283. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5284. <pre style='background:white'><span style='font-family:Consolas;color:black'>theme&nbsp;&lt;themeID&gt;<o:p></o:p></span></pre><pre
  5285. style='background:white'><span style='font-family:Consolas;color:black'>{&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;texture&nbsp;=&nbsp;&lt;Path&nbsp;to&nbsp;texture&gt;&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'> <o:p></o:p></span></pre><pre
  5288. 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
  5289. 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
  5290. 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
  5291. 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
  5292. 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
  5293. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5294. 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
  5295. 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
  5296. 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
  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'>&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
  5299. 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
  5300. style='background:white'><span style='font-family:Consolas;color:black'> <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;image&nbsp;unchecked&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;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&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;color&nbsp;=&nbsp;&lt;#fffffffff&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;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5306. style='background:white'><span style='font-family:Consolas;color:black'> <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;color&nbsp;=&nbsp;&lt;#fffffffff&gt;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5308. 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
  5309. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5310. 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
  5311. style='background:white'><span style='font-family:Consolas;color:black'>&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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5313. 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
  5314. 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
  5315. 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
  5316. 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
  5317. 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
  5318. 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
  5319. style='background:white'><span style='font-family:Consolas;color:black'> <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;region&nbsp;=&nbsp;&lt;x,&nbsp;y,&nbsp;width,&nbsp;height&gt;&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;color&nbsp;=&nbsp;&lt;#ffffffff&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;<o:p></o:p></span></pre><pre
  5323. style='background:white'><span style='font-family:Consolas;color:black'> <o:p></o:p></span></pre><pre
  5324. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5325. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5326. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5327. style='background:white'><span style='font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></pre><pre
  5328. 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
  5329. 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
  5330. 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
  5331. 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
  5332. 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
  5333. 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
  5334. 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
  5335. 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
  5336. 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
  5337. 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
  5338. 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
  5339. 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
  5340. 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
  5341. 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
  5342. 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
  5343. 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
  5344. 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
  5345. style='background:white'><span style='font-family:Consolas;color:black'>&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;stateNormal&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;{&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;skin&nbsp;=&nbsp;&lt;skinID&gt;&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;imageList&nbsp;=&nbsp;&lt;imageID&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;cursor&nbsp;=&nbsp;&lt;cursorID&gt;&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;font&nbsp;=&nbsp;&lt;Path&nbsp;to&nbsp;font&gt;&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;&nbsp;&nbsp;&nbsp;&nbsp;fontSize&nbsp;=&nbsp;&lt;int&gt;&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;textColor&nbsp;=&nbsp;&lt;#ffffffff&gt;&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;textAlignment&nbsp;=&nbsp;&lt;Control::Alignmentconstant&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;rightToLeft&nbsp;=&nbsp;&lt;bool&gt;&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;opacity&nbsp;=&nbsp;&lt;float&gt;&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;}&nbsp;&nbsp;&nbsp;&nbsp;&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;stateFocus&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;<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;skin&nbsp;=&nbsp;&lt;skinID&gt;&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;...&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;&nbsp;}&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateActive&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5364. 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
  5365. 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
  5366. 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
  5367. 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
  5368. 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
  5369. 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
  5370. 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
  5371. 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
  5372. 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
  5373. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre><pre
  5374. style='background:white'><span style='font-family:Consolas;color:black'>}&nbsp;&nbsp;&nbsp;<o:p></o:p></span></pre>
  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><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5377. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5378. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5379. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5380. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Theme property
  5381. information:</span></b><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5382. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5383. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5384. following is a list of theme properties, and their sub-properties if
  5385. applicable.<o:p></o:p></span></p>
  5386. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5387. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5388. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>texture</span></b><span
  5389. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The path to
  5390. the texture atlas used by this theme. <o:p></o:p></span></p>
  5391. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5392. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5393. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>cursor</span></b><span
  5394. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Describes a
  5395. single image, to be used as a cursor.<o:p></o:p></span></p>
  5396. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5397. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5398. of cursor:<o:p></o:p></span></p>
  5399. <p class=MsoNormal><a name=d19e173a1310></a><span style='font-size:12.0pt;
  5400. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5401. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5402. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5403. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5404. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5405. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5406. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5407. mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
  5408. pixels.<span style='mso-tab-count:2'>            </span><o:p></o:p></span></p>
  5409. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5410. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5411. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5412. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5413. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5414. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5415. mso-bidi-font-family:"Times New Roman"'>color: Blend color to apply to this
  5416. cursor.<span style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5417. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5418. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5419. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5420. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5421. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5422. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5423. mso-bidi-font-family:"Times New Roman"'>imageList: A collection of images used
  5424. by controls. <a name=d19e183a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5425. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5426. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5427. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5428. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5429. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5430. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5431. mso-bidi-font-family:"Times New Roman"'>image: A single image within the list. <a
  5432. name=d19e187a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5433. <p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
  5434. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5435. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5436. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5437. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5438. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5439. mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
  5440. pixels. <o:p></o:p></span></p>
  5441. <p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
  5442. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5443. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5444. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5445. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5446. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5447. mso-bidi-font-family:"Times New Roman"'>color: Optionally override image-list
  5448. blend color. <o:p></o:p></span></p>
  5449. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5450. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5451. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5452. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5453. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5454. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5455. mso-bidi-font-family:"Times New Roman"'>color: Default blend color for images
  5456. that don't specify their own.<o:p></o:p></span></p>
  5457. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5458. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5459. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5460. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5461. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>skin</span></b><span
  5462. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Defines the
  5463. border and background of a control.<o:p></o:p></span></p>
  5464. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5465. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5466. of skin:<o:p></o:p></span></p>
  5467. <p class=MsoNormal><a name=d19e210a1310></a><span style='font-size:12.0pt;
  5468. mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5469. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5470. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5471. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5472. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5473. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5474. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5475. mso-bidi-font-family:"Times New Roman"'>border : The corners and edges of the
  5476. given region will be used as border sprites. <a name=d19e214a1310></a><span
  5477. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5478. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5479. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5480. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5481. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5482. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5483. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5484. mso-bidi-font-family:"Times New Roman"'>top : Height of top border, top
  5485. corners. <o:p></o:p></span></p>
  5486. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5487. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5488. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5489. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5490. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5491. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5492. mso-bidi-font-family:"Times New Roman"'>bottom: Height of bottom border, bottom
  5493. corners. <o:p></o:p></span></p>
  5494. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5495. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5496. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5497. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5498. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5499. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5500. mso-bidi-font-family:"Times New Roman"'>left: Width of left border, left
  5501. corners. <o:p></o:p></span></p>
  5502. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5503. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5504. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5505. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5506. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5507. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5508. mso-bidi-font-family:"Times New Roman"'>right: Width of right border, right
  5509. corners.<span style='mso-tab-count:2'>                  </span><o:p></o:p></span></p>
  5510. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5511. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5512. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5513. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5514. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5515. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5516. mso-bidi-font-family:"Times New Roman"'>region: Total container region
  5517. including the entire border. A region within the texture, in pixels.<span
  5518. style='mso-tab-count:1'>       </span><span style='mso-tab-count:1'>    </span><o:p></o:p></span></p>
  5519. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5520. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5521. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5522. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5523. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5524. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5525. mso-bidi-font-family:"Times New Roman"'>color: The blend color to apply to this
  5526. skin.<o:p></o:p></span></p>
  5527. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5528. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5529. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5530. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5531. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5532. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5533. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
  5534. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A combination
  5535. of theme attributes that can be applied to any control.<o:p></o:p></span></p>
  5536. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5537. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Sub-properties
  5538. of style:<o:p></o:p></span></p>
  5539. <p class=MsoNormal><a name=d19e244a1310></a><span style='font-size:12.0pt;
  5540. mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5541. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5542. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5543. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5544. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5545. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5546. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5547. mso-bidi-font-family:"Times New Roman"'>margin: Layouts may make use of a
  5548. style's margin to put space between adjacent controls. <a name=d19e248a1310></a><span
  5549. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5550. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5551. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5552. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5553. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5554. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5555. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5556. mso-bidi-font-family:"Times New Roman"'>top: Empty space above a control. <o:p></o:p></span></p>
  5557. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5558. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5559. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5560. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5561. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5562. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5563. mso-bidi-font-family:"Times New Roman"'>bottom: Empty space below a control. <o:p></o:p></span></p>
  5564. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5565. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5566. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5567. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5568. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5569. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5570. mso-bidi-font-family:"Times New Roman"'>left: Empty space left of a control. <o:p></o:p></span></p>
  5571. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5572. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5573. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5574. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5575. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5576. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5577. mso-bidi-font-family:"Times New Roman"'>right: Empty space right of a control.<span
  5578. style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5579. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5580. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5581. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5582. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5583. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5584. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5585. mso-bidi-font-family:"Times New Roman"'>padding: The space between a control's
  5586. border and its content. <a name=d19e265a1310></a><span
  5587. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5588. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5589. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5590. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5591. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5592. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5593. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5594. mso-bidi-font-family:"Times New Roman"'>top: Empty space between the top border
  5595. and content. <o:p></o:p></span></p>
  5596. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5597. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5598. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5599. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5600. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5601. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5602. mso-bidi-font-family:"Times New Roman"'>bottom: Empty space between the top
  5603. border and content. <o:p></o:p></span></p>
  5604. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5605. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5606. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5607. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5608. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5609. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5610. mso-bidi-font-family:"Times New Roman"'>left: Empty space between the left
  5611. border and content. <o:p></o:p></span></p>
  5612. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5613. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5614. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5615. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5616. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5617. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5618. mso-bidi-font-family:"Times New Roman"'>right: Empty space between the right
  5619. border and content.<span style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5620. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5621. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5622. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5623. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5624. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5625. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5626. mso-bidi-font-family:"Times New Roman"'>stateNormal: Properties used when a
  5627. control is in the normal state. <a name=d19e282a1310></a><span
  5628. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5629. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5630. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5631. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5632. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5633. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5634. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5635. mso-bidi-font-family:"Times New Roman"'>skin: Skin to use for border and
  5636. background sprites. <o:p></o:p></span></p>
  5637. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5638. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5639. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5640. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5641. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5642. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5643. mso-bidi-font-family:"Times New Roman"'>imageList: Images to use for this
  5644. state. <o:p></o:p></span></p>
  5645. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5646. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5647. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5648. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5649. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5650. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5651. mso-bidi-font-family:"Times New Roman"'>cursor: Cursor to use when the mouse is
  5652. over this control. <o:p></o:p></span></p>
  5653. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5654. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5655. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5656. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5657. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5658. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5659. mso-bidi-font-family:"Times New Roman"'>font: Font to use for rendering text. <o:p></o:p></span></p>
  5660. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5661. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5662. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5663. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5664. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5665. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5666. mso-bidi-font-family:"Times New Roman"'>fontSize: Size of text. <o:p></o:p></span></p>
  5667. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5668. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5669. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5670. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5671. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5672. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5673. mso-bidi-font-family:"Times New Roman"'>textColor: Color of text. <o:p></o:p></span></p>
  5674. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5675. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5676. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5677. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5678. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5679. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5680. mso-bidi-font-family:"Times New Roman"'>textAlignment: Align text within the
  5681. control</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
  5682. mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
  5683. 12.0pt;mso-bidi-font-family:"Times New Roman"'>s content area. <o:p></o:p></span></p>
  5684. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5685. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5686. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5687. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5688. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5689. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5690. mso-bidi-font-family:"Times New Roman"'>rightToLeft: Whether to draw text from
  5691. right to left. <o:p></o:p></span></p>
  5692. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5693. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5694. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5695. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5696. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5697. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5698. mso-bidi-font-family:"Times New Roman"'>opacity: Opacity to apply to all
  5699. text/border/icon colors.<span style='mso-tab-count:2'>                   </span><o:p></o:p></span></p>
  5700. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5701. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5702. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5703. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5704. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5705. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5706. mso-bidi-font-family:"Times New Roman"'>stateFocus: Properties used when a
  5707. control is in focus. <a name=d19e315a1310></a><span
  5708. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5709. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5710. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5711. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5712. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5713. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5714. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5715. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5716. Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
  5717. 2'>               </span><o:p></o:p></span></p>
  5718. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5719. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5720. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5721. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5722. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5723. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5724. mso-bidi-font-family:"Times New Roman"'>stateActive: Properties used when a
  5725. control is active. This is when a touch/mouse is down within the control. If
  5726. not specified, the normal overlay will be used. <a name=d19e323a1310></a><span
  5727. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5728. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5729. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5730. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5731. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5732. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5733. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5734. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5735. Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
  5736. 2'>               </span><o:p></o:p></span></p>
  5737. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5738. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5739. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5740. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5741. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5742. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5743. mso-bidi-font-family:"Times New Roman"'>stateDisabled: Properties used when a
  5744. control is disabled. If not specified, the normal overlay will be used. <a
  5745. name=d19e332a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  5746. <p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
  5747. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5748. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5749. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5750. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5751. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5752. mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
  5753. Unspecified properties will inherit from stateNormal.<o:p></o:p></span></p>
  5754. <p class=MsoNormal style='margin-left:.25in;text-indent:-9.0pt'><span
  5755. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  5756. style='mso-tab-count:6'>                                              </span><o:p></o:p></span></p>
  5757. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5758. top-level property of a theme is the path to its texture atlas. This is a
  5759. single image containing all the sprites used by the theme. The skin, cursor,
  5760. and imageList namespaces within a theme file refer to regions of this image to
  5761. use to represent their various states.<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"'>Skin:</span></b><span
  5765. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> A rectangular
  5766. area representing a border and background. A container namespace will specify
  5767. the rectangular region and blend color as well as the border sizes. From this,
  5768. the region will be divided into nine areas: four corners, four borders, and the
  5769. center background area. Note that the top and bottom borders will be stretched
  5770. horizontally; the left and right borders will stretch vertically; and the
  5771. center of the container will stretch in both directions. The corners will never
  5772. be stretched. It's perfectly valid to set any border size to 0. <o:p></o:p></span></p>
  5773. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5774. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5775. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Cursor</span></b><span
  5776. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A single
  5777. rectangular area representing a mouse cursor.<o:p></o:p></span></p>
  5778. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5779. <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  5780. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ImageList</span></b><span
  5781. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A collection
  5782. of images used by controls. Images for multiple control types can be combined
  5783. into one list. Controls use the following images:<a name=d19e357a1310></a><span
  5784. style='mso-tab-count:2'>               </span><o:p></o:p></span></p>
  5785. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5786. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5787. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5788. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5789. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5790. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5791. mso-bidi-font-family:"Times New Roman"'>CheckBox: 'checked', 'unchecked'<span
  5792. style='mso-tab-count:2'>                </span><o:p></o:p></span></p>
  5793. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5794. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5795. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5796. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5797. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5798. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5799. mso-bidi-font-family:"Times New Roman"'>RadioButton: 'selected, 'unselected'<span
  5800. style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  5801. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5802. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5803. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5804. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5805. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5806. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5807. mso-bidi-font-family:"Times New Roman"'>Slider: 'minCap', 'maxCap', 'track',
  5808. 'marker'<span style='mso-tab-count:2'>             </span><o:p></o:p></span></p>
  5809. <p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
  5810. -21.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:
  5811. 8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
  5812. Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
  5813. style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  5814. </span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
  5815. mso-bidi-font-family:"Times New Roman"'>TextBox: 'textCaret'</span><span
  5816. style='mso-tab-count:6'>                                                       </span><span
  5817. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  5818. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5819. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Note
  5820. that you may specify separate image lists for each state in a style.<o:p></o:p></span></p>
  5821. <h3>Adding a form to your game </h3>
  5822. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Once
  5823. you have a form, theme, and texture atlas, only a small amount of code is
  5824. required in order to actually display your UI within your game. There are two
  5825. options for displaying forms: two-dimensionally, where the form is drawn
  5826. directly to the display and three-dimensionally, where the form is assigned to
  5827. a node within the game's scene and displayed on a quad. <o:p></o:p></span></p>
  5828. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5829. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5830. 2-D case is simple. To initialize a form, pass the path to your .form file to </span><span
  5831. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::create()</span><span
  5832. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to be returned
  5833. a pointer to your form. Now, simply call </span><span style='font-size:12.0pt;
  5834. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::update()</span><span
  5835. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5836. during your game's </span><span style='font-size:12.0pt;font-family:"Courier New";
  5837. mso-bidi-font-family:"Times New Roman"'>update()</span><span style='font-size:
  5838. 12.0pt;mso-bidi-font-family:"Times New Roman"'> method, and call </span><span
  5839. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::draw()</span><span
  5840. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5841. during </span><span style='font-size:12.0pt;font-family:"Courier New";
  5842. mso-bidi-font-family:"Times New Roman"'>render()</span><span style='font-size:
  5843. 12.0pt;mso-bidi-font-family:"Times New Roman"'> . See the section below on
  5844. event handling to learn how to react to player input from within a form. <o:p></o:p></span></p>
  5845. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5846. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  5847. 3-D method of drawing forms is somewhat more advanced. For starters, you'll
  5848. need a scene with at least one node in it. Call </span><span style='font-size:
  5849. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Node::setForm()</span><span
  5850. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to attach the
  5851. form to the node. This call will also generate a rectangular model with the
  5852. dimensions of the form. Scale, rotate, and translate the node as necessary.
  5853. Now, calling </span><span style='font-size:12.0pt;font-family:"Courier New";
  5854. mso-bidi-font-family:"Times New Roman"'>Form::draw()</span><span
  5855. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form
  5856. will render the contents of the form into a framebuffer and use that
  5857. framebuffer to texture the form's model.<o:p></o:p></span></p>
  5858. <h3>Event handling within forms</h3>
  5859. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Controls
  5860. will trigger events when the user interacts with them. You can handle these
  5861. events by setting listeners on individual controls. <o:p></o:p></span></p>
  5862. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5863. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>All
  5864. controls can trigger the mouse / touch events </span><span style='font-size:
  5865. 12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PRESS</span><span
  5866. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , </span><span
  5867. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>RELEASE</span><span
  5868. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , and </span><span
  5869. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>CLICK</span><span
  5870. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> . Sliders,
  5871. check boxes, and radio buttons can also trigger a </span><span
  5872. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>VALUE_CHANGED</span><span
  5873. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event so that
  5874. you can update your game as a slider is moving or when a radio button becomes
  5875. unselected. Finally, text boxes trigger a </span><span style='font-size:12.0pt;
  5876. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>TEXT_CHANGED</span><span
  5877. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event any time
  5878. a character is entered or deleted (but not when the cursor is moved within the
  5879. text box). Use </span><span style='font-size:12.0pt;font-family:"Courier New";
  5880. mso-bidi-font-family:"Times New Roman"'>TEXT_CHANGED</span><span
  5881. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> along with the
  5882. </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5883. "Times New Roman"'>getLastKeyPress()</span><span style='font-size:12.0pt;
  5884. mso-bidi-font-family:"Times New Roman"'> method on a </span><span
  5885. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>TextBox</span><span
  5886. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to do things
  5887. like accepting a player name when the return key is pressed. <o:p></o:p></span></p>
  5888. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5889. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>To
  5890. retrieve a control from your form, call </span><span style='font-size:12.0pt;
  5891. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Form::getControl()</span><span
  5892. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with the ID of
  5893. the control you're looking for. Cast this to the correct control pointer type
  5894. and then call </span><span style='font-size:12.0pt;font-family:"Courier New";
  5895. mso-bidi-font-family:"Times New Roman"'>addListener()</span><span
  5896. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on it. This
  5897. method takes an object that implements </span><span style='font-size:12.0pt;
  5898. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Control::Listener</span><span
  5899. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> as well as an
  5900. int representing the events to listen for. You can bitwise-OR together event
  5901. types. For example, the following code listens for </span><span
  5902. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>PRESS</span><span
  5903. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
  5904. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>RELEASE</span><span
  5905. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> events on a
  5906. button: <o:p></o:p></span></p>
  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. <pre style='background:white'><span style='font-family:Consolas;color:black'>Button*&nbsp;myButton&nbsp;=&nbsp;</span><span
  5909. style='font-family:Consolas;color:blue'>static_cast</span><span
  5910. style='font-family:Consolas;color:black'>&lt;Button*&gt;(myForm-&gt;getControl(</span><span
  5911. style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5912. style='font-family:Consolas;color:black'>);<o:p></o:p></span></pre><pre
  5913. style='background:white'><span style='font-family:Consolas;color:black'>myButton-&gt;addListener(</span><span
  5914. style='font-family:Consolas;color:blue'>this</span><span style='font-family:
  5915. Consolas;color:black'>,&nbsp;Control::Listener::PRESS&nbsp;|&nbsp;Control::Listener::RELEASE);</span><span
  5916. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> </span><span
  5917. style='font-family:Consolas;color:black'><o:p></o:p></span></pre>
  5918. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5919. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>In
  5920. this example, the game itself implements </span><span style='font-size:12.0pt;
  5921. font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>Control::Listener</span><span
  5922. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This is easy
  5923. to do as there's only one method a listener needs to implement, which should
  5924. look something like this:<o:p></o:p></span></p>
  5925. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5926. <pre style='background:white'><span style='font-family:Consolas;color:blue'>void</span><span
  5927. style='font-family:Consolas;color:black'>&nbsp;MyGame::controlEvent(Control*&nbsp;control,&nbsp;EventType&nbsp;evt)<o:p></o:p></span></pre><pre
  5928. style='background:white'><span style='font-family:Consolas;color:black'>{<o:p></o:p></span></pre><pre
  5929. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5930. style='font-family:Consolas;color:blue'>switch</span><span style='font-family:
  5931. Consolas;color:black'>(evt)<o:p></o:p></span></pre><pre style='background:white'><span
  5932. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;{<o:p></o:p></span></pre><pre
  5933. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5934. style='font-family:Consolas;color:blue'>case</span><span style='font-family:
  5935. Consolas;color:black'>&nbsp;Control::Listener::PRESS:<o:p></o:p></span></pre><pre
  5936. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5937. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  5938. color:black'>&nbsp;(strcmp(</span><span style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5939. style='font-family:Consolas;color:black'>,&nbsp;control-&gt;getID())&nbsp;==&nbsp;0)<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;{<o:p></o:p></span></pre><pre
  5941. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5942. style='font-family:Consolas;color:green'>//&nbsp;Do&nbsp;something.</span><span
  5943. style='font-family:Consolas;color:black'><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;</span><span
  5946. style='font-family:Consolas;color:blue'>break</span><span style='font-family:
  5947. Consolas;color:black'>;<o:p></o:p></span></pre><pre style='background:white'><span
  5948. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5949. style='font-family:Consolas;color:blue'>case</span><span style='font-family:
  5950. Consolas;color:black'>&nbsp;Control::Listener::RELEASE:<o:p></o:p></span></pre><pre
  5951. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5952. style='font-family:Consolas;color:blue'>if</span><span style='font-family:Consolas;
  5953. color:black'>&nbsp;(strcmp(</span><span style='font-family:Consolas;color:#A31515'>&quot;myButton&quot;</span><span
  5954. style='font-family:Consolas;color:black'>,&nbsp;control-&gt;getID())&nbsp;==&nbsp;0)<o:p></o:p></span></pre><pre
  5955. 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
  5956. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5957. style='font-family:Consolas;color:green'>//&nbsp;Do&nbsp;something&nbsp;else.</span><span
  5958. style='font-family:Consolas;color:black'><o:p></o:p></span></pre><pre
  5959. 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
  5960. style='background:white'><span style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  5961. style='font-family:Consolas;color:blue'>break</span><span style='font-family:
  5962. Consolas;color:black'>;<o:p></o:p></span></pre><pre style='background:white'><span
  5963. style='font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></pre><pre
  5964. style='background:white'><span style='font-family:Consolas;color:black'>}<o:p></o:p></span></pre>
  5965. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  5966. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Note
  5967. that </span><span style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:
  5968. "Times New Roman"'>getControl()</span><span style='font-size:12.0pt;mso-bidi-font-family:
  5969. "Times New Roman"'> is also a method on Container. If multiple controls share
  5970. the same ID but are children of separate containers, the parent container can
  5971. be retrieved first and then </span><span style='font-size:12.0pt;font-family:
  5972. "Courier New";mso-bidi-font-family:"Times New Roman"'>Container::getControl()</span><span
  5973. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> called to
  5974. retrieve the specific control needed.<a name=d20e3a1310></a><o:p></o:p></span></p>
  5975. <h2><a name="_Toc330902783">Scripting</a></h2>
  5976. <p class=MsoNormal>The gameplay framework has a full set of Lua script bindings
  5977. allowing users to write the majority of their game completely from scripts.
  5978. Also included is an open-source tool that can be used to generate bindings for
  5979. user-defined classes (including classes that depend on features and technology
  5980. of the gameplay framework itself).</p>
  5981. <h3>Writing Lua scripts</h3>
  5982. <p class=MsoNormal>To write Lua scripts, you can use any text editor or IDE. If
  5983. Visual Studio is your editor of choice, it is recommended that you install the
  5984. Lua Language Support extension, which adds syntax highlighting to the editor
  5985. (available here: <a href="http://vslua.codeplex.com/">http://vslua.codeplex.com/</a>).</p>
  5986. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5987. <p class=MsoNormal>To generate your own bindings, you will need to download and
  5988. install Doxygen (available here: <a href="http://www.doxygen.org/"><span
  5989. style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>http://www.doxygen.org</span></a>).</p>
  5990. <h3>Lua Basics</h3>
  5991. <p class=MsoNormal>For an introductory look at scripting with Lua, including
  5992. basic language features, visit <a href="http://www.lua.org/pil/">http://www.lua.org/pil/</a>.
  5993. Note that the documentation available at this link is aimed at Lua 5.0 and will
  5994. contain some outdated APIs. However, the basic usage of the language remains
  5995. the same.</p>
  5996. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  5997. <p class=MsoNormal>There are two conventions that gameplay uses within its Lua
  5998. script bindings. First, in order to create a new object, the user calls the <b
  5999. style='mso-bidi-font-weight:normal'>new</b> function on the class and passes
  6000. the correct arguments for the corresponding C++ constructor. e.g.<span
  6001. style='font-size:10.0pt;font-family:Consolas;color:blue'> </span></p>
  6002. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6003. color:blue'><o:p>&nbsp;</o:p></span></p>
  6004. <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;
  6005. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6006. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Create&nbsp;a&nbsp;new&nbsp;Vector2&nbsp;object.</span><span
  6007. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6008. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6009. color:blue'>local</span><span style='font-size:10.0pt;font-family:Consolas;
  6010. color:black'>&nbsp;v&nbsp;=&nbsp;Vector2</span><span style='font-size:10.0pt;
  6011. font-family:Consolas;color:teal'>.</span><span style='font-size:10.0pt;
  6012. font-family:Consolas;color:black'>new(1.0,&nbsp;3.7)<o:p></o:p></span></p>
  6013. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6014. color:black'><o:p>&nbsp;</o:p></span></p>
  6015. <p class=MsoNormal>Second, to access or set a public member variable of a
  6016. class, the user simply calls a Lua function with the same name, passing no
  6017. arguments to access the variable or passing one argument in order to set the
  6018. variable. e.g.<span style='font-size:10.0pt;font-family:Consolas;color:blue'> <o:p></o:p></span></p>
  6019. <p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;
  6020. color:blue'><o:p>&nbsp;</o:p></span></p>
  6021. <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;
  6022. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6023. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Print&nbsp;out&nbsp;the&nbsp;x&nbsp;member&nbsp;variable.</span><span
  6024. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6025. <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;
  6026. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6027. style='font-size:10.0pt;font-family:Consolas;color:black'>print(v</span><span
  6028. style='font-size:10.0pt;font-family:Consolas;color:teal'>:</span><span
  6029. style='font-size:10.0pt;font-family:Consolas;color:black'>x())<o:p></o:p></span></p>
  6030. <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;
  6031. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6032. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6033. <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;
  6034. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6035. 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
  6036. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6037. <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;
  6038. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6039. style='font-size:10.0pt;font-family:Consolas;color:black'>v</span><span
  6040. style='font-size:10.0pt;font-family:Consolas;color:teal'>:</span><span
  6041. style='font-size:10.0pt;font-family:Consolas;color:black'>y(4.2)<o:p></o:p></span></p>
  6042. <h3>Game <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
  6043. "Malgun Gothic"'>–</span> Script Event Callbacks</h3>
  6044. <p class=MsoNormal>In order to write a game primarily using Lua scripts, one
  6045. must register for the main game events (initialize, update, render, and
  6046. finalize), along with the desired input event handlers. To do this, you must
  6047. edit the <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
  6048. "Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>scripts<span
  6049. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6050. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> section of the game<span
  6051. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6052. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s game.config file. If
  6053. the user has a Lua script with functions for the four major events and
  6054. functions that handle the key and touch input, the <span style='font-family:
  6055. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:
  6056. TradeGothicNextLTPro-Lt'>‘</span>scripts<span style='font-family:"Times New Roman","serif";
  6057. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>
  6058. section would look something like this:</p>
  6059. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6060. <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;
  6061. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6062. style='font-size:10.0pt;font-family:Consolas;color:black'>scripts<o:p></o:p></span></p>
  6063. <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;
  6064. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6065. style='font-size:10.0pt;font-family:Consolas;color:black'>{<o:p></o:p></span></p>
  6066. <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;
  6067. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6068. 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>
  6069. <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;
  6070. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6071. 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>
  6072. <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;
  6073. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6074. 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>
  6075. <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;
  6076. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6077. 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>
  6078. <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;
  6079. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6080. 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>
  6081. <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;
  6082. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6083. 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>
  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:black'>}<o:p></o:p></span></p>
  6087. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6088. <p class=MsoNormal>Then on the C++ side, as usual, you must derive a class from
  6089. Game and create a static instance on the stack. However, in the case of a
  6090. script-based game, the .h file can simply contain the class definition with all
  6091. empty implementations while the .cpp file would contain the static instance.
  6092. For example,</p>
  6093. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6094. <p class=MsoNormal>MyScriptGame.h</p>
  6095. <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;
  6096. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6097. style='font-size:10.0pt;font-family:Consolas;color:blue'><o:p>&nbsp;</o:p></span></p>
  6098. <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;
  6099. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6100. style='font-size:10.0pt;font-family:Consolas;color:blue'>class</span><span
  6101. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;MyScriptGame:&nbsp;</span><span
  6102. style='font-size:10.0pt;font-family:Consolas;color:blue'>public</span><span
  6103. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Game<o:p></o:p></span></p>
  6104. <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;
  6105. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6106. style='font-size:10.0pt;font-family:Consolas;color:black'>{ <o:p></o:p></span></p>
  6107. <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;
  6108. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6109. style='font-size:10.0pt;font-family:Consolas;color:blue'>protected</span><span
  6110. style='font-size:10.0pt;font-family:Consolas;color:black'>:<o:p></o:p></span></p>
  6111. <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;
  6112. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6113. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6114. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6115. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;initialize() {};<o:p></o:p></span></p>
  6116. <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;
  6117. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6118. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6119. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6120. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;finalize() {};<o:p></o:p></span></p>
  6121. <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;
  6122. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6123. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6124. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6125. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;update(</span><span
  6126. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  6127. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime) {};<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'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6131. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6132. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;render(</span><span
  6133. style='font-size:10.0pt;font-family:Consolas;color:blue'>float</span><span
  6134. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;elapsedTime) {};<o:p></o:p></span></p>
  6135. <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;
  6136. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6137. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6138. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6139. <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;
  6140. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6141. style='font-size:10.0pt;font-family:Consolas;color:black'>};<o:p></o:p></span></p>
  6142. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6143. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6144. <p class=MsoNormal>MyScriptGame.cpp</p>
  6145. <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;
  6146. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6147. style='font-size:10.0pt;font-family:Consolas;color:blue'><o:p>&nbsp;</o:p></span></p>
  6148. <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;
  6149. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6150. style='font-size:10.0pt;font-family:Consolas;color:blue'>#include</span><span
  6151. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6152. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;MyScriptGame.h&quot;</span><span
  6153. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6154. <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;
  6155. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6156. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6157. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6158. <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;
  6159. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6160. style='font-size:10.0pt;font-family:Consolas;color:green'>//&nbsp;Declare&nbsp;our&nbsp;game&nbsp;instance</span><span
  6161. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6162. <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;
  6163. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6164. style='font-size:10.0pt;font-family:Consolas;color:black'>MyScriptGame&nbsp;game;<o:p></o:p></span></p>
  6165. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6166. <p class=MsoNormal>The sample does not require any other C++ implementation. For
  6167. a complete sample game using the techniques described above, see sample05-lua
  6168. as one-to-one mapping of sample00-mesh with a box instead of a duck. It also
  6169. has some additional scripting code showcasing AIAgent and AIStates.</p>
  6170. <h3>Extending ScriptTarget </h3>
  6171. <p class=MsoNormal>To add scriptable events to your own class, you simply
  6172. derive from the class <span style='font-size:12.0pt;font-family:"Courier New";
  6173. mso-bidi-font-family:"Times New Roman"'>gameplay::ScriptTarget </span>and add
  6174. the required function calls. First, to define the scriptable events that are
  6175. supported for the class, we call addScriptEvent with the name of the event and,
  6176. optionally (depending on if the callback takes arguments or not), the parameter
  6177. string for a valid script callback function for that event (the parameter
  6178. string follows the format of the parameter string argument to <span
  6179. style='font-size:12.0pt;font-family:"Courier New";mso-bidi-font-family:"Times New Roman"'>ScriptController::executeFunction</span>).
  6180. For example, to add a <span style='font-family:"Times New Roman","serif";
  6181. mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>notify<span
  6182. style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
  6183. mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> event that passes an
  6184. integer to the callback, we would do the following:</p>
  6185. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6186. <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;
  6187. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6188. style='font-size:10.0pt;font-family:Consolas;color:black'>addScriptEvent(</span><span
  6189. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;notify&quot;</span><span
  6190. style='font-size:10.0pt;font-family:Consolas;color:black'>,&nbsp;</span><span
  6191. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;i&quot;</span><span
  6192. style='font-size:10.0pt;font-family:Consolas;color:black'>);<o:p></o:p></span></p>
  6193. <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;
  6194. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6195. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></p>
  6196. <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;
  6197. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'>The
  6198. supported format identifiers for passed parameters are as follows:</p>
  6199. <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;
  6200. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><o:p>&nbsp;</o:p></p>
  6201. <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
  6202. style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
  6203. <thead>
  6204. <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  6205. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6206. padding:0in 5.4pt 0in 5.4pt'>
  6207. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6208. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  6209. mso-bidi-font-weight:normal'><span style='mso-spacerun:yes'> </span>Format <o:p></o:p></span></p>
  6210. </td>
  6211. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6212. padding:0in 5.4pt 0in 5.4pt'>
  6213. <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6214. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
  6215. mso-bidi-font-weight:normal'>Parameter Type (result)<o:p></o:p></span></p>
  6216. </td>
  6217. </tr>
  6218. </thead>
  6219. <tr style='mso-yfti-irow:1'>
  6220. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6221. 0in 5.4pt 0in 5.4pt'>
  6222. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6223. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6224. style='mso-spacerun:yes'> </span></span>c, h, i, l<span style='mso-bidi-font-size:
  6225. 12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
  6226. </td>
  6227. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6228. 0in 5.4pt 0in 5.4pt'>
  6229. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'>Signed
  6230. Integer (int)<span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
  6231. "Times New Roman"'><o:p></o:p></span></p>
  6232. </td>
  6233. </tr>
  6234. <tr style='mso-yfti-irow:2'>
  6235. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6236. padding:0in 5.4pt 0in 5.4pt'>
  6237. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6238. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6239. style='mso-spacerun:yes'> </span>u<o:p></o:p></span></p>
  6240. </td>
  6241. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6242. padding:0in 5.4pt 0in 5.4pt'>
  6243. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6244. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Unsigned
  6245. Integer (unsigned int)<o:p></o:p></span></p>
  6246. </td>
  6247. </tr>
  6248. <tr style='mso-yfti-irow:3'>
  6249. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6250. 0in 5.4pt 0in 5.4pt'>
  6251. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6252. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6253. style='mso-spacerun:yes'> </span>b<o:p></o:p></span></p>
  6254. </td>
  6255. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6256. 0in 5.4pt 0in 5.4pt'>
  6257. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6258. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Boolean
  6259. (bool) <o:p></o:p></span></p>
  6260. </td>
  6261. </tr>
  6262. <tr style='mso-yfti-irow:4'>
  6263. <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
  6264. padding:0in 5.4pt 0in 5.4pt'>
  6265. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6266. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6267. style='mso-spacerun:yes'> </span>f, d<o:p></o:p></span></p>
  6268. </td>
  6269. <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
  6270. padding:0in 5.4pt 0in 5.4pt'>
  6271. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6272. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Floating
  6273. Point (double)<o:p></o:p></span></p>
  6274. </td>
  6275. </tr>
  6276. <tr style='mso-yfti-irow:5'>
  6277. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6278. 0in 5.4pt 0in 5.4pt'>
  6279. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6280. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6281. style='mso-spacerun:yes'> </span>s<o:p></o:p></span></p>
  6282. </td>
  6283. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6284. 0in 5.4pt 0in 5.4pt'>
  6285. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6286. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>String
  6287. (char*)<o:p></o:p></span></p>
  6288. </td>
  6289. </tr>
  6290. <tr style='mso-yfti-irow:6'>
  6291. <td width=241 valign=top style='width:180.9pt;background:#F2F2F2;mso-background-themecolor:
  6292. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6293. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6294. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>p<o:p></o:p></span></p>
  6295. </td>
  6296. <td width=396 valign=top style='width:296.9pt;background:#F2F2F2;mso-background-themecolor:
  6297. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6298. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6299. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Pointer
  6300. (void*)<o:p></o:p></span></p>
  6301. </td>
  6302. </tr>
  6303. <tr style='mso-yfti-irow:7'>
  6304. <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
  6305. 0in 5.4pt 0in 5.4pt'>
  6306. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6307. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6308. style='mso-spacerun:yes'> </span>[x]<o:p></o:p></span></p>
  6309. </td>
  6310. <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
  6311. 0in 5.4pt 0in 5.4pt'>
  6312. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6313. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Enum
  6314. Value [x]<o:p></o:p></span></p>
  6315. </td>
  6316. </tr>
  6317. <tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
  6318. <td width=241 valign=top style='width:180.9pt;background:#F2F2F2;mso-background-themecolor:
  6319. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6320. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6321. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>&lt;x&gt;<o:p></o:p></span></p>
  6322. </td>
  6323. <td width=396 valign=top style='width:296.9pt;background:#F2F2F2;mso-background-themecolor:
  6324. background1;mso-background-themeshade:242;padding:0in 5.4pt 0in 5.4pt'>
  6325. <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6326. style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Object
  6327. References/Pointers &lt;x&gt;<o:p></o:p></span></p>
  6328. </td>
  6329. </tr>
  6330. </table>
  6331. <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;
  6332. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><o:p>&nbsp;</o:p></p>
  6333. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6334. <p class=MsoNormal>This step is usually done either in the constructor of the
  6335. class or in a class initialization function. Next, the class will want to fire
  6336. the event so that the script callback functions are actually called. This code
  6337. is placed wherever it makes sense (depending on what the actual event is) and
  6338. looks like so:</p>
  6339. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6340. <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;
  6341. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6342. style='font-size:10.0pt;font-family:Consolas;color:black'>fireScriptEvent&lt;</span><span
  6343. style='font-size:10.0pt;font-family:Consolas;color:blue'>void</span><span
  6344. style='font-size:10.0pt;font-family:Consolas;color:black'>&gt;(</span><span
  6345. style='font-size:10.0pt;font-family:Consolas;color:#A31515'>&quot;notify&quot;</span><span
  6346. style='font-size:10.0pt;font-family:Consolas;color:black'>,&nbsp;14);<o:p></o:p></span></p>
  6347. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6348. <p class=MsoNormal>The template argument corresponds to the return type of the
  6349. callback function, the first parameter is the name of the event to fire, and
  6350. the remaining arguments are the parameters to the actual callback function: in
  6351. this case, the integer that is passed to the notify callback. To see a full
  6352. example of a class that derives from <span style='font-size:12.0pt;font-family:
  6353. "Courier New";mso-bidi-font-family:"Times New Roman"'>gameplay::ScriptTarget </span>within
  6354. gameplay, take a look at the <span style='font-size:12.0pt;font-family:"Courier New";
  6355. mso-bidi-font-family:"Times New Roman"'>gameplay::Control </span>class.</p>
  6356. <h3>Tips using Lua with gameplay</h3>
  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]>To get printf-like functionality using gameplay
  6361. and Lua, use the Lua print() function (note: gameplay overrides the default Lua
  6362. print() function).</p>
  6363. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6364. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6365. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6366. </span></span></span><![endif]>To do integer like comparisons or casts on a
  6367. number variable x in Lua, use math.floor(x).</p>
  6368. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6369. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6370. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6371. </span></span></span><![endif]>Make sure all your member function calls use ':'
  6372. instead of '.'</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]>Remember to access all gameplay variables,
  6377. including static and global variables with '()' on the end of the name.</p>
  6378. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6379. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6380. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6381. </span></span></span><![endif]>Primitive data type arrays and object arrays are
  6382. both inefficient when created in Lua and passed to C++, so try to minimize
  6383. this.</p>
  6384. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6385. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6386. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6387. </span></span></span><![endif]>There is no reasonable way to unload a Lua
  6388. script; thus, the recommended usage pattern is to put each script's variables
  6389. and functions inside a table (see Lua technical note 7 at <a
  6390. href="http://www.lua.org/notes/ltn007.html">http://www.lua.org/notes/ltn007.html</a>).
  6391. i.e.</p>
  6392. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6393. 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;
  6394. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6395. style='font-size:10.0pt;font-family:Consolas;color:green'><o:p>&nbsp;</o:p></span></p>
  6396. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6397. 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;
  6398. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6399. 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
  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:blue'>if</span><span
  6405. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module&nbsp;</span><span
  6406. style='font-size:10.0pt;font-family:Consolas;color:blue'>then</span><span
  6407. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6408. style='font-size:10.0pt;font-family:Consolas;color:blue'>return</span><span
  6409. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;</span><span
  6410. style='font-size:10.0pt;font-family:Consolas;color:blue'>end</span><span
  6411. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6412. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6413. 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;
  6414. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6415. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6416. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6417. 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;
  6418. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6419. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Declare&nbsp;the&nbsp;module&nbsp;Module.</span><span
  6420. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6421. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6422. 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;
  6423. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6424. style='font-size:10.0pt;font-family:Consolas;color:black'>Module&nbsp;=&nbsp;{}<o:p></o:p></span></p>
  6425. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6426. 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;
  6427. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6428. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<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:green'>--&nbsp;Declare&nbsp;a&nbsp;variable&nbsp;within&nbsp;the&nbsp;module.</span><span
  6433. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6434. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6435. 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;
  6436. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6437. style='font-size:10.0pt;font-family:Consolas;color:black'>Module</span><span
  6438. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6439. style='font-size:10.0pt;font-family:Consolas;color:black'>a&nbsp;=&nbsp;47<o:p></o:p></span></p>
  6440. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6441. 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;
  6442. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6443. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
  6444. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6445. 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;
  6446. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6447. style='font-size:10.0pt;font-family:Consolas;color:green'>--&nbsp;Declare&nbsp;a&nbsp;function&nbsp;within&nbsp;the&nbsp;module.</span><span
  6448. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6449. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6450. 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;
  6451. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6452. style='font-size:10.0pt;font-family:Consolas;color:blue'>function</span><span
  6453. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module</span><span
  6454. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6455. style='font-size:10.0pt;font-family:Consolas;color:black'>myFunc()<o:p></o:p></span></p>
  6456. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6457. 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;
  6458. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6459. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  6460. style='font-size:10.0pt;font-family:Consolas;color:blue'>return</span><span
  6461. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;Module</span><span
  6462. style='font-size:10.0pt;font-family:Consolas;color:teal'>.</span><span
  6463. style='font-size:10.0pt;font-family:Consolas;color:black'>a&nbsp;+&nbsp;17<o:p></o:p></span></p>
  6464. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6465. 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;
  6466. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6467. style='font-size:10.0pt;font-family:Consolas;color:blue'>end</span><span
  6468. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6469. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6470. 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;
  6471. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6472. style='font-size:10.0pt;font-family:Consolas;color:black'><span
  6473. style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
  6474. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6475. 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;
  6476. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6477. 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
  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'>function</span><span
  6483. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;cleanupModule()<o:p></o:p></span></p>
  6484. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6485. 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;
  6486. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6487. style='font-size:10.0pt;font-family:Consolas;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;Module&nbsp;=&nbsp;</span><span
  6488. style='font-size:10.0pt;font-family:Consolas;color:blue'>nil</span><span
  6489. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p></o:p></span></p>
  6490. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6491. 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;
  6492. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6493. style='font-size:10.0pt;font-family:Consolas;color:blue'>end<o:p></o:p></span></p>
  6494. <p class=MsoNormal style='margin-left:.5in;mso-pagination:widow-orphan;
  6495. 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;
  6496. background:white;mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other'><span
  6497. style='font-size:10.0pt;font-family:Consolas;color:black'><o:p>&nbsp;</o:p></span></p>
  6498. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6499. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6500. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6501. </span></span></span><![endif]>Note: you can't pass an enumeration value to a
  6502. function that doesn't explicitly take an enumeration type (i.e.
  6503. Control::setTextColor, which takes an unsigned char). In these cases, you need
  6504. to look up the enumeration values and pass them directly.</p>
  6505. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6506. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6507. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6508. </span></span></span><![endif]>On any function that returns a pointer that is
  6509. owned by the user calling that function (i.e. a create() function), add
  6510. @script{create} as the last line of its Doxygen comments.</p>
  6511. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6512. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6513. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6514. </span></span></span><![endif]>On any function, variable, class, struct, enum,
  6515. etc. that should not be accessible from Lua (except for things that are static
  6516. to a .cpp file, which are already ignored), add @script{ignore} to its Doxygen
  6517. comments.</p>
  6518. <p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l4 level3 lfo9'><![if !supportLists]><span
  6519. style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
  6520. Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>&nbsp;
  6521. </span></span></span><![endif]>On any functions, variables, classes, structs,
  6522. enums, etc. that are local to a .cpp file, declare them as static 1) because it
  6523. is good practice and 2) so that Lua does not generate bindings for them.</p>
  6524. <h3>Generating user defined script bindings</h3>
  6525. <p class=MsoNormal>The following instructions detail how to generate Lua script
  6526. bindings for your own project. Note: this requires doxygen to be installed.</p>
  6527. <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  6528. <ol style='margin-top:0in' start=1 type=1>
  6529. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Copy the
  6530. gameplay-luagen.doxyfile file to your project's root directory (and rename
  6531. it). Then, either manually using a text editor or using the Doxywizard
  6532. tool, go to the INPUT section and ensure both that the path to gameplay's
  6533. 'src' folder is valid (relative to where the doxyfile is) and that your
  6534. own source folder is added.</li>
  6535. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Run doxygen using the
  6536. above doxyfile from your project's root directory. For example, run <span
  6537. style='font-family:Consolas'>doxygen my-project.doxyfile</span> from the
  6538. command line or run Doxygen using the Doxywizard application.</li>
  6539. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Create a 'lua' folder
  6540. inside your source folder.</li>
  6541. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Run gameplay-luagen using
  6542. the following command (make sure you have a trailing '/' for the output
  6543. directory (second) parameter):</li>
  6544. </ol>
  6545. <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  6546. <p class=MsoNormal style='margin-left:.5in'><span style='font-family:Consolas'>path-to-gameplay/bin/your-platform/gameplay-luagen.exe
  6547. ./xml path-to-your-source/lua/ &lt;your-project-name-here&gt;<o:p></o:p></span></p>
  6548. <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  6549. <p class=MsoNormal style='margin-left:.5in'>Note: the parameter
  6550. &lt;your-project-name-here&gt; is used as the namespace that the bindings are
  6551. generated within. This can be anything you want <b style='mso-bidi-font-weight:
  6552. normal'>except</b> for &quot;gameplay&quot;.</p>
  6553. <ol style='margin-top:0in' start=5 type=1>
  6554. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Ensure that your project
  6555. has &quot;path-to-gameplay/gameplay/src/lua&quot; in its include path.</li>
  6556. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Add the generated Lua
  6557. script bindings (.h/.cpp) files from path-to-your-source/lua to your
  6558. project.</li>
  6559. <li class=MsoNormal style='mso-list:l2 level1 lfo7'>Compile and run - now you
  6560. can use your own classes from Lua scripts.</li>
  6561. </ol>
  6562. <h2><a name="_Toc330902784">License</a></h2>
  6563. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  6564. project is open sourced under the Apache 2.0 license.<o:p></o:p></span></p>
  6565. <h3>Disclaimer</h3>
  6566. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>THE
  6567. SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS
  6568. OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  6569. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  6570. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  6571. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  6572. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  6573. SOFTWARE.<o:p></o:p></span></p>
  6574. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6575. <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
  6576. mso-ascii-font-family:"Malgun Gothic"'>©</span><span style='font-size:12.0pt;
  6577. mso-bidi-font-family:"Times New Roman"'>2012 Research In Motion Limited. All
  6578. rights reserved. BlackBerry</span><span style='font-size:12.0pt;font-family:
  6579. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6580. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, RIM</span><span
  6581. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6582. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6583. "Times New Roman"'>, Research In Motion</span><span style='font-size:12.0pt;
  6584. font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6585. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and related
  6586. trademarks, names, and logos are the property of Research In Motion Limited and
  6587. are registered and/or used in the U.S. and countries around the world.<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=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
  6590. is a trademark of Google Inc. Apache is a trademark of The Apache Software
  6591. Foundation. Apple, iPhone, iPad, Mac OS, TrueType, and Xcode are trademarks of
  6592. Apple Inc. Bluetooth is a trademark of Bluetooth SIG. COLLADA and OpenGL are
  6593. trademarks of Khronos Group Inc. Eclipse is a trademark of Eclipse Foundation,
  6594. Inc. FBX and Maya are trademarks of Autodesk, Inc. GitHub is a trademark of
  6595. Github, LLC. Linux is a trademark of Linus Torvalds. Microsoft, Windows, and
  6596. Visual Studio are trademarks of Microsoft Corporation. QNX and Momentics are
  6597. trademarks of QNX Software Systems Limited. All other trademarks are the
  6598. property of their respective owners.<o:p></o:p></span></p>
  6599. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6600. <p class=link><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>This
  6601. documentation including all documentation incorporated by reference herein such
  6602. as documentation provided or made available at <u><span style='color:blue'><a
  6603. href="http://www.blackberry.com/go/docs">www.blackberry.com/go/docs</a></span></u>is
  6604. provided or made accessible &quot;AS IS&quot; and &quot;AS AVAILABLE&quot; and
  6605. without condition, endorsement, guarantee, representation, or warranty of any
  6606. kind by Research In Motion Limited and its affiliated companies
  6607. (&quot;RIM&quot;) and RIM assumes no responsibility for any typographical,
  6608. technical, or other inaccuracies, errors, or omissions in this documentation.
  6609. In order to protect RIM proprietary and confidential information and/or trade
  6610. secrets, this documentation may describe some aspects of RIM technology in
  6611. generalized terms. RIM reserves the right to periodically change information
  6612. that is contained in this documentation; however, RIM makes no commitment to
  6613. provide any such changes, updates, enhancements, or other additions to this
  6614. documentation to you in a timely manner or at all.<o:p></o:p></span></p>
  6615. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6616. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>This
  6617. documentation might contain references to third-party sources of information,
  6618. hardware or software, products or services including components and content
  6619. such as content protected by copyright and/or third-party web sites
  6620. (collectively the &quot;Third Party Products and Services&quot;). RIM does not
  6621. control, and is not responsible for, any Third Party Products and Services
  6622. including, without limitation the content, accuracy, copyright compliance,
  6623. compatibility, performance, trustworthiness, legality, decency, links, or any
  6624. other aspect of Third Party Products and Services. The inclusion of a reference
  6625. to Third Party Products and Services in this documentation does not imply
  6626. endorsement by RIM of the Third Party Products and Services or the third party
  6627. in any way.<o:p></o:p></span></p>
  6628. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6629. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>EXCEPT
  6630. TO THE EXTENT SPECIFICALLY PROHIBITED BY APPLICABLE LAW IN YOUR JURISDICTION,
  6631. ALL CONDITIONS, ENDORSEMENTS, GUARANTEES, REPRESENTATIONS, OR WARRANTIES OF ANY
  6632. KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY CONDITIONS,
  6633. ENDORSEMENTS, GUARANTEES, REPRESENTATIONS OR WARRANTIES OF DURABILITY, FITNESS
  6634. FOR A PARTICULAR PURPOSE OR USE, MERCHANTABILITY, MERCHANTABLE QUALITY,
  6635. NON-INFRINGEMENT, SATISFACTORY QUALITY, OR TITLE, OR ARISING FROM A STATUTE OR
  6636. CUSTOM OR A COURSE OF DEALING OR USAGE OF TRADE, OR RELATED TO THE
  6637. DOCUMENTATION OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE,
  6638. HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN,
  6639. ARE HEREBY EXCLUDED. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE OR
  6640. PROVINCE. SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF
  6641. IMPLIED WARRANTIES AND CONDITIONS. TO THE EXTENT PERMITTED BY LAW, ANY IMPLIED
  6642. WARRANTIES OR CONDITIONS RELATING TO THE DOCUMENTATION TO THE EXTENT THEY
  6643. CANNOT BE EXCLUDED AS SET OUT ABOVE, BUT CAN BE LIMITED, ARE HEREBY LIMITED TO
  6644. NINETY (90) DAYS FROM THE DATE YOU FIRST ACQUIRED THE DOCUMENTATION OR THE ITEM
  6645. THAT IS THE SUBJECT OF THE CLAIM.<o:p></o:p></span></p>
  6646. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6647. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>TO
  6648. THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, IN NO
  6649. EVENT SHALL RIM BE LIABLE FOR ANY TYPE OF DAMAGES RELATED TO THIS DOCUMENTATION
  6650. OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE, HARDWARE,
  6651. SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN INCLUDING
  6652. WITHOUT LIMITATION ANY OF THE FOLLOWING DAMAGES: DIRECT, CONSEQUENTIAL,
  6653. EXEMPLARY, INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, OR AGGRAVATED DAMAGES,
  6654. DAMAGES FOR LOSS OF PROFITS OR REVENUES, FAILURE TO REALIZE ANY EXPECTED
  6655. SAVINGS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, LOSS OF BUSINESS
  6656. OPPORTUNITY, OR CORRUPTION OR LOSS OF DATA, FAILURES TO TRANSMIT OR RECEIVE ANY
  6657. DATA, PROBLEMS ASSOCIATED WITH ANY APPLICATIONS USED IN CONJUNCTION WITH RIM
  6658. PRODUCTS OR SERVICES, DOWNTIME COSTS, LOSS OF THE USE OF RIM PRODUCTS OR
  6659. SERVICES OR ANY PORTION THEREOF OR OF ANY AIRTIME SERVICES, COST OF SUBSTITUTE
  6660. GOODS, COSTS OF COVER, FACILITIES OR SERVICES, COST OF CAPITAL, OR OTHER
  6661. SIMILAR PECUNIARY LOSSES, WHETHER OR NOT SUCH DAMAGES WERE FORESEEN OR
  6662. UNFORESEEN, AND EVEN IF RIM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  6663. DAMAGES.<o:p></o:p></span></p>
  6664. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6665. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>TO
  6666. THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, RIM SHALL
  6667. HAVE NO OTHER OBLIGATION, DUTY, OR LIABILITY WHATSOEVER IN CONTRACT, TORT, OR
  6668. OTHERWISE TO YOU INCLUDING ANY LIABILITY FOR NEGLIGENCE OR STRICT LIABILITY.<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"'>THE
  6671. LIMITATIONS, EXCLUSIONS, AND DISCLAIMERS HEREIN SHALL APPLY: (A) IRRESPECTIVE
  6672. OF THE NATURE OF THE CAUSE OF ACTION, DEMAND, OR ACTION BY YOU INCLUDING BUT
  6673. NOT LIMITED TO BREACH OF CONTRACT, NEGLIGENCE, TORT, STRICT LIABILITY OR ANY
  6674. OTHER LEGAL THEORY AND SHALL SURVIVE A FUNDAMENTAL BREACH OR BREACHES OR THE
  6675. FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR OF ANY REMEDY CONTAINED
  6676. HEREIN; AND (B) TO RIM AND ITS AFFILIATED COMPANIES, THEIR SUCCESSORS, ASSIGNS,
  6677. AGENTS, SUPPLIERS (INCLUDING AIRTIME SERVICE PROVIDERS), AUTHORIZED RIM
  6678. DISTRIBUTORS (ALSO INCLUDING AIRTIME SERVICE PROVIDERS) AND THEIR RESPECTIVE
  6679. DIRECTORS, EMPLOYEES, AND INDEPENDENT CONTRACTORS.<o:p></o:p></span></p>
  6680. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6681. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><span
  6682. style='mso-spacerun:yes'> </span>IN ADDITION TO THE LIMITATIONS AND EXCLUSIONS
  6683. SET OUT ABOVE, IN NO EVENT SHALL ANY DIRECTOR, EMPLOYEE, AGENT, DISTRIBUTOR,
  6684. SUPPLIER, INDEPENDENT CONTRACTOR OF RIM OR ANY AFFILIATES OF RIM HAVE ANY
  6685. LIABILITY ARISING FROM OR RELATED TO THE DOCUMENTATION.<o:p></o:p></span></p>
  6686. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6687. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Prior
  6688. to subscribing for, installing, or using any Third Party Products and Services,
  6689. it is your responsibility to ensure that your airtime service provider has
  6690. agreed to support all of their features. Some airtime service providers might
  6691. not offer Internet browsing functionality with a subscription to the BlackBerry</span><span
  6692. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6693. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6694. "Times New Roman"'> Internet Service. Check with your service provider for
  6695. availability, roaming arrangements, service plans and features. Installation or
  6696. use of Third Party Products and Services with RIM's products and services may
  6697. require one or more patent, trademark, copyright, or other licenses in order to
  6698. avoid infringement or violation of third party rights. You are solely responsible
  6699. for determining whether to use Third Party Products and Services and if any
  6700. third party licenses are required to do so. If required you are responsible for
  6701. acquiring them. You should not install or use Third Party Products and Services
  6702. until all necessary licenses have been acquired. Any Third Party Products and
  6703. Services that are provided with RIM's products and services are provided as a
  6704. convenience to you and are provided &quot;AS IS&quot; with no express or
  6705. implied conditions, endorsements, guarantees, representations, or warranties of
  6706. any kind by RIM and RIM assumes no liability whatsoever, in relation thereto.
  6707. Your use of Third Party Products and Services shall be governed by and subject
  6708. to you agreeing to the terms of separate licenses and other agreements applicable
  6709. thereto with third parties, except to the extent expressly covered by a license
  6710. or other agreement with RIM.<o:p></o:p></span></p>
  6711. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6712. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Certain
  6713. features outlined in this documentation require a minimum version of BlackBerry</span><span
  6714. style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:
  6715. "Malgun Gothic"'>®</span><span style='font-size:12.0pt;mso-bidi-font-family:
  6716. "Times New Roman"'> Enterprise Server, BlackBerry</span><span style='font-size:
  6717. 12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6718. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> Desktop
  6719. Software, and/or BlackBerry</span><span style='font-size:12.0pt;font-family:
  6720. "Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
  6721. style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> Device
  6722. Software.<o:p></o:p></span></p>
  6723. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6724. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>The
  6725. terms of use of any RIM product or service are set out in a separate license or
  6726. other agreement with RIM applicable thereto. NOTHING IN THIS DOCUMENTATION IS
  6727. INTENDED TO SUPERSEDE ANY EXPRESS WRITTEN AGREEMENTS OR WARRANTIES PROVIDED BY
  6728. RIM FOR PORTIONS OF ANY RIM PRODUCT OR SERVICE OTHER THAN THIS DOCUMENTATION.<o:p></o:p></span></p>
  6729. <p class=MsoNormal><a name=d20e152a1310></a><a name=d20e156a1310></a><a
  6730. name=d20e159a1310></a><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6731. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</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. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Research
  6734. In Motion Limited<o:p></o:p></span></p>
  6735. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>295
  6736. Phillip Street<o:p></o:p></span></p>
  6737. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Waterloo,
  6738. ON N2L 3W8<o:p></o:p></span></p>
  6739. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Canada<o:p></o:p></span></p>
  6740. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6741. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Published
  6742. in Canada<o:p></o:p></span></p>
  6743. <p class=MsoNormal><span style='font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p>&nbsp;</o:p></span></p>
  6744. </div>
  6745. </body>
  6746. </html>