|
|
@@ -1,8651 +0,0 @@
|
|
|
-<html xmlns:v="urn:schemas-microsoft-com:vml"
|
|
|
-xmlns:o="urn:schemas-microsoft-com:office:office"
|
|
|
-xmlns:w="urn:schemas-microsoft-com:office:word"
|
|
|
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
|
|
-xmlns="http://www.w3.org/TR/REC-html40">
|
|
|
-
|
|
|
-<head>
|
|
|
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
|
|
-<meta name=ProgId content=Word.Document>
|
|
|
-<meta name=Generator content="Microsoft Word 12">
|
|
|
-<meta name=Originator content="Microsoft Word 12">
|
|
|
-<link rel=File-List href="development-guide_files/filelist.xml">
|
|
|
-<link rel=Edit-Time-Data href="development-guide_files/editdata.mso">
|
|
|
-<!--[if !mso]>
|
|
|
-<style>
|
|
|
-v\:* {behavior:url(#default#VML);}
|
|
|
-o\:* {behavior:url(#default#VML);}
|
|
|
-w\:* {behavior:url(#default#VML);}
|
|
|
-.shape {behavior:url(#default#VML);}
|
|
|
-</style>
|
|
|
-<![endif]--><!--[if gte mso 9]><xml>
|
|
|
- <o:DocumentProperties>
|
|
|
- <o:Author>user</o:Author>
|
|
|
- <o:LastAuthor>Windows User</o:LastAuthor>
|
|
|
- <o:Revision>2</o:Revision>
|
|
|
- <o:TotalTime>1580</o:TotalTime>
|
|
|
- <o:LastPrinted>2012-10-09T21:18:00Z</o:LastPrinted>
|
|
|
- <o:Created>2012-10-10T16:18:00Z</o:Created>
|
|
|
- <o:LastSaved>2012-10-10T16:18:00Z</o:LastSaved>
|
|
|
- <o:Pages>87</o:Pages>
|
|
|
- <o:Words>15983</o:Words>
|
|
|
- <o:Characters>91105</o:Characters>
|
|
|
- <o:Company>Research In Motion Limited</o:Company>
|
|
|
- <o:Lines>759</o:Lines>
|
|
|
- <o:Paragraphs>213</o:Paragraphs>
|
|
|
- <o:CharactersWithSpaces>106875</o:CharactersWithSpaces>
|
|
|
- <o:Version>12.00</o:Version>
|
|
|
- </o:DocumentProperties>
|
|
|
-</xml><![endif]-->
|
|
|
-<link rel=dataStoreItem href="development-guide_files/item0001.xml"
|
|
|
-target="development-guide_files/props0002.xml">
|
|
|
-<link rel=themeData href="development-guide_files/themedata.thmx">
|
|
|
-<link rel=colorSchemeMapping
|
|
|
-href="development-guide_files/colorschememapping.xml">
|
|
|
-<!--[if gte mso 9]><xml>
|
|
|
- <w:WordDocument>
|
|
|
- <w:TrackMoves>false</w:TrackMoves>
|
|
|
- <w:TrackFormatting/>
|
|
|
- <w:PunctuationKerning/>
|
|
|
- <w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
|
|
|
- <w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
|
|
|
- <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
|
|
|
- <w:DisplayVerticalDrawingGridEvery>3</w:DisplayVerticalDrawingGridEvery>
|
|
|
- <w:UseMarginsForDrawingGridOrigin/>
|
|
|
- <w:ValidateAgainstSchemas>false</w:ValidateAgainstSchemas>
|
|
|
- <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
|
|
|
- <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
|
|
|
- <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
|
|
|
- <w:DoNotUnderlineInvalidXML/>
|
|
|
- <w:DoNotPromoteQF/>
|
|
|
- <w:LidThemeOther>EN-US</w:LidThemeOther>
|
|
|
- <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
|
|
|
- <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
|
|
|
- <w:DoNotShadeFormData/>
|
|
|
- <w:Compatibility>
|
|
|
- <w:SpaceForUL/>
|
|
|
- <w:BalanceSingleByteDoubleByteWidth/>
|
|
|
- <w:DoNotLeaveBackslashAlone/>
|
|
|
- <w:ULTrailSpace/>
|
|
|
- <w:DoNotExpandShiftReturn/>
|
|
|
- <w:FootnoteLayoutLikeWW8/>
|
|
|
- <w:ShapeLayoutLikeWW8/>
|
|
|
- <w:AlignTablesRowByRow/>
|
|
|
- <w:ForgetLastTabAlignment/>
|
|
|
- <w:AdjustLineHeightInTable/>
|
|
|
- <w:LayoutRawTableWidth/>
|
|
|
- <w:LayoutTableRowsApart/>
|
|
|
- <w:UseWord97LineBreakingRules/>
|
|
|
- <w:SelectEntireFieldWithStartOrEnd/>
|
|
|
- <w:UseWord2002TableStyleRules/>
|
|
|
- <w:DontUseIndentAsNumberingTabStop/>
|
|
|
- <w:FELineBreak11/>
|
|
|
- <w:WW11IndentRules/>
|
|
|
- <w:DontAutofitConstrainedTables/>
|
|
|
- <w:AutofitLikeWW11/>
|
|
|
- <w:UnderlineTabInNumList/>
|
|
|
- <w:HangulWidthLikeWW11/>
|
|
|
- <w:UseNormalStyleForList/>
|
|
|
- </w:Compatibility>
|
|
|
- <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
|
|
|
- <m:mathPr>
|
|
|
- <m:mathFont m:val="Cambria Math"/>
|
|
|
- <m:brkBin m:val="before"/>
|
|
|
- <m:brkBinSub m:val="--"/>
|
|
|
- <m:smallFrac m:val="off"/>
|
|
|
- <m:dispDef/>
|
|
|
- <m:lMargin m:val="0"/>
|
|
|
- <m:rMargin m:val="0"/>
|
|
|
- <m:defJc m:val="centerGroup"/>
|
|
|
- <m:wrapIndent m:val="1440"/>
|
|
|
- <m:intLim m:val="subSup"/>
|
|
|
- <m:naryLim m:val="undOvr"/>
|
|
|
- </m:mathPr></w:WordDocument>
|
|
|
-</xml><![endif]--><!--[if gte mso 9]><xml>
|
|
|
- <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
|
|
|
- DefSemiHidden="true" DefQFormat="false" DefPriority="99"
|
|
|
- LatentStyleCount="267">
|
|
|
- <w:LsdException Locked="false" Priority="0" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 1"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 2"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 3"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 4"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 5"/>
|
|
|
- <w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"
|
|
|
- QFormat="true" Name="heading 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
|
|
|
- <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
|
|
|
- <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
|
|
|
- <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
|
|
|
- <w:LsdException Locked="false" Priority="10" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Title"/>
|
|
|
- <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
|
|
|
- <w:LsdException Locked="false" Priority="11" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
|
|
|
- <w:LsdException Locked="false" Priority="22" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
|
|
|
- <w:LsdException Locked="false" Priority="20" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
|
|
|
- <w:LsdException Locked="false" Priority="59" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Table Grid"/>
|
|
|
- <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
|
|
|
- <w:LsdException Locked="false" Priority="1" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
|
|
|
- <w:LsdException Locked="false" Priority="34" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
|
|
|
- <w:LsdException Locked="false" Priority="29" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
|
|
|
- <w:LsdException Locked="false" Priority="30" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
|
|
|
- <w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light List Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Dark List Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
|
|
|
- <w:LsdException Locked="false" Priority="19" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
|
|
|
- <w:LsdException Locked="false" Priority="21" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
|
|
|
- <w:LsdException Locked="false" Priority="31" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
|
|
|
- <w:LsdException Locked="false" Priority="32" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
|
|
|
- <w:LsdException Locked="false" Priority="33" SemiHidden="false"
|
|
|
- UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
|
|
|
- <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
|
|
|
- <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
|
|
|
- </w:LatentStyles>
|
|
|
-</xml><![endif]-->
|
|
|
-<style>
|
|
|
-<!--
|
|
|
- /* Font Definitions */
|
|
|
- @font-face
|
|
|
- {font-family:Wingdings;
|
|
|
- panose-1:5 0 0 0 0 0 0 0 0 0;
|
|
|
- mso-font-charset:2;
|
|
|
- mso-generic-font-family:auto;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:0 268435456 0 0 -2147483648 0;}
|
|
|
-@font-face
|
|
|
- {font-family:"MS Gothic";
|
|
|
- panose-1:2 11 6 9 7 2 5 8 2 4;
|
|
|
- mso-font-alt:"?l?r ?S?V?b?N";
|
|
|
- mso-font-charset:128;
|
|
|
- mso-generic-font-family:modern;
|
|
|
- mso-font-pitch:fixed;
|
|
|
- mso-font-signature:-536870145 1791491579 18 0 131231 0;}
|
|
|
-@font-face
|
|
|
- {font-family:"Cambria Math";
|
|
|
- panose-1:2 4 5 3 5 4 6 3 2 4;
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:roman;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-536870145 1107305727 0 0 415 0;}
|
|
|
-@font-face
|
|
|
- {font-family:Cambria;
|
|
|
- panose-1:2 4 5 3 5 4 6 3 2 4;
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:roman;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-536870145 1073743103 0 0 415 0;}
|
|
|
-@font-face
|
|
|
- {font-family:Calibri;
|
|
|
- panose-1:2 15 5 2 2 2 4 3 2 4;
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:swiss;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-520092929 1073786111 9 0 415 0;}
|
|
|
-@font-face
|
|
|
- {font-family:Tahoma;
|
|
|
- panose-1:2 11 6 4 3 5 4 4 2 4;
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:swiss;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
|
|
|
-@font-face
|
|
|
- {font-family:"Malgun Gothic";
|
|
|
- panose-1:2 11 5 3 2 0 0 2 0 4;
|
|
|
- mso-font-alt:"Arial Unicode MS";
|
|
|
- mso-font-charset:129;
|
|
|
- mso-generic-font-family:swiss;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-1879047505 165117179 18 0 524289 0;}
|
|
|
-@font-face
|
|
|
- {font-family:"\@Malgun Gothic";
|
|
|
- panose-1:2 11 5 3 2 0 0 2 0 4;
|
|
|
- mso-font-charset:129;
|
|
|
- mso-generic-font-family:swiss;
|
|
|
- mso-font-pitch:variable;
|
|
|
- mso-font-signature:-1879047505 165117179 18 0 524289 0;}
|
|
|
-@font-face
|
|
|
- {font-family:TradeGothicNextLTPro-Lt;
|
|
|
- panose-1:0 0 0 0 0 0 0 0 0 0;
|
|
|
- mso-font-alt:"Malgun Gothic";
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:roman;
|
|
|
- mso-font-format:other;
|
|
|
- mso-font-pitch:auto;
|
|
|
- mso-font-signature:3 0 0 0 1 0;}
|
|
|
-@font-face
|
|
|
- {font-family:"\@MS Gothic";
|
|
|
- panose-1:2 11 6 9 7 2 5 8 2 4;
|
|
|
- mso-font-charset:128;
|
|
|
- mso-generic-font-family:modern;
|
|
|
- mso-font-pitch:fixed;
|
|
|
- mso-font-signature:-536870145 1791491579 18 0 131231 0;}
|
|
|
-@font-face
|
|
|
- {font-family:Consolas;
|
|
|
- panose-1:2 11 6 9 2 2 4 3 2 4;
|
|
|
- mso-font-charset:0;
|
|
|
- mso-generic-font-family:modern;
|
|
|
- mso-font-pitch:fixed;
|
|
|
- mso-font-signature:-520092929 1073806591 9 0 415 0;}
|
|
|
- /* Style Definitions */
|
|
|
- p.MsoNormal, li.MsoNormal, div.MsoNormal
|
|
|
- {mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-parent:"";
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
|
|
|
-h1
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Heading 1 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:1;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:24.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
- mso-font-kerning:0pt;}
|
|
|
-h2
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-parent:Subtitle;
|
|
|
- mso-style-link:"Heading 2 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:12.0pt;
|
|
|
- margin-left:0in;
|
|
|
- page-break-before:always;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:2;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:36.0pt;
|
|
|
- mso-bidi-font-size:12.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#009ACD;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-h3
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Heading 3 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:24.0pt;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:6.0pt;
|
|
|
- margin-left:0in;
|
|
|
- mso-pagination:none;
|
|
|
- page-break-after:avoid;
|
|
|
- mso-outline-level:3;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:18.0pt;
|
|
|
- mso-bidi-font-size:12.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-h4
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Heading 4 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:4;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:13.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-h5
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Heading 5 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:5;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:9.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
|
|
|
-h6
|
|
|
- {mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Heading 6 Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:6;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:8.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
|
|
|
-p.MsoToc1, li.MsoToc1, div.MsoToc1
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
- color:#009ACD;}
|
|
|
-p.MsoToc2, li.MsoToc2, div.MsoToc2
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:0in;
|
|
|
- margin-left:11.0pt;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
- color:#009ACD;}
|
|
|
-p.MsoToc3, li.MsoToc3, div.MsoToc3
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:0in;
|
|
|
- margin-left:22.0pt;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;}
|
|
|
-p.MsoToc4, li.MsoToc4, div.MsoToc4
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:33.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoToc5, li.MsoToc5, div.MsoToc5
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:44.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoToc6, li.MsoToc6, div.MsoToc6
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:55.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoToc7, li.MsoToc7, div.MsoToc7
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:66.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoToc8, li.MsoToc8, div.MsoToc8
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:77.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoToc9, li.MsoToc9, div.MsoToc9
|
|
|
- {mso-style-update:auto;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:5.0pt;
|
|
|
- margin-left:88.0pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:12.0pt;
|
|
|
- mso-bidi-font-size:11.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.MsoTitle, li.MsoTitle, div.MsoTitle
|
|
|
- {mso-style-priority:10;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Title Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:12.0pt;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:3.0pt;
|
|
|
- margin-left:0in;
|
|
|
- text-align:center;
|
|
|
- mso-pagination:none;
|
|
|
- mso-outline-level:1;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:16.0pt;
|
|
|
- font-family:"Cambria","serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- mso-font-kerning:14.0pt;
|
|
|
- font-weight:bold;}
|
|
|
-p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
|
|
|
- {mso-style-priority:11;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-link:"Subtitle Char";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:0in;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:3.0pt;
|
|
|
- margin-left:0in;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:36.0pt;
|
|
|
- mso-bidi-font-size:12.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#009ACD;
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-a:link, span.MsoHyperlink
|
|
|
- {mso-style-priority:99;
|
|
|
- font-family:"Times New Roman","serif";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:blue;
|
|
|
- text-decoration:underline;
|
|
|
- text-underline:single;}
|
|
|
-a:visited, span.MsoHyperlinkFollowed
|
|
|
- {mso-style-noshow:yes;
|
|
|
- mso-style-priority:99;
|
|
|
- font-family:"Times New Roman","serif";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:blue;
|
|
|
- text-decoration:underline;
|
|
|
- text-underline:single;}
|
|
|
-p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
|
|
|
- {mso-style-noshow:yes;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-link:"Document Map Char";
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:8.0pt;
|
|
|
- font-family:"Tahoma","sans-serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";}
|
|
|
-p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
|
|
|
- {mso-style-noshow:yes;
|
|
|
- mso-style-priority:39;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-parent:"Heading 1";
|
|
|
- mso-style-next:Normal;
|
|
|
- margin-top:24.0pt;
|
|
|
- margin-right:0in;
|
|
|
- margin-bottom:0in;
|
|
|
- margin-left:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- line-height:115%;
|
|
|
- mso-pagination:widow-orphan lines-together;
|
|
|
- page-break-after:avoid;
|
|
|
- font-size:14.0pt;
|
|
|
- font-family:"Cambria","serif";
|
|
|
- mso-fareast-font-family:"MS Gothic";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#365F91;
|
|
|
- mso-fareast-language:JA;
|
|
|
- font-weight:bold;}
|
|
|
-span.Heading1Char
|
|
|
- {mso-style-name:"Heading 1 Char";
|
|
|
- mso-style-priority:9;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 1";
|
|
|
- mso-ansi-font-size:16.0pt;
|
|
|
- font-family:"Cambria","serif";
|
|
|
- mso-ascii-font-family:Cambria;
|
|
|
- mso-hansi-font-family:Cambria;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- mso-font-kerning:16.0pt;
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.Heading2Char
|
|
|
- {mso-style-name:"Heading 2 Char";
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 2";
|
|
|
- mso-ansi-font-size:12.0pt;
|
|
|
- font-family:"Arial","sans-serif";
|
|
|
- mso-ascii-font-family:Arial;
|
|
|
- mso-hansi-font-family:Arial;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#009ACD;
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.Heading3Char
|
|
|
- {mso-style-name:"Heading 3 Char";
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 3";
|
|
|
- mso-ansi-font-size:12.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-ascii-font-family:"Malgun Gothic";
|
|
|
- mso-fareast-font-family:"Malgun Gothic";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.Heading4Char
|
|
|
- {mso-style-name:"Heading 4 Char";
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 4";
|
|
|
- mso-ansi-font-size:13.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-ascii-font-family:"Malgun Gothic";
|
|
|
- mso-fareast-font-family:"Malgun Gothic";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.Heading5Char
|
|
|
- {mso-style-name:"Heading 5 Char";
|
|
|
- mso-style-noshow:yes;
|
|
|
- mso-style-priority:9;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 5";
|
|
|
- mso-ansi-font-size:13.0pt;
|
|
|
- font-family:"Times New Roman","serif";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;
|
|
|
- font-style:italic;
|
|
|
- mso-bidi-font-style:normal;}
|
|
|
-span.Heading6Char
|
|
|
- {mso-style-name:"Heading 6 Char";
|
|
|
- mso-style-noshow:yes;
|
|
|
- mso-style-priority:9;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Heading 6";
|
|
|
- font-family:"Times New Roman","serif";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-p.tableheader, li.tableheader, div.tableheader
|
|
|
- {mso-style-name:"table header";
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-parent:"";
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:11.0pt;
|
|
|
- font-family:"TradeGothicNextLTPro-Lt","serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
- font-weight:bold;}
|
|
|
-p.tabletitle, li.tabletitle, div.tabletitle
|
|
|
- {mso-style-name:"table title";
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-parent:"";
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:11.0pt;
|
|
|
- font-family:"TradeGothicNextLTPro-Lt","serif";
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
- font-weight:bold;}
|
|
|
-span.SubtitleChar
|
|
|
- {mso-style-name:"Subtitle Char";
|
|
|
- mso-style-priority:11;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:Subtitle;
|
|
|
- mso-ansi-font-size:12.0pt;
|
|
|
- mso-bidi-font-size:12.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-ascii-font-family:"Malgun Gothic";
|
|
|
- mso-fareast-font-family:"Malgun Gothic";
|
|
|
- mso-hansi-font-family:"Times New Roman";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#009ACD;
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.TitleChar
|
|
|
- {mso-style-name:"Title Char";
|
|
|
- mso-style-priority:10;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:Title;
|
|
|
- mso-ansi-font-size:16.0pt;
|
|
|
- font-family:"Cambria","serif";
|
|
|
- mso-ascii-font-family:Cambria;
|
|
|
- mso-hansi-font-family:Cambria;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- mso-font-kerning:14.0pt;
|
|
|
- font-weight:bold;
|
|
|
- mso-bidi-font-weight:normal;}
|
|
|
-span.DocumentMapChar
|
|
|
- {mso-style-name:"Document Map Char";
|
|
|
- mso-style-noshow:yes;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-locked:yes;
|
|
|
- mso-style-link:"Document Map";
|
|
|
- mso-ansi-font-size:8.0pt;
|
|
|
- font-family:"Tahoma","sans-serif";
|
|
|
- mso-ascii-font-family:Tahoma;
|
|
|
- mso-hansi-font-family:Tahoma;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-p.Code, li.Code, div.Code
|
|
|
- {mso-style-name:Code;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- margin:0in;
|
|
|
- margin-bottom:.0001pt;
|
|
|
- mso-pagination:none;
|
|
|
- mso-layout-grid-align:none;
|
|
|
- text-autospace:none;
|
|
|
- font-size:10.0pt;
|
|
|
- font-family:Consolas;
|
|
|
- mso-fareast-font-family:"Malgun Gothic";}
|
|
|
-span.inlinecode
|
|
|
- {mso-style-name:"inline code";
|
|
|
- mso-style-priority:1;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- font-family:"Courier New";
|
|
|
- mso-ascii-font-family:"Courier New";
|
|
|
- mso-hansi-font-family:"Courier New";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-span.codekeyword
|
|
|
- {mso-style-name:"code keyword";
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-ansi-font-size:10.0pt;
|
|
|
- font-family:Consolas;
|
|
|
- mso-ascii-font-family:Consolas;
|
|
|
- mso-hansi-font-family:Consolas;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:blue;}
|
|
|
-span.codestring
|
|
|
- {mso-style-name:"code string";
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-ansi-font-size:10.0pt;
|
|
|
- font-family:Consolas;
|
|
|
- mso-ascii-font-family:Consolas;
|
|
|
- mso-hansi-font-family:Consolas;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:#A31515;}
|
|
|
-span.codecomment
|
|
|
- {mso-style-name:"code comment";
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-ansi-font-size:10.0pt;
|
|
|
- font-family:Consolas;
|
|
|
- mso-ascii-font-family:Consolas;
|
|
|
- mso-hansi-font-family:Consolas;
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- color:green;}
|
|
|
-span.shellcode
|
|
|
- {mso-style-name:"shell code";
|
|
|
- mso-style-unhide:no;
|
|
|
- font-family:"Courier New";
|
|
|
- mso-ascii-font-family:"Courier New";
|
|
|
- mso-hansi-font-family:"Courier New";
|
|
|
- mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:bold;}
|
|
|
-.MsoChpDefault
|
|
|
- {mso-style-type:export-only;
|
|
|
- mso-default-props:yes;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-ascii-font-family:Calibri;
|
|
|
- mso-hansi-font-family:Calibri;
|
|
|
- mso-bidi-font-family:Calibri;}
|
|
|
-.MsoPapDefault
|
|
|
- {mso-style-type:export-only;}
|
|
|
- /* Page Definitions */
|
|
|
- @page
|
|
|
- {mso-page-border-surround-header:no;
|
|
|
- mso-page-border-surround-footer:no;
|
|
|
- mso-footnote-separator:url("development-guide_files/header.html") fs;
|
|
|
- mso-footnote-continuation-separator:url("development-guide_files/header.html") fcs;
|
|
|
- mso-endnote-separator:url("development-guide_files/header.html") es;
|
|
|
- mso-endnote-continuation-separator:url("development-guide_files/header.html") ecs;}
|
|
|
-@page WordSection1
|
|
|
- {size:8.5in 11.0in;
|
|
|
- margin:1.0in 1.0in 1.0in 1.0in;
|
|
|
- mso-header-margin:.5in;
|
|
|
- mso-footer-margin:.5in;
|
|
|
- mso-header:url("development-guide_files/header.html") h1;
|
|
|
- mso-footer:url("development-guide_files/header.html") f1;
|
|
|
- mso-paper-source:0;}
|
|
|
-div.WordSection1
|
|
|
- {page:WordSection1;}
|
|
|
- /* List Definitions */
|
|
|
- @list l0
|
|
|
- {mso-list-id:-132;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-495171190;}
|
|
|
-@list l0:level1
|
|
|
- {mso-level-tab-stop:1.25in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:1.25in;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l1
|
|
|
- {mso-list-id:-131;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:1093436292;}
|
|
|
-@list l1:level1
|
|
|
- {mso-level-tab-stop:1.0in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:1.0in;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l2
|
|
|
- {mso-list-id:-130;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-804222260;}
|
|
|
-@list l2:level1
|
|
|
- {mso-level-tab-stop:.75in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:.75in;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l3
|
|
|
- {mso-list-id:-129;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-449394044;}
|
|
|
-@list l3:level1
|
|
|
- {mso-level-tab-stop:.5in;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l4
|
|
|
- {mso-list-id:-128;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-355328890;}
|
|
|
-@list l4:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:1.25in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:1.25in;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l5
|
|
|
- {mso-list-id:-127;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-1433485730;}
|
|
|
-@list l5:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:1.0in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:1.0in;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l6
|
|
|
- {mso-list-id:-126;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:1765052272;}
|
|
|
-@list l6:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:.75in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:.75in;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l7
|
|
|
- {mso-list-id:-125;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:1244312276;}
|
|
|
-@list l7:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:.5in;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l8
|
|
|
- {mso-list-id:-120;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-959252986;}
|
|
|
-@list l8:level1
|
|
|
- {mso-level-tab-stop:.25in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:.25in;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l9
|
|
|
- {mso-list-id:-119;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:-177030616;}
|
|
|
-@list l9:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:.25in;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:.25in;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l10
|
|
|
- {mso-list-id:-2;
|
|
|
- mso-list-type:simple;
|
|
|
- mso-list-template-ids:950202048;}
|
|
|
-@list l10:level1
|
|
|
- {mso-level-start-at:0;
|
|
|
- mso-level-number-format:bullet;
|
|
|
- mso-level-text:*;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:0in;
|
|
|
- text-indent:0in;}
|
|
|
-@list l11
|
|
|
- {mso-list-id:73743402;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-1171616076 -625997186 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l11:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l11:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l12
|
|
|
- {mso-list-id:170149374;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-578898402 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l12:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l12:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l12:level3
|
|
|
- {mso-level-number-format:roman-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:right;
|
|
|
- text-indent:-9.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l13
|
|
|
- {mso-list-id:239802344;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:815068686 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l13:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l14
|
|
|
- {mso-list-id:306319327;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:95300580 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l14:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l15
|
|
|
- {mso-list-id:434520757;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-1276236932 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l15:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l16
|
|
|
- {mso-list-id:501971723;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-620753964 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l16:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l16:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l16:level3
|
|
|
- {mso-level-number-format:roman-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:right;
|
|
|
- text-indent:-9.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l17
|
|
|
- {mso-list-id:577519682;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-681649560 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
|
|
|
-@list l17:level1
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l17:level2
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:o;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:"Courier New";
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l17:level3
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0A7;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Wingdings;}
|
|
|
-@list l17:level4
|
|
|
- {mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Symbol;}
|
|
|
-@list l18
|
|
|
- {mso-list-id:826633563;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:836428588 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l18:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l18:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l18:level3
|
|
|
- {mso-level-number-format:roman-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:right;
|
|
|
- text-indent:-9.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l19
|
|
|
- {mso-list-id:1145320803;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:903108876 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l19:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l19:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l19:level3
|
|
|
- {mso-level-number-format:roman-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:right;
|
|
|
- text-indent:-9.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l20
|
|
|
- {mso-list-id:1953508898;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:815068686 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l20:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l21
|
|
|
- {mso-list-id:2078243896;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-947758746 67698703 67698713 1271979950 775458348 67698713 67698715 67698703 67698713 67698715;}
|
|
|
-@list l21:level1
|
|
|
- {mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l21:level2
|
|
|
- {mso-level-number-format:alpha-lower;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- mso-bidi-font-family:"Times New Roman";}
|
|
|
-@list l21:level3
|
|
|
- {mso-level-start-at:7;
|
|
|
- mso-level-number-format:bullet;
|
|
|
- mso-level-text:-;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- margin-left:117.0pt;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:"Malgun Gothic","sans-serif";}
|
|
|
-@list l21:level4
|
|
|
- {mso-level-start-at:7;
|
|
|
- mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F06E;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Wingdings;
|
|
|
- mso-fareast-font-family:"Times New Roman";}
|
|
|
-@list l22
|
|
|
- {mso-list-id:2110463054;
|
|
|
- mso-list-type:hybrid;
|
|
|
- mso-list-template-ids:-554926380 -1058607584 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
|
|
|
-@list l22:level1
|
|
|
- {mso-level-start-at:5;
|
|
|
- mso-level-number-format:bullet;
|
|
|
- mso-level-text:\F06E;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- text-indent:-.25in;
|
|
|
- font-family:Wingdings;
|
|
|
- mso-fareast-font-family:"Times New Roman";
|
|
|
- color:blue;}
|
|
|
-@list l10:level1 lfo1
|
|
|
- {mso-level-numbering:continue;
|
|
|
- mso-level-text:\F0B7;
|
|
|
- mso-level-tab-stop:none;
|
|
|
- mso-level-number-position:left;
|
|
|
- mso-level-legacy:yes;
|
|
|
- mso-level-legacy-indent:9.0pt;
|
|
|
- mso-level-legacy-space:0in;
|
|
|
- margin-left:0in;
|
|
|
- text-indent:0in;
|
|
|
- mso-ansi-font-size:8.0pt;
|
|
|
- font-family:Symbol;}
|
|
|
-ol
|
|
|
- {margin-bottom:0in;}
|
|
|
-ul
|
|
|
- {margin-bottom:0in;}
|
|
|
--->
|
|
|
-</style>
|
|
|
-<!--[if gte mso 10]>
|
|
|
-<style>
|
|
|
- /* Style Definitions */
|
|
|
- table.MsoNormalTable
|
|
|
- {mso-style-name:"Table Normal";
|
|
|
- mso-tstyle-rowband-size:0;
|
|
|
- mso-tstyle-colband-size:0;
|
|
|
- mso-style-noshow:yes;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-style-parent:"";
|
|
|
- mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
|
|
- mso-para-margin:0in;
|
|
|
- mso-para-margin-bottom:.0001pt;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:10.0pt;
|
|
|
- font-family:"Calibri","sans-serif";}
|
|
|
-table.MsoTableGrid
|
|
|
- {mso-style-name:"Table Grid";
|
|
|
- mso-tstyle-rowband-size:0;
|
|
|
- mso-tstyle-colband-size:0;
|
|
|
- mso-style-priority:59;
|
|
|
- mso-style-unhide:no;
|
|
|
- border:solid windowtext 1.0pt;
|
|
|
- mso-border-alt:solid windowtext .5pt;
|
|
|
- mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
|
|
- mso-border-insideh:.5pt solid windowtext;
|
|
|
- mso-border-insidev:.5pt solid windowtext;
|
|
|
- mso-para-margin:0in;
|
|
|
- mso-para-margin-bottom:.0001pt;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:10.0pt;
|
|
|
- font-family:"Calibri","sans-serif";}
|
|
|
-table.MsoTableColorfulGridAccent6
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-tstyle-rowband-size:1;
|
|
|
- mso-tstyle-colband-size:1;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
|
|
- mso-border-insideh:.5pt solid white;
|
|
|
- mso-border-insideh-themecolor:background1;
|
|
|
- mso-tstyle-shading:#FDE9D9;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themetint:51;
|
|
|
- mso-para-margin:0in;
|
|
|
- mso-para-margin-bottom:.0001pt;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:10.0pt;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- color:black;
|
|
|
- mso-themecolor:text1;}
|
|
|
-table.MsoTableColorfulGridAccent6FirstRow
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:first-row;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#FBD4B4;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themetint:102;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;
|
|
|
- mso-ansi-font-weight:bold;
|
|
|
- mso-bidi-font-weight:bold;}
|
|
|
-table.MsoTableColorfulGridAccent6LastRow
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:last-row;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#FBD4B4;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themetint:102;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;
|
|
|
- color:black;
|
|
|
- mso-themecolor:text1;
|
|
|
- mso-ansi-font-weight:bold;
|
|
|
- mso-bidi-font-weight:bold;}
|
|
|
-table.MsoTableColorfulGridAccent6FirstCol
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:first-column;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#E36C0A;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themeshade:191;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;
|
|
|
- color:white;
|
|
|
- mso-themecolor:background1;}
|
|
|
-table.MsoTableColorfulGridAccent6LastCol
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:last-column;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#E36C0A;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themeshade:191;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;
|
|
|
- color:white;
|
|
|
- mso-themecolor:background1;}
|
|
|
-table.MsoTableColorfulGridAccent6OddColumn
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:odd-column;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#FBCAA2;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themetint:127;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;}
|
|
|
-table.MsoTableColorfulGridAccent6OddRow
|
|
|
- {mso-style-name:"Colorful Grid - Accent 6";
|
|
|
- mso-table-condition:odd-row;
|
|
|
- mso-style-priority:73;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-tstyle-shading:#FBCAA2;
|
|
|
- mso-tstyle-shading-themecolor:accent6;
|
|
|
- mso-tstyle-shading-themetint:127;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;}
|
|
|
-table.devguidetable
|
|
|
- {mso-style-name:"dev guide table";
|
|
|
- mso-tstyle-rowband-size:1;
|
|
|
- mso-tstyle-colband-size:0;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
|
|
- mso-para-margin:0in;
|
|
|
- mso-para-margin-bottom:.0001pt;
|
|
|
- mso-pagination:widow-orphan;
|
|
|
- font-size:11.0pt;
|
|
|
- mso-bidi-font-size:10.0pt;
|
|
|
- font-family:"Malgun Gothic","sans-serif";
|
|
|
- mso-hansi-font-family:"Times New Roman";}
|
|
|
-table.devguidetableOddRow
|
|
|
- {mso-style-name:"dev guide table";
|
|
|
- mso-table-condition:odd-row;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-tstyle-shading:#E6E6E6;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;}
|
|
|
-table.devguidetableEvenRow
|
|
|
- {mso-style-name:"dev guide table";
|
|
|
- mso-table-condition:even-row;
|
|
|
- mso-style-priority:99;
|
|
|
- mso-style-unhide:no;
|
|
|
- mso-style-qformat:yes;
|
|
|
- mso-tstyle-shading:whitesmoke;
|
|
|
- font-family:"Calibri","sans-serif";
|
|
|
- mso-bidi-font-family:Calibri;}
|
|
|
-</style>
|
|
|
-<![endif]--><!--[if gte mso 9]><xml>
|
|
|
- <o:shapedefaults v:ext="edit" spidmax="2050"/>
|
|
|
-</xml><![endif]--><!--[if gte mso 9]><xml>
|
|
|
- <o:shapelayout v:ext="edit">
|
|
|
- <o:idmap v:ext="edit" data="1"/>
|
|
|
- </o:shapelayout></xml><![endif]-->
|
|
|
-</head>
|
|
|
-
|
|
|
-<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in;text-justify-trim:
|
|
|
-punctuation'>
|
|
|
-
|
|
|
-<div class=WordSection1>
|
|
|
-
|
|
|
-<p class=MsoNormal></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-<center>
|
|
|
-<p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
|
|
|
- o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
|
|
|
- stroked="f">
|
|
|
- <v:stroke joinstyle="miter"/>
|
|
|
- <v:formulas>
|
|
|
- <v:f eqn="if lineDrawn pixelLineWidth 0"/>
|
|
|
- <v:f eqn="sum @0 1 0"/>
|
|
|
- <v:f eqn="sum 0 0 @1"/>
|
|
|
- <v:f eqn="prod @2 1 2"/>
|
|
|
- <v:f eqn="prod @3 21600 pixelWidth"/>
|
|
|
- <v:f eqn="prod @3 21600 pixelHeight"/>
|
|
|
- <v:f eqn="sum @0 0 1"/>
|
|
|
- <v:f eqn="prod @6 1 2"/>
|
|
|
- <v:f eqn="prod @7 21600 pixelWidth"/>
|
|
|
- <v:f eqn="sum @8 21600 0"/>
|
|
|
- <v:f eqn="prod @7 21600 pixelHeight"/>
|
|
|
- <v:f eqn="sum @10 21600 0"/>
|
|
|
- </v:formulas>
|
|
|
- <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
|
|
|
- <o:lock v:ext="edit" aspectratio="t"/>
|
|
|
-</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:460.5pt;
|
|
|
- height:91.5pt'>
|
|
|
- <v:imagedata src="development-guide_files/image001.png" o:title=""/>
|
|
|
-</v:shape><![endif]--><![if !vml]><img width=614 height=122
|
|
|
-src="development-guide_files/image001.png" v:shapes="_x0000_i1025"><![endif]></p>
|
|
|
-</center>
|
|
|
-
|
|
|
-<p class=MsoSubtitle align=center style='text-align:center'>Development Guide</p>
|
|
|
-
|
|
|
-<b style='mso-bidi-font-weight:normal'><span style='font-size:36.0pt;
|
|
|
-mso-bidi-font-size:12.0pt;font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:
|
|
|
-"Times New Roman";mso-bidi-font-family:"Times New Roman";color:#009ACD;
|
|
|
-mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br
|
|
|
-clear=all style='page-break-before:always'>
|
|
|
-</span></b>
|
|
|
-
|
|
|
-<p class=MsoSubtitle>Contents</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-hansi-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
|
|
|
-style='mso-spacerun:yes'> </span>TOC \o "1-2" \h \z \u <span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574572">Overview<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>.. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574572 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>3</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700320000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574573">Compiling framework<span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574573 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>5</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700330000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574574">Assets and authoring<span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574574 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>13</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700340000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574575">Game<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574575 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>16</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700350000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574576">Input and sensors<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574576 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>19</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700360000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574577">Sprites and fonts<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574577 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>21</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700370000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574578">Scene and nodes<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574578 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>23</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700380000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574579">Model and mesh<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574579 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>29</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003700390000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574580">Lights<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574580 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>31</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800300000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574581">Materials and shaders<span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574581 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>34</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800310000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574582">Particle emitters<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574582 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>39</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800320000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574583">Physics<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574583 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>41</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800330000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574584">Animation<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574584 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>58</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800340000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574585">Audio<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574585 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>63</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800350000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574586">User Interface<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574586 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>65</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800360000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574587">Scripting<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574587 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>76</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800370000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
|
|
-class=MsoHyperlink><span style='font-family:"Malgun Gothic","sans-serif";
|
|
|
-mso-hansi-font-family:"Times New Roman";mso-no-proof:yes'><a
|
|
|
-href="#_Toc337574588">License<span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;
|
|
|
-color:#009ACD;display:none;mso-hide:screen;text-decoration:none;text-underline:
|
|
|
-none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-begin'></span></span><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'> PAGEREF _Toc337574588 \h </span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><span
|
|
|
-style='mso-element:field-separator'></span></span><![endif]--><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'>82</span><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt;color:#009ACD;display:none;
|
|
|
-mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
|
|
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F00630033003300370035003700340035003800380000000000</w:data>
|
|
|
-</xml><![endif]--></span><!--[if supportFields]><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt;color:#009ACD;display:none;mso-hide:screen;text-decoration:
|
|
|
-none;text-underline:none'><span style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
|
|
-style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:
|
|
|
-minor-latin;mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
|
|
|
-minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
|
|
-mso-bidi-theme-font:minor-bidi;color:windowtext;mso-no-proof:yes'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><!--[if supportFields]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-hansi-font-family:"Malgun Gothic";mso-bidi-font-family:"Times New Roman"'><span
|
|
|
-style='mso-element:field-end'></span></span><![endif]--><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d3e3a1310></a><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574572">Overview</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gameplay framework is an open-source, cross-platform
|
|
|
-gaming framework that is designed to make it easy to learn to write 3-D mobile
|
|
|
-and desktop games using native C++. In this guide, we cover a top-down approach
|
|
|
-to teaching you the gameplay library, tools, and all the major parts of the
|
|
|
-APIs that are included in the framework. This guide covers a set of the C++
|
|
|
-classes that you can use to write your games.</p>
|
|
|
-
|
|
|
-<h3>Design goals and considerations</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>In creating the gameplay framework, the goal was not only to
|
|
|
-focus on creating a high performance native C++ game framework, but also on a
|
|
|
-clean, simple, and elegant architecture. The framework uses a minimal set of
|
|
|
-cross-platform external dependencies and tries to take a minimalist approach to
|
|
|
-designing the classes. This approach allows you to learn from the classes in
|
|
|
-the library and extend the framework to build your own game engine or tools.
|
|
|
-The framework is a good starting block for learning how to write 3-D
|
|
|
-cross-platform mobile and desktop games, allowing you to spend more time
|
|
|
-designing your game.</p>
|
|
|
-
|
|
|
-<h3>Why write another game engine?</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>We actually hope it will be considered more of a gaming
|
|
|
-framework; however, in essence, it is really still just the core components of
|
|
|
-a game engine. There are several reasons why the gameplay framework was
|
|
|
-developed. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>First, most modern 3-D game engines, while sometimes free or
|
|
|
-cheap, are closed source. Additionally, they usually have licensing fees. The gameplay
|
|
|
-framework is free, open-source software under the Apache 2.0 license. We want
|
|
|
-more people to learn about the fact that cross-platform is a reality and
|
|
|
-building a good base lets you move forward to writing game titles.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Secondly, a game engine is not only about rendering. Yes, it<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s a huge part, but
|
|
|
-equally important are other aspects of game engines, such as audio, physics,
|
|
|
-animation, UI forms, particle emitters, scripting, and math. Searching on the
|
|
|
-web and trying to find information on how to fit these things into your game
|
|
|
-engine, or games, will likely scatter you across many different places, with
|
|
|
-the chance of gaps in your learning. This framework will hopefully bring it all
|
|
|
-together for you.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Lastly, mobile is hot! The gameplay framework will have a
|
|
|
-lot of emphasis on gaming on mobile devices. Today, mobile gaming is the
|
|
|
-largest growing sector of the game industry. Additionally, we still provide
|
|
|
-support for desktop platforms for both tooling and gaming. However, we think
|
|
|
-more focus should be on mobile gaming and learning how to write games that can
|
|
|
-easily target the cross-platform mobile sector. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574573">Compiling framework</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>To build the gameplay library, tools, and samples as well as
|
|
|
-write your own games, you will have to install and use the platform specific
|
|
|
-tools listed below. These are the supported development environments for each
|
|
|
-specific operating system as a target platform.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d4e13a1310></a><o:p> </o:p></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:20.45pt'>
|
|
|
- <td width=205 valign=top style='width:153.45pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Desktop OS<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.45pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=221 valign=top style='width:165.4pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1;height:20.45pt'>
|
|
|
- <td width=205 valign=top style='width:153.45pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Microsoft Windows 7<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.45pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Visual Studio 2010<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=221 valign=top style='width:165.4pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Windows 7<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes;height:20.45pt'>
|
|
|
- <td width=205 valign=top style='width:153.45pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Apple Mac OS X<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.45pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Xcode 4.3.2<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=221 valign=top style='width:165.4pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt;height:20.45pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Mac OS X<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
|
|
|
-text-autospace:ideograph-numeric ideograph-other'><a name=d4e85a1310></a><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Mobile OS<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Tool <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Development environment<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>BlackBerry PlayBook OS 2.0<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>BlackBerry Native SDK 2.0<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Windows 7, Mac OS X<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=210 valign=top style='width:157.75pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Android 2.3<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Android NDK 7<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=218 valign=top style='width:163.35pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Windows 7, Mac OS X<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes'>
|
|
|
- <td width=210 valign=top style='width:157.75pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>iOS 5.1<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=210 valign=top style='width:157.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Xcode 4.3.2<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=218 valign=top style='width:163.35pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Mac OS X<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<h3>Project repository</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Included in the project repository are the following notable
|
|
|
-folder and files: </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d4e186a1310></a><o:p> </o:p></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Folder/Files</span><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman";
|
|
|
- font-weight:normal'><o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>/bin<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Precompiled
|
|
|
- binary tools<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>/external-deps
|
|
|
- <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>External
|
|
|
- dependency libraries<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>/gameplay
|
|
|
- <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>The
|
|
|
- gameplay library<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:4'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>/gameplay-api
|
|
|
- <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>Doxygen
|
|
|
- API Reference<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:5'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>/gameplay-docs
|
|
|
- <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Documentation
|
|
|
- guides and tutorials<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:6'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>/gameplay-encoder
|
|
|
- <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>Game
|
|
|
- asset/content encoding tool<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:7'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>/gameplay-luagen<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Lua
|
|
|
- script bindings generator tool<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:8'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>/gameplay-template<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>Game
|
|
|
- samples template project files<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:9'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>/gameplay-samples<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Game
|
|
|
- samples<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:10'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>gameplay.xcworkspace<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>Xcode
|
|
|
- workspace<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:11'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>gameplay.sln<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:whitesmoke;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Microsoft
|
|
|
- Visual Studio solution<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
|
|
|
- <td width=234 valign=top style='width:175.5pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>gameplay-newproject.bat/.sh<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=403 valign=top style='width:4.2in;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:11.0pt'>New
|
|
|
- cross-platform project script<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<h3>Getting started on desktop</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The quickest way to get started using the gameplay framework
|
|
|
-and tools is to simply start working in one of the desktop environments. You
|
|
|
-could use Microsoft Visual Studio 2010 Express, Professional on a Windows 7
|
|
|
-operating system, or Xcode 4.3.2 on an Apple Mac OS X operating system. Then
|
|
|
-just open either the Microsoft Visual Studio solution or Xcode workspace, and
|
|
|
-build and run the projects. These solutions/workspaces are set up by default to
|
|
|
-build all the projects needed and to run the samples you have selected as
|
|
|
-active.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Voila! You now have one of several simple, interactive
|
|
|
-samples running on your desktop environment, which you can explore and become
|
|
|
-more familiar with.</p>
|
|
|
-
|
|
|
-<h3>Game samples</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gameplay-docs folder contains additional tutorial
|
|
|
-documentation for our gameplay-samples. These are intended to go into more
|
|
|
-detail for designing and coding games written using the framework. They all
|
|
|
-have a good starting point but have intentionally been left incomplete. This
|
|
|
-gives you the opportunity to change the samples, and complete them to make them
|
|
|
-more fun to interact and play with. They provide good building blocks and are a
|
|
|
-basis for you to explore various features in the framework. You can utilize
|
|
|
-code snippets from the samples to help speed up the development cycle in your
|
|
|
-own games.</p>
|
|
|
-
|
|
|
-<h3>API reference</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>We firmly believe in making a very intuitive set of APIs
|
|
|
-that are as straight-forward and as consistent as possible. However, all of the
|
|
|
-classes in the framework have been well documented with Doxygen formatting. The
|
|
|
-classes will be updated and improved iteratively throughout each release. This
|
|
|
-is to help you learn about what classes or sets of functions can be used and
|
|
|
-the recommended practices in using them.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>You should consider reading the latest versions of the API
|
|
|
-reference from the pre-generated HTML Doxygen API documentation in the
|
|
|
-gameplay-api folder. This will give you a deeper understanding of the C++
|
|
|
-gameplay framework.</p>
|
|
|
-
|
|
|
-<h3>Getting started on mobile</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Now that you are up and running on one of the desktop
|
|
|
-environments, we recommend you take this seriously and go mobile! In today<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s mobile game market,
|
|
|
-cross-platform development is a reality. It is quite simple and easy to use the
|
|
|
-gameplay framework to target a wider device audience. Start by downloading the
|
|
|
-native development kit for one of the various supported mobile operating system
|
|
|
-targets or set them all up.</p>
|
|
|
-
|
|
|
-<h3>Mobile setup instructions</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Listed below are the basic setup instructions for downloading
|
|
|
-and installing the supported mobile platform and development environments for
|
|
|
-gameplay.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>BlackBerry
|
|
|
-Native SDK 2.0/10 Beta (PlayBook tablets and BlackBerry 10 devices)</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l20 level1 lfo2'><a
|
|
|
- name=d4e432a1310></a><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman"'>Download and install the <a
|
|
|
- href="https://developer.blackberry.com/native/download/">BlackBerry Native
|
|
|
- SDK 2.0</a> (for PlayBook) or <a
|
|
|
- href="https://developer.blackberry.com/native/beta/download/">BlackBerry
|
|
|
- 10 Beta</a> (for BlackBerry 10 devices).<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l20 level1 lfo2'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the QNX Momentics IDE (Eclipse CDT based) and click <br>
|
|
|
- <b style='mso-bidi-font-weight:normal'>File > Import > Import
|
|
|
- Existing Projects</b>.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l20 level1 lfo2'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Import
|
|
|
- all the gameplay projects by selecting the repository project folder.<span
|
|
|
- style='mso-tab-count:2'> </span><o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l20 level1 lfo2'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Set
|
|
|
- the active configuration to one of the Device-XXX or Simulator-XXX
|
|
|
- profiles.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l20 level1 lfo2'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
|
|
|
- and run any of the game samples.<o:p></o:p></span></li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Apple Xcode
|
|
|
-4.3.2 (iPad tablets and iPhone devices)</span></b><a name=d4e478a1310></a><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><a
|
|
|
- href="https://developer.apple.com/xcode/">Download</a> and install Apple
|
|
|
- Xcode 4.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
|
|
|
- the <b style='mso-bidi-font-weight:normal'>gameplay.xc</b> workspace.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
|
|
|
- the active configuration to <b style='mso-bidi-font-weight:normal'>iOS
|
|
|
- Device</b>, <b style='mso-bidi-font-weight:normal'>iPhone Simulator,</b>
|
|
|
- or <b style='mso-bidi-font-weight:normal'>iPad Simulator</b>.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
|
|
|
- and run any of the game samples.<o:p></o:p></span></li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Android
|
|
|
-NDK 7 (Android tablets and devices)</span></b><a name=d4e517a1310></a><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='mso-list:l18 level1 lfo4'><a
|
|
|
- href="http://developer.android.com/sdk/ndk/index.html"><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Download</span></a>
|
|
|
- and install Android NDK 7, Android SDK, Apache Ant, and GNU Make for
|
|
|
- Cygwin.</li>
|
|
|
- <ol style='margin-top:0in' start=1 type=a>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
|
|
|
- the <a href="http://developer.android.com/sdk/index.html">Android SDK</a>.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
|
|
|
- sure <android-sdk-path>/tools and <android-sdk-path>/platform-tools
|
|
|
- are added to PATH.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Setup
|
|
|
- the <a href="http://developer.android.com/sdk/ndk/index.html">Android NDK</a>
|
|
|
- and <a href="http://developer.android.com/sdk/ndk/overview.html">follow
|
|
|
- these instructions</a>.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
|
|
|
- sure <android-ndk-path> is added to PATH.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
|
|
|
- <a href="http://ant.apache.org/manual/install.html">Apache Ant</a>.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Make
|
|
|
- sure <ant-path>/bin is added the PATH.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Install
|
|
|
- <a href="http://cygwin.com/install.html">Cygwin</a> and select and add
|
|
|
- the package <b style='mso-bidi-font-weight:normal'>make: The GNU version
|
|
|
- of the 'make' utility</b> during installation. <o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Rename
|
|
|
- <b style='mso-bidi-font-weight:normal'>awk.exe</b> to something else
|
|
|
- (awk_.exe for example) in <android-ndk-path>/prebuilt/windows/bin.
|
|
|
- This is to prevent the Android build system from being confused by the
|
|
|
- cygwin's awk.<span style='mso-tab-count:1'> </span><o:p></o:p></span></li>
|
|
|
- </ol>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=2 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
|
|
|
- the gameplay library using following steps: <a name=d4e593a1310></a><span
|
|
|
- style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
|
|
|
- <ol style='margin-top:0in' start=1 type=a>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
|
|
|
- the Cygwin terminal. <o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
|
|
|
- to the <b style='mso-bidi-font-weight:normal'><gameplay-root>/gameplay/android</b>
|
|
|
- folder. <o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the following command to generate the needed files to build the project:<br>
|
|
|
- </span><span class=shellcode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>>
|
|
|
- android.bat update project -t 1 -p . -s</span></span><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the following command to build the gameplay library:<o:p></o:p></span></li>
|
|
|
- </ol>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:1.0in'><span class=shellcode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>> ndk-build<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=3 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Build
|
|
|
- a sample game(s) with following steps: <a name=d4e619a1310></a><span
|
|
|
- style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
|
|
|
- <ol style='margin-top:0in' start=1 type=a>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Open
|
|
|
- the Cygwin terminal. <o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Change
|
|
|
- to the:<o:p></o:p></span></li>
|
|
|
- </ol>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><b
|
|
|
-style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><gameplay-root/gameplay-samples/sampleXX-XXXXX>/android</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> folder.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=3 type=1>
|
|
|
- <ol style='margin-top:0in' start=3 type=a>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the following command to generate the needed files to build the project:<br>
|
|
|
- </span><span class=shellcode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>>
|
|
|
- android.bat update project -t 1 -p . -s</span></span><span
|
|
|
- class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>
|
|
|
- </span></span><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman"'><o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level2 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the following command to build the gameplay sample:<br>
|
|
|
- </span><span class=shellcode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>>
|
|
|
- ndk-build </span></span><span style='mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
|
|
|
- </ol>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='text-indent:.5in'><b style='mso-bidi-font-weight:
|
|
|
-normal'><span style='mso-bidi-font-size:12.0pt'>Android NDK permissions errors:<o:p></o:p></span></b></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>If you see an error like </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>"./obj/local/armeabi/libpng.a:
|
|
|
-No such file: Permission denied",</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> make sure that the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>"*.a"
|
|
|
-</span></span><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>files
|
|
|
-have read permission by running:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'><span class=shellcode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>> chmod +r
|
|
|
-obj/local/armeabi/*.a<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=4 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo4'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Connect
|
|
|
- the device and run the following command in the Cygwin terminal to deploy
|
|
|
- the game:<br>
|
|
|
- </span><span class=shellcode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>>
|
|
|
- ant debug install</span></span><span class=inlinecode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'> </span></span><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in'>Note: If "ant debug
|
|
|
-install" does not work, ensure your device is being detected properly by
|
|
|
-running "adb devices".<span style='mso-spacerun:yes'> </span>If no
|
|
|
-devices are reported, try downloading the correct USB drivers from you phone
|
|
|
-manufacturer's website. (<a
|
|
|
-href="http://developer.android.com/tools/extras/oem-usb.html#Drivers">OEM
|
|
|
-Drivers</a>)</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>Linux (Ubuntu)</h4>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='mso-list:l12 level1 lfo23'><span class=shellcode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>sudo apt-get install
|
|
|
- build-essential gcc cmake libglu1-mesa-dev libogg-dev libopenal-dev</span></span></li>
|
|
|
- <li class=MsoNormal style='mso-list:l12 level1 lfo23'><span class=shellcode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>cd build</span></span></li>
|
|
|
- <li class=MsoNormal style='mso-list:l12 level1 lfo23'><span class=shellcode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>cmake ..</span></span></li>
|
|
|
- <li class=MsoNormal style='mso-list:l12 level1 lfo23'><span class=shellcode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>make</span></span></li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<h3>Mobile platform considerations</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Ensure that you test early on the physical devices.
|
|
|
-Depending on the type of game you want to write and on your design ideas, you<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll want to get some idea
|
|
|
-of what type of performance you<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-get with the game plan and prototypes you are working towards. Be careful and
|
|
|
-do not to rely on desktop and mobile simulators as an indicator of performance
|
|
|
-or mobile device capabilities.<span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating new projects</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>To create a new cross-platform game project, run the
|
|
|
-gameplay-newproject.bat/.sh script. The following is an example of running the
|
|
|
-gameplay-newproject.bat script:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>1. Enter a name for the new project.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>This name will be given
|
|
|
-to the project</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>executable and a folder
|
|
|
-with this name</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>will be created to store
|
|
|
-all project files.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Project name: test</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>2. Enter a game title.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>On some platforms, this
|
|
|
-title is used to</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>identify the game during
|
|
|
-installation and</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>on shortcuts/icons.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Title: Test</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>3. Enter a short game description.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Description: Test Game</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>4. Enter a unique identifier for your project.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>This should be a human
|
|
|
-readable package name,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>containing at least two
|
|
|
-words separated by a</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>period (eg.
|
|
|
-com.surname.gamename).</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Unique ID: org.gameplay3d.test</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>5. Enter author name.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>On BlackBerry targets,
|
|
|
-this is used for</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>signing and must match
|
|
|
-the developer name</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>of your development
|
|
|
-certificate.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Author: My Company</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>6. Enter your game's main class name.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>Your initial game header
|
|
|
-and source file</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>will be given this name
|
|
|
-and a class with</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>this name will be
|
|
|
-created in these files.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Class name: TestGame</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>7. Enter the project path.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>This can be a relative
|
|
|
-path, absolute path,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>or empty for the current
|
|
|
-folder. Note that</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>a project folder named
|
|
|
-test will also</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>be created inside this
|
|
|
-folder.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Path: gameplay-samples</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>1 file copied.</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The simplest way to run the project on Windows is to add the
|
|
|
-Visual Studio project to the existing gameplay.sln solution, set the
|
|
|
-"gameplay" project as a dependency (right-click on the new project,
|
|
|
-click "Project Dependencies…", and select the "gameplay"
|
|
|
-project), and then build and run.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Similarly, the easiest way to run the project on BlackBerry
|
|
|
-is import the new project into a QNX Momentics IDE workspace that already
|
|
|
-contains the gameplay project, set the "gameplay" project as a
|
|
|
-dependency (right-click the new project, click "Properties", go to "Project
|
|
|
-References", and select the "gameplay" project), and then build
|
|
|
-and run. (Note: make sure that both projects are set to the same Build
|
|
|
-Configuration.) </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To run the project on Mac, simply open the Xcode project and
|
|
|
-build and run.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>To run the project on Android from Windows, use the steps
|
|
|
-described above for running the samples.</p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574574">Assets and authoring</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>Game assets are extremely important for the quality of a
|
|
|
-good game. Not only do the game assets need to be fitted for the game design,
|
|
|
-but they also need to load as quickly as possible and at the highest quality
|
|
|
-within the platform hardware limitations.</p>
|
|
|
-
|
|
|
-<h3>Binary game assets</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>A very practical way to ensure that you<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>re being efficient is to
|
|
|
-always bundle and load all your game assets as binary formats. Common assets
|
|
|
-include images, fonts, audio, and 3-D scenes. Most game engines will always
|
|
|
-include some sort of authoring tool to allow developers to encode and process
|
|
|
-their content to be game-ready. The gameplay framework also includes an
|
|
|
-executable tool for this called the gameplay-encoder.</p>
|
|
|
-
|
|
|
-<h3>Using fonts and 3-D scenes</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>For fonts and 3-D scenes, you will want to support
|
|
|
-industry-standard file formats, such as <u><span style='color:blue'><a
|
|
|
-href="http://en.wikipedia.org/wiki/TrueType"><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>TrueType</span></a> </span></u>for fonts and popular
|
|
|
-modern 3-D scene formats such as <u><span style='color:blue'><a
|
|
|
-href="https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema"><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>COLLADA</span></a> </span></u>and
|
|
|
-the <a href="http://usa.autodesk.com/fbx/"><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>FBX</span></a> formats. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Although these formats are popular and have the widest
|
|
|
-support in tooling options, they are not considered efficient runtime formats.
|
|
|
-The gameplay library requires that you convert these formats to its documented <u><span
|
|
|
-style='color:blue'><a
|
|
|
-href="https://github.com/blackberry/GamePlay/blob/master/gameplay-encoder/gameplay-bundle.txt"><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay bundle format
|
|
|
-(.gpb)</span></a> </span></u>using the gameplay-encoder executable.</p>
|
|
|
-
|
|
|
-<h3>Pre-built gameplay-encoder tool</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gameplay-encoder executable tool comes pre-built for
|
|
|
-Windows 7 and Mac OS X and can be found in the <b style='mso-bidi-font-weight:
|
|
|
-normal'><gameplay-root>/bin</b> folders. The general usage is:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>>gameplay-encoder <options> files</p>
|
|
|
-
|
|
|
-<h3>Building gameplay-encoder</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Even though the gameplay-encoder tool comes pre-built, you
|
|
|
-make want to customize it and built it again yourself. To build the gameplay-encoder
|
|
|
-project, open the gameplay-encoder project in Visual Studio or XCode and build
|
|
|
-the executable. </p>
|
|
|
-
|
|
|
-<h3>Building support for the FBX format</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Although the FBX format is supported by the gameplay-encoder
|
|
|
-tools, FBX is not allowed to be re-distributed as part of our framework.
|
|
|
-However, it is free for you to use. Simply download the <a
|
|
|
-href="http://usa.autodesk.com/fbx/"><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>FBX SDK</span></a> and then re-build
|
|
|
-the code in the gameplay-encoder using the USE_FBX preprocessor directive and
|
|
|
-ensure that you include the header and library paths in the project to the FBX
|
|
|
-SDK paths.</p>
|
|
|
-
|
|
|
-<h3>Content pipeline</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The content pipeline for fonts and scenes works like this:<a
|
|
|
-name=d5e88a1310></a></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l11 level1 lfo5'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Take
|
|
|
- any TrueType fonts or COLLADA/FBX scene files.<span style='mso-tab-count:
|
|
|
- 2'> </span><o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l11 level1 lfo5'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Run
|
|
|
- the gameplay-encoder executable passing in the font or scene file path and
|
|
|
- optional parameters to produce a gameplay binary version for the file
|
|
|
- (.gpb).<span style='mso-tab-count:2'> </span><o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l11 level1 lfo5'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Bundle
|
|
|
- your game and include the gameplay binary file as a binary game asset.<o:p></o:p></span></li>
|
|
|
- <li class=MsoNormal style='text-align:justify;mso-list:l11 level1 lfo5'><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Load
|
|
|
- any binary game assets using the </span><span class=inlinecode><span
|
|
|
- style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
- class.</span><span style='mso-tab-count:3'> </span><span
|
|
|
- style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<h3>Using binary bundles</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Use the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span> class from your C++
|
|
|
-game source code to load your encoded binary files as bundles. The class offers
|
|
|
-methods to load both fonts and scenes. Scenes are loaded as a hierarchical
|
|
|
-structure of nodes, with various entities attached to them. These entities include
|
|
|
-things like mesh geometry or groups of meshes, and cameras and lights. The <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span>
|
|
|
-class also has methods to filter only the parts of a scene that you want to
|
|
|
-load.</p>
|
|
|
-
|
|
|
-<h3>Release mode assets</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>When releasing your game title, all of the images should be
|
|
|
-optimized and converted to the compressed texture format that is supported by
|
|
|
-OpenGL (ES). Audio should be encoded to save space on storage. <a
|
|
|
-name=d6e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574575">Game</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Game</span></span> class is the base class
|
|
|
-for all your games created with the gameplay framework. You are required to
|
|
|
-extend this class using C++ and to override the core game and lifecycle event
|
|
|
-methods initialize, finalize, update, and render. This is where you<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll write your code to
|
|
|
-load the game assets and apply game logic and rendering code. Under the hood,
|
|
|
-the game class will receive events and act as an abstraction between the
|
|
|
-running game and the underlying platform layer that is running the game loop
|
|
|
-and reacting to operating systems. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>There are four methods you must implement to get started in
|
|
|
-writing your own game: </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>#include</span></span> <span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"gameplay.h"</span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>using</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>namespace</span></span> gameplay;</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>class</span></span> MyGame : <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>public</span></span> Game</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> initialize();</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> finalize();<span
|
|
|
-style='mso-tab-count:1'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> update(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime);</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> render(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime);</p>
|
|
|
-
|
|
|
-<p class=Code>};</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::initialize()</span></span> and <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::finalize()</span></span>
|
|
|
-methods are called when the game starts up and shuts down, respectively. They
|
|
|
-are the methods to which you<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-add code to load your game assets and cleanup when the game has ended. The <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::update()</span></span>
|
|
|
-and <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::render()</span></span>
|
|
|
-methods are called once per frame from the game loop implemented in the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Platform</span></span>
|
|
|
-for each operating system. This allows you to separate the code between
|
|
|
-handling updates to your game<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s
|
|
|
-state and rendering your game<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s
|
|
|
-visuals. You can use a variety of built-in classes to help with the game
|
|
|
-rendering.</p>
|
|
|
-
|
|
|
-<h3>Accessing the game instance</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Game</span></span> class can be accessed
|
|
|
-from anywhere in your game code. It implements a singleton design pattern. Call
|
|
|
-the static method <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::getInstance()</span></span> to gain access to
|
|
|
-the instance of your game from any code. </p>
|
|
|
-
|
|
|
-<h3>Graphics and audio devices</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>After your game has started, the underlying graphics and
|
|
|
-audio devices will automatically initialize. This happens prior to the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::initialize()</span></span>
|
|
|
-method being called and readies any classes that use OpenGL (ES) 2.0 or Open AL
|
|
|
-1.1. The graphics devices of your <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game</span></span> will be
|
|
|
-set up with a default 32-bit color frame buffer, a 24-bit depth buffer, and an
|
|
|
-8-bit stencil buffer ready for your use. These are the active graphics hardware
|
|
|
-buffers, which are rendered into from your rendering code. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>For more advanced usage, you can apply alternative frame
|
|
|
-buffers using the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::FrameBuffer</span></span> class. Immediately
|
|
|
-after the <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::render()</span></span>
|
|
|
-method, the frame buffer is swapped/presented to the physical display for the
|
|
|
-user to see. You can invoke the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::clear()</span></span> method to clear the
|
|
|
-buffers through any of the methods. You can also call <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::renderOnce()</span></span>
|
|
|
-from code, such as from the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::initialize()</span></span> method, to callback
|
|
|
-onto a method that will be called only once and then swapped/presented to the
|
|
|
-display. This is useful for presenting ad-hoc updates to the screen during
|
|
|
-initialization for rendering, such as loading screens.</p>
|
|
|
-
|
|
|
-<h3>Game sub-system controllers</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Game</span></span> class also manages game sub-system
|
|
|
-controllers, such as audio, animation and physics controllers, and provides
|
|
|
-access to them directly using getter methods. These classes act as controlling
|
|
|
-interfaces for managing and playing audio and animations that are active in the
|
|
|
-game, as well as updates to dynamics in the physics systems. These controllers
|
|
|
-are hosted by the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Game</span></span> class and react on
|
|
|
-lifecycle events being handled in the game.</p>
|
|
|
-
|
|
|
-<h3>Game time and state</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Once the instance of a <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Game</span></span>
|
|
|
-class has started, the game starts a running time. You can call the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::getGameTime()</span></span>
|
|
|
-to determine how long a game has been running. You can also call <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::getAbsoluteTime()</span></span>
|
|
|
-to determine the absolute time that has elapsed since the first <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::run()</span></span>
|
|
|
-call. This includes any paused time too. You can call the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::pause()</span></span>
|
|
|
-method and the game will be put into the <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::PAUSED</span></span>
|
|
|
-state. If the user on the platform puts the game into the background, the game
|
|
|
-time is also paused. If the user puts the game back into the foreground, the
|
|
|
-game will invoke <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::play()</span></span>
|
|
|
-and the game will resume. At any time in the game you can determine the game
|
|
|
-state by calling <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::getState()</span></span>.
|
|
|
-The game state can be UNINITIALIZED, RUNNING or PAUSED.<a name=d7e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574576">Input and sensors</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>By creating your game and extending <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Game</span></span>,
|
|
|
-you<span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll be
|
|
|
-able to add all the required handlers of input events. Additionally, there are
|
|
|
-methods on <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Game</span></span>
|
|
|
-to poll for the current sensor data. This architecture insulates you, as a
|
|
|
-developer, from the platform-specific details on handling keyboard, touch and
|
|
|
-mouse events, and from polling the accelerometer state. The following
|
|
|
-illustrates overridden methods to handle input events:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>#include</span></span> <span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"gameplay.h"</span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>using</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>namespace</span></span> gameplay;</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>class</span></span> MyGame : <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>public</span></span> Game</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> ...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> keyEvent(Keyboard::KeyEvent evt, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> key);</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> touchEvent(Touch::TouchEvent evt, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> x, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> y, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>unsigned</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> contactIndex);</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>bool</span></span> mouseEvent(Mouse::MouseEvent evt, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> x, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> y);</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> getAccelerometerValues(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span>* pitch, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span>* roll); </p>
|
|
|
-
|
|
|
-<p class=Code>};</p>
|
|
|
-
|
|
|
-<h3>Handling input events</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>You have the opportunity, on either desktop platforms or
|
|
|
-mobile devices, to handle mouse events uniquely from the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::touchEvent()</span></span>
|
|
|
-method (this includes support for a Bluetooth enabled mouse). However, this is
|
|
|
-not required, and the default implementation of the <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::mouseEvent()</span></span>
|
|
|
-method returns <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>false</span></span>,
|
|
|
-which means that the user can allow mouse events to be treated automatically as
|
|
|
-touch events.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>You can decide to disable multi-touch support for games when
|
|
|
-you do not want this functionality. You can call <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::setMultiTouch()</span></span>
|
|
|
-and pass in <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>false</span></span>
|
|
|
-to ensure that the platform treats and handles touch events as single touches.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal>You can also call <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::displayKeyboard()</span></span>
|
|
|
-to show or hide a virtual keyboard for platforms that support it. You<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll want to integrate it
|
|
|
-into points in the game and user interfaces in the game where text input is
|
|
|
-required.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>You can call <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::getAccelerometerValues()</span></span> and pass
|
|
|
-in pointers to parameters that will be populated with the current sensor values
|
|
|
-for the accelerometer.<a name=d8e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574577">Sprites and fonts</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>Use the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::SpriteBatch</span></span> and <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Font</span></span>
|
|
|
-classes to integrate simple 2-D sprite and text rendering for both 2-D and 3-D
|
|
|
-games. </p>
|
|
|
-
|
|
|
-<h3>Binary encoding fonts</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The first thing to do is to create or find a TrueType font
|
|
|
-that you want to use. There are a number of sites on the web that offer .TTF
|
|
|
-files to purchase, or tools to make them yourself.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Next, you<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-want to binary encode your TrueType font to a binary format via
|
|
|
-gameplay-encoder to produce a binary file. To do this run the following command
|
|
|
-with your gameplay-encoder executable:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>> gameplay-encoder -s 28 airstrip.ttf</p>
|
|
|
-
|
|
|
-<h3>Drawing text and images</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The following code sample illustrates how to render an image
|
|
|
-and text together:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::initialize()</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>// Create your sprite batch and font and associate resources<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> _batch = SpriteBatch::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/image.png"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> _font = Font::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/airstrip28.gpb"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::render(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>// Clear the frame buffer<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> clear(CLEAR_COLOR_DEPTH, Vector4(0, 0, 0, 1), 1.0f, 0);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>// Draw your sprites (we will only draw one now<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> _batch->start();</p>
|
|
|
-
|
|
|
-<p class=Code> _batch->draw(Rectangle(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT), </p>
|
|
|
-
|
|
|
-<p class=Code> Rectangle(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT), Vector4::one());</p>
|
|
|
-
|
|
|
-<p class=Code> _batch->finish();</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>// Draw the text at position 20,20 using red color<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> _font->start();</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>char</span></span> text[1024];</p>
|
|
|
-
|
|
|
-<p class=Code> sprintf(text, <span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"FPS:%d"</span></span>, Game::getFrameRate());</p>
|
|
|
-
|
|
|
-<p class=Code> _font->drawText(text, 20, 20,
|
|
|
-Vector4(1, 0, 0, 1), _font->getSize());</p>
|
|
|
-
|
|
|
-<p class=Code> _font->finish();</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::finalize()</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>// Use built-in macros to clean up our resources.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> SAFE_DELETE(_batch);</p>
|
|
|
-
|
|
|
-<p class=Code> SAFE_RELEASE(_font);</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Batch, batch, batch</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>You<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-notice that the <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::SpritchBatch</span></span>
|
|
|
-and <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Font</span></span>
|
|
|
-code sequences above both have a common flow to them. The developer performs a
|
|
|
-call to <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>start()</span></span>
|
|
|
-followed by drawing operations and finishing with a call to <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>finish()</span></span>.
|
|
|
-This is to support batching or combining drawing operations into a single
|
|
|
-hardware rendering call.<a name=d9e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574578">Scene and nodes</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>At the heart of any game is a visual scene. Using the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span>
|
|
|
-class, you can create and retain a rich 3-D scene for organizing visual, audio,
|
|
|
-animation and physics components in your game.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span> class is based on a
|
|
|
-hierarchical data structure that is often referred to as a scene graph. Using
|
|
|
-the <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span>
|
|
|
-and <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span>
|
|
|
-classes, you can build up a game level by attaching various game components to
|
|
|
-the nodes in the scene. The node will maintain the transformation for any
|
|
|
-attachments. As a basic example, a scene might have two nodes. The first node
|
|
|
-could have a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Camera</span></span>
|
|
|
-attached to it and the second node could have a <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Model</span></span>
|
|
|
-attached to it. The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span> will have the camera set
|
|
|
-as the active camera. You could then transform either/both of the nodes to
|
|
|
-change the player<span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s
|
|
|
-perspective on what they will see in the game.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>There are a variety of components you can attach to the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-class:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d9e44a1310></a><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Component<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Description<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Model<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Used to represent the mesh/geometry
|
|
|
- in the scene.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Camera<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Used to represent a view/perspective
|
|
|
- into the scene.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Light<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Used to hold lighting information
|
|
|
- that can affect how a </span><span class=inlinecode><span style='font-size:
|
|
|
- 11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Model</span></span><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
- is rendered.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:4'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::PhysicsCollisionObject<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Used to define the basic physics
|
|
|
- dynamics that will be simulated.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:5'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:128'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Used to represent smoke, steam, fire
|
|
|
- and other atmospheric effects.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
|
|
|
- <td width=301 valign=top style='width:225.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-yfti-cnfc:64'><span class=inlinecode><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AudioSource<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=337 valign=top style='width:252.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Use to represent a source where audio
|
|
|
- is being played from.<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
|
|
|
-text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='text-align:justify;mso-layout-grid-align:auto;
|
|
|
-text-autospace:ideograph-numeric ideograph-other'><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>A typical flow will have you loading/building a large scene
|
|
|
-representing all the components needed in the game level. This is done once
|
|
|
-during <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::initialize()</span></span>.
|
|
|
-For every call to the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Game::update()</span></span> method, the code will
|
|
|
-update changes to the nodes and attached components based on events such as
|
|
|
-user input . Then the application will traverse the scene and render the parts
|
|
|
-in the scene that are visible from scene's active camera.</p>
|
|
|
-
|
|
|
-<h3>Exporting a 3-D scene from Autodesk Maya/Max</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>If you want to export 3-D scenes, use the native FBX Export (for
|
|
|
-FBX) or DAE_FBX Export (for COLLADA). </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><!--[if gte vml 1]><v:shape id="Picture_x0020_1" o:spid="_x0000_i1026"
|
|
|
- type="#_x0000_t75" style='width:455.25pt;height:311.25pt;visibility:visible'>
|
|
|
- <v:imagedata src="development-guide_files/image003.png" o:title=""/>
|
|
|
-</v:shape><![endif]--><![if !vml]><img border=0 width=607 height=415
|
|
|
-src="development-guide_files/image004.jpg" v:shapes="Picture_x0020_1"><![endif]></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h3>Exporting a 3-D scene from Blender</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Blender supports exporting to the COLLADA and FBX file
|
|
|
-formats. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d9e229a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'> </span><span
|
|
|
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File >
|
|
|
-Export > Autodesk FBX (.fbx)</span></b><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>File
|
|
|
-> Export > COLLADA (.dae)</span></b><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>If you run into problems when using COLLADA files from Blender,
|
|
|
-try re-importing the COLLADA file back into Blender or Maya software to see if
|
|
|
-there is a problem with the exported model.</p>
|
|
|
-
|
|
|
-<h3>Binary encoding a scene</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Run gameplay-encoder with no arguments to see the usage
|
|
|
-information and supported arguments.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>Usage: gameplay-encoder [options] <i style='mso-bidi-font-style:
|
|
|
-normal'><filepath></i></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Example</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Convert the COLLADA file duck.dae into gameplay binary file
|
|
|
-duck.gpb.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>> gameplay-encoder duck.dae</p>
|
|
|
-
|
|
|
-<h3>Encoding an FBX file</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>To convert an FBX file to a gameplay binary file, you must
|
|
|
-install the FBX SDK and set the preprocessor directive USE_FBX. See the
|
|
|
-instructions in the <a
|
|
|
-href="https://github.com/blackberry/GamePlay/tree/master/gameplay-encoder"><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay-encoder
|
|
|
-README</span></a><u><span style='color:blue'> </span></u>on GitHub.</p>
|
|
|
-
|
|
|
-<h3>Loading a scene</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Using the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span> class, you can load
|
|
|
-either an entire scene or various parts of a scene into any existing scene. The
|
|
|
-<span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span>
|
|
|
-parses the binary file and de-serializes the objects from the file so that you
|
|
|
-can use them in your game. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Here is an example of loading a simple scene containing a
|
|
|
-model of a duck, a light, and a camera from a gameplay binary file:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MeshGame::initialize()</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Load the scene from our gameplay binary file<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> Bundle* bundle = Bundle::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/duck.gpb"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> Scene* scene = bundle->loadScene();</p>
|
|
|
-
|
|
|
-<p class=Code> SAFE_RELEASE(bundle);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Get handles to the nodes of interest in the scene<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> _modelNode = scene->findNode(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"duck"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> Node* _lightNode = scene->findNode(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"directionalLight1"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> Node* _cameraNode = scene->findNode(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"camera1"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // More initialization ...<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Updating a scene</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>After handling input events or polling the sensors, it<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s time to update the
|
|
|
-scene. It is very important to understand the scene representing your game
|
|
|
-level. We always want to update things that are impacted by the changes to
|
|
|
-optimize performance. In order to optimize the performance of your game, it is
|
|
|
-essential that you only update objects that need to be changed. In this
|
|
|
-example, we<span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll apply
|
|
|
-a rotation when the user has touched the screen or mouse button:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::update(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Rotate the model<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>if</span></span> (!_touched)</p>
|
|
|
-
|
|
|
-<p class=Code> _modelNode->rotateY(elapsedTime
|
|
|
-* MATH_DEG_TO_RAD(0.05f));</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Some examples of typical things you will want to update in
|
|
|
-your scene may include:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d9e350a1310></a><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>applying forces or impulses onto rigid
|
|
|
-bodies<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>applying transformations<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>starting or stopping animations<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>showing or hiding components<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Rendering a scene</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>To render a scene you<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-need to gather all the models in the scene that are attached to nodes and then
|
|
|
-draw them. Calling the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Scene::visit()</span></span> method, the scene's
|
|
|
-hierarchical data structure is traversed and for each node in the scene, the
|
|
|
-specified method is invoked as a callback.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::render(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Clear the buffers to black<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> clear(CLEAR_COLOR_DEPTH, Vector4::zero(), 1.0f, 0);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Visit all the nodes in the scene, drawing the models/mesh.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> _scene->visit(<span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>this</span></span>, &MeshGame::drawScene);</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>bool</span></span> MyGame::drawScene(Node* node, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span>* cookie)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // This method is called for each node in the scene.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> Model* model = node->getModel(); </p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>if</span></span> (model)</p>
|
|
|
-
|
|
|
-<p class=Code> model->draw();</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>return</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>true</span></span>;</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Culling non-visible models</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>In some scenes, you may have many models contributing to the
|
|
|
-game level. However, with a moving camera, only some models will be visible at
|
|
|
-any particular time. Running the code in the snippet above on much larger
|
|
|
-scenes would cause many models to be drawn unnecessarily. To avoid this, you
|
|
|
-can query a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span>
|
|
|
-class and retrieve a <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::BoundingSphere</span></span> using <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Node::getBoundingSphere()</span></span>.
|
|
|
-This bound represents an approximation of the representative data contained
|
|
|
-within a node. It is only intended for visibility testing or first-pass
|
|
|
-intersection testing. If you have a moving camera with many objects in the
|
|
|
-scene, ensure that you add code to test visibility from within your visitor
|
|
|
-callback. This will ensure the node is within the camera<span style='font-family:
|
|
|
-"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>’</span>s viewing range. To do this, make a simple
|
|
|
-intersection test between the front of each node and the active camera frustum
|
|
|
-(by calling <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Camera::getFrustum()</span></span>)
|
|
|
-that represents the outer planes of the camera<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s
|
|
|
-viewing area. Here is a snippet of code to perform such an intersection test:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><a name=d12e3a1310></a><span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>bool</span></span> MeshGame::drawScene(Node* node, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span>* cookie)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Only draw visible nodes<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>if</span></span> (node->getBoundingSphere()->intersect(_camera->getFrustum())</p>
|
|
|
-
|
|
|
-<p class=Code> {</p>
|
|
|
-
|
|
|
-<p class=Code> Model* model = node->getModel();</p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>if</span></span> (model)</p>
|
|
|
-
|
|
|
-<p class=Code> model->draw();</p>
|
|
|
-
|
|
|
-<p class=Code> }</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>return</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>true</span></span>;</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574579">Model and mesh</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Model</span></span> class is the basic
|
|
|
-component used to draw geometry in your scene. The model contains a few key elements:
|
|
|
-a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Mesh</span></span>,
|
|
|
-an optional <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshSkin</span></span>
|
|
|
-and one or more <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span>.
|
|
|
-These contribute to the information that is needed to perform the rendering of
|
|
|
-a model.</p>
|
|
|
-
|
|
|
-<h3>Mesh geometry</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Mesh</span></span> class consists of a <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::VertexFormat</span></span>
|
|
|
-attribute. This attribute describes the layout for the vertex data as well as
|
|
|
-the actual vertex data, which is used as input in the rendering of the
|
|
|
-geometry. In addition, it holds one or more <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshParts</span></span>.
|
|
|
-These parts define the primitive shapes and indices into the vertex data that
|
|
|
-describe how the vertices are connected.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Game artists use 3-D modeling tools that are capable of
|
|
|
-organizing and splitting the vertex data into parts/subsets based on the
|
|
|
-materials that are applied to them. The <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Mesh</span></span>
|
|
|
-class maintains one vertex buffer to hold all the vertices, and for each <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshPart</span></span>,
|
|
|
-an index buffer is used to draw the primitive shapes.</p>
|
|
|
-
|
|
|
-<h3>MeshSkin and Joints</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Mesh</span></span> class supports an optional
|
|
|
-<span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshSkin</span></span>.
|
|
|
-This is used when loading models that represent characters in the game that
|
|
|
-have a skeleton consisting of <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Joint</span></span> objects (bones). Vertex
|
|
|
-skinning is the term used to describe the process of applying a weighting or
|
|
|
-relationship with the Joints and their affected vertices. Using 3-D modeling
|
|
|
-tools, artists can add this additional weighting information onto the vertices
|
|
|
-in order to control how much a particular vertex should be impacted. This is
|
|
|
-based on the transformation of joints that can affect them. You will learn
|
|
|
-later how to apply special, skinned Materials that support this weighting. The
|
|
|
-gameplay 3-D framework supports a maximum of four blend weights per vertex. The
|
|
|
-<span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshSkin</span></span>
|
|
|
-class holds and maintains a hierarchy of <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay:Joint</span></span>
|
|
|
-objects that can be transformed. A typical operation is to animate the
|
|
|
-transformation (usually only rotations) of the joints. The data within this
|
|
|
-class can be bound onto skinned Materials to ensure proper impact of weights
|
|
|
-onto their influenced vertices.<a name=d13e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574580">Lights</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Light</span></span> class can be attached to
|
|
|
-any <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span>
|
|
|
-in order to add lighting information into a <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span>.
|
|
|
-This lighting information must be bound to the <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span>
|
|
|
-that is being applied onto the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::MeshParts</span></span>. There are three
|
|
|
-types of lights in the gameplay 3-D framework - directional, point, and spot
|
|
|
-lights.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>All <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Light</span></span> components can be loaded
|
|
|
-into a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Scene</span></span>
|
|
|
-using the <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Bundle</span></span>
|
|
|
-class. However, it is your responsibility to bind the relevant lighting
|
|
|
-information stored in the light into the <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span>
|
|
|
-class.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>You can also programmatically create a light using the
|
|
|
-factory methods on the </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Light</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> class. Here is an example of
|
|
|
-how to create and add a directional light to your scene and bind the lighting
|
|
|
-information onto a model's material(s):<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::initialize()</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> ...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Create a node and light attaching the light to the node<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> Node* lightNode = Node::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"directionalLight1"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> Light* light = Light::createDirectional(Vector3(1, 0, 0));</p>
|
|
|
-
|
|
|
-<p class=Code> lightNode->setLight(light);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Bind the relevant lighting information into the materials<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> Material* material = _modelNode->getModel()->getMaterial();</p>
|
|
|
-
|
|
|
-<p class=Code> MaterialParameter* parameter = material->getParameter(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"u_lightDirection"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code> parameter->bindValue(lightNode, &Node::getForwardVectorView);</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Pre-computed lighting maps</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Adding lighting information into <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span>
|
|
|
-adds computationally expensive graphics computations. In many games, there are
|
|
|
-usually multiple static lights and objects in the scene. In this relationship,
|
|
|
-the additive light colors contributing to the objects can be pre-computed
|
|
|
-during the design phase. 3-D modeling tools typically support the ability to compute
|
|
|
-the light's additive color contributions using a process called <i
|
|
|
-style='mso-bidi-font-style:normal'>baking</i>. This process allows the artist
|
|
|
-to direct the contributing light and color information into a separate or
|
|
|
-combined texture so that this is not required during the rendering.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='mso-pagination:widow-orphan'><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>You can optionally declare and
|
|
|
-pass in pre-generated light maps using the
|
|
|
-colored-unlit.frag/textured-unlit.frag shaders and specifying in your materials<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='mso-pagination:widow-orphan'><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>defines = TEXTURE_LIGHTMAP<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Then you just assign them using the sampler<span
|
|
|
-style='mso-spacerun:yes'> </span></span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>m_lightmapTexture</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in
|
|
|
-your material definition to the image that was pre-generated that contains the
|
|
|
-light+color for your object. It is recommended to use 8-bit alpha textures to
|
|
|
-reduce the size.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Directional lights</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>In most games, you<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-want to add a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Light</span></span>
|
|
|
-class whose type is <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Light::DIRECTIONAL</span></span>. This type of light
|
|
|
-is used as the primary light source, such as a sun or moon. The directional
|
|
|
-light represents a light source whose color is affected only by the constant
|
|
|
-direction vector. It is typical to bind this onto the <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Materials</span></span>
|
|
|
-of objects that are dynamic or moving.</p>
|
|
|
-
|
|
|
-<h3>Point and spot lights</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Due to the expensive processing overhead in using point and
|
|
|
-spot lights, many games are designed to restrict point and spot light use to be
|
|
|
-static, baked into light and color maps. However, the point and spot light
|
|
|
-types add exceptional realism to games. Using them in separate or combined rendering
|
|
|
-passes, you can bind point and spot lights into material to add dynamic point
|
|
|
-and spot light rendering. All the built-in gameplay .materials files support
|
|
|
-directional, point and spot lights. Also, with minor modification to the
|
|
|
-shaders, you can add additional passes to combine two or more lights. It should
|
|
|
-be noted that there is a significant performance impact in doing this. For
|
|
|
-these cases, you<span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>ll
|
|
|
-usually want to restrict the influence of lights on a material to no more than
|
|
|
-the one or two closest lights at a time. This can be achieved by using a simple
|
|
|
-test in the <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Game::update()</span></span>
|
|
|
-method to find the closest light to a <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Model</span></span>
|
|
|
-and then bind them to the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Material</span></span> once they are found.<a
|
|
|
-name=d14e3a1310></a></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574581">Materials and shaders</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gameplay 3-D framework uses a modern GPU shader based
|
|
|
-rendering architecture and uses OpenGL 2.0+ (desktop) or OpenGL ES 2.0 (mobile)
|
|
|
-along with the OpenGL Shading Language (GLSL). Currently, all the code in
|
|
|
-graphics-related classes uses the OpenGL hardware device directly.</p>
|
|
|
-
|
|
|
-<h3>Using materials</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Material</span></span> class is the high level
|
|
|
-definition of all the rendering information needed to draw a <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshPart</span></span>.
|
|
|
-When you draw a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Model</span></span>,
|
|
|
-the mesh<span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s vertex
|
|
|
-buffer is applied and for each <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::MeshPart</span></span> its index buffer(s)
|
|
|
-and <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Materials</span></span>
|
|
|
-are applied just before the primitives are drawn. </p>
|
|
|
-
|
|
|
-<h3>RenderState and Effects</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Each <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Material</span></span> consists of a <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::RenderState</span></span>
|
|
|
-and a <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Effect</span></span>.
|
|
|
-The <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::RenderState</span></span>
|
|
|
-stores the GPU render state blocks that are to be applied, as well as any <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MaterialParameters</span></span>
|
|
|
-to be applied to the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Effect</span></span>. While a <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span>
|
|
|
-is typically used once per <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::MeshPart</span></span>, the <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Effect</span></span>
|
|
|
-is created internally based on the unique combination of selected vertex and
|
|
|
-fragment shader programs. The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Effect</span></span> represents a common
|
|
|
-reusable shader program.</p>
|
|
|
-
|
|
|
-<h3>Techniques</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Since you can bind only one </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> per </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MeshPart</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, an
|
|
|
-additional feature is supported that's designed to make it quick and easy to
|
|
|
-change the way you render the parts at runtime. You can define multiple
|
|
|
-techniques by giving them different names. Each one can have a completely
|
|
|
-different rendering technique, and you can even change the technique being
|
|
|
-applied at runtime by using </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Material::setTechnique(const
|
|
|
-char* name)</span></span><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>. When a material is loaded, all the techniques are loaded
|
|
|
-ahead too. This is a practical way of handling different light combinations or
|
|
|
-having lower-quality rendering techniques, such as disabling bump mapping, when
|
|
|
-the object being rendered is far away from the camera.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating materials</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>You can create a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> from
|
|
|
-the simple </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Properties</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> based
|
|
|
-.material files. Using this simple file format, you can define your material,
|
|
|
-specifying all the rendering techniques and pass information.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is an example of loading a .material file:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>Material* planeMaterial = planeNode->getModel()->setMaterial(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/floor.material"</span></span>);</p>
|
|
|
-
|
|
|
-<h3>Setting vs. binding material parameters</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Once you have created a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Material</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-instance, you</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>ll want to get its parameters
|
|
|
-and then set or bind various values to them. To set a value, get the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MaterialParameter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and
|
|
|
-then call the appropriate </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>setValue()</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> method on it. Setting material
|
|
|
-parameter values is most common in parameters that are based on values that are
|
|
|
-constants.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is an example of setting a value on a parameter:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>material->getParameter(<span class=codestring><span
|
|
|
-style='mso-bidi-font-family:Consolas'>"u_diffuseColor"</span></span>)->setValue(Vector4(0.53544f, </p>
|
|
|
-
|
|
|
-<p class=Code><span
|
|
|
-style='mso-spacerun:yes'>
|
|
|
-</span>0.53544f,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>0.53544f, 1.0f));</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>For values that are not constants and are determined from
|
|
|
-other objects, you</span><span style='mso-bidi-font-size:12.0pt;font-family:
|
|
|
-"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ll
|
|
|
-want to bind a value to it. When binding a value, you are giving the parameter
|
|
|
-a function pointer that will only be resolved just prior to rendering. In this
|
|
|
-example, we will bind the forward vector for a node (in view space).<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is an example of binding a value on a parameter:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>material->getParameter(<span class=codestring><span
|
|
|
-style='mso-bidi-font-family:Consolas'>"u_lightDirection"</span></span>)->bindValue(lightNode, </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span><span
|
|
|
-style='mso-spacerun:yes'> </span>&Node::getForwardVectorView);</p>
|
|
|
-
|
|
|
-<h3>.material files</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>As you can see in the following .material file, we have one
|
|
|
-Material, one Technique and one Pass. The main parts of this material
|
|
|
-definition are the shaders, uniforms, samplers and renderState. You will see
|
|
|
-certain upper case values throughout the file. These represent constant
|
|
|
-enumeration values and can usually be found in the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::RenderState</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Texture</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-definitions:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>material duck</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>technique</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{<span
|
|
|
-style='mso-tab-count:1'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>pass 0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// shaders</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>vertexShader =
|
|
|
-res/shaders/textured.vert</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>fragmentShader
|
|
|
-= res/shaders/textured.frag</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-tab-count:1'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>defines = SPECULAR</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// uniforms</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>u_worldViewProjectionMatrix =
|
|
|
-WORLD_VIEW_PROJECTION_MATRIX</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span>u_inverseTransposeWorldViewMatrix = INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span>u_cameraPosition = CAMERA_WORLD_POSITION</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// samplers</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>sampler u_diffuseTexture</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>path =
|
|
|
-res/duck-diffuse.png</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mipmap =
|
|
|
-true</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wrapS =
|
|
|
-CLAMP</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wrapT =
|
|
|
-CLAMP</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>minFilter =
|
|
|
-NEAREST_MIPMAP_LINEAR</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>magFilter =
|
|
|
-LINEAR</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// render state</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>renderState</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>cullFace =
|
|
|
-true</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>depthTest =
|
|
|
-true</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Built-in shaders</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <b style='mso-bidi-font-weight:normal'><gameplay-root>/gameplay/res/shaders</b>
|
|
|
-directory contains a set of the most common shaders used in your games. To
|
|
|
-reduce shader code duplication the gameplay framework also supports declaring
|
|
|
-including of shader files within vertex and shader program files.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal>If there is an error compiling the shaders the expanded
|
|
|
-shader without the definitions is output with an .err file extension in the
|
|
|
-same directory where the file was loaded from. </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Example:<o:p></o:p></b></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p> </o:p></b></p>
|
|
|
-
|
|
|
-<p class=Code>#include "lib/lighting.frag"</p>
|
|
|
-
|
|
|
-<h3>Shader preprocessor definitions</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>Using preprocessor definitions, the built-in shaders support
|
|
|
-various features. Adding certain shader definitions (defines=XXX) will require
|
|
|
-use specific uniform/samplers <span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>u_xxxxxxx<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>. You must set these in
|
|
|
-your vertex stream in your mesh and/or material parameters.</p>
|
|
|
-
|
|
|
-<h3>Property inheritance</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>When making materials with multiple techniques or passes,
|
|
|
-you can put any common things, such as renderState or shaders, above the
|
|
|
-material or technique definitions. The </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Property</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-format for the .material files supports property inheritance. Therefore, if you
|
|
|
-put the renderState in the material sections, then all techniques and passes
|
|
|
-will inherit its definition.<a name=d15e3a1310></a><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574582">Particle emitters</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-defines all the information needed to simulate and render a system of
|
|
|
-particles. The emitter can be defined in various ways to represent smoke,
|
|
|
-steam, fire and other atmospheric effects, such as rain and lightning. Once
|
|
|
-created, the emitter can be set on a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in
|
|
|
-order to follow an object, or it can be placed within a scene. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Particles as sprites</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-always has a sprite/texture and a maximum number of particles that can be alive
|
|
|
-at any given time. After the emitter is created, these cannot be changed.
|
|
|
-Particles are rendered as camera-facing billboards using the emitter's
|
|
|
-sprite/texture. The emitter's sprite/texture properties determine whether the
|
|
|
-texture is treated as a single image, a texture atlas, or an animated sprite.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Particle properties</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> also
|
|
|
-has a number of properties that determine values assigned to the individual
|
|
|
-particles it emits. Scalar properties, such as particle begin- and end-size,
|
|
|
-are assigned within a minimum and a maximum value; vector properties are
|
|
|
-assigned within the domain or space, and are defined by a base vector and a
|
|
|
-variance vector.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The variance vector is multiplied by a random scalar between
|
|
|
-1 and -1, and the base vector is added to this result. This allows an emitter
|
|
|
-to be created, which emits particles with properties that are randomized, yet
|
|
|
-fit within a well-defined range. To make a property deterministic, simply set
|
|
|
-the minimum value to the same value as the maximum for that property, or set
|
|
|
-its variance to a zero vector. To learn more about different scalars, vector
|
|
|
-and rendering properties that can be set on a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, look
|
|
|
-at the C++ API.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating particle emitters</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Use the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>ParticlEmitter::create()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-method to create an emitter from a particle file. The .particle file format and
|
|
|
-semantics are very similar to the .material file format. This is because it
|
|
|
-also leverages the </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Properties</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-definition and supports all the properties supported in the C++ API for the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::ParticleEmitter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-class.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Animated sprites for particles</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>It is very easy to make the particles animate through a list
|
|
|
-of images. Just make your images have a tile of sprite images and then modify
|
|
|
-the sprite</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>s base properties in the emitter
|
|
|
-to control the animation behavior.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>You can then even do things such as animate images of 3-D
|
|
|
-dice using only 2-D images.<a name=d16e3a1310></a><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574583">Physics</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The gameplay framework supports 3-D physics using the game
|
|
|
-service/controller </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::PhysicsController</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::PhysicsController</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-maintains a physics world that has gravity, and will simulate the objects you
|
|
|
-add to it.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The gameplay physics system supports 3-D rigid body
|
|
|
-dynamics, including collision shapes, constraints, and a physics character
|
|
|
-class. To simulate objects within the physics world, you need to create a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::PhysicsCollisionObject</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-object representing the geometry, or </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Model</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. By
|
|
|
-attaching a collision object to a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, the
|
|
|
-rigid body will be added to the physics world and the simulation will
|
|
|
-automatically update the node</span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s
|
|
|
-transformation.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>PhysicsCollisionObject</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>PhysicsCollisionObject</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is
|
|
|
-the base class that provides an interface for receiving collision events. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>You can add collision listeners to a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsCollisionObject</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> or
|
|
|
-test if the collision object currently collides with another collision object.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>There are 3 types of collision objects:<a name=d16e49a1310></a><span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>PhysicsRigidBody<span style='mso-tab-count:
|
|
|
-2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>PhysicsGhostObject<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>PhysicsCharacter<span style='mso-tab-count:
|
|
|
-6'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>PhysicsRigidBody</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A rigid body is an idealized, infinitely hard, non-deformable
|
|
|
-solid object. Rigid bodies have mass, shape and other properties that affect
|
|
|
-forces within the simulation. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>PhysicsRigidBody</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> can be set to be a kinematic
|
|
|
-rigid body. A kinematic rigid body is an object that is not simulated by the
|
|
|
-physics system, and instead has its transform driven manually.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<h4>Create a PhysicsRigidBody</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To create a rigid body, first you need to know what kind of
|
|
|
-shape you want to simulate. The physics system supports boxes, spheres, meshes,
|
|
|
-capsules, and terrain height fields. For basic shapes, such as boxes and
|
|
|
-spheres, you can programmatically create the rigid bodies by calling </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Node::setCollisionObject()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and
|
|
|
-passing in the desired shape type.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>PhysicsRigidBody::Parameters params;</p>
|
|
|
-
|
|
|
-<p class=Code>params.mass = 10.0f;</p>
|
|
|
-
|
|
|
-<p class=Code>node->setCollisionObject(PhysicsCollisionObject::RIGID_BODY, </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>PhysicsCollisionShape::box(),
|
|
|
-&params);</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>All other types of rigid bodies must be created using the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.scene</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.physics</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-property definition files. The </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.scene</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-allows you to bind various attachments or properties to nodes, including a
|
|
|
-rigid body.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>For example, to create a mesh rigid body for the node within
|
|
|
-the scene with ID equal to tree_1:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>scene</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node tree_1</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-game.physics#tree_mesh</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.physics:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject tree_mesh</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type = RIGID_BODY</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape = MESH</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mass = 15.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><span style='mso-spacerun:yes'> </span><o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<h4>RigidBody schema</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>All properties have default values if not defined. See </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsRigidBody::Parameters</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> for
|
|
|
-more information.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject <string></p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= <RIGID_BODY | GHOST_OBJECT |
|
|
|
-CHARACTER></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= <BOX | SPHERE | MESH |
|
|
|
-HEIGHTFIELD | CAPSULE></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>image<span
|
|
|
-style='mso-spacerun:yes'> </span>= <string> // only for
|
|
|
-HEIGHTFIELD</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>radius<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>height<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>extents<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>center<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>centerAbsolute<span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>= <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mass<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>friction<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>restitution<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDamping<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDamping<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>kinematic<span
|
|
|
-style='mso-spacerun:yes'> </span>= <bool><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>anisotropicFriction = <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>gravity<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d16e136a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'><span
|
|
|
- style='mso-spacerun:yes'> </span>Shapes<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'><span
|
|
|
- style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>BOX <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>extents, center, center-absolute <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>SPHERE <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>radius, center, center-absolute <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>MESH <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>
|
|
|
- </span><o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:4'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>HEIGHTFIELD <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>image <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>CAPSULE <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=397 valign=top style='width:297.7pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>radius, height, center, center-absolute <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<h3>PhysicsGhostObject</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A ghost object is like a rigid body except that it does not
|
|
|
-have an effect the simulation. It will not cause forces or react to the other
|
|
|
-rigid bodies. Ghost objects have a shape but they do not have mass, or any of
|
|
|
-the properties that affect forces.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Ghost objects are useful for querying the simulation, or
|
|
|
-detecting collisions without having rigid bodies react to the ghost object. A
|
|
|
-ghost object could be used to detect if an object entered a volume, such as a
|
|
|
-soccer ball going into a goal. This use of a ghost object is often called a
|
|
|
-volumetric trigger. Ghost objects can also detect if they collide with other
|
|
|
-ghost objects.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Collision objects do not require a model so you could use a
|
|
|
-ghost object to check if a camera collides with a wall.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<h4>Creating a PhysicsGhostObject</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Programmatically:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'>// Create a ghost object with radius 5<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>node->setCollisionObject(PhysicsCollisionObject::GHOST_OBJECT,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span>PhysicsCollisionShape::sphere(5.0f));</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>In a .physics file:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject powerup</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type = GHOST_OBJECT</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape = SPHERE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>radius = 5.0</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<h4>PhysicsGhostObject schema</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Ghost objects only have a shape and support the same shapes
|
|
|
-as rigid bodies. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject <string></p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= GHOST_OBJECT</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= <BOX | SPHERE | MESH |
|
|
|
-HEIGHTFIELD | CAPSULE></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>radius<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>height<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>extents<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>center<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>centerAbsolute<span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>= <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>image<span
|
|
|
-style='mso-spacerun:yes'> </span>= <string> <span
|
|
|
-style='mso-spacerun:yes'> </span>// HEIGHTFIELD shapes only.</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>PhysicsCharacter</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>PhysicsCharacter</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> class can be used to control
|
|
|
-the movements and collisions of a character in a game. It interacts with the
|
|
|
-physics system to apply gravity and handle collisions, however dynamics are not
|
|
|
-applied to the character directly by the physics system. Instead, the
|
|
|
-character's movement is controlled directly by the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsCharacter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-class. This results in a more responsive and typical game character than would
|
|
|
-be possible if trying to move a character by applying physical simulation with
|
|
|
-forces.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<h4>Creating a PhysicsCharacter</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To programmatically create a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsCharacter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with
|
|
|
-mass 20 and capsule shape:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>PhysicsRigidBody::Parameters params(20.0f);</p>
|
|
|
-
|
|
|
-<p class=Code>node->setCollisionObject(PhysicsCollisionObject::CHARACTER,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span>PhysicsCollisionShape::capsule(1.2f, 5.0f,</p>
|
|
|
-
|
|
|
-<p class=Code><span
|
|
|
-style='mso-spacerun:yes'>
|
|
|
-</span><span style='mso-spacerun:yes'> </span>Vector3(0, 2.5, 0), <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>true</span></span>),
|
|
|
-</p>
|
|
|
-
|
|
|
-<p class=Code><span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>&params);</p>
|
|
|
-
|
|
|
-<p class=Code>PhysicsCharacter* character = <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>static_cast</span></span><PhysicsCharacter*>(</p>
|
|
|
-
|
|
|
-<p class=Code><span
|
|
|
-style='mso-spacerun:yes'>
|
|
|
-</span>node->getCollisionObject());</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>PhysicsCharacter schema</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Physics characters have a mass and shape. A capsule is a typical
|
|
|
-shape for a typical biped character.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject <string></p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= CHARACTER</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape<span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= <BOX | SPHERE | MESH | CAPSULE></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>radius<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>height<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>extents<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>center<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>centerAbsolute<span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>= <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mass<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Creating a PhysicsContraint</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The gameplay framework supports various types of constraints
|
|
|
-between two rigid bodies (or one rigid body and the physics world), including
|
|
|
-hinge, fixed, generic (six-degree-of-freedom), socket, and spring. Constraints
|
|
|
-can be created programmatically using one of the create functions on </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::PhysicsController</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or
|
|
|
-they can be specified within the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>physics</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-section of the </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>.scene</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> file. For example, to create a
|
|
|
-hinge constraint from within a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.scene</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-between the rigid body attached to the node with id door and the physics world:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
|
|
|
-font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
|
|
|
-mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
|
|
|
-EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
|
|
|
-</span></b>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>game.scene:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>scene</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>physics</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>constraint</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span style='mso-tab-count:
|
|
|
-1'> </span><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type = HINGE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rigidBodyA =
|
|
|
-door</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rotationOffsetA
|
|
|
-= 0.0, 1.0, 0.0, 90.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'>
|
|
|
-</span>translationOffsetA = 0.0, 0.0, 2.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>limits = 0.0,
|
|
|
-90.0, 0.5</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>PhysicsConstraint
|
|
|
-schema</span></b><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>constraint <string></p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type<span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>= <FIXED | GENERIC | HINGE |<span
|
|
|
-style='mso-spacerun:yes'> </span>SOCKET | SPRING></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rigidBodyA<span
|
|
|
-style='mso-spacerun:yes'> </span>= <string></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rigidBodyB<span
|
|
|
-style='mso-spacerun:yes'> </span>= <string></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>translationOffsetA = <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>translationOffsetB = <float,
|
|
|
-float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rotationOffsetA<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rotationOffsetB<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularLowerLimit<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularUpperLimit<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearLowerLimit<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearUpperLimit<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>limits<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDampingX<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDampingY<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDampingZ<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularStrengthX<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularStrengthY<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularStrengthZ<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDampingX<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDampingY<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDampingZ<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearStrengthX<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearStrengthY<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearStrengthZ<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>breakingImpulse<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float></p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d16e328a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'><span
|
|
|
- style='mso-spacerun:yes'> </span>Constraint Types <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'><span
|
|
|
- style='mso-spacerun:yes'> </span>Properties <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>FIXED <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span style='mso-spacerun:yes'>
|
|
|
- </span><o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>GENERIC <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
|
|
|
- translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
|
|
|
- angularUpperLimit, linearLowerLimit, linearUpperLimit <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>HINGE <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
|
|
|
- translationOffsetB, rotationOffsetA, rotationOffsetB, limits <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:4'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>SOCKET <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
|
|
|
- translationOffsetB <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
|
|
|
- <td width=190 valign=top style='width:142.75pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'><span
|
|
|
- style='mso-spacerun:yes'> </span>SPRING <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=603 valign=top style='width:452.6pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>translationOffsetA,
|
|
|
- translationOffsetB, rotationOffsetA, rotationOffsetB, angularLowerLimit,
|
|
|
- angularUpperLimit, linearLowerLimit, linearUpperLimit, angularDampingX,
|
|
|
- angularDampingY, angularDampingZ, angularStrengthX, angularStrengthY,
|
|
|
- angularStrengthZ, linearDampingX, linearDampingY, linearDampingZ,
|
|
|
- linearStrengthX, linearStrengthY, linearStrengthZ <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<h3>Handling collisions</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The gameplay framework allows you to register to be notified
|
|
|
-whenever a collision occurs between two rigid bodies (and also when two rigid bodies
|
|
|
-stop colliding). In order to do this, you must define a class that derives from
|
|
|
-</span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::PhysicsRigidBody::Listener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and
|
|
|
-implements the function </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>collisionEvent(…)</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>. Then, you must add an instance
|
|
|
-of the class as a listener on a given rigid body using the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsRigidBody::addCollisionListener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-function. For example, to print all information for all collisions with the
|
|
|
-door and for collisions between the character and the wall:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
|
|
|
-
|
|
|
-<b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
|
|
|
-font-family:"Malgun Gothic","sans-serif";mso-hansi-font-family:"Times New Roman";
|
|
|
-mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
|
|
|
-EN-US;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'>
|
|
|
-</span></b>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.h:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>class</span></span> MyGame: <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>public</span></span> gameplay::PhysicsRigidBody::Listener</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>public</span></span>:</p>
|
|
|
-
|
|
|
-<p class=Code> ...</p>
|
|
|
-
|
|
|
-<p class=Code> </p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> /**<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> * Collision event handler.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> */<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> collisionEvent(PhysicsRigidBody::Listener::EventType type,</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>const</span></span> PhysicsRigidBody::CollisionPair& pair, </p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>const</span></span> Vector3& pointA, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>const</span></span> Vector3& pointB);</p>
|
|
|
-
|
|
|
-<p class=Code> ...</p>
|
|
|
-
|
|
|
-<p class=Code>};</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>MyGame.cpp:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><a name=d17e3a1310></a>MyGame* mygame;</p>
|
|
|
-
|
|
|
-<p class=Code>Node* door;</p>
|
|
|
-
|
|
|
-<p class=Code>Node* character;</p>
|
|
|
-
|
|
|
-<p class=Code>Node* wall;</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code>door->getRigidBody()->addCollisionListener(mygame);</p>
|
|
|
-
|
|
|
-<p class=Code>character->getRigidBody()->addCollisionListener(mygame, wall);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code>...</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::collisionEvent(PhysicsRigidBody::Listener::EventType type, </p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>const</span></span> PhysicsRigidBody::CollisionPair& pair, </p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-style='mso-spacerun:yes'> </span><span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>const</span></span> Vector3& pointA, <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>const</span></span> Vector3& pointB)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> GP_WARN(<span class=codestring><span
|
|
|
-style='mso-bidi-font-family:Consolas'>"Collision between rigid bodies %s (at point (%f, %f, %f))
|
|
|
-"<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codestring><span style='mso-bidi-font-family:Consolas'><span
|
|
|
-style='mso-spacerun:yes'> </span>"and %s (at point (%f, %f, %f))."</span></span>,</p>
|
|
|
-
|
|
|
-<p class=Code> pair._rbA-getNode()-getId(), pointA.x, pointA.y, pointA.z, </p>
|
|
|
-
|
|
|
-<p class=Code> pair._rbB-getNode()-getId(), pointB.x, pointB.y, pointB.z);</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>PhysicsVehicle</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'>The </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsVehicle</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt'> and </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsVehicleWheel</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt'> classes give you access to vehicle physics
|
|
|
-for racing games. You designate a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>VEHICLE</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt'> type collision object for the node in your
|
|
|
-scene representing the vehicle body or chassis, and </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>VEHICLE_WHEEL</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt'> for the nodes representing the wheels.</span>
|
|
|
-<span style='mso-bidi-font-size:12.0pt'>When gameplay loads the scene, it
|
|
|
-attempts to automatically bind the wheels to the associated vehicle chassis. In
|
|
|
-the hierarchy of your scene be sure to locate the wheel nodes and the vehicle
|
|
|
-chassis under a common group node. This is how gameplay determines which
|
|
|
-vehicle body the wheels belong to </span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>–</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt'> by searching for a common ancestor in the hierarchy. The nodes do not
|
|
|
-need to be direct descendents of the group node; they just need to appear
|
|
|
-somewhere below it in the hierarchy. The presence of other mesh nodes under the
|
|
|
-common node has no effect. All that matters is that the node of collision type </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>VEHICLE</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt'> shares a common ancestor with the nodes of
|
|
|
-collision type </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>VEHICLE_WHEEL</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt'> (details below):<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'><!--[if gte vml 1]><v:shape
|
|
|
- id="_x0000_i1027" type="#_x0000_t75" style='width:465pt;height:352.5pt'>
|
|
|
- <v:imagedata src="development-guide_files/image005.png" o:title=""/>
|
|
|
-</v:shape><![endif]--><![if !vml]><img border=0 width=620 height=470
|
|
|
-src="development-guide_files/image006.jpg" v:shapes="_x0000_i1027"><![endif]><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Then in your .scene file, designate collision objects for
|
|
|
-the car and its wheels, like this:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>scene main</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>path = res/common/game.gpb</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>activeCamera = camera1</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node carbody</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>url = car_top</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>material =
|
|
|
-res/common/game.material#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-res/common/game.physics#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node wheelFrontLeft</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>url = Left_top</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>material =
|
|
|
-res/common/game.material#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-res/common/game.physics#carWheelFrontLeft</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node wheelFrontRight</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>url = Right_top</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>material =
|
|
|
-res/common/game.material#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-res/common/game.physics#carWheelFrontRight</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node wheelBackLeft</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>url = Left_bottom</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>material =
|
|
|
-res/common/game.material#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-res/common/game.physics#carWheelBackLeft</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>node wheelBackRight</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>url = Right_bottom</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>material =
|
|
|
-res/common/game.material#car</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>collisionObject =
|
|
|
-res/common/game.physics#carWheelBackRight</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>...</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>physics</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>gravity = 0.0,
|
|
|
--9.8, 0.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>In the .physics file be sure to specify type <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>VEHICLE</span></span>
|
|
|
-for the chassis and type <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>VEHICLE_WHEEL</span></span> for the wheels:</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject car</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type = VEHICLE</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape = BOX</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mass = 800.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>friction = 0.5</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>restitution = 0.01</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDamping = 0.025</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDamping = 0.6</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steeringGain = 0.4</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>brakingForce = 350.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>drivingForce = 2000.0</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerdownSpeed = 87</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerdownGain = 0.22</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>brakedownStart = 100</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>brakedownFull = 170</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>drivedownStart = 105</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>drivedownFull = 180</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>boostSpeed = 74</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>boostGain = 2.6</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>downforce = 4.5</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject carWheel</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type = VEHICLE_WHEEL</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>shape = MESH</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>mass = 1.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>friction = 0.5</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>restitution = 0.01</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>linearDamping = 0.025</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>angularDamping = 0.16</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelDirection = 0, -1,
|
|
|
-0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelAxle = -1, 0, 0</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutRestLength = 0.6</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutStiffness = 25.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutDampingCompression
|
|
|
-= 5.1</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutDampingRelaxation
|
|
|
-= 2.3</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>frictionBreakout =
|
|
|
-1000.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelRadius = 0.5</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rollInfluence = 0.1</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutConnectionOffset =
|
|
|
-0.0, 0.0, 1.4</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject carWheelFrontLeft : carWheel</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerable = true</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject carWheelFrontRight : carWheel</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerable = true</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject carWheelBackLeft : carWheel</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerable = false</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject carWheelBackRight : carWheel</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerable = false</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Practically speaking the only collision shape that makes
|
|
|
-sense right now for the vehicle chassis is <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>BOX</span></span> because
|
|
|
-currently there is a known issue with <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>MESH</span></span>
|
|
|
-collision shapes.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>In the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>initialize()</span></span> method of your Game class,
|
|
|
-you can set a member variable for accessing the vehicle via <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsVehicle</span></span>:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>Node* carNode =
|
|
|
-_scene->findNode<span class=codestring><span style='mso-bidi-font-family:
|
|
|
-Consolas'>("carbody"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>if</span></span>
|
|
|
-(carNode && carNode->getCollisionObject()->getType() ==
|
|
|
-PhysicsCollisionObject::VEHICLE)</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>_carVehicle = <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>static_cast</span></span><PhysicsVehicle*>(carNode->getCollisionObject());</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Then, in the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>update()</span></span> method of your Game class you
|
|
|
-need to call <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PhysicsVehcicle::update()</span></span>
|
|
|
-with the various control inputs described below:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><span style='mso-spacerun:yes'>
|
|
|
-</span>_carVehicle->update(elapsedTime, steering, braking, driving);<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>steering</span></span> parameter controls vehicle
|
|
|
-steering and has an expected range of -1 to +1. The <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>braking</span></span>
|
|
|
-parameter applies wheel brakes and has an expected range of 0 to 1. The <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>driving</span></span>
|
|
|
-parameter lumps together engine output and overall drivetrain, with an expected
|
|
|
-range of 0 to 1. Optional properties in the .physics definition for your
|
|
|
-vehicle give you greater control of the handling characteristics, and are
|
|
|
-described below in turn.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>Overall Vehicle Controls</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The following properties specify the vehicle<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s overall response to
|
|
|
-control inputs:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Vehicle steering, braking, and
|
|
|
-powertrain<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>steeringGain<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// steering at full deflection<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>brakingForce<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// braking force at full braking<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>drivingForce<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// driving force at full throttle<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>This is an over-simplification of vehicle handling, and therefore
|
|
|
-gameplay provides further refinement as follows.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>Steering Reduction at High Speed</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Turning the steering wheel of a real car by 1 degree has a
|
|
|
-much different effect at 100 km/h than it does at 10 km/h. (Please do not
|
|
|
-attempt this). In a real vehicle, the <span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>“</span>feel<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>”</span> of a steering wheel
|
|
|
-tends to stiffen as speed increases. In a racing game, we can approximate this
|
|
|
-effect by reducing the amount of authority at higher speeds. gameplay provides
|
|
|
-the following properties to control this effect:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Steering gain reduction with
|
|
|
-speed (optional)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>steerdownSpeed =
|
|
|
-<float><span style='mso-spacerun:yes'> </span>// steering gain fades
|
|
|
-to this point<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>steerdownGain<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// gain value at that point (less than 1)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gain at zero speed is always 1. The properties <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>steerdownSpeed</span></span>
|
|
|
-and <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>steerdownGain</span></span>
|
|
|
-specify a point of reduced gain, above which the gain remains constant. A <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>steerdownGain</span></span>
|
|
|
-of 1 effectively disables this feature.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>Brake Reduction at High Speed</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Due to imperfections in the simulated physics, full braking
|
|
|
-at high speeds can cause unexpected behavior. gameplay provides the following
|
|
|
-properties to reduce braking above a certain threshold speed:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Brake force reduction at high
|
|
|
-speeds (optional)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>brakedownStart =
|
|
|
-<float><span style='mso-spacerun:yes'> </span>// braking fades above
|
|
|
-this speed<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>brakedownFull<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// braking is fully faded at this speed<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Braking remains unaffected up to the speed specified by <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>brakedownStart</span></span>.
|
|
|
-Above that speed, braking fades and reaches zero at the speed specified by <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>brakedownFull</span></span>.
|
|
|
-An unreachably-large speed value for <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>brakedownStart</span></span>
|
|
|
-will effectively disable this feature.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>Vehicle Acceleration, All-out Speed, and Aerodynamic Downforce</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Driving force is currently simplified down to a single value
|
|
|
-that lumps together the engine and drivetrain. In the absence of a proper
|
|
|
-gearbox simulation gameplay provides the following properties for affecting
|
|
|
-all-out speed and bottom-end acceleration:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Driving force reduction at high
|
|
|
-speeds (optional)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>drivedownStart =
|
|
|
-<float><span style='mso-spacerun:yes'> </span>// driving force fades
|
|
|
-above this speed<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>drivedownFull<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// driving force is fully faded at this
|
|
|
-speed<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Driving force boost at low
|
|
|
-speeds (optional)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>boostSpeed<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// Boost fades to 1 at this point<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>boostGain<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// Boost at zero speed (greater than 1)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The first 2 properties allow you to reduce driving force at
|
|
|
-high speeds which limits the top speed of the vehicle. Above the speed
|
|
|
-specified by <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>drivedownStart</span></span>
|
|
|
-driving force begins to fade, and eventually reaches zero at the speed
|
|
|
-specified by <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>drivedownFull</span></span>,
|
|
|
-more or less. An unreachably-large value for <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>drivedownStart</span></span>
|
|
|
-will effectively disable this feature.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The last 2 properties allow you to increase acceleration at
|
|
|
-low speeds. <span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>boostGain</span></span>
|
|
|
-specifies the gain at zero speed, so a value greater than 1 will increase
|
|
|
-vehicle acceleration from a standing start. This supplemental gain then fades
|
|
|
-to 1 at the speed specified by <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>boostSpeed</span></span>. A <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>boostGain</span></span> of
|
|
|
-1 effectively disables this feature.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Racing cars typically make use of airfoils to produce a
|
|
|
-downward force at high speeds. This improves handling and performance. gameplay
|
|
|
-provides the following property to simulate this effect:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>// Aerodynamic downforce effect
|
|
|
-(optional)<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-no-proof:yes'>downforce<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// proportional control of downforce<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The value of downforce controls the amount of downward force
|
|
|
-at a given speed. In particular, the value of this property represents the
|
|
|
-product of a reference area and an aerodynamic coefficient. However what<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s important is that this
|
|
|
-property acts as a constant of proportionality in computing the downward force
|
|
|
-as a function of speed. A value of 0 effectively disables this feature.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h4>PhysicsVehicleWheel</h4>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Tire and suspension characteristics can be specified at each
|
|
|
-individual wheel as follows:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>collisionObject <wheelID></p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>type<span
|
|
|
-style='mso-spacerun:yes'> </span>= VEHICLE_WHEEL</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>steerable<span
|
|
|
-style='mso-spacerun:yes'> </span>= <bool><span
|
|
|
-style='mso-spacerun:yes'> </span>// indicates whether wheel is steerable</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelDirection<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float> //
|
|
|
-direction of strut extension, in chassis space</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelAxle<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float>
|
|
|
-// direction of axle (spin axis), in chassis space</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutConnectionOffset<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float, float, float> // offset
|
|
|
-from default strut connection point</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutRestLength<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// strut rest length</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutTravelMax<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// maximum strut travel</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutStiffness<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// strut stiffness, normalized to chassis
|
|
|
-mass</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutDampingCompression<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// strut damping under compression,
|
|
|
-normalized to chassis mass</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutDampingRelaxation<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// strut damping under relaxation,
|
|
|
-normalized to chassis mass</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutForceMax<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// maximum strut force</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>frictionBreakout<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// breakout friction</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>wheelRadius<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// wheel radius</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>rollInfluence<span
|
|
|
-style='mso-spacerun:yes'> </span>= <float><span
|
|
|
-style='mso-spacerun:yes'> </span>// how side friction affects chassis roll,
|
|
|
-normalized</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>gameplay automatically determines a default location on the
|
|
|
-chassis for the strut connection point based on the position of the wheel nodes
|
|
|
-relative to the car body. The <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>strutConnectionOffset</span></span> property allows
|
|
|
-you to specify an offset from the default. This is useful, for example, if the
|
|
|
-origin of the car body is not located at the center of the mesh:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>strutConnectionOffset =
|
|
|
-0.0, 0.0, 1.4</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574584">Animation</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animation is a key component to bringing your game to life.
|
|
|
-Within gameplay, there is support to create both property animations and
|
|
|
-character animations. The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Animation</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-provides factory methods for creating animations on properties of classes that
|
|
|
-extend </span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.
|
|
|
-Character animations from within the scene file are imported and stored on the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> they
|
|
|
-target. All animations on a </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> can
|
|
|
-be obtained by ID.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>AnimationTargets</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Transform</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MaterialParameter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> are
|
|
|
-animation targets.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animations can be created on the scale, rotation and
|
|
|
-translation properties of the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Transform</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.
|
|
|
-Animations can also target any </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>,
|
|
|
-which extends </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Transform</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Also, animations can target instances of </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::MaterialParameter</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. Any
|
|
|
-parameters on a material of type </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>float</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>integer</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, or
|
|
|
-2-, 3-, and 4-dimensional vectors can be animated.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating property animations</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animations are created from the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-provides methods to create simple two key frame animations using </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>createAnimationFromTo()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, and </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>createAnimationFromBy()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.
|
|
|
-Multiple key frame sequences can be created from </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>createAnimation()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is an example of how to create a multiple key frame
|
|
|
-animation on a node</span><span style='mso-bidi-font-size:12.0pt;font-family:
|
|
|
-"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>’</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>s
|
|
|
-translation properties:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>unsigned</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>int</span></span> keyCount = 3;</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>unsigned</span></span> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>long</span></span> keyTimes[] = {0L, 500L, 1000L};</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> keyValues[] = </p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> 0.0f, -4.0f, 0.0f, </p>
|
|
|
-
|
|
|
-<p class=Code> 0.0f, 0.0f, 0.0f, </p>
|
|
|
-
|
|
|
-<p class=Code> 0.0f, 4.0f, 0.0f </p>
|
|
|
-
|
|
|
-<p class=Code>}; </p>
|
|
|
-
|
|
|
-<p class=Code>Animation* sampleAnim = enemyNode->createAnimation(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"sample"</span></span>,</p>
|
|
|
-
|
|
|
-<p class=Code><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, </p>
|
|
|
-
|
|
|
-<p class=Code><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, keyTimes, keyValues, </p>
|
|
|
-
|
|
|
-<p class=Code><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 style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><span
|
|
|
-style='mso-spacerun:yes'> </span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is the same animation specified in a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.animation</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-that can also be loaded by the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationTarget</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>animation sample</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>property =
|
|
|
-ANIMATE_TRANSLATE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>keyCount = 3</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>keyTimes = 0, 500, 1000</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>keyValues = 0.0 -4.0
|
|
|
-0.0 0.0 0.0 0.0 0.0 4.0 0.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>curve = LINEAR</p>
|
|
|
-
|
|
|
-<p class=Code>}<span class=inlinecode><span style='mso-bidi-font-family:Consolas'><o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=inlinecode><span style='mso-bidi-font-family:Consolas'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To create the animation from this file you would call the
|
|
|
-following code: <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>Animation* sampleAnim = enemyNode->createAnimation(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"sample"</span></span>, <span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"sample.animation"</span></span>);</p>
|
|
|
-
|
|
|
-<h3>Curves</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>There are many different interpolation types defined within
|
|
|
-the </span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::Curve</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-that can be used to interpolate through the animation data.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Character animations</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Character animations are complex because they can be
|
|
|
-composed of multiple animations targeting numerous joints within a character
|
|
|
-model. For this reason, character animations are usually included within the
|
|
|
-scene file and are imported when the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.gpb</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-is loaded. To simplify and optimize all animations under single animation. The
|
|
|
-gameplay-encoder supports grouping all the animation on joints leading up to a
|
|
|
-common root joint under a single animation. This is an option in the
|
|
|
-gameplay-encoder using the </span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>–</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>groupAnimations
|
|
|
-or </span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>–</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>g option. This groups them under
|
|
|
-a single animation called </span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>animations</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>These animations can be obtained by calling </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AnimationTarget::getAnimation()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> specifying
|
|
|
-the animation</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>s ID.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>AnimationClips</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::AnimationClip</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is
|
|
|
-created from the </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Animation</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-and is a snapshot of the animation that can be played back, manipulated with
|
|
|
-speed and repeated.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Here is an </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AnimationClip</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that
|
|
|
-has been created from a character animation of an elf:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>AnimationClip* elfRun = elfAnimation->createClip(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"elf_run"</span></span>, 200L, 310L);</p>
|
|
|
-
|
|
|
-<p class=Code>elfRun->setRepeatCount(AnimationClip::REPEAT_INDEFINITE);</p>
|
|
|
-
|
|
|
-<p class=Code>elfRun->setSpeed(2.0f);</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animation clips can be specified within an </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.animation</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-that can be given to an animation to create clips. The total number of frames
|
|
|
-that make up the animation must be specified in the file. The begin and end
|
|
|
-parameters of each clip are specified in frames. An assumption that the
|
|
|
-animation runs at 60 frames per second has been made. Here is an example of an </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.animation</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> file
|
|
|
-for an elf animation:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>animation elf</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>frameCount = 350</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>clip idle</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>begin =<span
|
|
|
-style='mso-spacerun:yes'> </span>0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>end = 75</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>repeatCount =
|
|
|
-INDEFINITE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>clip walk</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>begin = 75</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>end = 200</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>repeatCount =
|
|
|
-INDEFINITE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>clip run</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>begin = 200</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>end = 310</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-tab-count:1'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>repeatCount
|
|
|
-= INDEFINITE</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>speed = 2.0</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>clip jump</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>begin = 310</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>end = 350</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>repeatCount = 1</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>}</p>
|
|
|
-
|
|
|
-<p class=Code>} </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animations can be played back by calling </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Animation::play()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>,
|
|
|
-passing a clip ID, or by calling </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AnimationClip::play()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-directly on the clip. Animations can also be paused and stopped in the same
|
|
|
-fashion.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Animation blending</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::AnimationClip</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-has a blend weight property that can be used to blend multiple animations.
|
|
|
-There is also a method called </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AnimationClip::crossFade()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> that
|
|
|
-conveniently provides the ability to fade the currently playing clip out and
|
|
|
-fade in the specified clip over a given period of time.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>AnimationClip listeners</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Animation events can be triggered on a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AnimationClip</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> by
|
|
|
-registering instances of </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::AnimationClip::Listener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with
|
|
|
-the clip. The listeners can be registered to be called back at the beginning or
|
|
|
-end of the clip, or at any specific time throughout the playback of the clip.
|
|
|
-This can be useful for starting a particle emitter when a character</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>s foot hits the ground in an
|
|
|
-animation, or to play back a sound of a gun firing during an animation of an
|
|
|
-enemy shooting.<a name=d18e3a1310></a><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574585">Audio</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>You can integrate 3-D audio into your game using the audio
|
|
|
-services supported by gameplay. The framework uses a very traditional way of
|
|
|
-representing audio. The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::AudioController</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-manages all of the playing audio sources.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating an AudioSource</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>An </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>AudioSource</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> can be created from audio files
|
|
|
-or from a .audio property file. Ogg audio files are compressed, so they use
|
|
|
-less memory than .wav files.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>AudioSource* wheelsSound = AudioSource::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/longboard.wav"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code>AudioSource* backgroundMusic = AudioSource::create(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"res/music.ogg"</span></span>);</p>
|
|
|
-
|
|
|
-<h3>Playing the AudioSource</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The following example illustrates how to play audio:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>wheelsSound->play();</p>
|
|
|
-
|
|
|
-<h3>Updating the AudioListener</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>By default, the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AudioListener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is
|
|
|
-bound to the active camera of the scene. You can manually bind the camera to
|
|
|
-the </span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AudioListener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> using
|
|
|
-</span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::AudioListener::setCamera()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Audio Properties</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::AudioSource</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> class
|
|
|
-has methods for modifying the properties of the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>AudioSource</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, such
|
|
|
-as pitch, gain, and velocity.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Audio sources can be loaded from </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>.audio</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-property files to make it easier to set these properties.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>audio fireball</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>path =
|
|
|
-res/audio/fireball.wav</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>looped = false</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>gain = 0.7</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>pitch = 0.5</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>velocity = 0.5 0.0 1.0</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Binding an AudioSource to a node</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>An </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>AudioSource</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> can be bound to a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Node</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> in
|
|
|
-your scene using </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Node::setAudioSource()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. The
|
|
|
-position of the audio source is automatically updated when the node is
|
|
|
-transformed.<a name=d19e3a1310></a><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574586">User Interface</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The gameplay framework provides a set of user interface (UI)
|
|
|
-controls that can be used to create menus and HUDs. To add UI elements to your
|
|
|
-game, you'll create a form from a properties file and call update() and draw()
|
|
|
-on it. Other than adding listeners to buttons and modifying controls
|
|
|
-programmatically, there's not much code to write in your game. Most of the work
|
|
|
-of defining a form's look and feel happens in the .form and .theme files, as
|
|
|
-well as the texture atlas used by the theme.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Creating a form</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To create a form, pass a properties file to </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Form::create()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to
|
|
|
-instantiate a form. The top-most namespace in the file must be named 'form'.
|
|
|
-The following properties are available for forms:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>form <formID> </p>
|
|
|
-
|
|
|
-<p class=Code>{<span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// Form
|
|
|
-properties.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>theme <span
|
|
|
-style='mso-tab-count:3'> </span>= <Path to .theme file><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>layout <span
|
|
|
-style='mso-tab-count:3'> </span>= <Layout::Type constant><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>style <span
|
|
|
-style='mso-tab-count:3'> </span>= <styleID><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>position <span
|
|
|
-style='mso-tab-count:3'> </span>= <x, y><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>alignment <span
|
|
|
-style='mso-tab-count:2'> </span>= <Control::Alignment constant><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>size<span
|
|
|
-style='mso-spacerun:yes'> </span><span style='mso-tab-count:3'> </span>=
|
|
|
-<width, height><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>autoWidth <span
|
|
|
-style='mso-tab-count:2'> </span>= <bool><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>autoHeight <span
|
|
|
-style='mso-tab-count:2'> </span>= <bool><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>width <span
|
|
|
-style='mso-tab-count:3'> </span>= <width><span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>height <span
|
|
|
-style='mso-tab-count:3'> </span>= <height></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>// All the Controls
|
|
|
-within this Form.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>container { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>label { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>textBox { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>button { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>checkBox { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>radioButton { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span>slider { }<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Form
|
|
|
-property information:</span></b><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The following is a list of form properties, and their
|
|
|
-purpose:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>theme</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: See
|
|
|
-"Creating a theme" below.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>layout</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:
|
|
|
-Member of Layout::Type enum.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A
|
|
|
-style from the theme.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>position</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The
|
|
|
-on-screen position, in pixels.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>alignment</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:
|
|
|
-Align the form's position within the bounds of the screen. Note the position
|
|
|
-property will be ignored if the </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>alignment</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-property has been set.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>size</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The
|
|
|
-size of the form, in pixels.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use
|
|
|
-of this property will result in a form with a width spanning the entire
|
|
|
-display. Note the width property will be ignored if </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>autoWidth</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has
|
|
|
-been set.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Use
|
|
|
-of this property will result in a form with a height spanning the entire
|
|
|
-display. The height property will be ignored if </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>autoHeight</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> has
|
|
|
-been set.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>width</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can
|
|
|
-be used in place of </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>size</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>height</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: Can
|
|
|
-be used in place of </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>size</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A style determines the look of a control and is defined in
|
|
|
-the theme file, detailed below. Position and size attributes are determined for
|
|
|
-controls using the same properties as listed above for forms. Controls can be
|
|
|
-aligned within their parent container by using the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>alignment</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-property. Setting </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>autoWidth</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> or </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>autoHeight</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to
|
|
|
-true will result in a control the width or height of its parent container. You
|
|
|
-can add controls to the form by placing namespaces within it. The available
|
|
|
-controls are:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d19e113a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Container: A container has all the same
|
|
|
-available properties as a form, except for 'theme'. You can add more controls
|
|
|
-within a container to group them together, and/or to apply a different layout
|
|
|
-type to a group of controls.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Label: A simple text label. Available
|
|
|
-properties: 'style', 'position', </span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>alignment</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>, 'size', </span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>‘</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>autoWidth</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>, </span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>‘</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>autoHeight</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>, and 'text'.<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>TextBox: Editable text label. A TextBox
|
|
|
-control has the same available properties as label.<span style='mso-tab-count:
|
|
|
-1'> </span><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Button: A button. A button control has
|
|
|
-the same available properties as label.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>CheckBox: A button that toggles between
|
|
|
-'checked' and 'unchecked' states when tapped or clicked. A CheckBox has the
|
|
|
-same available properties as label, plus 'checked' for its starting state.<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>RadioButton: RadioButton has the same
|
|
|
-available properties as CheckBox, with an additional property, 'group'. Only
|
|
|
-one radio button in a given group can be selected at a time.<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Slider: A marker that can slide along a
|
|
|
-track between its end-caps. A slider makes use of the following properties: <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>slider <controlID></p>
|
|
|
-
|
|
|
-<p class=Code>{<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>style = <styleID> <span
|
|
|
-style='mso-spacerun:yes'> </span>// A style from the theme.<span
|
|
|
-style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>position = <x, y> <span
|
|
|
-style='mso-spacerun:yes'> </span>// Position of the control on-screen, in
|
|
|
-pixels.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>size = <width, height> // The size of
|
|
|
-the control, in pixels.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>min = <float> <span
|
|
|
-style='mso-spacerun:yes'> </span>// The value of the left- /
|
|
|
-bottom-most point on the slider.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>max = <float> <span
|
|
|
-style='mso-spacerun:yes'> </span>// The value of the right- / top-most
|
|
|
-point on the slider.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>value = <float> <span
|
|
|
-style='mso-spacerun:yes'> </span>// The default position of the
|
|
|
-marker.<span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>step = <float> <span
|
|
|
-style='mso-spacerun:yes'> </span>// If greater than 0, force the marker
|
|
|
-to snap to discrete</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>// multiples of ‘step’.</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>text = <string> <span
|
|
|
-style='mso-spacerun:yes'> </span>// Text to display above, below or
|
|
|
-alongside the slider</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span><span
|
|
|
-style='mso-spacerun:yes'> </span>// (depending on the
|
|
|
-style).</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<h3>Creating a theme</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>A theme contains the information a form needs to determine
|
|
|
-the look of its controls. A theme has one property, 'texture', which points to
|
|
|
-a texture atlas containing the images used by the theme. Cursor images, skins,
|
|
|
-and lists of images used by controls are defined in their own namespaces. The
|
|
|
-rest of the theme consists of style namespaces. A style describes the border,
|
|
|
-margin, and padding of a control, what images, skins, and cursors are
|
|
|
-associated with a control, and font properties to apply to a control's
|
|
|
-text.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>theme <themeID></p>
|
|
|
-
|
|
|
-<p class=Code>{ </p>
|
|
|
-
|
|
|
-<p class=Code> texture = <Path to texture> </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> cursor <cursorID> </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> region = <x, y, width, height> </p>
|
|
|
-
|
|
|
-<p class=Code> color = <#ffffffff> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> imageList <imageID> </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> image checked </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> region = <x, y, width, height> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> image unchecked </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> region = <x, y, width, height> </p>
|
|
|
-
|
|
|
-<p class=Code> color = <#fffffffff> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> color = <#fffffffff> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> skin <skinID> </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> border </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> top = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> bottom = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> left = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> right = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code> region = <x, y, width, height> </p>
|
|
|
-
|
|
|
-<p class=Code> color = <#ffffffff> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code> style <styleID> </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> margin </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> top = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> bottom = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> left = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> right = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> </p>
|
|
|
-
|
|
|
-<p class=Code> padding </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> top = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> bottom = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> left = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> right = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> </p>
|
|
|
-
|
|
|
-<p class=Code> stateNormal </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> skin = <skinID> </p>
|
|
|
-
|
|
|
-<p class=Code> imageList = <imageID> </p>
|
|
|
-
|
|
|
-<p class=Code> cursor = <cursorID> </p>
|
|
|
-
|
|
|
-<p class=Code> font = <Path to font> </p>
|
|
|
-
|
|
|
-<p class=Code> fontSize = <int> </p>
|
|
|
-
|
|
|
-<p class=Code> textColor = <#ffffffff> </p>
|
|
|
-
|
|
|
-<p class=Code> textAlignment = <Control::Alignmentconstant> </p>
|
|
|
-
|
|
|
-<p class=Code> rightToLeft = <bool> </p>
|
|
|
-
|
|
|
-<p class=Code> opacity = <float> </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> stateFocus </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> skin = <skinID> </p>
|
|
|
-
|
|
|
-<p class=Code> ... </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> stateActive </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> skin = <skinID> </p>
|
|
|
-
|
|
|
-<p class=Code> ... </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> stateDisabled </p>
|
|
|
-
|
|
|
-<p class=Code> { </p>
|
|
|
-
|
|
|
-<p class=Code> skin = <skinID> </p>
|
|
|
-
|
|
|
-<p class=Code> ...</p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code> } </p>
|
|
|
-
|
|
|
-<p class=Code>} </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Theme
|
|
|
-property information:</span></b><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The following is a list of theme properties, and their sub-properties
|
|
|
-if applicable.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>texture</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: The
|
|
|
-path to the texture atlas used by this theme. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>cursor</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:
|
|
|
-Describes a single image, to be used as a cursor.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Sub-properties of cursor:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d19e173a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
|
|
|
-pixels.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>color: Blend color to apply to this
|
|
|
-cursor.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>imageList: A collection of images used
|
|
|
-by controls. <a name=d19e183a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>image: A single image within the list. <a
|
|
|
-name=d19e187a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>region: Region within the texture, in
|
|
|
-pixels. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:63.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>color: Optionally override image-list
|
|
|
-blend color. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>color: Default blend color for images
|
|
|
-that don't specify their own.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>skin</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>:
|
|
|
-Defines the border and background of a control.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Sub-properties of skin:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d19e210a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>border : The corners and edges of the
|
|
|
-given region will be used as border sprites. <a name=d19e214a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>top : Height of top border, top
|
|
|
-corners. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>bottom: Height of bottom border, bottom
|
|
|
-corners. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>left: Width of left border, left
|
|
|
-corners. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>right: Width of right border, right
|
|
|
-corners.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>region: Total container region
|
|
|
-including the entire border. A region within the texture, in pixels.<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>color: The blend color to apply to this
|
|
|
-skin.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>style</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A
|
|
|
-combination of theme attributes that can be applied to any control.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Sub-properties of style:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d19e244a1310></a><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>margin: Layouts may make use of a
|
|
|
-style's margin to put space between adjacent controls. <a name=d19e248a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>top: Empty space above a control. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>bottom: Empty space below a control. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>left: Empty space left of a control. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>right: Empty space right of a control.<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>padding: The space between a control's
|
|
|
-border and its content. <a name=d19e265a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>top: Empty space between the top border
|
|
|
-and content. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>bottom: Empty space between the top
|
|
|
-border and content. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>left: Empty space between the left
|
|
|
-border and content. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>right: Empty space between the right
|
|
|
-border and content.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>stateNormal: Properties used when a
|
|
|
-control is in the normal state. <a name=d19e282a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>skin: Skin to use for border and
|
|
|
-background sprites. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>imageList: Images to use for this
|
|
|
-state. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>cursor: Cursor to use when the mouse is
|
|
|
-over this control. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>font: Font to use for rendering text. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>fontSize: Size of text. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>textColor: Color of text. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>textAlignment: Align text within the
|
|
|
-control</span><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>’</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>s content area. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>rightToLeft: Whether to draw text from
|
|
|
-right to left. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>opacity: Opacity to apply to all
|
|
|
-text/border/icon colors.<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>stateFocus: Properties used when a
|
|
|
-control is in focus. <a name=d19e315a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
|
|
|
-Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
|
|
|
-1'> </span><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>stateActive: Properties used when a
|
|
|
-control is active. This is when a touch/mouse is down within the control. If
|
|
|
-not specified, the normal overlay will be used. <a name=d19e323a1310></a><span
|
|
|
-style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
|
|
|
-Unspecified properties will inherit from stateNormal.<span style='mso-tab-count:
|
|
|
-1'> </span><span style='mso-tab-count:1'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>stateDisabled: Properties used when a
|
|
|
-control is disabled. If not specified, the normal overlay will be used. <a
|
|
|
-name=d19e332a1310></a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:42.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Same properties as stateNormal.
|
|
|
-Unspecified properties will inherit from stateNormal.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The top-level property of a theme is the path to its texture
|
|
|
-atlas. This is a single image containing all the sprites used by the theme. The
|
|
|
-skin, cursor, and imageList namespaces within a theme file refer to regions of
|
|
|
-this image to use to represent their various states.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Skin:</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> A
|
|
|
-rectangular area representing a border and background. A container namespace
|
|
|
-will specify the rectangular region and blend color as well as the border
|
|
|
-sizes. From this, the region will be divided into nine areas: four corners,
|
|
|
-four borders, and the center background area. Note that the top and bottom
|
|
|
-borders will be stretched horizontally; the left and right borders will stretch
|
|
|
-vertically; and the center of the container will stretch in both directions.
|
|
|
-The corners will never be stretched. It's perfectly valid to set any border
|
|
|
-size to 0. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>Cursor</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A
|
|
|
-single rectangular area representing a mouse cursor.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ImageList</span></b><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>: A
|
|
|
-collection of images used by controls. Images for multiple control types can be
|
|
|
-combined into one list. Controls use the following images:<a name=d19e357a1310></a><span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>CheckBox: 'checked', 'unchecked'<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>RadioButton: 'selected, 'unselected'<span
|
|
|
-style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>Slider: 'minCap', 'maxCap', 'track',
|
|
|
-'marker'<span style='mso-tab-count:2'> </span><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:21.0pt;text-align:justify;text-indent:
|
|
|
--21.0pt;mso-list:l10 level1 lfo1'><![if !supportLists]><span style='font-size:
|
|
|
-8.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
|
|
|
-Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
|
|
|
-style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]><span style='mso-bidi-font-size:12.0pt;
|
|
|
-mso-bidi-font-family:"Times New Roman"'>TextBox: 'textCaret'</span><span
|
|
|
-style='mso-tab-count:6'> </span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Note that you may specify separate image lists for each
|
|
|
-state in a style.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Adding a form to your game </h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Once you have a form, theme, and texture atlas, only a small
|
|
|
-amount of code is required in order to actually display your UI within your
|
|
|
-game. There are two options for displaying forms: two-dimensionally, where the
|
|
|
-form is drawn directly to the display and three-dimensionally, where the form
|
|
|
-is assigned to a node within the game's scene and displayed on a quad. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The 2-D case is simple. To initialize a form, pass the path
|
|
|
-to your .form file to </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Form::create()</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> to be returned a pointer to
|
|
|
-your form. Now, simply call </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Form::update()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on
|
|
|
-the form during your game's </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>update()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-method, and call </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Form::draw()</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form during </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>render()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> . See
|
|
|
-the section below on event handling to learn how to react to player input from
|
|
|
-within a form. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>The 3-D method of drawing forms is somewhat more advanced.
|
|
|
-For starters, you'll need a scene with at least one node in it. Call </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Node::setForm()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> to
|
|
|
-attach the form to the node. This call will also generate a rectangular model
|
|
|
-with the dimensions of the form. Scale, rotate, and translate the node as
|
|
|
-necessary. Now, calling </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>Form::draw()</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> on the form will render the
|
|
|
-contents of the form into a framebuffer and use that framebuffer to texture the
|
|
|
-form's model.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h3>Event handling within forms</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Controls will trigger events when the user interacts with
|
|
|
-them. You can handle these events by setting listeners on individual controls. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>All controls can trigger the mouse / touch events </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PRESS</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>RELEASE</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> , and
|
|
|
-</span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>CLICK</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> .
|
|
|
-Sliders, check boxes, and radio buttons can also trigger a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>VALUE_CHANGED</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event
|
|
|
-so that you can update your game as a slider is moving or when a radio button
|
|
|
-becomes unselected. Finally, text boxes trigger a </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>TEXT_CHANGED</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> event
|
|
|
-any time a character is entered or deleted (but not when the cursor is moved
|
|
|
-within the text box). Use </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>TEXT_CHANGED</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> along with the </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>getLastKeyPress()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-method on a </span><span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>TextBox</span></span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'> to do things like accepting a
|
|
|
-player name when the return key is pressed. <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>To retrieve a control from your form, call </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Form::getControl()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> with
|
|
|
-the ID of the control you're looking for. Cast this to the correct control
|
|
|
-pointer type and then call </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>addListener()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> on
|
|
|
-it. This method takes an object that implements </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Control::Listener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> as
|
|
|
-well as an int representing the events to listen for. You can bitwise-OR
|
|
|
-together event types. For example, the following code listens for </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>PRESS</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> and </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>RELEASE</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-events on a button: <o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code>Button* myButton = <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>static_cast</span></span><Button*>(myForm->getControl(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"myButton"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=Code>myButton->addListener(<span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>this</span></span>, Control::Listener::PRESS | Control::Listener::RELEASE);<span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> </span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>In this example, the game itself implements </span><span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Control::Listener</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>. This
|
|
|
-is easy to do as there's only one method a listener needs to implement, which
|
|
|
-should look something like this:<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>void</span></span> MyGame::controlEvent(Control* control, EventType evt)</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>switch</span></span>(evt)</p>
|
|
|
-
|
|
|
-<p class=Code> {</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>case</span></span> Control::Listener::PRESS:</p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>if</span></span> (strcmp(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"myButton"</span></span>, control->getID()) == 0)</p>
|
|
|
-
|
|
|
-<p class=Code> {</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Do something.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> }</p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>break</span></span>;</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>case</span></span> Control::Listener::RELEASE:</p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>if</span></span> (strcmp(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"myButton"</span></span>, control->getID()) == 0)</p>
|
|
|
-
|
|
|
-<p class=Code> {</p>
|
|
|
-
|
|
|
-<p class=Code><span class=codecomment><span style='mso-bidi-font-family:Consolas'> // Do something else.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code> }</p>
|
|
|
-
|
|
|
-<p class=Code> <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>break</span></span>;</p>
|
|
|
-
|
|
|
-<p class=Code> }</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'>Note that </span><span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>getControl()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'> is
|
|
|
-also a method on Container. If multiple controls share the same ID but are
|
|
|
-children of separate containers, the parent container can be retrieved first
|
|
|
-and then </span><span class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>Container::getControl()</span></span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>
|
|
|
-called to retrieve the specific control needed.<a name=d20e3a1310></a><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574587">Scripting</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The gameplay framework has a full set of Lua script bindings
|
|
|
-allowing users to write the majority of their game completely from scripts.
|
|
|
-Also included is an open-source tool that can be used to generate bindings for
|
|
|
-user-defined classes (including classes that depend on features and technology
|
|
|
-of the gameplay framework itself).</p>
|
|
|
-
|
|
|
-<h3>Writing Lua scripts</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>To write Lua scripts, you can use any text editor or IDE. If
|
|
|
-Visual Studio is your editor of choice, it is recommended that you install the
|
|
|
-Lua Language Support extension, which adds syntax highlighting to the editor
|
|
|
-(available here: <a href="http://vslua.codeplex.com/">http://vslua.codeplex.com/</a>).</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>To generate your own bindings, you will need to download and
|
|
|
-install Doxygen (available here: <a href="http://www.doxygen.org/"><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>http://www.doxygen.org</span></a>).</p>
|
|
|
-
|
|
|
-<h3>Lua Basics</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>For an introductory look at scripting with Lua, including
|
|
|
-basic language features, visit <a href="http://www.lua.org/pil/">http://www.lua.org/pil/</a>.
|
|
|
-Note that the documentation available at this link is aimed at Lua 5.0 and will
|
|
|
-contain some outdated APIs. However, the basic usage of the language remains
|
|
|
-the same.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>There are two conventions that gameplay uses within its Lua
|
|
|
-script bindings. First, in order to create a new object, the user calls the <b
|
|
|
-style='mso-bidi-font-weight:normal'>new</b> function on the class and passes the
|
|
|
-correct arguments for the corresponding C++ constructor. e.g.<span
|
|
|
-class=codekeyword><span style='font-size:10.0pt;mso-bidi-font-size:11.0pt;
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'> </span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codekeyword><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codecomment><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>-- Create a new Vector2 object.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>local</span></span> v = Vector2.new(1.0, 3.7)</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Second, to access or set a public member variable of a
|
|
|
-class, the user simply calls a Lua function with the same name, passing no
|
|
|
-arguments to access the variable or passing one argument in order to set the
|
|
|
-variable. e.g.<span class=codekeyword><span style='font-size:10.0pt;mso-bidi-font-size:
|
|
|
-11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'> <o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codekeyword><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'><o:p> </o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codecomment><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>-- Print out the x member variable.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>print(v:x())</p>
|
|
|
-
|
|
|
-<p class=Code> </p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codecomment><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>-- Set the y member variable to 4.2.<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>V:y(4.2)</p>
|
|
|
-
|
|
|
-<h3>Game <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic"'>–</span> Script Event Callbacks</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>In order to write a game primarily using Lua scripts, one
|
|
|
-must register for the main game events (initialize, update, render, and
|
|
|
-finalize), along with the desired input event handlers. To do this, you must
|
|
|
-edit the <span style='font-family:"Times New Roman","serif";mso-ascii-font-family:
|
|
|
-"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>scripts<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> section of the game<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>s game.config file. If
|
|
|
-the user has a Lua script with functions for the four major events and
|
|
|
-functions that handle the key and touch input, the <span style='font-family:
|
|
|
-"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>‘</span>scripts<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span>
|
|
|
-section would look something like this:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>scripts</p>
|
|
|
-
|
|
|
-<p class=Code>{</p>
|
|
|
-
|
|
|
-<p class=Code> initialize = res/script.lua#initialize</p>
|
|
|
-
|
|
|
-<p class=Code> update = res/script.lua#update</p>
|
|
|
-
|
|
|
-<p class=Code> render = res/script.lua#render</p>
|
|
|
-
|
|
|
-<p class=Code> finalize = res/script.lua#finalize</p>
|
|
|
-
|
|
|
-<p class=Code> keyEvent = res/script.lua#keyEvent</p>
|
|
|
-
|
|
|
-<p class=Code> touchEvent = res/script.lua#touchEvent</p>
|
|
|
-
|
|
|
-<p class=Code>}</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Then on the C++ side, as usual, you must derive a class from
|
|
|
-Game and create a static instance on the stack. However, in the case of a
|
|
|
-script-based game, the .h file can simply contain the class definition with all
|
|
|
-empty implementations while the .cpp file would contain the static instance.
|
|
|
-For example,</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>MyScriptGame.h</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>class</span></span> MyScriptGame: <span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>public</span></span> Game</p>
|
|
|
-
|
|
|
-<p class=Code>{ </p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>protected</span></span>:</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> initialize() {};</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> finalize() {};</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> update(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime)
|
|
|
-{};</p>
|
|
|
-
|
|
|
-<p class=Code> <span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span> render(<span
|
|
|
-class=codekeyword><span style='mso-bidi-font-family:Consolas'>float</span></span> elapsedTime)
|
|
|
-{};</p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=Code>};</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>MyScriptGame.cpp</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>#include</span></span> <span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"MyScriptGame.h"</span></span></p>
|
|
|
-
|
|
|
-<p class=Code><span style='mso-spacerun:yes'> </span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span class=codecomment><span style='font-size:10.0pt;
|
|
|
-mso-bidi-font-size:11.0pt;mso-bidi-font-family:TradeGothicNextLTPro-Lt'>// Declare our game instance<o:p></o:p></span></span></p>
|
|
|
-
|
|
|
-<p class=Code>MyScriptGame game;</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The sample does not require any other C++ implementation. For
|
|
|
-a complete sample game using the techniques described above, see sample05-lua
|
|
|
-as one-to-one mapping of sample00-mesh with a box instead of a duck. It also
|
|
|
-has some additional scripting code showcasing AIAgent and AIStates.</p>
|
|
|
-
|
|
|
-<h3>Extending ScriptTarget </h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>To add scriptable events to your own class, you simply
|
|
|
-derive from the class <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::ScriptTarget </span></span>and add the
|
|
|
-required function calls. First, to define the scriptable events that are
|
|
|
-supported for the class, we call addScriptEvent with the name of the event and,
|
|
|
-optionally (depending on if the callback takes arguments or not), the parameter
|
|
|
-string for a valid script callback function for that event (the parameter
|
|
|
-string follows the format of the parameter string argument to <span
|
|
|
-class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>ScriptController::executeFunction</span></span>).
|
|
|
-For example, to add a <span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>‘</span>notify<span
|
|
|
-style='font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic";
|
|
|
-mso-bidi-font-family:TradeGothicNextLTPro-Lt'>’</span> event that passes an
|
|
|
-integer to the callback, we would do the following:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>addScriptEvent(<span class=codestring><span style='mso-bidi-font-family:
|
|
|
-Consolas'>"notify"</span></span>, <span class=codestring><span
|
|
|
-style='mso-bidi-font-family:Consolas'>"i"</span></span>);</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The supported format identifiers for passed parameters are
|
|
|
-as follows:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<table class=devguidetable border=0 cellspacing=0 cellpadding=0
|
|
|
- style='border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
|
|
|
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'><span
|
|
|
- style='mso-spacerun:yes'> </span>Format <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=tableheader style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
- "Times New Roman";mso-bidi-font-weight:normal'>Parameter Type (result)<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:1'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>c, h, i, l<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt'>Signed Integer (int)</span><span
|
|
|
- style='font-size:11.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'><o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:2'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>u<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Unsigned Integer (unsigned int)<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:3'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>b<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Boolean (bool) <o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:4'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>f, d<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Floating Point (double)<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:5'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>s<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>String (char*)<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:6'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>p<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Pointer (void*)<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:7'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'>[x]<o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:whitesmoke;
|
|
|
- padding:0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:128'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Enum Value [x]<o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr style='mso-yfti-irow:8;mso-yfti-lastrow:yes'>
|
|
|
- <td width=241 valign=top style='width:180.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span class=inlinecode><span style='font-size:11.0pt;
|
|
|
- mso-bidi-font-family:TradeGothicNextLTPro-Lt'><x><o:p></o:p></span></span></p>
|
|
|
- </td>
|
|
|
- <td width=396 valign=top style='width:296.9pt;background:#E6E6E6;padding:
|
|
|
- 0in 5.4pt 0in 5.4pt'>
|
|
|
- <p class=MsoNormal style='mso-layout-grid-align:auto;text-autospace:ideograph-numeric ideograph-other;
|
|
|
- mso-yfti-cnfc:64'><span style='font-size:11.0pt;mso-bidi-font-size:12.0pt;
|
|
|
- mso-bidi-font-family:"Times New Roman"'>Object References/Pointers <x><o:p></o:p></span></p>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-</table>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>This step is usually done either in the constructor of the
|
|
|
-class or in a class initialization function. Next, the class will want to fire
|
|
|
-the event so that the script callback functions are actually called. This code
|
|
|
-is placed wherever it makes sense (depending on what the actual event is) and
|
|
|
-looks like so:</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code>fireScriptEvent<<span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>void</span></span>>(<span
|
|
|
-class=codestring><span style='mso-bidi-font-family:Consolas'>"notify"</span></span>, 14);</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The template argument corresponds to the return type of the
|
|
|
-callback function, the first parameter is the name of the event to fire, and
|
|
|
-the remaining arguments are the parameters to the actual callback function: in
|
|
|
-this case, the integer that is passed to the notify callback. To see a full
|
|
|
-example of a class that derives from <span class=inlinecode><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>gameplay::ScriptTarget </span></span>within
|
|
|
-gameplay, take a look at the <span class=inlinecode><span style='mso-bidi-font-family:
|
|
|
-TradeGothicNextLTPro-Lt'>gameplay::Control </span></span>class.</p>
|
|
|
-
|
|
|
-<h3>Tips using Lua with gameplay</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>To get printf-like functionality using gameplay
|
|
|
-and Lua, use the Lua print() function (note: gameplay overrides the default Lua
|
|
|
-print() function).</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>To do integer like comparisons or casts on a
|
|
|
-number variable x in Lua, use math.floor(x).</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>Make sure all your member function calls use ':'
|
|
|
-instead of '.'</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>Remember to access all gameplay variables,
|
|
|
-including static and global variables with '()' on the end of the name.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>Primitive data type arrays and object arrays are
|
|
|
-both inefficient when created in Lua and passed to C++, so try to minimize
|
|
|
-this.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>There is no reasonable way to unload a Lua
|
|
|
-script; thus, the recommended usage pattern is to put each script's variables
|
|
|
-and functions inside a table (see Lua technical note 7 at <a
|
|
|
-href="http://www.lua.org/notes/ltn007.html">http://www.lua.org/notes/ltn007.html</a>).
|
|
|
-i.e.</p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=Code style='margin-left:.5in'><span class=codecomment><span
|
|
|
-style='mso-bidi-font-family:Consolas'>-- If you want to load the module at most
|
|
|
-once, add a line like this.<br>
|
|
|
-</span></span><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>if</span></span>
|
|
|
-Module <span class=codekeyword><span style='mso-bidi-font-family:Consolas'>then</span></span>
|
|
|
-<span class=codekeyword><span style='mso-bidi-font-family:Consolas'>return</span></span>
|
|
|
-<span class=codekeyword><span style='mso-bidi-font-family:Consolas'>end</span></span><br>
|
|
|
-<span class=codecomment><span style='mso-bidi-font-family:Consolas'>-- Declare
|
|
|
-the module Module.</span></span><br>
|
|
|
-Module = {}<br>
|
|
|
-<br>
|
|
|
-<span class=codecomment><span style='mso-bidi-font-family:Consolas'>-- Declare
|
|
|
-a variable within the module.<br>
|
|
|
-</span></span>Module.a = 47<br>
|
|
|
-<br>
|
|
|
-<span class=codecomment><span style='mso-bidi-font-family:Consolas'>-- Declare
|
|
|
-a function within the module.<br>
|
|
|
-</span></span><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>function</span></span>
|
|
|
-Module.myFunc()<br>
|
|
|
-<span style='mso-spacerun:yes'> </span><span class=codekeyword><span
|
|
|
-style='mso-bidi-font-family:Consolas'>return</span></span> Module.a + 17<br>
|
|
|
-<span class=codekeyword><span style='mso-bidi-font-family:Consolas'>end</span></span><br>
|
|
|
-<br>
|
|
|
-<span class=codecomment><span style='mso-bidi-font-family:Consolas'>-- Cleanup
|
|
|
-function; call when done with this module.<br>
|
|
|
-</span></span><span class=codekeyword><span style='mso-bidi-font-family:Consolas'>function</span></span>
|
|
|
-cleanupModule()<br>
|
|
|
-<span style='mso-spacerun:yes'> </span>Module = nil<br>
|
|
|
-<span class=codekeyword><span style='mso-bidi-font-family:Consolas'>end</span></span></p>
|
|
|
-
|
|
|
-<p class=Code><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>Note: you can't pass an enumeration value to a
|
|
|
-function that doesn't explicitly take an enumeration type (i.e.
|
|
|
-Control::setTextColor, which takes an unsigned char). In these cases, you need
|
|
|
-to look up the enumeration values and pass them directly.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>On any function that returns a pointer that is
|
|
|
-owned by the user calling that function (i.e. a create() function), add
|
|
|
-@script{create} as the last line of its Doxygen comments.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>On any function, variable, class, struct, enum,
|
|
|
-etc. that should not be accessible from Lua (except for things that are static
|
|
|
-to a .cpp file, which are already ignored), add @script{ignore} to its Doxygen
|
|
|
-comments.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;mso-list:l17 level3 lfo9'><![if !supportLists]><span
|
|
|
-style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
|
|
|
-Wingdings'><span style='mso-list:Ignore'>§<span style='font:7.0pt "Times New Roman"'>
|
|
|
-</span></span></span><![endif]>On any functions, variables, classes, structs,
|
|
|
-enums, etc. that are local to a .cpp file, declare them as static 1) because it
|
|
|
-is good practice and 2) so that Lua does not generate bindings for them.</p>
|
|
|
-
|
|
|
-<h3>Generating user defined script bindings</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>The following instructions detail how to generate Lua script
|
|
|
-bindings for your own project. Note: this requires doxygen to be installed.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=1 type=1>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Copy the
|
|
|
- gameplay-luagen.doxyfile file to your project's root directory (and rename
|
|
|
- it). Then, either manually using a text editor or using the Doxywizard
|
|
|
- tool, go to the INPUT section and ensure both that the path to gameplay's
|
|
|
- 'src' folder is valid (relative to where the doxyfile is) and that your
|
|
|
- own source folder is added.</li>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Run doxygen using the
|
|
|
- above doxyfile from your project's root directory. For example, run <span
|
|
|
- class=inlinecode><span style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>doxygen
|
|
|
- my-project.doxyfile</span></span> from the command line or run Doxygen
|
|
|
- using the Doxywizard application.</li>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Create a 'lua' folder
|
|
|
- inside your source folder.</li>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Run gameplay-luagen using
|
|
|
- the following command (make sure you have a trailing '/' for the output
|
|
|
- directory (second) parameter):</li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'><span style='font-family:Consolas'>path-to-gameplay/bin/your-platform/gameplay-luagen.exe
|
|
|
-./xml path-to-your-source/lua/ <your-project-name-here><o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal style='margin-left:.5in'>Note: the parameter
|
|
|
-<your-project-name-here> is used as the namespace that the bindings are
|
|
|
-generated within. This can be anything you want <b style='mso-bidi-font-weight:
|
|
|
-normal'>except</b> for "gameplay".</p>
|
|
|
-
|
|
|
-<ol style='margin-top:0in' start=5 type=1>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Ensure that your project
|
|
|
- has "path-to-gameplay/gameplay/src/lua" in its include path.</li>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Add the generated Lua
|
|
|
- script bindings (.h/.cpp) files from path-to-your-source/lua to your
|
|
|
- project.</li>
|
|
|
- <li class=MsoNormal style='mso-list:l14 level1 lfo7'>Compile and run - now you
|
|
|
- can use your own classes from Lua scripts.</li>
|
|
|
-</ol>
|
|
|
-
|
|
|
-<h2><a name="_Toc337574588">License</a></h2>
|
|
|
-
|
|
|
-<p class=MsoNormal>The project is open sourced under the Apache 2.0 license.</p>
|
|
|
-
|
|
|
-<h3>Disclaimer</h3>
|
|
|
-
|
|
|
-<p class=MsoNormal>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
|
|
|
-OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
|
|
-EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
|
-OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
|
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
-DEALINGS IN THE SOFTWARE.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>©</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>2012 Research In Motion Limited.
|
|
|
-All rights reserved. BlackBerry</span><span style='mso-bidi-font-size:12.0pt;
|
|
|
-font-family:"Times New Roman","serif";mso-ascii-font-family:"Malgun Gothic"'>®</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>, RIM</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>®</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>, Research In Motion</span><span
|
|
|
-style='mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic"'>®</span><span style='mso-bidi-font-size:
|
|
|
-12.0pt;mso-bidi-font-family:"Times New Roman"'>, and related trademarks, names,
|
|
|
-and logos are the property of Research In Motion Limited and are registered
|
|
|
-and/or used in the U.S. and countries around the world.<o:p></o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Android is a trademark of Google Inc. Apache is a trademark
|
|
|
-of The Apache Software Foundation. Apple, iPhone, iPad, Mac OS, TrueType, and
|
|
|
-Xcode are trademarks of Apple Inc. Bluetooth is a trademark of Bluetooth SIG. COLLADA
|
|
|
-and OpenGL are trademarks of Khronos Group Inc. Eclipse is a trademark of
|
|
|
-Eclipse Foundation, Inc. FBX and Maya are trademarks of Autodesk, Inc. GitHub is
|
|
|
-a trademark of Github, LLC. Linux is a trademark of Linus Torvalds. Microsoft,
|
|
|
-Windows, and Visual Studio are trademarks of Microsoft Corporation. QNX and
|
|
|
-Momentics are trademarks of QNX Software Systems Limited. All other trademarks
|
|
|
-are the property of their respective owners.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>This documentation including all documentation incorporated
|
|
|
-by reference herein such as documentation provided or made available at <u><span
|
|
|
-style='color:blue'><a href="http://www.blackberry.com/go/docs"><span
|
|
|
-style='mso-bidi-font-family:TradeGothicNextLTPro-Lt'>www.blackberry.com/go/docs</span></a>
|
|
|
-</span></u>is provided or made accessible "AS IS" and "AS
|
|
|
-AVAILABLE" and without condition, endorsement, guarantee, representation,
|
|
|
-or warranty of any kind by Research In Motion Limited and its affiliated
|
|
|
-companies ("RIM") and RIM assumes no responsibility for any
|
|
|
-typographical, technical, or other inaccuracies, errors, or omissions in this
|
|
|
-documentation. In order to protect RIM proprietary and confidential information
|
|
|
-and/or trade secrets, this documentation may describe some aspects of RIM
|
|
|
-technology in generalized terms. RIM reserves the right to periodically change
|
|
|
-information that is contained in this documentation; however, RIM makes no
|
|
|
-commitment to provide any such changes, updates, enhancements, or other
|
|
|
-additions to this documentation to you in a timely manner or at all.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>This documentation might contain references to third-party
|
|
|
-sources of information, hardware or software, products or services including
|
|
|
-components and content such as content protected by copyright and/or
|
|
|
-third-party web sites (collectively the "Third Party Products and
|
|
|
-Services"). RIM does not control, and is not responsible for, any Third
|
|
|
-Party Products and Services including, without limitation the content, accuracy,
|
|
|
-copyright compliance, compatibility, performance, trustworthiness, legality,
|
|
|
-decency, links, or any other aspect of Third Party Products and Services. The
|
|
|
-inclusion of a reference to Third Party Products and Services in this
|
|
|
-documentation does not imply endorsement by RIM of the Third Party Products and
|
|
|
-Services or the third party in any way.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>EXCEPT TO THE EXTENT SPECIFICALLY PROHIBITED BY APPLICABLE
|
|
|
-LAW IN YOUR JURISDICTION, ALL CONDITIONS, ENDORSEMENTS, GUARANTEES,
|
|
|
-REPRESENTATIONS, OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
|
|
-WITHOUT LIMITATION, ANY CONDITIONS, ENDORSEMENTS, GUARANTEES, REPRESENTATIONS
|
|
|
-OR WARRANTIES OF DURABILITY, FITNESS FOR A PARTICULAR PURPOSE OR USE,
|
|
|
-MERCHANTABILITY, MERCHANTABLE QUALITY, NON-INFRINGEMENT, SATISFACTORY QUALITY,
|
|
|
-OR TITLE, OR ARISING FROM A STATUTE OR CUSTOM OR A COURSE OF DEALING OR USAGE
|
|
|
-OF TRADE, OR RELATED TO THE DOCUMENTATION OR ITS USE, OR PERFORMANCE OR
|
|
|
-NON-PERFORMANCE OF ANY SOFTWARE, HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS
|
|
|
-AND SERVICES REFERENCED HEREIN, ARE HEREBY EXCLUDED. YOU MAY ALSO HAVE OTHER
|
|
|
-RIGHTS THAT VARY BY STATE OR PROVINCE. SOME JURISDICTIONS MAY NOT ALLOW THE
|
|
|
-EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES AND CONDITIONS. TO THE EXTENT
|
|
|
-PERMITTED BY LAW, ANY IMPLIED WARRANTIES OR CONDITIONS RELATING TO THE
|
|
|
-DOCUMENTATION TO THE EXTENT THEY CANNOT BE EXCLUDED AS SET OUT ABOVE, BUT CAN
|
|
|
-BE LIMITED, ARE HEREBY LIMITED TO NINETY (90) DAYS FROM THE DATE YOU FIRST
|
|
|
-ACQUIRED THE DOCUMENTATION OR THE ITEM THAT IS THE SUBJECT OF THE CLAIM.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR
|
|
|
-JURISDICTION, IN NO EVENT SHALL RIM BE LIABLE FOR ANY TYPE OF DAMAGES RELATED
|
|
|
-TO THIS DOCUMENTATION OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY
|
|
|
-SOFTWARE, HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES
|
|
|
-REFERENCED HEREIN INCLUDING WITHOUT LIMITATION ANY OF THE FOLLOWING DAMAGES:
|
|
|
-DIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, OR
|
|
|
-AGGRAVATED DAMAGES, DAMAGES FOR LOSS OF PROFITS OR REVENUES, FAILURE TO REALIZE
|
|
|
-ANY EXPECTED SAVINGS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, LOSS
|
|
|
-OF BUSINESS OPPORTUNITY, OR CORRUPTION OR LOSS OF DATA, FAILURES TO TRANSMIT OR
|
|
|
-RECEIVE ANY DATA, PROBLEMS ASSOCIATED WITH ANY APPLICATIONS USED IN CONJUNCTION
|
|
|
-WITH RIM PRODUCTS OR SERVICES, DOWNTIME COSTS, LOSS OF THE USE OF RIM PRODUCTS
|
|
|
-OR SERVICES OR ANY PORTION THEREOF OR OF ANY AIRTIME SERVICES, COST OF
|
|
|
-SUBSTITUTE GOODS, COSTS OF COVER, FACILITIES OR SERVICES, COST OF CAPITAL, OR
|
|
|
-OTHER SIMILAR PECUNIARY LOSSES, WHETHER OR NOT SUCH DAMAGES WERE FORESEEN OR
|
|
|
-UNFORESEEN, AND EVEN IF RIM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
|
-DAMAGES.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR
|
|
|
-JURISDICTION, RIM SHALL HAVE NO OTHER OBLIGATION, DUTY, OR LIABILITY WHATSOEVER
|
|
|
-IN CONTRACT, TORT, OR OTHERWISE TO YOU INCLUDING ANY LIABILITY FOR NEGLIGENCE
|
|
|
-OR STRICT LIABILITY.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>THE LIMITATIONS, EXCLUSIONS, AND DISCLAIMERS HEREIN SHALL
|
|
|
-APPLY: (A) IRRESPECTIVE OF THE NATURE OF THE CAUSE OF ACTION, DEMAND, OR ACTION
|
|
|
-BY YOU INCLUDING BUT NOT LIMITED TO BREACH OF CONTRACT, NEGLIGENCE, TORT,
|
|
|
-STRICT LIABILITY OR ANY OTHER LEGAL THEORY AND SHALL SURVIVE A FUNDAMENTAL
|
|
|
-BREACH OR BREACHES OR THE FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR
|
|
|
-OF ANY REMEDY CONTAINED HEREIN; AND (B) TO RIM AND ITS AFFILIATED COMPANIES,
|
|
|
-THEIR SUCCESSORS, ASSIGNS, AGENTS, SUPPLIERS (INCLUDING AIRTIME SERVICE
|
|
|
-PROVIDERS), AUTHORIZED RIM DISTRIBUTORS (ALSO INCLUDING AIRTIME SERVICE
|
|
|
-PROVIDERS) AND THEIR RESPECTIVE DIRECTORS, EMPLOYEES, AND INDEPENDENT
|
|
|
-CONTRACTORS.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-spacerun:yes'> </span>IN ADDITION TO THE
|
|
|
-LIMITATIONS AND EXCLUSIONS SET OUT ABOVE, IN NO EVENT SHALL ANY DIRECTOR,
|
|
|
-EMPLOYEE, AGENT, DISTRIBUTOR, SUPPLIER, INDEPENDENT CONTRACTOR OF RIM OR ANY
|
|
|
-AFFILIATES OF RIM HAVE ANY LIABILITY ARISING FROM OR RELATED TO THE
|
|
|
-DOCUMENTATION.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Prior to subscribing for, installing, or using any Third
|
|
|
-Party Products and Services, it is your responsibility to ensure that your
|
|
|
-airtime service provider has agreed to support all of their features. Some
|
|
|
-airtime service providers might not offer Internet browsing functionality with
|
|
|
-a subscription to the BlackBerry<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>®</span>
|
|
|
-Internet Service. Check with your service provider for availability, roaming
|
|
|
-arrangements, service plans and features. Installation or use of Third Party
|
|
|
-Products and Services with RIM's products and services may require one or more
|
|
|
-patent, trademark, copyright, or other licenses in order to avoid infringement
|
|
|
-or violation of third party rights. You are solely responsible for determining
|
|
|
-whether to use Third Party Products and Services and if any third party
|
|
|
-licenses are required to do so. If required you are responsible for acquiring
|
|
|
-them. You should not install or use Third Party Products and Services until all
|
|
|
-necessary licenses have been acquired. Any Third Party Products and Services
|
|
|
-that are provided with RIM's products and services are provided as a
|
|
|
-convenience to you and are provided "AS IS" with no express or
|
|
|
-implied conditions, endorsements, guarantees, representations, or warranties of
|
|
|
-any kind by RIM and RIM assumes no liability whatsoever, in relation thereto.
|
|
|
-Your use of Third Party Products and Services shall be governed by and subject
|
|
|
-to you agreeing to the terms of separate licenses and other agreements
|
|
|
-applicable thereto with third parties, except to the extent expressly covered
|
|
|
-by a license or other agreement with RIM.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Certain features outlined in this documentation require a
|
|
|
-minimum version of BlackBerry<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>®</span>
|
|
|
-Enterprise Server, BlackBerry<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>®</span>
|
|
|
-Desktop Software, and/or BlackBerry<span style='font-family:"Times New Roman","serif";
|
|
|
-mso-ascii-font-family:"Malgun Gothic";mso-bidi-font-family:TradeGothicNextLTPro-Lt'>®</span>
|
|
|
-Device Software.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>The terms of use of any RIM product or service are set out
|
|
|
-in a separate license or other agreement with RIM applicable thereto. NOTHING
|
|
|
-IN THIS DOCUMENTATION IS INTENDED TO SUPERSEDE ANY EXPRESS WRITTEN AGREEMENTS
|
|
|
-OR WARRANTIES PROVIDED BY RIM FOR PORTIONS OF ANY RIM PRODUCT OR SERVICE OTHER
|
|
|
-THAN THIS DOCUMENTATION.</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><a name=d20e152a1310></a><a name=d20e156a1310></a><a
|
|
|
-name=d20e159a1310></a><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Research In Motion Limited</p>
|
|
|
-
|
|
|
-<p class=MsoNormal>295 Phillip Street</p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Waterloo, ON N2L 3W8</p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Canada</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><o:p> </o:p></p>
|
|
|
-
|
|
|
-<p class=MsoNormal>Published in Canada</p>
|
|
|
-
|
|
|
-<p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;mso-bidi-font-family:
|
|
|
-"Times New Roman"'><o:p> </o:p></span></p>
|
|
|
-
|
|
|
-</div>
|
|
|
-
|
|
|
-</body>
|
|
|
-
|
|
|
-</html>
|